From 03c6e69208b853be0e7f583aa11fef13cc09b4e8 Mon Sep 17 00:00:00 2001
From: Alvaro Soliverez <alvaro.soliverez@collabora.com>
Date: Tue, 29 Nov 2016 23:27:33 +0000
Subject: [PATCH] Fix hardcoded columns and priorities in burndown page

Not happy with the way it parses columns and priorities, but I couldn't find a way to pass an array through Javelin to JS code
Differential Revision: https://phabricator.collabora.co.uk/D973
---
 rsrc/behavior-board-data-pie.js        | 21 ++++++-----
 rsrc/behavior-priority-pie.js          | 23 ++++++------
 src/celerity/map.php                   | 12 +++---
 src/view/burndown/BoardDataPieView.php | 52 ++++++--------------------
 4 files changed, 41 insertions(+), 67 deletions(-)

diff --git a/rsrc/behavior-board-data-pie.js b/rsrc/behavior-board-data-pie.js
index 5ce7ed1..0e98a44 100644
--- a/rsrc/behavior-board-data-pie.js
+++ b/rsrc/behavior-board-data-pie.js
@@ -4,20 +4,23 @@
 
 JX.behavior('c3-board-data-pie', function(config) {
 
+    var columnPoints = new Array();
+    var data = config.Columns.split(";");
+
+    var len = data.length -1;
+    for (x = 0; x < len; x = x + 2) {
+      var column = new Array();
+      column[0] = data[x];
+      column[1] = data[x+1];
+      columnPoints.push(column);
+    }
+
     var h = JX.$(config.hardpoint);
     var l = c3.generate({
         bindto: h,
         data: {
-            columns: [
-                ['Backlog', config.Backlog],
-                ['Doing', config.Doing],
-                ['Review', config.Review],
-                ['Done', config.Done]
-            ],
+            columns: columnPoints,
             type: 'pie'
         },
-        color: {
-            pattern: ['#BDBDBD', '#FF7F0E', '#2CA02C', '#D62728' ]
-        }
     });
 });
diff --git a/rsrc/behavior-priority-pie.js b/rsrc/behavior-priority-pie.js
index af41460..ac2a550 100644
--- a/rsrc/behavior-priority-pie.js
+++ b/rsrc/behavior-priority-pie.js
@@ -4,22 +4,23 @@
 
 JX.behavior('priority-pie', function(config) {
 
+    var priorityPoints = new Array();
+    var data = config.Priorities.split(";");
+
+    var len = data.length -1;
+    for (x = 0; x < len; x = x + 2) {
+      var priority = new Array();
+      priority[0] = data[x];
+      priority[1] = data[x+1];
+      priorityPoints.push(priority);
+    }
+
     var h = JX.$(config.hardpoint);
     var l = c3.generate({
         bindto: h,
         data: {
-            columns: [
-                ['Needs Triage', config.Triage],
-                ['Unbreak Now!', config.Unbreak],
-                ['High', config.High],
-                ['Normal', config.Normal],
-                ['Low', config.Low],
-                ['Wishlist', config.Wishlist]
-            ],
+            columns: priorityPoints,
             type: 'pie'
         },
-        color: {
-            pattern: ['#8e44ad', '#6e5cb6', '#c0392b', '#e67e22', '#f1c40f', '#3498db']
-        }
     });
 });
