From 0c5f9fb17a882ad9fc4c82bc00d2e8206ae4c47b Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 13 Oct 2021 09:38:20 +0200
Subject: [PATCH] availability is in sync with worker/length/date change

---
 CHANGELOG                                 |  1 +
 smash/web/static/js/appointment.js        |  2 +-
 smash/web/templates/appointments/add.html | 23 ++++-------------------
 3 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 15a17d5c..f7e8b753 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -39,6 +39,7 @@ smasch (1.1.0~alpha.0-1) unstable; urgency=low
     subjects that existed in db (#415)
   * bug fix: colours of workers availability is changed on date/length change
     (#463)
+  * bug fix: availability is in sync with dat/length/worker changes (#463)
 
 
  -- Piotr Gawron <piotr.gawron@uni.lu>  Thu, 25 Feb 2021 17:00:00 +0200
diff --git a/smash/web/static/js/appointment.js b/smash/web/static/js/appointment.js
index ca03bb78..6159ad12 100644
--- a/smash/web/static/js/appointment.js
+++ b/smash/web/static/js/appointment.js
@@ -162,7 +162,7 @@ function appointment_date_change_behaviour(datetime_picker, worker_select, minut
 
     function timeChange() {
         if ($(datetime_picker).val() !== "") {
-            var datetime_start = Date.parse($(datetime_picker).val());
+            var datetime_start = moment($(datetime_picker).val()).toDate();
             var datetime_end = datetime_start + 60 * 1000 * parseInt(minutes_input.val());
             if (isNaN(datetime_end)) {
                 datetime_end = datetime_start;
diff --git a/smash/web/templates/appointments/add.html b/smash/web/templates/appointments/add.html
index 5755458a..941b1f25 100644
--- a/smash/web/templates/appointments/add.html
+++ b/smash/web/templates/appointments/add.html
@@ -220,37 +220,21 @@
             var selected = $('select.search_worker_availability').find(':selected');
             var worker_id = selected.val();
             if (worker_id === '') {
+                $('.availability_description').remove();
                 return;
             }
 
             var start_date = $('input[name="datetime_when"]').val();
             start_date = moment(start_date);
             if (isNaN(start_date)) {
+                $('.availability_description').remove();
                 return;
             }
-            var ordinalDay = start_date.format('Do');
             var longStartDate = start_date.format('MMM Do HH:mm');
 
-            //GET FULL DAY AVAILABILITY
-            $.ajax({
-                data: {
-                    // our hypothetical feed requires UNIX timestamps
-                    start_date: start_date.format('YYYY-MM-DD-HH-mm'),
-                    worker_id: worker_id
-                },
-                url: "{% url 'web.api.get_worker_availability' %}",
-                success: function (doc) {
-                    $('.availability_description').remove();
-                    $('select.search_worker_availability').parent().append(`<p class="availability_description">${ordinalDay} availability: ${doc.availability}%</p>`);
-                },
-                error: function(){
-                    $('.availability_description').remove();
-                }
-            });
-
             var duration = parseInt($('input[name="length"]').val());
             if (isNaN(duration)) {
-                return;
+                duration = 0;
             }
 
             var end_date = start_date.clone().add(duration, 'minutes');
@@ -281,6 +265,7 @@
         }
 
         $('select.search_worker_availability, input[name="datetime_when"], input[name="length"]').on("change", getWorkerAvailability);
+        $('select.search_worker_availability, input[name="datetime_when"], input[name="length"]').on("keyup", getWorkerAvailability);
 
         $("#id_datetime_when").on("change paste keyup", function () {
             var date = $("#id_datetime_when").val();
-- 
GitLab