aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts/bootstrap/calendar.js
blob: 82484268a4ed5226ace9dba31638d36630badfba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
STUDIP.ready(function() {
    jQuery(document).on('change', 'form.new-calendar-date-form input[name=begin]', function(event) {
        let begin_value = jQuery(event.target).val();
        let begin = STUDIP.Calendar.parseDateFromString(begin_value);
        if (!begin) {
            return;
        }
        let end_value = jQuery('form.new-calendar-date-form input[name=end]').val();
        let end = STUDIP.Calendar.parseDateFromString(end_value);
        if (end) {
            //Check if the date and time in end_value is past the date in begin_value.
            //If so, set the date or the time or both to a value after begin_value.
            if (end.getTime() <= begin.getTime()) {
                //Get the distance of the time (hours and minutes only) between begin and end:
                let diff = Math.abs(end.getHours() - begin.getHours()) * 3600
                    + Math.abs(end.getMinutes() - begin.getMinutes()) * 60;
                end = begin;
                end.setTime(end.getTime() + diff * 1000);
            }
        } else {
            //Clone begin and add one hour to end:
            end = begin;
            end.setTime(end.getTime() + 3600000);
        }

        //Display the new end:
        let end_string = STUDIP.DateTime.pad(end.getDate()) + '.' + STUDIP.DateTime.pad(end.getMonth() + 1) + '.' + end.getFullYear()
            + ' ' + STUDIP.DateTime.pad(end.getHours()) + ':' + STUDIP.DateTime.pad(end.getMinutes());
        jQuery('form.new-calendar-date-form input[name=end]').val(end_string);
    });
});