{"version":3,"file":"../../widgets/calendarWidget.js","sources":["widgets/calendarWidget.js"],"sourcesContent":["\"use strict\";\n\nvar calendarWidget = function () {\n var today = new Date();\n var viewedDay = null;\n var viewedEvent = null;\n var isDateChangeAccepted = false;\n var selectedDate = null;\n var descisionObject = {\n Action: 'New',\n VariantId: '',\n EventId: null\n };\n var calendarWidgetParams = {\n model: {\n isInited: false\n },\n url: {},\n template: {}\n };\n\n function renderDecisionPane(options) {\n var $modalFooter = $('.modal-footer');\n $modalFooter.empty();\n $modalFooter.removeClass('-sm-padded -normal-padded');\n\n if (options.type === 'pane') {\n var status = descisionObject.Action;\n\n if (options.pane.text == 'Приглашение не принято' || options.pane.text == 'Выберите другую дату и время') {\n status = 'Rejected';\n }\n\n var $pane = $(\"
\\n \").concat(options.pane.text, \"\\n
\"));\n\n if (options.pane.action) {\n $pane.append(\"\".concat(options.pane.action.title, \"\"));\n }\n\n $modalFooter.append($pane);\n $modalFooter.addClass('-sm-padded');\n }\n\n if (options.type === 'buttons') {\n var buttons = '';\n options.buttons.forEach(function (btn) {\n buttons += \"\");\n });\n $modalFooter.append($(buttons));\n $modalFooter.addClass('-normal-padded');\n }\n\n $modalFooter.show();\n }\n\n function configDecisionPane(event) {\n var paneOptions = {};\n\n if (event.type === 'Meeting') {\n if (!event.isPast) {\n if (event.status === 'Accepted' || event.status === 'AcceptedAlter') {\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение принято',\n action: {\n title: 'Изменить решение'\n }\n }\n };\n } else if (event.status === 'New') {\n if (event.date > today || selectedDate != null) {\n paneOptions = {\n type: 'buttons',\n buttons: [{\n title: 'Принять',\n classes: '-primary -big -wide event-invitation-accepted'\n }, {\n title: 'Отклонить',\n classes: '-secondary -big -wide event-invitation-rejected'\n }]\n };\n } else {\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Выберите другую дату и время'\n }\n };\n }\n } else {\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение отклонено',\n action: {\n title: 'Изменить решение'\n }\n }\n };\n }\n } else {\n if (event.status === 'New') {\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение не принято'\n }\n };\n } else if (event.status === 'Accepted' || event.status === 'AcceptedAlter') {\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение принято'\n }\n };\n } else {\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение отклонено'\n }\n };\n }\n }\n\n renderDecisionPane(paneOptions);\n }\n }\n\n function getDayEvents(data, callback) {\n $.ajax({\n url: calendarWidgetParams.url.getDayEvents,\n type: 'POST',\n data: data,\n success: function success(template) {\n callback(template);\n }\n });\n }\n\n function getEventCard(data, callback) {\n $.ajax({\n url: \"\".concat(calendarWidgetParams.url.getEventCard, \"/\").concat(data.type, \"/\").concat(data.id),\n type: 'GET',\n success: function success(template) {\n callback(template);\n }\n });\n }\n\n function confirmDescision(data, callback) {\n data = descisionObject;\n $.ajax({\n url: calendarWidgetParams.url.confirmAction,\n type: 'POST',\n data: data,\n success: function success(resp) {\n callback(resp);\n }\n });\n }\n\n function renderAgenda() {\n var $scheduler = $('#scheduler').data('kendoScheduler');\n\n if ($(window).width() <= 768) {\n $scheduler.view('customAgenda');\n } else {\n $scheduler.view('month');\n }\n }\n\n function getMonth(date) {\n return \"0\".concat(date.getMonth() + 1).slice(-2);\n }\n\n function getDate(date) {\n return \"0\".concat(date.getDate()).slice(-2);\n }\n\n function renderEvent(event) {\n var eventTemplate = \"\\n \\n
\").concat(getDate(event.start), \".\").concat(getMonth(event.start), \".\").concat(event.start.getFullYear(), \"
\\n
\").concat(event.EventDate.split('-').join(' - '), \"
\\n \\n \\n
\\n
\").concat(event.title, \"
\");\n\n if (event.EventType !== 'Occupation' || event.ObjectInfo != null) {\n eventTemplate = eventTemplate + \"
\".concat(event.ObjectInfo, \"
\");\n }\n\n eventTemplate = eventTemplate + \"
\";\n return eventTemplate;\n }\n\n function renderAgendaEvents(evts) {\n var pastEvents = \"\";\n var comingEvents = \"\";\n var events = \"\";\n var orderedEvents = evts.sort(function (a, b) {\n if (a.start < b.start) {\n return -1;\n }\n\n if (a.start > b.start) {\n return 1;\n }\n\n return 0;\n });\n orderedEvents.forEach(function (evt) {\n var eventTemplate = renderEvent(evt);\n\n if (evt.start < today) {\n pastEvents += eventTemplate;\n } else {\n comingEvents += eventTemplate;\n }\n });\n events = $(comingEvents + pastEvents);\n return events;\n } //function sendDescisionData() {\n // if (viewedEvent && viewedEvent.type === 'Meeting') {\n // // confirm only if submited\n // if (isDateChangeAccepted) {\n // confirmDescision(descisionObject, function (resp) {\n // const passed = resp.Success;\n // if (passed) {\n // descisionObject = {\n // Action: 'New',\n // VariantId: '',\n // EventId: null,\n // };\n // } else {\n // console.error(resp.Result);\n // }\n // });\n // }\n // }\n // return null;\n //}\n\n\n function openDayEventsModal(date) {\n viewedDay = date; // using toISOString adds a time zone to the date, \n // but when sent in a request С#,\n // it is set to a local time without a time zone.\n\n var day = {\n //Day: viewedDay.toISOString()б\n Day: viewedDay.toLocaleDateString()\n };\n modalDialog.busyIndicator(true);\n getDayEvents(day, function (template) {\n var modalContent = $('
');\n modalDialog.busyIndicator(false);\n modalContent.html(template);\n modalContent.showAsModal({\n title: \"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F \\u043D\\u0430 \".concat(viewedDay.toLocaleDateString()),\n isVertical: true,\n onClose: function onClose() {\n var $scheduler = $('#scheduler').data('kendoScheduler');\n $scheduler.dataSource.read();\n },\n afterClose: function afterClose() {\n viewedDay = null;\n viewedEvent = null;\n isDateChangeAccepted = false;\n selectedDate = null;\n }\n });\n });\n }\n\n function setParams(calendarParams) {\n calendarWidgetParams = $.extend({}, calendarWidgetParams, calendarParams);\n }\n\n function unbindHandlers() {\n $(window).off('resize', renderAgenda);\n $(document).off('click', '.k-event, .k-task');\n $(document).off('click', '.event-list-item');\n $(document).off('click', '.event-list-back');\n $(document).off('click', '.event-invitation-action');\n $(document).off('click', '.event-invitation-accepted');\n $(document).off('click', '.event-invitation-rejected');\n $(document).off('change', '#Variants');\n $(document).off('mouseenter', '.eventItem');\n $(document).off('mouseleave', '.eventItem');\n }\n\n function openEventCard(event) {\n viewedEvent = {\n id: event.Id,\n type: event.EventType,\n status: event.MeetingState,\n date: event.start,\n isPast: event.IsPast\n };\n modalDialog.busyIndicator(true);\n getEventCard(viewedEvent, function (template) {\n var modalContent = $('
');\n modalDialog.busyIndicator(false);\n modalContent.html(template);\n modalContent.showAsModal({\n isVertical: true,\n afterOpen: function afterOpen() {\n $('.modal-body').addClass('-not-padded-top'); // set current user decision\n\n if (viewedEvent.type === 'Meeting') {\n descisionObject = {\n Action: viewedEvent.status,\n VariantId: $('#Variants').val() || '',\n EventId: viewedEvent.id\n };\n }\n\n configDecisionPane(viewedEvent); // init selectric\n\n LKCommon.initSelectric($('.event-details .select'));\n },\n onClose: function onClose() {\n if (viewedEvent.type === 'Meeting') {\n // confirm only if submited\n if (isDateChangeAccepted) {\n confirmDescision(descisionObject, function (resp) {\n var passed = resp.Success;\n var $scheduler = $('#scheduler').data('kendoScheduler');\n\n if (passed) {\n descisionObject = {\n Action: 'New',\n VariantId: '',\n EventId: null\n };\n $scheduler.dataSource.read();\n } else {\n console.error(resp.Result);\n }\n\n return passed;\n });\n }\n }\n },\n afterClose: function afterClose() {\n viewedEvent = null;\n isDateChangeAccepted = false;\n selectedDate = null;\n }\n });\n });\n }\n\n function openEventCardById(id) {\n var scheduler = $('#scheduler').data('kendoScheduler');\n var view = scheduler.dataSource.view();\n var filteredEvents = $.grep(view, function (a) {\n return a.id == id;\n });\n\n if (filteredEvents.length) {\n scheduler.date(filteredEvents[0].start);\n openEventCard(filteredEvents[0]);\n } else {\n modalDialog.showBaseWnd({\n title: 'Ошибка',\n buttons: [{\n title: 'Хорошо',\n big: true,\n primary: true\n }],\n onDrawContent: function onDrawContent() {\n return 'Не найдено запрошенного события';\n }\n });\n }\n }\n\n function setParameters(id, dateStr) {\n descisionObject.VariantId = id;\n selectedDate = dateStr;\n configDecisionPane(viewedEvent);\n }\n\n function bindHandlers() {\n $(window).on('resize', renderAgenda);\n $(document).on('change', '#Variants', function () {\n var selectData = $(this).data('selectric');\n var selectOption = selectData.items[selectData.state.selectedIdx];\n var selectCurrentText = selectOption.text;\n $('.event-details-date-val').text(selectCurrentText);\n var date = selectCurrentText.split(',')[0];\n var time = selectCurrentText.split(',')[1].split('-')[0];\n setParameters(selectOption.value, date + ' ' + time);\n });\n $(document).on('click', '.k-event, .k-task', function (e) {\n var scheduler = $('#scheduler').data('kendoScheduler');\n var event = scheduler.dataSource.getByUid($(e.currentTarget).attr('data-uid'));\n openEventCard(event);\n });\n $(document).on('click', '.event-list-item', function () {\n var $eventListLoader = $('.event-list').find('.loader.-local');\n viewedEvent = {\n id: $(this).attr('data-id'),\n type: $(this).attr('data-evt-type'),\n status: $(this).attr('data-evt-status'),\n date: viewedDay,\n isPast: $(this).attr('data-evt-ispast')\n };\n $eventListLoader.show();\n getEventCard(viewedEvent, function (template) {\n $eventListLoader.hide();\n $('.modal-title').html(\"\\u0412\\u0441\\u0435 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F \\u043D\\u0430 \".concat(viewedDay.toLocaleDateString(), \"\"));\n $('.modal-body').html(template); // set current user decision\n\n if (viewedEvent.type === 'Meeting') {\n descisionObject = {\n Action: viewedEvent.status,\n VariantId: $('#Variants').val() || '',\n EventId: viewedEvent.id\n };\n }\n\n configDecisionPane(viewedEvent); // init selectric\n\n LKCommon.initSelectric($('.event-details .select'));\n });\n });\n $(document).on('click', '.event-list-back', function () {\n var $eventDetailsLoader = $('.event-details').find('.loader.-local');\n var day = {\n //Day: viewedDay.toISOString(),\n Day: viewedDay.toLocaleDateString()\n };\n\n if (viewedEvent.type === 'Meeting') {\n $('.modal-footer').empty().hide(); // confirm only if submited\n\n if (isDateChangeAccepted) {\n confirmDescision(descisionObject, function (resp) {\n var passed = resp.Success;\n\n if (passed) {\n descisionObject = {\n Action: 'New',\n VariantId: '',\n EventId: null\n };\n viewedEvent = null;\n isDateChangeAccepted = false;\n selectedDate = null;\n $eventDetailsLoader.show();\n getDayEvents(day, function (template) {\n $('.modal-title').html(\"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F \\u043D\\u0430 \".concat(viewedDay.toLocaleDateString()));\n $('.modal-body').html(template);\n $eventDetailsLoader.hide();\n });\n } else {\n console.error(resp.Result);\n }\n });\n } else {\n descisionObject = {\n Action: 'New',\n VariantId: '',\n EventId: null\n };\n viewedEvent = null;\n isDateChangeAccepted = false;\n $eventDetailsLoader.show();\n getDayEvents(day, function (template) {\n $('.modal-title').html(\"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F \\u043D\\u0430 \".concat(viewedDay.toLocaleDateString()));\n $('.modal-body').html(template);\n $eventDetailsLoader.hide();\n });\n }\n } else {\n $eventDetailsLoader.show();\n getDayEvents(day, function (template) {\n $('.modal-title').html(\"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F \\u043D\\u0430 \".concat(viewedDay.toLocaleDateString()));\n $('.modal-body').html(template);\n $eventDetailsLoader.hide();\n });\n }\n });\n $(document).on('click', '.event-invitation-action', function () {\n var paneOptions = {};\n\n if (viewedEvent.status === 'New') {\n paneOptions = {\n type: 'buttons',\n buttons: [{\n title: 'Принять',\n classes: '-primary -big -wide event-invitation-accepted'\n }, {\n title: 'Отклонить',\n classes: '-secondary -big -wide event-invitation-rejected'\n }]\n }; // reset decisionObject\n\n descisionObject = {\n Action: 'New',\n VariantId: '',\n EventId: null\n }; // юзер еще может передумать\n\n isDateChangeAccepted = false;\n } else {\n // событие не новое и у нас уже есть решение человека по нему\n if (descisionObject.Action === 'Accepted' || descisionObject.Action === 'AcceptedAlter') {\n // change pane to rejected decision\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение отклонено',\n action: {\n title: 'Изменить решение'\n }\n }\n };\n descisionObject.Action = 'Rejected';\n } else if (descisionObject.Action === 'Rejected') {\n // change pane to accepted decision\n paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение принято',\n action: {\n title: 'Изменить решение'\n }\n }\n };\n descisionObject.Action = descisionObject.VariantId === '' ? 'Accepted' : 'AcceptedAlter';\n } // сохраняем решение, т.к. юзер его изменил\n\n\n isDateChangeAccepted = true;\n }\n\n renderDecisionPane(paneOptions);\n });\n $(document).on('click', '.event-invitation-accepted', function () {\n var paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение принято',\n action: {\n title: 'Изменить решение'\n }\n }\n };\n descisionObject.Action = descisionObject.VariantId === '' ? 'Accepted' : 'AcceptedAlter';\n descisionObject.EventId = viewedEvent.id;\n renderDecisionPane(paneOptions); // set date change acceptance status\n\n isDateChangeAccepted = true;\n });\n $(document).on('click', '.event-invitation-rejected', function () {\n var paneOptions = {\n type: 'pane',\n pane: {\n text: 'Приглашение отклонено',\n action: {\n title: 'Изменить решение'\n }\n }\n };\n descisionObject.Action = 'Rejected';\n descisionObject.EventId = viewedEvent.id;\n renderDecisionPane(paneOptions); // set date change acceptance status\n\n isDateChangeAccepted = true;\n });\n $(document).on('click', '.event-details-date-change', function () {\n var $eventDateSelect = $('#Variants');\n\n if ($eventDateSelect.data('selectric').state.opened) {\n $eventDateSelect.selectric('close');\n } else {\n $eventDateSelect.selectric('open');\n }\n });\n $(document).on('mouseenter', '.eventItem', function () {\n var $body = $('body');\n var $this = $(this);\n var title = $this.attr('data-title');\n var offset = $this.offset();\n var height = $this.outerHeight();\n var width = $this.outerWidth();\n $body.append(\"
\".concat(title, \"
\"));\n var $eventPopup = $('.event-popup');\n var popupWidth = $eventPopup.outerWidth();\n var popupHeight = $eventPopup.outerHeight();\n $eventPopup.css({\n top: \"\".concat(offset.top - height - popupHeight / 2, \"px\"),\n left: \"\".concat(offset.left - (popupWidth - width) / 2, \"px\")\n });\n });\n $(document).on('mouseleave', '.eventItem', function () {\n $('.event-popup').remove();\n });\n }\n\n function init(calendarParams) {\n unbindHandlers();\n setParams(calendarParams);\n bindHandlers();\n }\n\n return {\n init: init,\n renderAgenda: renderAgenda,\n renderAgendaEvents: renderAgendaEvents,\n openEventCardById: openEventCardById,\n openDayEventsModal: openDayEventsModal,\n isInited: false,\n unbindHandlers: unbindHandlers\n };\n}();"],"names":["calendarWidget","today","Date","viewedDay","viewedEvent","isDateChangeAccepted","selectedDate","descisionObject","Action","VariantId","EventId","calendarWidgetParams","model","isInited","url","template","renderDecisionPane","options","$pane","buttons","$modalFooter","$","empty","removeClass","type","status","pane","text","concat","action","append","title","addClass","forEach","btn","classes","show","configDecisionPane","event","isPast","date","getDayEvents","data","callback","ajax","success","getEventCard","id","confirmDescision","confirmAction","resp","renderAgenda","$scheduler","window","width","view","unbindHandlers","off","document","openEventCard","Id","EventType","MeetingState","start","IsPast","modalDialog","busyIndicator","modalContent","html","showAsModal","isVertical","afterOpen","val","LKCommon","initSelectric","onClose","passed","Success","dataSource","read","console","error","Result","afterClose","bindHandlers","on","selectData","this","selectOption","items","state","selectedIdx","selectCurrentText","split","time","value","dateStr","e","getByUid","currentTarget","attr","$eventListLoader","find","hide","toLocaleDateString","$eventDetailsLoader","day","Day","paneOptions","$eventDateSelect","opened","selectric","$body","$this","offset","height","outerHeight","outerWidth","$eventPopup","popupWidth","popupHeight","css","top","left","remove","init","calendarParams","extend","renderAgendaEvents","evts","pastEvents","comingEvents","sort","a","b","evt","eventTemplate","getDate","slice","getMonth","getFullYear","EventDate","join","uid","ObjectInfo","openEventCardById","scheduler","filteredEvents","grep","length","showBaseWnd","big","primary","onDrawContent","openDayEventsModal"],"mappings":"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"}