Commit 3ee5acfc by Amir Qayyum Khan

Added error message incase user specified start or due date without time and…

Added error message incase user specified start or due date without time and also added start date and due date comparison validation in ccx coach dashboard validation.
parent b932a202
...@@ -104,23 +104,41 @@ var edx = edx || {}; ...@@ -104,23 +104,41 @@ var edx = edx || {};
// Add unit handler // Add unit handler
$('#add-unit-button').on('click', function(event) { $('#add-unit-button').on('click', function(event) {
event.preventDefault(); event.preventDefault();
var chapter = self.chapter_select.val(), // Default value of time is 00:00.
sequential = self.sequential_select.val(), var start, chapter, sequential, vertical, units, due;
vertical = self.vertical_select.val(), start = self.get_datetime('start');
units = self.find_lineage(self.schedule, chapter = self.chapter_select.val();
sequential = self.sequential_select.val();
vertical = self.vertical_select.val();
units = self.find_lineage(
self.schedule,
chapter, chapter,
sequential === 'all' ? null : sequential, sequential === 'all' ? null : sequential,
vertical === 'all' ? null: vertical), vertical === 'all' ? null : vertical
start = self.get_datetime('start'), );
due = self.get_datetime('due'); due = self.get_datetime('due');
var errorMessage = self.valid_dates(start, due);
if (_.isUndefined(errorMessage)) {
units.map(self.show); units.map(self.show);
var unit = units[units.length - 1]; var unit = units[units.length - 1];
if (unit !== undefined && start) { unit.start = start; } if (!_.isUndefined(unit)) {
if (unit !== undefined && due) { unit.due = due; } if (!_.isNull(start)) {
unit.start = start;
}
if (!_.isNull(due)) {
unit.due = due;
}
}
self.schedule_apply([unit], self.show); self.schedule_apply([unit], self.show);
self.schedule_collection.set(self.schedule); self.schedule_collection.set(self.schedule);
self.dirty = true; self.dirty = true;
self.render(); self.render();
} else {
self.dirty = false;
$('#ccx_schedule_error_message').text(errorMessage);
$('#ajax-error').show().focus();
$('#dirty-schedule').hide();
}
}); });
// Handle save button // Handle save button
...@@ -251,9 +269,27 @@ var edx = edx || {}; ...@@ -251,9 +269,27 @@ var edx = edx || {};
} }
}, },
valid_dates: function(start, due) {
var errorMessage;
// Start date is compulsory and due date is optional.
if (_.isEmpty(start) && !_.isEmpty(due)) {
errorMessage = gettext("Please enter valid start date and time.");
} else if (!_.isEmpty(start) && !_.isEmpty(due)) {
var requirejs = window.require || RequireJS.require;
var moment = requirejs("moment");
var parsedDueDate = moment(due, 'YYYY-MM-DD HH:mm');
var parsedStartDate = moment(start, 'YYYY-MM-DD HH:mm');
if (parsedDueDate.isBefore(parsedStartDate)) {
errorMessage = gettext("Due date cannot be before start date.");
}
}
return errorMessage;
},
get_datetime: function(which) { get_datetime: function(which) {
var date = $('form#add-unit input[name=' + which + '_date]').val(); var date = $('form#add-unit input[name=' + which + '_date]').val();
var time = $('form#add-unit input[name=' + which + '_time]').val(); var time = $('form#add-unit input[name=' + which + '_time]').val();
time = _.isEmpty(time) ? "00:00" : time;
if (date && time) { if (date && time) {
return date + ' ' + time; } return date + ' ' + time; }
return null; return null;
......
...@@ -124,7 +124,7 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/ccx/schedule'], ...@@ -124,7 +124,7 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/ccx/schedule'],
val = "i4x://edX/DemoX/sequential/edx_introduction"; val = "i4x://edX/DemoX/sequential/edx_introduction";
view.sequential_select.val(val); view.sequential_select.val(val);
view.sequential_select.change(); view.sequential_select.change();
val = "i4x://edX/DemoX/vertical/vertical_0270f6de40fc", val = "i4x://edX/DemoX/vertical/vertical_0270f6de40fc";
view.vertical_select.val(val); view.vertical_select.val(val);
view.vertical_select.change(); view.vertical_select.change();
expect(view.vertical_select.val()).toEqual(val); expect(view.vertical_select.val()).toEqual(val);
...@@ -141,11 +141,53 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/ccx/schedule'], ...@@ -141,11 +141,53 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/ccx/schedule'],
view.vertical_select.val(val); view.vertical_select.val(val);
view.vertical_select.change(); view.vertical_select.change();
var unit = view.find_unit(view.schedule, 'i4x://edX/DemoX/chapter/d8a6192ade314473a78242dfeedfbf5b'); var unit = view.find_unit(view.schedule, 'i4x://edX/DemoX/chapter/d8a6192ade314473a78242dfeedfbf5b');
view.set_datetime('start', '2015-12-12 10:00');
view.set_datetime('due', '2015-12-12 10:30');
expect(unit.hidden).toBe(true); expect(unit.hidden).toBe(true);
$('#add-unit-button').click(); $('#add-unit-button').click();
expect(unit.hidden).toBe(false); expect(unit.hidden).toBe(false);
}); });
it("add unit when start date is greater the due date", function() {
var val = 'i4x://edX/DemoX/chapter/d8a6192ade314473a78242dfeedfbf5b';
view.chapter_select.val(val);
view.chapter_select.change();
val = "i4x://edX/DemoX/sequential/edx_introduction";
view.sequential_select.val(val);
view.sequential_select.change();
val = "i4x://edX/DemoX/vertical/vertical_0270f6de40fc";
view.vertical_select.val(val);
view.vertical_select.change();
var unit = view.find_unit(view.schedule, 'i4x://edX/DemoX/chapter/d8a6192ade314473a78242dfeedfbf5b');
// start date is before due date
view.set_datetime('start', '2015-11-13 10:45');
view.set_datetime('due', '2015-11-12 10:00');
expect(unit.hidden).toBe(true);
$('#add-unit-button').click();
// Assert unit is not added to schedule
expect(unit.hidden).toBe(true);
});
it("add unit when start date is missing", function() {
var val = 'i4x://edX/DemoX/chapter/d8a6192ade314473a78242dfeedfbf5b';
view.chapter_select.val(val);
view.chapter_select.change();
val = "i4x://edX/DemoX/sequential/edx_introduction";
view.sequential_select.val(val);
view.sequential_select.change();
val = "i4x://edX/DemoX/vertical/vertical_0270f6de40fc";
view.vertical_select.val(val);
view.vertical_select.change();
var unit = view.find_unit(view.schedule, 'i4x://edX/DemoX/chapter/d8a6192ade314473a78242dfeedfbf5b');
// start date is missing
view.set_datetime('start', null);
view.set_datetime('due', '2015-12-12 10:00');
expect(unit.hidden).toBe(true);
$('#add-unit-button').click();
// Assert unit is not added to schedule
expect(unit.hidden).toBe(true);
});
it("gets a datetime string from date and time fields", function() { it("gets a datetime string from date and time fields", function() {
view.set_datetime('start', '2015-12-12 10:45'); view.set_datetime('start', '2015-12-12 10:45');
expect($('form#add-unit input[name=start_date]')).toHaveValue('2015-12-12'); expect($('form#add-unit input[name=start_date]')).toHaveValue('2015-12-12');
......
...@@ -316,7 +316,7 @@ ...@@ -316,7 +316,7 @@
}, },
'js/ccx/schedule': { 'js/ccx/schedule': {
exports: 'js/ccx/schedule', exports: 'js/ccx/schedule',
deps: ['jquery', 'underscore', 'backbone', 'gettext'] deps: ['jquery', 'underscore', 'backbone', 'gettext', 'moment']
}, },
// Backbone classes loaded explicitly until they are converted to use RequireJS // Backbone classes loaded explicitly until they are converted to use RequireJS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment