{"version":3,"file":"js/module_events.sessions.ff31bf08.bundle.js","mappings":"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","sources":["webpack:///indico/modules/events/sessions/client/js/session_display.jsx","webpack:///indico/modules/events/sessions/client/js/index.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\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {IButton, ICSCalendarLink} from 'indico/react/components';\nimport {Translate} from 'indico/react/i18n';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const calendarContainer = document.querySelector('#session-calendar-link');\n\n if (!calendarContainer) {\n return;\n }\n\n const {eventId, sessionId, sessionContribCount} = calendarContainer.dataset;\n const options = [{key: 'session', text: Translate.string('Session'), extraParams: {}}];\n if (parseInt(sessionContribCount, 10) > 0) {\n options.push({\n key: 'contribution',\n text: Translate.string('Detailed timetable'),\n extraParams: {detail: 'contributions'},\n });\n }\n\n ReactDOM.render(\n (\n \n )}\n options={options}\n />,\n calendarContainer\n );\n});\n","// 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\nimport 'indico/modules/events/util/types_dialog';\n\nimport './session_display';\n\n(function(global) {\n function setupTableSorter() {\n $('#sessions .tablesorter').tablesorter({\n cssAsc: 'header-sort-asc',\n cssDesc: 'header-sort-desc',\n cssInfoBlock: 'avoid-sort',\n cssChildRow: 'session-blocks-row',\n headerTemplate: '',\n sortList: [[1, 0]],\n });\n }\n\n function setupPalettePickers() {\n $('.palette-picker-trigger').each(function() {\n const $this = $(this);\n $this.palettepicker({\n availableColors: $this.data('colors'),\n selectedColor: $this.data('color'),\n onSelect(background, text) {\n $.ajax({\n url: $(this).data('href'),\n method: $(this).data('method'),\n data: JSON.stringify({colors: {text, background}}),\n dataType: 'json',\n contentType: 'application/json',\n error: handleAjaxError,\n complete: IndicoUI.Dialogs.Util.progress(),\n });\n },\n });\n });\n }\n\n function patchObject(url, method, data) {\n return $.ajax({\n url,\n method,\n data: JSON.stringify(data),\n dataType: 'json',\n contentType: 'application/json',\n error: handleAjaxError,\n complete: IndicoUI.Dialogs.Util.progress(),\n });\n }\n\n const filterConfig = {\n itemHandle: 'tr',\n listItems: '#sessions-wrapper tr.session-row',\n term: '#search-input',\n state: '#filtering-state',\n placeholder: '#filter-placeholder',\n };\n\n global.setupSessionsList = function setupSessionsList(options) {\n options = $.extend(\n {\n createTypeURL: null,\n },\n options\n );\n setupTypePicker(options.createTypeURL);\n enableIfChecked('#sessions-wrapper', '.select-row', '#sessions .js-requires-selected-row');\n setupTableSorter();\n setupPalettePickers();\n handleRowSelection(false);\n const applySearchFilters = setupSearchBox(filterConfig);\n\n $('#sessions .toolbar').on('click', '.disabled', function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n });\n\n $('#sessions-wrapper')\n .on('indico:htmlUpdated', function() {\n setupTableSorter();\n setupPalettePickers();\n handleRowSelection(true);\n _.defer(applySearchFilters);\n })\n .on('click', '.show-session-blocks', function() {\n const $this = $(this);\n ajaxDialog({\n title: $this.data('title'),\n url: $this.data('href'),\n });\n })\n .on('attachments:updated', function(evt) {\n const target = $(evt.target);\n reloadManagementAttachmentInfoColumn(target.data('locator'), target.closest('td'));\n });\n\n $('.js-submit-session-form').on('click', function(evt) {\n evt.preventDefault();\n const $this = $(this);\n\n if (!$this.hasClass('disabled')) {\n $('#sessions-wrapper form')\n .attr('action', $this.data('href'))\n .submit();\n }\n });\n };\n\n function setupTypePicker(createURL) {\n $('#sessions').on('click', '.session-type-picker', function() {\n $(this).itempicker({\n filterPlaceholder: $T.gettext('Filter types'),\n containerClasses: 'session-type-container',\n uncheckedItemIcon: '',\n footerElements: [\n {\n title: $T.gettext('Add new type'),\n onClick(sessionTypePicker) {\n ajaxDialog({\n title: $T.gettext('Add new type'),\n url: createURL,\n onClose(data) {\n if (data) {\n $('.session-type-picker').each(function() {\n const $this = $(this);\n if ($this.data('indicoItempicker')) {\n $this.itempicker('updateItemList', data.types);\n } else {\n $this.data('items', data.types);\n }\n });\n sessionTypePicker.itempicker('selectItem', data.new_type_id);\n }\n },\n });\n },\n },\n ],\n onSelect(newType) {\n const $this = $(this);\n const postData = {type_id: newType ? newType.id : null};\n\n return patchObject($this.data('href'), $this.data('method'), postData).then(function() {\n const label = newType ? newType.title : $T.gettext('No type');\n $this.find('.label').text(label);\n });\n },\n });\n });\n }\n})(window);\n"],"names":["document","addEventListener","calendarContainer","querySelector","eventId","sessionId","sessionContribCount","dataset","options","key","text","Translate","string","extraParams","parseInt","push","detail","ReactDOM","React","ICSCalendarLink","endpoint","params","event_id","session_id","renderButton","classes","IButton","icon","title","global","setupTableSorter","$","tablesorter","cssAsc","cssDesc","cssInfoBlock","cssChildRow","headerTemplate","sortList","setupPalettePickers","each","$this","this","palettepicker","availableColors","data","selectedColor","onSelect","background","ajax","url","method","JSON","stringify","colors","dataType","contentType","error","handleAjaxError","complete","IndicoUI","Dialogs","Util","progress","filterConfig","itemHandle","listItems","term","state","placeholder","setupSessionsList","createURL","extend","createTypeURL","on","itempicker","filterPlaceholder","$T","gettext","containerClasses","uncheckedItemIcon","footerElements","onClick","sessionTypePicker","ajaxDialog","onClose","types","new_type_id","newType","postData","type_id","id","then","label","find","enableIfChecked","handleRowSelection","applySearchFilters","setupSearchBox","evt","preventDefault","stopPropagation","_","defer","target","reloadManagementAttachmentInfoColumn","closest","hasClass","attr","submit","window"],"sourceRoot":""}