/** * build pie chart properties * * @param Pie_Engine $engine object */ function buildProperties($engine) { parent::buildProperties($engine); $engine->data = array(); $engine->legend = null; $result = array(); $ff = Tracker_FormElementFactory::instance(); $af = $ff->getFormElementById($this->chart->getField_base()); if ($af && $af->userCanRead()) { $select = " SELECT count(a.id) AS nb, " . $af->getQuerySelect(); $from = " FROM tracker_artifact AS a INNER JOIN tracker_changeset AS c ON (c.artifact_id = a.id) " . $af->getQueryFrom(); $where = " WHERE a.id IN (" . $this->artifacts['id'] . ") \n AND c.id IN (" . $this->artifacts['last_changeset_id'] . ") "; $sql = $select . $from . $where . ' GROUP BY ' . $af->getQueryGroupBy(); $res = db_query($sql); while ($data = db_fetch_array($res)) { if ($data[$af->name] !== null) { $engine->data[] = $data['nb']; $engine->legend[] = $af->fetchRawValue($data[$af->name]); } else { $engine->data[] = $data['nb']; $engine->legend[] = $GLOBALS['Language']->getText('global', 'none'); } } } return $result; }
/** * build pie chart properties * * @param Pie_Engine $engine object */ function buildProperties($engine) { parent::buildProperties($engine); $engine->data = array(); $engine->xaxis = null; $engine->labels = null; $engine->legend = null; $result = array(); $ff = Tracker_FormElementFactory::instance(); /** @var Tracker_FormElement_Field_List $af */ $af = $ff->getFormElementById($this->chart->getField_base()); if ($af && $af->userCanRead()) { $select_group = $from_group = $group_group = $order_group = ''; if ($this->chart->getField_group()) { $gf = $ff->getFormElementById($this->chart->getField_group()); if ($gf && $gf->userCanRead()) { $select_group = ', ' . $gf->getQuerySelect(); $from_group = ' ' . $gf->getQueryFrom(); $group_group = ', ' . $gf->getQueryGroupBy(); $order_group = ', ' . $gf->getQueryOrderby(); } } $select = " SELECT count(a.id) AS nb, " . $af->getQuerySelectWithDecorator() . $select_group; $from = " FROM tracker_artifact AS a \n INNER JOIN tracker_changeset AS c ON (c.artifact_id = a.id) " . $af->getQueryFromWithDecorator() . $from_group; $where = " WHERE a.id IN (" . $this->artifacts['id'] . ") \n AND c.id IN (" . $this->artifacts['last_changeset_id'] . ") "; $sql = $select . $from . $where . ' GROUP BY ' . $af->getQueryGroupBy() . $group_group . ' ORDER BY ' . $af->getQueryOrderby() . $order_group; //echo($sql); $none = $GLOBALS['Language']->getText('global', 'none'); $res = db_query($sql); while ($data = db_fetch_array($res)) { $color = $this->getColor($data); if ($select_group) { $engine->colors[$data[$af->name]] = $color; $engine->data[$data[$af->name]][$data[$gf->name]] = $data['nb']; $engine->xaxis[$data[$gf->name]] = $none; $engine->labels[$data[$gf->name]] = $none; if ($data[$gf->name] !== null) { $engine->xaxis[$data[$gf->name]] = $gf->fetchRawValue($data[$gf->name]); $engine->labels[$data[$gf->name]] = $gf->fetchRawValue($data[$gf->name]); } } else { $engine->colors[] = $color; $engine->data[] = $data['nb']; } $engine->legend[$data[$af->name]] = $none; if ($data[$af->name] !== null) { $engine->legend[$data[$af->name]] = $af->fetchRawValue($data[$af->name]); } } } return $result; }
/** * build burndown chart properties * * @param Burndown_Engine $engine object */ public function buildProperties($engine) { parent::buildProperties($engine); $form_element_factory = Tracker_FormElementFactory::instance(); $effort_field = $form_element_factory->getFormElementById($this->chart->getFieldId()); $type = $form_element_factory->getType($effort_field); if ($this->isValidEffortField($effort_field, $type) && $this->isValidType($type)) { $engine->data = $this->getBurnDownData($effort_field->getId(), $type); } $engine->legend = null; $engine->start_date = $this->chart->getStartDate(); $engine->duration = $this->chart->getDuration(); }
/** * build Gantt chart properties * * @param Bar_Engine $engine object */ function buildProperties($engine) { parent::buildProperties($engine); $engine->title = $this->chart->getTitle(); $engine->description = $this->chart->getDescription(); $engine->scale = $this->chart->getScale(); $engine->asOfDate = $this->chart->getAs_of_date(); $af = Tracker_FormElementFactory::instance()->getFormElementById($this->chart->getSummary()); if ($af) { $engine->summary_label = $af->getLabel(); } $this->buildData($engine); }
/** * build cumulative_flow chart properties * * @param CumulativeFlow_Engine $engine object */ public function buildProperties($engine) { parent::buildProperties($engine); $form_element_factory = Tracker_FormElementFactory::instance(); $observed_field = $form_element_factory->getFormElementById($this->chart->getFieldId()); $type = $form_element_factory->getType($observed_field); $this->observed_field_id = $observed_field->getId(); $this->timeFiller = array(GraphOnTrackersV5_Chart_CumulativeFlow::SCALE_DAY => 3600 * 24, GraphOnTrackersV5_Chart_CumulativeFlow::SCALE_WEEK => 3600 * 24 * 7, GraphOnTrackersV5_Chart_CumulativeFlow::SCALE_MONTH => 3600 * 24 * 30.45); $this->startDate = $this->chart->getStartDate(); $this->stopDate = $this->chart->getStopDate() ? $this->chart->getStopDate() : time(); $this->scale = $this->chart->getScale(); $this->nbSteps = ceil(($this->stopDate - $this->startDate) / $this->timeFiller[$this->scale]); if ($this->isValidObservedField($observed_field, $type) && $this->isValidType($type)) { $engine->data = $this->getCumulativeFlowData($engine); } $engine->legend = null; $engine->start_date = $this->chart->getStartDate(); $engine->scale = $this->chart->getScale(); $engine->stop_date = $this->chart->getStopDate(); }
/** * build burnup chart properties * * @param Burnup_Engine $engine object */ function buildProperties($engine) { parent::buildProperties($engine); $data = array(); $remaining = array(); $engine->legend = null; $result = array(); $ff = Tracker_FormElementFactory::instance(); $remaining_f = $ff->getFormElementById($this->chart->getRemainingField()); $done_f = $ff->getFormElementById($this->chart->getDoneField()); $ids = array_map(create_function('$a', 'return $a["id"];'), $this->artifacts); if ($remaining_f && $remaining_f->userCanRead(user_getid()) && $done_f && $done_f->userCanRead(user_getid())) { $sql = "SELECT c.artifact_id AS id, \n TO_DAYS(FROM_UNIXTIME(submitted_on)) - TO_DAYS(FROM_UNIXTIME(0)) as day, \n f.value as remaining,\n done_f.value as done\n FROM tracker_changeset AS c \n INNER JOIN tracker_changeset_value AS v ON(v.changeset_id = c.id)\n INNER JOIN tracker_field_int_value AS f ON(f.field_id = v.field_id and v.value_id = f.id)\n INNER JOIN tracker_changeset_value AS done_v ON(done_v.changeset_id = c.id)\n INNER JOIN tracker_field_int_value AS done_f ON(done_f.field_id = done_v.field_id and done_v.value_id = done_f.id)\n WHERE c.artifact_id IN (" . implode(',', $ids) . ")\n AND v.field_id = {$remaining_f->id}\n AND done_v.field_id = {$done_f->id}"; //syntax($sql, 'sql'); $res = db_query($sql); $data = $this->extractDataFromResult($res, $ids, 'done'); $remaining = $this->extractDataFromResult($res, $ids, 'remaining'); } $engine->data = $data; $engine->remaining = $remaining; return $data; }