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