{"version":3,"sources":["webpack:///./src/views/vessel/Shapoli.vue?588b","webpack:///./src/views/vessel/Shapoli.vue?927e","webpack:///./src/components/Shapoli/ShapoliContentLoader.vue?137e","webpack:///./src/components/Shapoli/ShapoliContentLoader.vue","webpack:///./src/components/Shapoli/ShapoliContentLoader.vue?10f4","webpack:///./src/components/Shapoli/ShapoliContentLoader.vue?5439","webpack:///./src/components/Shapoli/PowerLimitBreaches/index.vue?12fa","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesTable.vue?778b","webpack:///./src/components/Shapoli/PowerLimitBreaches/VTableData.ts","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesTable.vue","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesTable.vue?7bd6","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesTable.vue?5d2e","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesChart.vue?fda7","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesChart.vue","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesChart.vue?3428","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesChart.vue?ebca","webpack:///./src/components/Shapoli/PowerLimitBreaches/index.vue","webpack:///./src/components/Shapoli/PowerLimitBreaches/index.vue?a0cb","webpack:///./src/components/Shapoli/PowerLimitBreaches/index.vue?683e","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesActions.vue?f6ce","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesActions.vue","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesActions.vue?3f5f","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesActions.vue?4edf","webpack:///./src/components/Shapoli/Events.vue?ddd3","webpack:///./src/components/Shapoli/VTableDataEvents.ts","webpack:///./src/components/Shapoli/Events.vue","webpack:///./src/components/Shapoli/Events.vue?bed0","webpack:///./src/components/Shapoli/Events.vue?1240","webpack:///./src/views/vessel/Shapoli.vue","webpack:///./src/views/vessel/Shapoli.vue?1820","webpack:///./src/views/vessel/Shapoli.vue?3c24","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesTable.vue?d0e3","webpack:///./src/components/VesselInfo/VesselInfoContentCard.vue?6448","webpack:///./src/components/Shapoli/ShapoliContentLoader.vue?69ff","webpack:///./src/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesChart.vue?1397","webpack:///./src/components/Shapoli/PowerLimitBreaches/index.vue?4f3a","webpack:///./src/components/VesselInfo/VesselInfoContentCard.vue?235e","webpack:///./src/components/VesselInfo/VesselInfoContentCard.vue","webpack:///./src/components/VesselInfo/VesselInfoContentCard.vue?5895","webpack:///./src/components/VesselInfo/VesselInfoContentCard.vue?7829","webpack:///./src/components/Shapoli/Events.vue?88ff"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","scopedSlots","_u","key","fn","_v","proxy","_l","item","index","directives","name","rawName","value","Boolean","expression","_s","description","on","onYearChange","onDownloadBreachesYearReportClicked","breaches","events","hasEventsOnChart","shaftPowerData","convertAccordingToUnitType","vessel","shaftPowerLimit","unit","breachesDataLoader","onRowClicked","onChartZoom","model","callback","$$v","$event","type","indexOf","_k","keyCode","closeDialog","breachDetailsDialog","ref","_g","_b","breach","id","getDateTimeString","startDateUtc","endDateUtc","breachDuration","_e","breachLatLngHistory","breachLogVariablesAverage","staticStyle","averageValue","toFixed","caption","downloadBreachLogData","slot","staticRenderFns","ShapoliContentLoader","Vue","Component","component","VCol","VRow","VSkeletonLoader","onEventRowClicked","showEvents","onEventChartZoom","tableHeaders","tableRowItems","customSort","onRowClickEvent","header","domProps","text","reason","comment","headers","sortable","width","PowerLimitBreachesTable","tableRows","forEach","row","acknowledgedDateUtc","silencedDateUtc","dateHelper","getFormatedDateTimeString","startPosition","endPosition","reasonUpdatedUtcTimeStamp","push","$emit","items","sortBy","isDesc","sort","a","b","Number","replace","previous","getDateInMilliseconds","next","__decorate","Prop","required","components","VDataTable","VIcon","VTooltip","isShaftPowerDataEmtpy","ChartOptions","chartReady","PowerLimitBreachesChart","chartLoaded","val","reflowTimer","setTimeout","chart","update","reflow","data","Object","keys","length","ctx","zoomType","spacingTop","spacingBottom","spacingLeft","spacingRight","style","fontFamily","selection","event","target","yAxis","dataMax","plotOptions","series","fillColor","stops","HighchartsNoOverlimitBackgroundColor","HighchartsHasOverlimitBackgroundColor","Highcharts","options","chartSettings","title","legend","enabled","color","labels","format","plotLines","zIndex","yAxisMinMaxValues","xAxis","vesselEventPlotLines","vesselBreachesPlotLines","area","threshold","marker","showInLegend","dataLabels","linearGradient","gradientBackgroundColors","tooltip","formatter","$this","point","x","y","seriesData","credits","exporting","entries","map","timestamp","Date","parse","setOpacity","get","hasOverlimitedData","html","getPlotLineLabelsHtml","getVesselEventsOnSameDate","utcTimestamp","moment","utc","valueOf","label","rotation","useHTML","getBreachPlotLineLabelsHtml","some","el","eventTimestamp","filter","vesselEvent","vesselEventsOnSameDate","eventType","message","join","seriesIndex","yAxisValues","pairValues","min","Math","max","window","addEventListener","onWindowResize","clearTimeout","removeEventListener","PropSync","default","Watch","deep","Chart","PowerLimitBreaches","breachId","VProgressCircular","lastYears","onYearChangeEvent","selectedYear","loading","preventDefault","downloadBreachesYearReportEvent","PowerLimitBreachesActions","getFullYear","currentYear","yearsUntil2019","i","year","VBtn","VSelect","Events","Vessels","getModule","VesselsModule","store","Shapoli","ShapoliModule","LogVariables","LogVariablesModule","LogData","LogDataModule","ShapoliView","vesselShaftPowerLogVariables","loader","features","feature","currentVessel","currentVesselLogVariables","vesselType","deadweight","grossTonnage","maxContinuousRating","from","to","getDurationBetweenDates","momentDateObject","fromDate","startOf","toDate","endOf","find","fetchShapoliAveraged","vesselId","averageData","logVariable","vesselLogVariables","v","vesselLatitudeLogVariables","vesselLongitudeLogVariables","dates","selectedTimeInMinutes","minutesDiff","LogDataClient","findLogData","autoGranularity","lat","lng","getBreachLatLngHistory","resetSelection","fetchShaftPowerData","selectedYearAsFromToDates","latLogVariablesData","lngLogVariablesData","latLng","latitude","longitude","fetchData","toLowerCase","round","fetchVesselShaftPowerLogVariables","shaftsPowerLogData","values","shaftPowerLogVariable","averageDataObject","firstShaftValue","secondShaftValue","assign","logData","diff","getTime","abs","fetchBreaches","fetchEvents","refreshCurrentVesselLogVariables","ShapoliClient","downloadBreachesYearReport","date","featureEnabled","fetchLogVariables","VesselInfoContentCard","Map","FeatureNotAvailable","VCard","VCardActions","VCardText","VCardTitle","VCheckbox","VDialog","VSpacer","VSystemBar","VToolbar","_t"],"mappings":"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","file":"js/chunk-a68b255c.bee3b207.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!./Shapoli.vue?vue&type=style&index=0&id=dcaa673a&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.featureEnabled)?_c('div',[(_vm.loader)?_c('ShapoliContentLoader'):_c('div',{staticClass:\"shapoli-content\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"6\",\"sm\":\"12\"}},[_c('VesselInfoContentCard',{scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('p',[_vm._v(\"General information\")])]},proxy:true},{key:\"content\",fn:function(){return [_c('ul',{staticClass:\"pa-0\"},_vm._l((_vm.generalInfo),function(item,index){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(Boolean(item.value)),expression:\"Boolean(item.value)\"}],key:(\"key-\" + index)},[_vm._v(\" \"+_vm._s(item.description)+\": \"),_c('strong',[_vm._v(_vm._s(item.value))])])}),0)]},proxy:true}],null,false,2438837038)})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"12\",\"sm\":\"12\"}},[_c('v-card',{staticClass:\"power-limit-breaches\"},[_c('v-card-title',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\"}},[_vm._v(\" Power Limit Breaches \"),_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"error\"}},[_vm._v(\"mdi mdi-alpha-b-circle\")]),_c('v-spacer'),_c('PowerLimitBreachesActions',{on:{\"onYearChange\":_vm.onYearChange,\"onDownloadBreachesYearReportClicked\":_vm.onDownloadBreachesYearReportClicked}})],1),_c('v-card-text',[_c('PowerLimitBreaches',{attrs:{\"breaches\":_vm.breaches,\"events\":_vm.events,\"hasEventsOnChart\":_vm.hasEventsOnChart,\"shaftPowerData\":_vm.shaftPowerData,\"shaftPowerLimit\":_vm.convertAccordingToUnitType(_vm.vessel.shaftPowerLimit, _vm.unit.name),\"breachesDataLoader\":_vm.breachesDataLoader},on:{\"onRowClicked\":_vm.onRowClicked,\"onChartZoom\":_vm.onChartZoom}})],1)],1)],1)],1),_c('v-row',{staticClass:\"mb-5\"},[_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"12\",\"sm\":\"12\"}},[_c('v-card',{staticClass:\"power-limit-breaches\"},[_c('v-card-title',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\"}},[_vm._v(\" Events \"),_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"#2196F3\"}},[_vm._v(\"mdi mdi-alpha-e-circle\")]),_c('v-spacer'),_c('v-checkbox',{staticClass:\"ma-0 pa-0\",attrs:{\"label\":\"Show events on chart\",\"hide-details\":\"auto\"},model:{value:(_vm.hasEventsOnChart),callback:function ($$v) {_vm.hasEventsOnChart=$$v},expression:\"hasEventsOnChart\"}})],1),_c('v-card-text',[_c('Events',{attrs:{\"events\":_vm.events}})],1)],1)],1)],1),_c('v-dialog',{attrs:{\"retain-focus\":false,\"max-width\":\"1275\",\"content-class\":\"breach-details-dialog\",\"persistent\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.closeDialog()},\"click:outside\":function($event){return _vm.closeDialog()}},model:{value:(_vm.breachDetailsDialog),callback:function ($$v) {_vm.breachDetailsDialog=$$v},expression:\"breachDetailsDialog\"}},[_c('v-card',{attrs:{\"color\":\"blue-grey lighten-5\"}},[_c('v-toolbar',{attrs:{\"color\":\"accentDarker110\",\"dark\":\"\"}},[(_vm.breach)?_c('v-card-title',[_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"right\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('div',_vm._g(_vm._b({staticClass:\"breach-details-dialog__title d-flex flex-row align-center\"},'div',attrs,false),on),[_c('p',{staticClass:\"mb-0 font-weight-semibold\"},[_vm._v(\" ID: \"+_vm._s(_vm.breach.id)+\" \"),_c('span',{staticClass:\"mx-2\"},[_vm._v(\"|\")]),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(_vm._s(_vm.getDateTimeString(_vm.breach.startDateUtc))+\" - \"+_vm._s(_vm.getDateTimeString(_vm.breach.endDateUtc)))])]),_c('v-icon',{staticClass:\"ml-2\",attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-information-outline \")])],1)]}}],null,false,3343168369)},[_c('span',[_vm._v(\"Duration: \"+_vm._s(_vm.breachDuration))])])],1):_vm._e(),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.closeDialog()}}},[_c('v-icon',[_vm._v(\"close\")])],1)],1),_c('v-card',{staticClass:\"ma-5\"},[_c('v-card-text',{staticClass:\"d-flex flex-row justify-space-between\"},[_c('div',{staticClass:\"map-wrapper\"},[(_vm.breachLatLngHistory.length)?_c('Map',{staticClass:\"map\",attrs:{\"vessels\":[_vm.vessel],\"enableMinimalMode\":true,\"breachLatLng\":_vm.breachLatLngHistory}}):_vm._e()],1),(_vm.breachLogVariablesAverage.length)?_c('v-card',{staticClass:\"card-info\",attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-progress-clock\")]),_c('span',{staticStyle:{\"color\":\"#fff\"}},[_vm._v(\"Power Limit Breach Details\")])],1),_c('v-card-text',[_c('ul',_vm._l((_vm.breachDetails),function(item,index){return _c('li',{key:(\"key-\" + index)},[_vm._v(\" \"+_vm._s(item.name)+\" \"),_c('strong',[_vm._v(_vm._s(item.value))])])}),0)]),_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-chart-bar\")]),_c('span',{staticStyle:{\"color\":\"#fff\"}},[_vm._v(\"Power Limit Breach Data Average\")])],1),_c('v-card-text',[_c('ul',_vm._l((_vm.breachLogVariablesAverage),function(item,index){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(Boolean(item.averageValue)),expression:\"Boolean(item.averageValue)\"}],key:(\"key-\" + index)},[_vm._v(\" \"+_vm._s(item.name)+\" \"),_c('strong',[_vm._v(_vm._s(item.averageValue.toFixed(0))+\" \"+_vm._s(item.name === \"Shaft Power\" ? \"kW\" : item.unit.caption))])])}),0)]),_c('v-card-actions',[_c('v-spacer'),_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"top\":\"\",\"max-width\":\"40ch\"},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:\"font-weight-semibold\",attrs:{\"color\":\"accent\"},on:{\"click\":_vm.downloadBreachLogData}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-microsoft-excel\")]),_vm._v(\" Export Log Data \")],1)]}}],null,false,699979934)},[_c('span',[_vm._v(\"Download breach details data\")])])],1)],1):_c('v-skeleton-loader',{staticClass:\"breach-info-loader\",attrs:{\"type\":\"article\"}})],1)],1),_c('v-card-actions',{staticClass:\"pa-5\"},[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.closeDialog()}}},[_vm._v(\" Close \")])],1)],1)],1)],1)],1):_c('FeatureNotAvailable',[_c('template',{slot:\"text\"},[_c('p',[_vm._v(\" We are sorry, the \"),_c('b',[_vm._v(\"EEXI SHaPoLi\")]),_vm._v(\" module is not activated for \"+_vm._s(_vm.vessel.name)+\".\"),_c('br'),_vm._v(\" This module requires that the vessel is equipped with a \"),_c('b',[_vm._v(\"Delfini\")]),_vm._v(\" ship performance system. \")]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\"Please contact \"),_c('a',{attrs:{\"href\":\"mailto:sales@danelec.com\"}},[_vm._v(\"sales@danelec.com\")]),_vm._v(\" for more information about \"),_c('b',[_vm._v(\"EEXI SHaPoLi\")]),_vm._v(\" and \"),_c('b',[_vm._v(\"Delfini\")]),_vm._v(\".\")])])],2)],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',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"table-heading\"}}),_c('v-skeleton-loader',{staticStyle:{\"height\":\"250px\"},attrs:{\"type\":\"image\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-skeleton-loader',{staticStyle:{\"height\":\"350px\"},attrs:{\"type\":\"image\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"table-heading\"}}),_c('v-skeleton-loader',{staticStyle:{\"height\":\"450px\"},attrs:{\"type\":\"image\"}})],1)],1)],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\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component({})\nexport default class ShapoliContentLoader extends Vue {}\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!./ShapoliContentLoader.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!./ShapoliContentLoader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShapoliContentLoader.vue?vue&type=template&id=0a622098&scoped=true&\"\nimport script from \"./ShapoliContentLoader.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShapoliContentLoader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ShapoliContentLoader.vue?vue&type=style&index=0&id=0a622098&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 \"0a622098\",\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 { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VCol,VRow,VSkeletonLoader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('PowerLimitBreachesTable',{staticClass:\"mb-5\",attrs:{\"breaches\":_vm.breaches},on:{\"onEventRowClicked\":_vm.onEventRowClicked}}),_c('PowerLimitBreachesChart',{attrs:{\"events\":_vm.events,\"breaches\":_vm.breaches,\"showEvents\":_vm.showEvents,\"shaftPowerData\":_vm.shaftPowerData,\"shaftPowerLimit\":_vm.shaftPowerLimit},on:{\"onEventChartZoom\":_vm.onEventChartZoom}}),(_vm.breachesDataLoading)?_c('div',{staticClass:\"breaches-data-loader\"},[_c('VProgressCircular',{attrs:{\"size\":70,\"width\":7,\"color\":\"primary\",\"indeterminate\":\"\"}})],1):_vm._e()],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:\"power-limit-breaches-table\"},[_c('v-data-table',{attrs:{\"dense\":\"\",\"headers\":_vm.tableHeaders,\"items\":_vm.tableRowItems,\"items-per-page\":15,\"custom-sort\":_vm.customSort,\"height\":\"100%\"},on:{\"click:row\":_vm.onRowClickEvent},scopedSlots:_vm._u([_vm._l((_vm.tableHeaders),function(header){return {key:(\"header.\" + (header.value)),fn:function(ref){\nvar header = ref.header;\nreturn [_c('div',{staticClass:\"d-inline-flex flex-column\"},[_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"},domProps:{\"innerHTML\":_vm._s(header.text)}})])]}}}),{key:\"item.reason\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"color\":\"primary lighten-2\",\"max-width\":\"320\",\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({},on),[_vm._v(_vm._s(item.reason))]),(Boolean(item.reason) && item.reason !== 'Unspecified')?_c('v-icon',_vm._g({staticClass:\"ml-1\",attrs:{\"color\":\"primary lighten-3\",\"small\":\"\"}},on),[_vm._v(\" mdi-comment-eye-outline \")]):_vm._e()]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.comment))])])]}},{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6 mb-1\"},[_vm._v(\"There are no breaches for selected year.\")])])]},proxy:true}],null,true)})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nexport interface TableHeader {\r\n text: string | undefined;\r\n value: string;\r\n sortable?: boolean;\r\n width?: string;\r\n}\r\n\r\nexport interface TableRow {\r\n id: string;\r\n acknowledgedDateUtc: string | null;\r\n startDateUtc: string;\r\n startPosition: string;\r\n endDateUtc: string;\r\n endPosition: string;\r\n silencedDateUtc: string | null;\r\n reason: string | null;\r\n reasonUpdatedUtcTimeStamp: string | null;\r\n comment: string | null;\r\n}\r\nexport const headers: TableHeader[] = [\r\n {\r\n text: \"ID\",\r\n value: \"id\",\r\n sortable: true,\r\n width: \"50px\",\r\n },\r\n {\r\n text: \"Start Date (UTC)\",\r\n value: \"startDateUtc\",\r\n sortable: true,\r\n width: \"135px\",\r\n },\r\n {\r\n text: \"Start Position\",\r\n value: \"startPosition\",\r\n sortable: true,\r\n width: \"150px\",\r\n },\r\n {\r\n text: \"End Date (UTC)\",\r\n value: \"endDateUtc\",\r\n sortable: true,\r\n width: \"135px\",\r\n },\r\n {\r\n text: \"End Position\",\r\n value: \"endPosition\",\r\n sortable: true,\r\n width: \"150px\",\r\n },\r\n {\r\n text: \"Reason\",\r\n value: \"reason\",\r\n sortable: true,\r\n width: \"135px\",\r\n },\r\n {\r\n text: \"Reason updated\",\r\n value: \"reasonUpdatedUtcTimeStamp\",\r\n sortable: true,\r\n width: \"135px\",\r\n },\r\n];\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 dateHelper from \"Utilities/date-helper\";\n// types\nimport { TableHeader, TableRow, headers } from \"./VTableData\";\nimport { ShapoliBreach } from \"@/types/ShapoliBreach\";\n\n@Component({\n components: {},\n})\nexport default class PowerLimitBreachesTable extends Vue {\n @Prop({ required: true }) breaches!: ShapoliBreach[];\n tableHeaders: TableHeader[] = headers;\n\n get tableRowItems(): TableRow[] {\n if (!this.breaches) return [];\n\n const tableRows: TableRow[] = [];\n this.breaches.forEach((item: TableRow) => {\n const row: TableRow = {\n id: item.id,\n acknowledgedDateUtc: item.acknowledgedDateUtc,\n silencedDateUtc: item.silencedDateUtc,\n startDateUtc: item.startDateUtc ? dateHelper.getFormatedDateTimeString(item.startDateUtc) : \"\",\n startPosition: item.startPosition,\n endDateUtc: item.endDateUtc ? dateHelper.getFormatedDateTimeString(item.endDateUtc) : \"\",\n endPosition: item.endPosition,\n reason: item.reason ? item.reason : \"Unspecified\",\n reasonUpdatedUtcTimeStamp: item.reasonUpdatedUtcTimeStamp ? dateHelper.getFormatedDateTimeString(item.reasonUpdatedUtcTimeStamp) : \"\",\n comment: item.comment,\n };\n tableRows.push(row);\n });\n return tableRows;\n }\n\n onRowClickEvent(breach: ShapoliBreach): void {\n this.$emit(\"onEventRowClicked\", breach.id);\n }\n\n get isNoData(): boolean {\n return false;\n }\n\n customSort(items: [], sortBy: any, isDesc: any): [] {\n //do nothing when the sorting is reset\n if (!sortBy[0]) return items;\n\n //sort as numbers\n if (sortBy[0] === \"id\") {\n return items.sort((a: any, b: any) => {\n return isDesc[0]\n ? (Number(b[sortBy].replace(/\\D/g, \"\")) || 0) < (Number(a[sortBy].replace(/\\D/g, \"\")) || 0)\n ? -1\n : 1\n : (Number(a[sortBy].replace(/\\D/g, \"\")) || 0) < (Number(b[sortBy].replace(/\\D/g, \"\")) || 0)\n ? -1\n : 1;\n });\n }\n\n //sort as dates\n if (sortBy[0] === \"startDateUtc\" || sortBy[0] === \"endDateUtc\" || sortBy[0] === \"reasonUpdatedUtcTimeStamp\") {\n return items.sort((a: any, b: any) => {\n const previous = dateHelper.getDateInMilliseconds(a[sortBy]);\n const next = dateHelper.getDateInMilliseconds(b[sortBy]);\n\n return isDesc[0] ? ((next || 0) < (previous || 0) ? -1 : 1) : (previous || 0) < (next || 0) ? -1 : 1;\n });\n }\n\n //sort all other columns as strings\n return items.sort((a: any, b: any) => {\n if (isDesc[0]) return b[sortBy] < a[sortBy] ? -1 : 1;\n\n return a[sortBy] < b[sortBy] ? -1 : 1;\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!./PowerLimitBreachesTable.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!./PowerLimitBreachesTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PowerLimitBreachesTable.vue?vue&type=template&id=9a7466ca&scoped=true&\"\nimport script from \"./PowerLimitBreachesTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./PowerLimitBreachesTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PowerLimitBreachesTable.vue?vue&type=style&index=0&id=9a7466ca&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 \"9a7466ca\",\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 { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VDataTable,VIcon,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"power-limit-breaches-chart-container pa-2\"},[_c('Highcharts',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isShaftPowerDataEmtpy),expression:\"!isShaftPowerDataEmtpy\"}],ref:\"chart\",staticClass:\"power-limit-breaches-chart\",attrs:{\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":false,\"callback\":_vm.chartReady}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop, PropSync, Watch } from \"vue-property-decorator\";\n// libraries\nimport moment from \"moment\";\nimport { Chart } from \"highcharts-vue\";\nimport Highcharts from \"highcharts\";\nimport dateHelper from \"@/Scripts/utilities/date-helper\";\n// types\nimport { IPlotLine } from \"@/types/highcharts/plotLine\";\nimport { ShapoliEvent } from \"@/types/ShapoliEvent\";\nimport { ShapoliBreach } from \"@/types/ShapoliBreach\";\nimport { LogData } from \"@/types/logData\";\n\n@Component({\n components: {\n Highcharts: Chart,\n },\n})\nexport default class PowerLimitBreachesChart extends Vue {\n @Prop({ required: true }) breaches!: ShapoliBreach[];\n @Prop({ required: true }) events!: ShapoliEvent[];\n @Prop({ required: true }) shaftPowerData!: Partial;\n @Prop({ required: true }) shaftPowerLimit!: number;\n @PropSync(\"showEvents\", { type: Boolean, default: false }) hasEventsOnChart!: boolean;\n @Prop() resizing!: boolean;\n\n chart!: any;\n chartLoaded = false;\n\n // need to call reflow on the chart with some delay after widget resize, otherwise it will not resize properly\n reflowTimer!: number;\n @Watch(\"resizing\")\n resized(val: boolean): void {\n this.reflowTimer = setTimeout(() => {\n if (!val && this.chart) {\n this.chart.update(this.ChartOptions, true);\n this.chart.reflow();\n }\n }, 300);\n }\n\n @Watch(\"shaftPowerData\", { deep: true })\n onShaftPowerDataChanged(): void {\n if (!this.chart) return;\n this.chart.update(this.ChartOptions, true);\n }\n\n @Watch(\"hasEventsOnChart\")\n onShowEventsOnChartChanged(): void {\n setTimeout(() => {\n this.chart.update(this.ChartOptions, true);\n this.chart.reflow();\n }, 300);\n }\n\n get isShaftPowerDataEmtpy(): boolean {\n if (!this.shaftPowerData.data) return true;\n return Boolean(Object.keys(this.shaftPowerData.data).length === 0);\n }\n\n get unit(): { caption: string; name: string } {\n return this.shaftPowerData.unit ?? { caption: \"\", name: \"\" };\n }\n\n get chartSettings(): any {\n if (!this.chartLoaded) return {};\n const ctx = this;\n return {\n type: \"area\",\n zoomType: \"x\",\n spacingTop: 30,\n spacingBottom: 0,\n spacingLeft: 0,\n spacingRight: 0,\n style: { fontFamily: \"Helvetica Neue\" },\n events: {\n selection: function (event: any) {\n // update shaft power limit horizontal plot line\n setTimeout(() => {\n if (!ctx.shaftPowerLimit) return;\n if (ctx.shaftPowerLimit > event.target.yAxis[0].dataMax) {\n ctx.ChartOptions.plotOptions.series.fillColor.stops = ctx.HighchartsNoOverlimitBackgroundColor;\n } else {\n ctx.ChartOptions.plotOptions.series.fillColor.stops = ctx.HighchartsHasOverlimitBackgroundColor;\n }\n ctx.chart.update(ctx.ChartOptions, true);\n });\n\n // trigger onChartZoom event on zoom\n ctx.$emit(\"onEventChartZoom\", event);\n },\n },\n };\n }\n\n get ChartOptions(): any {\n if (!this.chartLoaded || !Highcharts) return {};\n const ctx = this;\n const options = {\n chart: ctx.chartSettings,\n title: { text: \"\" },\n legend: {\n enabled: false,\n },\n yAxis: {\n title: {\n text: \"\",\n style: { color: \"#331714\" },\n },\n labels: {\n format: `{value} ${ctx.unit.caption}`,\n style: { color: \"#331714\" },\n },\n plotLines: [\n {\n color: \"#ff5252\",\n value: this.shaftPowerLimit,\n width: 2,\n zIndex: 4,\n },\n ],\n ...this.yAxisMinMaxValues,\n },\n xAxis: {\n type: \"datetime\",\n labels: {\n style: { color: \"#331714\" },\n },\n plotLines: [...this.vesselEventPlotLines, ...this.vesselBreachesPlotLines],\n },\n plotOptions: {\n area: {\n threshold: 0,\n marker: {\n enabled: false,\n },\n },\n series: {\n showInLegend: true,\n dataLabels: { enabled: false },\n fillColor: {\n linearGradient: [0, 60, 0, 135],\n stops: this.gradientBackgroundColors,\n },\n },\n },\n tooltip: {\n formatter: function () {\n const $this: any = this;\n return `\n ${dateHelper.getFormatedDateTimeString($this.point.x, \"HH:mm:ss\")}
\n Shaft Power: ${Number($this.point.y.toFixed(2))} ${ctx.unit.caption}`;\n },\n },\n series: [\n {\n data: this.seriesData,\n },\n ],\n credits: { enabled: false },\n exporting: { enabled: false },\n };\n\n return options;\n }\n\n get seriesData(): any {\n if (!this.shaftPowerData.data) return;\n const series = Object.entries(this.shaftPowerData.data).map(([timestamp, value]) => {\n return [Date.parse(`${timestamp}Z`), value !== null ? Number(value) : null];\n });\n return series;\n }\n\n get HighchartsNoOverlimitBackgroundColor(): any[] {\n return [[1, Highcharts.color(\"#2d9b2d\").setOpacity(0.2).get(\"rgba\"), 20]];\n }\n\n get HighchartsHasOverlimitBackgroundColor(): any[] {\n return [\n [0, \"red\"],\n [1, Highcharts.color(\"#2d9b2d\").setOpacity(0.2).get(\"rgba\"), 20],\n ];\n }\n\n get gradientBackgroundColors(): any {\n if (!this.hasOverlimitedData) return this.HighchartsNoOverlimitBackgroundColor;\n return this.HighchartsHasOverlimitBackgroundColor;\n }\n\n get vesselEventPlotLines(): IPlotLine[] {\n if (!this.events || !this.hasEventsOnChart) return [];\n const plotLines: IPlotLine[] = [];\n\n this.events.forEach(event => {\n const html = this.getPlotLineLabelsHtml(this.getVesselEventsOnSameDate(event.utcTimestamp), event);\n plotLines.push({\n id: `plotline-${event.id}`,\n color: \"#2196F3\",\n value: moment.utc(event.utcTimestamp).valueOf(),\n width: 2,\n zIndex: 5,\n label: {\n rotation: 0,\n style: { color: \"#2196F3\" },\n text: html,\n useHTML: true,\n y: -15,\n x: -11,\n },\n });\n });\n return plotLines;\n }\n\n get vesselBreachesPlotLines(): IPlotLine[] {\n if (!this.breaches) return [];\n const plotLines: IPlotLine[] = [];\n\n this.breaches.forEach(breach => {\n plotLines.push(\n {\n id: `plotline-${breach.id}`,\n color: \"#ff5252\",\n value: moment.utc(breach.startDateUtc).valueOf(),\n width: 2,\n zIndex: 10,\n label: {\n rotation: 0,\n style: { color: \"#ff5252\" },\n text: this.getBreachPlotLineLabelsHtml(breach),\n useHTML: true,\n y: -15,\n x: -11,\n },\n },\n {\n id: `plotline-${breach.id}`,\n color: \"#ff5252\",\n value: moment.utc(breach.endDateUtc).valueOf(),\n width: 2,\n zIndex: 10,\n label: {\n rotation: 0,\n style: { color: \"#ff5252\" },\n text: this.getBreachPlotLineLabelsHtml(breach, \"end\"),\n useHTML: true,\n y: -15,\n x: -11,\n },\n }\n );\n });\n return plotLines;\n }\n\n get hasOverlimitedData(): boolean {\n if (this.shaftPowerLimit === 0 || this.shaftPowerLimit === null) return false;\n return this.seriesData.some((el: number[]) => el[1] > this.shaftPowerLimit);\n }\n\n getVesselEventsOnSameDate(eventTimestamp: string): any {\n return this.events.filter((vesselEvent: any) => vesselEvent.utcTimestamp === eventTimestamp);\n }\n\n getPlotLineLabelsHtml(vesselEventsOnSameDate: any, event: any): string {\n return `\n \n = 2 ? \"block\" : \"none\"}\"\n >\n ${vesselEventsOnSameDate.length}\n \n \n
\n ${vesselEventsOnSameDate\n .map(\n (vesselEvent: any, index: number) => `\n

\n = 2 ? \"block\" : \"none\"}\"\n >\n ${dateHelper.getFormatedDateTimeString(vesselEvent.utcTimestamp, \"HH:mm:ss\")} | ${vesselEvent.eventType}\n

\n

${vesselEvent.message}

\n
\n `\n )\n .join(\"\")}\n
\n `;\n }\n\n getBreachPlotLineLabelsHtml(breach: ShapoliBreach, timestamp = \"start\"): string {\n return `\n \n
\n

ID: ${breach.id}

\n

\n ${timestamp} date: ${\n timestamp === \"start\" ? dateHelper.getFormatedDateTimeString(breach.startDateUtc, \"HH:mm:ss\") : dateHelper.getFormatedDateTimeString(breach.endDateUtc, \"HH:mm:ss\")\n } | Reason: ${breach.reason}\n

\n

${breach.comment}

\n
\n `;\n }\n\n yAxisMinMaxValues(seriesIndex: number): { max: number; min: number } | null {\n if (!this.shaftPowerData.data) return null;\n const yAxisValues = Object.entries(this.shaftPowerData.data).map(([timestamp, pairValues]) => (pairValues[seriesIndex] !== null ? Number(pairValues[seriesIndex].toFixed(2)) : 0));\n if (yAxisValues === null) return yAxisValues;\n return {\n min: Math.min(...yAxisValues),\n max: Math.max(...yAxisValues),\n };\n }\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.chart.update(this.ChartOptions, true);\n this.chartLoaded = true;\n this.hasOverlimitedData;\n }\n\n onWindowResize(): void {\n setTimeout(() => {\n this.chart.reflow();\n }, 200);\n }\n\n created(): void {\n window.addEventListener(\"resize\", this.onWindowResize);\n }\n\n beforeDestroy(): void {\n if (this.reflowTimer) clearTimeout(this.reflowTimer);\n window.removeEventListener(\"resize\", this.onWindowResize);\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!./PowerLimitBreachesChart.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!./PowerLimitBreachesChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PowerLimitBreachesChart.vue?vue&type=template&id=8745aac2&scoped=true&\"\nimport script from \"./PowerLimitBreachesChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./PowerLimitBreachesChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PowerLimitBreachesChart.vue?vue&type=style&index=0&id=8745aac2&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 \"8745aac2\",\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\nimport { Component, Vue, Prop, PropSync } from \"vue-property-decorator\";\n// components\nimport PowerLimitBreachesTable from \"@/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesTable.vue\";\nimport PowerLimitBreachesChart from \"@/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesChart.vue\";\n// types\nimport { ShapoliEvent } from \"@/types/ShapoliEvent\";\nimport { ShapoliBreach } from \"@/types/ShapoliBreach\";\nimport { LogData } from \"@/types/logData\";\n\n@Component({\n components: {\n PowerLimitBreachesTable,\n PowerLimitBreachesChart,\n },\n})\nexport default class PowerLimitBreaches extends Vue {\n @Prop({ required: true }) events!: ShapoliEvent[];\n @Prop({ required: true }) breaches!: ShapoliBreach[];\n @Prop({ required: true }) shaftPowerData!: Partial;\n @Prop({ required: true }) shaftPowerLimit!: number;\n @PropSync(\"hasEventsOnChart\", { type: Boolean, default: false }) showEvents!: boolean;\n @PropSync(\"breachesDataLoader\", { type: Boolean, default: false }) breachesDataLoading!: boolean;\n\n onEventRowClicked(breachId: string): void {\n this.$emit(\"onRowClicked\", breachId);\n }\n\n onEventChartZoom(event: any): void {\n this.$emit(\"onChartZoom\", event);\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!./index.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!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2d5ce894&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2d5ce894&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 \"2d5ce894\",\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 { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VProgressCircular})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"power-limit-breaches__actions d-flex align-center\"},[_c('v-select',{staticClass:\"year-select mr-4\",staticStyle:{\"width\":\"80px\"},attrs:{\"items\":_vm.lastYears,\"label\":\"Year\"},on:{\"change\":_vm.onYearChangeEvent},model:{value:(_vm.selectedYear),callback:function ($$v) {_vm.selectedYear=$$v},expression:\"selectedYear\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"disabled\":_vm.loading,\"color\":\"accent\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadBreachesYearReportEvent()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-microsoft-excel\")]),_vm._v(\" Export Report \")],1)],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\nimport { Component, Vue } from \"vue-property-decorator\";\n@Component({\n components: {},\n})\nexport default class PowerLimitBreachesActions extends Vue {\n selectedYear: number = new Date().getFullYear();\n loading = false;\n\n get lastYears(): number[] {\n // return years until 2019 including\n const currentYear = new Date().getFullYear();\n const lastYears: number[] = [currentYear];\n const yearsUntil2019 = new Date().getFullYear() - 2019;\n for (let i = 1; i <= yearsUntil2019; i++) {\n lastYears.push(currentYear - i);\n }\n return lastYears;\n }\n\n onYearChangeEvent(year: number | null): void {\n this.$emit(\"onYearChange\", year);\n }\n\n downloadBreachesYearReportEvent(): void {\n this.$emit(\"onDownloadBreachesYearReportClicked\");\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!./PowerLimitBreachesActions.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!./PowerLimitBreachesActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PowerLimitBreachesActions.vue?vue&type=template&id=1d202b1b&\"\nimport script from \"./PowerLimitBreachesActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./PowerLimitBreachesActions.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/* 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 { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VBtn,VIcon,VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"power-limit-breaches-table\"},[_c('v-data-table',{attrs:{\"dense\":\"\",\"headers\":_vm.tableHeaders,\"items\":_vm.tableRowItems,\"items-per-page\":15,\"custom-sort\":_vm.customSort,\"height\":\"100%\"},scopedSlots:_vm._u([_vm._l((_vm.tableHeaders),function(header){return {key:(\"header.\" + (header.value)),fn:function(ref){\nvar header = ref.header;\nreturn [_c('div',{staticClass:\"d-inline-flex flex-column\"},[_c('span',{staticClass:\"primary--text\",staticStyle:{\"line-height\":\"1.5rem\",\"font-size\":\"0.9rem\"},domProps:{\"innerHTML\":_vm._s(header.text)}})])]}}}),(_vm.isNoData)?{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6\"},[_vm._v(\"There are no events for the selected year\")])])]},proxy:true}:null],null,true)})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nexport interface TableHeader {\r\n text: string | undefined;\r\n value: string;\r\n sortable?: boolean;\r\n width?: string;\r\n}\r\n\r\nexport interface TableRow {\r\n utcTimestamp: string;\r\n eventType: string;\r\n message: string;\r\n}\r\nexport const headers: TableHeader[] = [\r\n {\r\n text: \"Timestamp (UTC)\",\r\n value: \"utcTimestamp\",\r\n sortable: true,\r\n width: \"207px\",\r\n },\r\n {\r\n text: \"Type\",\r\n value: \"eventType\",\r\n sortable: true,\r\n width: \"207px\",\r\n },\r\n {\r\n text: \"Description\",\r\n value: \"message\",\r\n sortable: true,\r\n width: \"669px\",\r\n },\r\n];\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 dateHelper from \"Utilities/date-helper\";\nimport { ShapoliEvent } from \"@/types/ShapoliEvent\";\nimport { TableRow, headers } from \"./VTableDataEvents\";\n\n@Component({\n components: {},\n})\nexport default class Events extends Vue {\n @Prop({ required: true }) events!: ShapoliEvent[];\n tableHeaders = headers;\n\n get tableRowItems(): TableRow[] {\n if (!this.events?.length) return [];\n\n const tableRows: TableRow[] = [];\n this.events.forEach((item: TableRow) => {\n const row: TableRow = {\n utcTimestamp: item.utcTimestamp ? dateHelper.getFormatedDateTimeString(item.utcTimestamp) : \"\",\n eventType: item.eventType,\n message: item.message,\n };\n tableRows.push(row);\n });\n return tableRows;\n }\n\n get isNoData(): boolean {\n return Boolean(this.events && this.events.length === 0);\n }\n\n customSort(items: [], sortBy: any, isDesc: any): [] {\n //do nothing when the sorting is reset\n if (!sortBy[0]) return items;\n\n //sort as dates\n if (sortBy[0] === \"utcTimestamp\") {\n return items.sort((a: any, b: any) => {\n const previous = dateHelper.getDateInMilliseconds(a[sortBy]);\n const next = dateHelper.getDateInMilliseconds(b[sortBy]);\n\n return isDesc[0] ? ((next || 0) < (previous || 0) ? -1 : 1) : (previous || 0) < (next || 0) ? -1 : 1;\n });\n }\n\n //sort all other columns as strings\n return items.sort((a: any, b: any) => {\n if (isDesc[0]) return b[sortBy] < a[sortBy] ? -1 : 1;\n\n return a[sortBy] < b[sortBy] ? -1 : 1;\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!./Events.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!./Events.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Events.vue?vue&type=template&id=30583808&scoped=true&\"\nimport script from \"./Events.vue?vue&type=script&lang=ts&\"\nexport * from \"./Events.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Events.vue?vue&type=style&index=0&id=30583808&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 \"30583808\",\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 { VDataTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VDataTable})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\nimport dateHelper from \"Utilities/date-helper\";\n// types\nimport { ShapoliEvent } from \"@/types/ShapoliEvent\";\nimport { ShapoliBreach } from \"@/types/ShapoliBreach\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { LogData } from \"@/types/logData\";\n\n// components\nimport ShapoliContentLoader from \"@/components/Shapoli/ShapoliContentLoader.vue\";\nimport VesselInfoContentCard from \"@/components/VesselInfo/VesselInfoContentCard.vue\";\nimport PowerLimitBreaches from \"@/components/Shapoli/PowerLimitBreaches/index.vue\";\nimport PowerLimitBreachesActions from \"@/components/Shapoli/PowerLimitBreaches/PowerLimitBreachesActions.vue\";\nimport Events from \"@/components/Shapoli/Events.vue\";\nimport Map from \"@/components/Map.vue\";\nimport FeatureNotAvailable from \"@/components/FeatureNotAvailable.vue\";\n\n// clients\nimport LogDataClient from \"Clients/log-data-client\";\nimport ShapoliClient from \"Clients/shapoli-client\";\n\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport ShapoliModule from \"@/store/clients/Shapoli.module\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\nimport LogDataModule from \"@/store/clients/LogData.module\";\nimport { LogVariable } from \"@/types/logVariable\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst Shapoli = getModule(ShapoliModule, store);\nconst LogVariables = getModule(LogVariablesModule, store);\nconst LogData = getModule(LogDataModule, store);\n\n@Component({\n components: {\n ShapoliContentLoader,\n VesselInfoContentCard,\n PowerLimitBreaches,\n PowerLimitBreachesActions,\n Events,\n Map,\n FeatureNotAvailable,\n },\n})\nexport default class ShapoliView extends Vue {\n breachDetailsDialog = false;\n breach: any = null;\n vesselShaftPowerLogVariables: LogVariable[] = [];\n shaftPowerData: Partial = {};\n year: number = new Date().getFullYear(); // current year by default\n loader = true;\n breachesDataLoader = false;\n hasEventsOnChart = false;\n breachLogVariablesAverage: Partial[] = [];\n breachLatLngHistory: { longitude: number; latitude: number }[] = [];\n\n // @Getters\n get featureEnabled(): boolean {\n if (!this.vessel) return false;\n\n return this.vessel.features.some(feature => feature.name === \"Shapoli\");\n }\n\n get isLoading(): boolean {\n return Boolean(this.shaftPowerData);\n }\n\n get vessel(): ExtendedVessel | null {\n if (!Vessels.currentVessel) return null;\n return Vessels.currentVessel;\n }\n\n get vesselLogVariables(): LogVariable[] {\n return LogVariables.currentVesselLogVariables;\n }\n\n get events(): ShapoliEvent[] | null {\n return Shapoli.events;\n }\n\n get breaches(): ShapoliBreach[] | null {\n return Shapoli.breaches;\n }\n\n get unit(): { caption: string; name: string } {\n return this.shaftPowerData.unit ?? { caption: \"\", name: \"\" };\n }\n\n get generalInfo(): { description: string; value: number | string | undefined }[] | null {\n if (!this.vessel) return null;\n return [\n { description: \"Vessel type\", value: this.vessel?.vesselType?.name ?? \"N/A\" },\n { description: \"DWT\", value: this.vessel.deadweight ?? \"N/A\" },\n { description: \"Gross tonnage\", value: this.vessel.grossTonnage ?? \"N/A\" },\n { description: \"Unlimited Shaft Power\", value: `${this.vessel.maxContinuousRating} kW` },\n { description: \"Limited Shaft Power\", value: this.vessel.shaftPowerLimit ? `${this.vessel.shaftPowerLimit} kW` : \"No Data\" },\n ];\n }\n\n get breachDetails(): { name: string; value: string | undefined }[] | null {\n if (!this.breach) return null;\n return [\n { name: \"ID\", value: this.breach.id },\n { name: \"Start Date\", value: dateHelper.getFormatedDateTimeString(this.breach.startDateUtc) },\n { name: \"End Date\", value: dateHelper.getFormatedDateTimeString(this.breach.endDateUtc) },\n { name: \"Start Position\", value: this.breach.startPosition },\n { name: \"End Position\", value: this.breach.endPosition },\n { name: `Reason (${this.breach.reason ? this.breach.reason : \"Unspecified\"})`, value: this.breach.comment },\n ];\n }\n\n get breachDuration(): string {\n const from = moment(this.breach.endDateUtc, \"YYYY-MM-DDTHH:mm:ss.SSS\");\n const to = moment(this.breach.startDateUtc, \"YYYY-MM-DDTHH:mm:ss.SSS\");\n return dateHelper.getDurationBetweenDates(from, to);\n }\n\n get selectedYearAsFromToDates(): { fromDate: string; toDate: string } {\n const momentDateObject = moment().year(this.year);\n if (this.year !== new Date().getFullYear()) {\n return {\n fromDate: moment(momentDateObject).startOf(\"year\").format(\"YYYY-MM-DDTHH:mm:ss.SSS\"),\n toDate: moment(momentDateObject).endOf(\"year\").format(\"YYYY-MM-DDTHH:mm:ss.SSS\"),\n };\n }\n\n // YTD\n return {\n fromDate: moment(momentDateObject).startOf(\"year\").format(\"YYYY-MM-DDTHH:mm:ss.SSS\"),\n toDate: moment.utc().format(\"YYYY-MM-DDTHH:mm:ss.SSS\"),\n };\n }\n\n // @Methods\n async onRowClicked(breachId: string): Promise {\n if (!this.vessel) return;\n this.breachDetailsDialog = true;\n\n // set breach and fetch average data\n this.breach = this.breaches?.find(item => item.id === breachId);\n const averageData: any = await LogData.fetchShapoliAveraged({\n vesselId: this.vessel.id,\n fromDate: this.breach.startDateUtc,\n toDate: this.breach.endDateUtc,\n });\n for (const [key, value] of Object.entries(averageData)) {\n const logVariable: any = this.vesselLogVariables.find(v => v.id === Number(key));\n if (!logVariable) return;\n logVariable.averageValue = value;\n this.breachLogVariablesAverage.push(logVariable);\n }\n\n // set latitude and longitude log variables and fetch log data\n const vesselLatitudeLogVariables = this.vesselLogVariables.find(v => v.name === \"Latitude\");\n const vesselLongitudeLogVariables = this.vesselLogVariables.find(v => v.name === \"Longitude\");\n if (!vesselLatitudeLogVariables && !vesselLongitudeLogVariables) return;\n const dates = { fromDate: this.breach.startDateUtc, toDate: this.breach.endDateUtc };\n const selectedTimeInMinutes = this.minutesDiff(new Date(dates.fromDate), new Date(dates.toDate));\n const lat = await LogDataClient.findLogData(vesselLatitudeLogVariables?.id, dates.fromDate, dates.toDate, this.autoGranularity(selectedTimeInMinutes));\n const lng = await LogDataClient.findLogData(vesselLongitudeLogVariables?.id, dates.fromDate, dates.toDate, this.autoGranularity(selectedTimeInMinutes));\n this.breachLatLngHistory = this.getBreachLatLngHistory(lat.data, lng.data);\n }\n\n async onChartZoom(event: any): Promise {\n if (!this.vessel) return;\n if (event.resetSelection) {\n await this.fetchShaftPowerData(this.vessel.id, this.selectedYearAsFromToDates);\n } else {\n const dates = {\n fromDate: moment.utc(event.xAxis[0].min).format(\"YYYY-MM-DDTHH:mm:ss.SSS\"),\n toDate: moment.utc(event.xAxis[0].max).format(\"YYYY-MM-DDTHH:mm:ss.SSS\"),\n };\n const minutesDiff = this.minutesDiff(new Date(dates.fromDate), new Date(dates.toDate));\n if (minutesDiff >= 5) await this.fetchShaftPowerData(this.vessel.id, dates);\n }\n }\n\n getBreachLatLngHistory(latLogVariablesData: any, lngLogVariablesData: any): { longitude: number; latitude: number }[] {\n const latLng: { longitude: number; latitude: number }[] = [];\n Object.keys(latLogVariablesData).forEach(key => {\n latLng.push({ latitude: latLogVariablesData[key], longitude: lngLogVariablesData[key] });\n });\n return latLng;\n }\n\n async onYearChange(year: number): Promise {\n this.year = year;\n if (!this.vessel || !this.year) return;\n await this.fetchData();\n }\n\n convertAccordingToUnitType(value: number, unit: string): number {\n if (unit.toLowerCase() === \"mw\") return Math.round(value / 1000);\n return value;\n }\n\n async fetchShaftPowerData(vesselId: number, dates: { fromDate: string; toDate: string }): Promise {\n if (!this.vessel) return;\n this.vesselShaftPowerLogVariables = (await LogVariables.fetchVesselShaftPowerLogVariables(vesselId)) ?? [];\n const selectedTimeInMinutes = this.minutesDiff(new Date(dates.fromDate), new Date(dates.toDate));\n if (!this.vesselShaftPowerLogVariables.length) return;\n // check if it has more then 1 shaft and fetch log data for each\n if (this.vesselShaftPowerLogVariables.length > 1) {\n const shaftsPowerLogData: LogData[] = [];\n for (const shaftPowerLogVariable of this.vesselShaftPowerLogVariables.values()) {\n shaftsPowerLogData.push(await LogDataClient.findLogData(shaftPowerLogVariable.id, dates.fromDate, dates.toDate, this.autoGranularity(selectedTimeInMinutes)));\n }\n // calculate average data of two shafts\n const averageDataObject: any = {};\n Object.entries(shaftsPowerLogData[0].data).forEach(([timestamp, value]) => {\n const firstShaftValue = Number(value);\n const secondShaftValue = Number(shaftsPowerLogData[1].data[timestamp]);\n\n const averageValue = (firstShaftValue + secondShaftValue) / 2;\n averageDataObject[timestamp] = averageValue;\n });\n this.shaftPowerData = Object.assign({}, this.shaftPowerData, { data: averageDataObject, unit: shaftsPowerLogData[0].unit });\n } else {\n const logData = await LogDataClient.findLogData(this.vesselShaftPowerLogVariables[0].id, dates.fromDate, dates.toDate, this.autoGranularity(selectedTimeInMinutes));\n this.shaftPowerData = Object.assign({}, this.shaftPowerData, logData);\n }\n }\n\n autoGranularity(selectedTimeInMinutes: number): string {\n if (selectedTimeInMinutes <= 1440) {\n return \"Raw\";\n } else if (selectedTimeInMinutes <= 2880) {\n return \"Minute\";\n } else if (selectedTimeInMinutes <= 20160) {\n return \"QuarterHour\";\n } else if (selectedTimeInMinutes <= 129600) {\n return \"Hour\";\n }\n\n return \"Day\";\n }\n\n minutesDiff(fromDate: Date, toDate: Date): number {\n const diff = (fromDate.getTime() - toDate.getTime()) / 1000 / 60;\n\n return Math.abs(Math.round(diff));\n }\n\n async fetchData(): Promise {\n if (!this.vessel) return;\n this.breachesDataLoader = true;\n await this.fetchShaftPowerData(this.vessel.id, this.selectedYearAsFromToDates);\n await Shapoli.fetchBreaches({ vesselId: this.vessel.id, year: this.year });\n await Shapoli.fetchEvents({ vesselId: this.vessel.id, year: this.year });\n this.breachesDataLoader = false;\n }\n\n async fetchLogVariables(): Promise {\n if (!this.vessel?.id) return;\n await LogVariables.refreshCurrentVesselLogVariables(this.vessel.id);\n }\n\n downloadBreachLogData(): void {\n if (!this.vessel) return;\n const dates = {\n fromDate: this.breach.startDateUtc,\n toDate: this.breach.endDateUtc,\n };\n ShapoliClient.downloadBreachLogData(this.vessel.id, dates);\n }\n\n onDownloadBreachesYearReportClicked(): void {\n if (!this.vessel) return;\n ShapoliClient.downloadBreachesYearReport(this.vessel.id, this.year);\n }\n\n getDateTimeString(date: string): string {\n return dateHelper.getFormatedDateTimeString(date);\n }\n\n closeDialog(): void {\n this.breachDetailsDialog = false;\n this.breachLogVariablesAverage = [];\n this.breachLatLngHistory = [];\n }\n\n // @Hooks\n async created(): Promise {\n if (!this.vessel || !this.featureEnabled) return;\n await this.fetchData();\n await this.fetchLogVariables();\n this.loader = false;\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!./Shapoli.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!./Shapoli.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Shapoli.vue?vue&type=template&id=dcaa673a&scoped=true&\"\nimport script from \"./Shapoli.vue?vue&type=script&lang=ts&\"\nexport * from \"./Shapoli.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Shapoli.vue?vue&type=style&index=0&id=dcaa673a&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 \"dcaa673a\",\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 { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCheckbox,VCol,VDialog,VIcon,VRow,VSkeletonLoader,VSpacer,VSystemBar,VToolbar,VTooltip})\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!./PowerLimitBreachesTable.vue?vue&type=style&index=0&id=9a7466ca&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!./VesselInfoContentCard.vue?vue&type=style&index=0&id=544493ca&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!./ShapoliContentLoader.vue?vue&type=style&index=0&id=0a622098&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!./PowerLimitBreachesChart.vue?vue&type=style&index=0&id=8745aac2&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!./index.vue?vue&type=style&index=0&id=2d5ce894&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vessel-info__card\"},[_c('div',{staticClass:\"vessel-info__card__header px-3\"},[_vm._t(\"header\")],2),_c('div',{staticClass:\"vessel-info__card__content pl-8\"},[_vm._t(\"content\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\n\n@Component({\n components: {},\n})\nexport default class VesselInfoContentCard extends Vue {}\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!./VesselInfoContentCard.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!./VesselInfoContentCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselInfoContentCard.vue?vue&type=template&id=544493ca&scoped=true&\"\nimport script from \"./VesselInfoContentCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselInfoContentCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VesselInfoContentCard.vue?vue&type=style&index=0&id=544493ca&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 \"544493ca\",\n null\n \n)\n\nexport default component.exports","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!./Events.vue?vue&type=style&index=0&id=30583808&lang=scss&scoped=true&\""],"sourceRoot":""}