diff --git a/charts.module b/charts.module index da1980560cbc38ec880099c258cce39aa24171e2..95c1562e59ba6c3d9af5b60eaaaa3eb2901b071c 100644 --- a/charts.module +++ b/charts.module @@ -71,10 +71,10 @@ function template_preprocess_views_view_charts(&$variables) { $valueField = Util::removeUnselectedFields($valueField); $color = $view->style_plugin->options['field_colors']; - if (0 < count($attachmentView)) { - $data = Util::viewsData($view, $valueField, $labelField, $color, $attachmentChartTypeOption[$i]); - } else { - $data = Util::viewsData($view, $valueField, $labelField, $color, $attachmentChartTypeOption[$i] = NULL); + $attachmentCount = count($attachmentView); + $data = Util::viewsData($view, $valueField, $labelField, $color, $attachmentChartTypeOption = NULL); + for ($i = 0; $i < $attachmentCount; $i++) { + $data = Util::viewsData($view, $valueField, $labelField, $color, $attachmentChartTypeOption[$attachmentCount]); } $data = Util::createChartableData($data); @@ -87,6 +87,8 @@ function template_preprocess_views_view_charts(&$variables) { $attachmentId = $attachmentView[$i]->display_handler->display['id']; $attachmentDisplay = $view->storage->getDisplay($attachmentId); $attachmentDisplayOptions[$i] = $attachmentDisplay['display_options']; + // Gets rid of inherit_yaxis issue, but doesn't fix underlying issue. + $attachmentDisplayOptions[$i]['inherit_yaxis'] = $view->displayHandlers->get($attachmentId)->options['inherit_yaxis']; } $seriesData = array_merge($seriesData, $seriesDataAttachment); $moduleSelector = new ModuleSelector($library, $categories, $seriesData, $options, $attachmentDisplayOptions, $variables, $chartId); diff --git a/includes/charts.pages.inc b/includes/charts.pages.inc index 8b8e97cd6d8e544ca6d51c454e5c257cd979b821..c9affb59691d79f11cea21288d7894259b661657 100644 --- a/includes/charts.pages.inc +++ b/includes/charts.pages.inc @@ -255,7 +255,7 @@ function charts_settings_form($form, $defaults = [], $field_options = [], $paren if ($field_options) { $first_field = key($field_options); - $form['#theme'] = 'charts_settings_fields'; + // $form['#theme'] = 'charts_settings_fields'; $form['fields'] = [ '#title' => t('Charts fields'), diff --git a/modules/charts_api_example/charts_api_example.module b/modules/charts_api_example/charts_api_example.module index 2579300dd47b00975b0896511b333dcf277f24b3..ad96ecc54bf2a4da1c3f16019d2c42a0ec7a4bfc 100644 --- a/modules/charts_api_example/charts_api_example.module +++ b/modules/charts_api_example/charts_api_example.module @@ -17,7 +17,7 @@ function charts_api_example_help($route_name, RouteMatchInterface $route_match) case 'help.page.charts_api_example': $output = ''; $output .= '<h3>' . t('About') . '</h3>'; - $output .= '<p>' . t('A simple example on how to interact with the Charts Api') . '</p>'; + $output .= '<p>' . t('A simple example on how to interact with the Charts API') . '</p>'; return $output; default: diff --git a/modules/charts_c3/src/Charts/C3ChartsRender.php b/modules/charts_c3/src/Charts/C3ChartsRender.php index 36e86d2aafb3f4299d54956b45e7e9cd1c7da482..1931a89f5c7a49f7923c02872ea7a04bca3ca9d8 100644 --- a/modules/charts_c3/src/Charts/C3ChartsRender.php +++ b/modules/charts_c3/src/Charts/C3ChartsRender.php @@ -28,12 +28,8 @@ class C3ChartsRender implements ChartsRenderInterface { */ public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) { $noAttachmentDisplays = count($attachmentDisplayOptions) === 0; - $yAxis = []; $types = []; - // Sets secondary axis from the first attachment only. - if (!$noAttachmentDisplays && $attachmentDisplayOptions[0]['inherit_yaxis'] == 0) { - $yAxis[$seriesData[1]['name']] = 'y2'; - } + // @todo - make this work for more that one attachment. for ($i = 1; $i <= count($attachmentDisplayOptions); $i++) { if ($attachmentDisplayOptions[$i - 1]['style']['options']['type'] == 'column') @@ -61,12 +57,23 @@ class C3ChartsRender implements ChartsRenderInterface { if ($noAttachmentDisplays > 0) { $chartData->setLabels(FALSE); } + + // Sets the primary y axis. + $yAxis = []; + $yAxis[$seriesData[0]['name']] = 'y'; + $showAxis['show'] = true; + $showAxis['label'] = $options['yaxis_title']; + $chartAxis->y = $showAxis; + + // Sets secondary axis from the first attachment only. if (!$noAttachmentDisplays && $attachmentDisplayOptions[0]['inherit_yaxis'] == 0) { - $chartData->axes = $yAxis; + $yAxis[$seriesData[1]['name']] = 'y2'; $showSecAxis['show'] = true; $showSecAxis['label'] = $attachmentDisplayOptions[0]['style']['options']['yaxis_title']; $chartAxis->y2 = $showSecAxis; } + + // Sets the chart type. $chartData->setType($options['type']); $c3->setData($chartData); if ($options['type'] == 'bar') { diff --git a/modules/charts_google/src/Charts/GoogleChartsRender.php b/modules/charts_google/src/Charts/GoogleChartsRender.php index bfe5eca99c1367d6d9941dd20ca4a2f91b5e1838..b9d9e534f6dba45e834b84d210b12536bf635d8d 100644 --- a/modules/charts_google/src/Charts/GoogleChartsRender.php +++ b/modules/charts_google/src/Charts/GoogleChartsRender.php @@ -25,10 +25,20 @@ class GoogleChartsRender implements ChartsRenderInterface { */ public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) { + $categoriesCount = count($categories); + $seriesCount = count($seriesData); + + // Creates an array of the length of the series data. + $dataCount = []; + for ($x = 0; $x < $seriesCount; $x++) { + $dataCountTemp = count($seriesData[$x]['data']); + array_push($dataCount, $dataCountTemp); + } + $dataTable = []; - for ($j = 0; $j < count($categories); $j++) { + for ($j = 0; $j < $categoriesCount; $j++) { $rowDataTable = []; - for ($i = 0; $i < count($seriesData); $i++) { + for ($i = 0; $i < $seriesCount; $i++) { $rowDataTabletemp = $seriesData[$i]['data'][$j]; array_push($rowDataTable, $rowDataTabletemp); } @@ -37,10 +47,9 @@ class GoogleChartsRender implements ChartsRenderInterface { } $dataTableHeader = []; - for ($r = 0; $r < count($seriesData); $r++) { + for ($r = 0; $r < $seriesCount; $r++) { array_push($dataTableHeader, $seriesData[$r]['name']); } - array_unshift($dataTableHeader, 'label'); array_unshift($dataTable, $dataTableHeader); @@ -318,7 +327,7 @@ class GoogleChartsRender implements ChartsRenderInterface { $options['legend_position'] = 'none'; $googleOptions->setLegend($options['legend_position']); } else { - $googleOptions->setLegendProperty('position', $options['legend_position']); + $googleOptions->setLegend($options['legend_position']); } } diff --git a/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php b/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php index 3a77a1388552eb87e03e39d4a79e8d89f0ab924b..928792f747032cce28c47750ab9548583f199fd5 100644 --- a/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php +++ b/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php @@ -4,7 +4,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\Chart; use Drupal\charts_highcharts\Settings\Highcharts\ChartTitle; use Drupal\charts_highcharts\Settings\Highcharts\Xaxis; use Drupal\charts_highcharts\Settings\Highcharts\XaxisTitle; @@ -40,7 +40,7 @@ class HighchartsChartsRender implements ChartsRenderInterface { public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) { $noAttachmentDisplays = count($attachmentDisplayOptions) === 0; - $chart = new ChartType(); + $chart = new Chart(); $typeOptions = $options['type']; // @todo: make this so that it happens if any display uses donut. if ($typeOptions == 'donut'){ @@ -60,6 +60,8 @@ class HighchartsChartsRender implements ChartsRenderInterface { } } $chart->setType($typeOptions); + $chart->setWidth($options['width']); + $chart->setHeight($options['height']); $chartTitle = new ChartTitle(); $chartTitle->setText($options['title']); $chartXaxis = new Xaxis(); diff --git a/modules/charts_highcharts/src/Settings/Highcharts/Chart.php b/modules/charts_highcharts/src/Settings/Highcharts/Chart.php new file mode 100644 index 0000000000000000000000000000000000000000..b5d3c74aa2fb17673201e3ecce015c337d5574e2 --- /dev/null +++ b/modules/charts_highcharts/src/Settings/Highcharts/Chart.php @@ -0,0 +1,73 @@ +<?php + +namespace Drupal\charts_highcharts\Settings\Highcharts; + +class Chart implements \JsonSerializable { + private $type; + private $width = NULL ; + private $height = NULL ; + + /** + * @return mixed + */ + public function getType() { + return $this->type; + } + + /** + * @param mixed $type + */ + public function setType($type) { + $this->type = $type; + } + /** + * @return mixed + */ + public function getWidth() { + return $this->width; + } + /** + * @param mixed $width + */ + public function setWidth($width) { + if (empty($width)) { + $this->width = NULL; + } else { + $this->width = (int)$width; + } + } + + /** + * @return mixed + */ + public function getHeight() { + return $this->height; + } + + /** + * @param mixed $height + */ + + public function setHeight($height) { + if (empty($height)) { + $this->height = NULL; + } else { + $this->height = (int)$height; + } + } + + /** + * @return array + */ + + public function jsonSerialize() { + $vars = get_object_vars($this); + + if ($vars['type'] == 'pie' || $vars['type'] == 'donut') { + unset($vars['x']); + } + + return $vars; + } + +} diff --git a/modules/charts_highcharts/src/Settings/Highcharts/ChartType.php b/modules/charts_highcharts/src/Settings/Highcharts/ChartType.php deleted file mode 100644 index bebba6ffeae74dff3d7d2b1c1d08ca18b668dd8f..0000000000000000000000000000000000000000 --- a/modules/charts_highcharts/src/Settings/Highcharts/ChartType.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -namespace Drupal\charts_highcharts\Settings\Highcharts; - -class ChartType implements \JsonSerializable { - private $type; - - /** - * @return mixed - */ - public function getType() { - return $this->type; - } - - /** - * @param mixed $type - */ - public function setType($type) { - $this->type = $type; - } - - /** - * @return array - */ - public function jsonSerialize() { - $vars = get_object_vars($this); - - if ($vars['type'] == 'pie' || $vars['type'] == 'donut') { - unset($vars['x']); - } - - return $vars; - } - -} diff --git a/src/Form/ChartsConfigForm.php b/src/Form/ChartsConfigForm.php index 3a9c0a96516109075f3450e74c9a09f966c0b065..0cb0f2c6442cd8906d20c16bf93fa214ea624d54 100644 --- a/src/Form/ChartsConfigForm.php +++ b/src/Form/ChartsConfigForm.php @@ -191,7 +191,7 @@ class ChartsConfigForm extends ConfigFormBase { if ($field_options) { $first_field = key($field_options); - $form['fields']['#theme'] = 'charts_settings_fields'; + // $form['fields']['#theme'] = 'charts_settings_fields'; $form['fields']['label_field'] = [ '#type' => 'radios', '#title' => $this->t('Label field'), diff --git a/src/Plugin/views/style/ChartsPluginStyleChart.php b/src/Plugin/views/style/ChartsPluginStyleChart.php index 75677997d709d77be6e7b3a61b6175d747f47f15..66e390d255315aaabf3403a4650aceed12750d25 100644 --- a/src/Plugin/views/style/ChartsPluginStyleChart.php +++ b/src/Plugin/views/style/ChartsPluginStyleChart.php @@ -283,10 +283,9 @@ class ChartsPluginStyleChart extends StylePluginBase { $subview = $this->view->createDuplicate(); $subview->setDisplay($child_display); // Copy the settings for our axes over to the child view. + foreach ($this->options as $option_name => $option_value) { - if (strpos($option_name, 'yaxis') === 0 && $this->view->storage->getDisplay($child_display)['display_options']['inherit_yaxis']) { - $subview->display_handler->options['style_options'][$option_name] = $option_value; - } elseif (strpos($option_name, 'xaxis') === 0) { + if ($this->view->displayHandlers->get($child_display)->options['inherit_yaxis'] === '1') { $subview->display_handler->options['style_options'][$option_name] = $option_value; } } @@ -306,7 +305,7 @@ class ChartsPluginStyleChart extends StylePluginBase { unset($subview);*/ // Create a secondary axis if needed. - if ($this->view->storage->getDisplay($child_display)['display_options']['inherit_yaxis'] !== '1' && isset($subchart['yaxis'])) { + if ($this->view->displayHandlers->get($child_display)->options['inherit_yaxis'] !== '1' && isset($subchart['yaxis'])) { $chart['secondary_yaxis'] = $subchart['yaxis']; $chart['secondary_yaxis']['#opposite'] = TRUE; } @@ -321,7 +320,7 @@ class ChartsPluginStyleChart extends StylePluginBase { if ($subchart['#chart_type'] !== $chart['#chart_type']) { $chart[$key]['#chart_type'] = $subchart['#chart_type']; } - if ($this->view->storage->getDisplay($child_display)['display_options']['inherit_yaxis'] !== '1') { + if ($this->view->displayHandlers->get($child_display)->options['inherit_yaxis'] !== '1') { $chart[$key]['#target_axis'] = 'secondary_yaxis'; } } @@ -348,6 +347,14 @@ class ChartsPluginStyleChart extends StylePluginBase { function getChildrenChartDisplays() { $children_displays = $this->displayHandler->getAttachedDisplays(); + foreach ($children_displays as $key => $child) { + $display_handler = $this->view->displayHandlers->get($child); + //unset disabled & non chart attachments. + if ((!$display_handler->isEnabled()) || (strstr($child,'chart_extension') == !true)) { + unset($children_displays[$key]); + } + } + $children_displays = array_values($children_displays); return $children_displays; }