$chartDefs['custom_pie_chart'] = array('type' => 'code', 'id' => 'custom_pie_chart', 'label' => 'custom_pie_chart label', 'chartUnits' => 'The unit definition', 'chartType' => 'pie chart', // important value that will be used to group the data 'groupBy' => array( 'name' ), 'base_url'=> array( 'module' => 'abc_Sample', 'action' => 'index', 'query' => 'true', 'searchFormTab' => 'advanced_search', ) );custom\modules\abc_Sample\Dashlets\CustomPieDashlet\CustomPieDashlet.php
....
public function display() { $currency_symbol = $GLOBALS['sugar_config']['default_currency_symbol']; require ("modules/Charts/chartdefs.php"); // here we load the chart definition (custom\Charts\chartDefs.ext.php) $chartDef = $chartDefs['custom_pie_chart']; require_once ('include/SugarCharts/SugarChart.php'); $sugarChart = new SugarChart(); $sugarChart -> setProperties('', translate('LBL_OPP_SIZE', 'Charts') . ' ' . currency_symbol . '1' . translate('LBL_OPP_THOUSANDS', 'Charts'), $chartDef['chartType']); $sugarChart -> base_url = $chartDef['base_url']; $sugarChart -> group_by = $chartDef['groupBy']; $sugarChart -> url_params = array(); $sugarChart -> getData($this -> constructQuery()); $xmlFile = $sugarChart -> getXMLFileName($this -> id); $sugarChart -> saveXMLFile($xmlFile, $sugarChart -> generateXML()); return $this -> getTitle('For CustomLineDashlet : custom\Charts\chartDefs.ext.php:') . '' . $sugarChart -> display($this -> id, $xmlFile, '100%', '480', false) . ''; } protected function constructQuery() { // this is the query used to get data and create the xml // for pie chart we have a simple query $query = " SELECT count(*) as total, name FROM table GROUP BY name ORDER BY name"; return $query; }
$chartDefs['custom_line_chart'] = array( 'type' => 'code', 'id' => 'custom_line_chart', 'label' => 'custom_line_chart label', 'chartUnits' => 'The unit definition', 'chartType' => 'line chart', // the legend will be the name and the x intervals will be the date 'groupBy' => array( 'date','name' ), 'base_url'=> array( 'module' => 'sam_Sample', 'action' => 'index', 'query' => 'true', 'searchFormTab' => 'advanced_search' ) );custom\modules\abc_Sample\Dashlets\CustomLineDashlet\CustomLineDashlet.php
....
public function display() { $currency_symbol = $GLOBALS['sugar_config']['default_currency_symbol']; require ("modules/Charts/chartdefs.php"); // here we load the chart definition (custom\Charts\chartDefs.ext.php) $chartDef = $chartDefs['custom_line_chart']; require_once ('include/SugarCharts/SugarChart.php'); $sugarChart = new SugarChart(); $sugarChart -> setProperties('', translate('LBL_OPP_SIZE', 'Charts') . ' ' . currency_symbol . '1' . translate('LBL_OPP_THOUSANDS', 'Charts'), $chartDef['chartType']); $sugarChart -> base_url = $chartDef['base_url']; $sugarChart -> group_by = $chartDef['groupBy']; $sugarChart -> url_params = array(); $sugarChart -> getData($this -> constructQuery()); $xmlFile = $sugarChart -> getXMLFileName($this -> id); $sugarChart -> saveXMLFile($xmlFile, $sugarChart -> generateXML()); return $this -> getTitle('the meta files ( custom\modules\abc_Sample\Dashlets\CustomLineDashlet\CustomPieDashlet.meta.php and custom\modules\abc_Sample\Dashlets\CustomLineDashlet\CustomLineDashlet.meta.php) will look like this:') . '' . $sugarChart -> display($this -> id, $xmlFile, '100%', '480', false) . ''; } protected function constructQuery() { // this is the query used to get data and create the xml // for pie chart we have a simple query $query = " SELECT count(*) as total, name, date FROM table GROUP BY date,name ORDER BY name"; return $query; }
$dashletMeta['CustomSamplePieCart'] = array('module' => 'abc_Sample', 'title' => 'Custom Pie Chart', 'description' => 'Custom description', 'icon' => 'themes/default/images/icon_sam_Sample_32.gif', 'category' => 'Charts');and
$dashletMeta['CustomSampleLineCart'] = array('module' => 'abc_Sample', 'title' => 'Custom Chart', 'description' => 'Custom description', 'icon' => 'themes/default/images/icon_sam_Sample_32.gif', 'category' => 'Charts');
Notes:
custom\Charts\chartDefs.ext.php is the place where you will define your chart type, important fields:
'groupBy' => array( 'date','name' ) (the x and legend fields)
'chartType' => 'line chart', (the swf name, php will capitalize and add .swf, so it will be lineChar.swf)
in the sql your x values will have to coincide (be the same) for all lines
No comments:
Post a Comment