Ejegg has uploaded a new change for review.
https://gerrit.wikimedia.org/r/197845
Change subject: Use shared context in distance to goal
......................................................................
Use shared context in distance to goal
Display an error message if no widget exists to provide totals.
Change-Id: I84c84b6213fe28070e759215f6c2c7b54d20e292
---
M src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.html
M src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.js
2 files changed, 26 insertions(+), 65 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/dash
refs/changes/45/197845/1
diff --git
a/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.html
b/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.html
index 78983e9..b74b42f 100644
--- a/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.html
+++ b/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.html
@@ -4,6 +4,7 @@
<p data-bind="text: title"></p>
</div>
<div class="panel-body">
+ <p data-bind="visible: !hasData()">No data available.
This widget requires a widget like Totals Earned to provide data.</p>
<div class="row-fluid">
<div class="col-md-12">
<div id="distanceToGoalChart"
width='1000' height='450'></div>
diff --git
a/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.js
b/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.js
index 8ce31e1..2a16254 100644
--- a/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.js
+++ b/src/components/widgets/distance-to-goal-chart/distance-to-goal-chart.js
@@ -2,79 +2,33 @@
'knockout',
'text!components/widgets/distance-to-goal-chart/distance-to-goal-chart.html',
'c3',
- 'momentjs'
-], function( ko, template, c3, moment ){
-
+ 'WidgetBase'
+], function( ko, template, c3, WidgetBase ){
function DistanceToGoalChartViewModel( params ){
var self = this;
- self.goal = ko.observable('20,000,000');
- self.dailyDataArray = [ 'Daily Total' ];
+ WidgetBase.call( this, params );
+ self.hasData = ko.observable( false );
- self.loadData = function ( decemberData, timestamp ) {
- var runningTotal = 0,
- currentDate = new Date(),
- timeFormat = 'dddd, MMMM Do YYYY, h:mm:ss a';
- currentDate.setTime( timestamp );
- self.displayDate( moment( currentDate ).format(
timeFormat ) );
- self.lastDataPoint.day = currentDate.getUTCDate();
- self.lastDataPoint.hour = currentDate.getUTCHours();
-
- for (var d = 1; d < 32; d++) {
- self.dailyDataArray[d] = 0;
- self.dailyCountArray[d] = 0;
- if (!self.dayObj[d]) {
- self.dayObj[d] = new Array(25);
- self.dayObj[d][0] = 'Hourly Totals';
- for (var h = 0; h < 24; h++) {
- self.dayObj[d][h + 1] = {
total: 0, count: 0 };
-
self.secondsByHourDonationData[(d - 1) * 24 + h + 1] = 0;
- }
- }
- }
-
- var dataCount = decemberData.length;
- for (var i = 0; i < dataCount; i++ ) {
-
- var el = decemberData[i],
- day = el.day,
- hour = el.hour,
- total = el.usd_total;
- self.dayObj[day][hour + 1] = { total: total,
count: el.donations };
-
- self.secondsByHourDonationData[(day - 1) * 24 +
hour + 1] = el.usd_per_second;
- runningTotal += total;
- self.dailyDataArray[day] += total;
- self.dailyCountArray[day] += el.donations;
- }
-
- //self.makeCharts();
-
- self.raised(runningTotal);
- };
-
- // $.get('data/big-english', function(dtgData){
-
- // console.log('dtgData', dtgData);
-
- // self.dailyDataArray;
-
-
- // });
-
- self.title = ko.observable(params.title);
self.makeCharts = function() {
- if ( self.dailyDataArray.length < 2 ) {
+ if ( params.sharedContext.dailyDataArray.length < 2 ) {
return;
}
- self.goal = ko.observable(self.goal);
+ self.hasData( true );
- self.updatedGoal = self.goal();
+ self.updatedGoal = params.sharedContext.goal();
self.neededArray = ['Needed'];
- for(var d = 1; d < self.dailyDataArray.length; d++) {
- self.updatedGoal = self.updatedGoal -
self.dailyDataArray[d];
+ for(var d = 1; d <
params.sharedContext.dailyDataArray.length; d++) {
+ self.updatedGoal = self.updatedGoal -
params.sharedContext.dailyDataArray[d];
self.neededArray[d] = self.updatedGoal >= 0 ?
self.updatedGoal : 0;
+ }
+
+ if ( self.distanceToGoalChart ) {
+ self.distanceToGoalChart.load( {
+ columns: [ self.neededArray ]
+ } );
+ return;
}
self.distanceToGoalChart = c3.generate({
@@ -114,9 +68,15 @@
}
});
};
-
- //self.makeCharts();
+ self.subscribe = function() {
+ if ( !params.sharedContext.totalsChanged ) {
+ window.setTimeout( self.subscribe, 50 );
+ return;
+ }
+ params.sharedContext.totalsChanged.subscribe(
self.makeCharts );
+ self.makeCharts();
+ };
+ self.subscribe();
}
return { viewModel: DistanceToGoalChartViewModel, template: template };
-
});
--
To view, visit https://gerrit.wikimedia.org/r/197845
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I84c84b6213fe28070e759215f6c2c7b54d20e292
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/dash
Gerrit-Branch: master
Gerrit-Owner: Ejegg <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits