First version
This commit is contained in:
@ -0,0 +1,37 @@
|
||||
{% extends 'base.html' %} <!-- Add this for inheritance -->
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "Schedules overview list" %}{% endblock %}
|
||||
{% block pagetitle %}{% trans "Schedules overview list" %}{% endblock %}
|
||||
{% block content %}
|
||||
<p>
|
||||
<strong>{% trans "Schedules overview list" %}</strong>
|
||||
<table>
|
||||
<tr>
|
||||
{% comment %} <th>{% trans "Department" %}</th> {% endcomment %}
|
||||
<th>{% trans "Name" %}</th>
|
||||
<th>{% trans "Created" %}</th>
|
||||
<th>{% trans "Updated" %}</th>
|
||||
<th>{% trans "Running" %}</th>
|
||||
<th>{% trans "Report" %}</th>
|
||||
</tr>
|
||||
{% for schedule in object_list %}
|
||||
<tr>
|
||||
{% comment %} <td><span>{{ schedule.name }}</span></td> {% endcomment %}
|
||||
<td>{% comment %}<a href="{% url 'schedule:detail' pk=schedule.id %}">{% endcomment %}{{ schedule.name }}{% comment %}</a>{% endcomment %}</td>
|
||||
<td>{{ schedule.created_at|date:"SHORT_DATETIME_FORMAT" }}</td>
|
||||
<td>{{ schedule.updated_at|date:"SHORT_DATETIME_FORMAT" }}</td>
|
||||
<td>None</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr>
|
||||
<td colspan="6" class="rug-text-center">{% trans "No schedules available" %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<br />
|
||||
<br />
|
||||
{% include "pager.html" %}
|
||||
</p>
|
||||
{% endblock %}
|
@ -0,0 +1,650 @@
|
||||
{% extends 'base.html' %} <!-- Add this for inheritance -->
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "New schedule" %}{% endblock %}
|
||||
{% block pagetitle %}{% trans "New schedule" %}{% endblock %}
|
||||
{% block content %}
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
|
||||
<div class="container">
|
||||
<form method="POST" action="{% url 'schedule:new' %}">
|
||||
{% csrf_token %}
|
||||
{{ form.json }}
|
||||
<h1>Algemene informatie</h1>
|
||||
<p>Als een afdeling meerdere wachtkamers heeft, vul dan dit formulier meerdere keren in; een keer voor elke groep van behandelkamers die een wachtkamer delen.</p>
|
||||
<div class="form-group">
|
||||
<label for="id_name">Naam van de afdeling</label>
|
||||
<input type="text" class="form-control" id="id_name" name="name" aria-describedby="afdelingnaamHelp" required>
|
||||
<small id="afdelingnaamHelp" class="form-text text-muted">Geef de naam op van de afdeling</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="id_email">Emailadres voor de resultaten</label>
|
||||
<input type="email" class="form-control" id="id_email" name="email" aria-describedby="emailadresHelp" required value={{user.email}}>
|
||||
<small id="emailadresHelp" class="form-text text-muted">Geef het emailadres op om de uitkomsten te ontvangen</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="patienten">Aantal patiënten dat kan wachten in wachtkamer</label>
|
||||
<input type="number" class="form-control" id="patienten" name="patienten" min="1" max="100" aria-describedby="patientenHelp" required>
|
||||
<small id="patientenHelp" class="form-text text-muted">Met bewaren 1,5m afstand tussen lopende en zittende patiënten!</small>
|
||||
</div>
|
||||
<br />
|
||||
<hr>
|
||||
<br />
|
||||
<h1>Specialisaties binnen de afdeling</h1>
|
||||
<div class="poliekliniek_specialisatie">
|
||||
<div class="form-group">
|
||||
<label for="specialisatie_1" class="h4">Specialisatie 1</label>
|
||||
<input type="text" class="form-control" style="font-size: 1.5em" id="specialisatie_1" name="specialisatie_1" aria-describedby="specialisatie_1Help" required>
|
||||
<small id="specialisatie_1Help" class="form-text text-muted float-right d-none"><a href="#">Verwijder</a></small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="specialisatie_afkorting_1">Specialisatie afkorting</label>
|
||||
<input type="text" class="form-control" maxlength="5" id="specialisatie_afkorting_1" name="specialisatie_afkorting_1" aria-describedby="specialisatie_afkorting_1Help" required>
|
||||
<small id="specialisatie_1Help" class="form-text text-muted">Geef een afkorting op voor deze specialisatie. Deze gebruiken wij in de figuren van de rapportage.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="specialisatie_aantal_artsen_1">Aantal artsen</label>
|
||||
<input type="number" class="form-control" min="0" max="100" id="specialisatie_aantal_artsen_1" name="specialisatie_aantal_artsen_1" aria-describedby="specialisatie_aantal_artsen_1Help" required>
|
||||
<small id="specialisatie_aantal_artsen_1Help" class="form-text text-muted">Maximaal aantal artsen dat op enig moment tegelijk aan het werk zou kunnen zijn.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="specialisatie_aantal_kamers_1">Aantal behandelkamers</label>
|
||||
<input type="number" class="form-control" min="0" max="100" id="specialisatie_aantal_kamers_1" name="specialisatie_aantal_kamers_1" aria-describedby="specialisatie_aantal_kamers_1Help" required>
|
||||
<small id="specialisatie_aantal_kamers_1Help" class="form-text text-muted">Aantal behandelkamers dat beschikbaar is per specialisatie</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="specialisatie_aantal_behandelingen_1">Aantal verschillende soorten behandelingen</label>
|
||||
<input type="number" class="form-control" min="0" max="100" id="specialisatie_aantal_behandelingen_1" name="specialisatie_aantal_behandelingen_1" aria-describedby="specialisatie_aantal_behandelingen_1Help" required>
|
||||
<small id="specialisatie_aantal_behandelingen_1Help" class="form-text text-muted"></small>
|
||||
</div>
|
||||
<div class="form-group werktijden">
|
||||
<label>Werktijden <small class="text-danger" style="display:none"> Nog niet volledig</small></label>
|
||||
|
||||
<div class="container ml-4">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">de hele werkdag</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="werkdag_start_afdeling_1" name="werkdag_start_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0600">06:00</option>
|
||||
<option value="0615">06:15</option>
|
||||
<option value="0630">06:30</option>
|
||||
<option value="0645">06:45</option>
|
||||
<option value="0700">07:00</option>
|
||||
<option value="0715">07:15</option>
|
||||
<option value="0730">07:30</option>
|
||||
<option value="0745">07:45</option>
|
||||
<option value="0800">08:00</option>
|
||||
<option value="0815">08:15</option>
|
||||
<option value="0830">08:30</option>
|
||||
<option value="0845">08:45</option>
|
||||
<option value="0900">09:00</option>
|
||||
<option value="0915">09:15</option>
|
||||
<option value="0930">09:30</option>
|
||||
<option value="0945">09:45</option>
|
||||
<option value="1000">10:00</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="werkdag_end_afdeling_1" name="werkdag_end_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="1200">12:00</option>
|
||||
<option value="1215">12:15</option>
|
||||
<option value="1230">12:30</option>
|
||||
<option value="1245">12:45</option>
|
||||
<option value="1300">13:00</option>
|
||||
<option value="1315">13:15</option>
|
||||
<option value="1330">13:30</option>
|
||||
<option value="1345">13:45</option>
|
||||
<option value="1400">14:00</option>
|
||||
<option value="1415">14:15</option>
|
||||
<option value="1430">14:30</option>
|
||||
<option value="1445">14:45</option>
|
||||
<option value="1500">15:00</option>
|
||||
<option value="1515">15:15</option>
|
||||
<option value="1530">15:30</option>
|
||||
<option value="1545">15:45</option>
|
||||
<option value="1600">16:00</option>
|
||||
<option value="1615">16:15</option>
|
||||
<option value="1630">16:30</option>
|
||||
<option value="1645">16:45</option>
|
||||
<option value="1700">17:00</option>
|
||||
<option value="1715">17:15</option>
|
||||
<option value="1720">17:30</option>
|
||||
<option value="1745">17:45</option>
|
||||
<option value="1800">18:00</option>
|
||||
<option value="1815">18:15</option>
|
||||
<option value="1830">18:30</option>
|
||||
<option value="1845">18:45</option>
|
||||
<option value="1900">19:00</option>
|
||||
<option value="1915">19:15</option>
|
||||
<option value="1930">19:30</option>
|
||||
<option value="1945">19:45</option>
|
||||
<option value="2000">20:00</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">ochtendpauze</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="ochtend_pauze_start_afdeling_1" name="ochtend_pauze_start_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0">Geen pauze</option>
|
||||
<option value="0900">09:00</option>
|
||||
<option value="0915">09:15</option>
|
||||
<option value="0930">09:30</option>
|
||||
<option value="0945">09:45</option>
|
||||
<option value="1000">10:00</option>
|
||||
<option value="1015">10:15</option>
|
||||
<option value="1030">10:30</option>
|
||||
<option value="1045">10:45</option>
|
||||
<option value="1100">11:00</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="ochtend_pauze_end_afdeling_1" name="ochtend_pauze_end_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0">Geen pauze</option>
|
||||
<option value="0915">09:15</option>
|
||||
<option value="0930">09:30</option>
|
||||
<option value="0945">09:45</option>
|
||||
<option value="1000">10:00</option>
|
||||
<option value="1015">10:15</option>
|
||||
<option value="1030">10:30</option>
|
||||
<option value="1045">10:45</option>
|
||||
<option value="1100">11:00</option>
|
||||
<option value="1115">11:15</option>
|
||||
<option value="1130">11:30</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">lunchpauze</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="lunch_pauze_start_afdeling_1" name="lunch_pauze_start_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0">Geen pauze</option>
|
||||
<option value="1130">11:30</option>
|
||||
<option value="1145">11:45</option>
|
||||
<option value="1200">12:00</option>
|
||||
<option value="1215">12:15</option>
|
||||
<option value="1230">12:30</option>
|
||||
<option value="1245">12:45</option>
|
||||
<option value="1300">13:00</option>
|
||||
<option value="1315">13:15</option>
|
||||
<option value="1330">13:30</option>
|
||||
<option value="1345">13:45</option>
|
||||
<option value="1400">14:00</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="lunch_pauze_end_afdeling_1" name="lunch_pauze_end_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0">Geen pauze</option>
|
||||
<option value="1200">12:00</option>
|
||||
<option value="1215">12:15</option>
|
||||
<option value="1230">12:30</option>
|
||||
<option value="1245">12:45</option>
|
||||
<option value="1300">13:00</option>
|
||||
<option value="1315">13:15</option>
|
||||
<option value="1330">13:30</option>
|
||||
<option value="1345">13:45</option>
|
||||
<option value="1400">14:00</option>
|
||||
<option value="1415">14:15</option>
|
||||
<option value="1430">14:30</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">middagpauze</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="middag_pauze_start_afdeling_1" name="middag_pauze_start_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0">Geen pauze</option>
|
||||
<option value="1430">14:30</option>
|
||||
<option value="1445">14:45</option>
|
||||
<option value="1500">15:00</option>
|
||||
<option value="1515">15:15</option>
|
||||
<option value="1530">15:30</option>
|
||||
<option value="1545">15:45</option>
|
||||
<option value="1600">16:00</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<select class="form-control" id="middag_pauze_end_afdeling_1" name="middag_pauze_end_afdeling_1" required>
|
||||
<option value="">Maak een keuze</option>
|
||||
<option value="0">Geen pauze</option>
|
||||
<option value="1445">14:45</option>
|
||||
<option value="1500">15:00</option>
|
||||
<option value="1515">15:15</option>
|
||||
<option value="1530">15:30</option>
|
||||
<option value="1545">15:45</option>
|
||||
<option value="1600">16:00</option>
|
||||
<option value="1615">16:15</option>
|
||||
<option value="1630">16:30</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center mt-4 font-weight-bold"><a href="#" class="add_specialisatie">klik hier om een extra specialisatie toe te voegen</a></div>
|
||||
<br />
|
||||
<hr>
|
||||
<br />
|
||||
|
||||
<h1>Behandelingen</h1>
|
||||
<p>In het model worden slots van 5 minuten gebruikt voor het bepalen van starttijden. etc. Afspraken starten daarmee om bijv. 10.00, 10.05, 10.10.<br />Afspraakduur wordt daarmee ook in veelvouden van 5 minuten gevraagd.</p>
|
||||
<p>Zowel afspraken waar de patiënt fysiek in het ziekenhuis is, als wel telefoongesprekken worden hier gevraagd. Beide type afspraken kunnen in het raster worden gepland.</p>
|
||||
<p>"Normaal" betekent: zoals het was voor COVID-19<br />30% betekent: als je maar 30% van de patiënten kunt binnenkrijgen, hoeveel afspraken van elk type zou je dan willen inplannen?</p>
|
||||
<div class="container">
|
||||
<div class="row mb-2">
|
||||
<div class="col"><strong>Naam behandeling</strong></div>
|
||||
<div class="col"><strong>Duur (in minuten)</strong></div>
|
||||
<div class="col"><strong>Specialisatie</strong></div>
|
||||
<div class="col"><strong>Methode</strong></div>
|
||||
<div class="col"><strong>Normaal aantal</strong></div>
|
||||
<div class="col"><strong>Gewenst als op 30%</strong></div>
|
||||
</div>
|
||||
|
||||
<div class="row behandeling">
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="behandeling_1" name="behandeling_1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="behandeling_durartion_1" name="behandeling_durartion_1" required>
|
||||
<option value="5">5</option>
|
||||
<option value="10">10</option>
|
||||
<option value="15">15</option>
|
||||
<option value="20">20</option>
|
||||
<option value="25">25</option>
|
||||
<option value="30">30</option>
|
||||
<option value="35">35</option>
|
||||
<option value="40">40</option>
|
||||
<option value="45">45</option>
|
||||
<option value="50">50</option>
|
||||
<option value="55">55</option>
|
||||
<option value="60">60</option>
|
||||
<option value="65">65</option>
|
||||
<option value="70">70</option>
|
||||
<option value="75">75</option>
|
||||
<option value="80">80</option>
|
||||
<option value="85">85</option>
|
||||
<option value="90">90</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<select class="form-control specialismes" id="behandeling_specialisme_1" name="behandeling_specialisme_1" required></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<select class="form-control" id="behandeling_method_1" name="behandeling_method_1" required>
|
||||
<option value="live">in persoon</option>
|
||||
<option value="phone">telefonisch</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<input type="number" class="form-control behandeling_calc" id="behandeling_100p_1" name="behandeling_100p_1" min="0" max="100" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="form-group">
|
||||
<input type="number" class="form-control behandeling_calc" id="behandeling_30p_1" name="behandeling_30p_1" min="0" max="100" required>
|
||||
<small class="form-text text-muted float-right d-none"><a href="#">Verwijder</a></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center mt-4 font-weight-bold"><a href="#" class="add_behandeling">klik hier om een nieuwe behandeling toe te voegen</a></div>
|
||||
|
||||
<div class="row behandeling_calc_summary">
|
||||
<div class="col-8"><strong>Totaal aantal afspraken</strong></div>
|
||||
<div class="col-2 text-center">0</div>
|
||||
<div class="col-2 text-center">0</div>
|
||||
</div>
|
||||
<div class="row behandeling_calc_remarks">
|
||||
<div class="col-12"></div>
|
||||
</div>
|
||||
<br />
|
||||
<hr>
|
||||
<br />
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<!--
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.1-muted 6.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
|
||||
-->
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
function addSpecialisatie() {
|
||||
var clone = jQuery('div.poliekliniek_specialisatie:first').clone()
|
||||
clone.find('input').val('');
|
||||
clone.find('small').removeClass('d-none');
|
||||
clone.insertAfter('div.poliekliniek_specialisatie:last');
|
||||
updateSpecialisaties();
|
||||
loadRemoveSpecialisatie();
|
||||
}
|
||||
|
||||
function loadRemoveSpecialisatie() {
|
||||
jQuery('div.poliekliniek_specialisatie small a').off('click').on('click',function(event){
|
||||
event.preventDefault();
|
||||
jQuery(this).parentsUntil('.poliekliniek_specialisatie').parent().remove();
|
||||
updateSpecialisaties();
|
||||
updateSpecialisatieValues();
|
||||
});
|
||||
}
|
||||
|
||||
function updateSpecialisaties() {
|
||||
jQuery('div.poliekliniek_specialisatie').each(function(counter,element){
|
||||
if (counter > 0) {
|
||||
element = jQuery(element);
|
||||
var nr = counter + 1;
|
||||
element.find('label').first().text('Specialisatie ' + nr);
|
||||
element.find('select,input').each(function(index,selectitem){
|
||||
selectitem = jQuery(selectitem);
|
||||
selectitem.prop('name',selectitem.prop('name').replace(/_\d+$/,'_' + nr));
|
||||
selectitem.prop('id',selectitem.prop('id').replace(/_\d+$/,'_' + nr));
|
||||
|
||||
if (selectitem.attr('aria-describedby')) {
|
||||
selectitem.attr('aria-describedby',selectitem.attr('aria-describedby').replace(/_\d+Help$/,'_' + nr + 'Help'));
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('div.poliekliniek_specialisatie input').off('change').on('change',function(){
|
||||
updateSpecialisatieValues();
|
||||
});
|
||||
}
|
||||
|
||||
function updateSpecialisatieValues() {
|
||||
var specialismes = [];
|
||||
jQuery('div.poliekliniek_specialisatie').each(function(){
|
||||
specialismes.push(jQuery('input:first',this).val());
|
||||
});
|
||||
|
||||
jQuery('select.specialismes').each(function(counter,element){
|
||||
element = jQuery(element);
|
||||
let selected_index = element[0].selectedIndex;
|
||||
|
||||
element.find('option').remove();
|
||||
jQuery.each(specialismes,function(index,item) {
|
||||
element.append(jQuery('<option>').val(item).text(item));
|
||||
});
|
||||
|
||||
if (selected_index > -1) {
|
||||
element[0].selectedIndex = selected_index;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addBehandelkamer() {
|
||||
var clone = jQuery('div.row.behandelkamer:first').clone()
|
||||
clone.find('input').val('');
|
||||
clone.find('selected').val('');
|
||||
clone.find('small').removeClass('d-none');
|
||||
|
||||
clone.insertAfter('div.row.behandelkamer:last');
|
||||
|
||||
updateBehandelkamers();
|
||||
loadRemoveBehandelkamer();
|
||||
}
|
||||
|
||||
function loadRemoveBehandelkamer() {
|
||||
jQuery('div.behandelkamer small a').off('click').on('click',function(event){
|
||||
event.preventDefault();
|
||||
jQuery(this).parentsUntil('.behandelkamer').parent().remove();
|
||||
|
||||
updateBehandelkamers();
|
||||
});
|
||||
}
|
||||
|
||||
function updateBehandelkamers() {
|
||||
jQuery('div.behandelkamer').each(function(counter,element){
|
||||
if (counter > 0) {
|
||||
element = jQuery(element);
|
||||
var nr = counter + 1;
|
||||
element.find('input').prop('id','behandelkamer_' + nr);
|
||||
element.find('input').prop('name','behandelkamer_' + nr);
|
||||
|
||||
element.find('select').prop('id','behandelkamer_specialisme_' + nr);
|
||||
element.find('select').prop('name','behandelkamer_specialisme_' + nr);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addBehandeling() {
|
||||
var clone = jQuery('div.row.behandeling:first').clone()
|
||||
|
||||
clone.find('input').val('');
|
||||
clone.find('selected').val('');
|
||||
clone.find('small').removeClass('d-none');
|
||||
|
||||
clone.insertAfter('div.row.behandeling:last');
|
||||
|
||||
jQuery('input.behandeling_calc').off('change keyup').on('change keyup',function(){
|
||||
calculateBehandelingen();
|
||||
});
|
||||
|
||||
updateBehandelingen();
|
||||
loadRemoveBehandeling();
|
||||
}
|
||||
|
||||
function loadRemoveBehandeling() {
|
||||
jQuery('div.behandeling small a').off('click').on('click',function(event){
|
||||
event.preventDefault();
|
||||
jQuery(this).parentsUntil('.behandeling').parent().remove();
|
||||
|
||||
updateBehandelingen();
|
||||
});
|
||||
}
|
||||
|
||||
function updateBehandelingen() {
|
||||
jQuery('div.behandeling').each(function(counter,element){
|
||||
if (counter > 0) {
|
||||
element = jQuery(element);
|
||||
var nr = counter + 1;
|
||||
|
||||
element.find('select,input').each(function(index,selectitem){
|
||||
selectitem = jQuery(selectitem);
|
||||
selectitem.prop('name',selectitem.prop('name').replace(/_\d+$/,'_' + nr));
|
||||
selectitem.prop('id',selectitem.prop('id').replace(/_\d+$/,'_' + nr));
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function calculateBehandelingen() {
|
||||
let total = 0, percentage = 0;
|
||||
let ok = true;
|
||||
|
||||
jQuery('div.row.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);
|
||||
});
|
||||
|
||||
jQuery('div.row.behandeling_calc_summary div:nth-child(2)').text(total);
|
||||
jQuery('div.row.behandeling_calc_summary div:nth-child(3)').text(percentage);
|
||||
|
||||
let calc_message = '';
|
||||
let class_message = '';
|
||||
|
||||
if (percentage > (total * 0.3)) {
|
||||
calc_message = 'U heeft teveel afspraken geselecteerd voor het 30% scenario';
|
||||
class_message = 'alert-danger';
|
||||
ok = false;
|
||||
} else if ((total * 0.3) - percentage >= 1) {
|
||||
calc_message = 'U kunt meer afspraken toevoegen voor het 30% scenario';
|
||||
class_message = 'alert-warning';
|
||||
} else {
|
||||
calc_message = 'Dit klopt precies';
|
||||
class_message = 'alert-success';
|
||||
}
|
||||
jQuery('div.behandeling_calc_remarks div').removeClass('alert-danger alert-warning alert-success').addClass(class_message).text(calc_message);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
function validate_working_hours() {
|
||||
jQuery('div.form-group.werktijden').each(function(index,element){
|
||||
jQuery(element).find('select').removeClass('is-invalid');
|
||||
check_working_hours(element,true);
|
||||
jQuery(element).find('select').filter(function(){ let value = jQuery(this).val(); return !(value != null && value != '') }).addClass('is-invalid');
|
||||
})
|
||||
return jQuery('small.text-danger:visible').length == 0;
|
||||
}
|
||||
|
||||
function check_working_hours(html, showerror) {
|
||||
html = jQuery(html).parentsUntil('.werktijden').parent();
|
||||
html = jQuery(html[0]);
|
||||
|
||||
let day_start = html.find('select[name^="werkdag_start_afdeling_"]');
|
||||
let day_end = html.find('select[name^="werkdag_end_afdeling_"]');
|
||||
|
||||
let morning_break_start = html.find('select[name^="ochtend_pauze_start_afdeling_"]');
|
||||
let morning_break_end = html.find('select[name^="ochtend_pauze_end_afdeling_"]');
|
||||
|
||||
let lunch_start = html.find('select[name^="lunch_pauze_start_afdeling_"]');
|
||||
let lunch_end = html.find('select[name^="lunch_pauze_end_afdeling_"]');
|
||||
|
||||
let afternoon_break_start = html.find('select[name^="middag_pauze_start_afdeling_"]');
|
||||
let afternoon_break_end = html.find('select[name^="middag_pauze_end_afdeling_"]');
|
||||
|
||||
morning_break_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.
|
||||
let time = day_start.val();
|
||||
element.disabled = (time && element.value < day_start.val()) || (day_end.val() && element.value >= day_end.val());
|
||||
}
|
||||
});
|
||||
|
||||
morning_break_end.find('option').each(function(index,element){
|
||||
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
|
||||
let time = ('' != morning_break_start.val() ? morning_break_start.val() : day_start.val());
|
||||
element.disabled = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
|
||||
}
|
||||
});
|
||||
|
||||
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.
|
||||
// Or when morning_break_end is selected and valid, add period time for end time selections
|
||||
let time = ('' != morning_break_end.val() ? morning_break_end.val() : day_start.val());
|
||||
element.disabled = (time && element.value < time) || (day_end.val() && element.value >= day_end.val());
|
||||
}
|
||||
});
|
||||
|
||||
lunch_end.find('option').each(function(index,element){
|
||||
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
|
||||
let time = ('' != lunch_start.val() ? lunch_start.val() : day_start.val()) * 1;
|
||||
element.disabled = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
afternoon_break_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.
|
||||
// Or when lunch_end is selected and valid, add period time for end time selections
|
||||
let time = ('' != lunch_end.val() ? lunch_end.val() : day_start.val());
|
||||
element.disabled = (time && element.value < time) || (day_end.val() && element.value >= day_end.val());
|
||||
}
|
||||
});
|
||||
|
||||
afternoon_break_end.find('option').each(function(index,element){
|
||||
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
|
||||
let time = ('' != afternoon_break_start.val() ? afternoon_break_start.val() : day_start.val());
|
||||
element.disabled = (time && element.value <= time) || (day_end.val() && element.value > day_end.val());
|
||||
}
|
||||
});
|
||||
|
||||
if (showerror) {
|
||||
html.find('small.text-danger').toggle(day_start.val() == '' || day_start.val() == null ||
|
||||
day_end.val() == '' || day_end.val() == null ||
|
||||
morning_break_start.val() == '' || morning_break_start.val() == null ||
|
||||
morning_break_end.val() == '' || morning_break_end.val() == null ||
|
||||
lunch_start.val() == '' || lunch_start.val() == null ||
|
||||
lunch_end.val() == '' || lunch_end.val() == null ||
|
||||
afternoon_break_start.val() == '' || afternoon_break_start.val() == null ||
|
||||
afternoon_break_end.val() == '' || afternoon_break_end.val() == null);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
jQuery(function() {
|
||||
jQuery('a.add_specialisatie').on('click',function(event){
|
||||
event.preventDefault();
|
||||
addSpecialisatie();
|
||||
});
|
||||
|
||||
jQuery('div.poliekliniek_specialisatie input').off('change').on('change',function(){
|
||||
updateSpecialisatieValues();
|
||||
});
|
||||
|
||||
jQuery('a.add_behandelkamer').on('click',function(event){
|
||||
event.preventDefault();
|
||||
addBehandelkamer();
|
||||
});
|
||||
|
||||
jQuery('a.add_behandeling').on('click',function(event){
|
||||
event.preventDefault();
|
||||
addBehandeling();
|
||||
});
|
||||
|
||||
jQuery('div.form-group.werktijden select').off('change').on('change',function(event){
|
||||
check_working_hours(this);
|
||||
});
|
||||
|
||||
jQuery('input.behandeling_calc').off('change keyup').on('change keyup',function(event){
|
||||
calculateBehandelingen();
|
||||
});
|
||||
|
||||
jQuery('form').on('submit',function(event){
|
||||
//event.preventDefault();
|
||||
|
||||
if (validate_working_hours() &&
|
||||
calculateBehandelingen()) {
|
||||
|
||||
let formdata = new FormData(this);
|
||||
formdata.delete('csrfmiddlewaretoken');
|
||||
formdata.delete('json');
|
||||
|
||||
jQuery('input#id_json').val(JSON.stringify(Object.fromEntries(formdata)));
|
||||
|
||||
// alert('Alle velden zijn ok! Formulier wordt nu verder verwerkt.');
|
||||
console.log(event);
|
||||
return true;
|
||||
} else {
|
||||
alert('Er zijn wat problemen met het formulier. Controleer de invoer velden');
|
||||
|
||||
}
|
||||
return true;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
{% endblock %}
|
Reference in New Issue
Block a user