{"version":3,"file":"../../js/Termin/qmc.termin.min.js","sources":["qmc.termin.min.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n(function () {\n angular.module('QMC.Termin', ['QMC.Fachleistung']).config(routes);\n ;\n routes.$inject = ['$locationProvider', '$stateProvider', '$urlRouterProvider', 'qmcBase'];\n function routes($locationProvider, $stateProvider, $urlRouterProvider, qmcBase) {\n $locationProvider.html5Mode({\n enabled: false,\n requireBase: false\n });\n $stateProvider\n .state('appointment', {\n url: '/appointment?:startDay?view',\n templateUrl: qmcBase + '/termin',\n controller: 'TerminListController',\n controllerAs: 'vm',\n resolve: {\n data: [function () {\n console.log('Current State: Appointment List');\n }]\n },\n params: {\n startDay: {\n dynamic: true\n },\n view: {\n dynamic: true\n }\n }\n })\n .state('appointment.detail', {\n url: '/appointment/:id/:isRecurring/:participantId/:dateFrom/:start/:end/:wholeSerie/:permFlag',\n templateUrl: qmcBase + '/termin/detail',\n controller: 'TerminDetailController',\n controllerAs: 'vm',\n resolve: {\n data: [function () {\n console.log('Current State: Appointment Detail');\n }]\n }\n })\n .state('appointment.detailshort', {\n url: '/appointment/:id',\n templateUrl: qmcBase + '/termin/detail',\n controller: 'TerminDetailController',\n controllerAs: 'vm',\n resolve: {\n data: [function () {\n console.log('Current State: Appointment Detail SHORT');\n }]\n }\n });\n }\n})();\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var HttpProvider = /** @class */ (function () {\n function HttpProvider() {\n }\n HttpProvider.configureHttpProvider = function ($httpProvider) {\n // initialize get if not there\n if (!$httpProvider.defaults.headers.get) {\n $httpProvider.defaults.headers.get = {};\n }\n // disable IE ajax request caching\n $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';\n // extra\n $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';\n $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';\n };\n return HttpProvider;\n }());\n Termin.HttpProvider = HttpProvider;\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\n(function () {\n angular.module('QMC.Termin')\n .config(['$httpProvider', QMC.Termin.HttpProvider.configureHttpProvider]);\n})();\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var TerminService = /** @class */ (function (_super) {\n __extends(TerminService, _super);\n function TerminService($http, $q) {\n var _this = _super.call(this, $http, $q) || this;\n _this.$http = $http;\n _this.$q = $q;\n _this.modulePath = '/Appointment';\n return _this;\n }\n TerminService.prototype.getCalendarList = function () {\n return _super.prototype.get.call(this, this.modulePath + '/Calendar', {}, function (data) {\n return data;\n });\n };\n TerminService.prototype.getAppointmentTypes = function () {\n return _super.prototype.get.call(this, this.modulePath + '/Type', {}, function (data) {\n return data;\n });\n };\n TerminService.prototype.getAppointmentList = function (personObjectId, dateFrom, dateTo, appointmentTypes, getOrganisation) {\n var _this = this;\n if (getOrganisation === void 0) { getOrganisation = false; }\n return _super.prototype.getItem.call(this, this.modulePath, { personObjectId: personObjectId, dateFrom: dateFrom, dateTo: dateTo, appointmentTypes: appointmentTypes, getOrganisation: getOrganisation }, function (data) {\n _this.displayNotifications(data.errors, \"Hinweis\", \"warning\", \"qm-icon-information\");\n return data.items;\n });\n };\n //getAppointment(id: Guid, isRecurring: boolean, participantId: Guid, dateFrom: any): any {\n // return super.get(this.modulePath + '/' + id + '/' + isRecurring + '/' + participantId + '/' + moment(dateFrom).format('YYYY-MM-DD'), {}, (data: IAppointment[]) => {\n // return data;\n // });\n //}\n TerminService.prototype.getAppointment = function (id, participantId, dateFrom, wholeSerie, permFlag) {\n return _super.prototype.get.call(this, this.modulePath + '/' + id, { participantId: participantId, dateFrom: moment(dateFrom).format('YYYY-MM-DD'), wholeSerie: wholeSerie, permFlag: permFlag }, function (data) {\n return data;\n });\n };\n TerminService.prototype.getAppointmentWv = function () {\n return _super.prototype.getItem.call(this, this.modulePath + '/WvModel', {}, function (data) {\n return data;\n });\n };\n TerminService.prototype.postAppointment = function (data) {\n return _super.prototype.post.call(this, this.modulePath, data).then(function (d) {\n return d;\n });\n };\n TerminService.prototype.putAppointment = function (id, isRecurring, participantId, dateFrom, wholeSeries, data, changeRecurrenceDay) {\n if (changeRecurrenceDay === void 0) { changeRecurrenceDay = false; }\n return _super.prototype.put.call(this, this.modulePath + '/' + id + '/' + isRecurring + '/' + participantId + '/' + moment(dateFrom).format('YYYY-MM-DD') + '/' + wholeSeries + (\"?changeRecurrenceDay=\" + changeRecurrenceDay), data).then(function (d) {\n return d;\n });\n };\n TerminService.prototype.deleteAppointment = function (id, isRecurring, participantId, dateFrom, wholeSeries, allParticipants) {\n return _super.prototype.delete.call(this, this.modulePath + '/' + id + '/' + isRecurring + '/' + participantId + '/' + moment(dateFrom).format('YYYY-MM-DD') + '/' + wholeSeries + '/' + allParticipants).then(function (e) {\n return e;\n });\n };\n TerminService.prototype.validateAppointment = function (request) {\n return _super.prototype.post.call(this, this.modulePath + '/validation', request).then(function (data) {\n return data;\n });\n };\n TerminService.prototype.getHolidays = function (year) {\n return _super.prototype.get.call(this, this.modulePath + '/holiday', { year: year }, function (data) {\n return data;\n });\n };\n TerminService.prototype.getHolidaysSpecific = function (year, getHolidayDays, getVacationDays) {\n return _super.prototype.get.call(this, this.modulePath + '/holiday', { year: year, getHolidayDays: getHolidayDays, getVacationDays: getVacationDays }, function (data) {\n return data;\n });\n };\n TerminService.prototype.getShareablePersonList = function () {\n return _super.prototype.get.call(this, this.modulePath + '/Calendar/ShareablePerson', {}, function (data) {\n return data;\n });\n };\n TerminService.prototype.getAccessibleCalenderList = function (objectType) {\n return _super.prototype.get.call(this, this.modulePath + '/Calendar/Accessible', { objectType: objectType }, function (data) {\n return data;\n });\n };\n TerminService.prototype.getCalendarTypeList = function () {\n return _super.prototype.get.call(this, this.modulePath + '/Calendar/Type', {}, function (data) {\n return data;\n });\n };\n TerminService.prototype.putAccessible = function (list) {\n return _super.prototype.put.call(this, this.modulePath + '/Calendar/Accessible/SetAllocationStates', list).then(function (data) {\n return data;\n });\n };\n TerminService.prototype.putShareOwnCalendar = function (list) {\n return _super.prototype.put.call(this, this.modulePath + '/Calendar/ShareOwnCalendarWithPersons', list).then(function (data) {\n return data;\n });\n };\n TerminService = __decorate([\n QMC.Service('QMC.Termin', 'TerminService'),\n QMC.Inject('$http', '$q')\n ], TerminService);\n return TerminService;\n }(QMC.Common.BaseService));\n Termin.TerminService = TerminService;\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var UserInterface = /** @class */ (function (_super) {\n __extends(UserInterface, _super);\n function UserInterface() {\n var _this = _super.call(this) || this;\n _this.appointmentForm = {\n form: [\n {\n label: \"Betreff\",\n placeholder: \"\",\n type: \"String\",\n model: \"title\",\n required: true,\n lngTag: \"20018006\",\n validate: {\n message: \"Bitte den Betreff angeben.\",\n messageTag: \"20018024\"\n },\n style: {\n class: \"col-xs-12\",\n icon: \"fa fa-font\"\n }\n },\n {\n label: \"Teilnehmer\",\n type: \"Select2\",\n model: \"participantIds\",\n id: \"selectedClientIds\",\n dataSource: \"getParticipants\",\n lngTag: \"20018007\",\n multiple: true,\n required: true,\n validate: {\n message: \"Bitte einen Teilnehmer auswählen.\"\n },\n style: {\n class: \"col-xs-12\"\n }\n },\n {\n type: \"hr\"\n },\n {\n type: \"DateRange\",\n requiredTo: true,\n model: {\n dateFrom: \"dateFrom\",\n dateTo: \"dateTo\"\n },\n label: {\n dateFrom: \"Datum von\",\n dateTo: \"Datum bis\"\n },\n lngTag: {\n dateFrom: \"20000047\",\n dateTo: \"20000054\"\n },\n style: {\n class: \"col-xs-12\"\n },\n config: {\n displayTime: true,\n displayDateTo: true,\n disableDate: false,\n disableTime: \"isAllDay\",\n dateToRequired: true\n },\n events: {\n hideExpression: \"(qmForm.recuringType > 0 && !qmForm.disableRecurring)\"\n }\n },\n {\n type: \"DateRange\",\n model: {\n dateFrom: \"dateFrom\",\n dateTo: \"dateTo\"\n },\n label: {\n dateFrom: \"Wiederholen ab\"\n },\n lngTag: {\n dateFrom: \"20018540\"\n },\n style: {\n class: \"col-xs-12\"\n },\n config: {\n displayTime: true,\n disableTime: false,\n displayDateTo: false,\n dateToRequired: false,\n disableDate: false\n },\n events: {\n hideExpression: \"((qmForm.recuringType == 0 || qmForm.recuringType == null) || (qmForm.disableRecurring))\"\n }\n },\n {\n label: \"Ort\",\n placeholder: \"Ort angeben\",\n placeholderTag: \"20003004\",\n type: \"String\",\n lngTag: \"20003004\",\n model: \"location\",\n style: {\n class: \"col-md-6 col-xs-12\",\n icon: \"fa fa-map-marker\"\n },\n },\n {\n label: \"Wiederholung\",\n type: \"Select\",\n model: \"recuringType\",\n id: \"recuringType\",\n dataSource: \"getRecurringTypes\",\n disabled: \"disableRecurring\",\n lngTag: '20018052',\n style: {\n class: \"col-md-3 col-xs-12\"\n }\n },\n {\n label: \"Wiederholen bis\",\n id: \"recurringEndDate\",\n placeholder: \"Wiederholen bis\",\n placeholderTag: \"20018053\",\n type: \"Date\",\n model: \"rangeDateTo\",\n lngTag: '20018053',\n startDate: new Date(),\n disabled: \"disableRecurringEndDate\",\n style: {\n icon: \"fa fa-font\",\n class: \"col-md-3 col-xs-12\"\n }\n },\n {\n label: \"Bemerkung\",\n placeholder: \"Bemerkung eingeben ...\",\n placeholderTag: \"20000049\",\n type: \"Textarea\",\n maxLength: -1,\n lngTag: \"20000049\",\n model: \"description\",\n style: {\n icon: \"qm-icon-note_text\",\n class: \"colm-md-6 col-xs-12\"\n }\n },\n {\n label: \"Privat\",\n type: \"Checkbox\",\n model: \"isPrivate\",\n lngTag: \"20018014\",\n style: {\n class: \"col-md-4 col-xs-12\"\n }\n },\n {\n label: \"Erledigt\",\n type: \"Checkbox\",\n model: \"isFinished\",\n lngTag: \"20000120\",\n style: {\n class: \"col-md-4 col-xs-12\"\n }\n },\n {\n label: \"Ganztägig\",\n type: \"Checkbox\",\n model: \"isAllDay\",\n lngTag: \"20018016\",\n style: {\n class: \"col-md-4 col-xs-12\"\n }\n },\n {\n label: \"Erinnerung Aktiv\",\n type: \"Checkbox\",\n model: \"reminder\",\n lngTag: \"20018530\",\n style: {\n class: \"col-xs-12 col-md-2\"\n }\n },\n {\n label: \"Anzahl\",\n lngTag: \"20000123\",\n type: \"Number\",\n model: \"reminderAmount\",\n style: {\n class: \"col-xs-4 col-md-4\"\n },\n events: {\n hideExpression: \"!(qmForm.reminder)\"\n }\n },\n {\n label: \"Einheit\",\n type: \"Select\",\n model: \"reminderUnit\",\n dataSource: \"getReminderUnits\",\n lngTag: '20000096',\n style: {\n class: \"col-md-6 col-xs-8\"\n },\n events: {\n hideExpression: \"!(qmForm.reminder)\"\n }\n }\n ],\n actions: {\n put: \"putAppointment\",\n post: \"addAppointment\",\n delete: \"deleteAppointment\"\n }\n };\n return _this;\n }\n /**\n * return the device default view\n *\n * @public\n * @returns {string}\n *\n * @memberOf TerminListController\n */\n UserInterface.prototype.deviceDefault = function () {\n if (localStorage.getItem('calendarView') !== null)\n return localStorage.getItem('calendarView');\n if (QMC.Common.Constants.IS_MOBILE)\n return 'agendaDay';\n return 'agendaWeek';\n };\n UserInterface.prototype.formatListDates = function () {\n $('.fc-list-heading').each(function (index) {\n $(this).find(\".fc-list-heading-alt\").text(moment($(this).attr('data-date')).format('DD.MM.YYYY'));\n });\n $('.fc-list-item').each(function (index) {\n var time = $(this).find(\".fc-list-item-time\").text();\n if (time === \"Ganztägig\")\n return;\n if (time.split('-')[1] !== undefined)\n time = moment(time.split(\" - \")[0], 'h:mma').format('HH:mm') + ' - ' + moment(time.split(\" - \")[1], 'h:mma').format('HH:mm');\n else\n time = moment(time, 'h:mma').format('HH:mm');\n $(this).find(\".fc-list-item-time\").text(time);\n });\n };\n UserInterface.prototype.detailLink = function (event, wholeSerie /* if the event is recurring the user is asked if he/she wants to edit only the event clicked or the whole event*/) {\n if (event.appointmentType !== 401000)\n return \"#/appointment\";\n return \"#/appointment/appointment/\" +\n (event.isRecurring ? event.mid : event.objectId) + \"/\" +\n event.isRecurring + \"/\" + event.participantObjectId + \"/\" +\n event.dateFrom + \"/\" +\n ((event.start) ? moment(event.start._d).toISOString() : 0) + \"/\" +\n ((event.end) ? moment(event.end._d).toISOString() : ((event.start !== undefined) ? moment(event.start._d).toISOString() : 0)) +\n \"/\" + wholeSerie + \"/\" + event.permFlag;\n };\n return UserInterface;\n }(QMC.Common.UserInterface));\n Termin.UserInterface = UserInterface;\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var TerminListController = /** @class */ (function () {\n /**\n * Creates an instance of TerminListController.\n * @param {TerminService} terminService\n * @param {any} $qui\n * @param {Fachleistung.FlsService} flsService\n * @param {Klient.KlientService} clientService\n * @param {any} $state\n * @param {any} $scope\n * @param {Common.QmcLanguageService} lng\n * @param {any} $rootScope\n * @param {StammdatenService} stammdatenService\n *\n * @memberOf TerminListController\n */\n function TerminListController(terminService, $qui, flsService, clientService, $state, $scope, $timeout, lng, userService, $rootScope, $location, permissionService, $stateParams, taskService, stammdatenService) {\n var _this = this;\n this.terminService = terminService;\n this.$qui = $qui;\n this.flsService = flsService;\n this.clientService = clientService;\n this.$state = $state;\n this.$scope = $scope;\n this.$timeout = $timeout;\n this.lng = lng;\n this.userService = userService;\n this.$rootScope = $rootScope;\n this.$location = $location;\n this.permissionService = permissionService;\n this.$stateParams = $stateParams;\n this.taskService = taskService;\n this.stammdatenService = stammdatenService;\n this.filterText = '';\n this.ui = new Termin.UserInterface();\n this.reccuring = new Termin.RecurringOptions();\n this.calendarList = [];\n this.calendarList2 = [];\n this.shareablePersonListChanges = [];\n this.selectedCalendarType = 120000;\n this.formState = 'new';\n this.requestLock = false;\n this.disableCheckboxes = false;\n this.appointmentTypesToShow = [\n 401000,\n 401010 // Planned fls\n ];\n this.holidayUserSettings = [];\n this.eventCache = [];\n this.selectedTypes = true;\n this.promptOptionsTask = {\n title: '',\n icon: 'qm-icon-clipboard_check_edit',\n yesNo: true,\n id: 'promptTask',\n text: this.lng.translate(20014023, 'Wollen Sie diese Aufgabe als erledigt makieren?')\n };\n this.promptChangeRecurringTerminDate = {\n title: '',\n icon: 'qm-icon-clipboard_check_edit',\n yesNo: true,\n id: 'promptChangeRecurringDate',\n text: this.lng.translate(20018539, 'Wenn Sie alle Datumsangaben ändern möchten, öffnen Sie die Terminserie. Möchten Sie die ganze Serie bearbeiten?')\n };\n this.isGettingData = false;\n this.isWidget = false;\n this.appointmentObjectPermissions = {\n delete: false,\n modify: false,\n new: false\n };\n this.lastRequest = {};\n this.slotDuration = 30;\n this.calendarName = 'calendar';\n /**\n * get list of specific reccuring types\n *\n * @private\n *\n * @memberOf TerminListController\n */\n this.getRecurringTypes = function () { return _this.reccuring.reccuringSelectList; };\n this.getReminderUnits = function () { return _this.reminderUnits; };\n /**\n * get the personal calendar\n *\n * @private\n *\n * @memberOf TerminListController\n */\n this.firstLoad = true;\n this.dblClick = null;\n this.clickTimer = null;\n if (document.getElementById(\"permissions\").getAttribute(\"appointment\").toLocaleLowerCase() !== \"true\") {\n console.log(\"No rights to see module appointment\");\n this.forbidden = true;\n return;\n }\n $(\"#\" + this.calendarName).fullCalendar('removeEvents');\n $(\"#\" + this.calendarName).fullCalendar('removeEventSources');\n this.isWidget = false;\n this.mobile = this.ui.isMobile();\n this.initForm();\n this.getCalendarList();\n this.getShareablePersonList();\n this.getCalenderTypeList();\n this.getAccessibleCalendarList(this.selectedCalendarType);\n this.$timeout = $timeout;\n this.reminderUnits = [\n { value: 0, text: this.lng.translate(20000247, 'Minuten') },\n { value: 1, text: this.lng.translate(20000219, 'Stunden') },\n { value: 2, text: this.lng.translate(20000245, 'Tage') },\n { value: 3, text: this.lng.translate(20000246, 'Monate') }\n ];\n this.promptOptions = {\n title: this.lng.translate(20018050, \"Serientermin\"),\n icon: \"qm-icon-calendar_7\",\n id: \"prompt-change\",\n fields: [\n {\n text: this.lng.translate(20018051, 'Wollen Sie diesen Termin oder die ganze Serie bearbeiten?'), name: 'wholeSeries',\n options: [{ text: this.lng.translate(20018044, \"Dieser Termin\"), value: false }, { text: this.lng.translate(20018045, \"Alle Termine dieser Serie\"), value: true }]\n }\n ]\n };\n var storageObject = window.localStorage.getItem(QMC.Common.LocalStorageConstants.APPOINTMENT_TYPES_TO_SHOW);\n if (storageObject && storageObject !== \"\")\n this.appointmentTypesToShow = storageObject.split(\",\").map(Number);\n flsService.getCasesList().then(function (data) {\n _this.cases = data;\n _this.caseList = $qui.select(data, { value: 'internalName', text: 'internalName' });\n _this.resetData();\n });\n this.$scope.$watch('vm.form.recuringType', function () {\n if (_this.form.recuringType > 0 && _this.form.recuringType !== null && _this.form.disableRecurring === false) {\n _this.form.disableRecurringEndDate = false;\n _this.form.rangeDateFrom = _this.form.dateFrom;\n _this.form.rangeDateTo = _this.form.dateTo;\n _this.form.isRecurring = true;\n }\n else {\n _this.form.disableRecurringEndDate = true;\n _this.form.isRecurring = _this.form.recuringType !== null;\n _this.form.rangeDateTo = null;\n }\n });\n this.userService.getUserSettings(['TERMINPLAN.FERIEN.VISIBLE', 'TERMINPLAN.FEIERTAGE.VISIBLE', 'WEBCLIENT.CALENDAR.SLOTDURATION'], false).then(function (settings) {\n _this.slotDuration = settings[2].value && settings[2].value.length > 0 ? parseInt(settings[2].value) : _this.slotDuration;\n _this.holidayUserSettings = settings;\n _this.terminService.getAppointmentTypes().then(function (data) {\n for (var type in data)\n data[type].state = _this.appointmentTypesToShow.indexOf(data[type].typeId) >= 0;\n var ferien = {\n typeId: 1,\n name: 'Ferien',\n colorHtml: '#DBDBDB',\n state: _this.holidayUserSettings[0].value === \"true\",\n };\n var feiertage = {\n typeId: 2,\n name: 'Feiertage',\n colorHtml: '#DBDBDB',\n state: _this.holidayUserSettings[1].value === \"true\",\n };\n data.push(feiertage);\n data.push(ferien);\n data.sort(function (a, b) { return (a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase()) ? 1 : ((b.name.toLocaleLowerCase() > a.name.toLocaleLowerCase()) ? -1 : 0); });\n _this.appointmentTypes = data;\n });\n _this.permissionService.getPermissionsByObjectType(400000).then(function (data) {\n _this.appointmentObjectPermissions = {\n new: data[0].new,\n modify: data[0].new,\n delete: data[0].delete,\n };\n });\n });\n $qui.init($qui.getSectionColor($location.path()), function () {\n _this.render();\n $qui.anonAvatar();\n $qui.bindEvents();\n });\n this.clientService.getPersonListByObjectTypes([120000, 130000, 140000, 140006], '', true, false).then(function (data) {\n data.map(function (item) {\n item.displayTitle = _this.$qui.createPersonDisplay(item.displayTitle, '', item.shortCaption, item.personNumber);\n return item;\n });\n _this.clientService.getAllPersonLists().then(function (dataPL) {\n _this.clientService.getResourceList('', true).then(function (dataRes) {\n _this.clientService.getVehicleList().then(function (dataVeh) {\n var temp = data.map(function (x) { return ({ text: x.displayTitle, value: x.objectId, group: _this.getGroupName(x.objectType), subText: x.institute }); });\n temp = temp.concat(dataPL.map(function (x) { return ({ text: x.name, value: x.objectId, group: _this.lng.translate(20000237, 'Personenliste'), subText: '' }); }));\n temp = temp.concat(dataRes.map(function (x) { return ({ text: x.caption, value: x.objectId, group: _this.lng.translate(20000271, 'Ressource'), subText: x.institute }); }));\n temp = temp.concat(dataVeh.map(function (x) { return ({ text: x.displayTitle, value: x.objectId, group: _this.lng.translate(20029006, 'Fuhrpark'), subText: x.kindOfVehicle }); }));\n temp.sort(function (a, b) { return (a.text.toLocaleLowerCase() > b.text.toLocaleLowerCase()) ? 1 : ((b.text.toLocaleLowerCase() > a.text.toLocaleLowerCase()) ? -1 : 0); });\n temp.sort(function (a, b) { return (a.group.toLocaleLowerCase() > b.group.toLocaleLowerCase()) ? 1 : ((b.group.toLocaleLowerCase() > a.group.toLocaleLowerCase()) ? -1 : 0); });\n _this.participants = temp;\n });\n });\n //get the organisation for the logged user\n _this.stammdatenService.getOrganisationForPerson($('#session').data().personId).then(function (data) {\n _this.organisationForCurrentUser = data.organisationId;\n });\n });\n });\n this.$scope.$watch('vm.$state.current.name', function (newVal, oldVal) {\n if (newVal !== oldVal && newVal === 'appointment')\n _this.resetData(true);\n });\n }\n TerminListController.prototype.getParticipants = function () {\n return this.participants;\n };\n TerminListController.prototype.getGroupName = function (type) {\n switch (type) {\n case 120000:\n return this.lng.translate(20000235, 'Mitarbeiter');\n case 130000:\n return this.lng.translate(20000279, 'Organisation');\n case 140000:\n return this.lng.translate(21002000, 'Klient');\n case 140006:\n return this.lng.translate(20001048, 'Kontaktperson');\n default:\n return '';\n }\n };\n /**\n * convert to title case\n *\n * @private\n * @param {string} str\n * @returns {string}\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.toTitleCase = function (str) {\n return str.replace(/\\w\\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });\n };\n /**\n * init the form with default values\n *\n * @private\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.initForm = function () {\n this.form = {\n title: null,\n dateFrom: moment(new Date()).startOf('hour').add(1, \"hour\").toDate(),\n dateTo: moment(new Date()).startOf('hour').add(1, \"hour\").add(30, 'minutes').toDate(),\n rangeDateFrom: new Date(),\n rangeDateTo: null,\n isAllDay: false,\n location: null,\n participantIds: !this.getForOrga ? [$('#session').data().personId] : [this.organisationForCurrentUser],\n description: null,\n isFinished: false,\n isPrivate: false,\n isRecurring: false,\n recuringType: 0,\n reminder: true,\n reminderAmount: 15,\n reminderUnit: 0,\n disableRecurring: false,\n disableRecurringEndDate: false,\n };\n };\n /**\n * get the calendar list\n *\n * @private\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.getCalendarList = function () {\n var _this = this;\n this.lastRequest = {};\n this.terminService.getCalendarList().then(function (data) {\n _this.sharedCalendar = data;\n _this.sharedCalendarMap = data.map(function (x) { return ({ text: x.description, value: x.personObjectId }); });\n _this.sharedCalendarMap.sort(function (x, y) {\n var a = x.text.toUpperCase(), b = y.text.toUpperCase();\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n return 0;\n });\n if (!data.map(function (x) { return x.personObjectId; }).includes(_this.selectedCalendar))\n _this.selectedCalendar = undefined;\n if (_this.selectedCalendar === (null || undefined)) {\n _this.selectedCalendar = data[0].personObjectId;\n for (var i = 0; i < data.length; i++)\n if (data[i].personObjectId === $('#session').data().personId)\n _this.selectedCalendar = data[i].personObjectId;\n }\n _this.calendar = data[0];\n });\n };\n TerminListController.prototype.getDateList = function (id, dateFrom, dateTo, force) {\n var _this = this;\n if (force === void 0) { force = false; }\n var currentRequest = { id: id, dateFrom: dateFrom, dateTo: dateTo, types: this.appointmentTypesToShow };\n if (!force && this.isGettingData || JSON.stringify(this.lastRequest) === JSON.stringify(currentRequest))\n return;\n this.lastRequest = currentRequest;\n this.calendarList = [];\n $(\"#\" + this.calendarName).fullCalendar('removeEvents');\n $(\"#\" + this.calendarName).fullCalendar('removeEventSource', this.calendarList);\n $(\"#\" + this.calendarName).fullCalendar('removeEventSources');\n this.isGettingData = true;\n this.loading = true;\n if (this.isWidget) {\n this.userService.getUserSettings(['APPOINTMENT.WIDGET.ORGA', 'APPOINTMENT.WIDGET.DAYSTOPAST', 'APPOINTMENT.WIDGET.DAYSTOFUTURE']).then(function (data) {\n _this.getForOrga = data[0].value.toLowerCase() === 'true';\n var daysToPast = data[1].value.length > 0 ? parseInt(data[1].value) : 0;\n var daysToFuture = data[2].value.length > 0 && parseInt(data[2].value) > 0 ? parseInt(data[2].value) : 7 - moment().isoWeekday();\n _this.viewDateFrom = moment().startOf('day').add(-daysToPast, 'd').toDate();\n _this.viewDateTo = moment().endOf('day').add(daysToFuture, 'd').toDate();\n _this.getData(id, _this.viewDateFrom, _this.viewDateTo, _this.getForOrga);\n });\n }\n else {\n this.$timeout(function () {\n _this.getData(id, dateFrom, dateTo, _this.getForOrga);\n });\n }\n };\n TerminListController.prototype.getData = function (id, dateFrom, dateTo, getOrga) {\n var _this = this;\n if (getOrga === void 0) { getOrga = false; }\n this.terminService.getAppointmentList(id, dateFrom, dateTo, this.appointmentTypesToShow, getOrga).then(function (data) {\n //Feiertage\n _this.terminService.getHolidaysSpecific(_this.calculateCurrentYearOfCalender(dateFrom, dateTo), _this.appointmentTypesToShow.some(function (x) { return x === 2; }), _this.appointmentTypesToShow.some(function (x) { return x === 1; })).then(function (holidays) {\n _this.$qui.functionWaiter(\"ui.createForm\", _this);\n _this.isGettingData = false;\n _this.loading = false;\n for (var i = 0; i < holidays.length; i++) {\n holidays[i].allDay = true;\n holidays[i].title = holidays[i].caption;\n holidays[i].editable = false;\n holidays[i].color = \"#DBDBDB\";\n holidays[i].start = moment(holidays[i].dateFrom);\n holidays[i].end = moment(holidays[i].dateTo);\n _this.calendarList.push(holidays[i]);\n }\n _this.eventCache = [];\n if (data[0] !== undefined)\n if (data[0].objectId.toString().length > 1) {\n for (var i = 0; i < data.length; i++) {\n _this.calendarList.push(_this.ui.createCalendarEvent(data[i], (data[i].appointmentTypeId === 840501 ||\n data[i].appointmentTypeId === 411010 ||\n data[i].appointmentTypeId === 401000) ? null : _this.$qui.generateGuid(), _this.appointmentTypes));\n }\n _this.eventCache = angular.copy(_this.calendarList);\n }\n $(\"#\" + _this.calendarName).fullCalendar('addEventSource', _this.calendarList);\n _this.loading = false;\n if (_this.isWidget)\n _this.widgetRender(_this.calendarList);\n else\n _this.setupCalendar();\n });\n });\n };\n TerminListController.prototype.resetCalendar = function () {\n $(\"#\" + this.calendarName).fullCalendar('removeEvents');\n $(\"#\" + this.calendarName).fullCalendar('removeEventSource', this.calendarList);\n $(\"#\" + this.calendarName).fullCalendar('removeEventSources');\n $(\"#\" + this.calendarName).fullCalendar('addEventSource', this.calendarList);\n $(\"#\" + this.calendarName).fullCalendar('refetchEvents');\n $(\"#\" + this.calendarName).fullCalendar('rerenderEvents');\n };\n TerminListController.prototype.calculateCurrentYearOfCalender = function (dateFrom, dateTo) {\n var To = this.$qui.createDateFromString(dateTo);\n var From = this.$qui.createDateFromString(dateFrom);\n var year = (To.getMonth() - From.getMonth() >= 0) ? To.getFullYear() : From.getFullYear();\n return year;\n };\n /**\n * Rendering of the Widget Calendar\n *\n * @returns\n *\n * @memberof TerminListController\n */\n TerminListController.prototype.widgetRender = function (calEvents) {\n return null;\n };\n /**\n * add an array of events to personal calendar\n *\n * @private\n * @param {*} arr\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.addToPersonalCalendar = function (arr) {\n var _this = this;\n $(\"#\" + this.calendarName).fullCalendar('removeEvents');\n this.calendarList2 = [];\n setTimeout(function () {\n _this.terminService.getAppointmentList(arr.personObjectId, _this.form.dateFrom, _this.form.dateTo, _this.appointmentTypesToShow).then(function (data) {\n for (var i = 0; i < data.length; i++) {\n if (data[0].objectId.toString().length > 1) {\n _this.calendarList2.push(_this.ui.createCalendarEvent(data[i]));\n }\n }\n $(\"#\" + _this.calendarName).fullCalendar('addEventSource', _this.calendarList2);\n _this.setupCalendar();\n });\n }, 500);\n };\n /**\n * add a new appointment\n *\n * @private\n * @param {*} form is modified IAppointmentCreate, to inject participants!\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.addAppointment = function (form) {\n var _this = this;\n if (form.recuringType > 0) {\n form.isRecurring = true;\n form.recurrenceOptions = this.reccuring.getOptions(Number(form.recuringType), form.dateFrom);\n form.recurrenceOptions.rangeDateFrom = form.dateFrom;\n this.reccuring.setRangeLimit(0);\n if (form.rangeDateTo !== null) {\n form.recurrenceOptions.rangeDateTo = form.rangeDateTo;\n this.reccuring.setRangeLimit(2);\n }\n }\n this.validateAppointment(form);\n this.validationCallback = function (form) {\n $('#edit-form').modal('hide');\n _this.terminService.postAppointment(form).then(function () {\n console.log(\"Form\", form);\n _this.ui.notify(_this.ui.successNote);\n _this.formState = 'new';\n _this.resetData();\n });\n };\n };\n /**\n * when a event on the fullcalendar has changed\n *\n * @private\n * @param {any} id\n * @param {any} data\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.changeEvents = function (id, isRecurring, participantId, dateFrom, data) {\n var _this = this;\n if (isRecurring) {\n QMC.Common.Utilities.confirm(this.promptOptions, function (prompt) {\n if (prompt)\n _this.modifyEvents(id, isRecurring, participantId, dateFrom, data, prompt.wholeSeries);\n else\n _this.resetCalendar();\n }, '#prompto');\n }\n else {\n this.modifyEvents(id, isRecurring, participantId, dateFrom, data);\n }\n };\n TerminListController.prototype.modifyEvents = function (id, isRecurring, participantId, dateFrom, data, wholeSeries) {\n var _this = this;\n if (wholeSeries === void 0) { wholeSeries = false; }\n if (id !== undefined) {\n this.loading = true;\n if (!(data.permissions.modify)) {\n this.$qui.notify({\n message: this.lng.translate(20002034, \"Keine Berechtigung für diesen Datensatz.\"),\n title: \"Fehler\",\n icon: \"qm-icon-error\",\n status: \"warning\",\n timer: 3500\n });\n this.resetData();\n return;\n }\n if (data.dateTo === null)\n data.dateTo = data.dateFrom;\n data.dateFrom = moment(data.dateFrom).toDate();\n data.dateTo = moment(data.dateTo).toDate();\n data.mainAppointmentId = id;\n data.participantIds = [participantId];\n data.changeDatesOnly = true;\n this.validateAppointment(data);\n this.validationCallback = function () {\n _this.terminService.putAppointment(id, isRecurring, participantId, dateFrom, wholeSeries, data, isRecurring && _this.dayChanged(id, data.dateFrom)).then(function () {\n _this.$qui.notify(_this.$qui.successNote);\n _this.resetData();\n });\n };\n }\n };\n TerminListController.prototype.getOriginalDate = function (id, getDateFrom) {\n if (getDateFrom === void 0) { getDateFrom = true; }\n for (var _i = 0, _a = this.eventCache; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n if (event_1.objectId === id) {\n return getDateFrom ? moment(event_1.start) : moment(event_1.end);\n }\n }\n return null;\n };\n TerminListController.prototype.dayChanged = function (id, date) {\n for (var _i = 0, _a = this.eventCache; _i < _a.length; _i++) {\n var event_2 = _a[_i];\n if (event_2.objectId === id) {\n return moment(event_2.dateFrom).isoWeekday() !== moment(date).isoWeekday();\n }\n }\n return false;\n };\n TerminListController.prototype.getPersonalCalendar = function (view) {\n var _this = this;\n if (view !== null)\n localStorage.setItem('calendarView', view.name);\n this.setViewDates();\n //$(`#${this.calendarName}`).fullCalendar('removeEvents'); //Why was this here? removed for Q3W-232\n this.requestLock = true;\n this.terminService.getCalendarList().then(function (data) {\n if (!_this.requestLock)\n return;\n _this.requestLock = false;\n if (data.length > 0) {\n _this.getDateList(_this.selectedCalendar, _this.viewDateFrom, _this.viewDateTo);\n if (_this.personalCalendar === undefined)\n _this.personalCalendar = data;\n }\n });\n };\n /**\n * reset the fullcalendar data, get new\n *\n * @public\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.resetData = function (force) {\n if (force === void 0) { force = false; }\n //this.calendarList = [];\n this.loading = true;\n this.lastRequest = {};\n this.getPersonalCalendar(null);\n this.getDateList(this.selectedCalendar, this.viewDateFrom, this.viewDateTo, force);\n };\n /**\n * render the fullcalendar\n *\n * @private\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.render = function () {\n var _this = this;\n this.$scope.$watch('vm.selectedCalendar', function (oldVal, newVal) {\n if (oldVal !== newVal && oldVal !== undefined) {\n _this.resetData();\n _this.form.participantIds = [_this.selectedCalendar];\n if (_this.selectedCalendar !== $('#session').data().personId) {\n _this.form.participantIds.push($('#session').data().personId);\n }\n }\n });\n this.$scope.$watch('vm.appointmentTypes', function (oldVal, newVal) {\n if (oldVal !== newVal && oldVal !== undefined) {\n _this.disableCheckboxes = true;\n setTimeout(function () { _this.disableCheckboxes = false; }, 1000); //coldfix\n _this.appointmentTypesToShow = [];\n for (var type in _this.appointmentTypes) {\n var currentType = _this.appointmentTypes[type];\n if (currentType.state) {\n _this.appointmentTypesToShow.push(currentType.typeId);\n }\n if (currentType.name === 'Ferien') {\n _this.userService.setUserSettings({ settings: [{ key: 'TERMINPLAN.FERIEN.VISIBLE', value: currentType.state }] }, false);\n }\n if (currentType.name === 'Feiertage') {\n _this.userService.setUserSettings({ settings: [{ key: 'TERMINPLAN.FEIERTAGE.VISIBLE', value: currentType.state }] }, false);\n }\n }\n if (_this.disableCheckboxes)\n _this.resetData();\n console.log('#### appTypesToShow: ', _this.appointmentTypesToShow);\n //save selection in storage\n if (_this.appointmentTypesToShow.length > 0)\n window.localStorage.setItem(QMC.Common.LocalStorageConstants.APPOINTMENT_TYPES_TO_SHOW, _this.appointmentTypesToShow.toString());\n }\n }, true);\n setTimeout(function () {\n $(\"#\" + _this.calendarName).fullCalendar('render');\n }, 500);\n };\n /**\n * get the height for the fullcalendar by device\n *\n * @private\n * @returns {number}\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.getHeight = function () {\n if ($('body').hasClass('mobile'))\n return 350;\n return 650;\n };\n /**\n * set the view dates for the fullcalendar\n *\n * @private\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.setViewDates = function () {\n if (this.isWidget) {\n this.viewDateFrom = moment(new Date()).format();\n this.viewDateTo = moment(new Date()).endOf('week').format();\n return;\n }\n ;\n var dateFrom = $(\"#\" + this.calendarName).fullCalendar('getView').start;\n var dateTo = $(\"#\" + this.calendarName).fullCalendar('getView').end;\n if (typeof dateFrom !== \"object\")\n dateFrom = new Date();\n if (typeof dateTo !== \"object\")\n dateTo = new Date();\n this.viewDateFrom = moment(dateFrom).startOf('week').format();\n this.viewDateTo = moment(dateTo).endOf('week').add(1, 'day').format();\n };\n /**\n * Returns a qmc calendar event which can be shown in the calendar\n * @param appointment The appointment object\n */\n TerminListController.prototype.createCalendarEvent = function (appointment) {\n var event = {};\n event.id = appointment.objectId;\n event.objectId = appointment.objectId;\n event.mid = appointment.mainAppointmentId;\n event.title = appointment.title;\n event.start = moment(appointment.dateFrom);\n event.end = moment(appointment.dateTo);\n event.allDay = appointment.isAllDay;\n event.isFinished = appointment.isFinished;\n event.isPrivate = appointment.isPrivate;\n event.isRecurring = appointment.isRecurring;\n event.isTypeAppointment = appointment.isTypeAppointment;\n event.editable = true;\n event.color = appointment.colorHtml;\n event.iconCode = \"\";\n event.recurrenceSettings = appointment.recurrenceSettings;\n if (event.isFinished) {\n event.iconCode += \" \";\n }\n if (event.isPrivate) {\n event.iconCode += \" \";\n }\n if (event.isRecurring) {\n event.iconCode += \" \";\n event.editable = false;\n }\n if (event.isDeleted) {\n event.iconCode += \" \";\n }\n if (!event.isTypeAppointment) {\n event.editable = false;\n }\n return event;\n };\n TerminListController.prototype.getAppointmentObject = function (id) {\n for (var i = 0; i < this.calendarList.length; i++) {\n var objAppointment = this.calendarList[i];\n if (objAppointment.id === id) {\n return objAppointment;\n }\n }\n return null;\n };\n /**\n * configuration for the fullcalendar\n *\n * @private\n *\n * @memberOf TerminListController\n */\n TerminListController.prototype.setupCalendar = function () {\n var _this = this;\n var _a;\n var allDayText = this.lng.translate(20018016, \"Ganztägig\");\n // height was : \"contentHeight: this.getHeight(),\"\n $(\"#\" + this.calendarName).fullCalendar({\n schedulerLicenseKey: QMC.Common.Constants.FULL_CALENDAR_PREMIUM_LICENSE,\n defaultTimedEventDuration: '00:30:00',\n contentHeight: window.innerHeight - 250,\n defaultView: (_a = this.$stateParams.view) !== null && _a !== void 0 ? _a : this.ui.deviceDefault(),\n allDayText: allDayText,\n timezone: \"local\",\n allDaySlot: true,\n slotLabelFormat: 'H:mm',\n slotDuration: this.$qui.timeStringFromHours(this.slotDuration),\n events: this.calendarList,\n firstDay: 1,\n monthNames: this.lng.translate(20018519, 'Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember').split(','),\n monthNamesShort: this.lng.translate(20018520, 'Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez').split(','),\n dayNames: this.lng.translate(20018521, 'Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag').split(','),\n dayNamesShort: this.lng.translate(20018522, 'So.,Mo.,Di.,Mi.,Do.,Fr.,Sa.').split(','),\n weekNumbers: true,\n weekNumberCalculation: function (date) { return moment(date).isoWeek(); },\n nowIndicator: true,\n views: {\n month: {\n //titleFormat: 'MMMM yyyy'\n },\n week: {\n titleFormat: 'dddd, D MMM YYYY'\n },\n day: {\n titleFormat: 'dddd D.MM'\n }\n },\n buttonText: {\n today: this.lng.translate(20000126, 'Heute'),\n month: this.lng.translate(20000115, 'Monat'),\n week: this.lng.translate(20000114, 'Woche'),\n day: this.lng.translate(20000041, 'Tag')\n },\n viewRender: function (view, element) {\n _this.$state.go('.', {\n startDay: _this.$qui.createDateFromString($(\"#\" + _this.calendarName).fullCalendar('getView').start).toISOString(),\n view: $(\"#\" + _this.calendarName).fullCalendar('getView').name\n });\n _this.getPersonalCalendar(view);\n },\n columnFormat: 'ddd D.M',\n timeFormat: 'H:mm',\n header: {\n left: 'prev,next today',\n center: 'title',\n right: 'month, agendaWeek, agendaDay'\n },\n editable: true,\n droppable: true,\n eventRender: function (event, element) {\n $(element).find(\".fc-title\").prepend(event.iconCode);\n },\n eventResize: function (event) {\n var _a;\n var newForm = {\n dateFrom: event.start,\n dateTo: event.end,\n title: event.title,\n isAllDay: event.allDay,\n changeDatesOnly: true,\n permissions: (_a = event.permissions) !== null && _a !== void 0 ? _a : _this.appointmentObjectPermissions\n };\n _this.changeEvents(event.isRecurring ? event.mid : event.objectId, event.isRecurring, event.participantObjectId, event.start, newForm);\n },\n eventDrop: function (event, detla, revert) {\n var objAppointment = _this.getAppointmentObject(event.id);\n var newForm = {\n dateFrom: event.start,\n dateTo: event.end,\n title: event.title,\n isAllDay: event.allDay,\n changeDatesOnly: true,\n recurrenceChangeDateFrom: _this.getOriginalDate(event.isRecurring ? event.mid : event.objectId),\n recurrenceChangeDateTo: _this.getOriginalDate(event.isRecurring ? event.mid : event.objectId, false),\n appointmentTypeId: _this.appointment != null ? objAppointment.appointmentTypeId : event.appointmentType,\n location: _this.appointment != null ? objAppointment.location : event.location,\n isTypeAppointment: _this.appointment != null ? objAppointment.isTypeAppointment : event.isTypeAppointment,\n isFinished: _this.appointment != null ? objAppointment.isFinished : event.isFinished,\n description: _this.appointment != null ? objAppointment.description : event.description,\n isPrivate: _this.appointment != null ? objAppointment.isPrivate : event.isPrivate,\n isManual: _this.appointment != null ? objAppointment.isManual : event.isManual,\n isRecurring: _this.appointment != null ? objAppointment.isRecurring : event.isRecurring,\n isDeleted: _this.appointment != null ? objAppointment.isDeleted : event.isDeleted,\n colorHtml: _this.appointment != null ? objAppointment.colorHtml : event.color,\n recurrenceSettings: _this.appointment != null ? objAppointment.recurrenceSettings : event.recurrenceSettings,\n permissions: event.permissions\n };\n if ((event.isRecurring && moment(event.start).format('YYYY-MM-DD') === event.dateFrom) || (!event.isRecurring)) {\n _this.calendarList = [];\n _this.changeEvents(event.isRecurring ? event.mid : event.objectId, event.isRecurring, event.participantObjectId, event.start, newForm);\n }\n else {\n _this.promptChangeRecurringTerminDate.title = event.title;\n _this.$qui.scopeApply(_this.$scope);\n QMC.Common.Utilities.confirm(_this.promptChangeRecurringTerminDate, function (result) {\n if (result) {\n location.hash = _this.ui.detailLink(event, true);\n }\n else {\n _this.resetCalendar();\n }\n }, '#promptChangeRecurringDate');\n }\n },\n drop: function () {\n },\n aspectRatio: 5,\n eventClick: function (event) {\n if (event.appointmentType === 840501) {\n if (event.isFinished)\n _this.$state.go(\"tasksdetail\", { id: event.mainAppointmentId });\n else {\n _this.promptOptionsTask.title = event.title;\n _this.$qui.scopeApply(_this.$scope);\n QMC.Common.Utilities.confirm(_this.promptOptionsTask, function (result) {\n if (result) {\n _this.taskService.setFinishedState(event.mainAppointmentId, true, moment().format('YYYY-MM-DD')).then(function () {\n _this.$qui.notify(_this.$qui.successNote);\n _this.resetData();\n });\n }\n else {\n _this.$state.go(\"tasksdetail\", { id: event.mainAppointmentId });\n }\n }, '#promptTask');\n }\n }\n else if (event.appointmentType === 411010) {\n localStorage.setItem(QMC.Common.LocalStorageConstants.AZN_PREVIOUS_STATE, JSON.stringify({\n state: _this.$state.$current.name,\n params: _this.$state.$current.name\n }));\n _this.$state.go('azndetail', { \"id\": event.id });\n }\n else if (event.appointmentType === 401008) {\n $('#unsupportedAppointmentTypeModal').modal('show');\n }\n else if (event.editable) {\n if (event.end === undefined || event.end === null)\n event.end = event.start;\n var path_1 = _this.ui.detailLink(event, !event.isRecurring);\n if (event.isRecurring) {\n _this.promptOptions.title = event.title;\n _this.$qui.scopeApply(_this.$scope);\n QMC.Common.Utilities.confirm(_this.promptOptions, function (prompt) {\n if (prompt) {\n if (location.hash !== path_1)\n location.hash = _this.ui.detailLink(event, prompt.wholeSeries);\n else {\n location.hash = '#/appointment';\n setTimeout(function () {\n location.hash = _this.ui.detailLink(event, prompt.wholeSeries);\n }, 500);\n }\n }\n }, '#prompto');\n }\n else {\n if (location.hash !== path_1)\n location.hash = _this.ui.detailLink(event, false);\n else {\n location.hash = '#/appointment';\n setTimeout(function () {\n location.hash = _this.ui.detailLink(event, false);\n }, 500);\n }\n }\n }\n },\n dayClick: function (date, jsEvent, view) {\n var singleClick = moment(date).toISOString();\n if (_this.dblClick === singleClick) {\n if (_this.appointmentObjectPermissions.new) {\n $(\"#edit-form\").modal(\"toggle\");\n _this.form.dateFrom = moment(date).toDate();\n _this.form.dateTo = moment(date).add('minutes', 30).toDate();\n _this.form.rangeDateFrom = moment(date).toDate();\n _this.form.disableRecurringEndDate = true;\n _this.$qui.scopeApply(_this.$scope);\n }\n _this.dblClick = null;\n }\n else {\n _this.dblClick = moment(date).toISOString();\n clearInterval(_this.clickTimer);\n _this.clickTimer = setInterval(function () {\n this.dblClick = null;\n clearInterval(this.clickTimer);\n }, 500);\n }\n if (view.name === 'month') {\n $(\"#\" + _this.calendarName).fullCalendar('gotoDate', date);\n $(\"#\" + _this.calendarName).fullCalendar('changeView', 'agendaWeek');\n }\n }\n });\n if (this.firstLoad && !this.isWidget && this.$stateParams.startDay) {\n this.firstLoad = false;\n var dateMoment = moment(this.$stateParams.startDay);\n if (this.$stateParams.view === 'month' && dateMoment.date() > 24)\n dateMoment = dateMoment.add(1, 'month').startOf('month');\n $(\"#\" + this.calendarName).fullCalendar('gotoDate', dateMoment.toDate());\n }\n };\n TerminListController.prototype.getShareablePersonList = function () {\n var _this = this;\n this.terminService.getShareablePersonList().then(function (data) {\n _this.shareablePersonList = data;\n });\n };\n TerminListController.prototype.getAccessibleCalendarList = function (selectedCalendarType) {\n var _this = this;\n this.loadingAccessibleCalendarList = true;\n this.terminService.getAccessibleCalenderList(selectedCalendarType).then(function (data) {\n _this.accessibleCalendarList = data;\n _this.loadingAccessibleCalendarList = false;\n });\n };\n TerminListController.prototype.getCalenderTypeList = function () {\n var _this = this;\n this.terminService.getCalendarTypeList().then(function (data) {\n _this.calendarTypeList = data;\n _this.calendarTypeListMap = _this.$qui.selectAutoMap(data, 'objectType', 'caption');\n });\n this.$scope.$watch('vm.selectedCalendarType', function (newVal, oldVal) {\n if (newVal === oldVal)\n return;\n _this.calendarTypeChanged();\n });\n };\n TerminListController.prototype.calendarTypeChanged = function () {\n this.getAccessibleCalendarList(this.selectedCalendarType);\n };\n TerminListController.prototype.shareablePersonListItemChanged = function (changedItem) {\n this.shareablePersonListChanges.push(changedItem);\n };\n TerminListController.prototype.putAccessible = function () {\n var _this = this;\n $('#addCalenderModal').modal('hide');\n this.loadingAccessibleCalendarList = true;\n this.terminService.putAccessible(this.accessibleCalendarList).then(function () {\n _this.getAccessibleCalendarList(_this.selectedCalendarType);\n _this.getCalendarList();\n if (_this.selectedCalendarType === 130000)\n _this.getDateList(_this.selectedCalendar, _this.viewDateFrom, _this.viewDateTo);\n });\n };\n TerminListController.prototype.putShareOwnCalender = function (item) {\n var _this = this;\n $('#enableCalenderModal').modal('hide');\n var list = this.shareablePersonListChanges.map(function (item) { return { userId: item.userObjectId, canView: item.canView, canCreateModify: item.canCreateModify, canDelete: item.canDelete }; });\n this.terminService.putShareOwnCalendar(list).then(function () {\n _this.shareablePersonListChanges = [];\n _this.getShareablePersonList();\n });\n };\n TerminListController = __decorate([\n QMC.Controller('QMC.Termin', 'TerminListController'),\n QMC.Inject('TerminService', '$qui', 'FachleistungService', 'KlientService', '$state', '$scope', '$timeout', 'QmcLanguageService', 'UserService', '$rootScope', '$location', 'QmcPermissionService', '$stateParams', 'AufgabenService', 'StammdatenService')\n ], TerminListController);\n return TerminListController;\n }());\n Termin.TerminListController = TerminListController;\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var TerminDetailController = /** @class */ (function () {\n /**\n * Creates an instance of TerminDetailController.\n * @param {TerminService} terminService\n * @param {any} $qui\n * @param {Fachleistung.FlsService} flsService\n * @param {any} $state\n * @param {any} $stateParams\n * @param {any} $scope\n * @param {Klient.KlientService} clientService\n * @param {Common.QmcLanguageService} lng\n *\n * @memberOf TerminDetailController\n */\n function TerminDetailController(terminService, $qui, flsService, $state, $stateParams, $scope, $timeout, clientService, lng, permissionService) {\n var _this = this;\n this.terminService = terminService;\n this.$qui = $qui;\n this.flsService = flsService;\n this.$state = $state;\n this.$stateParams = $stateParams;\n this.$scope = $scope;\n this.$timeout = $timeout;\n this.clientService = clientService;\n this.lng = lng;\n this.permissionService = permissionService;\n this.ui = new Termin.UserInterface();\n this.calendarList = [];\n this.formState = 'new';\n this.appointmentTypesToShow = [\n 401000,\n 401010 // Fls\n ];\n this.promptOptions = {};\n this.reccuring = new Termin.RecurringOptions();\n this.permissions = {\n delete: false,\n modify: false,\n new: true\n };\n this.loadingSemaphor = false;\n this.participants = [];\n this.loading = { participants: false, appointment: false, calendar: false };\n /**\n * get list of specific reccuring types\n *\n * @private\n *\n * @memberOf TerminListController\n */\n this.getRecurringTypes = function () { return _this.reccuring.reccuringSelectList; };\n this.getReminderUnits = function () { return _this.reminderUnits; };\n if (document.getElementById(\"permissions\").getAttribute(\"appointment\").toLocaleLowerCase() !== \"true\") {\n console.log(\"No rights to see module appointment\");\n this.forbidden = true;\n return;\n }\n var storageObject = window.localStorage.getItem(QMC.Common.LocalStorageConstants.APPOINTMENT_TYPES_TO_SHOW);\n if (storageObject !== undefined && storageObject !== \"\")\n this.appointmentTypesToShow = storageObject.split(\",\").map(Number);\n this.initForm();\n this.getDetailData();\n this.reminderUnits = [\n { value: 0, text: this.lng.translate(20000247, 'Minuten') },\n { value: 1, text: this.lng.translate(20000219, 'Stunden') },\n { value: 2, text: this.lng.translate(20000245, 'Tage') },\n { value: 3, text: this.lng.translate(20000246, 'Monate') }\n ];\n flsService.getCasesList().then(function (data) {\n _this.cases = data;\n _this.caseList = $qui.select(data, { value: 'internalName', text: 'internalName' });\n });\n this.$timeout = $timeout;\n this.promptOptionsAllParticipantsDelete = {\n title: this.lng.translate(20018048, 'Wollen Sie den Termin wirklich löschen?'),\n id: \"prompt-delete\",\n icon: \"qm-icon-calendar_7\",\n fields: [\n {\n text: this.lng.translate(20018043, 'Soll der Termin für alle Teilnehmer gelöscht werden?'), name: 'allParticipants',\n options: [{ text: this.lng.translate(20018046, \"Nur für mich\"), value: false }, { text: this.lng.translate(20018047, \"Für alle Teilnehmer\"), value: true }]\n }\n ]\n };\n this.promptOptionsApointmentDelete = {\n title: this.lng.translate(20018033, \"Termin\"),\n icon: \"qm-icon-calendar_7\",\n yesNo: true,\n id: \"prompt-single-delete\",\n text: this.lng.translate(20018048, 'Wollen Sie den Termin wirklich löschen?')\n };\n this.promptOptionsSingleUpdate = {\n title: this.lng.translate(20018033, \"Termin\"),\n icon: \"qm-icon-calendar_7\",\n yesNo: true,\n id: \"prompt-single-update\",\n text: this.lng.translate(20018049, 'Wollen Sie den Termin wirklich bearbeiten?')\n };\n this.promptOptionsSeriesUpdate = {\n title: this.lng.translate(20018050, \"Serientermin\"),\n icon: \"qm-icon-calendar_7\",\n id: \"prompt-change\",\n fields: [\n {\n text: this.lng.translate(20018051, 'Wollen Sie diesen Termin oder die ganze Serie bearbeiten?'), name: 'wholeSeries',\n options: [{ text: this.lng.translate(20018044, \"Dieser Termin\"), value: false }, { text: this.lng.translate(20018045, \"Alle Termine dieser Serie\"), value: true }]\n }\n ]\n };\n this.promptOptionsOnlySeriesUpdate = {\n title: this.lng.translate(20018050, \"Serientermin\"),\n icon: \"qm-icon-calendar_7\",\n yesNo: true,\n id: \"prompt-single-update\",\n text: this.lng.translate(20018054, 'Wollen Sie die Terminserie wirklich bearbeiten?')\n };\n $qui.init($qui.getSectionColor('/appointment'), function () {\n $qui.anonAvatar();\n $qui.bindEvents();\n $(\".help-block\").parent(\"div\").attr(\"style\", \"\");\n });\n this.$scope.$watch('vm.form.recuringType', function () {\n var _a;\n if (_this.form.recuringType > 0 && _this.form.recuringType !== null && _this.form.disableRecurring === false) {\n _this.form.disableRecurringEndDate = false;\n _this.form.rangeDateFrom = _this.form.dateFrom;\n _this.form.rangeDateTo = (_a = _this.form.rangeDateTo) !== null && _a !== void 0 ? _a : _this.oldRangeDateTo;\n _this.form.isRecurring = true;\n }\n else {\n _this.form.disableRecurringEndDate = true;\n _this.form.isRecurring = _this.form.recuringType !== null && _this.form.recuringType !== undefined;\n _this.form.rangeDateTo = _this.form.isRecurring ? _this.form.rangeDateTo : null;\n }\n });\n this.loading.participants = true;\n this.clientService.getPersonListByObjectTypes([120000, 130000, 140000, 140006], '', true, false).then(function (data) {\n data.map(function (item) {\n item.displayTitle = _this.$qui.createPersonDisplay(item.displayTitle, '', item.shortCaption, item.personNumber);\n return item;\n });\n _this.clientService.getAllPersonLists().then(function (dataPL) {\n _this.clientService.getResourceList('', true).then(function (dataRes) {\n _this.clientService.getVehicleList().then(function (dataVeh) {\n var temp = data.map(function (x) { return ({ text: x.displayTitle, value: x.objectId, group: _this.getGroupName(x.objectType), subText: x.institute }); });\n temp = temp.concat(dataPL.map(function (x) { return ({ text: x.name, value: x.objectId, group: _this.lng.translate(20000237, 'Personenliste'), subText: '' }); }));\n temp = temp.concat(dataRes.map(function (x) { return ({ text: x.caption, value: x.objectId, group: _this.lng.translate(20000271, 'Ressource'), subText: x.institute }); }));\n temp = temp.concat(dataVeh.map(function (x) { return ({ text: x.displayTitle, value: x.objectId, group: _this.lng.translate(20029006, 'Fuhrpark'), subText: x.kindOfVehicle }); }));\n temp.sort(function (a, b) { return (a.text.toLocaleLowerCase() > b.text.toLocaleLowerCase()) ? 1 : ((b.text.toLocaleLowerCase() > a.text.toLocaleLowerCase()) ? -1 : 0); });\n temp.sort(function (a, b) { return (a.group.toLocaleLowerCase() > b.group.toLocaleLowerCase()) ? 1 : ((b.group.toLocaleLowerCase() > a.group.toLocaleLowerCase()) ? -1 : 0); });\n _this.participants = temp;\n _this.loading.participants = false;\n });\n });\n });\n });\n }\n TerminDetailController.prototype.getParticipants = function () {\n return this.participants;\n };\n TerminDetailController.prototype.getGroupName = function (type) {\n switch (type) {\n case 120000:\n return this.lng.translate(20000235, 'Mitarbeiter');\n case 130000:\n return this.lng.translate(20000279, 'Organisation');\n case 140000:\n return this.lng.translate(21002000, 'Klient');\n case 140006:\n return this.lng.translate(20001048, 'Kontaktperson');\n default:\n return '';\n }\n };\n /**\n * convert a string to title case\n *\n * @private\n * @param {string} str\n * @returns {string}\n *\n * @memberOf TerminDetailController\n */\n TerminDetailController.prototype.toTitleCase = function (str) {\n return str.replace(/\\w\\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });\n };\n /**\n * init the form with default values\n *\n * @private\n *\n * @memberOf TerminDetailController\n */\n TerminDetailController.prototype.initForm = function () {\n this.form = {\n title: null,\n dateFrom: null,\n dateTo: null,\n isAllDay: true,\n location: null,\n participantIds: [],\n description: null,\n isFinished: false,\n isPrivate: false,\n rangeDateFrom: null,\n rangeDateTo: null,\n recuringType: 0,\n disableRecurring: false,\n disableRecurringEndDate: false,\n recurrenceChangeDateFrom: null,\n recurrenceChangeDateTo: null,\n recurrenceData: null\n };\n };\n TerminDetailController.prototype.toogleBackButton = function () {\n var _this = this;\n this.$qui.waitForEl('#edit-form-detail', function () {\n $('#edit-form-detail').on('hidden.bs.modal', function () {\n for (var _i = 0, _a = _this.$state.history; _i < _a.length; _i++) {\n var element = _a[_i];\n //in order to avoid getting the <> also check if url is the basic home appointment url\n if ((element.name === 'appointment') && (element.url === '/appointment?:startDay?view')) {\n _this.$state.go(element.name, element.params);\n var url = $(\"#session\").data().baseUrl + element.url;\n history.replaceState({ backButtonPresse: false }, '', url.replace('//', '/'));\n break;\n }\n }\n });\n });\n };\n /**\n * put an existing appointment\n *\n * @private\n * @param {any} form is modified IAppointmentUpdate, to inject participants\n *\n * @memberOf TerminListController\n */\n TerminDetailController.prototype.putAppointment = function (form) {\n var _this = this;\n this.validateAppointment(form);\n this.validationCallback = function () {\n $('#edit-form-detail').modal('hide');\n _this.sendPut(form);\n };\n };\n TerminDetailController.prototype.sendPut = function (form) {\n var _this = this;\n var _a;\n this.loading.appointment = true;\n if (form.isRecurring) {\n form.recurrenceOptions = this.reccuring.getOptions(Number(form.recuringType), form.dateFrom);\n if (form.recuringType > 0) {\n form.isRecurring = true;\n if (form.recurrenceOptions === null)\n form.isRecurring = false;\n form.recurrenceOptions.rangeDateFrom = (_a = form.rangeDateFrom) !== null && _a !== void 0 ? _a : form.dateFrom;\n form.recurrenceOptions.rangeDateTo = form.rangeDateTo;\n this.reccuring.setRangeLimit(0);\n if (form.recuringType > 0) {\n this.reccuring.setRangeLimit(2);\n }\n //when the appointment is edited as a whole, do not forget to set the dateFrom and dateTo with the rageDateFrom\n if (this.$stateParams.wholeSerie === \"true\") {\n form.dateTo.setDate(form.dateFrom.getDate());\n form.dateTo.setMonth(form.dateFrom.getMonth());\n form.dateTo.setFullYear(form.dateFrom.getFullYear());\n form.recurrenceOptions.rangeDateFrom = form.dateFrom;\n form.rangeDateFrom = form.dateFrom;\n }\n form.recurrenceOptions = this.reccuring.getOptions(Number(form.recuringType), form.rangeDateFrom);\n }\n }\n else {\n form.recurrenceOptions = null;\n form.recurrenceSettings = null;\n }\n this.terminService.putAppointment((form.isRecurring && form.recuringType > 0) ? form.mainAppointmentId : form.id, (form.isRecurring && form.recuringType > 0), this.selectedCalendar, form.isRecurring && form.recuringType > 0 ? form.rangeDateFrom : form.dateFrom, !!(form.isRecurring && form.recurrenceOptions != null && !form.disableRecurring), form).then(function () {\n _this.ui.notify(_this.ui.successNote);\n _this.formState = \"new\";\n }).finally(function () {\n _this.loading.appointment = true;\n location.hash = \"#/appointment\";\n });\n };\n /**\n * remove a appointment\n *\n * @private\n * @param {IAppointment} form\n *\n * @memberOf TerminListController\n */\n TerminDetailController.prototype.deleteAppointment = function (form) {\n var _this = this;\n $('#edit-form-detail').unbind('hidden.bs.modal');\n $('#edit-form-detail').modal('toggle');\n //if one participant, do not show the prompt for asking user to delete for him or for all participants\n this.promptOptions = form.participantIds.length > 1 ? this.promptOptionsAllParticipantsDelete : this.promptOptionsApointmentDelete;\n QMC.Common.Utilities.confirm(this.promptOptions, function (data) {\n if (data) {\n _this.terminService.deleteAppointment(form.isRecurring ? form.mainAppointmentId : form.id, form.isRecurring, _this.selectedCalendar, form.isRecurring ? form.rangeDateFrom : form.dateFrom, _this.$stateParams.wholeSerie === \"true\" ? 1 : 0, form.participantIds.length > 1 ? data.allParticipants : false).then(function () {\n _this.ui.notify(_this.ui.deleteNote, _this.lng.translate(20018032, \"Termin gelöscht\"));\n _this.formState = 'new';\n location.hash = \"#/appointment\";\n });\n }\n else {\n location.hash = '#/appointment';\n }\n });\n };\n /**\n * get the detail data by id\n *\n * @private\n *\n * @memberOf TerminDetailController\n */\n TerminDetailController.prototype.getDetailData = function () {\n var _this = this;\n this.permissions = {\n new: true,\n modify: false,\n delete: false,\n };\n this.terminService.getAppointment(this.$stateParams.id, this.$stateParams.participantId, this.$stateParams.dateFrom, this.$stateParams.wholeSerie, this.$stateParams.permFlag).then(function (data) {\n _this.permissions.delete = data.permissions.delete;\n _this.permissions.new = data.permissions.new;\n _this.permissions.modify = data.permissions.modify;\n _this.selectedCalendar = _this.$stateParams.participantId;\n _this.form = data;\n _this.form.disableRecurring = _this.$stateParams.wholeSerie !== \"true\" && data.isRecurring;\n _this.formState = 'edit';\n if (_this.form.recurrenceOptions !== null) {\n _this.form.recuringType = _this.reccuring.setInputField(_this.form.recurrenceOptions);\n _this.oldRecurringType = _this.form.recuringType;\n }\n _this.form.dateFrom = _this.$qui.createDateFromString(!data.isRecurring || _this.$stateParams.start == 0 || _this.$stateParams.wholeSerie === \"true\" ? data.dateFrom : _this.$stateParams.start);\n _this.form.dateTo = _this.$qui.createDateFromString(!data.isRecurring || _this.$stateParams.end == 0 || _this.$stateParams.wholeSerie === \"true\" ? data.dateTo : _this.$stateParams.end);\n if (data.isRecurring) {\n _this.form.rangeDateTo = data.recurrenceOptions.rangeDateTo != null ?\n _this.$qui.createDateFromString(data.recurrenceOptions.rangeDateTo) : null;\n _this.form.rangeDateFrom = data.recurrenceOptions.rangeDateFrom != null ?\n _this.$qui.createDateFromString(data.recurrenceOptions.rangeDateFrom) :\n _this.$qui.createDateFromString(_this.form.dateFrom);\n _this.form.rangeDateFrom.setTime(_this.form.dateFrom.getTime());\n _this.oldRangeDateTo = _this.form.rangeDateTo;\n }\n else {\n _this.form.disableRecurringEndDate = false;\n _this.form.rangeDateFrom = _this.$qui.createDateFromString(_this.form.dateFrom);\n _this.form.rangeDateTo = _this.form.dateTo;\n _this.form.isRecurring = false;\n }\n _this.form.recurrenceChangeDateFrom = data.isRecurring ? _this.form.rangeDateFrom : _this.form.dateFrom;\n _this.form.recurrenceChangeDateTo = data.isRecurring ? _this.form.rangeDateTo : _this.form.dateTo;\n _this.form.recurringType = _this.reccuring.setInputField(data.recurrenceOptions);\n $('#edit-form-detail').modal('show');\n _this.loading.appointment = false;\n _this.waitToCreateForm();\n _this.toogleBackButton();\n });\n };\n TerminDetailController.prototype.waitToCreateForm = function () {\n var _this = this;\n if (!this.loading.appointment && !this.loading.participants) {\n this.$timeout(function () {\n _this.$qui.functionWaiter(\"ui.createDetailForm\", _this);\n _this.$qui.scopeApply(_this.$scope);\n });\n }\n else {\n setTimeout(function () {\n _this.waitToCreateForm();\n }, 250);\n }\n };\n /**\n * Returns a qmc calendar event which can be shown in the calendar\n * @param appointment The appointment object\n */\n TerminDetailController.prototype.createCalendarEvent = function (appointment) {\n var event = {};\n event.id = appointment.objectId;\n event.objectId = appointment.objectId;\n event.mid = appointment.mainAppointmentId;\n event.title = appointment.title;\n event.start = moment(appointment.dateFrom);\n event.end = moment(appointment.dateTo);\n event.allDay = appointment.isAllDay;\n event.isFinished = appointment.isFinished;\n event.isPrivate = appointment.isPrivate;\n event.isRecurring = appointment.isRecurring;\n event.isTypeAppointment = appointment.isTypeAppointment;\n event.editable = true;\n event.color = appointment.colorHtml;\n event.iconCode = \"\";\n if (event.isFinished) {\n event.iconCode += \" \";\n }\n if (event.isPrivate) {\n event.iconCode += \" \";\n }\n if (event.isRecurring) {\n event.iconCode += \" \";\n event.editable = false;\n }\n if (event.isDeleted) {\n event.iconCode += \" \";\n }\n if (!event.isTypeAppointment) {\n event.editable = false;\n }\n return event;\n };\n TerminDetailController = __decorate([\n QMC.Controller('QMC.Termin', 'TerminDetailController'),\n QMC.Inject('TerminService', '$qui', 'FachleistungService', '$state', '$stateParams', '$scope', '$timeout', 'KlientService', 'QmcLanguageService', 'QmcPermissionService')\n ], TerminDetailController);\n return TerminDetailController;\n }());\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var RecurringOptions = /** @class */ (function () {\n function RecurringOptions() {\n this.reccuringSelectList = [];\n this.reccuringTypes = ['Niemals', 'Täglich', 'Wöchentlich', 'Alle 2 Wochen', 'Monatlich', 'Jährlich'];\n this.getInfragisticsWeekday = function (date) {\n switch (date.getDay()) {\n case 0:\n return 1;\n case 1:\n return 2;\n case 2:\n return 4;\n case 3:\n return 8;\n case 4:\n return 16;\n case 5:\n return 32;\n case 6:\n return 64;\n default:\n return 1;\n }\n };\n this.options = {\n \"frequency\": 1,\n \"rangeLimit\": 0,\n \"rangeMaxOcurrences\": 0,\n \"rangeDateFrom\": \"2017-05-02T08:33:03.820Z\",\n \"rangeDateTo\": \"2030-05-02T08:33:03.820Z\",\n \"occurence\": 0,\n \"interval\": 1,\n \"dayOfMonth\": 0,\n \"monthOfYear\": 0,\n \"daysOfWeek\": [0]\n };\n this.options.rangeDateFrom = new Date();\n this.setOptionList();\n }\n RecurringOptions.prototype.setOptionList = function () {\n var _this = this;\n var optionWrap = function (val) {\n _this.reccuringSelectList.push({\n value: _this.reccuringSelectList.length,\n text: val,\n isFix: _this.reccuringSelectList.length < 1\n });\n };\n for (var recType in this.reccuringTypes)\n optionWrap(this.reccuringTypes[recType]);\n setTimeout(function () { $(\"#recuringType\").val(0); }, 950);\n };\n RecurringOptions.prototype.setInputField = function (options) {\n console.log(\"options\", options);\n if (options == null)\n return 0;\n if (options.frequency === 0)\n return 1;\n if (options.frequency === 1) {\n if (options.interval === 1)\n return 2;\n if (options.interval === 2)\n return 3;\n }\n if (options.frequency === 2)\n return 4;\n if (options.frequency === 3)\n return 5;\n return 0;\n };\n RecurringOptions.prototype.getOptions = function (type, date) {\n if (type < 0)\n return null;\n switch (type) {\n case 0:\n return null;\n case 1:\n this.options.frequency = 0;\n this.options.interval = 1;\n this.options.daysOfWeek = [127];\n break;\n case 2:\n this.options.frequency = 1;\n this.options.interval = 1;\n this.options.daysOfWeek = [];\n this.options.daysOfWeek.push(this.getInfragisticsWeekday(date));\n break;\n case 3:\n this.options.frequency = 1;\n this.options.interval = 2;\n this.options.daysOfWeek = [];\n this.options.daysOfWeek.push(this.getInfragisticsWeekday(date));\n break;\n case 4:\n this.options.frequency = 2;\n this.options.interval = 1;\n this.options.dayOfMonth = date.getDate();\n break;\n case 5:\n this.options.frequency = 3;\n this.options.interval = 1;\n this.options.dayOfMonth = date.getDate();\n this.options.monthOfYear = date.getMonth() + 1;\n break;\n }\n return this.options;\n };\n RecurringOptions.prototype.setRangeLimit = function (limit) {\n this.options.rangeLimit = limit;\n };\n return RecurringOptions;\n }());\n Termin.RecurringOptions = RecurringOptions;\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var TerminDirective = /** @class */ (function () {\n function TerminDirective() {\n this.restrict = 'E';\n this.templateUrl = './Termin/Widget';\n this.replace = true;\n this.scope = {};\n this.controllerAs = 'vm';\n this.controller = 'TerminListController';\n this.bindToController = true;\n this.link = function (scope, element, attrs, ctrl) {\n ctrl.isWidget = true;\n ctrl.calendarName = 'widgetCalendar';\n scope.dateNow = Date.now();\n scope.forbidden = false;\n scope.openNewModal = function () {\n ctrl.initForm();\n $('#edit-form').modal('toggle');\n };\n ctrl.setupCalendar = function () {\n var _this = this;\n var _a;\n var allDayText = this.lng.translate(20018016, \"Ganztägig\");\n //var newDateText = this.lng.translate(20018040, \"Neuer Termin\");\n $(\"#\" + ctrl.calendarName).fullCalendar({\n schedulerLicenseKey: QMC.Common.Constants.FULL_CALENDAR_PREMIUM_LICENSE,\n defaultView: 'listWeek',\n allDayText: allDayText,\n monthNames: this.lng.translate(20018519, 'Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember').split(','),\n monthNamesShort: this.lng.translate(20018520, 'Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez').split(','),\n dayNames: this.lng.translate(20018521, 'Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag').split(','),\n dayNamesShort: this.lng.translate(20018522, 'So.,Mo.,Di.,Mi.,Do.,Fr.,Sa.').split(','),\n timezone: \"local\",\n nowIndicator: true,\n events: (_a = scope.qmData) !== null && _a !== void 0 ? _a : [],\n height: 'auto',\n firstDay: 1,\n scrollTime: moment(new Date()).format(\"HH:mm:ss\"),\n titleFormat: '[Termine]',\n eventDurationEditable: false,\n eventStartEditable: false,\n noEventsMessage: this.lng.translate(20018529, 'keine kommenden Termine in dieser Woche'),\n views: {\n day: {\n titleFormat: 'dddd D.MM'\n }\n },\n header: {\n left: '',\n center: '',\n right: ''\n },\n //customButtons: {\n // addBtn: {\n // text: newDateText,\n // click: function () {\n // $('#edit-form-detail').modal('toggle');\n // }\n // }\n //},\n eventRender: function (event, element) {\n element.find(\".fc-list-item-title\").prepend(event.iconCode);\n },\n eventAfterAllRender: function () {\n _this.ui.formatListDates();\n },\n eventClick: function (event) {\n if (event.end === undefined || event.end === null)\n event.end = event.start;\n $(\"#\" + ctrl.calendarName).fullCalendar('removeEvents');\n location.hash = location.hash = _this.ui.detailLink(event, event.isRecurring);\n },\n });\n };\n ctrl.widgetRender = function (calEvents) {\n scope.qmData = calEvents;\n if (calEvents && calEvents.length >= 1) {\n ctrl.setupCalendar();\n setTimeout(function () {\n $(\"#\" + ctrl.calendarName).fullCalendar('render');\n }, 500);\n }\n };\n };\n }\n TerminDirective = __decorate([\n QMC.Directive('QMC.Termin', 'qmAppointmentWidget', [])\n ], TerminDirective);\n return TerminDirective;\n }());\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Termin;\n (function (Termin) {\n var TerminValidationDirective = /** @class */ (function () {\n function TerminValidationDirective(appointmentService, lng) {\n var _this = this;\n this.appointmentService = appointmentService;\n this.lng = lng;\n this.restrict = 'EA';\n this.templateUrl = './Termin/Validation';\n this.replace = true;\n this.scope = {\n callback: '&',\n validate: '='\n };\n this.link = function (scope) {\n var formStore;\n scope.id = 'appointmentValidationModal_' + Math.random().toString(36).substr(2, 9);\n scope.validationResult = {\n '': {\n warnings: [],\n errors: [_this.lng.translate(20000328, 'Es konnte keine Validierung durchgeführt werden')]\n }\n };\n scope.validate = function (form) {\n formStore = form;\n $(\"#appointmentValidationModal_\" + scope.id).modal('show');\n scope.loading = true;\n _this.appointmentService.validateAppointment({\n dateFrom: form.dateFrom,\n dateTo: form.dateTo,\n attendeeIds: form.participantIds,\n mainAppointmentId: form.mainAppointmentId\n }).then(function (data) {\n scope.validationResult = data;\n if (scope.noErrors() && scope.noWarnings())\n scope.save();\n }).catch(function () {\n scope.validationResult = {\n '': {\n warnings: [],\n errors: [_this.lng.translate(20000328, 'Es konnte keine Validierung durchgeführt werden')]\n }\n };\n }).finally(function () { return scope.loading = false; });\n };\n scope.noErrors = function () {\n if (!scope.validationResult)\n return false;\n for (var attendee in scope.validationResult) {\n if (scope.validationResult[attendee].errors.length)\n return false;\n }\n return true;\n };\n scope.noWarnings = function () {\n if (!scope.validationResult)\n return false;\n for (var attendee in scope.validationResult) {\n if (scope.validationResult[attendee].warnings.length)\n return false;\n }\n return true;\n };\n scope.save = function () {\n $(\"#appointmentValidationModal_\" + scope.id).modal('hide');\n scope.callback()(formStore);\n };\n };\n }\n TerminValidationDirective = __decorate([\n QMC.Directive('QMC.Termin', 'qmAppointmentValidation', ['TerminService', 'QmcLanguageService'])\n ], TerminValidationDirective);\n return TerminValidationDirective;\n }());\n })(Termin = QMC.Termin || (QMC.Termin = {}));\n})(QMC || (QMC = {}));\n\n//# sourceMappingURL=../../maps/Termin/qmc.termin.js.map\n"],"names":["QMC","__extends","this","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","routes","$locationProvider","$stateProvider","$urlRouterProvider","qmcBase","html5Mode","enabled","requireBase","state","url","templateUrl","controller","controllerAs","resolve","data","console","log","params","startDay","dynamic","view","angular","module","config","$inject","HttpProvider","Termin","configureHttpProvider","$httpProvider","defaults","headers","get","_super","TerminService","$http","$q","_this","call","modulePath","Common","BaseService","getCalendarList","getAppointmentTypes","getAppointmentList","personObjectId","dateFrom","dateTo","appointmentTypes","getOrganisation","getItem","displayNotifications","errors","items","getAppointment","id","participantId","wholeSerie","permFlag","moment","format","getAppointmentWv","postAppointment","post","then","putAppointment","isRecurring","wholeSeries","changeRecurrenceDay","put","deleteAppointment","allParticipants","delete","e","validateAppointment","request","getHolidays","year","getHolidaysSpecific","getHolidayDays","getVacationDays","getShareablePersonList","getAccessibleCalenderList","objectType","getCalendarTypeList","putAccessible","list","putShareOwnCalendar","Service","Inject","UserInterface","appointmentForm","form","label","placeholder","type","model","required","lngTag","validate","message","messageTag","style","class","icon","dataSource","multiple","requiredTo","displayTime","displayDateTo","disableDate","disableTime","dateToRequired","events","hideExpression","placeholderTag","disabled","startDate","Date","maxLength","actions","deviceDefault","localStorage","Constants","IS_MOBILE","formatListDates","$","each","index","find","text","attr","time","undefined","split","detailLink","event","appointmentType","mid","objectId","participantObjectId","start","_d","toISOString","end","TerminListController","terminService","$qui","flsService","clientService","$state","$scope","$timeout","lng","userService","$rootScope","$location","permissionService","$stateParams","taskService","stammdatenService","filterText","ui","reccuring","RecurringOptions","calendarList","calendarList2","shareablePersonListChanges","selectedCalendarType","formState","requestLock","disableCheckboxes","appointmentTypesToShow","holidayUserSettings","eventCache","selectedTypes","promptOptionsTask","title","yesNo","translate","promptChangeRecurringTerminDate","isGettingData","isWidget","appointmentObjectPermissions","modify","new","lastRequest","slotDuration","calendarName","getRecurringTypes","reccuringSelectList","getReminderUnits","reminderUnits","firstLoad","dblClick","clickTimer","document","getElementById","getAttribute","toLocaleLowerCase","forbidden","fullCalendar","mobile","isMobile","initForm","getCalenderTypeList","getAccessibleCalendarList","value","promptOptions","fields","name","options","storageObject","window","LocalStorageConstants","APPOINTMENT_TYPES_TO_SHOW","map","Number","getCasesList","cases","caseList","select","resetData","$watch","recuringType","disableRecurring","disableRecurringEndDate","rangeDateFrom","rangeDateTo","getUserSettings","settings","parseInt","indexOf","typeId","ferien","colorHtml","feiertage","push","sort","a","getPermissionsByObjectType","init","getSectionColor","path","render","anonAvatar","bindEvents","getPersonListByObjectTypes","item","displayTitle","createPersonDisplay","shortCaption","personNumber","getAllPersonLists","dataPL","getResourceList","dataRes","getVehicleList","dataVeh","temp","x","group","getGroupName","subText","institute","concat","caption","kindOfVehicle","participants","getOrganisationForPerson","personId","organisationForCurrentUser","organisationId","newVal","oldVal","getParticipants","toTitleCase","str","replace","txt","charAt","toUpperCase","substr","toLowerCase","startOf","add","toDate","isAllDay","location","participantIds","getForOrga","description","isFinished","isPrivate","reminder","reminderAmount","reminderUnit","sharedCalendar","sharedCalendarMap","y","includes","selectedCalendar","calendar","getDateList","force","currentRequest","types","JSON","stringify","loading","daysToPast","daysToFuture","isoWeekday","viewDateFrom","viewDateTo","endOf","getData","getOrga","calculateCurrentYearOfCalender","some","holidays","functionWaiter","allDay","editable","color","toString","createCalendarEvent","appointmentTypeId","generateGuid","copy","widgetRender","setupCalendar","resetCalendar","To","createDateFromString","From","getMonth","getFullYear","calEvents","addToPersonalCalendar","arr","setTimeout","addAppointment","recurrenceOptions","getOptions","setRangeLimit","validationCallback","modal","notify","successNote","changeEvents","Utilities","confirm","prompt","modifyEvents","permissions","mainAppointmentId","changeDatesOnly","dayChanged","status","timer","getOriginalDate","getDateFrom","_i","_a","event_1","date","event_2","getPersonalCalendar","setItem","setViewDates","personalCalendar","currentType","setUserSettings","getHeight","hasClass","appointment","isTypeAppointment","iconCode","recurrenceSettings","isDeleted","getAppointmentObject","objAppointment","dateMoment","allDayText","schedulerLicenseKey","FULL_CALENDAR_PREMIUM_LICENSE","defaultTimedEventDuration","contentHeight","innerHeight","defaultView","timezone","allDaySlot","slotLabelFormat","timeStringFromHours","firstDay","monthNames","monthNamesShort","dayNames","dayNamesShort","weekNumbers","weekNumberCalculation","isoWeek","nowIndicator","views","month","week","titleFormat","day","buttonText","today","viewRender","element","go","columnFormat","timeFormat","header","left","center","right","droppable","eventRender","prepend","eventResize","newForm","eventDrop","detla","revert","recurrenceChangeDateFrom","recurrenceChangeDateTo","isManual","scopeApply","result","hash","drop","aspectRatio","eventClick","path_1","setFinishedState","AZN_PREVIOUS_STATE","$current","dayClick","jsEvent","singleClick","clearInterval","setInterval","shareablePersonList","loadingAccessibleCalendarList","accessibleCalendarList","calendarTypeList","calendarTypeListMap","selectAutoMap","calendarTypeChanged","shareablePersonListItemChanged","changedItem","putShareOwnCalender","userId","userObjectId","canView","canCreateModify","canDelete","Controller","TerminDetailController","loadingSemaphor","getDetailData","promptOptionsAllParticipantsDelete","promptOptionsApointmentDelete","promptOptionsSingleUpdate","promptOptionsSeriesUpdate","promptOptionsOnlySeriesUpdate","parent","oldRangeDateTo","recurrenceData","toogleBackButton","waitForEl","on","history","baseUrl","replaceState","backButtonPresse","sendPut","setDate","getDate","setMonth","setFullYear","finally","unbind","deleteNote","setInputField","oldRecurringType","setTime","getTime","recurringType","waitToCreateForm","reccuringTypes","getInfragisticsWeekday","getDay","frequency","rangeLimit","rangeMaxOcurrences","occurence","interval","dayOfMonth","monthOfYear","daysOfWeek","setOptionList","recType","val","isFix","limit","TerminDirective","restrict","scope","bindToController","link","attrs","ctrl","dateNow","now","openNewModal","qmData","height","scrollTime","eventDurationEditable","eventStartEditable","noEventsMessage","eventAfterAllRender","Directive","TerminValidationDirective","appointmentService","callback","formStore","Math","random","validationResult","","warnings","attendeeIds","noErrors","noWarnings","save","catch","attendee"],"mappings":"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"}