{"version":3,"file":"js/module_events.creation.a5c3eadb.bundle.js","mappings":"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","sources":["webpack:///indico/modules/events/client/js/creation.js"],"sourcesContent":["// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global handleAjaxError:false */\n\nimport checkRoomAvailabilityURL from 'indico-url:rb.check_room_available';\nimport rbURL from 'indico-url:rb.roombooking';\n\nimport moment from 'moment';\n\nimport {camelizeKeys} from 'indico/utils/case';\n\n/* eslint-disable import/unambiguous */\n(function(global) {\n global.setupEventCreationDialog = function setupEventCreationDialog(options) {\n options = $.extend(\n {\n categoryField: null,\n listingValue: null,\n protectionModeFields: null,\n initialCategory: null,\n checkAvailability: false,\n rbExcludedCategories: null,\n serverDefaultTimezone: null,\n },\n options\n );\n\n const messages = $($.parseHTML($('#event-creation-protection-messages').html()));\n const protectionMessage = $('
', {class: 'form-group', css: {marginTop: '5px'}});\n const listingMessage = $($.parseHTML($('#event-listing-message').html()));\n const eventCreationMessage = $($.parseHTML($('#event-creation-message').html()));\n\n const $form = options.categoryField.closest('form');\n const $submitBtn = $form.find('input[type=\"submit\"]').first();\n const $createBooking = $('#event-creation-create_booking');\n const $availableMessage = $('#room-available');\n const $availablePrebookMessage = $('#room-available-prebook');\n const $conflictBookingMessage = $('#room-conflict-booking');\n const $conflictPrebookingMessage = $('#room-conflict-prebooking');\n const $conflictPrebookingPrebookMessage = $('#room-conflict-prebooking-prebook');\n const $userBookingMessage = $('#room-user-booking');\n const $userPrebookingMessage = $('#room-user-prebooking');\n const $unbookableMessage = $('#room-unbookable');\n const $cannotBookMessage = $('#room-cannot-book');\n const $bookingSwitch = $('#create-booking');\n const $prebookingSwitch = $('#create-prebooking');\n const $bookingSwitchPrebooking = $('#create-booking-over-prebooking');\n const $prebookingSwitchPrebooking = $('#create-prebooking-over-prebooking');\n const $listingField = $('#event-creation-listing-checkbox');\n\n let currentCategory = null;\n let previousRoomId, $currentMessage, startDt, endDt, category, roomData, timezone;\n let multipleOccurrences = false;\n\n protectionMessage.appendTo(options.protectionModeFields.closest('.form-field'));\n eventCreationMessage.insertAfter($('#category-warning-event-creation-category'));\n listingMessage.appendTo($listingField.closest('.form-field'));\n\n $submitBtn.prop('disabled', true);\n $form.on('change input', updateSubmitBtn);\n\n function canCreateInSelectedCategory() {\n return (\n options.canCreateEvents ||\n // unlisted events or no default category\n !currentCategory ||\n // categories other than the initial one cannot be selected unless the user can create events in them\n currentCategory?.id !== options.initialCategory?.id\n );\n }\n\n // like disabled-until-change but also disables submit when the user\n // does not have the rights to create events in the selected category\n function updateSubmitBtn() {\n const untouched = $.param($form.serializeArray(), true) === $form.data('initialData');\n const disabled = untouched || !canCreateInSelectedCategory();\n $submitBtn.prop('disabled', disabled);\n }\n\n function updateProtectionMessage() {\n if (!currentCategory) {\n protectionMessage.html('');\n return;\n }\n let mode = options.protectionModeFields.filter(':checked').val();\n if (mode === 'inheriting') {\n mode = currentCategory.is_protected ? 'inheriting-protected' : 'inheriting-public';\n }\n const elem = messages.filter(`.${mode}-protection-message`);\n elem.find('.js-category-title').text(currentCategory && currentCategory.title);\n protectionMessage.html(elem);\n }\n\n // Display a warning if the user does not have the rights to create events in the selected category\n function updateEventCreationMessage() {\n eventCreationMessage.toggleClass('hidden', canCreateInSelectedCategory());\n }\n\n options.categoryField.on('indico:categorySelected', (evt, cat) => {\n if (!currentCategory) {\n options.protectionModeFields.filter('[value=inheriting]').prop('checked', true);\n }\n if (cat) {\n options.protectionModeFields.prop('disabled', false);\n } else {\n options.protectionModeFields.prop('disabled', true);\n options.protectionModeFields.filter('[value=inheriting]').prop('checked', true);\n }\n currentCategory = cat;\n updateProtectionMessage();\n updateEventCreationMessage();\n updateSubmitBtn();\n });\n\n $listingField.on('change', evt => {\n const value = JSON.parse(evt.target.value);\n if (value) {\n $('#form-group-event-creation-category').show();\n $('#form-group-event-creation-protection_mode').show();\n options.categoryField.val(JSON.stringify(options.initialCategory));\n options.categoryField.trigger('indico:categorySelected', [options.initialCategory]);\n $('#category-title-event-creation-category').text(\n options.initialCategory ? options.initialCategory.title : ''\n );\n } else {\n $('#form-group-event-creation-category').hide();\n $('#form-group-event-creation-protection_mode').hide();\n options.categoryField.trigger('indico:categorySelected', []);\n }\n\n // update listing\n listingMessage.toggleClass('hidden', JSON.parse($listingField.val()));\n });\n\n options.protectionModeFields.on('change', function() {\n updateProtectionMessage();\n });\n\n if (options.initialCategory) {\n options.categoryField.trigger('indico:categorySelected', [options.initialCategory]);\n } else {\n options.protectionModeFields.prop('disabled', true);\n }\n\n function setLectureTimes(occurrence) {\n startDt = moment(`${occurrence['date']} ${occurrence['time']}`, 'YYYY-MM-DD HH:mm');\n endDt = moment(startDt).add(occurrence['duration'], 'minutes');\n }\n\n function initAvailabilityValues() {\n const startDate = $('#event-creation-start_dt-datestorage').val();\n const startTime = $('#event-creation-start_dt-timestorage').val();\n const endDate = $('#event-creation-end_dt-datestorage').val();\n const endTime = $('#event-creation-end_dt-timestorage').val();\n const occurrencesVal = $('#event-creation-occurrences').val();\n const occurrences = occurrencesVal ? JSON.parse(occurrencesVal) : null;\n\n roomData = JSON.parse($('#event-creation-location_data').val());\n timezone = $('#event-creation-timezone').val();\n category = JSON.parse($('#event-creation-category').val());\n\n if (occurrences && occurrences.length === 1) {\n setLectureTimes(occurrences[0]);\n } else {\n startDt = moment(`${startDate} ${startTime}`, 'DD/MM/YYYY HH:mm');\n endDt = moment(`${endDate} ${endTime}`, 'DD/MM/YYYY HH:mm');\n }\n }\n\n function isCategoryExcluded(categoryId) {\n return options.rbExcludedCategories.some(excludedCategory => {\n return parseInt(excludedCategory.id, 10) === categoryId;\n });\n }\n\n function addCalendarLink($message) {\n const params = {\n path: 'calendar',\n date: startDt.format('YYYY-MM-DD'),\n text: roomData['room_name'],\n };\n const url = rbURL(params);\n $message.find('a').prop('href', url);\n }\n\n function hideAvailability(resetCheckbox) {\n if ($currentMessage) {\n if (resetCheckbox) {\n $('#availability-messages')\n .find(\"input[id^='create']\")\n .prop('checked', false);\n $createBooking.val('false');\n }\n $currentMessage.hide();\n }\n }\n\n function updateAvailability(resetCheckbox = false) {\n hideAvailability(resetCheckbox);\n\n if (\n !('room_id' in roomData) ||\n !startDt.isValid() ||\n !endDt.isValid() ||\n startDt.isSameOrAfter(endDt) ||\n isCategoryExcluded(category['id']) ||\n timezone !== options.serverDefaultTimezone ||\n multipleOccurrences\n ) {\n $createBooking.val('false');\n return;\n }\n\n const requestParams = {\n room_id: roomData['room_id'],\n start_dt: startDt.format(moment.HTML5_FMT.DATETIME_LOCAL),\n end_dt: endDt.format(moment.HTML5_FMT.DATETIME_LOCAL),\n };\n\n $.ajax({\n url: checkRoomAvailabilityURL(requestParams),\n method: 'GET',\n dataType: 'json',\n contentType: 'application/json',\n error: handleAjaxError,\n success(data) {\n data = camelizeKeys(data);\n if (data.userBooking) {\n $createBooking.val('false');\n $currentMessage = $userBookingMessage;\n addCalendarLink($currentMessage);\n } else if (data.userPrebooking) {\n $createBooking.val('false');\n $currentMessage = $userPrebookingMessage;\n addCalendarLink($currentMessage);\n } else if (data.conflictBooking) {\n $createBooking.val('false');\n $currentMessage = $conflictBookingMessage;\n addCalendarLink($currentMessage);\n } else if (data.unbookable) {\n $createBooking.val('false');\n $currentMessage = $unbookableMessage;\n addCalendarLink($currentMessage);\n } else if (data.conflictPrebooking) {\n if (data.canBook) {\n $createBooking.val(String($bookingSwitchPrebooking[0].checked));\n $currentMessage = $conflictPrebookingMessage;\n addCalendarLink($currentMessage);\n } else if (data.canPrebook) {\n $createBooking.val(String($prebookingSwitchPrebooking[0].checked));\n $currentMessage = $conflictPrebookingPrebookMessage;\n addCalendarLink($currentMessage);\n } else {\n $createBooking.val('false');\n $currentMessage = $cannotBookMessage;\n }\n } else if (data.canBook) {\n $createBooking.val(String($bookingSwitch[0].checked));\n $currentMessage = $availableMessage;\n } else if (data.canPrebook) {\n $createBooking.val(String($prebookingSwitch[0].checked));\n $currentMessage = $availablePrebookMessage;\n } else {\n $createBooking.val('false');\n $currentMessage = $cannotBookMessage;\n }\n $currentMessage.show();\n },\n });\n }\n\n if (options.checkAvailability) {\n initAvailabilityValues();\n\n $('#event-creation-location_data').on('change', function() {\n roomData = JSON.parse($(this).val());\n if (previousRoomId !== roomData['room_id']) {\n previousRoomId = roomData['room_id'];\n updateAvailability(true);\n }\n });\n\n $('#event-creation-start_dt-datestorage').on('change', function() {\n const startDate = $(this).val();\n const startTime = $('#event-creation-start_dt-timestorage').val();\n const endDate = $('#event-creation-end_dt-datestorage').val();\n const endTime = $('#event-creation-end_dt-timestorage').val();\n startDt = moment(`${startDate} ${startTime}`, 'DD/MM/YYYY HH:mm');\n endDt = moment(`${endDate} ${endTime}`, 'DD/MM/YYYY HH:mm');\n // workaround for automatic end date update if start date is after end date\n if (endDt.isBefore(startDt)) {\n endDt = moment(`${startDate} ${endTime}`, 'DD/MM/YYYY HH:mm');\n }\n updateAvailability();\n });\n\n $('#event-creation-start_dt-timestorage').on('change', function() {\n const startDate = $('#event-creation-start_dt-datestorage').val();\n const startTime = $('#event-creation-start_dt-timestorage').val();\n startDt = moment(`${startDate} ${startTime}`, 'DD/MM/YYYY HH:mm');\n updateAvailability();\n });\n\n $('#event-creation-end_dt-datestorage').on('change', function() {\n const endDate = $(this).val();\n const endTime = $('#event-creation-end_dt-timestorage').val();\n endDt = moment(`${endDate} ${endTime}`, 'DD/MM/YYYY HH:mm');\n updateAvailability();\n });\n\n $('#event-creation-end_dt-timestorage').on('change', function() {\n const endDate = $('#event-creation-end_dt-datestorage').val();\n const endTime = $(this).val();\n endDt = moment(`${endDate} ${endTime}`, 'DD/MM/YYYY HH:mm');\n updateAvailability();\n });\n\n $('#event-creation-occurrences').on('change', function() {\n const occurrences = JSON.parse($(this).val());\n if (occurrences.length === 1) {\n setLectureTimes(occurrences[0]);\n multipleOccurrences = false;\n } else {\n multipleOccurrences = true;\n }\n updateAvailability();\n });\n\n $('#event-creation-timezone').on('change', function() {\n timezone = $(this).val();\n updateAvailability();\n });\n\n $('#event-creation-category').on('change', function() {\n category = JSON.parse($(this).val());\n updateAvailability();\n });\n\n $bookingSwitch\n .add($prebookingSwitch)\n .add($bookingSwitchPrebooking)\n .add($prebookingSwitchPrebooking)\n .on('change', function() {\n $createBooking.val(String(this.checked));\n });\n }\n };\n})(window);\n"],"names":["checkRoomAvailabilityURL","_buildFlaskURL","bind","endpoint","rules","args","converters","room_id","defaults","trace","data","isDynamic","rbURL","path","window","setupEventCreationDialog","options","$","extend","categoryField","listingValue","protectionModeFields","initialCategory","checkAvailability","rbExcludedCategories","serverDefaultTimezone","messages","parseHTML","html","protectionMessage","class","css","marginTop","listingMessage","eventCreationMessage","$form","closest","$submitBtn","find","first","$createBooking","$availableMessage","$availablePrebookMessage","$conflictBookingMessage","$conflictPrebookingMessage","$conflictPrebookingPrebookMessage","$userBookingMessage","$userPrebookingMessage","$unbookableMessage","$cannotBookMessage","$bookingSwitch","$prebookingSwitch","$bookingSwitchPrebooking","$prebookingSwitchPrebooking","$listingField","previousRoomId","$currentMessage","startDt","endDt","category","roomData","timezone","currentCategory","multipleOccurrences","canCreateInSelectedCategory","_currentCategory","_options$initialCateg","canCreateEvents","id","updateSubmitBtn","disabled","param","serializeArray","prop","updateProtectionMessage","mode","filter","val","is_protected","elem","text","title","setLectureTimes","occurrence","moment","add","addCalendarLink","$message","params","date","format","url","updateAvailability","resetCheckbox","hide","hideAvailability","arguments","length","undefined","isValid","isSameOrAfter","categoryId","some","excludedCategory","parseInt","requestParams","start_dt","DATETIME_LOCAL","end_dt","ajax","method","dataType","contentType","error","handleAjaxError","success","camelizeKeys","userBooking","userPrebooking","conflictBooking","unbookable","conflictPrebooking","canBook","String","checked","canPrebook","show","appendTo","insertAfter","on","evt","cat","toggleClass","JSON","parse","target","value","stringify","trigger","startDate","startTime","endDate","endTime","occurrencesVal","occurrences","initAvailabilityValues","this","isBefore"],"sourceRoot":""}