summaryrefslogtreecommitdiff
path: root/frontend/js/forms.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/js/forms.js')
-rw-r--r--frontend/js/forms.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/frontend/js/forms.js b/frontend/js/forms.js
new file mode 100644
index 00000000..13e42d26
--- /dev/null
+++ b/frontend/js/forms.js
@@ -0,0 +1,94 @@
+/**
+ * Sets all checkboxes to the wanted state
+ *
+ * @param {string} id Id of the element containing all the checkboxes
+ * @param {boolean} checked True if the checkboxes should be checked
+ */
+global.checkAll = (id, checked) => {
+ $('#' + id + ' input[type="checkbox"]').each(function () {
+ this.checked = checked;
+ });
+};
+
+/**
+ * Sets the checkboxes according to the given type
+ *
+ * @param {string} id The elements ID
+ * @param {list} shifts_list A list of numbers
+ */
+global.checkOwnTypes = (id, shiftsList) => {
+ $('#' + id + ' input[type="checkbox"]').each(function () {
+ this.checked = $.inArray(parseInt(this.value), shiftsList) != -1;
+ });
+};
+
+/**
+ * @param {moment} date
+ */
+global.formatDay = (date) => {
+ return date.format('YYYY-MM-DD');
+};
+
+/**
+ * @param {moment} date
+ */
+global.formatTime = (date) => {
+ return date.format('HH:mm');
+};
+
+/**
+ * @param {moment} from
+ * @param {moment} to
+ */
+global.setInput = (from, to) => {
+ var fromDay = $('#start_day'), fromTime = $('#start_time'), toDay = $('#end_day'), toTime = $('#end_time');
+
+ fromDay.val(formatDay(from));
+ fromTime.val(formatTime(from));
+
+ toDay.val(formatDay(to));
+ toTime.val(formatTime(to));
+};
+
+global.setDay = (days) => {
+ days = days || 0;
+
+ var from = moment();
+ from.hours(0).minutes(0).seconds(0);
+
+ from.add(days, 'd');
+
+ var to = from.clone();
+ to.hours(23).minutes(59);
+
+ setInput(from, to);
+};
+
+global.setHours = (hours) => {
+ hours = hours || 1;
+
+ var from = moment();
+ var to = from.clone();
+
+ to.add(hours, 'h');
+ if (to < from) {
+ setInput(to, from);
+ return;
+ }
+
+ setInput(from, to);
+};
+
+$(function () {
+ /**
+ * Disable every submit button after clicking (to prevent double-clicking)
+ */
+ $('form').submit(function (ev) {
+ $('input[type="submit"]').prop('readonly', true).addClass('disabled');
+ return true;
+ });
+
+ $('.dropdown-menu').css('max-height', function () {
+ return ($(window).height() - 50) + 'px';
+ }).css('overflow-y', 'scroll');
+});