diff --git a/src/celerity/map.php b/src/celerity/map.php
index b443d0a..a8b3c58 100644
--- a/src/celerity/map.php
+++ b/src/celerity/map.php
@@ -7,12 +7,12 @@
  */
 return array(
   'names' => array(
-    'behavior-board-data-pie.js' => 'a1302bf1',
+    'behavior-board-data-pie.js' => '0e141d9b',
     'behavior-burndown-report-chart.js' => '631b0017',
     'behavior-c3-chart.js' => '0fe21223',
     'behavior-c3-pie.js' => 'ae804fb1',
     'behavior-events-table.js' => 'f2c22d32',
-    'behavior-priority-pie.js' => 'f72c0144',
+    'behavior-priority-pie.js' => 'f0f024ce',
     'behavior-sprint-history-table.js' => 'b38db637',
     'behavior-sprint-table.js' => '7fb99402',
     'behavior-tasks-table.js' => '04f4d973',
@@ -23,7 +23,7 @@ return array(
     'images/Screenshot-1.png' => '500c0ca0',
     'jquery-1.11.3.js' => '944b5c07',
     'jquery.dataTables.js' => 'd78eac7f',
-    'phui-object-box.css' => '7177101e',
+    'phui-object-box.css' => 'ade5179a',
     'sprint-report.css' => 'f6959ade',
     'webroot-static/sort_asc.png' => '68adbacc',
     'webroot-static/sort_both.png' => '9c425f1b',
@@ -36,16 +36,16 @@ return array(
     'dataTables' => 'd78eac7f',
     'dataTables-css' => '31e0c8fd',
     'javelin-behavior-burndown-report-chart' => '631b0017',
-    'javelin-behavior-c3-board-data-pie' => 'a1302bf1',
+    'javelin-behavior-c3-board-data-pie' => '0e141d9b',
     'javelin-behavior-c3-chart' => '0fe21223',
     'javelin-behavior-c3-pie' => 'ae804fb1',
     'javelin-behavior-events-table' => 'f2c22d32',
-    'javelin-behavior-priority-pie' => 'f72c0144',
+    'javelin-behavior-priority-pie' => 'f0f024ce',
     'javelin-behavior-sprint-history-table' => 'b38db637',
     'javelin-behavior-sprint-table' => '7fb99402',
     'javelin-behavior-tasks-table' => '04f4d973',
     'jquery' => '944b5c07',
-    'phui-object-box-css' => '7177101e',
+    'phui-object-box-css' => 'ade5179a',
     'sprint-report-css' => 'f6959ade',
   ),
   'requires' => array(
diff --git a/src/view/burndown/BoardDataPieView.php b/src/view/burndown/BoardDataPieView.php
index 0da8063..5edca05 100644
--- a/src/view/burndown/BoardDataPieView.php
+++ b/src/view/burndown/BoardDataPieView.php
@@ -50,38 +50,20 @@ final class BoardDataPieView extends Phobject {
     require_celerity_resource('c3', 'sprint');
 
     $coldata = $this->boardData->getColumnData();
-    $done_points = '0';
-    $backlog_points = '0';
-    $doing_points = '0';
-    $review_points = '0';
+    $columns = "";
 
     foreach ($coldata as $col) {
-      switch ($col[0]) {
-        case ('Done'):
-          $done_points = $col[2];
-          break;
-        case ('Backlog'):
-          $backlog_points = $col[2];
-          break;
-        case ('Doing'):
-          $doing_points = $col[2];
-          break;
-        case ('Review'):
-          $review_points = $col[2];
-          break;
-        default:
-          break;
-      }
+      $col_name = $col[0];
+      $col_points = $col[2];
+      $columns .= $col_name . ";" . $col_points . ";";
     }
 
     $id = 'c3-board-data-pie';
     Javelin::initBehavior('c3-board-data-pie', array(
         'hardpoint' => $id,
-        'Backlog' => $backlog_points,
-        'Doing' => $doing_points,
-        'Review' => $review_points,
-        'Done' => $done_points,
+        'Columns' => $columns,
     ), 'sprint');
+
   }
 
   private function initTaskStatusPie() {
@@ -110,12 +92,10 @@ final class BoardDataPieView extends Phobject {
     $task_priority_sum = $sprintpoints
         ->getPrioritySums();
 
-    if (isset($task_priority_sum['Wishlist'])) {
-      $lowest_priority = $task_priority_sum['Wishlist'];
-    } else if (isset($task_priority_sum['Needs Volunteer'])) {
-      $lowest_priority = $task_priority_sum['Needs Volunteer'];
-    } else {
-      $lowest_priority = null;
+    $priorities = "";
+
+    foreach(array_keys($task_priority_sum) as $key) {
+      $priorities .= $key . ";" . $task_priority_sum[$key] . ";";
     }
 
     require_celerity_resource('d3', 'sprint');
@@ -125,17 +105,7 @@ final class BoardDataPieView extends Phobject {
     $id = 'priority-pie';
     Javelin::initBehavior('priority-pie', array(
         'hardpoint' => $id,
-        'Wishlist' => $lowest_priority,
-        'Normal' => (isset($task_priority_sum['Normal'])) ?
-            $task_priority_sum['Normal']: null,
-        'High' => (isset($task_priority_sum['High'])) ?
-            $task_priority_sum['High']: null,
-        'Unbreak' => (isset($task_priority_sum['Unbreak Now!'])) ?
-            $task_priority_sum['Unbreak Now!']: null,
-        'Triage' => (isset($task_priority_sum['Needs Triage'])) ?
-            $task_priority_sum['Needs Triage']: null,
-        'Low' => (isset($task_priority_sum['Low'])) ?
-            $task_priority_sum['Low']: null,
+        'Priorities' => $priorities,
     ), 'sprint');
   }
 }
-- 
GitLab