Update formulier

This commit is contained in:
Joshua Rubingh 2020-05-16 21:31:33 +02:00
parent bf79ade408
commit f8b1f7a4ce
1 changed files with 163 additions and 7 deletions

View File

@ -386,11 +386,20 @@
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
</tr>
<tr>
<td colspan="3" class="behandeling_calc_remarks">
<td colspan="3">
<div class="behandeling_calc_remarks"></div>
</td>
</tr>
<tr>
<td colspan="3" class="behandeling_calc_time">
</td>
</tr>
</tbody>
</table>
@ -477,7 +486,11 @@
clone.insertAfter('tr.behandeling:last');
jQuery('input.behandeling_calc').off('change keyup').on('change keyup',function(){
jQuery('tr.behandeling input.behandeling_calc').off('change keyup').on('change keyup',function(){
calculateBehandelingen();
});
jQuery('tr.behandeling select').off('change').on('change',function(){
calculateBehandelingen();
});
@ -513,8 +526,10 @@
jQuery('tr.behandeling').each(function(counter,row){
row = jQuery(row);
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);
if (row.find('select[name^="behandeling_method_"]').val() == 'live') {
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);
}
});
jQuery('tr.behandeling_calc_summary td:nth-child(2)').text(total);
@ -534,7 +549,9 @@
calc_message = 'Dit klopt precies';
class_message = 'alert-success';
}
jQuery('td.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').addClass(class_message).text(calc_message);
validate_behandeling_hours();
return ok;
}
@ -597,6 +614,142 @@
updateBehandelingen();
}
function validate_behandeling_hours() {
let behandelingen = {};
jQuery('div.poliekliniek_specialisatie').each(function(index,element){
element = jQuery(element);
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(),
max_time : 0,
used_time : 0
};
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;
if ('' != time_start_value && '' != time_end_value && time_start_value > 0 && time_end_value > 0) {
let time_start = new Date()
time_start.setHours(Math.floor(time_start_value / 100));
time_start.setMinutes(time_start_value % 100);
time_start.setSeconds(0);
time_start.setMilliseconds(0);
let time_end = new Date()
time_end.setHours(Math.floor(time_end_value / 100));
time_end.setMinutes(time_end_value % 100);
time_end.setSeconds(0);
time_end.setMilliseconds(0);
//console.log(time_start,time_end);
behandelingen[specialisme]['max_time'] = ((time_end - time_start) / (1000 * 60));
}
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;
if ('' != time_start_value && '' != time_end_value && time_start_value > 0 && time_end_value > 0) {
let time_start = new Date()
time_start.setHours(Math.floor(time_start_value / 100));
time_start.setMinutes(time_start_value % 100);
time_start.setSeconds(0);
time_start.setMilliseconds(0);
let time_end = new Date()
time_end.setHours(Math.floor(time_end_value / 100));
time_end.setMinutes(time_end_value % 100);
time_end.setSeconds(0);
time_end.setMilliseconds(0);
//console.log(time_start,time_end);
behandelingen[specialisme]['max_time'] -= ((time_end - time_start) / (1000 * 60));
}
time_start_value = element.find('select[name^="lunch_pauze_start_afdeling_"]').val() * 1;
time_end_value = element.find('select[name^="lunch_pauze_end_afdeling_"]').val() * 1;
if ('' != time_start_value && '' != time_end_value && time_start_value > 0 && time_end_value > 0) {
let time_start = new Date()
time_start.setHours(Math.floor(time_start_value / 100));
time_start.setMinutes(time_start_value % 100);
time_start.setSeconds(0);
time_start.setMilliseconds(0);
let time_end = new Date()
time_end.setHours(Math.floor(time_end_value / 100));
time_end.setMinutes(time_end_value % 100);
time_end.setSeconds(0);
time_end.setMilliseconds(0);
//console.log(time_start,time_end);
behandelingen[specialisme]['max_time'] -= ((time_end - time_start) / (1000 * 60));
}
time_start_value = element.find('select[name^="middag_pauze_start_afdeling_"]').val() * 1;
time_end_value = element.find('select[name^="middag_pauze_end_afdeling_"]').val() * 1;
if ('' != time_start_value && '' != time_end_value && time_start_value > 0 && time_end_value > 0) {
let time_start = new Date()
time_start.setHours(Math.floor(time_start_value / 100));
time_start.setMinutes(time_start_value % 100);
time_start.setSeconds(0);
time_start.setMilliseconds(0);
let time_end = new Date()
time_end.setHours(Math.floor(time_end_value / 100));
time_end.setMinutes(time_end_value % 100);
time_end.setSeconds(0);
time_end.setMilliseconds(0);
//console.log(time_start,time_end);
behandelingen[specialisme]['max_time'] -= ((time_end - time_start) / (1000 * 60));
}
});
jQuery('tr.behandeling').each(function(index,element){
element = jQuery(element);
if (element.find('select[name^="behandeling_method_"]').val() == 'live') {
let specialisme = element.find('select[name^="behandeling_specialisme_"]').val();
let duration = element.find('select[name^="behandeling_duration_"]').val();
let amount100 = element.find('input[name^="behandeling_100p_"]').val();
if (specialisme && duration && amount100) {
behandelingen[specialisme]['used_time'] += duration * amount100;
}
}
});
let error = false;
let message = jQuery('td.behandeling_calc_time');
message.html('')
jQuery.each(behandelingen,function(specialisme,obj){
if (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. ' + (obj.used_time - obj.max_time) + ' Minuten teveel.'));
} else if (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 ' + (obj.max_time - obj.used_time) + ' minuten tijd over voor meer afspraken.'));
}
});
return error;
}
function validate_working_hours() {
jQuery('div.werktijden').each(function(index,element){
jQuery(element).find('select').removeClass('is-invalid');
@ -722,11 +875,12 @@
jQuery('div.poliekliniek_specialisatie input').off('change').on('change',function(){
updateSpecialisatieValues();
});
{% comment %}
jQuery('a.add_behandelkamer').on('click',function(event){
event.preventDefault();
addBehandelkamer();
});
{% endcomment %}
jQuery('a.add_behandeling').on('click',function(event){
event.preventDefault();
@ -735,6 +889,7 @@
jQuery('div.werktijden select').off('change').on('change',function(event){
check_working_hours(this);
calculateBehandelingen();
});
jQuery('table#tabel_behandelingen thead tr th').each(function(index,element){
@ -749,7 +904,8 @@
jQuery('form#new_schedule_form').on('submit',function(event){
if (validate_working_hours() &&
calculateBehandelingen()) {
calculateBehandelingen() &&
validate_behandeling_hours()) {
let formdata = new FormData(this);
formdata.delete('csrfmiddlewaretoken');