{"version":3,"file":"../js/qmc.input.min.js","sources":["qmc.input.min.js"],"sourcesContent":["var __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};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var InputButton = /** @class */ (function () {\n function InputButton() {\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmClick: '@',\n qmColor: '@',\n qmIcon: '@',\n qmTooltip: '@',\n qmHref: '@',\n qmStyle: '@'\n };\n this.templateUrl = 'Input/Button';\n }\n InputButton = __decorate([\n QMC.Directive('QMC.Input', 'qmInputButton', [])\n ], InputButton);\n return InputButton;\n }());\n Input.InputButton = InputButton;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputCheckbox = /** @class */ (function () {\n function qmInputCheckbox() {\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmModel: '=',\n qmPlaceholder: '@',\n qmIcon: '@',\n qmLabel: '@',\n qmName: '@',\n qmValidate: '=',\n qmValidateMessage: '@',\n qmId: '@',\n qmChange: '@',\n qmTooltip: '@',\n qmColor: '@',\n qmLabelLeft: '@',\n qmDisabled: '='\n };\n this.templateUrl = 'Input/Checkbox';\n this.link = function (scope, element, attrs) {\n if (!scope.qmId) {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n var lastState = !scope.qmModel;\n scope.dependedToggle = function () {\n if (scope.qmDisabled)\n return;\n if (!scope.qmLabel || scope.qmLabel.length == 0)\n return;\n if (lastState == scope.qmModel)\n scope.qmModel = !scope.qmModel;\n lastState = scope.qmModel;\n };\n scope.toggle = function () {\n if (scope.qmDisabled)\n return;\n scope.qmModel = !scope.qmModel;\n };\n if (scope.qmColor != (null || undefined)) {\n $(element).find('.squaredThree').children(\"label\").css(\"border\", \"1px solid \" + scope.qmColor);\n if (scope.qmColor.toLowerCase() == '#ffffff')\n $(element).find('.squaredThree').children(\"label\").css(\"border\", \"1px solid lightgrey\");\n scope.$watch('qmModel', function (oldVal, newVal) {\n if (scope.qmModel)\n $(element).find('.squaredThree').children(\"label\").css(\"background\", scope.qmColor);\n else {\n if (scope.qmColor.toLowerCase() != '#ffffff') {\n $(element).find('.squaredThree').children(\"label\").css(\"background\", \"white\");\n $(element).find('.squaredThree').children(\"label\").css(\"background-image\", \"unset\");\n }\n else {\n $(element).find('.squaredThree').children(\"label\").css(\"background\", \"lightgrey\");\n $(element).find('.squaredThree').children(\"label\").css(\"background-image\", \"repeating-linear-gradient(135deg, transparent, transparent 5px, rgba(255,255,255,.5)5px, rgba(255,255,255,.5) 10px\");\n }\n }\n });\n }\n };\n }\n qmInputCheckbox = __decorate([\n QMC.Directive('QMC.Input', 'qmInputCheckbox', [])\n ], qmInputCheckbox);\n return qmInputCheckbox;\n }());\n Input.qmInputCheckbox = qmInputCheckbox;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var dateFormat = 'DD.MM.YYYY';\n var qmInputDate = /** @class */ (function () {\n function qmInputDate($qui) {\n var _this = this;\n this.$qui = $qui;\n this.restrict = 'EA';\n this.replace = true;\n this.dateIsDeleted = false;\n this.clearDate = true;\n this.scope = {\n qmInit: '=',\n qmModel: '=',\n qmDisplayModel: '@',\n qmStartDate: '=',\n qmEndDate: '=',\n qmPlaceholder: '@',\n qmInvalidDate: '@',\n qmLabel: '@',\n qmName: '@',\n qmRequired: '=',\n qmDisabled: '=',\n qmId: '=?',\n qmEdit: '=',\n qmValidate: '=',\n qmValidateMessage: '@',\n qmDisableDropDown: '@'\n };\n this.templateUrl = function () {\n return (new qmDeviceSet()).isMobile() ? 'Input/Mobile/Date' : 'Input/Date';\n };\n this.link = function (scope, element, attrs) {\n if (!scope.qmId || scope.qmId === 'd.id') {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n var mobile = (new qmDeviceSet()).isMobile();\n function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n scope.deleteDate = function () {\n scope.qmModel = null;\n scope.qmDisplayModel = null;\n if (scope.qmRequired) {\n _this.dateIsDeleted = true;\n scope.qmInvalidDate = true;\n }\n };\n _this.dateIsDeleted = false;\n scope.qmInvalidDate = false;\n element.attr(\"id\", \"date-\" + getRandomInt(1, 999));\n element.id = \"date-\" + getRandomInt(1, 999);\n if (mobile.length === 0) {\n scope.$watch('qmStartDate', function () {\n if (scope.qmStartDate) {\n element.find('.input-group.date').datepicker('setStartDate', scope.qmStartDate);\n scope.clearDate = false;\n }\n });\n scope.$watch('qmEndDate', function () {\n if (scope.qmEndDate)\n element.find('.input-group.date').datepicker('setEndDate', scope.qmEndDate);\n });\n scope.$watch('qmModel', function () {\n if (scope.qmModel) {\n scope.qmDisplayModel = moment(scope.qmModel).format(dateFormat);\n _this.$qui.scopeApply(scope);\n _this.dateIsDeleted = false;\n scope.qmInvalidDate = false;\n }\n else {\n scope.qmDisplayModel = null;\n }\n });\n scope.$watch('qmDisplayModel', function (newVal, oldVal) {\n if (newVal === oldVal || (!newVal && !oldVal))\n return;\n if (newVal && newVal.length) {\n var input = moment(scope.qmDisplayModel, dateFormat);\n if (input.isValid() && moment(scope.qmModel) !== input) {\n scope.qmModel = input.toDate();\n _this.dateIsDeleted = false;\n scope.qmInvalidDate = false;\n }\n else {\n scope.deleteDate();\n }\n }\n });\n /* Ahrrr! Datepicker ahoi */\n element.find(\".input-group.date\").datepicker({\n todayBtn: \"linked\",\n todayHighlight: true,\n format: {\n toDisplay: function (date, format, language) {\n // DAA-3775 what is this, why was it here?\n //scope.qmModel = moment(date).hours(2).toDate();\n return moment(date).format(dateFormat);\n },\n toValue: function (date, format, language) {\n return date;\n }\n },\n keyboardNavigation: false,\n forceParse: false,\n calendarWeeks: true,\n language: 'de',\n autoclose: true,\n orientation: \"bottom auto\"\n }).on('changeDate', function (data) {\n scope.qmInvalidDate = false;\n this.dateIsDeleted = false;\n if (moment(data.date, dateFormat).isValid()) {\n scope.qmDisplayModel = moment(data.date).format(dateFormat);\n if (scope.qmStartDate && moment(data.date, dateFormat).isBefore(scope.qmStartDate))\n scope.qmDisplayModel = moment(scope.qmStartDate).format(dateFormat);\n if (scope.qmEndDate && moment(data.date, dateFormat).isAfter(moment(scope.qmEndDate).endOf('day')))\n scope.qmDisplayModel = moment(scope.qmEndDate).format(dateFormat);\n scope.qmModel = moment(data.date, dateFormat).toDate();\n }\n else if (scope.qmDisplayModel && scope.qmDisplayModel.length === 0) {\n scope.deleteDate();\n }\n else {\n scope.qmInvalidDate = true;\n scope.qmModel = null;\n }\n element.find(\".input-group.date\").datepicker('hide');\n }).on('clearDate', function (data) {\n //somehow the clearDate event is triggered when the qmStartDate is changed, better handling the clearDate event using a variable that tells the event if the user really wants to clear the date\n if (scope.clearDate) {\n this.dateIsDeleted = true;\n if (scope.qmRequired === true) {\n scope.qmInvalidDate = true;\n //keep the datePicker Calender opened so the user can still choose a date, in case they accidentaly pressed delete, the date is required, the user must select a date\n }\n else {\n element.find(\".input-group.date\").datepicker('hide');\n }\n }\n scope.clearDate = true;\n });\n if (!scope.qmStartDate)\n element.find('.input-group.date').datepicker('setStartDate', new Date(1753, 1, 1));\n if (!scope.qmEndDate)\n element.find('.input-group.date').datepicker('setEndDate', new Date(9999, 12, 31));\n }\n else {\n scope.$watch('qmModel', function () {\n if (scope.qmModel) {\n scope.qmModel.setSeconds(0);\n scope.qmModel.setMilliseconds(0);\n }\n _this.$qui.scopeApply(scope);\n });\n }\n // HOTKEY HANDLING FROM HERE DOWN\n scope.waitCounter = 0;\n scope.waitForInit = function () {\n var ele = document.getElementById(scope.qmId);\n if (ele) {\n document.getElementById(scope.qmId).onkeydown = function (event) {\n var date = scope.qmModel;\n if (!date)\n date = new Date();\n switch (event.keyCode) {\n case 33: //pageUp, set start of Month\n if (event.shiftKey) { //year insted of month\n scope.qmModel = getStartEndDate(date, 'year', false);\n }\n else {\n scope.qmModel = getStartEndDate(date, 'month', false);\n }\n event.preventDefault();\n break;\n case 34: //pageDown, set end of Month\n if (event.shiftKey) { //year insted of month\n scope.qmModel = getStartEndDate(date, 'year', true);\n }\n else {\n scope.qmModel = getStartEndDate(date, 'month', true);\n }\n event.preventDefault();\n break;\n case 8: //delete button\n element.find(\".input-group.date\").datepicker('update', '');\n _this.dateIsDeleted = true;\n if (scope.qmRequired === true) {\n scope.qmInvalidDate = true;\n scope.qmModel = null;\n //keep the datePicker Calender opened so the user can still choose a date, in case they accidentaly pressed delete, the date is required, the user must select a date\n }\n else {\n element.find(\".input-group.date\").datepicker('hide');\n }\n break;\n default:\n break;\n }\n _this.$qui.scopeApply(scope);\n };\n }\n else if (scope.waitCounter < 25) {\n setTimeout(function () {\n scope.waitForInit();\n scope.waitCounter++;\n }, 250);\n }\n };\n scope.waitForInit();\n var getStartEndDate = function (date, periodType, toEnd) {\n var next;\n if (toEnd)\n next = moment(date).endOf(periodType).toDate();\n else\n next = moment(date).startOf(periodType).toDate();\n if (next.toString() === date.toString()) {\n if (toEnd)\n next = moment(date).add(1, periodType + 's').toDate();\n else\n next = moment(date).add(-1, periodType + 's').toDate();\n }\n // make sure to really be at the end of period after adding\n if (toEnd)\n next = moment(next).endOf(periodType).toDate();\n return next;\n };\n // CONTEXT HANDLING FROM HERE DOWN\n scope.openSubMenu = function () {\n var menu = document.getElementById('dd' + scope.qmId);\n var dp = element.find('.input-group.date');\n var input = document.getElementById(scope.qmId);\n if (scope.qmDisableDropDown || !menu || !dp || scope.qmDisabled || input.hasAttribute('disabled'))\n return;\n if (!mobile || mobile.length === 0) {\n setTimeout(function () {\n dp.datepicker('hide');\n });\n }\n scope.openDD('dd');\n };\n scope.setDate = function (target, period, num) {\n if (target === '?')\n target = scope.startOrEndOf;\n if (period === 'quarter') {\n switch (num) {\n case 1:\n if (scope.startOrEndOf !== 'end')\n scope.qmModel = new Date('01/01/' + moment().get('year'));\n else\n scope.qmModel = new Date('03/31/' + moment().get('year'));\n break;\n case 2:\n if (scope.startOrEndOf !== 'end')\n scope.qmModel = new Date('04/01/' + moment().get('year'));\n else\n scope.qmModel = new Date('06/30/' + moment().get('year'));\n break;\n case 3:\n if (scope.startOrEndOf !== 'end')\n scope.qmModel = new Date('07/01/' + moment().get('year'));\n else\n scope.qmModel = new Date('09/30/' + moment().get('year'));\n break;\n case 4:\n if (scope.startOrEndOf !== 'end')\n scope.qmModel = new Date('10/01/' + moment().get('year'));\n else\n scope.qmModel = new Date('12/31/' + moment().get('year'));\n break;\n }\n // if new date exceeds min/max bounds cap it there\n if (scope.qmStartDate && moment(scope.qmStartDate).isAfter(scope.qmModel))\n scope.qmModel = scope.qmStartDate;\n if (scope.qmEndDate && moment(scope.qmEndDate).isBefore(scope.qmModel))\n scope.qmModel = scope.qmEndDate;\n return;\n }\n var result;\n switch (target) {\n case 'today':\n result = new Date();\n break;\n case 'start':\n result = getStartEndDate(new Date(), period, false);\n break;\n case 'end':\n result = getStartEndDate(new Date(), period, true);\n break;\n case 'prev':\n result = getStartEndDate(moment().set(period, moment().get(period) - 1), period, scope.startOrEndOf === 'end');\n break;\n case 'next':\n result = getStartEndDate(moment().set(period, moment().get(period) + 1), period, scope.startOrEndOf === 'end');\n break;\n case 'targetMonth':\n var temp = moment(scope.qmModel ? scope.qmModel : new Date());\n temp = temp.set('year', scope.shortcutYear);\n temp = temp.set('month', num);\n // scope.qmModel = getStartEndDate(temp.toDate(), 'month', scope.startOrEndOf === 'end');\n if (scope.startOrEndOf === 'end')\n temp = moment(temp).endOf('month');\n else\n temp = moment(temp).startOf('month');\n result = temp.toDate();\n break;\n }\n // if new date exceeds min/max bounds cap it there\n if (scope.qmStartDate && moment(scope.qmStartDate).isAfter(result))\n result = scope.qmStartDate;\n if (scope.qmEndDate && moment(scope.qmEndDate).isBefore(result))\n result = scope.qmEndDate;\n // Only trigger change when date has actually changed\n if (!scope.qmModel || (moment(scope.qmModel).toDate().toDateString() !== moment(result).toDate().toDateString()) || _this.dateIsDeleted === true) {\n scope.qmInvalidDate = false;\n scope.qmModel = result;\n if (!mobile && mobile.length === 0) {\n element.find(\".input-group.date\").datepicker('update', scope.qmModel.toDateString());\n }\n }\n };\n scope.startOrEndOf = 'start';\n scope.openStartEndOfDdn = function (mode) {\n scope.openDD('dds');\n scope.startOrEndOf = mode;\n };\n window.onclick = function (event) {\n closeAllDropDown(false, event);\n };\n var closeAllDropDown = function (force, event) {\n if (force || (event && event.target && !event.target.matches('.dropbtn') && !event.target.matches('.dontClose'))) {\n var dropdowns = document.getElementsByClassName(\"date-dropdown\");\n for (var i = 0; i < dropdowns.length; i++) {\n if (dropdowns[i].classList.contains('date-show')) {\n dropdowns[i].classList.remove('date-show');\n }\n }\n }\n };\n scope.dateDropDownShurtcutYears = [];\n scope.dateDropDownShurtcutYears.push(moment().get('year') - 1);\n scope.dateDropDownShurtcutYears.push(moment().get('year'));\n scope.dateDropDownShurtcutYears.push(moment().get('year') + 1);\n scope.shortcutYear = moment().get('year');\n scope.openShortcutYear = function (year) {\n scope.openDD('ddy');\n scope.shortcutYear = year;\n };\n scope.openDD = function (ddName) {\n closeAllDropDown(true, null);\n var menu = document.getElementById(ddName + scope.qmId);\n setTimeout(function () {\n if (menu)\n menu.classList.toggle('date-show');\n //try to place dropdown in visible area\n var ancestor = element[0].parentNode.parentNode.parentNode;\n if (scope.$parent === 'dateRange')\n ancestor = ancestor.parentNode;\n console.log(ancestor, ancestor.tagName, scope.$parent);\n var containerRect = ancestor.getBoundingClientRect();\n var lowerBound = containerRect.top + containerRect.height;\n var menuRect = menu.firstElementChild.getBoundingClientRect();\n var ddLowerEnd = menuRect.top + menuRect.height;\n if (ddLowerEnd > lowerBound) {\n menu.style.top = '-' + Math.min(ddLowerEnd - lowerBound + 15, containerRect.height) + 'px';\n }\n else {\n menu.style = 'unset';\n }\n }, 1);\n };\n };\n }\n qmInputDate = __decorate([\n QMC.Directive('QMC.Input', 'qmInputDate', ['$qui'])\n ], qmInputDate);\n return qmInputDate;\n }());\n Input.qmInputDate = qmInputDate;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputDateMonths = /** @class */ (function () {\n function qmInputDateMonths($qui, lngService) {\n var _this = this;\n this.$qui = $qui;\n this.lngService = lngService;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmDateFrom: '=',\n qmDateTo: '=',\n qmMonths: '=',\n qmDisabled: '@'\n };\n this.templateUrl = 'Input/DateMonths';\n this.controller = ['$scope', function ($scope) {\n $scope.createMonthList = function () {\n var _a;\n if ($scope.qmDateFrom == (null && undefined))\n $scope.qmDateFrom = moment().startOf('month').toDate();\n if ($scope.qmDateTo == (null && undefined))\n $scope.qmDateTo = moment($scope.qmDateFrom).endOf('month').toDate();\n var today = new Date();\n $scope.monthsList = [];\n $scope.yearList = [];\n var monthNames = _this.lngService.translate(20018519, 'Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember').split(',');\n for (var i = 0; i < 12; i++) {\n $scope.monthsList.push({\n value: moment(today).month(i).toISOString(),\n text: (_a = monthNames[i]) !== null && _a !== void 0 ? _a : moment.months()[i]\n });\n }\n for (var i = ($scope.qmDateFrom.getFullYear() - 5); i < $scope.qmDateFrom.getFullYear() + 2; i++) {\n $scope.yearList.push({\n value: i,\n text: i,\n });\n }\n $scope.date = $scope.monthsList[$scope.qmDateFrom.getMonth()].value;\n $scope.year = $scope.qmDateFrom.getFullYear();\n };\n }];\n this.link = function (scope, element, attrs) {\n scope.createMonthList();\n scope.changeDate = function () {\n scope.qmDateFrom = moment(scope.date).startOf('month').year(scope.year).toDate();\n scope.qmDateTo = moment(scope.date).endOf('month').year(scope.year).toDate();\n if (scope.qmMonths === \"year\") {\n scope.qmDateFrom = moment(scope.date).startOf('year').year(scope.year).toDate();\n scope.qmDateTo = moment(scope.date).endOf('year').year(scope.year).toDate();\n }\n };\n };\n }\n qmInputDateMonths = __decorate([\n QMC.Directive('QMC.Input', 'qmInputDateMonths', ['$qui', 'QmcLanguageService'])\n ], qmInputDateMonths);\n return qmInputDateMonths;\n }());\n Input.qmInputDateMonths = qmInputDateMonths;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputDateRange = /** @class */ (function () {\n function qmInputDateRange($qui) {\n var _this = this;\n this.$qui = $qui;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmDateFrom: '=',\n qmDateTo: '=',\n qmOriginalTimeFrom: '=',\n qmOriginalTimeTo: '=',\n qmPlaceholderDateFrom: '@',\n qmPlaceholderDateTo: '@',\n qmDisableTime: \"=\",\n qmDisableDate: \"=\",\n qmDurationInHours: '=?',\n qmDurationInDays: '@',\n qmLabelDateFrom: '@',\n qmLabelDateTo: '@',\n qmValidTime: '=?',\n qmValidDate: '=?',\n qmRequired: '=',\n qmEnableTime: '=',\n qmEnableDateTo: '=',\n qmRoundInterval: '=',\n qmDisplayDuration: '=',\n qmStartDate: '=',\n qmEndDate: '=',\n qmDisabled: '=',\n qmDateFromNotRequired: '=?',\n qmStartRoundType: '=',\n qmEndRoundType: '='\n };\n this.templateUrl = 'Input/DateRange';\n this.link = function (scope, element, attrs) {\n scope.type = 'dateRange';\n scope.qmValidDate = true;\n scope.qmValidTime = true;\n scope.qmDurationInDays = 0;\n scope.dateFromId = '_' + Math.random().toString(36).substr(2, 9);\n scope.dateToId = '_' + Math.random().toString(36).substr(2, 9);\n // Loading initial values\n if (scope.qmDateFrom) {\n scope.dateFrom = scope.qmDateFrom;\n scope.timeFrom = scope.qmDateFrom;\n scope.originalTimeFrom = scope.qmOriginalTimeFrom ? scope.qmOriginalTimeFrom : scope.qmDateFrom;\n }\n if (scope.qmDateTo) {\n scope.dateTo = scope.qmDateTo;\n scope.timeTo = scope.qmDateTo;\n scope.originalTimeTo = scope.qmOriginalTimeTo ? scope.qmOriginalTimeTo : scope.qmDateTo;\n }\n if (scope.qmEnableTime) {\n scope.qmDurationInHours = 0;\n scope.qmValidTime = true;\n }\n scope.createListener = function () {\n scope.qmDateFromWatcher = scope.$watch('qmDateFrom', function (newValue, oldValue) {\n if (newValue === oldValue)\n return;\n scope.removeListener();\n scope.dateFrom = scope.qmDateFrom ? _this.$qui.createDateFromString(scope.qmDateFrom) : undefined;\n scope.timeFrom = scope.qmDateFrom ? _this.$qui.createDateFromString(scope.qmDateFrom) : undefined;\n scope.dateTo = scope.qmDateTo ? _this.$qui.createDateFromString(scope.qmDateTo) : undefined;\n scope.timeTo = scope.qmDateTo ? _this.$qui.createDateFromString(scope.qmDateTo) : undefined;\n scope.validate();\n }, true);\n scope.qmDateToWatcher = scope.$watch('qmDateTo', function (newValue, oldValue) {\n if (newValue === oldValue)\n return;\n scope.removeListener();\n scope.dateTo = scope.qmDateTo ? _this.$qui.createDateFromString(scope.qmDateTo) : undefined;\n scope.timeTo = scope.qmDateTo ? _this.$qui.createDateFromString(scope.qmDateTo) : undefined;\n scope.dateFrom = scope.qmDateFrom ? _this.$qui.createDateFromString(scope.qmDateFrom) : undefined;\n scope.timeFrom = scope.qmDateFrom ? _this.$qui.createDateFromString(scope.qmDateFrom) : undefined;\n scope.validate();\n }, true);\n scope.dateFromListener = scope.$watch('dateFrom', function (newValue, oldValue) {\n if (JSON.stringify(newValue) === JSON.stringify(oldValue))\n return;\n if (newValue === null || newValue === undefined)\n scope.dateFrom = scope.qmStartDate ? scope.qmStartDate : getCurrentDate();\n scope.removeListener();\n if (scope.dateTo && scope.dateFrom > scope.dateTo) {\n scope.dateTo = scope.dateFrom;\n }\n if (scope.qmRequired && !scope.dateTo)\n scope.dateTo = scope.dateFrom;\n scope.validate();\n });\n scope.dateToListener = scope.$watch('dateTo', function (newValue, oldValue) {\n if (JSON.stringify(newValue) === JSON.stringify(oldValue))\n return;\n if (newValue === null || newValue === undefined)\n scope.dateTo = scope.qmEndDate ? scope.qmEndDate : scope.qmRequired ? getCurrentDate() : null;\n scope.removeListener();\n if (scope.dateTo && scope.dateTo < scope.dateFrom) {\n scope.dateFrom = scope.dateTo;\n }\n if (!scope.dateTo) {\n scope.timeTo = null;\n }\n if (!scope.timeTo)\n scope.timeTo = scope.dateTo;\n scope.validate();\n });\n scope.timeFromListener = scope.$watch('timeFrom', function (newValue, oldValue) {\n if (JSON.stringify(newValue) === JSON.stringify(oldValue))\n return;\n if (newValue === (null || undefined))\n scope.timeFrom = scope.qmStartDate ? scope.qmStartDate : getCurrentDate();\n scope.removeListener();\n scope.validate();\n });\n scope.timeToListener = scope.$watch('timeTo', function (newValue, oldValue) {\n if (JSON.stringify(newValue) === JSON.stringify(oldValue))\n return;\n if (newValue === (null || undefined))\n scope.timeTo = scope.qmEndDate ? scope.qmEndDate : getCurrentDate();\n scope.removeListener();\n scope.validate();\n });\n };\n scope.createListener();\n var getCurrentDate = function () {\n var date = new Date();\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n };\n scope.removeListener = function () {\n scope.qmDateToWatcher();\n scope.qmDateFromWatcher();\n scope.dateFromListener();\n scope.dateToListener();\n scope.timeFromListener();\n scope.timeToListener();\n };\n scope.validate = function () {\n scope.removeListener();\n //if any value is null set its model null\n try {\n /**\n * RoundTime\n */\n var setTimeFrom = scope.timeFrom ? _this.$qui.createDateFromString(scope.timeFrom).getHours() + \":\" + _this.$qui.createDateFromString(scope.timeFrom).getMinutes() : '0:0';\n var orgTimeFrom = scope.originalTimeFrom ? _this.$qui.createDateFromString(scope.originalTimeFrom).getHours() + \":\" + _this.$qui.createDateFromString(scope.originalTimeFrom).getMinutes() : '0:0';\n var setTimeTo = scope.timeTo ? _this.$qui.createDateFromString(scope.timeTo).getHours() + \":\" + _this.$qui.createDateFromString(scope.timeTo).getMinutes() : '0:0';\n var orgTimeTo = scope.originalTimeTo ? _this.$qui.createDateFromString(scope.originalTimeTo).getHours() + \":\" + _this.$qui.createDateFromString(scope.originalTimeTo).getMinutes() : '0:0';\n if (scope.qmRoundInterval && setTimeFrom != orgTimeFrom) {\n scope.timeFrom = _this.$qui.roundTime(scope.timeFrom, scope.qmRoundInterval, true, scope.qmStartRoundType);\n }\n if (!scope.timeTo)\n scope.timeTo = scope.dateTo;\n if (scope.qmRoundInterval && setTimeTo != orgTimeTo) {\n scope.timeTo = _this.$qui.roundTime(scope.timeTo, scope.qmRoundInterval, true, scope.qmEndRoundType);\n }\n scope.dateFrom = _this.$qui.addTimeToDate(scope.dateFrom, scope.timeFrom);\n if (scope.dateTo) {\n scope.dateTo = _this.$qui.addTimeToDate(scope.qmEnableDateTo ? scope.dateTo : scope.dateFrom, scope.timeTo);\n }\n scope.qmDurationInDays = 0;\n scope.qmDurationInHours = 0;\n scope.qmValidDate = true;\n scope.qmValidTime = true;\n scope.qmDurationInDays = _this.$qui.getDurationInDays(scope.dateFrom, scope.dateTo);\n if (scope.qmDurationInDays < 0 && scope.qmRequired) {\n scope.qmValidDate = false;\n }\n if (scope.qmDurationInDays >= 1)\n scope.qmValidTime = true;\n scope.qmDateFrom = _this.$qui.addTimeToDate(scope.dateFrom, scope.timeFrom);\n scope.qmDateTo = _this.$qui.addTimeToDate(scope.dateTo, scope.timeTo);\n if (!scope.qmRequired && !moment(scope.qmDateTo).isValid()) {\n scope.qmDateTo = null;\n }\n setTimeout(function () {\n if (scope.dateFrom && scope.timeFrom)\n scope.qmDateFrom = _this.$qui.addTimeToDate(scope.dateFrom, scope.timeFrom);\n if (scope.dateTo && scope.timeTo)\n scope.qmDateTo = _this.$qui.addTimeToDate(scope.dateTo, scope.timeTo);\n if (scope.qmEnableTime && (scope.qmRequiered || (scope.timeFrom && scope.timeTo))) {\n var duration = moment.duration(moment(scope.qmDateTo).diff(moment(scope.qmDateFrom)));\n scope.qmDurationInHours = isNaN(Number(duration.asHours())) ? 0 : Number(duration.asHours());\n scope.qmValidTime = scope.qmDurationInHours >= 0 && !isNaN(Number(duration.asHours()));\n }\n _this.$qui.scopeApply(scope);\n scope.createListener();\n }, 50);\n }\n catch (e) {\n console.warn('validation failed', e);\n scope.createListener();\n }\n };\n scope.removeListener();\n scope.validate();\n // HOTKEY HANDLING FROM HERE DOWN\n setTimeout(function () {\n if (scope.qmEnableDateTo && document.getElementById(scope.dateFromId) && document.getElementById(scope.dateToId)) {\n document.getElementById(scope.dateFromId).onkeydown = function (event) {\n setTimeout(function () {\n handleDateKeyEvent(event, 'from');\n _this.$qui.scopeApply(scope);\n }, 50);\n };\n document.getElementById(scope.dateToId).onkeydown = function (event) {\n setTimeout(function () {\n handleDateKeyEvent(event, 'to');\n _this.$qui.scopeApply(scope);\n }, 50);\n };\n }\n }, 500);\n var handleDateKeyEvent = function (event, source) {\n if (!(event.keyCode === 35 || event.keyCode === 36))\n return;\n event.preventDefault();\n if (!scope.dateTo)\n scope.dateTo = new Date();\n var prevDate = {\n from: scope.dateFrom,\n to: scope.dateTo\n };\n var periodType = 'month';\n if (event.shiftKey) {\n periodType = 'year';\n }\n if (!event.altKey) {\n if (event.shiftKey) {\n scope.dateFrom = moment(scope.dateFrom).startOf('year').toDate();\n scope.dateTo = moment(scope.dateTo).endOf('year').toDate();\n }\n scope.dateFrom = moment(scope.dateFrom).startOf('month').toDate();\n scope.dateTo = moment(scope.dateTo).endOf('month').toDate();\n if (prevDate.from.setHours(0, 0, 0, 0) === scope.dateFrom.setHours(0, 0, 0, 0) && prevDate.to.setHours(0, 0, 0, 0) === scope.dateTo.setHours(0, 0, 0, 0)) {\n if (event.keyCode === 35) {\n scope.dateFrom = moment(scope.dateFrom).add(1, periodType).toDate();\n scope.dateTo = moment(scope.dateTo).add(1, periodType).toDate();\n }\n else {\n scope.dateFrom = moment(scope.dateFrom).add(-1, periodType).toDate();\n scope.dateTo = moment(scope.dateTo).add(-1, periodType).toDate();\n }\n }\n // make finally sure to be at start/end of month\n scope.dateFrom = moment(scope.dateFrom).startOf('month').toDate();\n scope.dateTo = moment(scope.dateTo).endOf('month').toDate();\n }\n else {\n // alt key pressed on home count from one period down, on end count to up\n if (event.keyCode === 36) {\n scope.dateFrom = moment(scope.dateFrom).add(-1, periodType).toDate();\n }\n else {\n scope.dateTo = moment(scope.dateTo).add(1, periodType).toDate();\n }\n }\n _this.$qui.scopeApply(scope);\n };\n };\n }\n qmInputDateRange = __decorate([\n QMC.Directive('QMC.Input', 'qmInputDateRange', ['$qui'])\n ], qmInputDateRange);\n return qmInputDateRange;\n }());\n Input.qmInputDateRange = qmInputDateRange;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputFile = /** @class */ (function () {\n function qmInputFile(lng) {\n var _this = this;\n this.lng = lng;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmId: '@',\n qmIcon: '@',\n qmLabel: '@',\n qmDisabled: '=',\n qmModel: '=?',\n qmAccept: '=?'\n };\n this.templateUrl = 'Input/File';\n this.link = function (scope, element, attrs) {\n // set defaults\n if (!scope.qmIcon)\n scope.qmIcon = 'fa fa-paperclip';\n if (!scope.qmId)\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n if (!scope.qmModel)\n scope.qmModel = [];\n scope.data = {\n filenames: [],\n uploads: []\n };\n scope.openFileSelector = function () {\n document.getElementById(scope.qmId).click();\n };\n scope.$watch('data', function () {\n scope.addFile();\n }, true);\n scope.addFile = function () {\n if (scope.data.filenames.length > 0 && scope.data.uploads.length > 0) {\n var file_1 = {\n name: scope.data.filenames[0],\n base64: scope.data.uploads[0].split(',')[1]\n };\n if (scope.allowedFileTypes && !scope.allowedFileTypes.split(',').some(function (x) { return x.includes(file_1.name.split('.').pop()); })) {\n alert(_this.lng.translate(20000314, 'Der ausgewählte Dateityp wird nicht unterstützt') + \" (\" + file_1.name.split('.').pop() + \").\");\n return;\n }\n scope.qmModel.push(file_1);\n scope.data.filenames = [];\n scope.data.uploads = [];\n scope.loading = false;\n $('#' + scope.qmId).val('');\n }\n };\n };\n }\n qmInputFile = __decorate([\n QMC.Directive('QMC.Input', 'qmInputFile', ['QmcLanguageService'])\n ], qmInputFile);\n return qmInputFile;\n }());\n Input.qmInputFile = qmInputFile;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputNumber = /** @class */ (function () {\n function qmInputNumber($qui) {\n var _this = this;\n this.$qui = $qui;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmModel: '=',\n qmPlaceholder: '@',\n qmRequired: '=',\n qmMaxLength: '@',\n qmName: '@',\n qmValidate: '=',\n qmValidateMessage: '@',\n qmIcon: '@',\n qmLabel: '@',\n qmId: '=?',\n qmClass: '@',\n qmDisabled: '=',\n qmMinValue: '=?',\n qmMaxValue: '=?',\n qmDisableDecimal: '=?',\n qmDisplayRound: '=?'\n };\n this.templateUrl = 'Input/Number';\n this.link = function (scope, element, attrs) {\n if (!scope.qmId || scope.qmId === 'd.id') {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n var seperator = (1.1).toLocaleString().substring(1, 2);\n // if a max length (count of digits) is set, adjust max/min value accordingly to let browser handle it\n if (scope.qmMaxLength) {\n var maxLength = parseInt(scope.qmMaxLength);\n var lengthString = '';\n for (var i = 0; i < maxLength; i++)\n lengthString += '9';\n scope.qmMaxValue = scope.qmMaxValue ? Math.min(Number(lengthString), Number(scope.qmMaxValue)) : lengthString;\n scope.qmMinValue = scope.qmMinValue ? Math.max(Number('-' + lengthString), Number(scope.qmMinValue)) : '-' + lengthString;\n }\n //DA-2627 done right\n element[0].addEventListener('mouseover', function () { scope.respectSpinner = true; });\n element[0].addEventListener('mouseout', function () { scope.respectSpinner = false; });\n if (!scope.qmDisableDecimal || scope.qmDisableDecimal === undefined)\n scope.qmDisableDecimal = false;\n if (!scope.qmMinValue || scope.qmMinValue === undefined)\n scope.qmMinValue = 0;\n if (!scope.qmMaxLength || scope.qmMaxLength > 12) {\n scope.qmMaxLength = 12;\n }\n _this.$qui.waitForEl('#' + scope.qmId, function () {\n // input validation\n $('#' + scope.qmId).on('keydown', function (event) {\n var _a;\n var key = event.originalEvent.key;\n var currentValue = ((_a = scope.displayModel) !== null && _a !== void 0 ? _a : '') + '';\n //for non browsers (edge, ie): replace commas with dots in real-time (for en-US locals)\n if ((window.navigator.userAgent.indexOf(\"Trident\") > -1 || navigator.userAgent.indexOf(\"Edge\") > -1) && (key === ',')) {\n event.preventDefault();\n seperator = '.';\n $(_this).val($(_this).val() + \".\");\n }\n switch (key) {\n case '.':\n case ',':\n if (scope.qmDisableDecimal || currentValue.indexOf('.') >= 0 || currentValue.indexOf(',') >= 0 || key !== seperator)\n event.preventDefault();\n break;\n case '-':\n if (scope.qmMinValue > -1 || currentValue.indexOf('-') >= 0)\n event.preventDefault();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n break;\n }\n });\n });\n scope.$watch('qmModel', function (newVal, oldVal) {\n if (newVal === oldVal)\n return;\n if (scope.qmModel === undefined || scope.qmModel === null) {\n scope.displayModel = 0;\n return;\n }\n if (typeof scope.qmModel !== 'number')\n scope.qmModel = Number(scope.qmModel);\n scope.blur();\n });\n scope.$watch('displayModel', function (newVal, oldVal) {\n if (!newVal && scope.qmMinValue < 0) {\n scope.qmModel = undefined;\n return;\n }\n if (newVal === undefined || newVal === oldVal || (!element.find('input').is(\":focus\") && !scope.respectSpinner))\n return;\n scope.qmModel = scope.validateNumber(scope.displayModel);\n scope.blur();\n });\n scope.focus = function () {\n scope.displayModel = Number(scope.qmModel + '');\n element.find('input').select();\n };\n scope.blur = function () {\n if (isNaN(scope.qmModel) || (scope.qmModel + '').length === 0) {\n scope.displayValue = undefined;\n return;\n }\n scope.displayModel = Number(scope.qmModel);\n if (scope.qmDisplayRound && !element.find('input').is(\":focus\")) {\n scope.displayModel = Number(scope.qmModel.toFixed(scope.qmDisplayRound));\n }\n _this.$qui.scopeApply(scope);\n };\n scope.validateNumber = function (number) {\n if (number === undefined || number === null || number === '')\n return 0;\n var result = Number(number + '');\n // check minValue\n if (result < Number(scope.qmMinValue + ''))\n result = Number(scope.qmMinValue + '');\n // check maxValue\n if (result > Number(scope.qmMaxValue + ''))\n result = Number(scope.qmMaxValue + '');\n // get rid of unwanted decimals\n if (scope.qmDisableDecimal) {\n var inputString = result + '';\n if (inputString.indexOf(',') > 0)\n result = Number(inputString.substring(0, inputString.indexOf(',')));\n if (inputString.indexOf('.') > 0)\n result = Number(inputString.substring(0, inputString.indexOf('.')));\n }\n return result;\n };\n scope.blur();\n };\n }\n qmInputNumber = __decorate([\n QMC.Directive('QMC.Input', 'qmInputNumber', ['$qui'])\n ], qmInputNumber);\n return qmInputNumber;\n }());\n Input.qmInputNumber = qmInputNumber;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputPassword = /** @class */ (function () {\n function qmInputPassword() {\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmModel: '=',\n qmPlaceholder: '@',\n qmChange: '=',\n qmIcon: '@',\n qmLabel: '@',\n qmName: '@',\n qmRequired: '@',\n qmMinlength: '@',\n qmMaxlength: '@',\n qmDisabled: '@',\n qmPattern: '@',\n qmTrim: '@',\n qmEdit: '=',\n qmValidate: '=',\n qmValidateMessage: '@',\n qmId: '@'\n };\n this.templateUrl = 'Input/Password';\n this.link = function (scope, element, attrs) {\n scope.isPW = true;\n if (scope.qmId == (null || undefined)) {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n if (attrs.hasOwnProperty(\"qmLongtext\")) {\n element.find(\"input\").attr(\"maxlength\", 255);\n }\n };\n }\n qmInputPassword = __decorate([\n QMC.Directive('QMC.Input', 'qmInputPassword', [])\n ], qmInputPassword);\n return qmInputPassword;\n }());\n Input.qmInputPassword = qmInputPassword;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var InputSelect = /** @class */ (function () {\n function InputSelect(wvService, permissionService, lng, $qui, $timeout, userService) {\n var _this = this;\n this.wvService = wvService;\n this.permissionService = permissionService;\n this.lng = lng;\n this.$qui = $qui;\n this.$timeout = $timeout;\n this.userService = userService;\n this.restrict = 'E';\n //replace = true;\n this.scope = {\n qmModel: '=',\n qmPlaceholder: '@',\n qmData: '=',\n qmId: '@',\n qmLabel: '@',\n qmName: '@',\n qmClass: '@',\n qmRequired: '=',\n qmDisabled: '=',\n qmPattern: '@',\n qmTrim: '@',\n qmValidate: '=',\n qmValidateMessage: '@',\n qmShowCheckbox: '@',\n qmCheckboxModel: '=',\n qmKeepEmptyGuidItems: '@',\n qmIcon: '@',\n qmWvId: '@',\n qmSubWvId: '=?',\n qmWvData: '=?',\n qmWvValueType: '@?',\n qmKeepOrder: '=?',\n qmMaxDisplayItems: '@?',\n qmMinSearchInput: '@?',\n qmMinSearchInputThreshold: '@?'\n };\n this.templateUrl = function (element, attrs) {\n if (attrs.hasOwnProperty('multiple')) {\n return 'Input/SelectMulti';\n }\n else {\n return 'Input/Select';\n }\n };\n this.link = function (scope, element, attrs) {\n var windowSettingKey = 'globalSelectSettings';\n var defaultSettings = {\n maxDisplayItems: 50,\n minSearchInput: 3,\n minSearchInputThreshold: 50\n };\n // init search costumization\n var setSearchParams = function (settings) {\n var _a, _b, _c;\n scope.maxDisplayItems = (_a = scope.qmMaxDisplayItems) !== null && _a !== void 0 ? _a : settings.maxDisplayItems;\n scope.minSearchInput = (_b = scope.qmMinSearchInput) !== null && _b !== void 0 ? _b : settings.minSearchInput;\n scope.minSearchInputThreshold = (_c = scope.qmMinSearchInputThreshold) !== null && _c !== void 0 ? _c : settings.minSearchInputThreshold;\n };\n setSearchParams(defaultSettings);\n var getCostumizedSetting = function () {\n if (!window[windowSettingKey]) {\n window[windowSettingKey] = 'loading';\n _this.userService.getUserSettings(['INPUT.SELECT.MAXDISPLAYITEMS', 'INPUT.SELECT.MINSEARCHINPUT', 'INPUT.SELECT.MINSEARCHINPUTTHRESHOLD'])\n .then(function (data) {\n window[windowSettingKey] = {\n maxDisplayItems: data[0].value.length ? parseInt(data[0].value) : defaultSettings.maxDisplayItems,\n minSearchInput: data[1].value.length ? parseInt(data[1].value) : defaultSettings.minSearchInput,\n minSearchInputThreshold: data[2].value.length ? parseInt(data[2].value) : defaultSettings.minSearchInputThreshold\n };\n })\n .catch(function () {\n window[windowSettingKey] = defaultSettings;\n })\n .finally(function () { return setSearchParams(window[windowSettingKey]); });\n }\n else if (window[windowSettingKey] === 'loading') {\n setTimeout(getCostumizedSetting, 100);\n }\n else {\n setSearchParams(window[windowSettingKey]);\n }\n };\n getCostumizedSetting();\n scope.vm = scope;\n var originalPlaceholder = scope.qmPlaceholder;\n if (!scope.qmId) {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n setTimeout(function () {\n element.find('.ui.select.container').attr('id', scope.qmId);\n if (attrs.hasOwnProperty('multiple') && scope.qmPlaceholder != (null || undefined)) {\n element.find('.ui-select-search').attr('placeholder', scope.qmPlaceholder);\n }\n ;\n $(element).find('.ui-select-search').on('focus', function () {\n var tip = $(element).find(\"#\" + scope.qmId + \"-tip\");\n if (!scope.minSearchInputThreshold || scope.qmData.length > scope.minSearchInputThreshold) {\n tip.css('display', 'unset');\n tip.css('top', -tip.height() - 10);\n }\n });\n $(element).find('.ui-select-search').on('blur', function () {\n $(element).find(\"#\" + scope.qmId + \"-tip\").css('display', 'none');\n });\n }, 200);\n scope.getData = function (search) {\n var _a;\n if (!((_a = scope.qmData) === null || _a === void 0 ? void 0 : _a.length))\n return []; //don't bother with empty selection\n var data = __spreadArrays(scope.qmData).filter(function (item, index) { return scope.qmData.indexOf(item) === index; });\n // on multiple select or if value is required don't offer items without value\n if (attrs.hasOwnProperty('multiple') || scope.qmRequired)\n data = data.filter(function (x) { return x.text && x.value !== QMC.Common.Constants.GUID_EMPTY; });\n // if minSearchInput is not reached or threshold to activate it is not reached, act like search is empty\n if (scope.minSearchInput && search.length < scope.minSearchInput && (!scope.minSearchInputThreshold || data.length > scope.minSearchInputThreshold))\n search = undefined;\n // perform search\n if (search === null || search === void 0 ? void 0 : search.length) {\n data = data.filter(function (x) {\n //since subtext gets always converted to string array via qmData watch, we can savely assume it to be one\n var itemSearchText = __spreadArrays([x.text], x.subText).join(';').toUpperCase();\n return itemSearchText.includes(search.toUpperCase());\n });\n }\n // limit displayed items\n if (scope.maxDisplayItems && data.length > scope.maxDisplayItems)\n data = data.splice(0, scope.maxDisplayItems);\n //always make sure, that selected items are in the result\n var selected = scope.qmModel;\n if (!Array.isArray(selected))\n selected = [selected].filter(function (x) { return x; }); // single select only issues one item, so convert it to array\n selected.forEach(function (x) {\n if (!data.some(function (y) { return x === (y === null || y === void 0 ? void 0 : y.value); }))\n data.push(scope.qmData.find(function (y) { return y.value === x; }));\n });\n return data.filter(function (x) { return x; });\n };\n scope.$watch('qmCheckboxModel', function (oldVal, newVal) {\n if (oldVal === newVal || scope.qmCheckboxModel === null)\n return;\n if (!scope.qmCheckboxModel) {\n scope.qmModel = [];\n }\n else {\n for (var i = 0; i < scope.qmData.length; i++) {\n scope.qmModel.push(scope.qmData[i].value);\n }\n }\n });\n scope.$watch('qmData', function (oldVal, newVal) {\n if (!scope.qmData || !Array.isArray(scope.qmData) || scope.qmKeepOrder)\n return;\n scope.qmData = scope.qmData.sort(function (a, b) { var _a, _b; return ((_a = a.text) !== null && _a !== void 0 ? _a : '').localeCompare((_b = b.text) !== null && _b !== void 0 ? _b : ''); }, undefined, { sensitivity: 'base' }).sort(function (a, b) { var _a, _b; return ((_a = a.group) !== null && _a !== void 0 ? _a : '').localeCompare((_b = b.group) !== null && _b !== void 0 ? _b : ''); }, undefined, { sensitivity: 'base' });\n scope.qmData.forEach(function (data) {\n if (!data.subText)\n data.subText = [];\n if (!Array.isArray(data.subText))\n data.subText = [data.subText];\n });\n });\n /********** WV handling from here ***********/\n scope.promptId = \"prompt-\" + scope.qmId;\n scope.promptOptions = {\n title: _this.lng.translate(20000302, \"Katalogeintrag\"),\n yesNo: true,\n icon: \"qm-icon-arrow_into\",\n text: _this.lng.translate(20000290, \"Wollen Sie den Eintrag wirklich löschen?\")\n };\n scope.formState = 'new';\n var wvPermissionStorage = 'wvPermissionCache';\n var lastValue;\n if (scope.qmSubWvId) {\n scope.$watch('qmSubWvId', function (newVal) {\n if ((newVal === lastValue || !newVal) && scope.qmWvData)\n return;\n lastValue = newVal;\n scope.qmData = [];\n scope.qmWvData = undefined;\n if (newVal !== QMC.Common.Constants.GUID_EMPTY)\n scope.loadWv(scope.qmWvId);\n });\n }\n var getPermissionType = function () {\n var cache = window[wvPermissionStorage + \"_\" + scope.qmWvId];\n if (!cache) {\n window[wvPermissionStorage + \"_\" + scope.qmWvId] = 'loading';\n _this.permissionService.getPermissionsForDataset(scope.qmWvId, null).then(function (data) {\n window[wvPermissionStorage + \"_\" + scope.qmWvId] = data[0];\n });\n }\n };\n var getPermission = function () {\n var cache = window[wvPermissionStorage];\n var dsPerm = window[wvPermissionStorage + \"_\" + scope.qmWvId];\n if (scope.loadWvPerm || cache === 'loading' || !dsPerm || dsPerm === 'loading') {\n setTimeout(function () { getPermission(); }, 250);\n return;\n }\n scope.loadWvPerm = true;\n //seems like winclient dont care about catalogmanager permission at all when directly manipulating wvs so we just assume everything is true. i'll leave the old code here anyway\n scope.newWv = dsPerm.new;\n scope.modifyWv = dsPerm.modify;\n scope.deleteWv = dsPerm.delete;\n scope.viewWv = true;\n scope.loadWvPerm = false;\n //if (cache && cache !== 'loading') {\n // const parsedCache = window[wvPermissionStorage];\n // scope.newWv = parsedCache.new && dsPerm.new;\n // scope.modifyWv = parsedCache.modify && dsPerm.modify;\n // scope.deleteWv = parsedCache.delete && dsPerm.delete;\n // scope.viewWv = parsedCache.moduleAccess;\n // scope.loadWvPerm = false;\n //}\n //else {\n // window[wvPermissionStorage] = 'loading';\n // scope.loadWvPerm = true;\n // this.permissionService.getPermissionsByObjectType(870008).then((data) => {\n // window[wvPermissionStorage] = data[0];\n // scope.newWv = data[0].new && dsPerm.new;\n // scope.modifyWv = data[0].modify && dsPerm.modify;\n // scope.deleteWv = data[0].delete && dsPerm.delete;\n // scope.viewWv = data[0].moduleAccess;\n // }).finally(() => {\n // scope.loadWvPerm = false;\n // });\n //}\n _this.$qui.scopeApply(scope);\n };\n if (scope.qmWvId) {\n getPermission();\n getPermissionType();\n }\n scope.initForm = function () {\n scope.formState = 'new';\n scope.form = {\n id: null,\n objectId: null,\n comment: '',\n name: '',\n shortName: '',\n value: null,\n idReferencedObject: null,\n isFix: false,\n idSubtype: scope.qmWvId,\n parentWvId: null\n };\n addValueConfigToForm();\n };\n var lastParent = undefined;\n scope.openWv = function () {\n if (scope.qmSubWvId && scope.qmSubWvId === QMC.Common.Constants.GUID_EMPTY) {\n console.warn('Got a parent id but its guidempty, so the dev prop. messed up. Im not opening!');\n return;\n }\n if (lastParent && lastParent !== scope.qmSubWvId) {\n scope.qmWvData = undefined;\n }\n lastParent = scope.qmSubWvId;\n if (!scope.qmWvData) {\n scope.loadWv(scope.qmWvId);\n }\n else {\n prepareData();\n }\n scope.formModalTitle = (scope.qmLabel && scope.qmLabel.length > 0 ? scope.qmLabel + ' - ' : '') + _this.lng.translate(20000302, 'Katalogeintrag');\n scope.tableScheme.table.Farbe.invisible = scope.qmWvValueType && scope.qmWvValueType === 'color' ? false : true;\n $('#wvModal-' + scope.qmId).modal('show');\n };\n scope.loadWv = function (id) {\n scope.wvLoad = true;\n scope.tableScheme.data = [];\n scope.qmPlaceholder = _this.lng.translate(20000303, 'laden');\n if (scope.qmSubWvId) {\n if (id === '3e0d8030-1421-41b1-aed9-053d2d01a344') { //special case if subwvid is this, than it actual needs to be GuidEmpty for getting the data\n id = QMC.Common.Constants.GUID_EMPTY;\n }\n _this.wvService.getSubWvList(id, scope.qmSubWvId).then(function (data) {\n scope.qmWvData = data;\n prepareData();\n }).finally(function () {\n scope.wvLoad = false;\n });\n }\n else {\n _this.wvService.getWvList(id).then(function (data) {\n scope.qmWvData = data;\n prepareData();\n }).finally(function () {\n scope.wvLoad = false;\n });\n }\n };\n var prepareData = function () {\n markSelectedItems(scope.qmWvData);\n scope.tableScheme.data = scope.qmWvData.filter(function (x) { return x.objectId && x.objectId != QMC.Common.Constants.GUID_EMPTY; }); // Filter empty values\n if (scope.qmWvValueType === 'color') { // format int value to hex for use with remaining components\n for (var _i = 0, _a = scope.qmWvData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.value && (item.value + '').charAt(0) !== '#') { // value exists and does not begin with a #, therefor its not a hexcolor\n item.value = _this.$qui.intToHex(item.value);\n }\n }\n }\n scope.qmData = scope.tableScheme.data.map(function (x) { return ({ text: x.name, value: x.objectId }); });\n if (!scope.qmRequired && !attrs.hasOwnProperty('multiple')) {\n scope.qmData.unshift({ text: '', value: QMC.Common.Constants.GUID_EMPTY });\n }\n _this.$qui.functionWaiter(\"vm.createTable\", scope);\n if (scope.qmData.filter(function (x) { return x.value === scope.qmModel; }).length === 0)\n scope.qmModel = null;\n scope.qmPlaceholder = originalPlaceholder;\n };\n scope.setSelection = function (checked, item) {\n var id = item.objectId ? item.objectId : item.id;\n if (checked) {\n if (attrs.hasOwnProperty('multiple')) {\n scope.qmModel.push(id);\n }\n else {\n scope.qmModel = id;\n // deselect all other values\n for (var _i = 0, _a = scope.tableScheme.data; _i < _a.length; _i++) {\n var element_1 = _a[_i];\n element_1.active = id === element_1.objectId;\n }\n for (var _b = 0, _c = scope.items; _b < _c.length; _b++) {\n var element_2 = _c[_b];\n // hacky way to actually manipulate the tables view data, replaces old way of recreating table\n element_2.undefined.selected = id === element_2.undefined.id;\n }\n }\n }\n else {\n if (attrs.hasOwnProperty('multiple')) {\n scope.qmModel = scope.qmModel.filter(function (x) { return x !== id; });\n }\n else if (scope.qmModel === id) {\n scope.qmModel = QMC.Common.Constants.GUID_EMPTY;\n }\n }\n // when a currently selected value is updated, select-ui would not update the displayed text. To force that, we reset the selection wait a little and than put it back in :/\n var model = scope.qmModel;\n scope.qmModel = undefined;\n _this.$qui.scopeApply(scope);\n _this.$timeout(function () { scope.qmModel = model; }, 50);\n };\n var markSelectedItems = function (list) {\n for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\n var item = list_1[_i];\n if (attrs.hasOwnProperty('multiple')) {\n item.active = scope.qmModel.some(function (x) { return x.objectId; });\n }\n else {\n item.active = scope.qmModel === item.objectId;\n }\n }\n };\n var formatFormValueForRequest = function (form) {\n if (form.isColor) {\n form.value = _this.$qui.hexToInt(form.value);\n }\n };\n scope.newWvEntry = function () {\n scope.initForm();\n $(\"#edit-form-\" + scope.qmId).modal('show');\n _this.$qui.scopeApply(scope);\n };\n scope.postWvEntry = function () {\n scope.wvLoad = true;\n var form = angular.copy(scope.form);\n formatFormValueForRequest(form);\n if (scope.qmSubWvId)\n _this.wvService.postSubWv(form.idSubtype, scope.qmSubWvId, form).then(function (data) {\n form.id = data.createdId;\n form.objectId = data.createdObjectId;\n scope.setSelection(true, form);\n }).finally(function () {\n scope.loadWv(form.idSubtype);\n scope.formState = 'new';\n });\n else\n _this.wvService.postWv(form.idSubtype, form).then(function (data) {\n form.id = data.createdId;\n form.objectId = data.createdObjectId;\n scope.setSelection(true, form);\n }).finally(function () {\n scope.loadWv(form.idSubtype);\n scope.formState = 'new';\n });\n };\n scope.editWvEntry = function (data) {\n scope.form = data;\n addValueConfigToForm();\n scope.formState = 'edit';\n $(\"#edit-form-\" + scope.qmId).modal('show');\n _this.$qui.scopeApply(scope);\n };\n scope.putWvEntry = function () {\n scope.wvLoad = true;\n var form = angular.copy(scope.form);\n formatFormValueForRequest(form);\n if (scope.qmSubWvId)\n _this.wvService.putSubWv(form.idSubtype, scope.qmSubWvId, form.objectId, form).finally(function () {\n scope.loadWv(form.idSubtype);\n scope.setSelection(true, form);\n scope.formState = 'new';\n });\n else\n _this.wvService.putWv(form.idSubtype, form.objectId, form).finally(function () {\n scope.loadWv(form.idSubtype);\n scope.setSelection(true, form);\n scope.formState = 'new';\n });\n };\n scope.deleteWvEntry = function (item) {\n scope.promptOptions.itemText = item.name;\n QMC.Common.Utilities.confirm(scope.promptOptions, function (data) {\n if (data) {\n scope.wvLoad = true;\n if (scope.qmSubWvId)\n _this.wvService.deleteSubWv(item.idSubtype, scope.qmSubWvId, item.objectId).finally(function () {\n scope.loadWv(item.idSubtype);\n });\n else\n _this.wvService.deleteWv(item.idSubtype, item.objectId).finally(function () {\n scope.loadWv(item.idSubtype);\n });\n if (attrs.hasOwnProperty('multiple')) {\n scope.qmModel = scope.qmModel.filter(function (x) { return x !== item.objectId; });\n }\n else if (scope.qmModel === item.objectId) {\n scope.qmModel = QMC.Common.Constants.GUID_EMPTY;\n }\n }\n }, '#' + scope.promptId);\n };\n var addValueConfigToForm = function () {\n // use an if to not create to many useless probs in form\n if (scope.qmWvValueType === 'color')\n scope.form.isColor = true;\n };\n scope.formInvalid = function () {\n var _a;\n // lets get hacky :/ since we use a readymade input for the name field and it its required, a potential surrounding form would fail to validate if we just set qm-required on it\n // thats why we add the startisk to its label by code and manually validate the 'form' (#NotAForm). tahts also the reason why the edit modal is no longer a qm-form directive.\n var textField = (_a = element.find(\"#wvName_\" + scope.qmId)[0]) === null || _a === void 0 ? void 0 : _a.children[0];\n if (textField)\n textField.innerHTML = _this.lng.translate(20000053, 'Bezeichnung') + ' *';\n return !scope.form || (!scope.form.name || scope.form.name.length === 0);\n };\n scope.tableScheme = {\n \"config\": {\n \"defaultSort\": \"name\",\n },\n \"filter\": {\n model: null\n },\n \"table\": {\n \"Active\": {\n \"id\": \"objectId\",\n \"selected\": \"active\",\n \"dType\": \"Checkbox\",\n \"noHeader\": true,\n \"events\": {\n \"onChange\": \"setSelection\"\n }\n },\n \"Kürzel\": {\n \"label\": \"shortName\",\n \"dType\": \"string\",\n \"lngTag\": \"20000221\"\n },\n \"Bezeichnung\": {\n \"label\": \"name\",\n \"dType\": \"string\",\n \"lngTag\": \"20000053\"\n },\n \"Bemerkung\": {\n \"label\": \"comment\",\n \"dType\": \"string\",\n \"lngTag\": \"20000049\"\n },\n \"Farbe\": {\n \"label\": \"value\",\n \"dType\": \"Color\",\n \"lngTag\": \"20000300\"\n },\n \"Aktionen\": [\n {\n \"icon\": \"qm-icon-pencil blue\",\n \"click\": \"editWvEntry\",\n \"label\": \"data\",\n \"dType\": \"Button\",\n \"tooltip\": \"Bearbeiten\",\n \"lngTag\": \"20000044\",\n \"permission\": \"modifyWv\",\n \"events\": {\n \"hide\": \"isFix\",\n }\n }, {\n \"icon\": \"qm-icon-garbage_can red\",\n \"click\": \"deleteWvEntry\",\n \"label\": \"data\",\n \"dType\": \"Button\",\n \"tooltip\": \"Löschen\",\n \"lngTag\": \"20000002\",\n \"permission\": \"deleteWv\",\n \"events\": {\n \"hide\": \"isFix\",\n }\n }\n ]\n }, \"card\": {\n \"avatar\": {\n \"icon\": \"qm-icon-arrow_into\",\n },\n \"checkbox\": {\n \"selected\": \"active\",\n \"events\": {\n \"onChange\": \"setSelection\"\n }\n },\n \"text\": {\n \"label\": \"name\",\n \"dType\": \"string\"\n },\n \"subtext\": [\n {\n \"label\": \"shortName\",\n \"dType\": \"string\"\n }\n ],\n \"buttons\": [\n {\n \"icon\": \"qm-icon-pencil blue\",\n \"click\": \"editWvEntry\",\n \"label\": \"data\",\n \"dType\": \"Button\",\n \"tooltip\": \"Bearbeiten\",\n \"lngTag\": \"20000044\",\n \"permission\": \"modifyWv\",\n \"events\": {\n \"hide\": \"isFix\",\n }\n }, {\n \"icon\": \"qm-icon-garbage_can red\",\n \"click\": \"deleteWvEntry\",\n \"label\": \"data\",\n \"dType\": \"Button\",\n \"tooltip\": \"Löschen\",\n \"lngTag\": \"20000002\",\n \"permission\": \"deleteWv\",\n \"events\": {\n \"hide\": \"isFix\",\n }\n }\n ]\n },\n \"data\": null,\n };\n };\n }\n InputSelect = __decorate([\n QMC.Directive('QMC.Input', 'qmSelect', ['QmcWvService', 'QmcPermissionService', 'QmcLanguageService', '$qui', '$timeout', 'UserService'])\n ], InputSelect);\n return InputSelect;\n }());\n Input.InputSelect = InputSelect;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var SignaturePadComponent = /** @class */ (function () {\n function SignaturePadComponent($qui, $window, $timeout, $element, scope) {\n var _this = this;\n this.$qui = $qui;\n this.$window = $window;\n this.$timeout = $timeout;\n this.scope = scope;\n this.EMPTY_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=';\n this.$postLink = function () {\n _this.clear = function () {\n _this.signaturePad.clear();\n _this.dataurl = undefined;\n };\n _this.accept = function () {\n var signature = { dataUrl: _this.EMPTY_IMAGE, isEmpty: true };\n if (!_this.signaturePad.isEmpty()) {\n signature.dataUrl = _this.signaturePad.toDataURL();\n signature.isEmpty = false;\n }\n return signature;\n };\n angular.element(_this.$window).bind('resize', function () {\n _this.onResize();\n });\n _this.scope.$watch(\"vm.height\", function () {\n _this.onResize();\n });\n _this.scope.$watch(\"vm.width\", function () {\n _this.onResize();\n });\n _this.scope.$watch(\"vm.dataurl\", function (dataUrl) {\n if (dataUrl) {\n _this.signaturePad.fromDataURL(dataUrl);\n _this.updateModel();\n }\n });\n _this.signaturePad.addEventListener(\"endStroke\", function () {\n _this.updateModel();\n });\n };\n this.canvas = $element.find('canvas')[0];\n this.signaturePad = new SignaturePad(this.canvas);\n $element.on('touchend', function () {\n scope.$apply(function () {\n // updateModel\n _this.updateModel();\n });\n });\n this.onResize();\n }\n SignaturePadComponent.prototype.updateModel = function () {\n var _this = this;\n // defer handling mouseup event until $scope.signaturePad handles first the same event\n this.$timeout()\n .then(function () {\n var result = _this.accept();\n _this.dataurl = result.isEmpty ? undefined : result.dataUrl;\n });\n };\n ;\n SignaturePadComponent.prototype.onResize = function () {\n var prePic = this.signaturePad.toData();\n var canvasBoundingRect = this.canvas.getBoundingClientRect();\n var startWidth = this.canvas.width;\n var startHeight = this.canvas.height;\n var ratio = Math.max(this.$window.devicePixelRatio || 1, 1);\n this.canvas.width = this.canvas.offsetWidth * ratio;\n this.canvas.height = this.canvas.offsetHeight * ratio;\n this.canvas.getContext(\"2d\").scale(ratio, ratio);\n this.signaturePad.minWidth = canvasBoundingRect.width / 300 / 1.5; //brush thickness\n this.signaturePad.maxWidth = canvasBoundingRect.width / 300 * 2; //brush thickness\n for (var _i = 0, prePic_1 = prePic; _i < prePic_1.length; _i++) {\n var stroke = prePic_1[_i];\n stroke.minWidth = canvasBoundingRect.width / 300 / 1.5; //brush thickness\n stroke.maxWidth = canvasBoundingRect.width / 300 * 2; //brush thickness\n for (var _a = 0, _b = stroke.points; _a < _b.length; _a++) {\n var point = _b[_a];\n point.x = point.x * (this.canvas.offsetWidth * ratio) / startWidth;\n point.y = point.y * (this.canvas.offsetHeight * ratio) / startHeight;\n }\n }\n this.signaturePad.fromData(prePic);\n };\n ;\n return SignaturePadComponent;\n }());\n //@Directive('QMC.Input', 'signaturePad', ['$qui', '$window', '$timeout'])\n angular.module('QMC.Input').component('signaturePad', {\n controller: ['$qui', '$window', '$timeout', '$element', '$scope', SignaturePadComponent],\n restrict: 'EA',\n replace: true,\n controllerAs: 'vm',\n bindings: {\n accept: '=?',\n clear: '=?',\n dataurl: '=?',\n height: '@?',\n width: '@?'\n },\n templateUrl: 'Input/SignaturePad'\n });\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputText = /** @class */ (function () {\n function qmInputText() {\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmModel: '=',\n qmPlaceholder: '@',\n qmChange: '=',\n qmIcon: '@',\n qmLabel: '@',\n qmName: '@',\n qmClass: '@',\n qmValue: '=',\n qmRequired: '@',\n qmMinLength: '@',\n qmMaxLength: '@',\n qmDisabled: '=',\n qmPattern: '@',\n qmTrim: '@',\n qmEdit: '=',\n qmValidate: '=',\n qmValidateMessage: '@',\n qmId: '@'\n };\n this.templateUrl = 'Input/Text';\n this.link = function (scope, element, attrs) {\n if (scope.qmId == (null || undefined)) {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n };\n }\n qmInputText = __decorate([\n QMC.Directive('QMC.Input', 'qmInputText', [])\n ], qmInputText);\n return qmInputText;\n }());\n Input.qmInputText = qmInputText;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var InputTextblock = /** @class */ (function () {\n function InputTextblock(mediaService, lng, $qui, filter, $sce) {\n var _this = this;\n this.mediaService = mediaService;\n this.lng = lng;\n this.$qui = $qui;\n this.filter = filter;\n this.$sce = $sce;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmId: '@',\n qmOpen: '=',\n qmInsert: '&'\n };\n this.templateUrl = 'Input/Textblock';\n this.link = function (scope) {\n scope.formatted = false;\n scope.inline = true;\n var storageName = 'TextBlockCache';\n if (!scope.qmId) {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n if (localStorage.getItem(storageName + 'Format')) {\n var cache = JSON.parse(localStorage.getItem(storageName + 'Format'));\n scope.formatted = cache.formatted;\n scope.inline = cache.inline;\n }\n scope.setFormatCache = function () {\n localStorage.setItem(storageName + 'Format', JSON.stringify({\n formatted: scope.formatted,\n inline: scope.inline\n }));\n };\n scope.laLabel = {\n caption: _this.lng.translate(20000074, 'Lebensbereich'),\n subCaption: _this.lng.translate(20016192, 'Unter-Lebensbereich')\n };\n scope.qmOpen = function () {\n $('#textBlockModal_' + scope.qmId).modal('show');\n initModal();\n scope.initLASelect();\n };\n var initModal = function () {\n var _a;\n scope.loading = true;\n scope.searchText = '';\n ((_a = scope.textblocks) !== null && _a !== void 0 ? _a : []).forEach(function (item) { return item.isChecked = false; });\n scope.setChecked();\n var storage = sessionStorage.getItem(storageName);\n // if cache is not set or older than five minutes, load data form server\n if (!storage || (storage !== 'loading' && (new Date().getTime() - moment(JSON.parse(storage).timestamp).toDate().getTime() > 5 * 60 * 1000))) {\n loadData();\n }\n else if (storage === 'loading') {\n setTimeout(function () { initModal(); }, 500);\n }\n else {\n scope.textblocks = JSON.parse(storage).data;\n for (var _i = 0, _b = scope.textblocks; _i < _b.length; _i++) {\n var block = _b[_i];\n block.isChecked = false;\n }\n scope.loading = false;\n }\n _this.$qui.scopeApply(scope);\n };\n var loadData = function () {\n sessionStorage.setItem(storageName, 'loading');\n _this.mediaService.getTextBlocks().then(function (data) {\n scope.textblocks = data;\n }).catch(function () {\n scope.textblocks = [];\n }).finally(function () {\n scope.loading = false;\n sessionStorage.setItem(storageName, JSON.stringify({ timestamp: new Date(), data: scope.textblocks }));\n });\n };\n scope.getFilteredData = function () {\n var blocks = _this.filter(scope.textblocks, scope.searchText);\n if (scope.livingAreaId && scope.livingAreaId !== '00000000-0000-0000-0000-000000000000') {\n blocks = blocks.filter(function (x) { return x.livingAreaId === scope.livingAreaId; });\n if (scope.subLivingAreaId && scope.subLivingAreaId !== '00000000-0000-0000-0000-000000000000') {\n blocks = blocks.filter(function (x) { return x.subLivingAreaId === scope.subLivingAreaId; });\n }\n }\n return blocks;\n };\n scope.addCheckedTextBlocks = function () {\n var result = [];\n for (var _i = 0, _a = scope.textblocks; _i < _a.length; _i++) {\n var block = _a[_i];\n if (block.isChecked) {\n if (scope.formatted) {\n result.push(scope.inline ? _this.stripParagraph(block.text) : block.text);\n }\n else {\n result.push(scope.inline ? block.previewText.replace(/(?:\\r\\n|\\r|\\n)/g, ' ' + block.previewText.replace(/(?:\\r\\n|\\r|\\n)/g, '
') : '
') + '
5 * 60 * 1000))) {\n loadData();\n }\n else if (storage === 'loading') {\n setTimeout(function () { initModal(); }, 500);\n }\n else {\n scope.texttemplates = JSON.parse(storage).data;\n scope.loading = false;\n }\n _this.$qui.scopeApply(scope);\n };\n var loadData = function () {\n sessionStorage.setItem(storageName, 'loading');\n _this.mediaService.getTextTemplates().then(function (data) {\n scope.texttemplates = data;\n }).catch(function () {\n scope.texttemplates = [];\n }).finally(function () {\n scope.loading = false;\n sessionStorage.setItem(storageName, JSON.stringify({ timestamp: new Date(), data: scope.texttemplates }));\n });\n };\n scope.getFilteredData = function () {\n var blocks = _this.filter(scope.texttemplates, scope.searchText);\n if (scope.categoryId && scope.categoryId !== '00000000-0000-0000-0000-000000000000') {\n blocks = blocks.filter(function (x) { return x.categoryId === scope.categoryId; });\n if (scope.subCategoryId && scope.subCategoryId !== '00000000-0000-0000-0000-000000000000') {\n blocks = blocks.filter(function (x) { return x.subCategoryId === scope.subCategoryId; });\n }\n }\n return blocks;\n };\n scope.add = function (item) {\n scope.loading = true;\n _this.mediaService.getTextTemplateContent(item.mediaId).then(function (content) {\n scope.qmInsert({ text: content });\n }).finally(function () {\n scope.loading = false;\n $('#textTemplateModal_' + scope.qmId).modal('hide');\n });\n };\n };\n }\n InputTexttemplate = __decorate([\n QMC.Directive('QMC.Input', 'qmInputTexttemplate', ['QmcMediaService', 'QmcLanguageService', '$qui', 'filterFilter'])\n ], InputTexttemplate);\n return InputTexttemplate;\n }());\n Input.InputTexttemplate = InputTexttemplate;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var qmInputTime = /** @class */ (function () {\n function qmInputTime($qui) {\n var _this = this;\n this.$qui = $qui;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmModel: '=',\n qmDisplayModel: '@',\n qmPlaceholder: '=',\n qmNoRow: '@',\n qmLabel: '@',\n qmName: '@',\n qmRequired: '@',\n qmInit: '@',\n qmIcon: '@',\n qmId: '@',\n qmDisabled: '=',\n qmEdit: '=',\n qmValidate: '=',\n qmValidateMessage: '@'\n };\n this.templateUrl = function () {\n return (new qmDeviceSet()).isMobile() ? 'Input/Mobile/Time' : 'Input/Time';\n };\n this.link = function (scope, element, attrs) {\n if (!scope.qmId || scope.qmId === 'd.id') {\n scope.qmId = '_' + Math.random().toString(36).substr(2, 9);\n }\n var mobile = (new qmDeviceSet()).isMobile();\n scope.$watch('qmDisplayModel', function (newVal, oldVal) {\n if (newVal === oldVal || (!newVal && !oldVal))\n return;\n if (newVal && newVal.length) {\n // make sure to only allaw valid time inputs\n if (scope.qmDisplayModel && scope.qmDisplayModel.length > 0) {\n var splitted = scope.qmDisplayModel ? scope.qmDisplayModel.split(':') : [0, 0];\n if (splitted.length === 2) {\n if (splitted[0] > 23) {\n splitted[0] = 23;\n splitted[1] = 59;\n }\n splitted[1] = parseInt(splitted[1]) > 59 ? 59 : splitted[1];\n }\n scope.qmDisplayModel = splitted[0] + \":\" + splitted[1];\n }\n }\n // if field is required but got deleted, restore previous state to ensure equirement status\n else if (!newVal && scope.qmRequired) {\n scope.qmDisplayModel = oldVal;\n }\n });\n scope.$watch('qmModel', function (oldVal, newVal) {\n if (oldVal === newVal || !scope.qmModel)\n return;\n if (!(scope.qmModel instanceof Date))\n scope.qmModel = moment(newVal).toDate();\n scope.qmModel.setSeconds(0);\n scope.qmModel.setMilliseconds(0);\n });\n _this.$qui.timepicker();\n if (scope.qmModel != (null || undefined)) {\n if (!(scope.qmModel instanceof Date))\n scope.qmModel = moment(scope.qmModel).toDate();\n scope.qmModel.setSeconds(0);\n scope.qmModel.setMilliseconds(0);\n }\n if (mobile.length == 0) {\n scope.$watch('qmModel', function () {\n scope.qmDisplayModel = null;\n if (scope.qmModel != (null || undefined)) {\n scope.qmDisplayModel = moment(scope.qmModel).format('HH:mm');\n }\n });\n $('.clockpicker').clockpicker().find('input').change(function (event) {\n event.stopPropagation();\n scope.qmInit = scope.qmDisplayModel;\n var time = scope.qmDisplayModel ? scope.qmDisplayModel.split(':') : [0, 0];\n var model = new Date();\n if (scope.qmModel == (null || undefined || 'Invalid Date'))\n scope.qmModel = new Date();\n if (moment(scope.qmDisplayModel, 'HH:mm').isValid()) {\n if (time[0] >= 24)\n time[0] = 23;\n if (time[1] >= 60)\n time[1] = 59;\n scope.qmDisplayModel = time[0] + \":\" + time[1];\n model.setHours(time[0], time[1], 0, 0);\n scope.$apply(function () {\n scope.qmModel = model;\n });\n setTimeout(function () {\n $('.clockpicker').clockpicker('hide');\n }, 100);\n }\n });\n }\n if (attrs.hasOwnProperty(\"qmNoRow\")) {\n element.removeClass(\"row\");\n element.children(\".col-xs-12\").removeClass(\"col-xs-12\");\n }\n };\n }\n qmInputTime = __decorate([\n QMC.Directive('QMC.Input', 'qmInputTime', ['$qui'])\n ], qmInputTime);\n return qmInputTime;\n }());\n Input.qmInputTime = qmInputTime;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var Input;\n (function (Input) {\n var WvSelect = /** @class */ (function () {\n function WvSelect(wvService, $qui) {\n var _this = this;\n this.wvService = wvService;\n this.$qui = $qui;\n this.restrict = 'EA';\n this.replace = true;\n this.scope = {\n qmInit: '=',\n qmWvId: '=',\n qmSubWvId: '=',\n qmSelectedWvId: '=',\n qmSelectedSubWvId: '=',\n qmLabel: '=?'\n };\n this.templateUrl = 'Input/WvSelect';\n this.link = function (scope) {\n var storageName = \"WvSelectCache_\" + scope.qmWvId + \"_\" + scope.qmSubWvId;\n if (!scope.qmLabel)\n scope.qmLabel = {\n caption: 'Bereich',\n subCaption: 'Unterbereich'\n };\n else if (typeof scope.qmLabel === 'string')\n scope.qmLabel = { caption: scope.qmLabel };\n var init = function () {\n var _a, _b;\n scope.loading = true;\n scope.subLoading = true;\n scope.qmSelectedWvId = undefined;\n scope.qmSelectedSubWvId = undefined;\n var storage = sessionStorage.getItem(storageName);\n // if cache is not set or older than five minutes, load data form server\n if (!storage || (storage !== 'loading' && (new Date().getTime() - moment(JSON.parse(storage).timestamp).toDate().getTime() > 5 * 60 * 1000))) {\n loadData();\n }\n else if (storage === 'loading') {\n setTimeout(function () { init(); }, 500);\n }\n else {\n scope.wvs = (_a = JSON.parse(storage).wvs) !== null && _a !== void 0 ? _a : [];\n scope.subWvs = (_b = JSON.parse(storage).subWvs) !== null && _b !== void 0 ? _b : {};\n scope.loading = false;\n scope.subLoading = false;\n }\n scope.$watch('qmSelectedWvId', function () {\n scope.qmSelectedSubWvId = null;\n scope.subWvMap = [];\n setTimeout(function () {\n if (scope.subWvs && scope.qmSelectedWvId && scope.subWvs[scope.qmSelectedWvId]) {\n scope.subWvMap = scope.subWvs[scope.qmSelectedWvId].map(function (x) { return ({ text: x.name, value: x.objectId }); });\n scope.subWvMap.unshift({ text: '' });\n }\n _this.$qui.scopeApply(scope);\n }, 50);\n });\n scope.init = true;\n };\n var loadData = function () {\n sessionStorage.setItem(storageName, 'loading');\n _this.wvService.getWvList(scope.qmWvId).then(function (data) {\n scope.wvs = data.map(function (x) { return ({ text: x.name, value: x.objectId }); });\n scope.wvs.unshift({ text: '' });\n if (scope.qmSubWvId)\n _this.wvService.getSubWvListForParent(scope.qmSubWvId, scope.qmWvId).then(function (dataSub) {\n scope.subWvs = dataSub;\n }).catch(function () {\n scope.subWvs = {};\n }).finally(function () {\n scope.subLoading = false;\n sessionStorage.setItem(storageName, JSON.stringify({ timestamp: new Date(), wvs: scope.wvs, subWvs: scope.subWvs }));\n });\n }).catch(function () {\n scope.wvs = [];\n }).finally(function () {\n scope.loading = false;\n sessionStorage.setItem(storageName, JSON.stringify({ timestamp: new Date(), wvs: scope.wvs, subWvs: scope.subWvs }));\n });\n };\n scope.qmInit = function () {\n init();\n };\n if (!scope.qmInit)\n init();\n };\n }\n WvSelect = __decorate([\n QMC.Directive('QMC.Input', 'qmWvSelect', ['QmcWvService', '$qui'])\n ], WvSelect);\n return WvSelect;\n }());\n Input.WvSelect = WvSelect;\n })(Input = QMC.Input || (QMC.Input = {}));\n})(QMC || (QMC = {}));\n\n//# sourceMappingURL=../maps/qmc.input.js.map\n"],"names":["QMC","__decorate","this","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__spreadArrays","s","il","Array","k","a","j","jl","Input","InputButton","restrict","replace","scope","qmClick","qmColor","qmIcon","qmTooltip","qmHref","qmStyle","templateUrl","Directive","qmInputCheckbox","qmModel","qmPlaceholder","qmLabel","qmName","qmValidate","qmValidateMessage","qmId","qmChange","qmLabelLeft","qmDisabled","link","element","attrs","Math","random","toString","substr","lastState","dependedToggle","toggle","undefined","$","find","children","css","toLowerCase","$watch","oldVal","newVal","dateFormat","qmInputDate","$qui","_this","dateIsDeleted","clearDate","qmInit","qmDisplayModel","qmStartDate","qmEndDate","qmInvalidDate","qmRequired","qmEdit","qmDisableDropDown","qmDeviceSet","isMobile","mobile","getRandomInt","min","max","floor","deleteDate","attr","id","datepicker","moment","format","scopeApply","input","isValid","toDate","todayBtn","todayHighlight","toDisplay","date","language","toValue","keyboardNavigation","forceParse","calendarWeeks","autoclose","orientation","on","data","isBefore","isAfter","endOf","Date","setSeconds","setMilliseconds","waitCounter","waitForInit","document","getElementById","onkeydown","event","keyCode","shiftKey","getStartEndDate","preventDefault","setTimeout","periodType","toEnd","next","startOf","add","closeAllDropDown","openSubMenu","menu","dp","hasAttribute","openDD","setDate","period","num","startOrEndOf","get","result","set","temp","shortcutYear","toDateString","openStartEndOfDdn","mode","window","onclick","force","matches","dropdowns","getElementsByClassName","classList","contains","remove","dateDropDownShurtcutYears","push","openShortcutYear","year","ddName","ancestor","parentNode","containerRect","$parent","console","log","tagName","getBoundingClientRect","lowerBound","top","height","menuRect","firstElementChild","ddLowerEnd","style","qmInputDateMonths","lngService","qmDateFrom","qmDateTo","qmMonths","controller","$scope","createMonthList","_a","today","monthNames","monthsList","yearList","translate","split","value","month","toISOString","text","months","getFullYear","getMonth","changeDate","qmInputDateRange","qmOriginalTimeFrom","qmOriginalTimeTo","qmPlaceholderDateFrom","qmPlaceholderDateTo","qmDisableTime","qmDisableDate","qmDurationInHours","qmDurationInDays","qmLabelDateFrom","qmLabelDateTo","qmValidTime","qmValidDate","qmEnableTime","qmEnableDateTo","qmRoundInterval","qmDisplayDuration","qmDateFromNotRequired","qmStartRoundType","qmEndRoundType","type","dateFromId","dateToId","dateFrom","timeFrom","originalTimeFrom","dateTo","timeTo","originalTimeTo","createListener","qmDateFromWatcher","newValue","oldValue","removeListener","createDateFromString","validate","qmDateToWatcher","dateFromListener","JSON","stringify","getCurrentDate","dateToListener","timeFromListener","timeToListener","handleDateKeyEvent","setTimeFrom","getHours","getMinutes","orgTimeFrom","setTimeTo","orgTimeTo","roundTime","addTimeToDate","getDurationInDays","duration","qmRequiered","diff","isNaN","Number","asHours","e","warn","source","prevDate","from","to","altKey","setHours","qmInputFile","lng","qmAccept","filenames","uploads","openFileSelector","click","addFile","file_1","name","base64","allowedFileTypes","some","x","includes","pop","alert","loading","val","qmInputNumber","qmMaxLength","qmClass","qmMinValue","qmMaxValue","qmDisableDecimal","qmDisplayRound","seperator","toLocaleString","substring","maxLength","parseInt","lengthString","addEventListener","respectSpinner","waitForEl","originalEvent","currentValue","displayModel","navigator","userAgent","indexOf","blur","is","validateNumber","focus","select","displayValue","toFixed","number","inputString","qmInputPassword","qmMinlength","qmMaxlength","qmPattern","qmTrim","isPW","hasOwnProperty","InputSelect","wvService","permissionService","$timeout","userService","qmData","qmShowCheckbox","qmCheckboxModel","qmKeepEmptyGuidItems","qmWvId","qmSubWvId","qmWvData","qmWvValueType","qmKeepOrder","qmMaxDisplayItems","qmMinSearchInput","qmMinSearchInputThreshold","formatFormValueForRequest","form","isColor","hexToInt","lastValue","windowSettingKey","defaultSettings","maxDisplayItems","minSearchInput","minSearchInputThreshold","setSearchParams","settings","_c","_b","getCostumizedSetting","getUserSettings","then","catch","finally","originalPlaceholder","vm","wvPermissionStorage","tip","getData","search","selected","filter","item","index","Common","Constants","GUID_EMPTY","subText","join","toUpperCase","splice","isArray","forEach","y","sort","b","localeCompare","sensitivity","group","promptId","promptOptions","title","yesNo","icon","formState","getPermission","loadWv","cache","dsPerm","loadWvPerm","newWv","new","modifyWv","modify","deleteWv","delete","viewWv","lastParent","getPermissionsForDataset","initForm","objectId","comment","shortName","idReferencedObject","isFix","idSubtype","parentWvId","addValueConfigToForm","prepareData","openWv","formModalTitle","tableScheme","table","Farbe","invisible","modal","wvLoad","getSubWvList","getWvList","markSelectedItems","_i","charAt","intToHex","map","unshift","functionWaiter","setSelection","checked","element_1","active","items","element_2","model","list","list_1","newWvEntry","postWvEntry","angular","copy","postSubWv","createdId","createdObjectId","postWv","editWvEntry","putWvEntry","putSubWv","putWv","deleteWvEntry","itemText","Utilities","confirm","deleteSubWv","formInvalid","textField","innerHTML","config","defaultSort","Active","dType","noHeader","events","onChange","Kürzel","label","lngTag","Bezeichnung","Bemerkung","Aktionen","tooltip","permission","hide","card","avatar","checkbox","subtext","buttons","SignaturePadComponent","$window","$element","EMPTY_IMAGE","$postLink","clear","signaturePad","dataurl","accept","signature","dataUrl","isEmpty","toDataURL","bind","onResize","fromDataURL","updateModel","canvas","SignaturePad","$apply","prototype","prePic","toData","canvasBoundingRect","startWidth","width","startHeight","ratio","devicePixelRatio","offsetWidth","offsetHeight","getContext","scale","minWidth","maxWidth","prePic_1","stroke","points","point","fromData","module","component","controllerAs","bindings","qmInputText","qmValue","qmMinLength","InputTextblock","mediaService","$sce","qmOpen","qmInsert","formatted","inline","storageName","initModal","localStorage","getItem","parse","setFormatCache","setItem","laLabel","caption","subCaption","initLASelect","searchText","textblocks","isChecked","setChecked","storage","sessionStorage","getTime","timestamp","loadData","getTextBlocks","getFilteredData","blocks","livingAreaId","subLivingAreaId","addCheckedTextBlocks","block","stripParagraph","previewText","trustHtml","html","trustAsHtml","showPreview","textBlock","textBlockPreview","showPreviewFormatted","div","createElement","first","outerHTML","InputTexttemplate","wvLabel","initSelect","texttemplates","getTextTemplates","categoryId","subCategoryId","getTextTemplateContent","mediaId","content","qmInputTime","qmNoRow","splitted","timepicker","clockpicker","change","stopPropagation","time","removeClass","WvSelect","qmSelectedWvId","qmSelectedSubWvId","init","subLoading","wvs","subWvs","subWvMap","getSubWvListForParent","dataSub"],"mappings":"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"}