Christopher Johnson (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/190652

Change subject: adds priority points pie
......................................................................

adds priority points pie

Change-Id: I78a1b773c4ceef06076c1efcbfe80c4b0576bbe1
---
A rsrc/behavior-priority-pie.js
M src/celerity/map.php
M src/util/SprintPoints.php
M src/view/burndown/BoardDataPieView.php
4 files changed, 116 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/phabricator/extensions/Sprint 
refs/changes/52/190652/1

diff --git a/rsrc/behavior-priority-pie.js b/rsrc/behavior-priority-pie.js
new file mode 100644
index 0000000..ba49e66
--- /dev/null
+++ b/rsrc/behavior-priority-pie.js
@@ -0,0 +1,26 @@
+/**
+ * @provides javelin-behavior-priority-pie
+ */
+
+JX.behavior('priority-pie', function(config) {
+
+    var h = JX.$(config.hardpoint);
+    var l = c3.generate({
+        bindto: h,
+        data: {
+            columns: [
+                ['Wishlist', config.Wishlist],
+                ['Low', config.Low],
+                ['Normal', config.Normal],
+                ['High', config.High],
+                ['Unbreak Now!', config.Unbreak],
+                ['Needs Triage', config.Triage]
+            ],
+            type: 'pie'
+        },
+        color: {
+            pattern: ['#3498db', '#f1c40f', '#e67e22', '#c0392b', '#6e5cb6', 
'#8e44ad' ]
+        }
+    });
+});
+
diff --git a/src/celerity/map.php b/src/celerity/map.php
index 2475ece..a786393 100644
--- a/src/celerity/map.php
+++ b/src/celerity/map.php
@@ -12,6 +12,7 @@
     'behavior-c3-chart.js' => '4bd6b4ca',
     'behavior-c3-pie.js' => 'ae804fb1',
     'behavior-events-table.js' => '9402663b',
+    'behavior-priority-pie.js' => '3b2a29e6',
     'behavior-sprint-boards.js' => 'b2754b95',
     'behavior-sprint-table.js' => '01ed4a30',
     'behavior-tasks-table.js' => '5f2084e5',
@@ -39,6 +40,7 @@
     'javelin-behavior-c3-chart' => '4bd6b4ca',
     'javelin-behavior-c3-pie' => 'ae804fb1',
     'javelin-behavior-events-table' => '9402663b',
+    'javelin-behavior-priority-pie' => '3b2a29e6',
     'javelin-behavior-sprint-boards' => 'b2754b95',
     'javelin-behavior-sprint-table' => '01ed4a30',
     'javelin-behavior-tasks-table' => '5f2084e5',
diff --git a/src/util/SprintPoints.php b/src/util/SprintPoints.php
index 13be16d..20b2041 100644
--- a/src/util/SprintPoints.php
+++ b/src/util/SprintPoints.php
@@ -6,6 +6,7 @@
 private $task_open_status_sum;
 private $task_closed_status_sum;
 private $tasks;
+private $taskPrioritySum;
 
   public function setTaskPoints ($taskpoints) {
     $this->taskpoints = $taskpoints;
@@ -21,7 +22,7 @@
     $points = null;
     $taskpoints = mpull($this->taskpoints, null, 'getObjectPHID');
     if (!empty($taskpoints)) {
-      foreach ($taskpoints as $key=>$value) {
+      foreach ($taskpoints as $key => $value) {
         if ($key == $task_phid) {
             $points = $value->getfieldValue();
         }
@@ -60,32 +61,63 @@
     return $status;
   }
 
+  private function getPriorityName($task) {
+    $priority_name = new ManiphestTaskPriority();
+    return $priority_name->getTaskPriorityName($task->getPriority());
+  }
+
   private function sumPointsbyStatus ($task) {
     $status = $this->getTaskStatus($task);
 
     $points = $this->getTaskPoints($task->getPHID());
 
     if ($status == 'open') {
-      $this->task_open_status_sum = 
$this->setTaskOpenStatusSum($this->task_open_status_sum, $points);
-    } elseif ($status == 'resolved') {
-      $this->task_closed_status_sum = 
$this->setTaskClosedStatusSum($this->task_closed_status_sum, $points);
+      $this->task_open_status_sum =
+          $this->setTaskOpenStatusSum($this->task_open_status_sum, $points);
+    } else if ($status == 'resolved') {
+      $this->task_closed_status_sum =
+          $this->setTaskClosedStatusSum($this->task_closed_status_sum, 
$points);
     }
     return;
   }
 
-  public function setTaskOpenStatusSum ($task_open_status_sum, $points) {
+  private function sumPointsbyPriority ($task) {
+    $priority_name = $this->getPriorityName($task);
+    $points = $this->getTaskPoints($task->getPHID());
+    if ($priority_name) {
+      $this->taskPrioritySum =
+          $this->setTaskPrioritySum($this->taskPrioritySum, $priority_name,
+              $points);
+    }
+    return;
+  }
+
+  private function setTaskPrioritySum ($task_priority_sum, $priority_name,
+                                      $points) {
+    $task_priority_sum[$priority_name] += $points;
+    return $task_priority_sum;
+  }
+
+  private function setTaskOpenStatusSum ($task_open_status_sum, $points) {
     $task_open_status_sum += $points;
     return $task_open_status_sum;
   }
 
-  public function setTaskClosedStatusSum ($task_closed_status_sum, $points) {
+  private function setTaskClosedStatusSum ($task_closed_status_sum, $points) {
     $task_closed_status_sum += $points;
     return $task_closed_status_sum;
   }
 
-  public function setStatusPoints () {
+  private function setStatusPoints () {
     foreach ($this->tasks as $task) {
       $this->sumPointsbyStatus($task);
+    }
+    return $this;
+  }
+
+  private function setPriorityPoints () {
+    foreach ($this->tasks as $task) {
+      $this->sumPointsbyPriority($task);
     }
     return $this;
   }
@@ -97,11 +129,21 @@
     return array ($opensum, $closedsum);
   }
 
-  public function getOpenStatusSum() {
+  private function getOpenStatusSum() {
     return $this->task_open_status_sum;
   }
 
-  public function getClosedStatusSum() {
+  private function getClosedStatusSum() {
     return $this->task_closed_status_sum;
   }
+
+  public function getPrioritySums() {
+    $this->setPriorityPoints();
+    $priority_points = $this->getTaskPrioritySum();
+    return $priority_points;
+  }
+
+  private function getTaskPrioritySum() {
+    return $this->taskPrioritySum;
+  }
 }
diff --git a/src/view/burndown/BoardDataPieView.php 
b/src/view/burndown/BoardDataPieView.php
index b10ede7..35c649a 100644
--- a/src/view/burndown/BoardDataPieView.php
+++ b/src/view/burndown/BoardDataPieView.php
@@ -12,23 +12,32 @@
   public function buildPieBox() {
     $this->initBoardDataPie();
     $this->initTaskStatusPie();
+    $this->initTaskPriorityPie();
     $project_name = $this->boardData->getProject()->getName();
     $boardpie = phutil_tag('div',
         array(
             'id' => 'c3-board-data-pie',
-            'style' => 'width: 400px; height:200px; padding-right: 200px;
+            'style' => 'width: 225px; height:200px; padding-left: 50px;
                 float: left;',
         ), pht('Board'));
     $taskpie = phutil_tag('div',
         array(
             'id' => 'pie',
-            'style' => 'width: 300px; height:200px; margin-left: 600px;',
+            'style' => 'width: 225px; height:200px; padding-left: 225px;
+            float: left;',
         ), pht('Task Status'));
+    $priority_pie = phutil_tag('div',
+        array(
+            'id' => 'priority-pie',
+            'style' => 'width: 500px; height:200px; padding-left: 75px;
+            margin-left: 900px;',
+        ), pht('Task Priority'));
     $box = id(new PHUIObjectBoxView())
-        ->setHeaderText(pht('Progress Report for '.
+        ->setHeaderText(pht('Points Allocation Report for '.
             $project_name))
         ->appendChild($boardpie)
-        ->appendChild($taskpie);
+        ->appendChild($taskpie)
+        ->appendChild($priority_pie);
     return $box;
   }
 
@@ -91,4 +100,28 @@
         'resolved' => $task_closed_status_sum,
     ), 'sprint');
   }
+
+  private function initTaskPriorityPie() {
+    $sprintpoints = id(new SprintPoints())
+        ->setTaskPoints($this->boardData->getTaskPoints())
+        ->setTasks($this->boardData->getTasks());
+
+    $task_priority_sum = $sprintpoints
+        ->getPrioritySums();
+
+    require_celerity_resource('d3', 'sprint');
+    require_celerity_resource('c3-css', 'sprint');
+    require_celerity_resource('c3', 'sprint');
+
+    $id = 'priority-pie';
+    Javelin::initBehavior('priority-pie', array(
+        'hardpoint' => $id,
+        'Wishlist' => $task_priority_sum['Wishlist'],
+        'Normal' => $task_priority_sum['Normal'],
+        'High' => $task_priority_sum['High'],
+        'Unbreak' => $task_priority_sum['Unbreak Now!'],
+        'Triage' => $task_priority_sum['Needs Triage'],
+        'Low' => $task_priority_sum['Low'],
+    ), 'sprint');
+  }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/190652
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I78a1b773c4ceef06076c1efcbfe80c4b0576bbe1
Gerrit-PatchSet: 1
Gerrit-Project: phabricator/extensions/Sprint
Gerrit-Branch: master
Gerrit-Owner: Christopher Johnson (WMDE) <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to