diff --git a/smash/web/static/js/appointment.js b/smash/web/static/js/appointment.js index 8d9b5e837e44fe3f0ec9c4cc2c13cc04400d5477..0be1d9e0186ebcf1a17232602ca0e2d1977f60e7 100644 --- a/smash/web/static/js/appointment.js +++ b/smash/web/static/js/appointment.js @@ -17,7 +17,7 @@ function appointment_type_behaviour(checkboxes, outObject, api_call) { if ((checkbox.is(":checked") && checkbox.attr('id') != object_id) || (!checkbox.is(":checked") && checkbox.attr('id') == object_id)) { var appointment_type = appointment_types_data[val]; if (appointment_type.can_be_parallelized) { - result = Math.max(result, appointment_type.default_duration) + result = Math.max(result, appointment_type.default_duration); } } }); @@ -36,7 +36,7 @@ function appointment_type_behaviour(checkboxes, outObject, api_call) { if ((checkbox.is(":checked") && checkbox.attr('id') != object_id) || (!checkbox.is(":checked") && checkbox.attr('id') == object_id)) { var appointment_type = appointment_types_data[val]; if (!appointment_type.can_be_parallelized) { - result += appointment_type.default_duration + result += appointment_type.default_duration; } } }); @@ -66,6 +66,7 @@ function appointment_type_behaviour(checkboxes, outObject, api_call) { } global_time = Math.max(global_parallel_time, global_sequential_time); $(outObject).val(global_time + ""); + $(outObject).trigger("change"); } } @@ -117,7 +118,7 @@ function appointment_date_change_behaviour(datetime_picker, worker_select, minut id = parseInt(id); for (var i = 0; i < availabilities.length; i++) { var availability = availabilities[i]; - if (availability.link_who === id && appointment_id !== availability.appointment_id) { + if (availability.link_who === id && (appointment_id !== availability.appointment_id || appointment_id === undefined)) { var event_start = Date.parse(availability.link_when); var event_end = Date.parse(availability.link_end); if (partialMatch && event_start >= date_start && event_start <= date_end) { @@ -157,30 +158,33 @@ function appointment_date_change_behaviour(datetime_picker, worker_select, minut $(worker_select).addClass(previousClass); }); - $(datetime_picker).on("dp.change", function () { - if ($(this).val() != "") { - var datetime_start = Date.parse($(this).val()); + function timeChange() { + if ($(datetime_picker).val() != "") { + var datetime_start = Date.parse($(datetime_picker).val()); var datetime_end = datetime_start + 60 * 1000 * parseInt(minutes_input.val()); - var date = $(this).val().substr(0, 10); + if (isNaN(datetime_end)) { + datetime_end = datetime_start; + } + var date = $(datetime_picker).val().substr(0, 10); $.get('/api/availabilities/' + date, function (data) { var options = $("option", worker_select); for (var i = 0; i < options.length; i++) { var option = options[i]; if (match_availability(option.value, data.holidays, true, datetime_start, datetime_end)) { - console.log(data.holidays); - console.log("HOLIDAY"); + // console.log(data.holidays); + // console.log("HOLIDAY"); option.className = "worker-option-holiday"; } else if (match_availability(option.value, data.conflicts, true, datetime_start, datetime_end)) { - console.log(data.conflicts); - console.log("CONFLICT"); + // console.log(data.conflicts); + // console.log("CONFLICT"); option.className = "worker-option-conflict"; } else if (match_availability(option.value, data.availabilities, false, datetime_start, datetime_end)) { - console.log(data.availabilities); - console.log("MATCH"); + // console.log(data.availabilities); + // console.log("MATCH"); option.className = "worker-option-match"; } else if (match_availability(option.value, data.availabilities, true, datetime_start, datetime_end)) { - console.log(data.availabilities); - console.log("PARTIAL_MATCH"); + // console.log(data.availabilities); + // console.log("PARTIAL_MATCH"); option.className = "worker-option-partial-match"; } else { option.className = "worker-option-no-match"; @@ -189,7 +193,10 @@ function appointment_date_change_behaviour(datetime_picker, worker_select, minut $(worker_select).trigger("change"); }); } - }); + } + + $(datetime_picker).on("dp.change", timeChange); + $(minutes_input).on("change", timeChange); } diff --git a/smash/web/templates/appointments/add.html b/smash/web/templates/appointments/add.html index e54ad96bc1c3f42933b7703c72498dd6790a0b14..1cfc3c883b50b027f97ed385d08855e67f279f0b 100644 --- a/smash/web/templates/appointments/add.html +++ b/smash/web/templates/appointments/add.html @@ -12,6 +12,7 @@ <link rel="stylesheet" href="{% static 'AdminLTE/plugins/fullcalendar/fullcalendar.print.css' %}" media="print"> {% include "includes/datetimepicker.css.html" %} + <link rel="stylesheet" href="{% static 'css/appointment.css' %}"> {% endblock styles %} {% block ui_active_tab %}'appointments'{% endblock ui_active_tab %} @@ -139,6 +140,7 @@ appointment_type_behaviour($("input[name='appointment_types']"), $("input[name='length']"), "{% url 'web.api.appointment_types' %}"); appointment_flying_team_place_behaviour($("select[name='flying_team']"), $("select[name='location']")); + appointment_date_change_behaviour($("input[name='datetime_when']"), $("select[name='worker_assigned']"), $("input[name='length']")); </script> {% include "includes/datetimepicker.js.html" %}