/**
  * 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;
 }