diff --git a/includes/charts.pages.inc b/includes/charts.pages.inc index 9e34b1a3cd6157a643ea2f5eb1bf309e1cca2325..ece8aae9043f7efb68c0f3f255a9b1ae60c6edd6 100644 --- a/includes/charts.pages.inc +++ b/includes/charts.pages.inc @@ -40,9 +40,6 @@ define('CHARTS_SINGLE_AXIS', 'y_only'); */ define('CHARTS_DUAL_AXIS', 'xy'); -// Store Charts preprocess theme functions in a separate .inc file. -\Drupal::moduleHandler()->loadInclude('charts', 'inc', 'charts.theme'); - /** * Retrieve a list of all charting libraries available. * @@ -611,7 +608,7 @@ function charts_default_settings_form($form, $form_state) { */ function charts_default_settings_form_submit($form, $form_state) { \Drupal::state() - ->set('charts_default_settings', $form_state['values']['charts_default_settings']); //was variable_set + ->set('charts_default_settings', $form_state['values']['charts_default_settings']); } diff --git a/modules/charts_c3/src/Charts/C3ChartsRender.php b/modules/charts_c3/src/Charts/C3ChartsRender.php index 8e26f97f35fb06d8a695bad2eecbfd5f13d1bc1b..d1a46f52149787183eafb012dbbbf5fae9bfe9b6 100644 --- a/modules/charts_c3/src/Charts/C3ChartsRender.php +++ b/modules/charts_c3/src/Charts/C3ChartsRender.php @@ -2,6 +2,7 @@ namespace Drupal\charts_c3\Charts; +use Drupal\charts\Charts\ChartsRenderInterface; use Drupal\charts\Util\Util; use Drupal\charts_c3\Settings\CThree\ChartType; use Drupal\charts_c3\Settings\CThree\CThree; @@ -10,16 +11,10 @@ use Drupal\charts_c3\Settings\CThree\ChartData; use Drupal\charts_c3\Settings\CThree\ChartColor; use Drupal\charts_c3\Settings\CThree\ChartAxis; -class C3ChartsRender { - - public function __construct($categories, $seriesData, $options, $attachmentDisplayOptions, &$variables, $chartId) { +class C3ChartsRender implements ChartsRenderInterface { + public function __construct() { Util::checkMissingLibrary('charts_c3', '/vendor/cthree/c3.min.js'); - $c3 = $this->charts_c3_render_charts($options, $categories, $seriesData, $chartId, $attachmentDisplayOptions); - $variables['chart_type'] = 'c3'; - $variables['content_attributes']['data-chart'][] = json_encode($c3); - $variables['attributes']['id'][0] = $chartId; - $variables['attributes']['class'][] = 'charts-c3'; } /** @@ -31,7 +26,7 @@ class C3ChartsRender { * * @return CThree */ - private function charts_c3_render_charts($options, $categories = [], $seriesData = [], $chartId, $attachmentDisplayOptions = []) { + public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) { $noAttachmentDisplays = count($attachmentDisplayOptions); $yAxis = []; @@ -108,7 +103,9 @@ class C3ChartsRender { $chartColor->setPattern($seriesColors); $c3->setColor($chartColor); - return $c3; + $variables['chart_type'] = 'c3'; + $variables['content_attributes']['data-chart'][] = json_encode($c3); + $variables['attributes']['id'][0] = $chartId; + $variables['attributes']['class'][] = 'charts-c3'; } - } diff --git a/modules/charts_google/src/Charts/GoogleChartsRender.php b/modules/charts_google/src/Charts/GoogleChartsRender.php index 925aefabcd700cc4ad56ddfa938c40be9032c375..f67527efb1ef0ca3baea76515a771192e59655fd 100644 --- a/modules/charts_google/src/Charts/GoogleChartsRender.php +++ b/modules/charts_google/src/Charts/GoogleChartsRender.php @@ -2,30 +2,16 @@ namespace Drupal\charts_google\Charts; +use Drupal\charts\Charts\ChartsRenderInterface; use Drupal\charts\Util\Util; use Drupal\charts_google\Settings\Google\GoogleOptions; use Drupal\charts_google\Settings\Google\ChartType; use Drupal\charts_google\Settings\Google\ChartArea; -class GoogleChartsRender { +class GoogleChartsRender implements ChartsRenderInterface { - private $googleData; - private $googleOptions; - private $googleChartType; - private $chartId; - - public function __construct($categories, $seriesData, $options, $attachmentDisplayOptions, &$variables, $chartId) { + public function __construct() { Util::checkMissingLibrary('charts_google', '/vendor/google/loader.js'); - $this->chartId = $chartId; - $this->googleData = $this->charts_google_render_charts($categories, $seriesData); - $this->googleOptions = $this->charts_google_create_charts_options($options, $seriesData, $attachmentDisplayOptions); - $this->googleChartType = $this->charts_google_create_chart_type($options); - $variables['chart_type'] = 'google'; - $variables['attributes']['class'][0] = 'charts-google'; - $variables['attributes']['id'][0] = $this->chartId; - $variables['content_attributes']['data-chart'][] = $this->googleData; - $variables['attributes']['google-options'][1] = json_encode($this->googleOptions); - $variables['attributes']['google-chart-type'][2] = json_encode($this->googleChartType); } /** @@ -35,7 +21,7 @@ class GoogleChartsRender { * * @return json|string */ - private function charts_google_render_charts($categories = [], $seriesData = []) { + public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) { $dataTable = []; for ($j = 0; $j < count($categories); $j++) { @@ -56,7 +42,14 @@ class GoogleChartsRender { array_unshift($dataTableHeader, 'label'); array_unshift($dataTable, $dataTableHeader); - return json_encode($dataTable); + $googleOptions = $this->charts_google_create_charts_options($options, $seriesData, $attachmentDisplayOptions); + $googleChartType = $this->charts_google_create_chart_type($options); + $variables['chart_type'] = 'google'; + $variables['attributes']['class'][0] = 'charts-google'; + $variables['attributes']['id'][0] = $chartId; + $variables['content_attributes']['data-chart'][] = json_encode($dataTable); + $variables['attributes']['google-options'][1] = json_encode($googleOptions); + $variables['attributes']['google-chart-type'][2] = json_encode($googleChartType); } /** diff --git a/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php b/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php index e0116bbc21271d221e81b02f5941a5277d54ab45..f9e8685f7dfe7156b840db5335ec9a59425baf9a 100644 --- a/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php +++ b/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php @@ -2,6 +2,7 @@ namespace Drupal\charts_highcharts\Charts; +use Drupal\charts\Charts\ChartsRenderInterface; use Drupal\charts\Util\Util; use Drupal\charts_highcharts\Settings\Highcharts\ChartType; use Drupal\charts_highcharts\Settings\Highcharts\ChartTitle; @@ -18,17 +19,10 @@ use Drupal\charts_highcharts\Settings\Highcharts\ChartCredits; use Drupal\charts_highcharts\Settings\Highcharts\ChartLegend; use Drupal\charts_highcharts\Settings\Highcharts\Highcharts; -class HighchartsChartsRender { - - public function __construct($categories, $seriesData, $options, $attachmentDisplayOptions, &$variables, $chartId) { +class HighchartsChartsRender implements ChartsRenderInterface { + public function __construct() { Util::checkMissingLibrary('charts_highcharts', '/vendor/highcharts/highcharts.js'); - $highchart = $this->charts_highcharts_render_charts($options, $categories, $seriesData, $attachmentDisplayOptions); - $variables['chart_type'] = 'highcharts'; - $variables['content_attributes']['data-chart'][] = json_encode($highchart); - $variables['attributes']['id'][0] = $chartId; - $variables['attributes']['class'][] = 'charts-highchart'; - } /** @@ -42,7 +36,7 @@ class HighchartsChartsRender { * * @return Highcharts object to be used by highcharts javascripts visualization framework */ - private function charts_highcharts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = []) { + public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) { $chart = new ChartType(); $chart->setType($options['type']); @@ -108,6 +102,9 @@ class HighchartsChartsRender { $highchart->setLegend($chartLegend); $highchart->setSeries($seriesData); - return $highchart; + $variables['chart_type'] = 'highcharts'; + $variables['content_attributes']['data-chart'][] = json_encode($highchart); + $variables['attributes']['id'][0] = $chartId; + $variables['attributes']['class'][] = 'charts-highchart'; } } diff --git a/src/Charts/ChartsRenderInterface.php b/src/Charts/ChartsRenderInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..3032815a3a9cba981029ed40999851767ecf296d --- /dev/null +++ b/src/Charts/ChartsRenderInterface.php @@ -0,0 +1,12 @@ +<?php +/** + * @file + * + */ + +namespace Drupal\charts\Charts; + + +interface ChartsRenderInterface { + public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId); +} \ No newline at end of file diff --git a/src/Charts/ModuleSelector.php b/src/Charts/ModuleSelector.php index af5ecc16d117b3a762b4ed233857eaf291d011a0..f97e400b136036e45da3489238d05e062a7d6b37 100644 --- a/src/Charts/ModuleSelector.php +++ b/src/Charts/ModuleSelector.php @@ -34,7 +34,8 @@ class ModuleSelector { if ('charts_' . $moduleExist) { $className = ucfirst($moduleName); $moduleChartsRenderer = 'Drupal\charts_' . $moduleName . '\Charts\\' . ucfirst($moduleName) . 'ChartsRender'; - $chartingModule = new $moduleChartsRenderer($this->categories, $this->seriesData, $this->options, $this->attachmentDisplayOptions, $variables, $this->chartId); + $chartingModule = new $moduleChartsRenderer(); + $chartingModule->charts_render_charts($this->options, $this->categories, $this->seriesData, $this->attachmentDisplayOptions, $variables, $this->chartId); } } }