{"version":3,"sources":["webpack:///./src/components/Notifications/CustomExpressionItem.vue?fc27","webpack:///./src/components/Notifications/CustomExpressionsDialog.vue?9e84","webpack:///./src/components/Notifications/NotificationConfiguration.vue?594b","webpack:///./src/Scripts/utilities/duration-helper.js","webpack:///./src/components/Notifications/ConditionStepper.vue?b6cd","webpack:///./src/components/Notifications/CustomExpressionSelect.vue?7687","webpack:///./src/components/Notifications/CustomRecipientItem.vue?5d93","webpack:///./src/components/SeverityTextFieldSelector.vue?f56e","webpack:///./src/components/Notifications/MathematicalExpressionSelect.vue?de8c","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/components/Notifications/ConditionStepper.vue?94a5","webpack:///./src/Scripts/viewModels/selectOption.js","webpack:///./src/Scripts/utilities/condition-type-helper.js","webpack:///./src/components/SeveritySelector.vue?1b5b","webpack:///./src/components/SeveritySelector.vue","webpack:///./src/components/SeveritySelector.vue?1054","webpack:///./src/components/SeveritySelector.vue?6461","webpack:///./src/components/SeverityTextFieldSelector.vue?b705","webpack:///./src/components/SeverityTextFieldSelector.vue","webpack:///./src/components/SeverityTextFieldSelector.vue?0827","webpack:///./src/components/SeverityTextFieldSelector.vue?f874","webpack:///./src/components/Notifications/CustomExpressionsModule.vue?0b7f","webpack:///./src/components/Notifications/CustomExpressionItem.vue?00cf","webpack:///./src/components/Notifications/CustomExpressionsDialog.vue?cd25","webpack:///./src/components/Notifications/CustomExpressionSelect.vue?3f4b","webpack:///./src/components/Notifications/CustomExpressionSelect.vue","webpack:///./src/components/Notifications/CustomExpressionSelect.vue?fb8a","webpack:///./src/components/Notifications/CustomExpressionSelect.vue?fc84","webpack:///./src/components/Notifications/MathematicalExpressionSelect.vue?a82a","webpack:///./src/components/Notifications/MathematicalExpressionSelect.vue","webpack:///./src/components/Notifications/MathematicalExpressionSelect.vue?579d","webpack:///./src/components/Notifications/MathematicalExpressionSelect.vue?1f12","webpack:///./src/components/Notifications/CustomExpressionsDialog.vue","webpack:///./src/components/Notifications/CustomExpressionsDialog.vue?fdb4","webpack:///./src/components/Notifications/CustomExpressionsDialog.vue?fc9e","webpack:///./src/components/Notifications/CustomExpressionItem.vue","webpack:///./src/components/Notifications/CustomExpressionItem.vue?8e4c","webpack:///./src/components/Notifications/CustomExpressionItem.vue?6b10","webpack:///./src/components/Notifications/CustomExpressionsModule.vue","webpack:///./src/components/Notifications/CustomExpressionsModule.vue?756c","webpack:///./src/components/Notifications/CustomExpressionsModule.vue?65ae","webpack:///./src/components/Notifications/CustomRecipientItem.vue?6878","webpack:///./src/components/Notifications/CustomRecipientItem.vue","webpack:///./src/components/Notifications/CustomRecipientItem.vue?54ae","webpack:///./src/components/Notifications/CustomRecipientItem.vue?65e7","webpack:///./src/components/Notifications/ConditionStepper.vue","webpack:///./src/components/Notifications/ConditionStepper.vue?c123","webpack:///../../../src/components/VStepper/VStepper.ts","webpack:///../../../src/components/VStepper/VStepperContent.ts","webpack:///../../../src/components/VStepper/VStepperStep.ts","webpack:///../../../src/components/VStepper/index.ts","webpack:///./src/components/Notifications/ConditionStepper.vue?2aef","webpack:///./src/components/SeveritySelector.vue?ef40","webpack:///./src/components/Notifications/NotificationConfiguration.vue?b3b2","webpack:///./src/components/Notifications/NotificationConfiguration.vue","webpack:///./src/components/Notifications/NotificationConfiguration.vue?bfe7","webpack:///./src/components/Notifications/NotificationConfiguration.vue?82ac"],"names":["getDurationUnitFromSeconds","durationInSeconds","options","durationInDays","durationInHours","durationInMinutes","disableDays","isValidInteger","disableHours","disableMinutes","getDurationValueFromSeconds","getSecondsFromDurationValueAndUnit","value","unit","isInteger","isFinite","Math","floor","seconds","baseMixins","mixins","VTextField","extend","name","props","autoGrow","Boolean","noResize","rowHeight","type","Number","String","default","validator","v","isNaN","parseFloat","rows","parseInt","computed","classes","this","noResizeHandle","call","watch","val","$nextTick","calculateInputHeight","$refs","input","_this$$refs$input","style","removeProperty","lazyValue","mounted","setTimeout","methods","height","scrollHeight","minHeight","max","genInput","tag","data","attrs","onInput","e","onKeyDown","isFocused","keyCode","stopPropagation","$emit","render","_vm","_h","$createElement","_c","_self","staticClass","model","callback","$$v","step","expression","isFirstStepComplete","_v","extendedVessels","syncNotification","vessels","on","$event","$set","onVesselChanged","isEditMode","_e","onCancel","_s","selectedVesselsNameString","scopedSlots","_u","key","fn","proxy","thresholds","VesselDataOverdueThresholds","isPerformanceStatusNotOkThresholdsFilled","isPerformanceStatusObserveThresholdsFilled","isSpeedLossThresholdsFilled","isFuelConsumptionThresholdsFilled","vesselsWithoutDiagnosticsModule","PerformanceStatusObserveThresholds","isDiagnosticsModuleDisabledForAllVessels","PerformanceStatusNotOkThresholds","vesselsWithoutFoulingModule","SpeedLossWarningThresholds","speedLossPercentage","warning","isFoulingModuleDisabledForAllVessels","SpeedLossCriticalThresholds","critical","FuelConsumptionWarningThresholds","fuelConsumptionValue","FuelConsumptionCriticalThresholds","ref","onExpressionItemChanged","onExpressionTypeChanged","onExpressionComment","LogDataExpressionThresholds","hasLogDataExpressions","staticStyle","manualInputVariables","onManualInputVariableChanged","selectedManualInputVariable","ManualInputValueStaleThresholds","vesselsWithoutShaPoLiModule","isShapoliModuleDisabledForAllVessels","notifyShaPoLiEvent","notifyVoyageEvent","vesselsWithoutLogVariableOfflineModule","isVesselLogVaribleOfflineDisabled","notifyVariableOfflineEvent","notifyMissingSignalEvent","isAnyThresholdsFilled","onStepSelectChannels","onSelectAllUsersChanged","_l","user","id","onUsersChanged","email","selectedUsers","onSelectAllChannelsChanged","channel","onEmailChannelsChanged","selectedChannels","deleteMail","emailRules","valid","newCustomEmail","isEmailValid","submitEmail","condition","i","conditions","recipientsList","onRecipientsUpdate","onConfirm","onCreate","staticRenderFns","ViewModel","text","getConditionTypeSelectOptions","vesselFeatures","vessel","SelectOption","hasDiagnosticsFeature","_","any","feature","push","hasKspSystem","onboardSystem","split","includes","getTargetKeySelectionOptions","conditionType","getConditionTypeText","targetKey","content","getTargetKeyByConditionType","getConditionTimezoneText","threshold","severityColor","severity","disabled","class","syncThresholds","refInFor","durationValueFromSeconds","onDurationInput","numericFilter","setTimeUnit","units","onUnitsChanged","SeveritySelector","staticThresholds","selectedThresholds","unitCritical","unitWarning","isDataSetted","durationHelper","$value","internalValue","Vue","set","syncThresholdIndex","findIndex","thrl","event","window","expect","target","toString","test","preventDefault","$unit","thresholdDurationInputValue","_value","find","thr","notificationConditionId","setInitialData","__decorate","PropSync","Prop","Component","components","component","VCheckbox","VSelect","maxWidth","inputAppendIcon","suffix","syncValue","_n","SeverityTextFieldSelector","selectedThreshold","_g","CustomExpressionsDialog","vesselId","customExpressionItemsList","isOperatorSelectAvailable","onExpressionChanged","onTypeChanged","onConditionDeleted","onSaveCustomExpressions","isCommentDisabled","openCommentDialog","syncExpression","comment","length","vesselName","expressionType","item","onEditExpression","operator","logVariableName","symbol","amount","logVariableUnitName","deleteCondition","expressions","mathContent","onAddExpression","CustomExpressionItem","editedExpressionIndex","closeCommentDialog","CommentDialog","saveComment","dialogWidth","close","isModalActive","expressionTypes","isExpressionTypeSelectDisabled","currentExpressionType","expressionsList","isCopyConditionAvailable","isLogicExpressionApplied","onMathExpressionChanged","onCopyCondition","isSaveDisabled","save","operators","isOperatorDisabled","selectedLogVariableName","isVesselLogVariablesLoaded","isInputDisabled","onLogVariableInputClick","onLogVariableInputClear","directives","rawName","selectedLogVariableUnitName","conditionsList","onConditionChanged","onAmountChanged","isCopyConditionActive","LogVariablesDialog","logVariablesColumn","LogVariables","getModule","LogVariablesModule","store","Vessels","VesselsModule","CustomExpressionSelect","logVariables","logVariable","vesselLogVariables","logVariableByVesselId","selectedLogVariable","displayName","getExtendedVesselById","hasMathExpression","mode","undefined","expressionStructure","token","left","right","JSON","stringify","expressionAmount","fetchAllLogVariablesByVesselId","fetchVesselLogVariables","required","Watch","deep","VBtn","VFadeTransition","VIcon","VProgressCircular","VTooltip","onClearMathResult","onOperatorAdd","onLogVariableAdd","onSymbolAdd","indexOf","_k","onAmountAdd","apply","arguments","onAmountInput","MathematicalExpressionSelect","reset","selectedLogVariableID","VForm","grouped","parse","EmptyExpressionsList","map","expressionItem","some","expr","initialExpressionItem","operatorSelectAvailable","editItemIndex","filter","exp","index","forEach","logVariableByNameAndVesselId","disabledItems","VCard","VCardActions","VCardText","VDialog","VSpacer","VToolbar","VToolbarTitle","every","splice","VTextarea","CustomExpressionsModule","addDescriptionDialog","getExpressions","getComment","getExpressionType","expressionItemIndex","changedItem","expressionItemComment","vesselCondition","splittedExpressionItem","conditionDetails","replace","stringifiedExpression","trim","contentDescription","syncRecipients","onRecipientsChanged","userId","userName","_b","active","selectedRecipients","Users","UsersModule","CustomRecipientItem","syncCondition","channels","conditionTypeHelper","users","features","f","getUserById","VChip","VListItem","VListItemAction","VListItemContent","VList","VListItemTitle","VRow","Snackbar","SnackbarModule","User","UserModule","Channels","ChannelsModule","Incidents","IncidentsModule","ConditionStepper","vesselLogVariablesModal","showCreatedExpressionsDataList","selectedVessel","expressionsDataList","LogDataMathExpressionThresholds","ShapoliPowerReserveBreachThresholds","VoyageCompleteThresholds","VariableOfflineThresholds","MissingSignalThresholds","updateConditions","emailChannels","u","cond","logDataExpressionTypeConditions","join","c","hasDisabledModule","Object","keys","userRole","isDeleted","updateCondition","isVesselDataOverdueThresholdsFilled","conditionsConstructor","isLogDataExpressionThresholdsFilled","isLogDataMathExpressionThresholdsFilled","isManualInputValueStaleThresholdsFilled","expressionConditionDetails","expressionContentByVesselId","conditionChannels","selectedRecipientsList","thresholdsByType","existingCondition","vesselExpressionItem","expressionClauses","expressionTree","clause","newExpressionTree","BinaryExpression","expressionClausesByVesselId","createExpressionTree","toLowerCase","$router","expressionItemsList","existingConditionIndex","getConditionDetailsFromArray","expressionsArray","str","conditionIndex","chnl","isChecked","emailChannelIndex","usr","userIndex","confirmDelete","open","confirmed","deleteChannel","chnlIndex","DELETE_CHANNEL","showSnackbar","htmlEncoder","htmlEncode","color","ADD_CHANNEL","foulingFeatureDisabled","diagnostiscFeatureDisabled","shapoliFeatureDisabled","isVesselChecked","uniqueConditions","unique","x","emails","commonSelectedEmails","commonSelectedUsers","addedVesselConditions","uniq","updatedConditions","conditionsWithoutUncheckedVessel","con","vesselExistedConditions","removeLogDataExpressionsDuplicates","indexListWithDisabledFeature","conditionList","duplicationIndex","conditionStep","logDataMathThresholds","logDataThresholds","manualInputStaleTypeConditions","Ref","VesselSelect","ConfirmDialog","NotificationConfiguration","VSheet","RegistrableProvide","Proxyable","provide","stepClick","isVertical","vertical","altLabels","nonLinear","flat","isBooted","steps","isReverse","internalLazyValue","styles","oldVal","updateView","created","$listeners","breaking","register","$options","unregister","toggle","h","$slots","RegistrableInject","inject","isVerticalProvided","from","isActive","computedTransition","reverse","$vuetify","rtl","VTabReverseTransition","VTabTransition","convertToUnit","current","previous","enter","leave","wrapper","addEventListener","onTransition","stepper","beforeDestroy","removeEventListener","propertyName","requestAnimationFrame","clientHeight","contentData","wrapperData","Colorable","ripple","complete","completeIcon","editable","editIcon","errorIcon","rules","Array","isInactive","hasError","validate","click","genIcon","icon","genLabel","genStep","setBackgroundColor","genStepContent","children","keyboardClick","keyCodes","space","tabindex","keydown","VStepperHeader","createSimpleFunctional","VStepperItems","VAlert","VDivider","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VStepper","VStepperContent","VStepperStep","VSubheader","durationUnitFromSeconds","concat","getFuelConsumptionValue","getSpeedLossPercentage","manualInputValueStaleOption","_m","openEditDialog","usersFromConditions","emailsFromConditions","_t","group","manualInputStaleConditions","g","isApplied","sort","flatten","pluck","getUsers","speedLossConditionBySeverity","fuelConsumptionConditionBySeverity"],"mappings":"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","file":"js/chunk-19c6ee56.b959a27c.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionItem.vue?vue&type=style&index=0&id=3ab7647a&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionsDialog.vue?vue&type=style&index=0&id=ec3d7c40&scoped=true&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationConfiguration.vue?vue&type=style&index=0&id=3521fdcf&lang=scss&scoped=true&\"","function getDurationUnitFromSeconds(durationInSeconds, options) {\r\n var durationInDays = durationInSeconds / 60 / 60 / 24;\r\n var durationInHours = durationInSeconds / 60 / 60;\r\n var durationInMinutes = durationInSeconds / 60;\r\n\r\n if (!options.disableDays && isValidInteger(durationInDays)) {\r\n return \"days\";\r\n }\r\n\r\n if (!options.disableHours && isValidInteger(durationInHours)) {\r\n return \"hours\";\r\n }\r\n\r\n if (!options.disableMinutes && isValidInteger(durationInMinutes)) {\r\n return \"minutes\";\r\n }\r\n\r\n return \"seconds\";\r\n}\r\n\r\nfunction getDurationValueFromSeconds(durationInSeconds, options) {\r\n var durationInDays = durationInSeconds / 60 / 60 / 24;\r\n var durationInHours = durationInSeconds / 60 / 60;\r\n var durationInMinutes = durationInSeconds / 60;\r\n\r\n if (!options.disableDays && isValidInteger(durationInDays)) {\r\n return durationInDays;\r\n }\r\n\r\n if (!options.disableHours && isValidInteger(durationInHours)) {\r\n return durationInHours;\r\n }\r\n\r\n if (!options.disableMinutes && isValidInteger(durationInMinutes)) {\r\n return durationInMinutes;\r\n }\r\n\r\n return durationInSeconds;\r\n}\r\n\r\nfunction getSecondsFromDurationValueAndUnit(value, unit) {\r\n switch (unit) {\r\n case \"seconds\":\r\n return value;\r\n case \"minutes\":\r\n return value * 60;\r\n case \"hours\":\r\n return value * 60 * 60;\r\n case \"days\":\r\n return value * 60 * 60 * 24;\r\n default:\r\n throw \"Unexpected duration unit\";\r\n }\r\n}\r\n\r\n//See: polyfill on\r\n//https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\r\nfunction isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n}\r\n\r\nfunction isValidInteger(value) {\r\n if (!isInteger(value)) return false;\r\n return true;\r\n}\r\n\r\nexport default {\r\n getDurationValueFromSeconds: function(seconds, options) {\r\n options = options || {};\r\n return getDurationValueFromSeconds(seconds, options);\r\n },\r\n getDurationUnitFromSeconds: function(seconds, options) {\r\n options = options || {};\r\n return getDurationUnitFromSeconds(seconds, options);\r\n },\r\n getSecondsFromDurationValueAndUnit: function(value, unit) {\r\n return getSecondsFromDurationValueAndUnit(value, unit);\r\n },\r\n isValidInteger: function(value) {\r\n return isValidInteger(value);\r\n },\r\n};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConditionStepper.vue?vue&type=style&index=0&id=47a6751f&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionSelect.vue?vue&type=style&index=0&id=1d1539d4&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomRecipientItem.vue?vue&type=style&index=0&id=6e8704f6&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeverityTextFieldSelector.vue?vue&type=style&index=0&id=b54f6966&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MathematicalExpressionSelect.vue?vue&type=style&index=0&id=4ae7fe5a&lang=scss&scoped=true&\"","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"condition-stepper\"},[_c('v-stepper',{staticClass:\"mb-12\",model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:\"step\"}},[_c('v-stepper-header',[_c('v-stepper-step',{attrs:{\"complete\":_vm.isFirstStepComplete,\"step\":\"1\",\"editable\":\"\"}},[_vm._v(\" Select Vessels \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"complete\":_vm.step > 2,\"step\":\"2\"}},[_vm._v(\" Select Events \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"step\":\"3\",\"complete\":_vm.step > 3}},[_vm._v(\" Select Channels \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"step\":\"4\"}},[_vm._v(\" Confirm \")])],1),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('v-card',{attrs:{\"elevation\":\"0\"}},[_c('v-alert',{attrs:{\"icon\":\"mdi-information-outline\",\"color\":\"primary lighten-4\",\"dark\":\"\"}},[_vm._v(\" Notifications can be set up based on fleet level or chosen vessels level. Choose your preference below and click on Continue. \")]),_c('VesselSelect',{staticClass:\"mb-6\",attrs:{\"vesselsList\":_vm.extendedVessels,\"selectedVesselsList\":_vm.syncNotification.vessels,\"requiredFeatures\":['Notifications']},on:{\"update:selectedVesselsList\":function($event){return _vm.$set(_vm.syncNotification, \"vessels\", $event)},\"update:selected-vessels-list\":function($event){return _vm.$set(_vm.syncNotification, \"vessels\", $event)},\"onVesselChange\":_vm.onVesselChanged}}),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"disabled\":_vm.isFirstStepComplete === false},on:{\"click\":function($event){_vm.step = 2}}},[_vm._v(\" Continue \"),_c('v-icon',{staticClass:\"ml-1\"},[_vm._v(\"mdi-arrow-right-circle\")])],1),(!_vm.isEditMode)?_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]):_vm._e()],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_c('v-card',{attrs:{\"elevation\":\"0\"}},[_c('v-alert',{staticClass:\"mb-2\",attrs:{\"icon\":\"mdi-information-outline\",\"color\":\"primary lighten-4\",\"dark\":\"\"}},[_vm._v(\" Choose the Notifications from a below list  that meet your specific requirements and click on Continue.\"),_c('br'),_vm._v(\" Selected Vessels: \"),_c('b',[_vm._v(_vm._s(_vm.selectedVesselsNameString))])]),_c('v-expansion-panels',{staticClass:\"mb-auto mt-10\"},[_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Vessel Data Related Events \"),(_vm.isVesselDataOverdueThresholdsFilled)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Vessel data is overdue\")]),_c('SeveritySelector',{attrs:{\"thresholds\":_vm.thresholds.VesselDataOverdueThresholds},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"VesselDataOverdueThresholds\", $event)}}}),_c('v-divider',{staticClass:\"mb-5\"})],1)],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Vessel Performance Related Events \"),(_vm.isPerformanceStatusNotOkThresholdsFilled || _vm.isPerformanceStatusObserveThresholdsFilled || _vm.isSpeedLossThresholdsFilled || _vm.isFuelConsumptionThresholdsFilled)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e(),(Boolean(_vm.vesselsWithoutDiagnosticsModule))?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"warning\"}},[_vm._v(\" mdi-alert \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[_c('div',{staticClass:\"cols d-flex\"},[_c('div',{staticClass:\"col\"},[(Boolean(_vm.vesselsWithoutDiagnosticsModule))?_c('v-alert',{staticClass:\"mb-10\",attrs:{\"icon\":\"mdi-alert\",\"color\":\"secondary2\",\"dark\":\"\"}},[_c('b',[_vm._v(\"Diagnostics\")]),_vm._v(\" module is not activated for \"),_c('b',[_vm._v(_vm._s(_vm.vesselsWithoutDiagnosticsModule))]),_c('br'),_vm._v(\" Please contact sales@danelec.com for a quotation to activate a subscription. \")]):_vm._e(),_c('div',{staticClass:\"severity-item\"},[_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Vessel performance status is Observed\")]),_c('SeveritySelector',{attrs:{\"thresholds\":_vm.thresholds.PerformanceStatusObserveThresholds,\"disabled\":_vm.isDiagnosticsModuleDisabledForAllVessels},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"PerformanceStatusObserveThresholds\", $event)}}}),_c('v-divider',{staticClass:\"mb-5\"})],1),_c('div',{staticClass:\"severity-item\"},[_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Vessel performance status is NOT Ok\")]),_c('SeveritySelector',{attrs:{\"thresholds\":_vm.thresholds.PerformanceStatusNotOkThresholds,\"disabled\":_vm.isDiagnosticsModuleDisabledForAllVessels},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"PerformanceStatusNotOkThresholds\", $event)}}})],1)],1),_c('div',{staticClass:\"col\"},[(Boolean(_vm.vesselsWithoutFoulingModule))?_c('v-alert',{staticClass:\"mb-10\",attrs:{\"icon\":\"mdi-alert\",\"color\":\"secondary2\",\"dark\":\"\"}},[_c('b',[_vm._v(\"Fouling\")]),_vm._v(\" module is not activated for \"),_c('b',[_vm._v(_vm._s(_vm.vesselsWithoutFoulingModule))]),_c('br'),_vm._v(\" Please contact sales@danelec.com for a quotation to activate a subscription. \")]):_vm._e(),_c('div',{staticClass:\"severity-item\"},[_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Vessel Speed Loss is above X% relative to the baseline\")]),_c('SeverityTextFieldSelector',{attrs:{\"thresholds\":_vm.thresholds.SpeedLossWarningThresholds,\"value\":_vm.speedLossPercentage.warning,\"input-append-icon\":\"mdi-percent\",\"disabled\":_vm.isFoulingModuleDisabledForAllVessels},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"SpeedLossWarningThresholds\", $event)},\"update:value\":function($event){return _vm.$set(_vm.speedLossPercentage, \"warning\", $event)}}}),_c('SeverityTextFieldSelector',{attrs:{\"type\":\"Critical\",\"thresholds\":_vm.thresholds.SpeedLossCriticalThresholds,\"value\":_vm.speedLossPercentage.critical,\"input-append-icon\":\"mdi-percent\",\"disabled\":_vm.isFoulingModuleDisabledForAllVessels},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"SpeedLossCriticalThresholds\", $event)},\"update:value\":function($event){return _vm.$set(_vm.speedLossPercentage, \"critical\", $event)}}}),(_vm.isSpeedLossCriticalLessThanWarning)?_c('span',{staticClass:\"severity-text-field-error\"},[_vm._v(\" Critical threshold must be higher than Warning threshold \")]):_vm._e(),_c('v-divider',{staticClass:\"mb-5\"})],1),_c('div',{staticClass:\"severity-item\"},[_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Vessel Estimated Cumulative Additional Fuel Consumption in the current trend period is above X\")]),_c('SeverityTextFieldSelector',{attrs:{\"thresholds\":_vm.thresholds.FuelConsumptionWarningThresholds,\"value\":_vm.fuelConsumptionValue.warning,\"text\":'If Fuel Consumption is Above',\"suffix\":\"ton(s)\",\"max-width\":\"126px\",\"disabled\":_vm.isFoulingModuleDisabledForAllVessels},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"FuelConsumptionWarningThresholds\", $event)},\"update:value\":function($event){return _vm.$set(_vm.fuelConsumptionValue, \"warning\", $event)}}}),_c('SeverityTextFieldSelector',{attrs:{\"type\":\"Critical\",\"thresholds\":_vm.thresholds.FuelConsumptionCriticalThresholds,\"value\":_vm.fuelConsumptionValue.critical,\"text\":'If Fuel Consumption is Above',\"suffix\":\"ton(s)\",\"max-width\":\"126px\",\"disabled\":_vm.isFoulingModuleDisabledForAllVessels},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"FuelConsumptionCriticalThresholds\", $event)},\"update:value\":function($event){return _vm.$set(_vm.fuelConsumptionValue, \"critical\", $event)}}}),(_vm.isFuelConsumptionCriticalLessThanWarning)?_c('span',{staticClass:\"severity-text-field-error\"},[_vm._v(\" Critical threshold must be higher than Warning threshold \")]):_vm._e()],1)],1)])])],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Log Data Matches Custom Expression \"),(_vm.isLogDataExpressionThresholdsFilled)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Custom expressions\")]),(_vm.step === 2)?_c('CustomExpressionsModule',{ref:\"CustomExpressionsModule\",attrs:{\"notification\":_vm.syncNotification},on:{\"update:notification\":function($event){_vm.syncNotification=$event},\"onExpressionItemChanged\":_vm.onExpressionItemChanged,\"onExpressionTypeChanged\":_vm.onExpressionTypeChanged,\"onExpressionComment\":_vm.onExpressionComment}}):_vm._e(),_c('SeveritySelector',{staticClass:\"mt-8\",attrs:{\"thresholds\":_vm.thresholds.LogDataExpressionThresholds,\"disabled\":!_vm.hasLogDataExpressions},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"LogDataExpressionThresholds\", $event)}}}),_c('v-divider',{staticClass:\"mb-5\"})],1)],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Manual Input Event \"),(_vm.isManualInputValueStaleThresholdsFilled)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[_c('span',{staticClass:\"body-2 mb-1 d-flex\"},[_vm._v(\"Manual input has not been updated\")]),_c('v-select',{staticClass:\"elevation-0 mb-6\",staticStyle:{\"width\":\"200px\"},attrs:{\"item-text\":\"text\",\"item-value\":\"type\",\"items\":_vm.manualInputVariables,\"return-object\":\"\",\"dense\":\"\",\"outlined\":\"\",\"hide-details\":\"\"},on:{\"change\":_vm.onManualInputVariableChanged},model:{value:(_vm.selectedManualInputVariable),callback:function ($$v) {_vm.selectedManualInputVariable=$$v},expression:\"selectedManualInputVariable\"}}),_c('SeveritySelector',{attrs:{\"thresholds\":_vm.thresholds.ManualInputValueStaleThresholds},on:{\"update:thresholds\":function($event){return _vm.$set(_vm.thresholds, \"ManualInputValueStaleThresholds\", $event)}}})],1)],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" EEXI ShaPoLi \"),(_vm.notifyShaPoLiEvent)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e(),(Boolean(_vm.vesselsWithoutShaPoLiModule))?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"warning\"}},[_vm._v(\" mdi-alert \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[(Boolean(_vm.vesselsWithoutShaPoLiModule))?_c('v-alert',{staticClass:\"mb-10\",attrs:{\"icon\":\"mdi-alert\",\"color\":\"secondary2\",\"dark\":\"\"}},[_vm._v(\" EEXI SHaPoLi module is not activated for \"),_c('b',[_vm._v(_vm._s(_vm.vesselsWithoutShaPoLiModule))]),_c('br'),_vm._v(\" This module requires that the vessel is equipped with a Delfini ship performance system.\"),_c('br'),_vm._v(\" Please contact sales@danelec.com for more information about EEXI SHaPoLi and Delfini. \")]):_vm._e(),_c('v-checkbox',{attrs:{\"disabled\":_vm.isShapoliModuleDisabledForAllVessels,\"label\":\"Notify EEXI ShaPoLi breach events\",\"hide-details\":\"\"},model:{value:(_vm.notifyShaPoLiEvent),callback:function ($$v) {_vm.notifyShaPoLiEvent=$$v},expression:\"notifyShaPoLiEvent\"}})],1)],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Voyage Event \"),(_vm.notifyVoyageEvent)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[_c('v-checkbox',{attrs:{\"label\":\"Notify on voyage complete\",\"hide-details\":\"\"},model:{value:(_vm.notifyVoyageEvent),callback:function ($$v) {_vm.notifyVoyageEvent=$$v},expression:\"notifyVoyageEvent\"}})],1)],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Log Variable Offline Event \"),(_vm.notifyVariableOfflineEvent)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e(),(Boolean(_vm.vesselsWithoutLogVariableOfflineModule))?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"warning\"}},[_vm._v(\" mdi-alert \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[(Boolean(_vm.vesselsWithoutLogVariableOfflineModule))?_c('v-alert',{staticClass:\"mb-10\",attrs:{\"icon\":\"mdi-alert\",\"color\":\"secondary2\",\"dark\":\"\"}},[_vm._v(\" Log Variable Offline functionallity is not available for \"),_c('b',[_vm._v(_vm._s(_vm.vesselsWithoutLogVariableOfflineModule))]),_c('br')]):_vm._e(),_c('v-checkbox',{attrs:{\"label\":\"Notify on log variable offline\",\"disabled\":_vm.isVesselLogVaribleOfflineDisabled,\"hide-details\":\"\"},model:{value:(_vm.notifyVariableOfflineEvent),callback:function ($$v) {_vm.notifyVariableOfflineEvent=$$v},expression:\"notifyVariableOfflineEvent\"}})],1)],1),_c('v-expansion-panel',{staticClass:\"mb-5 elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"white--text font-weight-semibold\",attrs:{\"color\":\"primary lighten-2\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}])},[_c('span',{staticClass:\"d-flex align-center\"},[_vm._v(\" Sensor Signal Missing Event \"),(_vm.notifyMissingSignalEvent)?_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")]):_vm._e()],1)]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[_c('v-checkbox',{attrs:{\"label\":\"Notify when sensor signal is missing\",\"hide-details\":\"\"},model:{value:(_vm.notifyMissingSignalEvent),callback:function ($$v) {_vm.notifyMissingSignalEvent=$$v},expression:\"notifyMissingSignalEvent\"}})],1)],1)],1),_c('v-card-actions',[_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){_vm.step = 1}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-arrow-left-circle\")]),_vm._v(\" Previous \")],1),_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\",\"disabled\":!_vm.isAnyThresholdsFilled},on:{\"click\":_vm.onStepSelectChannels}},[_vm._v(\" Continue \"),_c('v-icon',{staticClass:\"ml-1\"},[_vm._v(\"mdi-arrow-right-circle\")])],1),(!_vm.isEditMode)?_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":_vm.onCancel}},[_vm._v(\"Cancel\")]):_vm._e()],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[_c('v-card',{attrs:{\"elevation\":\"0\"}},[_c('v-alert',{staticClass:\"mb-2\",attrs:{\"icon\":\"mdi-information-outline\",\"color\":\"primary lighten-4\",\"dark\":\"\"}},[_vm._v(\" Choose the Recipients from a below list and click on Continue.\"),_c('br'),_vm._v(\" Selected Vessels: \"),_c('b',[_vm._v(_vm._s(_vm.selectedVesselsNameString))])]),(_vm.hasEventWithDisabledModule)?_c('v-alert',{attrs:{\"icon\":\"mdi-alert\",\"outlined\":\"\",\"type\":\"warning\",\"color\":\"orange\",\"prominent\":\"\"}},[_vm._v(\" One or more of the vessels listed above do not meet all the Notification Events you have selected in the 'Select Events' page.\"),_c('br'),_vm._v(\" Conditions will not be created for such vessels. \")]):_vm._e(),_c('p',{staticClass:\"overline font-weight-semibold mt-10\"},[_vm._v(\"Recipients emails\")]),_c('div',{staticClass:\"content d-flex\"},[_c('div',{staticClass:\"user-list mb-4 mr-8\"},[_c('span',{staticClass:\"text-body-2 font-weight-semibold\"},[_vm._v(\"Users:\")]),_c('v-checkbox',{staticClass:\"mt-1\",attrs:{\"hide-details\":\"\"},on:{\"change\":_vm.onSelectAllUsersChanged},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"v-checkbox-label text-truncate font-weight-semibold\",staticStyle:{\"width\":\"290px\"}},[_vm._v(\" Select all \")])]},proxy:true}])}),_vm._l((_vm.users),function(user){return _c('div',{key:user.id,staticClass:\"user\"},[_c('v-checkbox',{staticClass:\"mt-1\",attrs:{\"value\":user,\"return-object\":\"\",\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.onUsersChanged(user)}},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"v-checkbox-label text-truncate\",staticStyle:{\"width\":\"290px\"}},[_vm._v(\" \"+_vm._s(user.name ? user.name : user.email)+\" \")])]},proxy:true}],null,true),model:{value:(_vm.selectedUsers),callback:function ($$v) {_vm.selectedUsers=$$v},expression:\"selectedUsers\"}})],1)})],2),_c('div',{staticClass:\"email-list mb-4\"},[_c('span',{staticClass:\"text-body-2 font-weight-semibold\"},[_vm._v(\"Custom emails:\")]),_c('v-checkbox',{staticClass:\"mt-1\",attrs:{\"hide-details\":\"\"},on:{\"change\":_vm.onSelectAllChannelsChanged},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"v-checkbox-label text-truncate font-weight-semibold\",staticStyle:{\"width\":\"290px\"}},[_vm._v(\" Select all \")])]},proxy:true}])}),_vm._l((_vm.emailChannels),function(channel){return _c('div',{key:channel.id,staticClass:\"email d-flex\"},[_c('v-checkbox',{staticClass:\"mt-1\",attrs:{\"value\":channel,\"return-object\":\"\",\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.onEmailChannelsChanged(channel)}},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"v-checkbox-label text-truncate\",staticStyle:{\"width\":\"290px\"}},[_vm._v(\" \"+_vm._s(channel.email)+\" \")])]},proxy:true}],null,true),model:{value:(_vm.selectedChannels),callback:function ($$v) {_vm.selectedChannels=$$v},expression:\"selectedChannels\"}}),_c('v-btn',{attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteMail(channel)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-delete\")])],1)],1)}),(_vm.isAddCustomMailAvailable)?_c('div',{staticClass:\"new-custom-email mb-4 mt-4\"},[_c('v-subheader',{staticClass:\"font-weight-semibold pa-0\",staticStyle:{\"height\":\"34px\"}},[_vm._v(\" New custom email \")]),_c('div',{staticClass:\"input d-flex\"},[_c('v-text-field',{staticClass:\"new-custom-email-input\",attrs:{\"type\":\"email\",\"rules\":[_vm.emailRules.valid],\"hide-details\":\"auto\",\"single-line\":\"\",\"flat\":\"\",\"solo\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.newCustomEmail),callback:function ($$v) {_vm.newCustomEmail=$$v},expression:\"newCustomEmail\"}}),_c('v-btn',{staticClass:\"ml-2 font-weight-semibold\",attrs:{\"medium\":\"\",\"color\":\"primary\",\"elevation\":\"0\",\"height\":\"40\",\"disabled\":_vm.isEmailValid},on:{\"click\":_vm.submitEmail}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Add \")],1)],1)],1):_vm._e()],2)]),_c('v-divider',{staticClass:\"mb-5\"}),_c('p',{staticClass:\"overline font-weight-semibold mt-10\"},[_vm._v(\"Customize email mapping\")]),_c('div',{staticClass:\"customize-email-mapping\"},[_vm._l((_vm.syncNotification.conditions),function(condition,i){return _c('CustomRecipientItem',{key:i,attrs:{\"condition\":_vm.syncNotification.conditions[i],\"recipients\":_vm.recipientsList},on:{\"update:condition\":function($event){return _vm.$set(_vm.syncNotification.conditions, i, $event)},\"update:recipients\":function($event){_vm.recipientsList=$event},\"update\":_vm.onRecipientsUpdate}})}),_c('v-divider',{staticClass:\"mb-5\"})],2),_c('v-card-actions',[_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){_vm.step = 2}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-arrow-left-circle\")]),_vm._v(\" Previous \")],1),_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onConfirm}},[_vm._v(\" Continue \"),_c('v-icon',{staticClass:\"ml-1\"},[_vm._v(\"mdi-arrow-right-circle\")])],1),(!_vm.isEditMode)?_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":_vm.onCancel}},[_vm._v(\"Cancel\")]):_vm._e()],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"4\"}},[_c('v-card',{attrs:{\"elevation\":\"0\"}},[_c('v-alert',{staticClass:\"mb-10\",attrs:{\"icon\":\"mdi-information-outline\",\"color\":\"primary lighten-4\",\"dark\":\"\"}},[_vm._v(\" Review your selections and confirm the configuration. \")]),_c('p',{staticClass:\"overline font-weight-semibold\"},[_vm._v(\"Configuration\")]),_c('NotificationConfiguration',{attrs:{\"vessels\":_vm.syncNotification.vessels,\"conditions\":_vm.syncNotification.conditions,\"thresholds\":_vm.thresholds,\"users\":_vm.selectedUsers,\"emails\":_vm.selectedChannels,\"shapoli-event\":_vm.notifyShaPoLiEvent,\"voyage-event\":_vm.notifyVoyageEvent,\"variable-offline-event\":_vm.notifyVariableOfflineEvent,\"missing-signal-event\":_vm.notifyMissingSignalEvent}}),_c('v-card-actions',[_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":function($event){_vm.step = 3}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\"mdi-arrow-left-circle\")]),_vm._v(\" Previous \")],1),_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onCreate}},[(!_vm.isEditMode)?_c('span',[_vm._v(\"Create\")]):_c('span',[_vm._v(\"Update\")])]),(!_vm.isEditMode)?_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":_vm.onCancel}},[_vm._v(\"Cancel\")]):_vm._e()],1)],1)],1)],1)],1),_c('ConfirmDialog',{ref:\"confirmDelete\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var ViewModel = function(value, text) {\r\n this.value = value;\r\n this.text = text;\r\n};\r\n\r\nexport default ViewModel;","import _ from \"underscore\";\r\nimport SelectOption from \"ViewModels/selectOption\";\r\n\r\nexport default {\r\n getConditionTypeSelectOptions: function (vesselFeatures, vessel) {\r\n var options = [\r\n new SelectOption(\"VesselDataOverdue\", \"vessel data is overdue\"),\r\n ];\r\n var hasDiagnosticsFeature = _.any(vesselFeatures, function (feature) {\r\n return feature.name === \"Diagnostics\";\r\n });\r\n if (hasDiagnosticsFeature) {\r\n options.push(new SelectOption(\"PerformanceStatusObserve\", \"vessel performance status is Observe\"));\r\n options.push(new SelectOption(\"PerformanceStatusNotOk\", \"vessel performance status is Not Ok\"));\r\n }\r\n\r\n var hasKspSystem = vessel.onboardSystem.split(\", \").includes(\"Ksp\");\r\n if (hasKspSystem) {\r\n options.push(new SelectOption(\"ManualInputValueStale\", \"manual input has not been updated\"));\r\n }\r\n\r\n options.push(new SelectOption(\"LogDataExpression\", \"log data matches custom expression\"));\r\n\r\n return options;\r\n },\r\n getTargetKeySelectionOptions: function (conditionType) {\r\n switch (conditionType) {\r\n case \"ManualInputValueStale\":\r\n return [\r\n new SelectOption(\"meta:fuel-property\", \"fuel properties\"),\r\n new SelectOption(\"property:draft\", \"draft\"),\r\n ];\r\n\r\n default:\r\n return [];\r\n }\r\n },\r\n getConditionTypeText: function (condition) {\r\n switch (condition.conditionType) {\r\n case \"VesselDataOverdue\":\r\n return \"When vessel data is overdue\";\r\n case \"PerformanceStatusObserve\":\r\n return \"When vessel performance status is Observe\";\r\n case \"PerformanceStatusNotOk\":\r\n return \"When vessel performance status is Not ok\";\r\n case \"ManualInputValueStale\": {\r\n switch (condition.targetKey) {\r\n case \"meta:fuel-property\":\r\n return \"When manual fuel properties has not been updated\";\r\n case \"property:draft\":\r\n return \"When manual draft has not been updated\";\r\n\r\n default:\r\n throw \"Unexpected condition target key: \" + condition.targetKey;\r\n }\r\n }\r\n case \"LogDataExpression\":\r\n return \"When log data matches custom expression\";\r\n case \"LogDataMathExpression\":\r\n return \"When log data matches mathematical expression\";\r\n case \"ShapoliPowerReserveBreach\":\r\n return \"ShaPoLi breach event\";\r\n case \"VoyageComplete\":\r\n return \"Voyage completed event\";\r\n case \"VariableOffline\":\r\n return \"Variable offline event\";\r\n case \"MissingSignal\":\r\n return \"Sensor signal missing event\";\r\n case \"LogDataMathExpression\":\r\n return \"when log data matches mathematical custom expression\";\r\n case \"SpeedLossWarning\":\r\n return `If Speed Loss (%) reaches ${condition.content}% relative to baseline`;\r\n case \"SpeedLossCritical\":\r\n return `If Speed Loss (%) reaches ${condition.content}% relative to baseline`;\r\n case \"FuelConsumptionWarning\":\r\n return `If Fuel Consumption is Above ${condition.content}`;\r\n case \"FuelConsumptionCritical\":\r\n return `If Fuel Consumption is Above ${condition.content}`;\r\n default:\r\n throw \"Unexpected condition type: \" + conditionType;\r\n }\r\n },\r\n getTargetKeyByConditionType: function (conditionType) {\r\n switch (conditionType) {\r\n case \"VesselDataOverdue\":\r\n return \"last-imported-date\";\r\n case \"PerformanceStatusObserve\":\r\n return \"perf-status-observe\";\r\n case \"PerformanceStatusNotOk\":\r\n return \"perf-status-notok\";\r\n case \"LogDataExpression\":\r\n return \"log-data-expression\";\r\n case \"LogDataMathExpression\":\r\n return \"LogDataMathExpression\";\r\n case \"ShapoliPowerReserveBreach\":\r\n return \"ShapoliPowerReserveBreach\";\r\n case \"VoyageComplete\":\r\n return \"VoyageComplete\";\r\n case \"VariableOffline\":\r\n return \"VariableOffline\";\r\n case \"MissingSignal\":\r\n return \"MissingSignal\";\r\n case \"SpeedLossWarning\":\r\n return \"SpeedLossWarning\";\r\n case \"SpeedLossCritical\":\r\n return \"SpeedLossCritical\";\r\n case \"FuelConsumptionWarning\":\r\n return \"FuelConsumptionWarning\";\r\n case \"FuelConsumptionCritical\":\r\n return \"FuelConsumptionCritical\";\r\n default:\r\n return \"\";\r\n }\r\n },\r\n getConditionTimezoneText: function (condition) {\r\n switch (condition.conditionType) {\r\n case \"VesselDataOverdue\":\r\n case \"PerformanceStatusObserve\":\r\n case \"PerformanceStatusNotOk\":\r\n case \"ManualInputValueStale\":\r\n return \"UTC\";\r\n case \"LogDataExpression\":\r\n return \"\";\r\n default:\r\n throw \"Unexpected condition type: \" + condition.conditionType;\r\n }\r\n },\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isDataSetted)?_c('div',{staticClass:\"severity-selector\"},_vm._l((_vm.staticThresholds),function(threshold,i){return _c('div',{key:((threshold.severity) + \"-\" + i),staticClass:\"severity-selector__item\"},[_c('v-checkbox',{attrs:{\"value\":threshold,\"color\":_vm.severityColor(threshold.severity),\"disabled\":_vm.disabled,\"hide-details\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"v-checkbox-label\"},[_c('span',{staticClass:\"mr-2\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\" for at least \")])]},proxy:true}],null,true),model:{value:(_vm.syncThresholds),callback:function ($$v) {_vm.syncThresholds=$$v},expression:\"syncThresholds\"}}),_c('v-text-field',{ref:(\"duration\" + (threshold.severity)),refInFor:true,staticClass:\"duration-input mr-2 ml-2\",attrs:{\"value\":_vm.durationValueFromSeconds(threshold.durationInSeconds),\"type\":\"number\",\"min\":\"1\",\"hide-details\":\"\",\"single-line\":\"\",\"flat\":\"\",\"solo\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"input\":function($event){return _vm.onDurationInput($event, threshold)},\"keypress\":_vm.numericFilter}}),_c('v-select',{staticClass:\"units-select elevation-0\",attrs:{\"value\":_vm.setTimeUnit(threshold),\"items\":_vm.units,\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"change\":function($event){return _vm.onUnitsChanged($event, threshold)}}})],1)}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop, PropSync } from \"vue-property-decorator\";\nimport durationHelper from \"Utilities/duration-helper\";\n// types\nimport { Threshold } from \"@/types/condition\";\n\n@Component({\n components: {},\n})\nexport default class SeveritySelector extends Vue {\n @PropSync(\"thresholds\") syncThresholds!: Threshold[];\n @Prop({ default: false }) disabled!: boolean;\n\n // @Data\n staticThresholds = [\n {\n durationInSeconds: 3600,\n severity: \"Warning\",\n },\n {\n durationInSeconds: 3600,\n severity: \"Critical\",\n },\n ] as Threshold[];\n selectedThresholds = [] as Threshold[];\n unitCritical = \"hours\";\n unitWarning = \"hours\";\n units = [\"minutes\", \"hours\", \"days\"];\n isDataSetted = false;\n\n // @Methods\n severityColor(severity: string): string {\n return severity === \"Critical\" ? \"error\" : \"warning\";\n }\n\n durationUnitFromSeconds(seconds: number): string {\n return durationHelper.getDurationUnitFromSeconds(seconds);\n }\n\n durationValueFromSeconds(seconds: number): string {\n return durationHelper.getDurationValueFromSeconds(seconds);\n }\n\n onDurationInput($value: number, threshold: Threshold): void {\n if (Number($value) === 0) {\n $value = 1;\n (this.$refs[`duration${threshold.severity}`] as any)[0].internalValue = $value;\n }\n const unit = threshold.severity === \"Critical\" ? this.unitCritical : this.unitWarning;\n Vue.set(threshold, \"durationInSeconds\", durationHelper.getSecondsFromDurationValueAndUnit($value, unit));\n const syncThresholdIndex = this.syncThresholds.findIndex(thrl => thrl.severity === threshold.severity);\n if (syncThresholdIndex !== -1) Vue.set(this.syncThresholds[syncThresholdIndex], \"durationInSeconds\", durationHelper.getSecondsFromDurationValueAndUnit($value, unit));\n }\n\n numericFilter(event: any): void {\n event = event ? event : window.event;\n const expect = event.target.value.toString() + event.key.toString();\n return !/^\\d+$/.test(expect) ? event.preventDefault() : false;\n }\n\n onUnitsChanged($unit: string, threshold: Threshold): void {\n const thresholdDurationInputValue = (this.$refs[`duration${threshold.severity}`] as any)[0].$refs.input._value;\n threshold.severity === \"Critical\" ? (this.unitCritical = $unit) : (this.unitWarning = $unit);\n Vue.set(threshold, \"durationInSeconds\", durationHelper.getSecondsFromDurationValueAndUnit(thresholdDurationInputValue, $unit));\n const syncThresholdIndex = this.syncThresholds.findIndex(thrl => thrl.severity === threshold.severity);\n if (syncThresholdIndex !== -1) Vue.set(this.syncThresholds[syncThresholdIndex], \"durationInSeconds\", durationHelper.getSecondsFromDurationValueAndUnit(thresholdDurationInputValue, $unit));\n }\n\n setTimeUnit(threshold: Threshold): string {\n return durationHelper.getDurationUnitFromSeconds(threshold.durationInSeconds);\n }\n\n setInitialData(): void {\n this.staticThresholds = [\n {\n durationInSeconds: this.syncThresholds.find(thr => thr.severity === \"Warning\")?.durationInSeconds ?? 3600,\n severity: \"Warning\",\n notificationConditionId: this.syncThresholds.find(thr => thr.severity === \"Warning\")?.notificationConditionId ?? 0,\n },\n {\n durationInSeconds: this.syncThresholds.find(thr => thr.severity === \"Critical\")?.durationInSeconds ?? 3600,\n severity: \"Critical\",\n notificationConditionId: this.syncThresholds.find(thr => thr.severity === \"Critical\")?.notificationConditionId ?? 0,\n },\n ] as Threshold[];\n this.unitWarning = durationHelper.getDurationUnitFromSeconds(this.staticThresholds[0].durationInSeconds);\n this.unitCritical = durationHelper.getDurationUnitFromSeconds(this.staticThresholds[1].durationInSeconds);\n this.isDataSetted = true;\n }\n\n // @Hoods\n mounted(): void {\n this.setInitialData();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeveritySelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeveritySelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SeveritySelector.vue?vue&type=template&id=b9f40b92&scoped=true&\"\nimport script from \"./SeveritySelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./SeveritySelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SeveritySelector.vue?vue&type=style&index=0&id=b9f40b92&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b9f40b92\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCheckbox,VSelect,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isDataSetted)?_c('div',{staticClass:\"severity-text-field-selector\"},[_c('div',{staticClass:\"severity-text-field-selector__item\"},[_c('v-checkbox',{attrs:{\"value\":_vm.staticThresholds,\"color\":_vm.severityColor(_vm.staticThresholds.severity),\"disabled\":_vm.disabled,\"hide-details\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"v-checkbox-label\"},[_c('span',{staticClass:\"mr-2\",class:_vm.severityColor(_vm.staticThresholds.severity)},[_vm._v(_vm._s(_vm.staticThresholds.severity))]),_vm._v(\" \"+_vm._s(_vm.text)+\" \")])]},proxy:true}],null,false,3615149185),model:{value:(_vm.syncThresholds),callback:function ($$v) {_vm.syncThresholds=$$v},expression:\"syncThresholds\"}}),_c('v-text-field',{staticClass:\"input-value mr-2 ml-2\",style:((\"max-width: \" + _vm.maxWidth)),attrs:{\"type\":\"number\",\"min\":\"1\",\"append-icon\":_vm.inputAppendIcon,\"suffix\":_vm.suffix,\"disabled\":_vm.disabled,\"hide-details\":\"\",\"single-line\":\"\",\"flat\":\"\",\"solo\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"keypress\":_vm.numericFilter},model:{value:(_vm.syncValue),callback:function ($$v) {_vm.syncValue=_vm._n($$v)},expression:\"syncValue\"}})],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop, PropSync } from \"vue-property-decorator\";\n// types\nimport { Threshold } from \"@/types/condition\";\n\n@Component({\n components: {},\n})\nexport default class SeverityTextFieldSelector extends Vue {\n @PropSync(\"thresholds\") syncThresholds!: Threshold[];\n @PropSync(\"value\") syncValue!: number;\n @Prop({ default: false }) disabled!: boolean;\n @Prop({ type: String, default: \"If Speed Loss is Above\" }) readonly text!: string;\n @Prop({ type: String, default: \"Warning\" }) readonly type!: string;\n @Prop({ type: String, default: \"\" }) readonly inputAppendIcon!: string;\n @Prop({ type: String, default: \"\" }) readonly suffix!: string;\n @Prop({ type: String, default: \"100px\" }) readonly maxWidth!: string;\n\n // @Data\n staticThresholds = {\n durationInSeconds: 60,\n severity: this.type,\n } as Threshold;\n selectedThreshold: null | Threshold = null;\n isDataSetted = false;\n\n // @Methods\n severityColor(severity: string): string {\n return severity === \"Critical\" ? \"error\" : \"warning\";\n }\n\n numericFilter(event: any): void {\n event = event ? event : window.event;\n const expect = event.target.value.toString() + event.key.toString();\n return !/^\\d+$/.test(expect) ? event.preventDefault() : false;\n }\n\n setInitialData(): void {\n this.staticThresholds = {\n durationInSeconds: 60,\n severity: this.type,\n notificationConditionId: this.syncThresholds[0]?.notificationConditionId ?? 0,\n } as Threshold;\n this.isDataSetted = true;\n }\n\n // @Hooks\n mounted(): void {\n this.setInitialData();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeverityTextFieldSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeverityTextFieldSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SeverityTextFieldSelector.vue?vue&type=template&id=b54f6966&scoped=true&\"\nimport script from \"./SeverityTextFieldSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./SeverityTextFieldSelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SeverityTextFieldSelector.vue?vue&type=style&index=0&id=b54f6966&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b54f6966\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCheckbox,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-expressions-module\"},[_c('div',{staticClass:\"actions d-flex justify-space-between\"},[_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"font-weight-semibold mb-4\",attrs:{\"small\":\"\",\"color\":\"accent\"},on:{\"click\":function($event){_vm.CustomExpressionsDialog = true}}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Add Expressions Group \")],1)]}}])},[_c('span',[_vm._v(\"Allows to create log data variables comparison expressions\")])])],1),_c('div',_vm._l((_vm.customExpressionItemsList),function(expression,i){return _c('CustomExpressionItem',{key:expression.vesselId,attrs:{\"expression\":_vm.customExpressionItemsList[i],\"is-operator-select-available\":_vm.isOperatorSelectAvailable(expression.vesselId)},on:{\"update:expression\":function($event){return _vm.$set(_vm.customExpressionItemsList, i, $event)},\"expressionChanged\":_vm.onExpressionChanged,\"onTypeChanged\":_vm.onTypeChanged,\"onConditionDeleted\":_vm.onConditionDeleted,\"onComment\":_vm.onExpressionComment}})}),1),_c('CustomExpressionsDialog',{attrs:{\"value\":_vm.CustomExpressionsDialog,\"custom-expression-items-list\":_vm.customExpressionItemsList,\"max-width\":938,\"grouped\":true},on:{\"update:value\":function($event){_vm.CustomExpressionsDialog=$event},\"click:outside\":function($event){_vm.CustomExpressionsDialog = false},\"onTypeChanged\":_vm.onTypeChanged,\"save\":_vm.onSaveCustomExpressions}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-expression-item d-flex align-center\"},[_c('div',{staticClass:\"item d-flex align-center\"},[_c('div',{staticClass:\"vessel-name text-truncate my-3\"},[_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"color\":\"secondary\",\"elevation\":\"0\",\"disabled\":_vm.isCommentDisabled,\"text\":\"\",\"fab\":\"\",\"small\":\"\"},on:{\"click\":_vm.openCommentDialog}},on),[_c('v-icon',[_vm._v(\"mdi-comment-question-outline\")])],1)]}}])},[(_vm.syncExpression.comment && _vm.syncExpression.comment.length)?_c('span',[_vm._v(_vm._s(_vm.syncExpression.comment))]):_c('span',[_vm._v(\"Click to add/edit description for custom expression\")])]),_vm._v(\" \"+_vm._s(_vm.syncExpression.vesselName)+\": \")],1),_c('div',{staticClass:\"expressions-list d-flex flex-wrap align-center flex-wrap\"},[(_vm.syncExpression.expressionType === 'Logical' || _vm.syncExpression.expressionType == null)?_c('div',{staticClass:\"d-flex flex-wrap\"},_vm._l((_vm.syncExpression.expressions),function(item,i){return _c('div',{key:i,staticClass:\"expression d-flex ma-1 px-1 py-1\",on:{\"click\":function($event){return _vm.onEditExpression(item, i)}}},[(item.operator)?_c('div',{staticClass:\"operator d-flex align-center px-3 mr-3\"},[_vm._v(\" \"+_vm._s(item.operator)+\" \")]):_vm._e(),_c('div',{staticClass:\"condition d-flex\"},[_c('div',{staticClass:\"log-variable text-truncate font-weight-semibold\"},[_vm._v(\" \"+_vm._s(_vm.logVariableName(item))+\" \")]),_c('div',{staticClass:\"condition-symbol text-truncate font-weight-semibold mx-3\"},[_vm._v(\" \"+_vm._s(item.symbol)+\" \")]),_c('div',{staticClass:\"amount text-truncate font-weight-semibold mr-1\"},[_vm._v(\" \"+_vm._s(item.amount)+\" \")]),_c('div',{staticClass:\"unit text-truncate font-weight-semibold\"},[_vm._v(\" \"+_vm._s(_vm.logVariableUnitName(item))+\" \")]),_c('span',{staticClass:\"c-tooltip\"},[_vm._v(\"Edit condition\")]),_c('v-icon',{staticClass:\"ml-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"mdi-pencil\")])],1),_c('div',{staticClass:\"delete\",on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteCondition(i)}}},[_c('v-icon',{staticClass:\"delete-condition ml-2\",attrs:{\"color\":\"error\"}},[_vm._v(\"mdi-close-circle \")]),_c('span',{staticClass:\"c-tooltip\"},[_vm._v(\"Delete\")])],1)])}),0):_c('div',{staticClass:\"expression d-flex ma-1 px-1 py-1\",on:{\"click\":function($event){return _vm.onEditExpression(_vm.syncExpression.expressions[0], 0)}}},[(_vm.syncExpression.expressions.length)?_c('div',{staticClass:\"condition d-flex\"},[_c('div',{staticClass:\"font-weight-semibold\"},[_vm._v(_vm._s(_vm.syncExpression.expressions[0].mathContent))])]):_vm._e()]),(_vm.syncExpression.expressionType === 'Logical' || _vm.syncExpression.expressionType == null || (_vm.syncExpression.expressionType === 'Mathematical' && _vm.syncExpression.expressions.length === 0))?_c('v-btn',{staticClass:\"ml-2 my-3 add-expression font-weight-semibold\",attrs:{\"color\":\"neutralDark50\",\"elevation\":\"0\",\"dark\":\"\",\"small\":\"\"},on:{\"click\":_vm.onAddExpression}},[_c('v-icon',{attrs:{\"color\":\"primary lighten-2\"}},[_vm._v(\"mdi-plus\")]),_c('span',{staticClass:\"c-tooltip\"},[_vm._v(\"Add expression\")])],1):_vm._e()],1)]),(_vm.extendedVesselById)?_c('CustomExpressionsDialog',{attrs:{\"value\":_vm.CustomExpressionsDialog,\"custom-expression-items-list\":[_vm.CustomExpressionItem],\"edit-item-index\":_vm.editedExpressionIndex,\"operator-select-available\":_vm.isOperatorSelectAvailable,\"max-width\":938},on:{\"update:value\":function($event){_vm.CustomExpressionsDialog=$event},\"click:outside\":function($event){_vm.CustomExpressionsDialog = false},\"save\":_vm.onSaveCustomExpressions,\"onTypeChanged\":_vm.onTypeChanged}}):_vm._e(),_c('v-dialog',{attrs:{\"max-width\":400,\"retain-focus\":false},on:{\"click:outside\":_vm.closeCommentDialog},model:{value:(_vm.CommentDialog),callback:function ($$v) {_vm.CommentDialog=$$v},expression:\"CommentDialog\"}},[_c('v-card',[_c('v-toolbar',{staticClass:\"font-weight-medium\",attrs:{\"dark\":\"\",\"dense\":\"\",\"color\":\"accentDarker110\"}},[_c('v-toolbar-title',[_vm._v(\"Add custom expression description\")])],1),_c('v-card-text',[_c('v-textarea',{staticClass:\"mt-2\",attrs:{\"label\":\"Description\",\"auto-grow\":\"\",\"variant\":\"outlined\",\"rows\":\"3\",\"row-height\":\"25\"},model:{value:(_vm.comment),callback:function ($$v) {_vm.comment=$$v},expression:\"comment\"}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"disabled\":false},on:{\"click\":_vm.saveComment}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.closeCommentDialog}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":_vm.dialogWidth,\"content-class\":\"CreateExpressionsDialog\",\"retain-focus\":false,\"scrollable\":\"\"},on:{\"click:outside\":function($event){return _vm.close()}},model:{value:(_vm.isModalActive),callback:function ($$v) {_vm.isModalActive=$$v},expression:\"isModalActive\"}},[_c('v-card',[_c('v-toolbar',{staticClass:\"font-weight-medium\",attrs:{\"dark\":\"\",\"dense\":\"\",\"height\":\"60\",\"color\":\"accentDarker110\"}},[_c('v-toolbar-title',{staticClass:\"d-flex align-center\"},[_c('span',[_vm._v(\"Create custom expressions\")]),_c('v-select',{staticClass:\"expression-type-select elevation-0 mx-2 ml-4 px-0 py-2\",staticStyle:{\"max-width\":\"160px\"},attrs:{\"items\":_vm.expressionTypes,\"item-text\":\"text\",\"item-value\":\"type\",\"label\":\"Expression Type\",\"disabled\":_vm.isExpressionTypeSelectDisabled(),\"return-object\":\"\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"change\":_vm.onExpressionTypeChanged},model:{value:(_vm.currentExpressionType),callback:function ($$v) {_vm.currentExpressionType=$$v},expression:\"currentExpressionType\"}})],1)],1),_c('v-card-text',[_c('div',{staticClass:\"expressions mt-4\"},_vm._l((_vm.expressionsList),function(expression,i){return _c('div',{key:expression.vesselId,staticClass:\"expression-item mb-4\"},[_c(_vm.currentExpressionType.type,{tag:\"component\",attrs:{\"vessel-id\":expression.vesselId,\"expression\":_vm.expressionsList[i],\"is-operator-select-available\":_vm.isOperatorSelectAvailable(expression.vesselId),\"is-copy-condition-available\":_vm.isCopyConditionAvailable(i),\"is-logic-expression-applied\":_vm.isLogicExpressionApplied(expression.vesselId)},on:{\"update:expression\":function($event){return _vm.$set(_vm.expressionsList, i, $event)},\"onExpressionChanged\":_vm.onExpressionChanged,\"onMathExpressionChanged\":_vm.onMathExpressionChanged,\"onCopyConditionEvent\":function($event){return _vm.onCopyCondition()}}})],1)}),0)]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.save}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" Cancel \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"custom-expression-select\"},[_c('div',{staticClass:\"item d-flex align-center\"},[_c('div',{staticClass:\"vessel-name text-truncate mr-2\"},[_vm._v(\" \"+_vm._s(_vm.vessel ? _vm.vessel.name: \"N/A\")+\": \")]),_c('v-select',{staticClass:\"operator-select elevation-0 mx-2\",attrs:{\"items\":_vm.operators,\"disabled\":_vm.isOperatorDisabled,\"label\":\"Operator\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.syncExpression.operator),callback:function ($$v) {_vm.$set(_vm.syncExpression, \"operator\", $$v)},expression:\"syncExpression.operator\"}}),_c('v-text-field',{staticClass:\"selected-log-variable-input mx-2\",attrs:{\"value\":_vm.selectedLogVariableName,\"label\":\"Choose log variable\",\"hide-details\":\"auto\",\"clear-icon\":\"mdi-close-circle\",\"disabled\":!_vm.isVesselLogVariablesLoaded || _vm.isInputDisabled,\"persistent-placeholder\":\"\",\"flat\":\"\",\"outlined\":\"\",\"readonly\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.onLogVariableInputClick()},\"click:clear\":function($event){return _vm.onLogVariableInputClear()}},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-fade-transition',{attrs:{\"leave-absolute\":\"\"}},[(!_vm.isVesselLogVariablesLoaded)?_c('v-progress-circular',{attrs:{\"size\":20,\"width\":2,\"color\":\"primary\",\"indeterminate\":\"\"}}):_vm._e()],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedLogVariableUnitName),expression:\"selectedLogVariableUnitName\"}],staticClass:\"unit unit_input-suffix font-weight-medium\"},[_c('span',[_vm._v(_vm._s(_vm.selectedLogVariableUnitName))])])]},proxy:true}])}),_c('v-select',{staticClass:\"conditions-select elevation-0 mx-2\",attrs:{\"items\":_vm.conditionsList,\"item-text\":\"symbol\",\"item-value\":\"symbol\",\"label\":\"Symbol\",\"disabled\":_vm.isInputDisabled,\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"change\":_vm.onConditionChanged},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_c('b',{staticClass:\"mr-2\",staticStyle:{\"font-size\":\"15px\"}},[_vm._v(_vm._s(data.item.symbol))])]}},{key:\"item\",fn:function(data){return [_c('b',{staticClass:\"mr-2\",staticStyle:{\"font-size\":\"15px\"}},[_vm._v(_vm._s(data.item.symbol))])]}}]),model:{value:(_vm.syncExpression.symbol),callback:function ($$v) {_vm.$set(_vm.syncExpression, \"symbol\", $$v)},expression:\"syncExpression.symbol\"}}),_c('v-text-field',{ref:\"expressionAmount\",staticClass:\"amount-input mx-2\",attrs:{\"type\":\"number\",\"label\":\"Value\",\"disabled\":_vm.isInputDisabled,\"hide-details\":\"\",\"persistent-placeholder\":\"\",\"flat\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"input\":_vm.onAmountChanged,\"keypress\":_vm.numericFilter},model:{value:(_vm.syncExpression.amount),callback:function ($$v) {_vm.$set(_vm.syncExpression, \"amount\", _vm._n($$v))},expression:\"syncExpression.amount\"}}),(_vm.isCopyConditionAvailable)?_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"color\":\"white\",\"elevation\":\"0\",\"disabled\":!_vm.isCopyConditionActive,\"medium\":\"\"},on:{\"click\":_vm.onCopyCondition}},on),[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"mdi-content-copy\")])],1)]}}],null,false,1011424459)},[_c('span',[_vm._v(\"Copy this condition for other vessels\")])]):_vm._e(),(_vm.hasMathExpression)?_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"ml-7\",attrs:{\"color\":\"warning\"}},on),[_vm._v(\" mdi-alert-circle \")])]}}],null,false,438761336)},[_c('span',[_vm._v(\"Mathematical expression has already been applied for current vessel\")])]):_vm._e()],1),_c('LogVariablesDialog',{attrs:{\"value\":_vm.LogVariablesDialog,\"column\":_vm.logVariablesColumn,\"selectedVessel\":_vm.vessel,\"max-width\":580,\"validate-log-variables-by-unit\":false,\"display-taxonomy-tree\":false},on:{\"update:value\":function($event){_vm.LogVariablesDialog=$event},\"update:column\":function($event){_vm.logVariablesColumn=$event}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Prop, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { CustomExpressionData } from \"@/types/CustomExpressionData\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { LogVariable } from \"@/types/logVariable\";\n\n// components\nimport LogVariablesDialog from \"@/components/widgets/LogVariablesDialog.vue\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst LogVariables = getModule(LogVariablesModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {\n LogVariablesDialog,\n },\n})\nexport default class CustomExpressionSelect extends Vue {\n @PropSync(\"expression\", { required: true }) syncExpression!: CustomExpressionData;\n @Prop({ required: true }) vesselId!: number;\n @Prop({ default: false }) disabled!: boolean;\n @Prop({ default: false }) isOperatorSelectAvailable!: boolean;\n @Prop({ default: false }) isCopyConditionAvailable!: boolean;\n\n // @Data\n operators = [\"AND\", \"OR\"];\n LogVariablesDialog = false;\n amount = 0;\n conditionsList: { text: string; symbol: string }[] = [\n {\n text: \"Greater than\",\n symbol: \">\",\n },\n {\n text: \"Less than\",\n symbol: \"<\",\n },\n {\n text: \"Greater than OR equal to\",\n symbol: \">=\",\n },\n {\n text: \"Less than OR equal to\",\n symbol: \"<=\",\n },\n {\n text: \"Equal to\",\n symbol: \"=\",\n },\n ];\n logVariablesColumn: any = {\n logVariables: [] as LogVariable[],\n };\n\n // @Watchers\n @Watch(\"syncExpression\", { deep: true })\n onSyncExpressionChanged(): void {\n if (this.syncExpression.logVariable === null) this.onLogVariableInputClear();\n if (this.syncExpression.logVariable) this.logVariablesColumn.logVariables = [this.syncExpression.logVariable];\n }\n\n @Watch(\"logVariablesColumn\", { deep: true })\n onLogVariableChanged(): void {\n Vue.set(this.syncExpression, \"logVariable\", this.logVariablesColumn.logVariables[0]);\n\n this.$emit(\"onExpressionChanged\", this.syncExpression);\n }\n\n // @Getters\n get isVesselLogVariablesLoaded(): boolean {\n return Boolean(this.vesselLogVariables);\n }\n\n get vesselLogVariables(): LogVariable[] | undefined {\n return LogVariables.logVariableByVesselId(this.vesselId);\n }\n\n get selectedLogVariable(): LogVariable {\n return this.logVariablesColumn.logVariables[0] ?? ({} as LogVariable);\n }\n\n get selectedLogVariableName(): string {\n return this.selectedLogVariable?.displayName ?? this.selectedLogVariable?.name;\n }\n\n get selectedLogVariableUnitName(): string {\n return this.selectedLogVariable?.unit?.name;\n }\n\n get vessel(): ExtendedVessel | undefined {\n return Vessels.getExtendedVesselById(this.vesselId);\n }\n\n get isCopyConditionActive(): boolean {\n if (this.isOperatorSelectAvailable) {\n return Boolean(this.isCopyConditionAvailable && this.syncExpression.logVariable && this.syncExpression.symbol.length !== 0 && this.syncExpression.operator !== null);\n } else {\n return Boolean(this.isCopyConditionAvailable && this.syncExpression.logVariable && this.syncExpression.symbol.length !== 0);\n }\n }\n\n get isInputDisabled(): boolean {\n return this.disabled || this.hasMathExpression;\n }\n\n get hasMathExpression(): boolean {\n return Boolean(this.syncExpression.mathContent && this.syncExpression?.mathContent.length > 0);\n }\n\n get isOperatorDisabled(): boolean {\n return !this.isOperatorSelectAvailable || this.hasMathExpression;\n }\n\n content(mode: string | undefined = undefined): string | object {\n var expressionStructure = {\n type: \"BinaryExpression\",\n token: this.syncExpression.symbol,\n left: {\n type: \"Identifier\",\n token: this.syncExpression.logVariable?.id,\n left: null,\n right: null,\n },\n right: {\n type: \"Literal\",\n token: this.syncExpression.amount,\n left: null,\n right: null,\n },\n };\n return mode === \"stringify\" ? JSON.stringify(expressionStructure) : expressionStructure;\n }\n // @Methods\n\n onLogVariableInputClick(): void {\n this.LogVariablesDialog = true;\n }\n\n numericFilter(event: any): void {\n event = event ? event : window.event;\n const expect = event.target.value.toString() + event.key.toString();\n return !/^\\d+$/.test(expect) ? event.preventDefault() : false;\n }\n\n onLogVariableInputClear(): void {\n this.logVariablesColumn.logVariables = [] as LogVariable[];\n }\n\n onConditionChanged($value: any): void {\n Vue.set(this.syncExpression, \"content\", this.content(\"stringify\"));\n Vue.set(this.syncExpression, \"expressionStructure\", this.content());\n this.$emit(\"onExpressionChanged\", this.syncExpression);\n }\n\n onCopyCondition(): void {\n this.$emit(\"onCopyConditionEvent\");\n }\n\n onAmountChanged($value: any): void {\n if ($value === \"\") {\n $value = 0;\n (this.$refs.expressionAmount as any).internalValue = $value;\n }\n Vue.set(this.syncExpression, \"content\", this.content(\"stringify\"));\n Vue.set(this.syncExpression, \"expressionStructure\", this.content());\n this.$emit(\"onExpressionChanged\", this.syncExpression);\n }\n\n async fetchVesselLogVariables(): Promise {\n if (!this.isVesselLogVariablesLoaded) await LogVariables.fetchAllLogVariablesByVesselId(this.vesselId);\n }\n\n async created(): Promise {\n await this.fetchVesselLogVariables();\n if (this.syncExpression.logVariable) this.logVariablesColumn.logVariables.push(this.syncExpression.logVariable);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomExpressionSelect.vue?vue&type=template&id=1d1539d4&scoped=true&\"\nimport script from \"./CustomExpressionSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomExpressionSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CustomExpressionSelect.vue?vue&type=style&index=0&id=1d1539d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d1539d4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VFadeTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VFadeTransition,VIcon,VProgressCircular,VSelect,VTextField,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mathematical-expression-select\"},[_c('div',{staticClass:\"mathematical-expression-result\"},[_c('div',{staticClass:\"vessel-name text-truncate mr-2\"},[_vm._v(\" \"+_vm._s(_vm.vessel ? _vm.vessel.name: \"N/A\")+\": \")]),_c('v-text-field',{staticClass:\"mathematical-expression-result-input mx-2\",attrs:{\"clear-icon\":\"mdi-close-box-outline\",\"placeholder\":\"Mathematical expression result\",\"hide-details\":\"\",\"flat\":\"\",\"solo\":\"\",\"dense\":\"\",\"outlined\":\"\",\"clearable\":\"\",\"readonly\":\"\"},on:{\"click:clear\":_vm.onClearMathResult},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [(_vm.isLogicExpressionApplied)?_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":\"warning\"}},on),[_vm._v(\" mdi-alert-circle \")])]}}],null,false,1076191651)},[_c('span',[_vm._v(\"Logical expression has already been applied for current vessel\")])]):_vm._e()]},proxy:true}]),model:{value:(_vm.syncExpression.mathContent),callback:function ($$v) {_vm.$set(_vm.syncExpression, \"mathContent\", $$v)},expression:\"syncExpression.mathContent\"}})],1),_c('div',{staticClass:\"item d-flex align-center\"},[_c('v-form',{ref:\"MathematicalExpressionSelect\",staticClass:\"d-flex\"},[_c('v-select',{staticClass:\"operator-select elevation-0 mx-2\",attrs:{\"items\":_vm.operators,\"label\":\"Operator\",\"disabled\":_vm.isLogicExpressionApplied,\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"change\":function($event){return _vm.onOperatorAdd()}},model:{value:(_vm.operator),callback:function ($$v) {_vm.operator=$$v},expression:\"operator\"}}),_c('v-text-field',{staticClass:\"selected-log-variable-input mx-2\",attrs:{\"label\":\"Choose log variable\",\"hide-details\":\"auto\",\"disabled\":!_vm.isVesselLogVariablesLoaded || _vm.isLogicExpressionApplied,\"persistent-placeholder\":\"\",\"flat\":\"\",\"outlined\":\"\",\"readonly\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.onLogVariableInputClick()},\"change\":_vm.onLogVariableAdd}}),_c('v-select',{staticClass:\"conditions-select elevation-0 mx-2\",attrs:{\"items\":_vm.conditionsList,\"item-text\":\"symbol\",\"item-value\":\"symbol\",\"label\":\"Symbol\",\"disabled\":_vm.isLogicExpressionApplied,\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"change\":_vm.onSymbolAdd},model:{value:(_vm.symbol),callback:function ($$v) {_vm.symbol=$$v},expression:\"symbol\"}}),_c('v-text-field',{ref:\"expressionAmount\",staticClass:\"amount-input mx-2\",attrs:{\"type\":\"number\",\"label\":\"Value\",\"disabled\":_vm.isLogicExpressionApplied,\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"keypress\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onAmountAdd.apply(null, arguments)},_vm.numericFilter],\"input\":_vm.onAmountInput},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"pb-1\",attrs:{\"icon\":\"\",\"color\":\"accent\",\"small\":\"\"},on:{\"click\":_vm.onAmountAdd}},on),[_c('v-icon',[_vm._v(\"mdi-plus-box\")])],1)]}}])},[_c('span',[_vm._v(\"Click to add value to the mathematical expression or press \\\"Enter\\\"\")])])]},proxy:true}]),model:{value:(_vm.amount),callback:function ($$v) {_vm.amount=$$v},expression:\"amount\"}})],1),_c('v-tooltip',{attrs:{\"max-width\":\"400px\",\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":\"warning\"}},on),[_vm._v(\" mdi-information \")])]}}])},[_c('span',[_vm._v(\"Mathematical expression allows users to create flexible notifications with specific scenarios. With this type of expression, there is a high possibility of adding incorrect expressions so using this type of expression is at the user's risk. Don't use log variables with different units, unlogical, and nonsense expressions otherwise, the notification will not be triggered\")])])],1),_c('LogVariablesDialog',{attrs:{\"value\":_vm.LogVariablesDialog,\"column\":_vm.logVariablesColumn,\"selectedVessel\":_vm.vessel,\"max-width\":580,\"validate-log-variables-by-unit\":false,\"display-taxonomy-tree\":false},on:{\"update:value\":function($event){_vm.LogVariablesDialog=$event},\"update:column\":function($event){_vm.logVariablesColumn=$event}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Prop, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { CustomExpressionData } from \"@/types/CustomExpressionData\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { LogVariable } from \"@/types/logVariable\";\n\n// components\nimport LogVariablesDialog from \"@/components/widgets/LogVariablesDialog.vue\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst LogVariables = getModule(LogVariablesModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {\n LogVariablesDialog,\n },\n})\nexport default class MathematicalExpressionSelect extends Vue {\n @PropSync(\"expression\", { required: true }) syncExpression!: CustomExpressionData;\n @Prop({ required: true }) vesselId!: number;\n @Prop({ default: false }) isLogicExpressionApplied!: boolean;\n\n // @Data\n operators = [\"AND\", \"OR\", \"(\", \")\", \"+\", \"-\", \"/\", \"*\"];\n LogVariablesDialog = false;\n operator: string | null = null;\n symbol: string | null = null;\n amount: number = 0;\n conditionsList: { text: string; symbol: string }[] = [\n {\n text: \"Greater than\",\n symbol: \">\",\n },\n {\n text: \"Less than\",\n symbol: \"<\",\n },\n {\n text: \"Greater than OR equal to\",\n symbol: \">=\",\n },\n {\n text: \"Less than OR equal to\",\n symbol: \"<=\",\n },\n {\n text: \"Equal to\",\n symbol: \"=\",\n },\n ];\n logVariablesColumn: any = {\n logVariables: [] as LogVariable[],\n };\n\n // @Watchers\n @Watch(\"logVariablesColumn\", { deep: true })\n onLogVariablesColumnChanged(): void {\n this.onLogVariableAdd();\n this.$emit(\"onMathExpressionChanged\");\n }\n\n // @Getters\n get isVesselLogVariablesLoaded(): boolean {\n return Boolean(this.vesselLogVariables);\n }\n\n get vesselLogVariables(): LogVariable[] | undefined {\n return LogVariables.logVariableByVesselId(this.vesselId);\n }\n\n get selectedLogVariable(): LogVariable {\n return this.logVariablesColumn.logVariables[0] ?? ({} as LogVariable);\n }\n\n get selectedLogVariableName(): string {\n return this.selectedLogVariable?.displayName ?? this.selectedLogVariable?.name;\n }\n\n get selectedLogVariableID(): number {\n return this.selectedLogVariable.id;\n }\n\n get selectedLogVariableUnitName(): string {\n return this.selectedLogVariable?.unit?.name;\n }\n\n get vessel(): ExtendedVessel | undefined {\n return Vessels.getExtendedVesselById(this.vesselId);\n }\n\n // @Methods\n onOperatorAdd(): void {\n if (this.operator != null) {\n this.syncExpression.content += ` ${this.operator}`;\n this.syncExpression.mathContent += ` ${this.operator}`;\n }\n (this.$refs.MathematicalExpressionSelect as any).reset();\n (this.$refs.expressionAmount as any).internalValue = 0;\n }\n\n onLogVariableAdd(): void {\n this.syncExpression.content += ` {${this.selectedLogVariableID}}`;\n this.syncExpression.mathContent += ` ${this.selectedLogVariableName}`;\n (this.$refs.expressionAmount as any).internalValue = 0;\n }\n\n onSymbolAdd(): void {\n if (this.symbol != null) {\n this.syncExpression.content += ` ${this.symbol}`;\n this.syncExpression.mathContent += ` ${this.symbol}`;\n }\n (this.$refs.MathematicalExpressionSelect as any).reset();\n (this.$refs.expressionAmount as any).internalValue = 0;\n }\n\n onAmountAdd(): void {\n if (this.amount != null) {\n this.syncExpression.content += ` ${this.amount}`;\n this.syncExpression.mathContent += ` ${this.amount}`;\n }\n (this.$refs.MathematicalExpressionSelect as any).reset();\n (this.$refs.expressionAmount as any).internalValue = 0;\n }\n\n onAmountInput($value: any): void {\n if ($value === \"\") {\n $value = 0;\n (this.$refs.expressionAmount as any).internalValue = $value;\n }\n }\n\n onLogVariableInputClick(): void {\n this.LogVariablesDialog = true;\n }\n\n onLogVariableInputClear(): void {\n this.logVariablesColumn.logVariables = [] as LogVariable[];\n }\n\n numericFilter(event: any): void {\n event = event ? event : window.event;\n const expect = event.target.value.toString() + event.key.toString();\n return !/^\\d+$/.test(expect) ? event.preventDefault() : false;\n }\n\n onClearMathResult(): void {\n this.syncExpression.content = \"\";\n this.syncExpression.amount = 0;\n this.syncExpression.logVariable = null;\n this.syncExpression.operator = null;\n this.syncExpression.symbol = \"\";\n setTimeout(() => {\n this.syncExpression.mathContent = \"\";\n }, 100);\n }\n\n async fetchVesselLogVariables(): Promise {\n if (!this.isVesselLogVariablesLoaded) await LogVariables.fetchAllLogVariablesByVesselId(this.vesselId);\n }\n\n async created(): Promise {\n await this.fetchVesselLogVariables();\n if (this.syncExpression.content == null || this.syncExpression.mathContent == null) {\n this.syncExpression.content = \"\";\n this.syncExpression.mathContent = \"\";\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MathematicalExpressionSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MathematicalExpressionSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MathematicalExpressionSelect.vue?vue&type=template&id=4ae7fe5a&scoped=true&\"\nimport script from \"./MathematicalExpressionSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./MathematicalExpressionSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MathematicalExpressionSelect.vue?vue&type=style&index=0&id=4ae7fe5a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ae7fe5a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VForm,VIcon,VSelect,VTextField,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Vue, Component, Prop, PropSync, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { ICustomExpressionItem, CustomExpressionData } from \"@/types/CustomExpressionData\";\nimport { LogVariable } from \"@/types/logVariable\";\n// components\nimport CustomExpressionSelect from \"@/components/Notifications/CustomExpressionSelect.vue\";\nimport MathematicalExpressionSelect from \"@/components/Notifications/MathematicalExpressionSelect.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst LogVariables = getModule(LogVariablesModule, store);\n\n@Component({\n components: {\n CustomExpressionSelect,\n MathematicalExpressionSelect,\n },\n})\nexport default class CustomExpressionsDialog extends Vue {\n @PropSync(\"value\", { required: true }) isModalActive!: boolean;\n @PropSync(\"maxWidth\", { default: 1000 }) dialogWidth!: number;\n @Prop({ required: true, default: () => [] }) customExpressionItemsList!: ICustomExpressionItem[];\n @Prop() disabledItems!: number[];\n @Prop({ default: false }) grouped!: boolean;\n @Prop({ default: null }) editItemIndex!: number | null;\n @Prop({ default: false }) operatorSelectAvailable!: boolean;\n\n // @Watchers\n @Watch(\"isModalActive\")\n onOpenModal(): void {\n if (this.isModalActive) {\n if (this.grouped) {\n this.expressionsList = JSON.parse(JSON.stringify(this.EmptyExpressionsList)) as CustomExpressionData[];\n } else {\n if (this.customExpressionItemsList.length) {\n this.expressionsList = JSON.parse(JSON.stringify(this.customExpressionItemsList[0].expressions)) as CustomExpressionData[];\n }\n this.currentExpressionType = this.expressionsList[0].expressionType === \"Logical\" ? this.expressionTypes[0] : this.expressionTypes[1];\n }\n }\n }\n\n @Watch(\"customExpressionItemsList\", { deep: true })\n onCustomExpressionItemsListChanged(): void {\n if (this.grouped) return;\n if (this.customExpressionItemsList.length) {\n this.expressionsList = JSON.parse(JSON.stringify(this.customExpressionItemsList[0].expressions)) as CustomExpressionData[];\n }\n }\n\n @Watch(\"currentExpressionType\", { deep: true })\n onCurrentExpressionTypeChanged(): void {\n if (this.grouped) {\n this.expressionsList = JSON.parse(JSON.stringify(this.EmptyExpressionsList)) as CustomExpressionData[];\n } else {\n if (this.customExpressionItemsList.length) {\n this.expressionsList = JSON.parse(JSON.stringify(this.customExpressionItemsList[0].expressions)) as CustomExpressionData[];\n }\n }\n }\n\n // @Data\n expressionsList: CustomExpressionData[] = [];\n expressionTypes = [\n { type: \"CustomExpressionSelect\", text: \"Logical\" },\n { type: \"MathematicalExpressionSelect\", text: \"Mathematical\" },\n ];\n currentExpressionType = { type: \"CustomExpressionSelect\", text: \"Logical\" };\n\n // @Getters\n get EmptyExpressionsList(): object[] {\n return this.customExpressionItemsList.map(item => {\n return {\n vesselName: item.vesselName,\n vesselId: item.vesselId,\n logVariable: null,\n amount: 0,\n symbol: \"\",\n operator: null,\n content: item.expressionType === \"Mathematical\" ? item.expressions[0]?.content : null,\n mathContent: item.expressionType === \"Mathematical\" ? item.expressions[0]?.mathContent : \"\",\n expressionType: this.expressionType,\n };\n });\n }\n\n isExpressionTypeSelectDisabled(): boolean {\n if (!this.grouped) {\n if (this.customExpressionItemsList[0].expressionType === \"Mathematical\") {\n return Boolean(\n this.customExpressionItemsList[0].expressions && this.customExpressionItemsList[0]?.expressions[0]?.mathContent && this.customExpressionItemsList[0]?.expressions[0]?.mathContent.length > 0\n );\n } else if (this.isOperatorSelectAvailable(this.customExpressionItemsList[0].vesselId)) {\n return true;\n } else {\n return Boolean(\n this.customExpressionItemsList[0].expressions &&\n this.customExpressionItemsList[0]?.expressions[0]?.logVariable != null &&\n this.customExpressionItemsList[0]?.expressions[0]?.content &&\n this.customExpressionItemsList[0]?.expressions[0]?.content.length > 0\n );\n }\n } else return false;\n }\n\n expressionSelectType(expressionType: string | undefined): string {\n if (this.grouped) return this.currentExpressionType.type;\n return expressionType === \"Logical\" ? \"CustomExpressionSelect\" : \"MathematicalExpressionSelect\";\n }\n\n isLogicExpressionApplied(vesselId: number | undefined): boolean {\n const expressionItem = this.customExpressionItemsList.find(item => item.vesselId === vesselId);\n return Boolean(expressionItem && expressionItem.expressions.length > 0 && expressionItem.expressions[0].expressionType === \"Logical\" && expressionItem.expressions[0].content != null);\n }\n\n get expressionType(): string {\n return this.currentExpressionType.text;\n }\n\n get isSaveDisabled(): boolean {\n // Logical expression type\n if (this.currentExpressionType.type === \"CustomExpressionSelect\") {\n if (this.grouped) {\n if (this.customExpressionItemsList.some(item => item.expressions.length === 0 && item.expressionType === \"Logical\")) {\n return this.expressionsList.some(expr => {\n const initialExpressionItem = this.customExpressionItemsList.find(expression => expression.vesselId === expr.vesselId);\n return (\n (initialExpressionItem && initialExpressionItem.expressionType === \"Logical\" && expr.logVariable === null) ||\n (initialExpressionItem && initialExpressionItem.expressionType === \"Logical\" && expr.symbol.length === 0)\n );\n });\n }\n if (this.customExpressionItemsList.some(item => item.expressions.length >= 1)) {\n return this.expressionsList.some(expr => {\n const initialExpressionItem = this.customExpressionItemsList.find(expression => expression.vesselId === expr.vesselId);\n return (\n (initialExpressionItem && initialExpressionItem.expressionType === \"Logical\" && expr.logVariable === null) ||\n (initialExpressionItem && initialExpressionItem.expressionType === \"Logical\" && expr.symbol.length === 0) ||\n (initialExpressionItem && initialExpressionItem.expressionType === \"Logical\" && expr.operator === null)\n );\n });\n }\n }\n if (this.operatorSelectAvailable) {\n return (\n (this.editItemIndex != null && this.editItemIndex > 0 && this.expressionsList[0]?.operator === null) ||\n this.expressionsList[0]?.logVariable === null ||\n this.expressionsList[0]?.symbol.length === 0\n );\n } else {\n return this.expressionsList[0]?.logVariable === null || this.expressionsList[0]?.symbol.length === 0;\n }\n // Mathematical expression type\n } else {\n if (this.grouped) return this.expressionsList.some(expr => expr.mathContent == null || expr.mathContent.length === 0);\n return this.expressionsList[0].mathContent == null || this.expressionsList[0].mathContent.length === 0;\n }\n }\n\n // @Methods\n open(): void {\n this.isModalActive = true;\n this.$emit(\"open\");\n }\n\n close(): void {\n this.isModalActive = false;\n this.$emit(\"close\");\n this.expressionsList = JSON.parse(JSON.stringify(this.EmptyExpressionsList)) as CustomExpressionData[];\n }\n\n save(): void {\n this.isModalActive = false;\n this.expressionsList = this.expressionType === \"Logical\" ? this.expressionsList.filter(exp => exp.logVariable && exp.symbol) : this.expressionsList.filter(exp => exp.content !== null);\n this.$emit(\"save\", this.expressionsList);\n this.expressionsList = JSON.parse(JSON.stringify(this.EmptyExpressionsList)) as CustomExpressionData[];\n }\n\n onExpressionChanged(expression: CustomExpressionData, index: number): void {}\n\n onMathExpressionChanged(): void {\n this.expressionsList = JSON.parse(JSON.stringify(this.expressionsList)) as CustomExpressionData[];\n }\n\n onExpressionTypeChanged(): void {\n this.$emit(\"onTypeChanged\", this.expressionType);\n }\n\n onCopyCondition(): void {\n this.expressionsList.forEach((exp, i) => {\n if (i === 0) return;\n const initialExpressionItem = this.customExpressionItemsList.find(expression => expression.vesselId === exp.vesselId);\n if (initialExpressionItem?.expressionType === \"Mathematical\" && initialExpressionItem.expressions.length) return;\n exp.amount = this.expressionsList[0].amount;\n exp.content = this.expressionsList[0].content;\n exp.logVariable = this.logVariableByNameAndVesselId(exp.vesselId ?? 0, this.expressionsList[0].logVariable?.displayName ?? \"\");\n exp.expressionStructure = JSON.parse(JSON.stringify(this.expressionsList[0].expressionStructure));\n exp.operator = this.expressionsList[0].operator;\n exp.symbol = this.expressionsList[0].symbol;\n });\n }\n\n isExpressionSelectDisabled(vesselId: number): boolean {\n if (!this.disabledItems || !this.disabledItems.length) return false;\n return this.disabledItems.includes(vesselId);\n }\n\n isOperatorSelectAvailable(vesselId: number | undefined): boolean {\n if (this.grouped) {\n if (!vesselId) return true;\n const expressionItem = this.customExpressionItemsList.find(item => item.vesselId === vesselId);\n return Boolean(expressionItem && expressionItem.expressions.length > 0);\n } else {\n return this.editItemIndex !== 0;\n }\n }\n\n isCopyConditionAvailable(index: number): boolean {\n return this.grouped && this.expressionsList.length > 1 && index === 0 ? true : false;\n }\n\n logVariableByNameAndVesselId(vesselId: number, name: string): LogVariable | null {\n return LogVariables.logVariableByNameAndVesselId(vesselId, name) ?? null;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomExpressionsDialog.vue?vue&type=template&id=ec3d7c40&scoped=true&\"\nimport script from \"./CustomExpressionsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomExpressionsDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CustomExpressionsDialog.vue?vue&type=style&index=0&id=ec3d7c40&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ec3d7c40\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VDialog,VSelect,VSpacer,VToolbar,VToolbarTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop, PropSync } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { CustomExpressionData, ICustomExpressionItem } from \"@/types/CustomExpressionData\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// components\nimport CustomExpressionsDialog from \"@/components/Notifications/CustomExpressionsDialog.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {\n CustomExpressionsDialog,\n },\n})\nexport default class CustomExpressionItem extends Vue {\n @PropSync(\"expression\", { required: true }) syncExpression!: ICustomExpressionItem;\n @Prop({ default: false }) isOperatorSelectAvailable!: boolean;\n\n // @Data\n CustomExpressionsDialog = false;\n CommentDialog = false;\n CustomExpressionItem!: ICustomExpressionItem;\n editedExpressionIndex: number | null = null;\n comment: string | null = null;\n\n // @Getters\n get isExpressionValid(): boolean {\n return this.syncExpression.expressions.every(exp => exp.logVariable != null);\n }\n\n get extendedVesselById(): ExtendedVessel | undefined {\n if (!this.syncExpression) return;\n return Vessels.getExtendedVesselById(this.syncExpression.vesselId);\n }\n\n get operatorRequired(): boolean {\n return Boolean(this.syncExpression.expressions.length);\n }\n\n get isCommentDisabled(): boolean {\n return this.syncExpression.expressions.length === 0;\n }\n\n // @Methods\n onAddExpression(): void {\n this.CustomExpressionItem = {\n vesselId: this.syncExpression.vesselId,\n vesselName: this.syncExpression.vesselName,\n comment: this.syncExpression.comment,\n expressionType: this.syncExpression.expressionType,\n expressions: [\n {\n vesselName: this.syncExpression.vesselName,\n vesselId: this.syncExpression.vesselId,\n logVariable: null,\n amount: 0,\n symbol: \"\",\n operator: null,\n content: null,\n expressionType: this.syncExpression.expressionType,\n },\n ],\n };\n this.editedExpressionIndex = this.syncExpression.expressions.length > 0 ? this.syncExpression.expressions.length : 0;\n this.CustomExpressionsDialog = true;\n }\n onEditExpression(item: CustomExpressionData, index: number): void {\n Vue.set(this.CustomExpressionItem, \"expressions\", [item]);\n this.editedExpressionIndex = index;\n this.CustomExpressionsDialog = true;\n }\n\n deleteCondition(index: number | undefined): void {\n if (index == null) {\n // deleted LogDataMathExpression and set it to \"Logical\" type\n this.syncExpression.expressions.splice(0, 1);\n this.syncExpression.expressionType = \"Logical\";\n } else this.syncExpression.expressions.splice(index, 1);\n this.$emit(\"onConditionDeleted\");\n }\n\n onTypeChanged(type: string): void {\n Vue.set(this.CustomExpressionItem, \"expressionType\", type);\n this.CustomExpressionItem.expressions.forEach(e => Vue.set(e, \"expressionType\", type));\n this.$emit(\"onTypeChanged\", { vesselId: this.syncExpression.vesselId, type: type });\n }\n\n onSaveCustomExpressions(expressions: CustomExpressionData[]): void {\n if (this.editedExpressionIndex != null) {\n this.$emit(\"expressionChanged\", { index: this.editedExpressionIndex, expression: expressions[0] });\n }\n this.editedExpressionIndex = null;\n }\n\n openCommentDialog(): void {\n this.CommentDialog = true;\n }\n\n closeCommentDialog(): void {\n this.CommentDialog = false;\n this.comment = this.syncExpression.comment;\n }\n\n saveComment(): void {\n Vue.set(this.syncExpression, \"comment\", this.comment);\n this.CommentDialog = false;\n this.$emit(\"onComment\", { vesselId: this.syncExpression.vesselId, comment: this.syncExpression.comment });\n }\n\n logVariableName(expressionItem: CustomExpressionData): string | undefined {\n return expressionItem?.logVariable?.displayName ?? expressionItem?.logVariable?.name;\n }\n\n logVariableUnitName(expressionItem: CustomExpressionData): string {\n if (!expressionItem.logVariable?.unit.name) return \"\";\n return expressionItem.logVariable?.unit.name;\n }\n\n created(): void {\n this.CustomExpressionItem = {\n vesselId: this.syncExpression.vesselId,\n vesselName: this.syncExpression.vesselName,\n expressions: this.syncExpression.expressions ? this.syncExpression.expressions : [],\n expressionType: this.syncExpression.expressionType,\n comment: null,\n };\n this.comment = this.syncExpression.comment;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomExpressionItem.vue?vue&type=template&id=3ab7647a&scoped=true&\"\nimport script from \"./CustomExpressionItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomExpressionItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CustomExpressionItem.vue?vue&type=style&index=0&id=3ab7647a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ab7647a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VDialog,VIcon,VSpacer,VTextarea,VToolbar,VToolbarTitle,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// types\nimport { NotificationConditions } from \"@/types/NotificationConditions\";\nimport { ICustomExpressionItem, CustomExpressionData } from \"@/types/CustomExpressionData\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// components\nimport CustomExpressionItem from \"@/components/Notifications/CustomExpressionItem.vue\";\nimport CustomExpressionsDialog from \"@/components/Notifications/CustomExpressionsDialog.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst LogVariables = getModule(LogVariablesModule, store);\n\n@Component({\n components: {\n CustomExpressionItem,\n CustomExpressionsDialog,\n },\n})\nexport default class CustomExpressionsModule extends Vue {\n @PropSync(\"notification\", { required: true }) syncNotification!: NotificationConditions;\n // @Data\n CustomExpressionsDialog = false;\n addDescriptionDialog = false;\n customExpressionItemsList: ICustomExpressionItem[] = [];\n\n // @Getters\n get syncNotificationVessels(): ExtendedVessel[] {\n return this.syncNotification.vessels ?? [];\n }\n\n // @Methods\n setVesselsData(): void {\n if (this.syncNotification.vessels) {\n this.customExpressionItemsList = this.syncNotification.vessels?.map(v => {\n return {\n vesselId: v.id,\n vesselName: v.name,\n expressions: this.getExpressions(v.id, v.name),\n comment: this.getComment(v.id),\n expressionType: this.getExpressionType(v.id),\n };\n });\n }\n }\n\n onTypeChanged(data: { vesselId: number | null; type: string } | string): void {\n if (typeof data === \"string\") {\n this.customExpressionItemsList.forEach(e => {\n if (e.expressions.length) return;\n Vue.set(e, \"expressionType\", data);\n });\n } else {\n const expressionItemIndex = this.customExpressionItemsList.findIndex(item => item.vesselId === data.vesselId);\n if (expressionItemIndex !== -1) {\n Vue.set(this.customExpressionItemsList[expressionItemIndex], \"expressionType\", data.type);\n if (this.customExpressionItemsList[expressionItemIndex].expressions.length)\n this.customExpressionItemsList[expressionItemIndex].expressions.forEach(e => Vue.set(e, \"expressionType\", data.type));\n }\n }\n }\n\n onSaveCustomExpressions(expressions: CustomExpressionData[]): void {\n this.customExpressionItemsList.forEach((item, i) => {\n Vue.set(this.customExpressionItemsList[i], \"expressions\", [...item.expressions, ...expressions.filter(e => e.vesselId === item.vesselId)]);\n });\n this.$emit(\"onExpressionItemChanged\", this.customExpressionItemsList);\n }\n\n onExpressionChanged(changedItem: { index: number; expression: CustomExpressionData }): void {\n const expressionItemIndex = this.customExpressionItemsList.findIndex(item => item.vesselId === changedItem.expression.vesselId);\n if (expressionItemIndex !== -1) this.customExpressionItemsList[expressionItemIndex].expressions.splice(changedItem.index, 1, changedItem.expression);\n this.$emit(\"onExpressionItemChanged\", this.customExpressionItemsList);\n }\n\n onConditionDeleted(): void {\n this.$emit(\"onExpressionItemChanged\", this.customExpressionItemsList);\n }\n\n onExpressionComment(expressionItemComment: { vesselId: number; comment: string | null }): void {\n this.$emit(\"onExpressionComment\", expressionItemComment);\n }\n\n isOperatorSelectAvailable(vesselId: number | undefined): boolean {\n if (!vesselId) return true;\n const expressionItem = this.customExpressionItemsList.find(item => item.vesselId === vesselId);\n if (expressionItem) return expressionItem.expressions.length > 0;\n return true;\n }\n\n getExpressions(vesselId: number, vesselName: string): CustomExpressionData[] {\n if (this.syncNotification.conditions.length === 0) return [] as CustomExpressionData[];\n const vesselCondition = this.syncNotification.conditions.find(\n condition => condition.vesselId === vesselId && (condition.conditionType === \"LogDataExpression\" || condition.conditionType === \"LogDataMathExpression\")\n );\n if (vesselCondition == null) return [] as CustomExpressionData[];\n const splittedExpressionItem = vesselCondition.conditionDetails?.replace(/\\r?\\n|\\r/g, \"\").split(/(?=\\AND|\\OR)/g) ?? ([] as string[]);\n const expressions = splittedExpressionItem.map((exp: string) => {\n const stringifiedExpression = exp\n .split(/(\\<=|\\>=|>|<|=|\\AND|\\OR)/g)\n .filter(item => item.length > 0)\n .map(item => item.trim());\n\n return {\n vesselId: vesselId,\n vesselName: vesselName,\n logVariable: LogVariables.logVariableByNameAndVesselId(vesselId, stringifiedExpression.length === 3 ? stringifiedExpression[0] : stringifiedExpression[1]) ?? null,\n amount: stringifiedExpression.length === 3 ? +stringifiedExpression[2].replace(/\\D/g, \"\") : +stringifiedExpression[3]?.replace(/\\D/g, \"\") ?? \"\",\n symbol: stringifiedExpression.length === 3 ? stringifiedExpression[1] : stringifiedExpression[2],\n operator: stringifiedExpression.length === 4 ? stringifiedExpression[0] : null,\n content: vesselCondition.content,\n mathContent: vesselCondition.conditionType === \"LogDataMathExpression\" ? vesselCondition.conditionDetails : \"\",\n expressionType: vesselCondition.conditionType === \"LogDataExpression\" || vesselCondition.conditionType == null ? \"Logical\" : \"Mathematical\",\n };\n });\n\n return expressions;\n }\n\n getComment(vesselId: number): string | null {\n if (!this.syncNotification.conditions.length) return null;\n const vesselCondition = this.syncNotification.conditions.find(\n condition => condition.vesselId === vesselId && (condition.conditionType === \"LogDataExpression\" || condition.conditionType === \"LogDataMathExpression\")\n );\n if (vesselCondition == null) return null;\n return vesselCondition.contentDescription ?? null;\n }\n\n getExpressionType(vesselId: number): string {\n if (!this.syncNotification.conditions.length) return \"Logical\";\n const vesselCondition = this.syncNotification.conditions.find(\n condition => condition.vesselId === vesselId && (condition.conditionType === \"LogDataExpression\" || condition.conditionType === \"LogDataMathExpression\")\n );\n if (vesselCondition == null) return \"Logical\";\n return vesselCondition.conditionType === \"LogDataExpression\" || vesselCondition.conditionType == null ? \"Logical\" : \"Mathematical\";\n }\n\n mounted(): void {\n if (this.syncNotification.vessels) {\n this.customExpressionItemsList = this.syncNotification.vessels?.map(v => {\n return {\n vesselId: v.id,\n vesselName: v.name,\n expressions: this.getExpressions(v.id, v.name),\n comment: this.getComment(v.id),\n expressionType: this.getExpressionType(v.id),\n };\n });\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionsModule.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomExpressionsModule.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomExpressionsModule.vue?vue&type=template&id=061c058a&scoped=true&\"\nimport script from \"./CustomExpressionsModule.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomExpressionsModule.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"061c058a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isDisplayed)?_c('div',{staticClass:\"custom-recipient-item d-flex align-center py-2\"},[_c('div',{staticClass:\"vessel-name text-truncate font-weight-bold\",staticStyle:{\"width\":\"200px\"}},[_vm._v(\" \"+_vm._s(_vm.vesselName)+\" \")]),_c('div',{staticClass:\"event text-truncate\",staticStyle:{\"width\":\"320px\"}},[_vm._v(\" \"+_vm._s(_vm.getConditionTypeText)+\" \")]),_c('div',{staticClass:\"channels\"},[_c('v-select',{staticClass:\"recipient-select elevation-0\",staticStyle:{\"width\":\"700px\"},attrs:{\"items\":_vm.syncRecipients,\"item-text\":\"email\",\"return-object\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\",\"multiple\":\"\",\"chips\":\"\"},on:{\"change\":_vm.onRecipientsChanged},scopedSlots:_vm._u([{key:\"selection\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-chip',{staticClass:\"my-1\"},[_vm._v(_vm._s(item.userId ? _vm.userName(item.userId) : item.email))])]}},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nvar attrs = ref.attrs;\nvar on = ref.on;\nreturn [_c('v-list-item',_vm._g(_vm._b({scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar active = ref.active;\nreturn [_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"ripple\":false,\"input-value\":active}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_vm._v(\" \"+_vm._s(item.userId ? _vm.userName(item.userId) : item.email)+\" \")])],1)],1)]}}],null,true)},'v-list-item',attrs,false),on))]}}],null,false,3642979932),model:{value:(_vm.selectedRecipients),callback:function ($$v) {_vm.selectedRecipients=$$v},expression:\"selectedRecipients\"}})],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport conditionTypeHelper from \"Utilities/condition-type-helper\";\n// types\nimport { Channel, Condition } from \"@/types/condition\";\nimport { UserProfile } from \"@/types/userProfile\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport UsersModule from \"@/store/clients/Users.module\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Users = getModule(UsersModule, store);\n\n@Component({\n components: {},\n})\nexport default class CustomRecipientItem extends Vue {\n @PropSync(\"condition\", { required: true }) syncCondition!: Condition;\n @PropSync(\"recipients\", { required: true }) syncRecipients!: Channel[];\n // @Watchers\n @Watch(\"syncCondition\", { deep: true })\n onSyncConditionUpdate(): void {\n this.selectedRecipients = this.syncCondition.channels;\n }\n // @Data\n selectedRecipients: Channel[] = [];\n\n // @Getters\n get getConditionTypeText(): string {\n return conditionTypeHelper.getConditionTypeText(this.syncCondition);\n }\n\n get vesselName(): string {\n const vessel = Vessels.getExtendedVesselById(this.syncCondition.vesselId);\n return vessel ? vessel.name : \"\";\n }\n\n get users(): UserProfile[] {\n return Users.users;\n }\n\n get isDisplayed(): boolean {\n const vessel = Vessels.getExtendedVesselById(this.syncCondition.vesselId);\n if (!vessel) return false;\n if (this.syncCondition.conditionType === \"PerformanceStatusObserve\" || this.syncCondition.conditionType === \"PerformanceStatusNotOk\") {\n return vessel.features.some(f => f.name === \"Diagnostics\");\n } else if (this.syncCondition.conditionType === \"ShapoliPowerReserveBreach\") {\n return vessel.features.some(f => f.name === \"Shapoli\");\n } else {\n return true;\n }\n }\n\n // @Methods\n userName(userId: string): string {\n const user = Users.getUserById(userId);\n return user?.name ? user.name : `${user?.email} (User)`;\n }\n\n onRecipientsChanged(): void {\n this.$emit(\"update\", { vesselId: this.syncCondition.vesselId, conditionType: this.syncCondition.conditionType, channels: this.selectedRecipients });\n }\n\n // @Hooks\n created(): void {\n this.selectedRecipients = this.syncCondition.channels;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomRecipientItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomRecipientItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomRecipientItem.vue?vue&type=template&id=6e8704f6&scoped=true&\"\nimport script from \"./CustomRecipientItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomRecipientItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CustomRecipientItem.vue?vue&type=style&index=0&id=6e8704f6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e8704f6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VCheckbox,VChip,VListItem,VListItemAction,VListItemContent,VListItemTitle,VRow,VSelect})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync, Prop, Ref, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport durationHelper from \"Utilities/duration-helper\";\nimport htmlEncoder from \"Utilities/htmlencode-helper\";\nimport conditionTypeHelper from \"Utilities/condition-type-helper\";\nimport _ from \"underscore\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { Channel, Condition, Threshold, FleetThresholds } from \"@/types/condition\";\nimport { NotificationConditions } from \"@/types/NotificationConditions\";\nimport { ICustomExpressionItem, CustomExpressionData } from \"@/types/CustomExpressionData\";\nimport { UserProfile } from \"@/types/userProfile\";\n\n// components\nimport VesselSelect from \"@/components/VesselSelect.vue\";\nimport SeveritySelector from \"@/components/SeveritySelector.vue\";\nimport SeverityTextFieldSelector from \"@/components/SeverityTextFieldSelector.vue\";\nimport CustomExpressionsModule from \"@/components/Notifications/CustomExpressionsModule.vue\";\nimport CustomExpressionItem from \"@/components/Notifications/CustomExpressionItem.vue\";\nimport CustomExpressionsDialog from \"@/components/Notifications/CustomExpressionsDialog.vue\";\nimport CustomRecipientItem from \"@/components/Notifications/CustomRecipientItem.vue\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\nimport NotificationConfiguration from \"@/components/Notifications/NotificationConfiguration.vue\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport UsersModule from \"@/store/clients/Users.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport ChannelsModule from \"@/store/clients/Channels.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport IncidentsModule from \"@/store/clients/Incidents.module\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\nconst Users = getModule(UsersModule, store);\nconst User = getModule(UserModule, store);\nconst Channels = getModule(ChannelsModule, store);\nconst Incidents = getModule(IncidentsModule, store);\nconst LogVariables = getModule(LogVariablesModule, store);\n\n@Component({\n components: {\n VesselSelect,\n SeveritySelector,\n SeverityTextFieldSelector,\n CustomExpressionsModule,\n CustomExpressionItem,\n CustomExpressionsDialog,\n CustomRecipientItem,\n ConfirmDialog,\n NotificationConfiguration,\n },\n})\nexport default class ConditionStepper extends Vue {\n @PropSync(\"notification\", { required: true }) syncNotification!: NotificationConditions;\n @Prop({ default: false }) isEditMode!: boolean;\n @Prop() commonSelectedUsers!: UserProfile[];\n @Prop() commonSelectedEmails!: Channel[];\n @Prop({ default: 1 }) conditionStep!: number;\n @Ref(\"confirmDelete\") confirmDelete!: any;\n @Ref(\"CustomExpressionsModule\") CustomExpressionsModule!: any;\n\n @Watch(\"thresholds\", { deep: true })\n onThresholdsChanged(): void {\n Vue.set(this.thresholds, \"LogDataMathExpressionThresholds\", this.thresholds.LogDataExpressionThresholds);\n this.updateConditions();\n }\n\n @Watch(\"speedLossPercentage\", { deep: true })\n onSpeedLossPercentageChanged(): void {\n this.updateConditions();\n }\n\n @Watch(\"fuelConsumptionValue\", { deep: true })\n onFuelConsumptionValueChanged(): void {\n this.updateConditions();\n }\n\n @Watch(\"notifyShaPoLiEvent\")\n onNotifyShaPoLiChanged(): void {\n if (this.notifyShaPoLiEvent) {\n this.thresholds.ShapoliPowerReserveBreachThresholds = [\n {\n durationInSeconds: 60,\n severity: \"Critical\",\n } as Threshold,\n ];\n } else {\n this.thresholds.ShapoliPowerReserveBreachThresholds = [];\n }\n this.updateConditions();\n }\n\n @Watch(\"notifyVoyageEvent\")\n onNotifyVoyageChanged(): void {\n if (this.notifyVoyageEvent) {\n this.thresholds.VoyageCompleteThresholds = [\n {\n durationInSeconds: 60,\n severity: \"Warning\",\n } as Threshold,\n ];\n } else {\n this.thresholds.VoyageCompleteThresholds = [];\n }\n this.updateConditions();\n }\n\n @Watch(\"notifyVariableOfflineEvent\")\n onNotifyVariableOfflineChanged(): void {\n if (this.notifyVariableOfflineEvent) {\n this.thresholds.VariableOfflineThresholds = [\n {\n durationInSeconds: 60,\n severity: \"Critical\",\n } as Threshold,\n ];\n } else {\n this.thresholds.VariableOfflineThresholds = [];\n }\n this.updateConditions();\n }\n\n @Watch(\"notifyMissingSignalEvent\")\n onNotifyMissingSignalEventChanged(): void {\n if (this.notifyMissingSignalEvent) {\n this.thresholds.MissingSignalThresholds = [\n {\n durationInSeconds: 60,\n severity: \"Critical\",\n } as Threshold,\n ];\n } else {\n this.thresholds.MissingSignalThresholds = [];\n }\n this.updateConditions();\n }\n\n // @Data\n step = 1;\n CustomExpressionsDialog = false;\n vesselLogVariablesModal = false;\n showCreatedExpressionsDataList = false;\n selectedVessel: any = null;\n notifyShaPoLiEvent = false;\n notifyVoyageEvent = false;\n notifyVariableOfflineEvent = false;\n notifyMissingSignalEvent = false;\n expressionsDataList: CustomExpressionData[] = [];\n customExpressionItemsList: ICustomExpressionItem[] = [];\n selectedChannels: Channel[] = [];\n selectedUsers: UserProfile[] = [];\n selectedVesselsNameString = \"\";\n thresholds: FleetThresholds = {\n VesselDataOverdueThresholds: [],\n PerformanceStatusObserveThresholds: [],\n PerformanceStatusNotOkThresholds: [],\n SpeedLossWarningThresholds: [],\n SpeedLossCriticalThresholds: [],\n FuelConsumptionWarningThresholds: [],\n FuelConsumptionCriticalThresholds: [],\n LogDataExpressionThresholds: [],\n LogDataMathExpressionThresholds: [],\n ManualInputValueStaleThresholds: [],\n ShapoliPowerReserveBreachThresholds: [],\n VoyageCompleteThresholds: [],\n VariableOfflineThresholds: [],\n MissingSignalThresholds: [],\n };\n manualInputVariables: { text: string; type: string }[] = [\n {\n text: \"Fuel properties\",\n type: \"meta:fuel-property\",\n },\n {\n text: \"Draft\",\n type: \"property:draft\",\n },\n ];\n selectedManualInputVariable: { text: string; type: string } = this.manualInputVariables[0];\n newCustomEmail: string | null = null;\n emailRules = {\n valid: (value: string) => (/^([\\w\\.\\-\\+]+)@([\\w\\-]+)((\\.(\\w){2,6})+)$/.test(value) && value.length) || value == null || \"Email must be valid\",\n };\n speedLossPercentage: any = {\n warning: 0,\n critical: 0,\n };\n fuelConsumptionValue: any = {\n warning: 0,\n critical: 0,\n };\n\n // @Getters\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get users(): UserProfile[] {\n return Users.users;\n }\n\n get syncNotificationVessels(): ExtendedVessel[] {\n return this.syncNotification.vessels ?? [];\n }\n\n get emailChannels(): Channel[] {\n return Channels.emailChannels;\n }\n\n get recipientsList(): Channel[] {\n return [...this.emailChannels, ...this.users.map(u => ({ userId: u.id, email: u.email }))];\n }\n\n get selectedRecipientsList(): Channel[] {\n return [...this.selectedChannels, ...this.selectedUsers.map(u => ({ userId: u.id, email: u.email }))];\n }\n\n get isFirstStepComplete(): boolean {\n if (!this.syncNotification.vessels) return false;\n return this.syncNotification.vessels.length > 0;\n }\n\n get isVesselDataOverdueThresholdsFilled(): boolean {\n return Boolean(this.thresholds.VesselDataOverdueThresholds.length);\n }\n\n get isPerformanceStatusObserveThresholdsFilled(): boolean {\n return Boolean(this.thresholds.PerformanceStatusObserveThresholds.length);\n }\n\n get isSpeedLossThresholdsFilled(): boolean {\n return Boolean(this.thresholds.SpeedLossWarningThresholds.length || this.thresholds.SpeedLossWarningThresholds.length);\n }\n\n get isFuelConsumptionThresholdsFilled(): boolean {\n return Boolean(this.thresholds.FuelConsumptionWarningThresholds.length || this.thresholds.FuelConsumptionCriticalThresholds.length);\n }\n\n get isPerformanceStatusNotOkThresholdsFilled(): boolean {\n return Boolean(this.thresholds.PerformanceStatusNotOkThresholds.length);\n }\n\n get isLogDataExpressionThresholdsFilled(): boolean {\n return Boolean(this.thresholds.LogDataExpressionThresholds.length);\n }\n\n get isLogDataMathExpressionThresholdsFilled(): boolean {\n return Boolean(this.thresholds.LogDataMathExpressionThresholds.length);\n }\n\n get isManualInputValueStaleThresholdsFilled(): boolean {\n return Boolean(this.thresholds.ManualInputValueStaleThresholds.length);\n }\n\n get logDataExpressionTypeConditions(): Condition[] {\n return this.syncNotification.conditions.filter(cond => cond.conditionType === \"LogDataExpression\" || cond.conditionType === \"LogDataMathExpression\");\n }\n\n get hasLogDataExpressions(): boolean {\n if (!this.logDataExpressionTypeConditions.length) return false;\n return this.logDataExpressionTypeConditions.every(item => item.content);\n }\n\n get manualInputStaleTypeConditions(): Condition[] {\n return this.syncNotification.conditions.filter(cond => cond.conditionType === \"ManualInputValueStale\");\n }\n\n get vesselsWithoutShaPoLiModule(): string {\n const vesselsWithoutShaPoLiModule: ExtendedVessel[] = [];\n this.syncNotification.vessels?.forEach(v => {\n if (v.features.every(f => f.name !== \"Shapoli\")) vesselsWithoutShaPoLiModule.push(v);\n });\n return vesselsWithoutShaPoLiModule.map(vessel => vessel.name).join(\", \");\n }\n get vesselsWithoutLogVariableOfflineModule(): string {\n if (!this.syncNotification.vessels) return \"\";\n return this.syncNotification.vessels\n .filter(vessel => vessel.onboardSystem !== \"Ksp\")\n .map(v => v.name)\n .join(\", \");\n }\n\n get isVesselLogVaribleOfflineDisabled(): boolean {\n if (!this.syncNotification.vessels) return false;\n if (this.syncNotification.vessels.some(v => v.onboardSystem === \"Ksp\")) return false;\n return true;\n }\n\n get vesselsWithoutDiagnosticsModule(): string {\n const vesselsWithoutDiagnosticsModule: ExtendedVessel[] = [];\n this.syncNotification.vessels?.forEach(v => {\n if (v.features.every(f => f.name !== \"Diagnostics\")) vesselsWithoutDiagnosticsModule.push(v);\n });\n return vesselsWithoutDiagnosticsModule.map(vessel => vessel.name).join(\", \");\n }\n\n get vesselsWithoutFoulingModule(): string {\n const vesselsWithoutFoulingModule: ExtendedVessel[] = [];\n this.syncNotification.vessels?.forEach(v => {\n if (v.features.every(f => f.name !== \"Fouling\")) vesselsWithoutFoulingModule.push(v);\n });\n return vesselsWithoutFoulingModule.map(vessel => vessel.name).join(\", \");\n }\n\n get isShapoliModuleDisabledForAllVessels(): boolean {\n if (!this.syncNotification.vessels) return false;\n return this.syncNotification.vessels.every(v => v.features.every(f => f.name !== \"Shapoli\"));\n }\n\n get isDiagnosticsModuleDisabledForAllVessels(): boolean {\n if (!this.syncNotification.vessels) return false;\n return this.syncNotification.vessels.every(v => v.features.every(f => f.name !== \"Diagnostics\"));\n }\n\n get isFoulingModuleDisabledForAllVessels(): boolean {\n if (!this.syncNotification.vessels) return false;\n return this.syncNotification.vessels.every(v => v.features.every(f => f.name !== \"Fouling\"));\n }\n\n get isSpeedLossCriticalLessThanWarning(): boolean {\n if (this.speedLossPercentage.critical === 0 || this.speedLossPercentage.warning === 0) return false;\n return this.speedLossPercentage.critical <= this.speedLossPercentage.warning;\n }\n\n get isFuelConsumptionCriticalLessThanWarning(): boolean {\n if (this.fuelConsumptionValue.critical === 0 || this.fuelConsumptionValue.warning === 0) return false;\n return this.fuelConsumptionValue.critical <= this.fuelConsumptionValue.warning;\n }\n\n get hasEventWithDisabledModule(): boolean {\n return this.syncNotification.conditions.some(c => {\n if (\n c.conditionType === \"PerformanceStatusObserve\" ||\n c.conditionType === \"PerformanceStatusNotOk\" ||\n c.conditionType === \"ShapoliPowerReserveBreach\" ||\n c.conditionType.includes(\"SpeedLoss\") ||\n c.conditionType.includes(\"FuelConsumption\")\n ) {\n return this.hasDisabledModule(c.vesselId, c.conditionType);\n } else return false;\n });\n }\n\n get isClearExpressionOperatorsDisabled(): boolean {\n return this.expressionsDataList.every(e => e.operator === null);\n }\n\n get isEmailValid(): boolean {\n if (typeof this.emailRules.valid(this.newCustomEmail ?? \"\") === \"string\") return true;\n return false;\n }\n\n get isAnyThresholdsFilled(): boolean {\n return (\n Object.keys(this.thresholds).some(\n key =>\n key !== \"ShapoliPowerReserveBreachThresholds\" &&\n key !== \"VoyageCompleteThresholds\" &&\n key !== \"VariableOfflineThresholds\" &&\n key !== \"MissingSignalThresholds\" &&\n (this.thresholds as any)[key].length > 0\n ) ||\n this.notifyShaPoLiEvent ||\n this.notifyVoyageEvent ||\n this.notifyVariableOfflineEvent ||\n this.notifyMissingSignalEvent\n );\n }\n\n get isAddCustomMailAvailable(): boolean {\n return User.userRole === \"SuperUser\" || User.userRole === \"Administrator\";\n }\n\n async conditions(): Promise {\n let conditions: Condition[] = this.syncNotification.conditions.length ? this.syncNotification.conditions : [];\n // if it's only one condition, then delete it and post conditions as a new fleet group\n if (conditions.length === 1) {\n conditions.forEach(cond => (cond.isDeleted = true));\n await Incidents.updateCondition(conditions);\n }\n if (this.isVesselDataOverdueThresholdsFilled) conditions = [...conditions, ...this.conditionsConstructor(\"VesselDataOverdue\", \"last-imported-date\")];\n if (this.isPerformanceStatusObserveThresholdsFilled) conditions = [...conditions, ...this.conditionsConstructor(\"PerformanceStatusObserve\", \"perf-status-observe\")];\n if (this.isPerformanceStatusNotOkThresholdsFilled) conditions = [...conditions, ...this.conditionsConstructor(\"PerformanceStatusNotOk\", \"perf-status-notok\")];\n if (this.isLogDataExpressionThresholdsFilled) conditions = [...conditions, ...this.conditionsConstructor(\"LogDataExpression\", \"log-data-expression\")];\n if (this.isLogDataMathExpressionThresholdsFilled) conditions = [...conditions, ...this.conditionsConstructor(\"LogDataMathExpression\", \"LogDataMathExpression\")];\n if (this.notifyShaPoLiEvent) conditions = [...conditions, ...this.conditionsConstructor(\"ShapoliPowerReserveBreach\", \"ShapoliPowerReserveBreach\")];\n if (this.notifyMissingSignalEvent) conditions = [...conditions, ...this.conditionsConstructor(\"MissingSignal\", \"MissingSignal\")];\n if (this.isManualInputValueStaleThresholdsFilled) conditions = [...conditions, ...this.conditionsConstructor(\"ManualInputValueStale\", this.selectedManualInputVariable.type)];\n if (this.notifyVoyageEvent) conditions = [...conditions, ...this.conditionsConstructor(\"VoyageComplete\", \"VoyageComplete\")];\n if (this.notifyVariableOfflineEvent) conditions = [...conditions, ...this.conditionsConstructor(\"VariableOffline\", \"VariableOffline\")];\n\n return conditions;\n }\n\n // @Methods\n conditionsConstructor(type: string, targetKey: string): Condition[] {\n if (!this.syncNotification.vessels) return [] as Condition[];\n return this.syncNotification.vessels.map(v => {\n return {\n id: this.notificationConditionId(v.id, type),\n vesselId: v.id,\n conditionType: type,\n conditionDetails: this.expressionConditionDetails(v.id, type),\n targetKey: targetKey ? targetKey : \"\",\n content: this.expressionContentByVesselId(v.id, type),\n contentDescription: this.contentDescription(v.id),\n channels: this.conditionChannels(v.id, type).length ? this.conditionChannels(v.id, type) : JSON.parse(JSON.stringify(this.selectedRecipientsList)),\n thresholds: this.thresholdsByType(type),\n } as Condition;\n });\n }\n\n thresholdsByType(type: string): Threshold[] {\n switch (type) {\n case \"VesselDataOverdue\":\n return this.thresholds.VesselDataOverdueThresholds;\n case \"PerformanceStatusObserve\":\n return this.thresholds.PerformanceStatusObserveThresholds;\n case \"PerformanceStatusNotOk\":\n return this.thresholds.PerformanceStatusNotOkThresholds;\n case \"SpeedLossWarning\":\n return this.thresholds.SpeedLossWarningThresholds;\n case \"SpeedLossCritical\":\n return this.thresholds.SpeedLossCriticalThresholds;\n case \"FuelConsumptionWarning\":\n return this.thresholds.FuelConsumptionWarningThresholds;\n case \"FuelConsumptionCritical\":\n return this.thresholds.FuelConsumptionCriticalThresholds;\n case \"LogDataExpression\":\n return this.thresholds.LogDataExpressionThresholds;\n case \"LogDataMathExpression\":\n return this.thresholds.LogDataExpressionThresholds;\n case \"ShapoliPowerReserveBreach\":\n return this.thresholds.ShapoliPowerReserveBreachThresholds;\n case \"MissingSignal\":\n return this.thresholds.MissingSignalThresholds;\n case \"ManualInputValueStale\":\n return this.thresholds.ManualInputValueStaleThresholds;\n case \"VoyageComplete\":\n return this.thresholds.VoyageCompleteThresholds;\n case \"VariableOffline\":\n return this.thresholds.VariableOfflineThresholds;\n default:\n return [];\n }\n }\n\n numericFilter(event: any): void {\n event = event ? event : window.event;\n const expect = event.target.value.toString() + event.key.toString();\n return !/^\\d+$/.test(expect) ? event.preventDefault() : false;\n }\n\n notificationConditionId(vesselId: number, conditionType: string): number {\n const existingCondition = this.syncNotification.conditions.find(c => c.vesselId === vesselId && c.conditionType === conditionType);\n if (existingCondition && existingCondition.id && existingCondition.id !== 0) return existingCondition.id;\n else return 0;\n }\n\n hasDisabledModule(vesselId: number, conditionType: string): boolean {\n if (!this.syncNotification.vessels) return false;\n let hasDisabledModule = false;\n const vessel = this.syncNotification.vessels.find(v => v.id === vesselId);\n if (!vessel) return false;\n if ((conditionType === \"PerformanceStatusObserve\" || conditionType === \"PerformanceStatusNotOk\") && vessel.features.filter(f => f.name === \"Diagnostics\").length === 0) hasDisabledModule = true;\n else if (conditionType === \"ShapoliPowerReserveBreach\" && vessel.features.filter(f => f.name === \"Shapoli\").length === 0) hasDisabledModule = true;\n else if ((conditionType.includes(\"SpeedLoss\") || conditionType.includes(\"FuelConsumption\")) && vessel.features.filter(f => f.name === \"Fouling\").length === 0) hasDisabledModule = true;\n return hasDisabledModule;\n }\n\n conditionChannels(vesselId: number, conditionType: string): Channel[] {\n const existingCondition = this.syncNotification.conditions.find(c => c.vesselId === vesselId && c.conditionType === conditionType);\n if (existingCondition && existingCondition.channels.length) return existingCondition.channels;\n else return [] as Channel[];\n }\n\n expressionClausesByVesselId(vesselId: number): CustomExpressionData[] {\n const vesselExpressionItem = this.customExpressionItemsList.find(item => item.vesselId === vesselId) ?? ({} as ICustomExpressionItem);\n return JSON.parse(JSON.stringify(vesselExpressionItem?.expressions ?? ([] as CustomExpressionData[])));\n }\n\n createExpressionTree(expressionClauses: CustomExpressionData[]): object {\n let expressionTree: any = null;\n\n expressionClauses.forEach(clause => {\n const newExpressionTree = this.BinaryExpression(clause);\n\n if (!expressionTree) {\n expressionTree = newExpressionTree;\n } else if (clause.operator === \"AND\") {\n expressionTree = {\n type: \"LogicalExpression\",\n token: \"AND\",\n left: expressionTree,\n right: newExpressionTree,\n };\n } else {\n if (expressionTree.type === \"BinaryExpression\") {\n expressionTree = {\n type: \"LogicalExpression\",\n token: \"OR\",\n left: expressionTree,\n right: newExpressionTree,\n };\n } else {\n expressionTree.right = {\n type: \"LogicalExpression\",\n token: \"OR\",\n left: expressionTree.right,\n right: newExpressionTree,\n };\n }\n }\n });\n\n return expressionTree;\n }\n\n expressionConditionDetails(vesselId: number, type: string): string | null {\n if (type === \"LogDataExpression\" || type === \"LogDataMathExpression\") {\n const existingCondition = this.syncNotification.conditions.find(c => c.vesselId === vesselId && c.conditionType === type);\n if (existingCondition && existingCondition.conditionDetails && existingCondition.conditionDetails !== null) return existingCondition.conditionDetails;\n return null;\n }\n return null;\n }\n\n expressionContentByVesselId(vesselId: number, type: string): string | null {\n if ((!this.customExpressionItemsList.length && type.includes(\"Expression\")) || (this.isEditMode && !type.includes(\"SpeedLoss\") && !type.includes(\"FuelConsumption\"))) {\n const existingCondition = this.syncNotification.conditions.find(c => c.vesselId === vesselId && c.conditionType === type);\n if (existingCondition && existingCondition.content && existingCondition.conditionType === type && existingCondition.content !== null) return existingCondition.content;\n else return null;\n }\n if (type === \"LogDataExpression\") {\n const expressionClauses = this.expressionClausesByVesselId(vesselId);\n const expressionTree = this.createExpressionTree(expressionClauses);\n\n return JSON.stringify(expressionTree);\n } else if (type.includes(\"SpeedLoss\")) {\n const severity: any = type.split(\"SpeedLoss\")[1].toLowerCase();\n return this.speedLossPercentage[severity].toString();\n } else if (type.includes(\"FuelConsumption\")) {\n const severity: any = type.split(\"FuelConsumption\")[1].toLowerCase();\n return this.fuelConsumptionValue[severity].toString();\n } else return null;\n }\n\n BinaryExpression(clause: CustomExpressionData): any {\n return {\n type: \"BinaryExpression\",\n token: clause.symbol,\n left: {\n type: \"Identifier\",\n token: clause.logVariable?.id,\n left: null,\n right: null,\n },\n right: {\n type: \"Literal\",\n token: +clause.amount,\n left: null,\n right: null,\n },\n };\n }\n\n contentDescription(vesselId: number): string | null {\n const existingCondition = this.syncNotification.conditions.find(c => c.vesselId === vesselId && c.conditionType === \"LogDataExpression\");\n if (existingCondition && existingCondition.contentDescription && existingCondition.contentDescription !== null) return existingCondition.contentDescription;\n else return null;\n }\n\n async onStepSelectChannels(): Promise {\n if (!this.isEditMode && this.syncNotification.conditions.length === 0) Vue.set(this.syncNotification, \"conditions\", await this.conditions());\n this.step = 3;\n }\n\n onConfirm(): void {\n this.step = 4;\n }\n\n onCreate(): void {\n if (this.isEditMode) {\n this.$emit(\"onUpdate\", this.syncNotification);\n } else {\n this.$emit(\"onCreate\", this.syncNotification);\n this.$router.push(\"/MyNotifications\");\n }\n }\n\n onCancel(): void {\n this.syncNotification = {\n vessels: [] as ExtendedVessel[],\n conditions: [] as Condition[],\n } as NotificationConditions;\n this.$router.push(\"/MyNotifications\");\n }\n\n onExpressionItemChanged(expressionItemsList: ICustomExpressionItem[]): void {\n if (!this.isEditMode) {\n expressionItemsList.forEach(expressionItem => {\n const existingConditionIndex = this.syncNotification.conditions.findIndex(\n c => c.vesselId === expressionItem.vesselId && (c.conditionType === \"LogDataExpression\" || c.conditionType === \"LogDataMathExpression\")\n );\n if (existingConditionIndex === -1) {\n this.syncNotification.conditions.push({\n id: 0,\n vesselId: expressionItem.vesselId,\n conditionType: expressionItem.expressionType === \"Logical\" ? \"LogDataExpression\" : \"LogDataMathExpression\",\n conditionDetails: expressionItem.expressionType === \"Logical\" ? this.getConditionDetailsFromArray(expressionItem.expressions) : expressionItem.expressions[0].mathContent,\n targetKey: expressionItem.expressionType === \"Logical\" ? \"log-data-expression\" : \"LogDataMathExpression\",\n content: expressionItem.expressions.length ? expressionItem.expressions[0].content : null,\n contentDescription: expressionItem.comment,\n channels: [],\n thresholds: [],\n } as Condition);\n } else if (existingConditionIndex !== -1 && expressionItem.vesselId === this.syncNotification.conditions[existingConditionIndex].vesselId) {\n this.syncNotification.conditions.splice(existingConditionIndex, 1, {\n id: this.syncNotification.conditions[existingConditionIndex].id,\n vesselId: expressionItem.vesselId,\n conditionType: expressionItem.expressionType === \"Logical\" ? \"LogDataExpression\" : \"LogDataMathExpression\",\n conditionDetails: expressionItem.expressionType === \"Logical\" ? this.getConditionDetailsFromArray(expressionItem.expressions) : expressionItem.expressions[0].mathContent,\n targetKey: expressionItem.expressionType === \"Logical\" ? \"log-data-expression\" : \"LogDataMathExpression\",\n content: expressionItem.expressions.length ? expressionItem.expressions[0].content : null,\n contentDescription: expressionItem.comment,\n channels: this.syncNotification.conditions[existingConditionIndex].channels,\n thresholds: this.syncNotification.conditions[existingConditionIndex].thresholds,\n } as Condition);\n }\n });\n } else {\n expressionItemsList.forEach(expressionItem => {\n const existingConditionIndex = this.syncNotification.conditions.findIndex(\n c => c.vesselId === expressionItem.vesselId && (c.conditionType === \"LogDataExpression\" || c.conditionType === \"LogDataMathExpression\")\n );\n if (existingConditionIndex !== -1 && expressionItem.vesselId === this.syncNotification.conditions[existingConditionIndex].vesselId) {\n this.syncNotification.conditions.splice(existingConditionIndex, 1, {\n id: this.syncNotification.conditions[existingConditionIndex].id,\n vesselId: expressionItem.vesselId,\n conditionType: expressionItem.expressionType === \"Logical\" ? \"LogDataExpression\" : \"LogDataMathExpression\",\n conditionDetails: expressionItem.expressionType === \"Logical\" ? this.getConditionDetailsFromArray(expressionItem.expressions) : expressionItem.expressions[0].mathContent,\n targetKey: expressionItem.expressionType === \"Logical\" ? \"log-data-expression\" : \"LogDataMathExpression\",\n content: expressionItem.expressions.length ? expressionItem.expressions[0].content : null,\n contentDescription: expressionItem.comment,\n channels: this.syncNotification.conditions[existingConditionIndex].channels,\n thresholds: this.syncNotification.conditions[existingConditionIndex].thresholds,\n } as Condition);\n } else if (existingConditionIndex === -1) {\n this.syncNotification.conditions.push({\n id: 0,\n vesselId: expressionItem.vesselId,\n conditionType: expressionItem.expressionType === \"Logical\" ? \"LogDataExpression\" : \"LogDataMathExpression\",\n conditionDetails: expressionItem.expressionType === \"Logical\" ? this.getConditionDetailsFromArray(expressionItem.expressions) : expressionItem.expressions[0].mathContent,\n targetKey: expressionItem.expressionType === \"Logical\" ? \"log-data-expression\" : \"LogDataMathExpression\",\n content: expressionItem.expressions.length ? expressionItem.expressions[0].content : null,\n contentDescription: expressionItem.comment,\n channels: [],\n thresholds: [],\n } as Condition);\n }\n });\n this.customExpressionItemsList = expressionItemsList;\n this.updateConditions();\n }\n }\n\n onExpressionTypeChanged(type: string): void {\n // Vue.set(this.CustomExpressionItem, \"expressionType\", type);\n }\n\n getConditionDetailsFromArray(expressionsArray: CustomExpressionData[]): string {\n let conditionDetails = \"\";\n expressionsArray.forEach(expression => {\n const str = `${expression.operator ? expression.operator : \"\"} ${expression.logVariable?.displayName} ${expression.symbol} ${expression.amount} ${\n expression.logVariable ? expression.logVariable.unit.name : \"\"\n }`;\n conditionDetails += str;\n });\n return conditionDetails;\n }\n\n onExpressionComment(expressionItemComment: { vesselId: number; comment: string | null }): void {\n const conditionIndex = this.syncNotification.conditions.findIndex(cond => cond.vesselId === expressionItemComment.vesselId && cond.conditionType === \"LogDataExpression\");\n if (conditionIndex !== -1) {\n Vue.set(this.syncNotification.conditions[conditionIndex], \"contentDescription\", expressionItemComment.comment);\n }\n }\n\n onManualInputVariableChanged(): void {\n this.syncNotification.conditions.forEach(cond => {\n if (cond.conditionType === \"ManualInputValueStale\") Vue.set(cond, \"targetKey\", this.selectedManualInputVariable.type);\n });\n }\n\n onSelectAllChannelsChanged($event: any): void {\n if ($event) {\n this.selectedChannels = this.emailChannels;\n this.selectedChannels.forEach(channel => {\n this.syncNotification.conditions.forEach((cond, i) => {\n if (!cond.channels.some(chnl => chnl.email === channel.email)) {\n cond.channels.push({ userId: channel.userId, email: channel.email });\n }\n });\n });\n } else {\n this.selectedChannels = [];\n\n this.syncNotification.conditions.forEach((cond, i) => {\n Vue.set(this.syncNotification.conditions[i], \"channels\", this.selectedRecipientsList);\n });\n }\n }\n\n onEmailChannelsChanged(channel: Channel): void {\n const isChecked = this.selectedChannels.some(chnl => chnl.email === channel.email);\n if (isChecked) {\n this.syncNotification.conditions.forEach((cond, i) => {\n if (!cond.channels.some(chnl => chnl.email === channel.email)) {\n cond.channels.push({ userId: channel.userId, email: channel.email });\n }\n });\n } else {\n this.syncNotification.conditions.forEach((cond, i) => {\n const emailChannelIndex = cond.channels.findIndex(chnl => chnl.email === channel.email);\n if (emailChannelIndex !== -1) cond.channels.splice(emailChannelIndex, 1);\n });\n }\n }\n\n onSelectAllUsersChanged($event: any): void {\n if ($event) {\n this.selectedUsers = this.users;\n this.selectedUsers.forEach(user => {\n this.syncNotification.conditions.forEach((cond, i) => {\n if (!cond.channels.some(chnl => chnl.userId === user.id)) {\n cond.channels.push({ userId: user.id, email: user.email });\n }\n });\n });\n } else {\n this.selectedUsers = [];\n\n this.syncNotification.conditions.forEach((cond, i) => {\n Vue.set(this.syncNotification.conditions[i], \"channels\", this.selectedRecipientsList);\n });\n }\n }\n\n onUsersChanged(user: UserProfile): void {\n const isChecked = this.selectedUsers.some(usr => usr.id === user.id);\n if (isChecked) {\n this.syncNotification.conditions.forEach((cond, i) => {\n if (!cond.channels.some(chnl => chnl.userId === user.id)) {\n cond.channels.push({ userId: user.id, email: user.email });\n }\n });\n } else {\n this.syncNotification.conditions.forEach((cond, i) => {\n const userIndex = cond.channels.findIndex(chnl => chnl.userId === user.id);\n if (userIndex !== -1) cond.channels.splice(userIndex, 1);\n });\n }\n }\n\n onRecipientsUpdate(data: { vesselId: number; conditionType: string; channels: Channel[] }): void {\n const conditionIndex = this.syncNotification.conditions.findIndex(cond => cond.vesselId === data.vesselId && cond.conditionType === data.conditionType);\n if (conditionIndex !== -1) Vue.set(this.syncNotification.conditions[conditionIndex], \"channels\", data.channels);\n }\n\n durationUnitFromSeconds(seconds: number): string {\n return durationHelper.getDurationUnitFromSeconds(seconds);\n }\n\n durationValueFromSeconds(seconds: number): string {\n return durationHelper.getDurationValueFromSeconds(seconds);\n }\n\n severityColor(severity: string): string {\n return severity === \"Critical\" ? \"error\" : \"warning\";\n }\n\n async deleteMail(channel: Channel): Promise {\n const confirmed = await this.confirmDelete.open(\n \"Delete saved email from all conditions?\",\n \"Are you sure you want to completely delete this saved email? It will instantly be removed from all conditions on all vessels using it and not only this one.\"\n );\n\n if (!confirmed) return;\n try {\n if (channel.id) await Channels.deleteChannel(channel.id);\n const chnlIndex = this.selectedChannels.findIndex(chnl => channel.email === chnl.email);\n if (chnlIndex !== -1) this.selectedChannels.splice(chnlIndex, 1);\n Channels.DELETE_CHANNEL(channel);\n Snackbar.showSnackbar({\n text: `Recipient email '${htmlEncoder.htmlEncode(channel.email)}' was successfully deleted`,\n color: \"success\",\n });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to delete channel\" });\n }\n }\n\n submitEmail(): void {\n Channels.ADD_CHANNEL({ email: this.newCustomEmail, userId: null });\n this.newCustomEmail = null;\n }\n\n getTargetKeyByConditionType(conditionType: string): string {\n return conditionTypeHelper.getTargetKeyByConditionType(conditionType);\n }\n\n onVesselChanged(vessel: ExtendedVessel): void {\n if (!this.syncNotification.vessels) return;\n if (!this.isEditMode && this.syncNotification.vessels.length === 1) {\n // if only one vessel selected with disabled feature, clear previous selection\n const foulingFeatureDisabled = !this.syncNotification.vessels[0].features.some(feature => feature.name === \"Fouling\");\n const diagnostiscFeatureDisabled = !this.syncNotification.vessels[0].features.some(feature => feature.name === \"Diagnostics\");\n const shapoliFeatureDisabled = !this.syncNotification.vessels[0].features.some(feature => feature.name === \"Shapoli\");\n if (foulingFeatureDisabled) {\n this.thresholds.SpeedLossWarningThresholds = [];\n this.thresholds.SpeedLossCriticalThresholds = [];\n this.thresholds.FuelConsumptionWarningThresholds = [];\n this.thresholds.FuelConsumptionCriticalThresholds = [];\n }\n if (diagnostiscFeatureDisabled) {\n this.thresholds.PerformanceStatusNotOkThresholds = [];\n this.thresholds.PerformanceStatusObserveThresholds = [];\n }\n if (shapoliFeatureDisabled) this.thresholds.ShapoliPowerReserveBreachThresholds = [];\n }\n const isVesselChecked = this.syncNotification.vessels.some(v => v.id === vessel.id);\n if (isVesselChecked) {\n const uniqueConditions = _.unique(this.syncNotification.conditions, x => x.conditionType);\n const emails = this.commonSelectedEmails ?? [];\n const users = this.commonSelectedUsers ?? [];\n let addedVesselConditions = uniqueConditions.map(c => {\n return {\n id: vessel.id === c.vesselId ? c.id : 0,\n vesselId: vessel.id,\n conditionType: c.conditionType === \"LogDataMathExpression\" ? \"LogDataExpression\" : c.conditionType,\n conditionDetails: c.conditionType === \"LogDataExpression\" && vessel.id === c.vesselId ? c.conditionDetails : null,\n targetKey: c.targetKey === \"LogDataMathExpression\" ? \"log-data-expression\" : c.targetKey,\n content: c.conditionType === \"LogDataExpression\" && vessel.id === c.vesselId ? c.content : null,\n contentDescription: this.contentDescription(c.vesselId),\n channels: [...emails, ...users.map(u => ({ userId: u.id, email: u.email }))],\n thresholds: c.thresholds,\n } as Condition;\n });\n addedVesselConditions = _.uniq(addedVesselConditions, \"conditionType\");\n const updatedConditions = JSON.parse(JSON.stringify([...this.syncNotification.conditions, ...addedVesselConditions]));\n Vue.set(this.syncNotification, \"conditions\", updatedConditions);\n this.updateConditions();\n } else {\n const conditionsWithoutUncheckedVessel = this.syncNotification.conditions.filter(c => c.vesselId !== vessel.id);\n Vue.set(this.syncNotification, \"conditions\", conditionsWithoutUncheckedVessel);\n }\n this.selectedVesselsNameString = this.syncNotification.vessels?.map(vessel => vessel.name).join(\", \") ?? \"\";\n }\n\n updateConditions(): void {\n let conditions: Condition[] = [];\n Object.keys(this.thresholds).forEach((key: string) => {\n const conditionType = key.split(\"Thresholds\")[0];\n if (!this.thresholds[key as keyof FleetThresholds].length) return;\n const targetKey = conditionType === \"ManualInputValueStale\" ? this.selectedManualInputVariable.type : this.getTargetKeyByConditionType(conditionType);\n conditions = [...conditions, ...this.conditionsConstructor(conditionType, targetKey)];\n });\n Vue.set(\n this.syncNotification,\n \"conditions\",\n this.isEditMode\n ? conditions.filter(con => {\n const vesselExistedConditions = this.syncNotification.conditions.filter(c => c.vesselId === con.vesselId);\n if (con.id === 0 && (con.conditionType === \"LogDataExpression\" || con.conditionType === \"LogDataMathExpression\") && con.conditionDetails != null) return true;\n else if (con.id === 0 && con.conditionType === \"LogDataExpression\" && vesselExistedConditions.some(c => c.vesselId === con.vesselId)) return false;\n else if (con.id === 0 && con.conditionType === \"LogDataMathExpression\" && vesselExistedConditions.some(c => c.vesselId === con.vesselId)) return false;\n else if (con.id === 0 && con.conditionType === \"LogDataMathExpression\" && conditions.some(c => c.vesselId === con.vesselId && c.conditionType === \"LogDataExpression\")) return false;\n return true;\n })\n : this.removeLogDataExpressionsDuplicates(conditions)\n );\n\n // remove conditions that contain disabled features\n if (!(this.syncNotification.vessels && this.syncNotification.vessels.length)) return;\n const foulingFeatureDisabled = this.syncNotification.vessels.filter(vessel => !vessel.features.some(feature => feature.name === \"Fouling\")).map(v => v.id);\n const diagnostiscFeatureDisabled = this.syncNotification.vessels.filter(vessel => !vessel.features.some(feature => feature.name === \"Diagnostics\")).map(v => v.id);\n const shapoliFeatureDisabled = this.syncNotification.vessels.filter(vessel => !vessel.features.some(feature => feature.name === \"Shapoli\")).map(v => v.id);\n const indexListWithDisabledFeature: number[] = [];\n this.syncNotification.conditions.forEach((c, index) => {\n if (foulingFeatureDisabled.includes(c.vesselId) && (c.conditionType.includes(\"SpeedLoss\") || c.conditionType.includes(\"FuelConsumption\"))) {\n indexListWithDisabledFeature.push(index);\n } else if (diagnostiscFeatureDisabled.includes(c.vesselId) && c.conditionType.includes(\"PerformanceStatus\")) {\n indexListWithDisabledFeature.push(index);\n } else if (shapoliFeatureDisabled.includes(c.vesselId) && c.conditionType === \"ShapoliPowerReserveBreach\") {\n indexListWithDisabledFeature.push(index);\n }\n });\n\n for (var i = indexListWithDisabledFeature.length - 1; i >= 0; i--) {\n this.syncNotification.conditions.splice(indexListWithDisabledFeature[i], 1);\n }\n }\n\n removeLogDataExpressionsDuplicates(conditions: Condition[]): Condition[] {\n const conditionList: Condition[] = JSON.parse(JSON.stringify(conditions));\n conditionList.forEach((c, index) => {\n const duplicationIndex = conditions.findIndex(\n (con, i) => con.vesselId === c.vesselId && index !== i && (con.conditionType === \"LogDataExpression\" || con.conditionType === \"LogDataMathExpression\")\n );\n if (duplicationIndex !== -1) {\n if (conditionList[duplicationIndex]?.content == null) conditionList.splice(duplicationIndex, 1);\n if (c.content == null && (c.conditionType === \"LogDataExpression\" || c.conditionType === \"LogDataMathExpression\")) conditionList.splice(index, 1);\n }\n });\n return conditionList;\n }\n\n setInitialData(): void {\n if (!this.syncNotification.conditions.length) return;\n this.step = this.conditionStep;\n const logDataMathThresholds = this.syncNotification.conditions.find(cond => cond.conditionType === \"LogDataMathExpression\")?.thresholds;\n const logDataThresholds = this.syncNotification.conditions.find(cond => cond.conditionType === \"LogDataExpression\")?.thresholds;\n this.speedLossPercentage = {\n warning: this.syncNotification.conditions.find(cond => cond.conditionType === \"SpeedLossWarning\")?.content ?? 0,\n critical: this.syncNotification.conditions.find(cond => cond.conditionType === \"SpeedLossCritical\")?.content ?? 0,\n };\n this.fuelConsumptionValue = {\n warning: this.syncNotification.conditions.find(cond => cond.conditionType === \"FuelConsumptionWarning\")?.content ?? 0,\n critical: this.syncNotification.conditions.find(cond => cond.conditionType === \"FuelConsumptionCritical\")?.content ?? 0,\n };\n this.thresholds = {\n VesselDataOverdueThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"VesselDataOverdue\")?.thresholds ?? [],\n LogDataExpressionThresholds: logDataThresholds ?? logDataMathThresholds ?? [],\n LogDataMathExpressionThresholds: logDataMathThresholds ?? logDataThresholds ?? [],\n ManualInputValueStaleThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"ManualInputValueStale\")?.thresholds ?? [],\n PerformanceStatusNotOkThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"PerformanceStatusNotOk\")?.thresholds ?? [],\n PerformanceStatusObserveThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"PerformanceStatusObserve\")?.thresholds ?? [],\n SpeedLossWarningThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"SpeedLossWarning\")?.thresholds ?? [],\n SpeedLossCriticalThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"SpeedLossCritical\")?.thresholds ?? [],\n FuelConsumptionWarningThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"FuelConsumptionWarning\")?.thresholds ?? [],\n FuelConsumptionCriticalThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"FuelConsumptionCritical\")?.thresholds ?? [],\n ShapoliPowerReserveBreachThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"ShapoliPowerReserveBreach\")?.thresholds ?? [],\n VoyageCompleteThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"VoyageComplete\")?.thresholds ?? [],\n VariableOfflineThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"VariableOffline\")?.thresholds ?? [],\n MissingSignalThresholds: this.syncNotification.conditions.find(cond => cond.conditionType === \"MissingSignal\")?.thresholds ?? [],\n };\n this.selectedVesselsNameString = this.syncNotification.vessels?.map(vessel => vessel.name).join(\", \") ?? \"\";\n\n // set channels\n if (this.isEditMode) {\n this.selectedChannels = this.commonSelectedEmails;\n this.selectedUsers = this.commonSelectedUsers;\n if (this.syncNotification?.vessels?.length) this.syncNotification.vessels.forEach(async v => await LogVariables.fetchAllLogVariablesByVesselId(v.id));\n\n // set ManualInputValueStale\n if (!this.manualInputStaleTypeConditions.length) return;\n this.selectedManualInputVariable = {\n text: this.manualInputStaleTypeConditions[0].targetKey === \"property:draft\" ? \"Draft\" : \"Fuel properties\",\n type: this.manualInputStaleTypeConditions[0].targetKey,\n };\n }\n }\n\n // @Hooks\n mounted(): void {\n this.setInitialData();\n this.notifyShaPoLiEvent = Boolean(this.syncNotification.conditions.filter(cond => cond.conditionType === \"ShapoliPowerReserveBreach\").length);\n this.notifyVoyageEvent = Boolean(this.syncNotification.conditions.filter(cond => cond.conditionType === \"VoyageComplete\").length);\n this.notifyVariableOfflineEvent = Boolean(this.syncNotification.conditions.filter(cond => cond.conditionType === \"VariableOffline\").length);\n this.notifyMissingSignalEvent = Boolean(this.syncNotification.conditions.filter(cond => cond.conditionType === \"MissingSignal\").length);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConditionStepper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConditionStepper.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VStepper.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VStepperStep from './VStepperStep'\nimport VStepperContent from './VStepperContent'\n\n// Mixins\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\nimport Proxyable from '../../mixins/proxyable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VSheet,\n RegistrableProvide('stepper'),\n Proxyable,\n)\n\ntype VStepperStepInstance = InstanceType\ntype VStepperContentInstance = InstanceType\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-stepper',\n\n provide (): object {\n return {\n stepClick: this.stepClick,\n isVertical: this.vertical,\n }\n },\n\n props: {\n altLabels: Boolean,\n nonLinear: Boolean,\n flat: Boolean,\n vertical: Boolean,\n },\n\n data () {\n const data: Dictionary = {\n isBooted: false,\n steps: [] as VStepperStepInstance[],\n content: [] as VStepperContentInstance[],\n isReverse: false,\n }\n\n data.internalLazyValue = this.value != null\n ? this.value\n : (data[0] || {}).step || 1\n\n return data\n },\n\n computed: {\n classes (): object {\n return {\n 'v-stepper--flat': this.flat,\n 'v-stepper--is-booted': this.isBooted,\n 'v-stepper--vertical': this.vertical,\n 'v-stepper--alt-labels': this.altLabels,\n 'v-stepper--non-linear': this.nonLinear,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n return {\n ...VSheet.options.computed.styles.call(this),\n }\n },\n },\n\n watch: {\n internalValue (val, oldVal) {\n this.isReverse = Number(val) < Number(oldVal)\n\n oldVal && (this.isBooted = true)\n\n this.updateView()\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$listeners.input) {\n breaking('@input', '@change', this)\n }\n },\n\n mounted () {\n this.updateView()\n },\n\n methods: {\n register (item: VStepperStepInstance | VStepperContentInstance) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps.push(item as VStepperStepInstance)\n } else if (item.$options.name === 'v-stepper-content') {\n (item as VStepperContentInstance).isVertical = this.vertical\n this.content.push(item as VStepperContentInstance)\n }\n },\n unregister (item: VStepperStepInstance | VStepperContentInstance) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps = this.steps.filter((i: VStepperStepInstance) => i !== item)\n } else if (item.$options.name === 'v-stepper-content') {\n (item as VStepperContentInstance).isVertical = this.vertical\n this.content = this.content.filter((i: VStepperContentInstance) => i !== item)\n }\n },\n stepClick (step: string | number) {\n this.$nextTick(() => (this.internalValue = step))\n },\n updateView () {\n for (let index = this.steps.length; --index >= 0;) {\n this.steps[index].toggle(this.internalValue as any)\n }\n for (let index = this.content.length; --index >= 0;) {\n this.content[index].toggle(this.internalValue as any, this.isReverse)\n }\n },\n },\n\n render (h): VNode {\n return h(this.tag, {\n staticClass: 'v-stepper',\n class: this.classes,\n style: this.styles,\n }, this.$slots.default)\n },\n})\n","// Components\nimport {\n VTabTransition,\n VTabReverseTransition,\n} from '../transitions'\n\n// Mixins\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, FunctionalComponentOptions, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n RegistrableInject('stepper', 'v-stepper-content', 'v-stepper')\n)\n\ninterface options extends InstanceType {\n $refs: {\n wrapper: HTMLElement\n }\n isVerticalProvided: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-stepper-content',\n\n inject: {\n isVerticalProvided: {\n from: 'isVertical',\n },\n },\n\n props: {\n step: {\n type: [Number, String],\n required: true,\n },\n },\n\n data () {\n return {\n height: 0 as number | string,\n // Must be null to allow\n // previous comparison\n isActive: null as boolean | null,\n isReverse: false,\n isVertical: this.isVerticalProvided,\n }\n },\n\n computed: {\n computedTransition (): FunctionalComponentOptions {\n // Fix for #8978\n const reverse = this.$vuetify.rtl ? !this.isReverse : this.isReverse\n\n return reverse\n ? VTabReverseTransition\n : VTabTransition\n },\n styles (): object {\n if (!this.isVertical) return {}\n\n return {\n height: convertToUnit(this.height),\n }\n },\n },\n\n watch: {\n isActive (current, previous) {\n // If active and the previous state\n // was null, is just booting up\n if (current && previous == null) {\n this.height = 'auto'\n return\n }\n\n if (!this.isVertical) return\n\n if (this.isActive) this.enter()\n else this.leave()\n },\n },\n\n mounted () {\n this.$refs.wrapper.addEventListener(\n 'transitionend',\n this.onTransition,\n false\n )\n this.stepper && this.stepper.register(this)\n },\n\n beforeDestroy () {\n this.$refs.wrapper.removeEventListener(\n 'transitionend',\n this.onTransition,\n false\n )\n this.stepper && this.stepper.unregister(this)\n },\n\n methods: {\n onTransition (e: TransitionEvent) {\n if (!this.isActive ||\n e.propertyName !== 'height'\n ) return\n\n this.height = 'auto'\n },\n enter () {\n let scrollHeight = 0\n\n // Render bug with height\n requestAnimationFrame(() => {\n scrollHeight = this.$refs.wrapper.scrollHeight\n })\n\n this.height = 0\n\n // Give the collapsing element time to collapse\n setTimeout(() => this.isActive && (this.height = (scrollHeight || 'auto')), 450)\n },\n leave () {\n this.height = this.$refs.wrapper.clientHeight\n setTimeout(() => (this.height = 0), 10)\n },\n toggle (step: string | number, reverse: boolean) {\n this.isActive = step.toString() === this.step.toString()\n this.isReverse = reverse\n },\n },\n\n render (h): VNode {\n const contentData = {\n staticClass: 'v-stepper__content',\n } as VNodeData\n const wrapperData = {\n staticClass: 'v-stepper__wrapper',\n style: this.styles,\n ref: 'wrapper',\n }\n\n if (!this.isVertical) {\n contentData.directives = [{\n name: 'show',\n value: this.isActive,\n }]\n }\n\n const wrapper = h('div', wrapperData, [this.$slots.default])\n const content = h('div', contentData, [wrapper])\n\n return h(this.computedTransition, {\n on: this.$listeners,\n }, [content])\n },\n})\n","// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ntype VuetifyStepperRuleValidator = () => string | boolean\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject('stepper', 'v-stepper-step', 'v-stepper')\n)\n\ninterface options extends InstanceType {\n stepClick: (step: number | string) => void\n}\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-stepper-step',\n\n directives: { ripple },\n\n inject: ['stepClick'],\n\n props: {\n color: {\n type: String,\n default: 'primary',\n },\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete',\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit',\n },\n errorIcon: {\n type: String,\n default: '$error',\n },\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n step: [Number, String],\n },\n\n data () {\n return {\n isActive: false,\n isInactive: true,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-stepper__step--active': this.isActive,\n 'v-stepper__step--editable': this.editable,\n 'v-stepper__step--inactive': this.isInactive,\n 'v-stepper__step--error error--text': this.hasError,\n 'v-stepper__step--complete': this.complete,\n }\n },\n hasError (): boolean {\n return this.rules.some(validate => validate() !== true)\n },\n },\n\n mounted () {\n this.stepper && this.stepper.register(this)\n },\n\n beforeDestroy () {\n this.stepper && this.stepper.unregister(this)\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n e.stopPropagation()\n\n this.$emit('click', e)\n\n if (this.editable) {\n this.stepClick(this.step)\n }\n },\n genIcon (icon: string) {\n return this.$createElement(VIcon, icon)\n },\n genLabel () {\n return this.$createElement('div', {\n staticClass: 'v-stepper__label',\n }, this.$slots.default)\n },\n genStep () {\n const color = (!this.hasError && (this.complete || this.isActive)) ? this.color : false\n\n return this.$createElement('span', this.setBackgroundColor(color, {\n staticClass: 'v-stepper__step__step',\n }), this.genStepContent())\n },\n genStepContent () {\n const children = []\n\n if (this.hasError) {\n children.push(this.genIcon(this.errorIcon))\n } else if (this.complete) {\n if (this.editable) {\n children.push(this.genIcon(this.editIcon))\n } else {\n children.push(this.genIcon(this.completeIcon))\n }\n } else {\n children.push(String(this.step))\n }\n\n return children\n },\n keyboardClick (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.space) {\n this.click(e)\n }\n },\n toggle (step: number | string) {\n this.isActive = step.toString() === this.step.toString()\n this.isInactive = Number(step) < Number(this.step)\n },\n },\n\n render (h): VNode {\n return h('div', {\n attrs: {\n tabindex: this.editable ? 0 : -1,\n },\n staticClass: 'v-stepper__step',\n class: this.classes,\n directives: [{\n name: 'ripple',\n value: this.editable,\n }],\n on: {\n click: this.click,\n keydown: this.keyboardClick,\n },\n }, [\n this.genStep(),\n this.genLabel(),\n ])\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\nimport VStepper from './VStepper'\nimport VStepperStep from './VStepperStep'\nimport VStepperContent from './VStepperContent'\n\nconst VStepperHeader = createSimpleFunctional('v-stepper__header')\nconst VStepperItems = createSimpleFunctional('v-stepper__items')\n\nexport {\n VStepper,\n VStepperContent,\n VStepperStep,\n VStepperHeader,\n VStepperItems,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VStepper,\n VStepperContent,\n VStepperStep,\n VStepperHeader,\n VStepperItems,\n },\n}\n","import { render, staticRenderFns } from \"./ConditionStepper.vue?vue&type=template&id=47a6751f&scoped=true&\"\nimport script from \"./ConditionStepper.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConditionStepper.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ConditionStepper.vue?vue&type=style&index=0&id=47a6751f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47a6751f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\nimport { VStepperStep } from 'vuetify/lib/components/VStepper';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCheckbox,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSelect,VSpacer,VStepper,VStepperContent,VStepperHeader,VStepperItems,VStepperStep,VSubheader,VTextField})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeveritySelector.vue?vue&type=style&index=0&id=b9f40b92&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notification-configuration mb-8\"},[_c('v-divider',{staticClass:\"mb-4\"}),_c('div',{staticClass:\"content d-flex\"},[_c('div',{staticClass:\"vessels\"},[_c('span',{staticClass:\"text-body-2 font-weight-bold d-flex mb-4\"},[_vm._v(\"Vessels:\")]),_c('v-list',{staticClass:\"vessel-list\",attrs:{\"tag\":\"ul\"}},[_vm._l((_vm.vessels),function(vessel){return [_c('v-list-item',{key:vessel.id,staticClass:\"d-block text-truncate\",attrs:{\"tag\":\"li\"}},[_vm._v(\" \"+_vm._s(vessel.name)+\" \")])]})],2)],1),_c('v-divider',{staticClass:\"mx-4\",attrs:{\"vertical\":\"\"}}),_c('div',{staticClass:\"events\"},[_c('span',{staticClass:\"text-body-2 font-weight-bold d-flex mb-4\"},[_vm._v(\"Events:\")]),_c('ul',{staticClass:\"px-4\"},[(_vm.isDataOverdueThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Vessel data is overdue\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.thresholds.VesselDataOverdueThresholds),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"for at least \"+_vm._s(_vm.durationValueFromSeconds(threshold.durationInSeconds))+\" \"+_vm._s(_vm.durationUnitFromSeconds(threshold.durationInSeconds))+\" \")])}),0)]):_vm._e(),(_vm.isPerformanceStatusObserveThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Vessel performance status is Observed\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.thresholds.PerformanceStatusObserveThresholds),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"for at least \"+_vm._s(_vm.durationValueFromSeconds(threshold.durationInSeconds))+\" \"+_vm._s(_vm.durationUnitFromSeconds(threshold.durationInSeconds))+\" \")])}),0)]):_vm._e(),(_vm.isFuelConsumptionThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Vessel Fuel Consumption\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.thresholds.FuelConsumptionWarningThresholds.concat( _vm.thresholds.FuelConsumptionCriticalThresholds)),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"If Fuel Consumption is Above \"+_vm._s(_vm.getFuelConsumptionValue(threshold.severity))+\" \")])}),0)]):_vm._e(),(_vm.isSpeedLossThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Vessel Speed Loss (%) reaches x% relative to baseline\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.thresholds.SpeedLossWarningThresholds.concat( _vm.thresholds.SpeedLossCriticalThresholds)),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"If Speed Loss is Above \"+_vm._s(_vm.getSpeedLossPercentage(threshold.severity))+\" % \")])}),0)]):_vm._e(),(_vm.isPerformanceStatusNotOkThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Vessel performance status is NotOk\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.thresholds.PerformanceStatusNotOkThresholds),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"for at least \"+_vm._s(_vm.durationValueFromSeconds(threshold.durationInSeconds))+\" \"+_vm._s(_vm.durationUnitFromSeconds(threshold.durationInSeconds))+\" \")])}),0)]):_vm._e(),(_vm.isLogDataExpressionThresholdsFilled || _vm.isLogDataMathExpressionThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Log Data Expressions\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.expressionThresholds),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"for at least \"+_vm._s(_vm.durationValueFromSeconds(threshold.durationInSeconds))+\" \"+_vm._s(_vm.durationUnitFromSeconds(threshold.durationInSeconds))+\" \")])}),0)]):_vm._e(),(_vm.isManualInputValueStaleThresholdsFilled)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Manual Input [\"+_vm._s(_vm.manualInputValueStaleOption)+\"]\")]),_c('div',{staticClass:\"severity-items d-flex pl-4\"},_vm._l((_vm.thresholds.ManualInputValueStaleThresholds),function(threshold,i){return _c('div',{key:i,staticClass:\"severity mr-4\"},[_c('span',{staticClass:\"mr-1\",class:_vm.severityColor(threshold.severity)},[_vm._v(_vm._s(threshold.severity))]),_vm._v(\"for at least \"+_vm._s(_vm.durationValueFromSeconds(threshold.durationInSeconds))+\" \"+_vm._s(_vm.durationUnitFromSeconds(threshold.durationInSeconds))+\" \")])}),0)]):_vm._e(),(_vm.shapoliEvent)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Shapoli Power Reserve Breach\")]),_vm._m(0)]):_vm._e(),(_vm.voyageEvent)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Voyage complete event\")]),_vm._m(1)]):_vm._e(),(_vm.variableOfflineEvent)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Variable offline event\")]),_vm._m(2)]):_vm._e(),(_vm.missingSignalEvent)?_c('li',{staticClass:\"d-block mb-4 pb-3\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Sensor missing signal event\")]),_vm._m(3)]):_vm._e()])]),_c('v-divider',{staticClass:\"mx-4\",attrs:{\"vertical\":\"\"}}),_c('div',{staticClass:\"channels mb-4\"},[_c('span',{staticClass:\"text-body-2 font-weight-bold d-flex mb-4\"},[_vm._v(\"Channels:\")]),(_vm.isEmailMappingApplied)?_c('div',{staticClass:\"email-mapping-applied\"},[_vm._v(\" You have applied \\\"Customize email mapping\\\".\"),_c('br'),_vm._v(\" To see the recipients go to \\\"Select Channels\\\" step \"),(_vm.group)?_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"color\":\"secondary\",\"elevation\":\"0\",\"text\":\"\",\"fab\":\"\",\"x-small\":\"\",\"dark\":\"\"},on:{\"click\":function($event){return _vm.openEditDialog()}}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-page-previous\")])],1)]}}],null,false,1081024539)},[_c('span',[_vm._v(\"Open \\\"Select Channels\\\" step\")])]):_vm._e()],1):_c('div',{staticClass:\"content pl-4\"},[_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Users\")]),(_vm.users.length)?_c('v-list',{staticClass:\"channels-list\",attrs:{\"tag\":\"ul\"}},[_vm._l((_vm.users),function(user,i){return [_c('v-list-item',{key:i,staticClass:\"d-block text-truncate\",attrs:{\"tag\":\"li\"}},[_vm._v(\" \"+_vm._s(user.name ? user.name : user.email)+\" \")])]})],2):_c('div',[(_vm.usersFromConditions.length)?_c('v-list',{staticClass:\"channels-list\",attrs:{\"tag\":\"ul\"}},[_vm._l((_vm.usersFromConditions),function(user,i){return [_c('v-list-item',{key:i,staticClass:\"d-block text-truncate\",attrs:{\"tag\":\"li\"}},[_vm._v(\" \"+_vm._s(user.name ? user.name : user.email)+\" \")])]})],2):_c('p',{staticClass:\"mb-4\"},[_vm._v(\"There are no selected users\")])],1),_c('span',{staticClass:\"d-block font-weight-bold mb-1\"},[_vm._v(\"Custom emails\")]),(_vm.emails.length)?_c('v-list',{staticClass:\"channels-list mb-4\",attrs:{\"tag\":\"ul\"}},[_vm._l((_vm.emails),function(channel,i){return [_c('v-list-item',{key:i,staticClass:\"d-block text-truncate\",attrs:{\"tag\":\"li\"}},[_vm._v(\" \"+_vm._s(channel.email)+\" \")])]})],2):_c('div',[(_vm.emailsFromConditions.length)?_c('v-list',{staticClass:\"channels-list\",attrs:{\"tag\":\"ul\"}},[_vm._l((_vm.emailsFromConditions),function(channel,i){return [_c('v-list-item',{key:i,staticClass:\"d-block text-truncate\",attrs:{\"tag\":\"li\"}},[_vm._v(\" \"+_vm._s(channel.email)+\" \")])]})],2):_c('p',{staticClass:\"mb-4\"},[_vm._v(\"There are no selected emails\")])],1)],1)])],1),_c('v-divider',{staticClass:\"mb-5 mt-4\"}),_vm._t(\"actions\")],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"severity-items d-flex pl-4\"},[_c('div',{staticClass:\"severity mr-4\"},[_vm._v(\" Notify EEXI ShaPoLi breach events \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"severity-items d-flex pl-4\"},[_c('div',{staticClass:\"severity mr-4\"},[_vm._v(\" Notify on voyage complete \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"severity-items d-flex pl-4\"},[_c('div',{staticClass:\"severity mr-4\"},[_vm._v(\" Notify on log variable offline \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"severity-items d-flex pl-4\"},[_c('div',{staticClass:\"severity mr-4\"},[_vm._v(\" Notify when sensor signal is missing \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport store from \"@/store\";\n// helpers\nimport durationHelper from \"Utilities/duration-helper\";\nimport _ from \"underscore\";\n// types\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { FleetThresholds, Channel, Condition, Threshold } from \"@/types/condition\";\nimport { UserProfile } from \"@/types/userProfile\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport UsersModule from \"@/store/clients/Users.module\";\n\nconst Users = getModule(UsersModule, store);\n\n@Component({\n components: {},\n})\nexport default class NotificationConfiguration extends Vue {\n @Prop({ default: () => [], required: true }) vessels!: ExtendedVessel[];\n @Prop({ default: () => [], required: true }) thresholds!: FleetThresholds;\n @Prop({ default: () => [], required: true }) emails!: Channel[];\n @Prop({ default: () => [], required: true }) users!: UserProfile[];\n @Prop() conditions!: Condition[];\n @Prop() group!: Condition[];\n @Prop({ default: false }) shapoliEvent!: boolean;\n @Prop({ default: false }) voyageEvent!: boolean;\n @Prop({ default: false }) variableOfflineEvent!: boolean;\n @Prop({ default: false }) missingSignalEvent!: boolean;\n\n // @Getters\n get getUsers(): UserProfile[] {\n return Users.users;\n }\n\n get expressionThresholds(): Threshold[] {\n return this.thresholds.LogDataExpressionThresholds.length ? this.thresholds.LogDataExpressionThresholds : this.thresholds.LogDataMathExpressionThresholds;\n }\n get isDataOverdueThresholdsFilled(): boolean {\n return Boolean(this.thresholds.VesselDataOverdueThresholds.length);\n }\n\n get isPerformanceStatusObserveThresholdsFilled(): boolean {\n return Boolean(this.thresholds.PerformanceStatusObserveThresholds.length);\n }\n\n get isPerformanceStatusNotOkThresholdsFilled(): boolean {\n return Boolean(this.thresholds.PerformanceStatusNotOkThresholds.length);\n }\n\n get isSpeedLossThresholdsFilled(): boolean {\n return Boolean(this.thresholds.SpeedLossWarningThresholds.length || this.thresholds.SpeedLossCriticalThresholds.length);\n }\n\n get isFuelConsumptionThresholdsFilled(): boolean {\n return Boolean(this.thresholds.FuelConsumptionWarningThresholds.length || this.thresholds.FuelConsumptionCriticalThresholds.length);\n }\n\n get isLogDataExpressionThresholdsFilled(): boolean {\n return Boolean(this.thresholds.LogDataExpressionThresholds.length);\n }\n\n get isLogDataMathExpressionThresholdsFilled(): boolean {\n return Boolean(this.thresholds.LogDataMathExpressionThresholds.length);\n }\n\n get isManualInputValueStaleThresholdsFilled(): boolean {\n return Boolean(this.thresholds.ManualInputValueStaleThresholds.length);\n }\n\n get manualInputValueStaleOption(): string | undefined {\n const conditions = this.group ? this.group : this.conditions;\n if (!conditions) return;\n const manualInputStaleConditions = conditions.filter(g => g.conditionType === \"ManualInputValueStale\");\n if (manualInputStaleConditions.length) return manualInputStaleConditions[0].targetKey === \"meta:fuel-property\" ? \"Fuel Properties\" : \"Draft\";\n }\n\n get isEmailMappingApplied(): boolean {\n const conditions = this.group ? this.group : this.conditions;\n if (!conditions) return false;\n let isApplied = false;\n if (!conditions) return isApplied;\n if (conditions.length > 1) {\n isApplied = conditions.some(cond => conditions[0].channels.sort().join(\",\") !== cond.channels.sort().join(\",\"));\n } else if (conditions.length === 1 && this.emails.length === 0) {\n isApplied = this.emails.length === 0 && conditions[0].channels.length > 0;\n }\n return isApplied;\n }\n\n get usersFromConditions(): UserProfile[] {\n const conditions = this.group ? this.group : this.conditions;\n const flatten = _.flatten(_.pluck(conditions, \"channels\"));\n const uniq = _.uniq(flatten, x => x.userId);\n return this.getUsers.filter(u => uniq.find(x => x.userId === u.id));\n }\n\n get emailsFromConditions(): Channel[] {\n const conditions = this.group ? this.group : this.conditions;\n const flatten = _.flatten(_.pluck(conditions, \"channels\")).filter(c => c.userId == null);\n const uniq = _.uniq(flatten, x => x.email);\n return uniq;\n }\n\n // @Methods\n openEditDialog(): void {\n this.$emit(\"openChannels\", this.group);\n }\n\n severityColor(severity: string): string {\n return severity === \"Critical\" ? \"error\" : \"warning\";\n }\n\n durationValueFromSeconds(seconds: number): string {\n return durationHelper.getDurationValueFromSeconds(seconds);\n }\n\n getSpeedLossPercentage(severity: string): string {\n const conditions = this.group ? this.group : this.conditions;\n if (!conditions) return \"\";\n const speedLossConditionBySeverity = conditions.find(c => c.targetKey.includes(\"SpeedLoss\") && c.thresholds[0].severity === severity);\n if (speedLossConditionBySeverity) return speedLossConditionBySeverity?.content ?? \"\";\n return \"\";\n }\n\n getFuelConsumptionValue(severity: string): string {\n const conditions = this.group ? this.group : this.conditions;\n if (!conditions) return \"\";\n const fuelConsumptionConditionBySeverity = conditions.find(c => c.targetKey.includes(\"FuelConsumption\") && c.thresholds[0].severity === severity);\n if (fuelConsumptionConditionBySeverity) return fuelConsumptionConditionBySeverity?.content ?? \"\";\n return \"\";\n }\n\n durationUnitFromSeconds(seconds: number): string {\n return durationHelper.getDurationUnitFromSeconds(seconds);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationConfiguration.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationConfiguration.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotificationConfiguration.vue?vue&type=template&id=3521fdcf&scoped=true&\"\nimport script from \"./NotificationConfiguration.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotificationConfiguration.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NotificationConfiguration.vue?vue&type=style&index=0&id=3521fdcf&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3521fdcf\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VDivider,VIcon,VList,VListItem,VTooltip})\n"],"sourceRoot":""}