diff options
Diffstat (limited to 'js/forms.js')
-rw-r--r-- | js/forms.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/js/forms.js b/js/forms.js new file mode 100644 index 00000000..5aa4f25a --- /dev/null +++ b/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 {bool} checked True if the checkboxes should be checked + */ +function 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 + */ +function checkOwnTypes(id, shifts_list) { + $("#" + id + " input[type='checkbox']").each(function () { + this.checked = $.inArray(parseInt(this.value), shifts_list) != -1; + }); +} + +/** + * @param {moment} date + */ +function formatDay(date) { + return date.format("YYYY-MM-DD"); +} + +/** + * @param {moment} date + */ +function formatTime(date) { + return date.format("HH:mm"); +} + +/** + * @param {moment} from + * @param {moment} to + */ +function 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)); +} + +function 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); +} + +function 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"); +}); |