Nuria has submitted this change and it was merged.
Change subject: Add support for timezones while creating reports
......................................................................
Add support for timezones while creating reports
Since the whole list of timezones can be overwhelming for the user, only
a few timezones have been added.
Bug: T74116
Change-Id: I5651dc6753f834c6cdc94df6a102a5dc683b80be
---
M wikimetrics/static/js/reportCreate.js
M wikimetrics/templates/report.html
2 files changed, 45 insertions(+), 7 deletions(-)
Approvals:
Nuria: Looks good to me, approved
jenkins-bot: Verified
diff --git a/wikimetrics/static/js/reportCreate.js
b/wikimetrics/static/js/reportCreate.js
index 78b1d99..7da18f7 100644
--- a/wikimetrics/static/js/reportCreate.js
+++ b/wikimetrics/static/js/reportCreate.js
@@ -5,7 +5,8 @@
$(document).ready(function(){
- var viewModel = {
+ var utcTimezone = {name: 'UTC', value: '+00:00'},
+ viewModel = {
filter: ko.observable(''),
cohorts: ko.observableArray([]),
toggleCohort: function(cohort){
@@ -20,6 +21,21 @@
}
return true;
},
+
+ // Add more timezones as necessary
+ availableTimezones : ko.observableArray([
+ {name: 'Central European Time', value: '+01:00'},
+ {name: 'Eastern European Time', value: '+02:00'},
+ {name: 'East Australian Standard Time', value: '+10:00'},
+ utcTimezone,
+ {name: 'Atlantic Standard Time', value: '-04:00'},
+ {name: 'Eastern Standard Time', value: '-05:00'},
+ {name: 'Central Standard Time', value: '-06:00'},
+ {name: 'Mountain Standard Time', value: '-07:00'},
+ {name: 'Pacific Standard Time', value: '-08:00'},
+ {name: 'Hawaii Standard Time', value: '-10:00'}
+ ]),
+ timezone: ko.observable(utcTimezone), // no default
metrics: ko.observableArray([]),
toggleMetric: function(metric){
@@ -41,12 +57,13 @@
},
save: function(formElement){
-
+ var timezone = this.timezone();
+
if (site.hasValidationErrors()){
site.showWarning('Please configure and click Save
Configuration for each selected metric.');
return;
}
-
+
var vm = ko.dataFor(formElement);
if (vm.request().responses().length === 0){
site.showWarning('Please select at least one cohort and one
metric.');
@@ -69,7 +86,7 @@
var form = $(formElement);
var data = ko.toJSON(vm.request().responses);
data = JSON.parse(data);
-
+
ko.utils.arrayForEach(data, function(response){
delete response.metric.configure;
delete response.cohort.wikiusers;
@@ -80,9 +97,16 @@
delete response.metric.tabIdSelector;
delete response.metric.selected;
delete response.metric.description;
+ // apply timezone info
+ ko.utils.arrayForEach(response.metric.dateTimeFieldNames,
function(name) {
+ response.metric[name] = moment
+ .utc(response.metric[name] + ' ' + timezone.value)
+ .format('YYYY-MM-DD HH:mm:ss');
+ });
+ delete response.metric.dateTimeFieldNames;
});
data = JSON.stringify(data);
-
+
$.ajax({ type: 'post', url: form.attr('action'), data: {responses:
data, recurrent: vm.request().recurrent()} })
.done(site.handleWith(function(response){
// should redirect to the reports page, so show an error
otherwise
@@ -235,6 +259,11 @@
var parentId = metric.tabId();
var controls = $('#' + parentId + ' div.datetimepicker');
controls.datetimepicker({language: 'en'});
+ // save datetime field names for later use (timezone conversion)
+ metric.dateTimeFieldNames = [];
+ controls.each(function () {
+ metric.dateTimeFieldNames.push($(this).find('input').attr('name'));
+ });
// TODO: this might be cleaner if it metric[name] was an observable
controls.on('changeDate', function(){
var input = $(this).find('input');
@@ -248,8 +277,7 @@
e.preventDefault();
$(this).tab('show');
});
-
-
+
// apply bindings - this connects the DOM with the view model constructed
above
ko.applyBindings(viewModel);
});
diff --git a/wikimetrics/templates/report.html
b/wikimetrics/templates/report.html
index 4775d82..1641534 100644
--- a/wikimetrics/templates/report.html
+++ b/wikimetrics/templates/report.html
@@ -32,6 +32,16 @@
</ul>
</div>
</div>
+<div class="well well-small pick-timezone">
+ <div class="form-inline">
+ <label class="control-label"> <h4>Pick Timezone</h4> </label>
+ <select data-bind="options: availableTimezones,
+ optionsText: function (item) {
+ return item.value + ' ' + item.name;
+ },
+ value:timezone"></select>
+ </div>
+</div>
<div class="well well-small pick-metrics">
<h4>Pick Metrics</h4>
<div class="tabbable tabs-left">
--
To view, visit https://gerrit.wikimedia.org/r/175169
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I5651dc6753f834c6cdc94df6a102a5dc683b80be
Gerrit-PatchSet: 4
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Bmansurov <[email protected]>
Gerrit-Reviewer: Bmansurov <[email protected]>
Gerrit-Reviewer: Nuria <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits