diff options
Diffstat (limited to 'frontend/js/forms.js')
-rw-r--r-- | frontend/js/forms.js | 94 |
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'); +}); |