-
-
Notifications
You must be signed in to change notification settings - Fork 573
Expand file tree
/
Copy pathdeadline_day_pickers.js
More file actions
74 lines (56 loc) · 2.71 KB
/
deadline_day_pickers.js
File metadata and controls
74 lines (56 loc) · 2.71 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import $ from 'jquery';
$(document).ready(function () {
const container_selector = '.deadline-day-pickers';
const reminder_selector = '.deadline-day-pickers__reminder-day';
const deadline_selector = '.deadline-day-pickers__deadline-day';
const reminder_container_selector = '.deadline-day-pickers__reminder-container';
const deadline_container_selector = '.deadline-day-pickers__deadline-container';
const reminder_text_selector = '.deadline-day-pickers__reminder-day-text';
const deadline_text_selector = '.deadline-day-pickers__deadline-day-text';
const server_validation_selector = '.invalid-feedback';
function refresh_text(container) {
const $container = $(container);
const $reminder = $container.find(reminder_selector);
const $deadline = $container.find(deadline_selector);
const $reminder_text = $container.find(reminder_text_selector);
const $deadline_text = $container.find(deadline_text_selector);
const reminder_day = parseInt($reminder.val());
const deadline_day = parseInt($deadline.val());
const current_day = parseInt($container.data('current-day'));
const current_month = $container.data('current-month');
const next_month = $container.data('next-month');
if (reminder_day) {
$(container).find(reminder_container_selector).find(server_validation_selector).remove();
if (reminder_day === deadline_day) {
$reminder_text.removeClass('text-muted').addClass('text-danger');
$reminder_text.text('Reminder day cannot be the same as deadline day.');
} else {
$reminder_text.removeClass('text-danger').addClass('text-muted');
const next_reminder_month = (current_day >= reminder_day) ? next_month : current_month;
$reminder_text.text(`Your next reminder will be sent on ${reminder_day} ${next_reminder_month}.`);
}
}
if (deadline_day) {
$(container).find(deadline_container_selector).find(server_validation_selector).remove();
const next_deadline_month = (current_day >= deadline_day) ? next_month : current_month;
$deadline_text.text(`Your next deadline will be on ${deadline_day} ${next_deadline_month}`);
}
}
$(container_selector).each(function(_, container) {
refresh_text(container);
})
$(document).on('input', [reminder_selector, deadline_selector], function(evt) {
const target = evt.target;
const $target = $(target);
const $container = $target.closest(container_selector);
const value = parseInt($target.val());
const min = parseInt($container.data('min'));
const max = parseInt($container.data('max'));
if (value < min) {
$target.val(max);
} else if (value > max) {
$target.val(min);
}
refresh_text($container);
})
})