From 843c0c13ec0251efccb6cdced975d78e6a4b3ef6 Mon Sep 17 00:00:00 2001
From: Bruno Massa <brmassa@67164.no-reply.drupal.org>
Date: Mon, 7 Jul 2008 10:19:07 +0000
Subject: [PATCH] Bugs fixed: * Apply the correct color value intochart data

---
 charts.inc    | 11 ++++++++---
 charts.module | 32 ++++++++++++++++----------------
 2 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/charts.inc b/charts.inc
index 2787a72..e97a6fb 100644
--- a/charts.inc
+++ b/charts.inc
@@ -52,7 +52,7 @@ function _charts_color_form(&$form, $form_state, $settings) {
     $form['color']['palette']['color'. $color] = array(
       '#type'           => 'textfield',
       '#title'          => $value,
-      '#default_value'  => empty($color_palette[$color]) ? '#336699' : $color_palette[$color],
+      '#default_value'  => empty($color_palette[$color]) ? '336699' : $color_palette[$color],
       '#size'           => 8,
     );
     $color_palette['color'. $color] = $color_palette[$color];
@@ -73,8 +73,10 @@ function _charts_color_form(&$form, $form_state, $settings) {
 function _charts_color_palette() {
   return array(
     '' => t('Custom'),
-    '#FF0000,#00CC00,#0066B3,#FF8000,#FFCC00,#330099,#990099,#CCFF00' => t('Primary'),
-    '#FF6600,#009999,#1919B3,#FFB200,#FFFF00,#660099,#E60066,#33FF00' => t('Secondary'),
+    '#ff0000,#00cc00,#0066b3,#ff8000,#ffcc00,#330099,#990099,#ccff00' => t('Primary'),
+    '#ff6600,#009999,#1919b3,#ffb200,#ffff00,#660099,#e60066,#33ff00' => t('Secondary'),
+//     'ff0000,00cc00,0066b3,ff8000,ffcc00,330099,990099,ccff00' => t('Primary'),
+//     'ff6600,009999,1919b3,ffb200,ffff00,660099,e60066,33ff00' => t('Secondary'),
   );
 }
 
@@ -212,6 +214,9 @@ function _charts_settings_submit(&$form, &$form_state) {
     unset($settings[$index]);
   }
 
+  // Save the Color palette. Firts, filter the data, cluster the results
+  // into a single string. Finally, unset all field values, since they
+  // are useless
   $settings['#color_palette'] = implode(',', $settings['#palette']);
   unset($settings['#palette']);
   unset($settings['#scheme']);
diff --git a/charts.module b/charts.module
index 29ad7ba..4319f3c 100644
--- a/charts.module
+++ b/charts.module
@@ -20,19 +20,18 @@
  *   JavaScript external files)
  */
 function charts_chart(&$data) {
-  // Get the previously saved data from Data Base
+  // Get the previously saved data from database
   $settings = variable_get('charts_settings', array());
 
+  // Split the color palette data into inidividual values
+  $color_palette = explode(',', ereg_replace('#', '', $settings['#color_palette']));
+
+  // Check if the Chart will use the color palette for individual values
+  // instead for series, like Pie Charts
   $options = array('pie2D' => TRUE, 'pie3D' => TRUE);
-  if (!empty($data['#type'])) {
-    if (!empty($options[$data['#type']])) {
-      $color_palette = TRUE;
-    }
-  }
-  elseif (!empty($settings['#type'])) {
-    if (!empty($options[$settings['#type']])) {
-      $color_palette = TRUE;
-    }
+  if ((!empty($data['#type']) and !empty($options[$data['#type']]) ) or
+      (!empty($settings['#type']) and !empty($options[$settings['#type']]) ) ) {
+    $individual_color_palette = TRUE;
   }
 
   // Merge all series option to the main data array,
@@ -42,20 +41,21 @@ function charts_chart(&$data) {
     }
     unset($settings[$series]);
 
-    // Color Palette
-    if (empty($color_palette) and empty($data[$series]['#color'])) {
-      $data[$series]['#color'] = trim($settings['#color_palette'][$series]);
+    // Apply the Color Palette: normally, apply one color to each series.
+    // But for some types of charts, is one color to each value into the series
+    if (empty($individual_color_palette) and empty($data[$series]['#color'])) {
+      $data[$series]['#color'] = $color_palette[$series];
     }
-    elseif (!empty($color_palette)) {
+    elseif (!empty($individual_color_palette)) {
       foreach (element_children($data[$series]) as $values) {
         if (!is_array($data[$series][$values])) {
           $data[$series][$values] = array(
             '#value' => $data[$series][$values],
-            '#color' => trim($settings['#color_palette'][$values])
+            '#color' => $color_palette[$values],
           );
         }
         elseif (empty($data[$series][$values]['#color'])) {
-          $data[$series][$values]['#color'] = trim($settings['#color_palette'][$values]);
+          $data[$series][$values]['#color'] = $color_palette[$values];
         }
       }
     }
-- 
GitLab