From a12eae43be2cd32edb7a69691ac456220b8071c5 Mon Sep 17 00:00:00 2001 From: tgpatel Date: Wed, 11 Feb 2015 13:10:12 -0700 Subject: [PATCH] Fixing start date / end date bug. Fixes #81 --- .../experimenter/subject-pool-index.html | 10 +++--- vcweb/static/js/ko/knockout.helper.js | 32 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/vcweb/core/templates/experimenter/subject-pool-index.html b/vcweb/core/templates/experimenter/subject-pool-index.html index 8d1d6c60..5ffe195a 100644 --- a/vcweb/core/templates/experimenter/subject-pool-index.html +++ b/vcweb/core/templates/experimenter/subject-pool-index.html @@ -138,7 +138,7 @@

- +
@@ -204,7 +204,7 @@

- +
@@ -323,9 +323,10 @@

]; model.addSession = function() { - var tom_date_time = moment().add(1, 'days').format('YYYY-MM-DD HH:mm'); + var initial_start_date = moment().add(1, 'days').hour(10).minute(0).format('YYYY-MM-DD HH:mm'); + var initial_end_date = moment().add(1, 'days').hour(11).minute(0).format('YYYY-MM-DD HH:mm'); model.session_list.push( - new SessionModel({ pk: -1, experiment_metadata: -1, start_date: tom_date_time, end_date: tom_date_time, capacity:10, invite_count: 0, location: "Online", isEditable: true, signup_count: 0}) + new SessionModel({ pk: -1, experiment_metadata: -1, start_date: initial_start_date, end_date: initial_end_date, capacity:10, invite_count: 0, location: "Online", isEditable: true, signup_count: 0}) ); }; @@ -443,6 +444,7 @@

self.isEditable(true); }; } + console.log(viewModelJson) ko.applyBindings(new SessionListViewModel(viewModelJson)); }); diff --git a/vcweb/static/js/ko/knockout.helper.js b/vcweb/static/js/ko/knockout.helper.js index b3192c2b..b24648e5 100644 --- a/vcweb/static/js/ko/knockout.helper.js +++ b/vcweb/static/js/ko/knockout.helper.js @@ -65,23 +65,27 @@ ko.bindingHandlers.slideVisible = { } }; -ko.bindingHandlers.datepicker = { - init: function(element, valueAccessor, allBindingsAccessor) { +ko.bindingHandlers.datetimepicker = { + init: function(element, valueAccessor, allBindings) { //initialize datepicker with some optional options - var options = { minDate: moment(), sideBySide: true }; - $(element).datetimepicker(options); - - ko.utils.registerEventHandler(element, "dp.show", function(event) { - var value = ko.utils.unwrapObservable(valueAccessor()); - $(element).data("DateTimePicker").date(value); - }); - - ko.utils.registerEventHandler(element, "dp.change", function(event) { - if($(element).hasClass("date-start")) { - $(element).parents("tbody").find(".date-end").data("DateTimePicker").minDate(event.date); - $(element).parents("tbody").find(".date-end").data("DateTimePicker").date(event.date); + var options = { + format: 'YYYY-MM-DD HH:mm', + defaultDate: ko.unwrap(valueAccessor()), + sideBySide: true, + }; + ko.utils.extend(options, allBindings.dateTimePickerOptions); + $(element).datetimepicker(options).on("dp.change", function (evntObj) { + var observable = valueAccessor(); + if (evntObj.timeStamp !== undefined) { + var picker = $(this).data("DateTimePicker"); + var d = picker.date(); + observable(d.format(options.format)); } }); + }, + update: function (element, valueAccessor) { + var value = ko.unwrap(valueAccessor()); + $(element).datetimepicker('date', value || ''); } };