New updates

This commit is contained in:
Joshua Rubingh 2020-05-25 13:24:55 +02:00
parent 8d479aa6b3
commit 4998290549
1 changed files with 85 additions and 19 deletions

View File

@ -347,7 +347,7 @@
</thead>
<tbody>
<tr class="behandeling">
<td><input type="text" class="form-control" id="behandeling_0" name="behandeling_0" required></td>
<td><input type="text" class="form-control" id="behandeling_0" name="behandeling_0" maxlength="20" required></td>
<td>
<select class="form-control" id="behandeling_duration_0" name="behandeling_duration_0" required>
<option value="5">5</option>
@ -568,10 +568,18 @@
function calculateBehandelingen() {
let total = 0, percentage = 0;
let error = false;
let show_message = false;
jQuery('tr.behandeling').each(function(counter,row){
row = jQuery(row);
if (row.find('select[name^="behandeling_method_"]').val() == 'live') {
if (!show_message) {
show_message = ( row.find('input[name^="behandeling_"]').val() !== ''
&& row.find('select[name^="behandeling_specialisme_"]').val() !== ''
&& row.find('input[name^="behandeling_100p_"]').val() !== ''
&& row.find('input[name^="behandeling_30p_"]').val() !== '' )
}
total += (row.find('input[name*="_100p_"]').val() != '' ? row.find('input[name*="_100p_"]').val() * 1 : 0);
percentage += (row.find('input[name*="_30p_"]').val() != '' ? row.find('input[name*="_30p_"]').val() * 1 : 0);
}
@ -594,7 +602,12 @@
calc_message = 'Dit klopt precies';
class_message = 'alert-success';
}
jQuery('div.behandeling_calc_remarks').removeClass('alert-danger alert-warning alert-success').addClass(class_message).text(calc_message);
jQuery('div.behandeling_calc_remarks').removeClass('alert-danger alert-warning alert-success').html('');
if (show_message) {
jQuery('div.behandeling_calc_remarks').addClass(class_message).text(calc_message);
}
validate_behandeling_hours();
@ -681,12 +694,13 @@
let specialisme = element.find('input[name^="specialisatie_"]').val();
behandelingen[specialisme] = {
name : element.find('input[name^="specialisatie_"]').val(),
artsen : element.find('input[name^="specialisatie_aantal_artsen_"]').val() * 1,
max_time : 0,
used_time : 0
name : element.find('input[name^="specialisatie_"]').val(),
artsen : element.find('input[name^="specialisatie_aantal_artsen_"]').val() * 1,
max_time : 0,
used_time : 0
};
// Hole working day, first time row
let time_start_value = element.find('select[name^="werkdag_start_afdeling_"]').val() * 1;
let time_end_value = element.find('select[name^="werkdag_end_afdeling_"]').val() * 1;
@ -704,11 +718,10 @@
time_end.setSeconds(0);
time_end.setMilliseconds(0);
//console.log(time_start,time_end);
behandelingen[specialisme]['max_time'] = ((time_end - time_start) / (1000 * 60));
}
// Morning break. Second row
time_start_value = element.find('select[name^="ochtend_pauze_start_afdeling_"]').val() * 1;
time_end_value = element.find('select[name^="ochtend_pauze_end_afdeling_"]').val() * 1;
@ -726,8 +739,6 @@
time_end.setSeconds(0);
time_end.setMilliseconds(0);
//console.log(time_start,time_end);
behandelingen[specialisme]['max_time'] -= ((time_end - time_start) / (1000 * 60));
}
@ -796,13 +807,19 @@
message.html('')
jQuery.each(behandelingen,function(specialisme,obj){
if ('' == specialisme) {
return;
}
if ((obj.artsen * obj.max_time) - obj.used_time < 0) {
error = true;
message.append(jQuery('<div>').addClass('alert-danger').html('<strong>' + specialisme + ' </strong>: Te veel behandelingen voor het aantal arsten en werktijd. ' + moment.duration(obj.used_time - (obj.artsen * obj.max_time),'minutes').humanize() + ' teveel.'));
duration_to_much = (obj.used_time - (obj.artsen * obj.max_time)) * 60 * 1000;
duration_to_much = humanizeDuration(duration_to_much, {language: moment.locale(), delimiter: ' {% trans "and" %} ', units: ['h','m']});
message.append(jQuery('<div>').addClass('alert-danger').html('<strong>' + specialisme + ' </strong>: Te veel behandelingen voor het aantal artsen en werktijd. ' + duration_to_much + ' te veel.'));
} else if ((obj.artsen * obj.max_time) - obj.used_time == 0) {
message.append(jQuery('<div>').addClass('alert-success').html('<strong>' + specialisme + ' </strong>: Perfect! Alle tijd is ingedeeld.'));
} else {
message.append(jQuery('<div>').addClass('alert-warning').html('<strong>' + specialisme + ' </strong>: Uw heeft nog ' + moment.duration((obj.artsen * obj.max_time) - obj.used_time,'minutes').humanize() + ' tijd over voor meer afspraken.'));
// do not show this message here, as it is hard to predict the maximum available time
// message.append(jQuery('<div>').addClass('alert-warning').html('<strong>' + specialisme + ' </strong>: Uw heeft nog ' + moment.duration((obj.artsen * obj.max_time) - obj.used_time,'minutes').humanize() + ' tijd over voor meer afspraken.'));
}
});
@ -851,18 +868,35 @@
});
morning_break_end.find('option').each(function(index,element){
if ('' !== element.value && element.value > 0) {
if ('' !== element.value && element.value >= 0) {
// Only allow options that are between the day start and day end.
// Or when morning_break_start is selected and valid, add period time for end time selections
// When start time is selected, the option 'no break' is not valid (value 0)
let time = ('' != morning_break_start.val() ? morning_break_start.val() : day_start.val());
let disable = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
if (element.selected && disable) {
let disable = false;
// Selected no-break at morning starting time and select no-break here
if (time == 0 && element.value == 0) {
disable = false;
} else if (time == 0) {
disable = element.value != 0;
} else if (element.value == 0) {
disable = '' != morning_break_start.val();
} else {
disable = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
}
if(element.selected && disable) {
morning_break_end.val('');
}
element.disabled = disable;
}
});
if (morning_break_start.val() == '0') {
morning_break_end.val('0');
}
lunch_start.find('option').each(function(index,element){
if ('' !== element.value && element.value > 0) {
// Only allow options that are between the day start and day end.
@ -877,11 +911,23 @@
});
lunch_end.find('option').each(function(index,element){
if ('' !== element.value && element.value > 0) {
if ('' !== element.value && element.value >= 0) {
// Only allow options that are between the day start and day end.
// Or when lunch_start is selected and valid, add period time for end time selections
// When start time is selected, the option 'no break' is not valid (value 0)
let time = ('' != lunch_start.val() ? lunch_start.val() : day_start.val()) * 1;
let disable = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
let disable = false;
if (time == 0 && element.value == 0) {
disable = false;
} else if (time == 0) {
disable = element.value != 0;
} else if (element.value == 0) {
disable = '' != lunch_start.val();
} else {
disable = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
}
if (element.selected && disable) {
lunch_end.val('');
}
@ -889,6 +935,10 @@
}
});
if (lunch_start.val() == '0') {
lunch_end.val('0');
}
afternoon_break_start.find('option').each(function(index,element){
if ('' !== element.value && element.value > 0) {
@ -904,11 +954,23 @@
});
afternoon_break_end.find('option').each(function(index,element){
if ('' !== element.value && element.value > 0) {
if ('' !== element.value && element.value >= 0) {
// Only allow options that are between the day start and day end.
// Or when morning_break_start is selected and valid, add period time for end time selections
// When start time is selected, the option 'no break' is not valid (value 0)
let time = ('' != afternoon_break_start.val() ? afternoon_break_start.val() : day_start.val());
let disable = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
let disable = false;
if (time == 0 && element.value == 0) {
disable = false;
} else if (time == 0) {
disable = element.value != 0;
} else if (element.value == 0) {
disable = '' != afternoon_break_start.val();
} else {
disable = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
}
if (element.selected && disable) {
afternoon_break_end.val('');
}
@ -916,6 +978,10 @@
}
});
if (afternoon_break_start.val() == '0') {
afternoon_break_end.val('0');
}
if (showerror) {
html.find('small.text-danger').toggle(day_start.val() == '' || day_start.val() == null ||
day_end.val() == '' || day_end.val() == null ||