public static function getView ( GD_ReportConfig $ReportConfig, array $options = array() ) { $widget = 'GD_Widget'.ucwords($ReportConfig->getDisplayType()); if ( class_exists($widget) ) { $w = new $widget($ReportConfig); } else { throw new Exception($widget.' does not exist.'); } return $w->getView($options); }
public function getConfig($report) { $id = null; if ( !empty($report->nid) ) { $id = $report->nid; } else if ( !empty($report->id) ) { $id = $report->id; } if (isset($id) && isset(self::$configList[$id])) { return self::$configList[$id]; } else { $conf = null; if ( !empty($report->nid) && !is_null($report->nid) ) { $config = json_decode(trim(get_node_field_value($report,'field_report_conf')), true); $conf = new GD_ReportConfig($config); $conf->setNode($report); $conf->setDescription(get_node_field_value($report,'field_report_desc')); $conf->setTitle($report->title); } else { if (is_array($report->config)) { $config = $report->config; $conf = new GD_ReportConfig($config); if (!empty($report->style)) { $conf->setStyle($report->style); } else { $conf->setStyle(''); } if (isset($report->title)) { $conf->setTitle($report->title); } } else { $config = json_decode(trim($report->config), true); $conf = new GD_ReportConfig($config['config']); if ( !empty($report->style) ) { $conf->setStyle($report->style); } else { $conf->setStyle(''); } } } if (isset($id)) { $conf->setId($id); self::$configList[$id] = $conf; } return $conf; } }
public function updateReportConfig ( GD_ReportConfig $ReportConfig ) { // signal dashboard $ReportConfig->setDashboard(isset($this->id) ? $this->id : true); // apply drilldowns foreach ( $this->drilldowns as $d ) { if ( $d->report == $ReportConfig->getId() ) { foreach ($d->filters as $k => $f) { $add = false; foreach ($ReportConfig->getFilters() as $f2) { if ( $f == $f2->name && $f2->exposed ) { $add = true; break; } } if (!$add) { unset($d->filters[$k]); } } $ReportConfig->addDrilldown($d); } } // apply filters $f = $this->getFilters(); if ( !empty($f) && count($ReportConfig->getFilters()) ) { // this has the filter list foreach ($f as $dashboard_filter) { // find corresponding report filter foreach ( $ReportConfig->getFilters() as $report_filter ) { if ( $dashboard_filter->name == $report_filter->name && $report_filter->exposed) { $ReportConfig->updateFilterValue($report_filter->name, $report_filter->exposed, $dashboard_filter); } } } } }