Restructured lunch time validation
This commit is contained in:
parent
7a6f4701e2
commit
5282266bce
2 changed files with 40 additions and 47 deletions
|
|
@ -4,13 +4,17 @@ function getChildElement(elem) {
|
|||
return $("#" + elem.data("enables"));
|
||||
}
|
||||
|
||||
function insertSpanAfter(referenceNode, text) {
|
||||
function insertErrorSpanAfter(referenceNode, text) {
|
||||
var element = document.createElement("span");
|
||||
element.setAttribute("id", "error_text");
|
||||
element.classList.add("red_text");
|
||||
element.innerHTML = " " + text;
|
||||
referenceNode.parentNode.insertBefore(element, referenceNode.nextSibling);
|
||||
}
|
||||
|
||||
function removeErrorSpanAfter(referenceNode) {
|
||||
}
|
||||
|
||||
/* -------Required fields------- */
|
||||
function require_fields(obj) {
|
||||
switch ($(obj).attr('id')) {
|
||||
|
|
@ -333,7 +337,7 @@ function validate_form(form) {
|
|||
var activity_mins = parseTimeToMins(activity_finish.value) - parseTimeToMins(activity_start.value);
|
||||
|
||||
if ((lunch_mins + coffee_mins) >= activity_mins) {
|
||||
insertSpanAfter(button, "Length of breaks >= Length of activity");
|
||||
insertErrorSpanAfter(button, "Length of breaks >= Length of activity");
|
||||
submit = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -347,7 +351,7 @@ function validateValue(obj) {
|
|||
|
||||
if (!isNonZeroOrEmpty($(obj).val())) {
|
||||
$(obj).addClass("red_border");
|
||||
insertSpanAfter(obj, "Value must be > 0");
|
||||
insertErrorSpanAfter(obj, "Value must be > 0");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
@ -366,7 +370,7 @@ function validateDate(obj) {
|
|||
|
||||
if (!isValidDateOrEmpty($(obj).val())) {
|
||||
$(obj).addClass("red_border");
|
||||
insertSpanAfter(obj, "Incorrect date format");
|
||||
insertErrorSpanAfter(obj, "Incorrect date format");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
@ -392,54 +396,49 @@ function validateFinishTime(obj) {
|
|||
|
||||
if ($(finishObj).hasClass("finish_time_error")) {
|
||||
$(finishObj).removeClass("red_border finish_time_error");
|
||||
if (!$(finishObj).hasClass("lunch_break_error")) {
|
||||
$(finishObj).next('span').remove();
|
||||
}
|
||||
$(finishObj).next('span').remove();
|
||||
}
|
||||
|
||||
//Check if finish time error (takes precedence over lunch break error)
|
||||
var startTime = parseValToNumber(startObj.value);
|
||||
var finishTime = parseValToNumber(finishObj.value);
|
||||
//Check if finish time error (takes presedence over lunch break error)
|
||||
if (startTime > finishTime) {
|
||||
if (startTime >= finishTime) {
|
||||
$(finishObj).addClass("red_border finish_time_error");
|
||||
$(finishObj).next('span').remove();
|
||||
insertSpanAfter(finishObj, "Finish time must be after start");
|
||||
insertErrorSpanAfter(finishObj, "Finish time must be after start");
|
||||
return false;
|
||||
}
|
||||
//If no finish time error -> Display any lunch break error
|
||||
else {
|
||||
$("input[required].lunch").each(function() {validateLunchBreak(this)});
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function validateLunchBreak(obj) {
|
||||
function validateLunchBreak(lunchGroup) {
|
||||
var lunchStartObj = $(".start_time[data-time-group='"+lunchGroup+"']")[0];
|
||||
var lunchFinishObj = $(".finish_time[data-time-group='"+lunchGroup+"']")[0];
|
||||
|
||||
//Skip if finish time error present (it takes precedence over lunch break error)
|
||||
if ($(lunchStartObj).hasClass("finish_time_error") || $(lunchFinishObj).hasClass("finish_time_error"))
|
||||
return true;
|
||||
|
||||
$(lunchFinishObj).next('span').remove();
|
||||
var valid = validateLunchTime(lunchStartObj) & validateLunchTime(lunchFinishObj);
|
||||
if (!valid) {
|
||||
insertErrorSpanAfter(lunchFinishObj, "Lunch break must be within activity times");
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
//Check if exposed/infected lunch time within exposed/infected presence times
|
||||
function validateLunchTime(obj) {
|
||||
|
||||
var activityGroup = $(obj).data('lunch-for');
|
||||
var activityStart = parseValToNumber($(".start_time[data-time-group='"+activityGroup+"']")[0].value);
|
||||
var activityFinish = parseValToNumber($(".finish_time[data-time-group='"+activityGroup+"']")[0].value);
|
||||
|
||||
var groupID = $(obj).data('time-group');
|
||||
var startObj = $(".start_time[data-time-group='"+groupID+"']")[0];
|
||||
var finishObj = $(".finish_time[data-time-group='"+groupID+"']")[0];
|
||||
var time = parseValToNumber(obj.value);
|
||||
|
||||
var otherObj = startObj;
|
||||
if ($(obj).hasClass("start_time")) {
|
||||
otherObj = finishObj;
|
||||
}
|
||||
|
||||
$(obj).removeClass("red_border lunch_break_error");
|
||||
if (!$(otherObj).hasClass("red_border") && !$(finishObj).hasClass("finish_time_error")) {
|
||||
$(finishObj).next('span').remove();
|
||||
}
|
||||
|
||||
//Check if exposed/infected lunch times within exposed/infected presence times
|
||||
var activityID = $(obj).data('lunch-for');
|
||||
var activityStart = parseValToNumber($(".start_time[data-time-group='"+activityID+"']")[0].value);
|
||||
var activityFinish = parseValToNumber($(".finish_time[data-time-group='"+activityID+"']")[0].value);
|
||||
|
||||
if ((time < activityStart) || (time > activityFinish)) {
|
||||
$(obj).addClass("red_border lunch_break_error");
|
||||
if (!$(otherObj).hasClass("red_border") && !$(finishObj).hasClass("finish_time_error")) {
|
||||
insertSpanAfter(finishObj, "Lunch break must be within activity times");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -493,15 +492,9 @@ $(document).ready(function () {
|
|||
$(".start_time").change(function() {validateFinishTime(this)});
|
||||
|
||||
//Validate lunch times
|
||||
$("[data-lunch-for]").each(function() {validateLunchBreak(this)});
|
||||
$("[data-lunch-for]").change(function() {validateLunchBreak(this)});
|
||||
$("[data-lunch-break]").change(function() {
|
||||
var lunchGroup = $(this).data('lunch-break');
|
||||
var lunchStart = $(".start_time[data-time-group='"+lunchGroup+"']")[0];
|
||||
var lunchFinish = $(".finish_time[data-time-group='"+lunchGroup+"']")[0];
|
||||
validateLunchBreak(lunchStart)
|
||||
validateLunchBreak(lunchFinish)
|
||||
});
|
||||
$(".start_time[data-lunch-for]").each(function() {validateLunchBreak($(this).data('time-group'))});
|
||||
$("[data-lunch-for]").change(function() {validateLunchBreak($(this).data('time-group'))});
|
||||
$("[data-lunch-break]").change(function() {validateLunchBreak($(this).data('lunch-break'))});
|
||||
|
||||
var radioValue = $("input[name='event_type']:checked");
|
||||
if (radioValue.val()) {
|
||||
|
|
|
|||
|
|
@ -137,8 +137,8 @@
|
|||
Start: <input type="time" id="activity_start" class="start_time" data-time-group="activity" data-lunch-break="lunch_activity" name="activity_start" value="09:00" required>
|
||||
Finish: <input type="time" id="activity_finish" class="finish_time" data-time-group="activity" data-lunch-break="lunch_activity" name="activity_finish" value="18:00" required><br>
|
||||
Infected person(s) presence: <br>
|
||||
Start: <input type="time" id="infected_start" class="start_time" data-time-group="infected" name="infected_start" value="09:00"required>
|
||||
Finish: <input type="time" id="infected_finish" class="finish_time" data-time-group="infected" name="infected_finish" value="18:00" required><br>
|
||||
Start: <input type="time" id="infected_start" class="start_time" data-time-group="infected" name="infected_start" value="09:00" required>
|
||||
Finish: <input type="time" id="infected_finish" class="finish_time" data-time-group="infected" name="infected_finish" value="18:00" required><br>
|
||||
<hr width="80%">
|
||||
|
||||
When is the event?
|
||||
|
|
|
|||
Loading…
Reference in a new issue