From aa767fa79de3ad7e8856c7fe17df7d7d335bbaab Mon Sep 17 00:00:00 2001
From: andileco <daniel@andile.co>
Date: Mon, 22 May 2017 09:36:11 -0400
Subject: [PATCH] Incorporate 2879594 and add menu link to Charts API Example
 display on Config page.

---
 charts.install                                |  1 +
 .../charts_api_example.links.menu.yml         |  5 +++
 .../charts_c3/src/Charts/C3ChartsRender.php   | 31 +++++++++++--------
 .../src/Settings/CThree/ChartData.php         |  4 +++
 4 files changed, 28 insertions(+), 13 deletions(-)
 create mode 100644 modules/charts_api_example/charts_api_example.links.menu.yml

diff --git a/charts.install b/charts.install
index ed6529d..bd42a90 100644
--- a/charts.install
+++ b/charts.install
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Install and update functions for the Charts module.
diff --git a/modules/charts_api_example/charts_api_example.links.menu.yml b/modules/charts_api_example/charts_api_example.links.menu.yml
new file mode 100644
index 0000000..0caceee
--- /dev/null
+++ b/modules/charts_api_example/charts_api_example.links.menu.yml
@@ -0,0 +1,5 @@
+charts_api_example.display:
+  title: 'Charts API example'
+  description: 'Displays a chart rendered using the API.'
+  parent: system.admin_config_content
+  route_name: charts_api_example.display
diff --git a/modules/charts_c3/src/Charts/C3ChartsRender.php b/modules/charts_c3/src/Charts/C3ChartsRender.php
index c89cd31..9a40154 100644
--- a/modules/charts_c3/src/Charts/C3ChartsRender.php
+++ b/modules/charts_c3/src/Charts/C3ChartsRender.php
@@ -74,22 +74,27 @@ class C3ChartsRender implements ChartsRenderInterface {
       array_unshift($categories, 'x');
       array_push($c3Data, $categories);
       $chartData->setColumns($c3Data);
-    } else {
-      if ($options['type'] == 'column') {
-        $chartData->setType('bar');
-        $chartAxis->setRotated(FALSE);
-        array_unshift($categories, 'x');
-        array_push($c3Data, $categories);
-        $chartData->setColumns($c3Data);
-      } else {
-        array_unshift($categories, 'x');
-        array_push($c3Data, $categories);
-        $chartData->setColumns($c3Data);
-      }
+    }
+    else if ($options['type'] == 'column') {
+      $chartData->setType('bar');
+      $chartAxis->setRotated(FALSE);
+      array_unshift($categories, 'x');
+      array_push($c3Data, $categories);
+      $chartData->setColumns($c3Data);
+    }
+    else if ($options['type'] == 'pie') {
+      $chartData->setColumns($c3Data);
+    }
+    else {
+      array_unshift($categories, 'x');
+      array_push($c3Data, $categories);
+      $chartData->setColumns($c3Data);
     }
     $chartData->types = $types;
 
-    $c3->setAxis($chartAxis);
+    if ($options['type'] != 'pie') {
+      $c3->setAxis($chartAxis);
+    }
 
     $chartColor = new ChartColor();
     $seriesColors = [];
diff --git a/modules/charts_c3/src/Settings/CThree/ChartData.php b/modules/charts_c3/src/Settings/CThree/ChartData.php
index 017c050..0870037 100644
--- a/modules/charts_c3/src/Settings/CThree/ChartData.php
+++ b/modules/charts_c3/src/Settings/CThree/ChartData.php
@@ -70,6 +70,10 @@ class ChartData implements \JsonSerializable {
   public function jsonSerialize() {
     $vars = get_object_vars($this);
 
+    if ($vars['type'] == 'pie') {
+      unset($vars['x']);
+    }
+
     return $vars;
   }
 
-- 
GitLab