{"version":3,"sources":["webpack:///./node_modules/vuetify-loader/lib/runtime/installDirectives.js","webpack:///../../../src/components/VSkeletonLoader/VSkeletonLoader.ts","webpack:///./node_modules/core-js/modules/es.array.flat-map.js","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///../../../src/components/VGrid/VLayout.ts","webpack:///./src/views/VesselOverview.vue?f949","webpack:///./src/components/knockoutWrappers/CompareVesselsWrapper.vue?6bbf","webpack:///./src/components/knockoutWrappers/CompareVesselsWrapper.vue","webpack:///./src/components/knockoutWrappers/CompareVesselsWrapper.vue?f736","webpack:///./src/components/knockoutWrappers/CompareVesselsWrapper.vue?9419","webpack:///./src/views/VesselOverview.vue","webpack:///./src/views/VesselOverview.vue?2e55","webpack:///./src/views/VesselOverview.vue?99e2","webpack:///./src/views/VesselOverview.vue?f8be"],"names":["module","exports","component","directives","options","extendOptions","i","mixins","Elevatable","Measurable","Themeable","extend","name","props","boilerplate","Boolean","loading","tile","transition","String","type","types","Object","default","computed","attrs","this","isLoading","role","$attrs","classes","themeClasses","elevationClasses","$scopedSlots","rootTypes","actions","article","avatar","button","card","chip","heading","image","paragraph","sentences","table","text","methods","genBone","children","$createElement","staticClass","genBones","bone","split","length","generator","genStructure","Array","from","map","indexOf","mapBones","push","genSkeleton","getSlot","on","afterEnter","resetStyles","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","leaveCancelled","bones","replace","el","_initialStyle","display","style","setProperty","render","h","$listeners","class","measurableStyles","undefined","$","flattenIntoArray","aCallable","toObject","lengthOfArrayLike","arraySpeciesCreate","target","proto","flatMap","callbackfn","A","O","sourceLen","arguments","addToUnscopables","Grid","_vm","_h","_c","_self","showCompare","selectedVessels","headers","tableData","areVesselsLoading","sortBy","sortDesc","itemsPerPage","updateSortBy","updateSortDesc","updateItemsPerPage","scopedSlots","_u","key","fn","areVesselGroupsLoading","vesselGroups","model","value","callback","$$v","selectedGroupIds","expression","search","proxy","areAllVesselsSelected","$event","selectAllRows","_l","header","ref","staticStyle","_v","_s","_g","domProps","performanceStatusTooltipText","item","index","_b","rawName","isDiagnosticsEnabled","vessel","includes","addOrRemoveSelectedVessel","getVesselUrl","getFormattedDate","lastExportDate","getPerformanceStatusIcon","performanceStatus","getPerformanceStatusText","setVesselIconRotation","course","isNotificationsEnabled","hasAnyOpenIncidents","_e","openWarningIncidents","openCriticalIncidents","isMapEnabled","mapKey","filteredVessels","staticRenderFns","CompareVesselsWrapper","instance","param","vessels","koHtmlAndViewModel","viewModel","template","$el","innerHTML","ko","applyBindings","cleanNode","dispose","Vue","__decorate","Prop","Component","Vessels","getModule","VesselsModule","store","Incidents","IncidentsModule","VesselGroups","VesselGroupsModule","VesselOverview","vesselCompareNavigateHomeBinding","sortable","width","vesselsLoadingState","extendedVessels","v","getOpenWarningIncidents","id","getOpenCriticalIncidents","tableRow","performance","openIncidents","selectedGroupsVesselIds","filter","g","vesselIds","toLowerCase","allOpenIncidents","localStorage","getItem","storedItemsPerPage","storedGroupIds","JSON","parse","getAll","events","navigatedHome","add","isAlreadySelected","splice","setItem","toString","stringify","urlHelper","date","dateHelper","getFormatedDateTimeString","statusCode","performanceStatusHelper","getPerformanceStatusImageSrc","transform","features","some","feature","vesselId","severity","count","warningIncident","conditionId","tableRowData","getVesselNotificationsUrl","Watch","components","Map","VBtn","VChip","VCol","VContainer","VDataTable","VIcon","VLayout","VRow","VSelect","VSimpleCheckbox","VSkeletonLoader","VSwitch","VTextField","VTooltip","Ripple"],"mappings":"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","file":"js/chunk-f29b6fec.a82c7ed5.js","sourcesContent":["// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installDirectives (component, directives) {\n var options = typeof component.exports === 'function'\n ? component.exports.extendOptions\n : component.options\n\n if (typeof component.exports === 'function') {\n options.directives = component.exports.options.directives\n }\n\n options.directives = options.directives || {}\n\n for (var i in directives) {\n options.directives[i] = options.directives[i] || directives[i]\n }\n}\n","// Styles\nimport './VSkeletonLoader.sass'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\nimport { PropValidator } from 'vue/types/options'\n\nexport interface HTMLSkeletonLoaderElement extends HTMLElement {\n _initialStyle?: {\n display: string | null\n transition: string\n }\n}\n\n/* @vue/component */\nexport default mixins(\n Elevatable,\n Measurable,\n Themeable,\n).extend({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n loading: Boolean,\n tile: Boolean,\n transition: String,\n type: String,\n types: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n },\n\n computed: {\n attrs (): object {\n if (!this.isLoading) return this.$attrs\n\n return !this.boilerplate ? {\n 'aria-busy': true,\n 'aria-live': 'polite',\n role: 'alert',\n ...this.$attrs,\n } : {}\n },\n classes (): object {\n return {\n 'v-skeleton-loader--boilerplate': this.boilerplate,\n 'v-skeleton-loader--is-loading': this.isLoading,\n 'v-skeleton-loader--tile': this.tile,\n ...this.themeClasses,\n ...this.elevationClasses,\n }\n },\n isLoading (): boolean {\n return !('default' in this.$scopedSlots) || this.loading\n },\n rootTypes (): Record {\n return {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, card-heading',\n 'card-avatar': 'image, list-item-avatar',\n 'card-heading': 'heading',\n chip: 'chip',\n 'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'heading, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'table-cell@6',\n 'table-cell': 'text',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n ...this.types,\n }\n },\n },\n\n methods: {\n genBone (text: string, children: VNode[]) {\n return this.$createElement('div', {\n staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`,\n }, children)\n },\n genBones (bone: string): VNode[] {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [string, number]\n const generator = () => this.genStructure(type)\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(generator)\n },\n // Fix type when this is merged\n // https://github.com/microsoft/TypeScript/pull/33050\n genStructure (type?: string): any {\n let children = []\n type = type || this.type || ''\n const bone = this.rootTypes[type] || ''\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.indexOf(',') > -1) return this.mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.indexOf('@') > -1) return this.genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.indexOf(',') > -1) children = this.mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.indexOf('@') > -1) children = this.genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(this.genStructure(bone))\n\n return [this.genBone(type, children)]\n },\n genSkeleton () {\n const children = []\n\n if (!this.isLoading) children.push(getSlot(this))\n else children.push(this.genStructure())\n\n /* istanbul ignore else */\n if (!this.transition) return children\n\n /* istanbul ignore next */\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n // Only show transition when\n // content has been loaded\n on: {\n afterEnter: this.resetStyles,\n beforeEnter: this.onBeforeEnter,\n beforeLeave: this.onBeforeLeave,\n leaveCancelled: this.resetStyles,\n },\n }, children)\n },\n mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(this.genStructure)\n },\n onBeforeEnter (el: HTMLSkeletonLoaderElement) {\n this.resetStyles(el)\n\n if (!this.isLoading) return\n\n el._initialStyle = {\n display: el.style.display,\n transition: el.style.transition,\n }\n\n el.style.setProperty('transition', 'none', 'important')\n },\n onBeforeLeave (el: HTMLSkeletonLoaderElement) {\n el.style.setProperty('display', 'none', 'important')\n },\n resetStyles (el: HTMLSkeletonLoaderElement) {\n if (!el._initialStyle) return\n\n el.style.display = el._initialStyle.display || ''\n el.style.transition = el._initialStyle.transition\n\n delete el._initialStyle\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-skeleton-loader',\n attrs: this.attrs,\n on: this.$listeners,\n class: this.classes,\n style: this.isLoading ? this.measurableStyles : undefined,\n }, [this.genSkeleton()])\n },\n})\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('layout')\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('default-container',[(!_vm.showCompare)?_c('div',[_c('v-data-table',{attrs:{\"dense\":\"\",\"item-key\":\"vessel.id\",\"show-select\":\"\",\"headers\":_vm.headers,\"items\":_vm.tableData,\"loading\":_vm.areVesselsLoading,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"items-per-page\":_vm.itemsPerPage,\"loading-text\":\"Loading... Please wait\"},on:{\"update:sort-by\":_vm.updateSortBy,\"update:sort-desc\":_vm.updateSortDesc,\"update:items-per-page\":_vm.updateItemsPerPage},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [(_vm.areVesselGroupsLoading || _vm.areVesselsLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item\"}}):_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-select',{attrs:{\"label\":\"Filter on groups\",\"items\":_vm.vesselGroups,\"item-text\":\"name\",\"item-value\":\"id\",\"multiple\":\"\",\"small-chips\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.selectedGroupIds),callback:function ($$v) {_vm.selectedGroupIds=$$v},expression:\"selectedGroupIds\"}}),_c('v-text-field',{staticClass:\"mx-4\",attrs:{\"label\":\"Search vessel\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)],1)]},proxy:true},{key:\"header.data-table-select\",fn:function(){return [_c('v-simple-checkbox',{attrs:{\"value\":_vm.areAllVesselsSelected},on:{\"input\":function($event){return _vm.selectAllRows()}}})]},proxy:true},_vm._l((_vm.headers),function(header){return {key:(\"header.\" + (header.value)),fn:function(){return [(header.text === 'Performance Status')?_c('v-tooltip',{key:header.text,attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"}},[_vm._v(_vm._s(header.text)+\" \")]),_c('v-icon',_vm._g({attrs:{\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}],null,true)},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.performanceStatusTooltipText)}})]):(header.text === 'Last Data Sent')?_c('v-tooltip',{key:header.text,attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"}},[_vm._v(_vm._s(header.text)+\" \")]),_c('v-icon',_vm._g({attrs:{\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}],null,true)},[_c('span',[_vm._v(\"Last sent data as reported by the vessel clock\")])]):_c('span',{key:header.text,staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"},domProps:{\"textContent\":_vm._s(header.text)}})]},proxy:true}}),{key:\"item\",fn:function(ref){\nvar item = ref.item;\nvar index = ref.index;\nreturn [_c('tr',{class:index % 2 === 0 ? 'even-row' : 'odd-row'},[_c('td',[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-simple-checkbox',_vm._g(_vm._b({directives:[{name:\"ripple\",rawName:\"v-ripple\"}],attrs:{\"disabled\":!_vm.isDiagnosticsEnabled(item.vessel),\"value\":_vm.selectedVessels.includes(item.vessel)},on:{\"input\":function($event){return _vm.addOrRemoveSelectedVessel(item.vessel)}}},'v-simple-checkbox',attrs,false),on))]}}],null,true)},[(!_vm.isDiagnosticsEnabled(item.vessel))?_c('span',[_vm._v(\"Can not select for comparison because diagnostics module is not activated for this vessel\")]):_c('span',[_vm._v(\"Select for comparison\")])])],1),_c('td',[_c('router-link',{attrs:{\"to\":_vm.getVesselUrl(item.vessel)}},[_vm._v(\" \"+_vm._s(item.vessel.name)+\" \")])],1),_c('td',[_vm._v(\" \"+_vm._s(_vm.getFormattedDate(item.vessel.lastExportDate))+\" \")]),_c('td',[_c('v-layout',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.getPerformanceStatusIcon(item.performanceStatus))}}),_c('span',{staticClass:\"mr-2\"},[_vm._v(_vm._s(_vm.getPerformanceStatusText(item.performanceStatus)))])]),_c('v-col',{staticClass:\"d-flex justify-end\",attrs:{\"cols\":\"2\"}},[_c('span',{staticClass:\"vesselIcon mr-2\",class:item.performanceStatus,style:(_vm.setVesselIconRotation(item.vessel.course))})])],1)],1)],1),_c('td',[(!_vm.isNotificationsEnabled(item.vessel))?_c('span',[_vm._v(\"Notifications module not activated\")]):_c('div',[(!_vm.hasAnyOpenIncidents(item))?_c('v-chip',{attrs:{\"to\":\"/MyNotifications\",\"color\":\"green\",\"small\":\"\",\"dark\":\"\"}},[_vm._v(\" 0 \")]):_vm._e(),(item.openWarningIncidents > 0)?_c('v-chip',{attrs:{\"to\":\"/MyNotifications\",\"color\":\"orange\",\"small\":\"\",\"dark\":\"\"}},[_vm._v(\" \"+_vm._s(item.openWarningIncidents)+\" \")]):_vm._e(),(item.openCriticalIncidents > 0)?_c('v-chip',{attrs:{\"to\":\"/MyNotifications\",\"color\":\"red\",\"small\":\"\",\"dark\":\"\"}},[_vm._v(\" \"+_vm._s(item.openCriticalIncidents)+\" \")]):_vm._e()],1)])])]}},{key:\"footer.prepend\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"mr-6\",attrs:{\"color\":\"primary\",\"disabled\":_vm.selectedVessels.length <= 0,\"loading\":_vm.areVesselsLoading},on:{\"click\":function($event){_vm.showCompare = !_vm.showCompare}}},'v-btn',attrs,false),on),[_vm._v(\" Compare \")])]}}],null,false,2742017235)},[_c('span',[_vm._v(\"Compare long trends for selected vessels\")])]),_c('v-switch',{attrs:{\"label\":\"Show map\",\"disabled\":_vm.areVesselsLoading,\"loading\":_vm.areVesselsLoading},model:{value:(_vm.isMapEnabled),callback:function ($$v) {_vm.isMapEnabled=$$v},expression:\"isMapEnabled\"}})]},proxy:true}],null,true)}),(!_vm.areVesselsLoading && _vm.isMapEnabled)?_c('Map',{key:_vm.mapKey,staticClass:\"mt-5\",staticStyle:{\"height\":\"600px\"},attrs:{\"vessels\":_vm.filteredVessels}}):_vm._e()],1):_c('CompareVesselsWrapper',{attrs:{\"vessels\":_vm.selectedVessels}})],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')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport ko from \"knockout\";\nimport koHtmlAndViewModel from \"Components/compare-vessels/compare-vessels\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n\n@Component\nexport default class CompareVesselsWrapper extends Vue {\n @Prop() vessels!: ExtendedVessel[];\n instance: any = {};\n\n mounted(): void {\n const param = {\n vessels: this.vessels,\n };\n\n this.instance = new koHtmlAndViewModel.viewModel(param);\n const { template } = koHtmlAndViewModel;\n this.$el.innerHTML = template;\n ko.applyBindings(this.instance, this.$el);\n }\n\n beforeDestroy(): void {\n ko.cleanNode(this.$el);\n this.instance.dispose();\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!./CompareVesselsWrapper.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!./CompareVesselsWrapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CompareVesselsWrapper.vue?vue&type=template&id=89516c8a&\"\nimport script from \"./CompareVesselsWrapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./CompareVesselsWrapper.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 null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Watch } from \"vue-property-decorator\";\nimport { getModule } from \"vuex-module-decorators\";\nimport store from \"@/store\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport IncidentsModule from \"@/store/clients/Incidents.module\";\nimport VesselGroupsModule from \"@/store/clients/VesselGroups.module\";\nimport { ExtendedVessel, Vessel } from \"@/types/Vessel\";\nimport { Incident } from \"@/types/Incident\";\nimport urlHelper from \"@/Scripts/utilities/url-helper\";\nimport { VesselGroup } from \"@/types/vesselGroup\";\nimport performanceStatusHelper from \"@/Scripts/utilities/performance-status-helper\";\nimport dateHelper from \"@/Scripts/utilities/date-helper\";\nimport Map from \"@/components/Map.vue\";\nimport CompareVesselsWrapper from \"@/components/knockoutWrappers/CompareVesselsWrapper.vue\";\nimport events from \"App/events\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Incidents = getModule(IncidentsModule, store);\nconst VesselGroups = getModule(VesselGroupsModule, store);\n\n@Component({\n components: {\n Map,\n CompareVesselsWrapper,\n },\n})\nexport default class VesselOverview extends Vue {\n selectedVessels: ExtendedVessel[] = [];\n vesselCompareNavigateHomeBinding: any = null;\n showCompare = false;\n sortBy = \"\";\n sortDesc = false;\n itemsPerPage = 10;\n isMapEnabled = false;\n search = \"\";\n areVesselGroupsLoading = true;\n selectedGroupIds: number[] = [];\n // Used to refresh map when filtered vessels change.\n mapKey = 0;\n headers = [\n {\n text: \"Vessel Name\",\n value: \"vessel.name\",\n sortable: true,\n width: \"25%\",\n },\n {\n text: \"Last Data Sent\",\n value: \"vessel.lastExportDate\",\n sortable: true,\n width: \"20%\",\n },\n {\n text: \"Performance Status\",\n value: \"performanceStatus\",\n sortable: true,\n width: \"30%\",\n },\n {\n text: \"Open Incidents\",\n value: \"openIncidents\",\n sortable: true,\n width: \"25%\",\n },\n ];\n\n performanceStatusTooltipText =\n `
${this.getPerformanceStatusIcon(\"Ok\")} [OK] The ship is performing within an accepted deviation from baseline level.
` +\n `${this.getPerformanceStatusIcon(\"Observe\")} [OBSERVE] The ship is performing ok, but the trend is moving towards an unaccepted deviation from baseline.
` +\n `${this.getPerformanceStatusIcon(\"NotOk\")} [NOT OK] The ship performance is poor compared to baseline. It is recommended to perform some action to improve performance.
` +\n `${this.getPerformanceStatusIcon(\"BenchMarking\")} [BENCHMARKING] The ship has just started a new trend period and is establishing its baseline level.
`;\n\n get areVesselsLoading(): boolean {\n return Vessels.vesselsLoadingState;\n }\n\n get tableData(): VesselOverviewTableRowData[] {\n const extendedVessels = this.filteredVessels;\n return extendedVessels.map(v => {\n const openWarningIncidents = this.getOpenWarningIncidents(v.id);\n const openCriticalIncidents = this.getOpenCriticalIncidents(v.id);\n const tableRow: VesselOverviewTableRowData = {\n vessel: v,\n performanceStatus: v.performance?.performanceStatus,\n openIncidents: this.isNotificationsEnabled(v) ? openWarningIncidents + openCriticalIncidents : -1,\n openWarningIncidents: openWarningIncidents,\n openCriticalIncidents: openCriticalIncidents,\n };\n return tableRow;\n });\n }\n\n get areAllVesselsSelected(): boolean {\n return this.selectedVessels.length === this.filteredVessels.length;\n }\n\n get filteredVessels(): ExtendedVessel[] {\n let filteredVessels = this.extendedVessels;\n if (this.selectedGroupIds.length > 0) {\n const selectedGroupsVesselIds = this.vesselGroups.filter(g => this.selectedGroupIds.includes(g.id)).flatMap(g => g.vesselIds);\n filteredVessels = filteredVessels.filter(v => selectedGroupsVesselIds?.includes(v.id));\n }\n\n return filteredVessels.filter(v => {\n return v.name.toLowerCase().includes(this.search.toLowerCase());\n });\n }\n\n get extendedVessels(): ExtendedVessel[] {\n return Vessels.extendedVessels;\n }\n\n get allOpenIncidents(): Incident[] {\n return Incidents.allOpenIncidents;\n }\n\n get vesselGroups(): VesselGroup[] {\n return VesselGroups.vesselGroups;\n }\n\n async created(): Promise {\n this.sortBy = localStorage.getItem(\"vesselOverview_sortBy\") ?? \"\";\n this.sortDesc = localStorage.getItem(\"vesselOverview_sortDesc\") === \"true\" ?? false;\n const storedItemsPerPage = localStorage.getItem(\"vesselOverview_itemsPerPage\") ?? \"10\";\n this.itemsPerPage = +storedItemsPerPage;\n this.isMapEnabled = localStorage.getItem(\"vesselOverview_isMapEnabled\") === \"true\" ?? false;\n const storedGroupIds = localStorage.getItem(\"vesselOverview_selectedGroupIds\");\n if (storedGroupIds) this.selectedGroupIds = JSON.parse(storedGroupIds);\n await VesselGroups.getAll();\n this.areVesselGroupsLoading = false;\n this.vesselCompareNavigateHomeBinding = events.navigatedHome.add(() => {\n this.selectedVessels = [];\n this.showCompare = false;\n });\n }\n\n @Watch(\"selectedGroupIds\")\n @Watch(\"search\")\n refreshDependentData(): void {\n // This will refresh the map with filtered vessels.\n this.mapKey += 1;\n // Removes selected vessels that aren't in the new filtered list.\n this.selectedVessels = this.selectedVessels.filter(v => this.filteredVessels.includes(v));\n }\n\n addOrRemoveSelectedVessel(vessel: ExtendedVessel): void {\n const isAlreadySelected = this.selectedVessels.includes(vessel);\n if (!isAlreadySelected) {\n this.selectedVessels.push(vessel);\n } else {\n const index = this.selectedVessels.indexOf(vessel);\n if (index > -1) this.selectedVessels.splice(index, 1);\n }\n }\n\n selectAllRows(): void {\n if (this.selectedVessels.length < this.filteredVessels.length) this.selectedVessels = this.filteredVessels;\n else this.selectedVessels = [];\n }\n\n updateSortBy(value: string): void {\n if (!value) value = \"\";\n localStorage.setItem(\"vesselOverview_sortBy\", value);\n this.sortBy = value;\n }\n\n updateSortDesc(value: boolean): void {\n if (!value) value = false;\n localStorage.setItem(\"vesselOverview_sortDesc\", value.toString());\n this.sortDesc = value;\n }\n\n updateItemsPerPage(value: number): void {\n if (!value) value = 10;\n localStorage.setItem(\"vesselOverview_itemsPerPage\", value.toString());\n this.itemsPerPage = value;\n }\n\n @Watch(\"isMapEnabled\")\n updateStoredIsMapEnabled(isMapEnabled: boolean): void {\n localStorage.setItem(\"vesselOverview_isMapEnabled\", isMapEnabled.toString());\n }\n\n @Watch(\"selectedGroupIds\")\n updateStoredGroupIds(selectedGroupIds: number[]): void {\n localStorage.setItem(\"vesselOverview_selectedGroupIds\", JSON.stringify(selectedGroupIds));\n }\n\n getVesselUrl(vessel: Vessel): string {\n return urlHelper.getVesselUrl(vessel);\n }\n\n getFormattedDate(date: string): string {\n return dateHelper.getFormatedDateTimeString(date);\n }\n\n getPerformanceStatusText(statusCode: string): string {\n return performanceStatusHelper.getPerformanceStatusText(statusCode);\n }\n\n getPerformanceStatusIcon(statusCode: string): string {\n return ``;\n }\n\n setVesselIconRotation(course: number): unknown {\n if (!course) return;\n return { transform: `rotate(${course}deg)` };\n }\n\n isNotificationsEnabled(vessel: ExtendedVessel): boolean {\n if (!vessel) return false;\n return vessel.features.some(feature => feature.name === \"Notifications\");\n }\n\n isDiagnosticsEnabled(vessel: ExtendedVessel): boolean {\n if (!vessel) return false;\n return vessel.features.some(feature => feature.name === \"Diagnostics\");\n }\n\n getOpenWarningIncidents(vesselId: number): number {\n const openWarningIncidents = this.allOpenIncidents.filter(i => i.vesselId === vesselId && i.severity === \"Warning\");\n let count = openWarningIncidents.length;\n for (const warningIncident of openWarningIncidents) {\n // If a condition has both an open warning and critical incident, we only want to show the critical one.\n if (this.allOpenIncidents.filter(i => i.conditionId === warningIncident.conditionId && i.severity === \"Critical\").length > 0) {\n count--;\n }\n }\n return count;\n }\n\n getOpenCriticalIncidents(vesselId: number): number {\n return this.allOpenIncidents.filter(i => i.vesselId === vesselId && i.severity === \"Critical\").length;\n }\n\n hasAnyOpenIncidents(tableRowData: VesselOverviewTableRowData): boolean {\n return tableRowData.openWarningIncidents > 0 || tableRowData.openCriticalIncidents > 0;\n }\n\n getNotificationsUrl(vessel: ExtendedVessel): string {\n return urlHelper.getVesselNotificationsUrl(vessel);\n }\n}\n\nexport interface VesselOverviewTableRowData {\n vessel: ExtendedVessel;\n performanceStatus: string | undefined;\n openIncidents: number;\n openWarningIncidents: number;\n openCriticalIncidents: number;\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!./VesselOverview.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!./VesselOverview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselOverview.vue?vue&type=template&id=4437c558&scoped=true&\"\nimport script from \"./VesselOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselOverview.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VesselOverview.vue?vue&type=style&index=0&id=4437c558&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 \"4437c558\",\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 { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSimpleCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VChip,VCol,VContainer,VDataTable,VIcon,VLayout,VRow,VSelect,VSimpleCheckbox,VSkeletonLoader,VSwitch,VTextField,VTooltip})\n\n\n/* vuetify-loader */\nimport installDirectives from \"!../../node_modules/vuetify-loader/lib/runtime/installDirectives.js\"\nimport Ripple from 'vuetify/lib/directives/ripple'\ninstallDirectives(component, {Ripple})\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!./VesselOverview.vue?vue&type=style&index=0&id=4437c558&lang=scss&scoped=true&\""],"sourceRoot":""}