1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-26 23:40:57 +01:00

When summing points on a workboard, display sum with same precision as most-precise value

Summary:
Fixes T11703. This mostly avoids rounding errors.

If point values include "0.001", we also get three digits of precision: 1.000.

Maybe useful if your point field is called "bitcoins" or something.

Test Plan:
Before:

{F1851404}

After:

{F1851405}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11703

Differential Revision: https://secure.phabricator.com/D16601
This commit is contained in:
epriestley 2016-09-27 09:29:43 -07:00
parent 26b29a60c0
commit f2bb9bc061
2 changed files with 17 additions and 6 deletions

View file

@ -495,7 +495,7 @@ return array(
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c', 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c',
'rsrc/js/application/projects/WorkboardBoard.js' => 'fe7cb52a', 'rsrc/js/application/projects/WorkboardBoard.js' => 'fe7cb52a',
'rsrc/js/application/projects/WorkboardCard.js' => 'c587b80f', 'rsrc/js/application/projects/WorkboardCard.js' => 'c587b80f',
'rsrc/js/application/projects/WorkboardColumn.js' => 'bae58312', 'rsrc/js/application/projects/WorkboardColumn.js' => '21df4ff5',
'rsrc/js/application/projects/WorkboardController.js' => '55baf5ed', 'rsrc/js/application/projects/WorkboardController.js' => '55baf5ed',
'rsrc/js/application/projects/behavior-project-boards.js' => '14a1faae', 'rsrc/js/application/projects/behavior-project-boards.js' => '14a1faae',
'rsrc/js/application/projects/behavior-project-create.js' => '065227cc', 'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
@ -825,7 +825,7 @@ return array(
'javelin-websocket' => 'e292eaf4', 'javelin-websocket' => 'e292eaf4',
'javelin-workboard-board' => 'fe7cb52a', 'javelin-workboard-board' => 'fe7cb52a',
'javelin-workboard-card' => 'c587b80f', 'javelin-workboard-card' => 'c587b80f',
'javelin-workboard-column' => 'bae58312', 'javelin-workboard-column' => '21df4ff5',
'javelin-workboard-controller' => '55baf5ed', 'javelin-workboard-controller' => '55baf5ed',
'javelin-workflow' => '1e911d0f', 'javelin-workflow' => '1e911d0f',
'lightbox-attachment-css' => '7acac05d', 'lightbox-attachment-css' => '7acac05d',
@ -1162,6 +1162,10 @@ return array(
'javelin-stratcom', 'javelin-stratcom',
'conpherence-thread-manager', 'conpherence-thread-manager',
), ),
'21df4ff5' => array(
'javelin-install',
'javelin-workboard-card',
),
'2290aeef' => array( '2290aeef' => array(
'javelin-install', 'javelin-install',
'javelin-dom', 'javelin-dom',
@ -1922,10 +1926,6 @@ return array(
'javelin-uri', 'javelin-uri',
'phabricator-notification', 'phabricator-notification',
), ),
'bae58312' => array(
'javelin-install',
'javelin-workboard-card',
),
'bb1dd507' => array( 'bb1dd507' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',

View file

@ -222,6 +222,7 @@ JX.install('WorkboardColumn', {
var points = {}; var points = {};
var count = 0; var count = 0;
var decimal_places = 0;
for (var phid in cards) { for (var phid in cards) {
var card = cards[phid]; var card = cards[phid];
@ -238,6 +239,15 @@ JX.install('WorkboardColumn', {
points[status] = 0; points[status] = 0;
} }
points[status] += card_points; points[status] += card_points;
// Count the number of decimal places in the point value with the
// most decimal digits. We'll use the same precision when rendering
// the point sum. This avoids rounding errors and makes the display
// a little more consistent.
var parts = card_points.toString().split('.');
if (parts[1]) {
decimal_places = Math.max(decimal_places, parts[1].length);
}
} }
count++; count++;
@ -247,6 +257,7 @@ JX.install('WorkboardColumn', {
for (var k in points) { for (var k in points) {
total_points += points[k]; total_points += points[k];
} }
total_points = total_points.toFixed(decimal_places);
var limit = this.getPointLimit(); var limit = this.getPointLimit();