{"version":3,"sources":["webpack:///./src/components/DiagnosticCard.vue?cf51","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?45db","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?7652","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?d263","webpack:///./node_modules/highcharts/modules/no-data-to-display.js","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?99c4","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?a050","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?c085","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?2af4","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue?fe67","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue?4248","webpack:///./src/components/diagnosticsDetails/StatisticsCard.vue?bdb0","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue?3e3a","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue?e42f","webpack:///./src/components/diagnosticsDetails/LimitsCard.vue?ba8d","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?6699","webpack:///./src/components/diagnosticsDetails/ResultCard.vue","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?2515","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?59dc","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?b740","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?50e6","webpack:///./src/Scripts/clients/long-trend-export-client.js","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?127f","webpack:///./src/components/LoadingTextWave.vue?b4c3","webpack:///./src/types/highcharts/plotLine.ts","webpack:///./src/components/LoadingTextWave.vue?3c24","webpack:///src/components/LoadingTextWave.vue","webpack:///./src/components/LoadingTextWave.vue?640c","webpack:///./src/components/LoadingTextWave.vue?fc23","webpack:///./src/components/EditVesselEvent.vue?8bfc","webpack:///./src/components/EditVesselEvent.vue?5d91","webpack:///./src/components/EditVesselEvent.vue","webpack:///./src/components/EditVesselEvent.vue?308f","webpack:///./src/components/EditVesselEvent.vue?78b9","webpack:///./src/components/DiagnosticCard.vue?92df","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?de64","webpack:///./src/components/diagnostics/TrendEventBenefit.vue","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?d906","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?b565","webpack:///./src/components/DiagnosticCard.vue","webpack:///./src/components/DiagnosticCard.vue?c304","webpack:///./src/components/DiagnosticCard.vue?e02a","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?2215","webpack:///./src/components/diagnosticsDetails/GraphCard.vue","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?3bea","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?1ca1"],"names":["a","module","exports","b","Highcharts","e","d","hasOwnProperty","apply","_modules","f","getOptions","addEvent","g","extend","prototype","lang","noData","attr","zIndex","position","x","y","align","verticalAlign","style","fontWeight","fontSize","color","showNoData","c","this","options","renderer","noDataLabel","label","useHTML","add","styledMode","filterUserAttributes","css","getBBox","hideNoData","destroy","hasData","series","length","isInternal","loadingShown","render","_vm","_h","$createElement","_c","_self","attrs","on","$event","type","indexOf","_k","keyCode","key","close","arguments","model","value","callback","$$v","dialog","expression","staticClass","directives","name","rawName","_v","_s","title","loading","preventDefault","exportExcel","hasPreviousPeriod","previousPeriod","customBenchmarkPeriod","benchmarkPeriod","_e","hasNextPeriod","nextPeriod","updateData","customPeriod","staticRenderFns","scopedSlots","_u","fn","ref","_g","_b","domProps","tooltip","pointCount","outlierPointsCount","remainingPointsCount","benchmarkPoint","round","isManualBenchmark","_f","periodStart","periodEnd","periodMenu","updateBenchmarkPeriod","isBenchmarkFormValid","benchmarkPeriodRules","required","valid","points","submittingBenchmarkPeriod","stopPropagation","resetBenchmarkPeriod","isBenchmarking","redLine","yellowLine","Math","abs","yellowOffset","redOffset","LongTrendPeriod","getModule","LongTrendPeriodModule","store","BenchmarkCard","val","$emit","longTrendPeriod","longTrendPeriods","longTrendData","filteredLongTrendData","requireBenchmarkPoints","start","precision","multiplier","pow","Vue","__decorate","Prop","default","Watch","immediate","Component","component","VBtn","VCard","VCardText","VForm","VIcon","VList","VListItem","VListItemContent","VMenu","VSkeletonLoader","VSpacer","VSystemBar","VTextField","VTooltip","diffPerMonth","diffPerYear","correlation","standardDeviation","averageMean","trendFunction","StatisticsCard","statistics","_l","limit","i","$options","filters","dateDMY","exportedAt","minPower","windSpeed","minTime","limits","LimitsCard","trendLimits","endDate","performanceStatusVSBenchmark","draft","staticStyle","draftMenu","handleUpdateDraft","isDraftFormValid","draftRules","$data","$set","draftLoading","hasConsequenceResults","consequences","consequence","headerName","mcrDisplay","result","displayValue","proxy","diagnosticTypeName","yellowPrediction","redPrediction","Vessels","VesselsModule","ResultCard","_draft","consequencesLoading","getConsequences","meta","data","vesselId","updateVesselDraft","ConsequencesClient","find","currentVessel","id","longTrendId","startDate","then","Boolean","results","toLowerCase","trendline","end","isCurrent","showYellowPrediction","showRedPrediction","redLineReached","yellowLineReached","Date","getTime","now","verb","VAlert","VSimpleTable","Snackbar","SnackbarModule","DiagnosticsDetails","description","moment","utc","nextPeriodStartDate","valueOf","toISOString","nextPeriodEndDate","previousPeriodStartDate","previousPeriodEndDate","LongTrendExportClient","exportExcelPeriod","nextPeriodStart","nextPeriodEnd","periodMeta","prevPeriodStart","prevPeriodEnd","Promise","all","updateMeta","updateLongTrendPeriod","updateStatistics","updateTrendLimits","showSnackbar","text","clonedMeta","Object","assign","DELETE_DATA","components","GraphCard","VCol","VDialog","VDivider","VRow","VToolbar","VToolbarTitle","filter","net","fileDownload","DefaultVesselEventPlotline","width","rotation","_m","LoadingTextWave","cancel","submitting","handleSubmit","isFormValid","nameValidation","typeSelectValidation","trendEventTypes","selectTrendEventType","selectedType","dateValidation","timeStamp","dateMenu","VesselEvents","VesselEventsModule","EditVesselEvent","isNewEvent","source","typeId","trendEventTypeId","$nextTick","typeSelect","reset","trendEventType","trendEventTypeName","vesselEvent","setFieldData","resolve","reject","payload","timestamp","createEvent","editEvent","confirm","resetFieldData","setTimeout","split","Ref","PropSync","VCardActions","VCardTitle","VDatePicker","VRadio","VRadioGroup","VSelect","statusIcon","longTrend","descriptionLong","tooltipText","isLongTrendsLoading","showError","performanceStatusColor","performanceStatusIcon","chartOptions","benchmarkType","icon","useManualBenchmarkLevel","benchmarkLevelInputRules","resetManualBenchmarkLevel","manualBenchmarkLevel","_n","isBenchmarkLevelSettingsLoading","disableSaveBenchmarkLevelSettings","updateBenchmarkLevelSettings","trendEvents","fetchBenefitData","formatDateForDisplay","item","selectedTrendEvent","errorText","benefitData","benefitDate","prevEndValue","toFixed","nextBenchmarkValue","tableHeaders","tableItems","benefitText","TrendEventBenefits","BenefitsModule","TrendEventBenefit","isBenefitLoading","loadBenefitError","fetchBenefit","trendEventId","diagnosticTypesHelper","getBenefitText","diagnosticType","headers","push","forEach","items","MCR","date","format","VDataTable","HighchartsNoData","LongTrends","LongTrendsModule","DiagnosticCard","vessel","fetchVesselLongTrendPeriods","console","warn","vesselLongTrendByName","longTrendName","allEvents","DiagnosticTypesHelper","getHelpText","performanceStatus","eventTimestamp","vesselEvents","vesselEventsOnSameDate","event","eventIcon","map","index","join","plotLines","html","getPlotLineLabels","getVesselEventsOnSameDate","JSON","parse","stringify","eventColor","plotBands","period","from","to","className","events","click","getLongTrendPeriodMeta","mouseover","target","attributes","getNamedItem","mouseout","benchmarkingData","dataPoint","formatDatetimeToUTC","marker","enabled","valueDecimals","valueSuffix","enableMouseTracking","symbol","dashStyle","visible","firstLongTrendPeriod","lineWidth","time","useUTC","chart","zoomType","spacingRight","animation","height","spacingTop","credits","legend","yAxis","unitName","unitCaption","min","isRpmDiagnostic","max","tickPixelInterval","xAxis","vesselEventPlotLines","vesselEventPlotBands","labels","dataSeries","backgroundColor","borderWidth","plotOptions","exporting","filename","toString","updatedLongTrend","updateVesselLongTrend","updateCurrentVesselById","datetime","endsWith","eventType","Chart","VCheckbox","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VSheet","chartReady","addEventLabels","cmax","isRpm","cmin","setExtremes","infoEvents","addPlotLine","benchmarkZone","trialPoints","vesselName","marginTop","gridLineWidth","benchmarkingZone","resetZoomButton","update","yAxisLabel","gridLineColor","headerFormat","pointFormat","xDateFormat","radius","lineColor","fillColor","exportName","exportTitle","j","highcharts"],"mappings":"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","file":"js/chunk-737189b1.aed171d7.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!./DiagnosticCard.vue?vue&type=style&index=0&id=a49ba308&scoped=true&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=style&index=0&id=6d8a5ff8&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!./BenchmarkCard.vue?vue&type=style&index=0&id=5e4d8f9b&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!./DiagnosticsDetails.vue?vue&type=style&index=0&id=f1416762&lang=scss&scoped=true&\"","/*\n Highcharts JS v9.3.3 (2022-02-01)\n\n Plugin for displaying a message when there is no data visible in chart.\n\n (c) 2010-2021 Highsoft AS\n Author: Oystein Moseng\n\n License: www.highcharts.com/license\n*/\n'use strict';(function(a){\"object\"===typeof module&&module.exports?(a[\"default\"]=a,module.exports=a):\"function\"===typeof define&&define.amd?define(\"highcharts/modules/no-data-to-display\",[\"highcharts\"],function(b){a(b);a.Highcharts=b;return a}):a(\"undefined\"!==typeof Highcharts?Highcharts:void 0)})(function(a){function b(a,b,e,d){a.hasOwnProperty(b)||(a[b]=d.apply(null,e))}a=a?a._modules:{};b(a,\"Extensions/NoDataToDisplay.js\",[a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/Chart/Chart.js\"],a[\"Core/DefaultOptions.js\"],\na[\"Core/Utilities.js\"]],function(a,b,e,d){var f=e.getOptions;e=d.addEvent;var g=d.extend;d=b.prototype;f=f();g(f.lang,{noData:\"No data to display\"});f.noData={attr:{zIndex:1},position:{x:0,y:0,align:\"center\",verticalAlign:\"middle\"},style:{fontWeight:\"bold\",fontSize:\"12px\",color:\"#666666\"}};d.showNoData=function(b){var c=this.options;b=b||c&&c.lang.noData||\"\";c=c&&(c.noData||{});this.renderer&&(this.noDataLabel||(this.noDataLabel=this.renderer.label(b,0,0,void 0,void 0,void 0,c.useHTML,void 0,\"no-data\").add()),\nthis.styledMode||this.noDataLabel.attr(a.filterUserAttributes(c.attr||{})).css(c.style||{}),this.noDataLabel.align(g(this.noDataLabel.getBBox(),c.position||{}),!1,\"plotBox\"))};d.hideNoData=function(){this.noDataLabel&&(this.noDataLabel=this.noDataLabel.destroy())};d.hasData=function(){for(var a=this.series||[],b=a.length;b--;)if(a[b].hasData()&&!a[b].options.isInternal)return!0;return this.loadingShown};e(b,\"render\",function(){this.hasData()?this.hideNoData():this.showNoData()})});b(a,\"masters/modules/no-data-to-display.src.js\",\n[],function(){})});\n//# sourceMappingURL=no-data-to-display.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"1350px\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.close.apply(null, arguments)}},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accentDarker110\",\"dark\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.title),expression:\"title\"}]},[_vm._v(_vm._s(_vm.title))]),_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"text\":\"\",\"disabled\":_vm.loading},on:{\"click\":function($event){$event.preventDefault();return _vm.exportExcel()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-microsoft-excel\")]),_vm._v(\" Export to excel \")],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.close}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-divider'),_c('v-card-text',[_c('div',{staticClass:\"row mt-2\"},[_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":!_vm.hasPreviousPeriod || _vm.loading},on:{\"click\":function($event){$event.preventDefault();return _vm.previousPeriod()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-chevron-left\")]),_vm._v(\"Previous period \")],1),_c('v-spacer'),(_vm.customBenchmarkPeriod && !_vm.loading)?_c('v-alert',{attrs:{\"outlined\":\"\",\"type\":\"info\",\"dense\":\"\",\"border\":\"left\"}},[_vm._v(\"Provisional result based on a benchmark period of \"+_vm._s(_vm.benchmarkPeriod)+\" points\")]):_vm._e(),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":!_vm.hasNextPeriod || _vm.loading},on:{\"click\":function($event){$event.preventDefault();return _vm.nextPeriod()}}},[_vm._v(\" Next period \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"mt-5\"},[_c('GraphCard',{attrs:{\"loading\":_vm.loading}})],1)])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\",\"offset-lg\":\"1\"}},[_c('ResultCard',{attrs:{\"loading\":_vm.loading},on:{\"update\":_vm.updateData}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\"}},[_c('BenchmarkCard',{attrs:{\"loading\":_vm.loading},on:{\"customPeriod\":_vm.customPeriod}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\",\"offset-lg\":\"1\"}},[_c('StatisticsCard',{attrs:{\"loading\":_vm.loading}})],1),_c('v-col',{attrs:{\"cols\":\"6\",\"lg\":\"5\"}},[_c('LimitsCard',{attrs:{\"loading\":_vm.loading}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-gauge\")]),_c('span',[_vm._v(\"Benchmark\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, actions, list-item-three-line\"}}):_c('v-card-text',[(_vm.isBenchmarking)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.pointCount)+\" long trend \"+_vm._s(_vm.pointCount == 1 ? \"point\" : \"points\")+\" collected, where \"+_vm._s(_vm.outlierPointsCount)+\" \"+_vm._s(_vm.outlierPointsCount == 1 ? \"is an outlier\" : \"are outliers\")+\". \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.remainingPointsCount)+\" more good \"+_vm._s(_vm.remainingPointsCount == 1 ? \"point\" : \"points\")+\" required for completion of benchmark period.\")])]):_c('ul',[(_vm.benchmarkPoint != null)?_c('li',[_vm._v(\" Level: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.benchmarkPoint.y))+\"% compared to baseline\")])]):_vm._e(),(!_vm.isManualBenchmark)?_c('li',[_vm._v(\" Period: \"),_c('strong',[_vm._v(_vm._s(_vm.benchmarkPeriod)+\" points\"),_c('br'),_vm._v(_vm._s(_vm._f(\"dateDMY\")(_vm.periodStart))+\" to \"+_vm._s(_vm._f(\"dateDMY\")(_vm.periodEnd)))])]):_c('li',[_vm._v(\" Period: \"),_c('strong',[_vm._v(\"Manual benchmark level\")])])]),(!_vm.isManualBenchmark)?_c('v-menu',{attrs:{\"top\":\"\",\"offset-y\":true,\"close-on-content-click\":false},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:{\"text\":\"\",\"outlined\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Edit benchmark period \")])]}}],null,false,3899671836),model:{value:(_vm.periodMenu),callback:function ($$v) {_vm.periodMenu=$$v},expression:\"periodMenu\"}},[_c('v-list',[_c('v-list-item',[_c('v-list-item-content',[_c('v-form',{attrs:{\"id\":\"update-benchmark-period\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateBenchmarkPeriod.apply(null, arguments)}},model:{value:(_vm.isBenchmarkFormValid),callback:function ($$v) {_vm.isBenchmarkFormValid=$$v},expression:\"isBenchmarkFormValid\"}},[_c('div',{staticClass:\"mt-2 edit-benchmark-row\"},[_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"30\",\"max\":\"1000\",\"label\":\"Points\",\"rules\":[_vm.benchmarkPeriodRules.required, _vm.benchmarkPeriodRules.valid]},model:{value:(_vm.points),callback:function ($$v) {_vm.points=$$v},expression:\"points\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"type\":\"submit\",\"form\":\"update-benchmark-period\",\"color\":\"accent\",\"loading\":_vm.submittingBenchmarkPeriod,\"disabled\":!_vm.isBenchmarkFormValid}},[_vm._v(\"Update\")]),_c('v-btn',{staticClass:\"font-weight-semibold\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.resetBenchmarkPeriod.apply(null, arguments)}}},[_vm._v(\" Reset \")])],1)])],1)],1)],1)],1):_vm._e(),(!_vm.isBenchmarking && (_vm.redLine !=null) && (_vm.yellowLine !=null))?_c('ul',{staticClass:\"color-square-table\"},[_c('li',[_c('span',{staticClass:\"color-square green\"}),_vm._v(\" Green zone: \"),_c('strong',[_vm._v(_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"up to\" : \"down to\")+\" \"+_vm._s(Math.abs(_vm.round(_vm.yellowOffset)))+\"% \"+_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"above\" : \"below\")+\" benchmark level (\"+_vm._s(_vm.round(_vm.yellowLine.y))+\"%)\")])]),_c('li',[_c('span',{staticClass:\"color-square yellow\"}),_vm._v(\" Yellow zone: \"),_c('strong',[_vm._v(_vm._s(Math.abs(_vm.round(_vm.yellowOffset)))+\"% - \"+_vm._s(Math.abs(_vm.round(_vm.redOffset)))+\"% \"+_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"above\" : \"below\")+\" benchmark level (\"+_vm._s(_vm.round( _vm.yellowLine.y))+\"% to \"+_vm._s(_vm.round( _vm.redLine.y))+\"%)\")])]),_c('li',[_c('span',{staticClass:\"color-square red\"}),_vm._v(\" Red zone: \"),_c('strong',[_vm._v(\"more than \"+_vm._s(Math.abs(_vm.round(_vm.redOffset)))+\"% \"+_vm._s(_vm.redLine.y > _vm.yellowLine.y ? \"above\" : \"below\")+\" benchmark level (\"+_vm._s(_vm.round( _vm.redLine.y))+\"%)\")])])]):_vm._e()],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Prop, Watch, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport { GraphPoint } from \"@/types/graphPoint\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\n\n@Component\nexport default class BenchmarkCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n points = 0;\n periodMenu = false;\n isBenchmarkFormValid = true;\n submittingBenchmarkPeriod = false;\n\n benchmarkPeriodRules = {\n required: (value: number) => !!value || \"Value required\",\n valid: (value: number) => (value >= 30 && value <= 1000) || \"Value must be between 30 and 1000\",\n };\n\n tooltip =\n \"The Baseline is the value, derived from the design or shop-test data, which shows the original expected performance of the vessel. It is used as the zero level when displaying actual performance. The Benchmark Period is the period, immediately after a trend event, during which data is collected to provide an initial performance level so that any subsequent changes in performance can be evaluated.\";\n\n @Watch(\"loading\", { immediate: true })\n onLoaded(val: boolean): void {\n if (!val) {\n if (this.benchmarkPeriod) {\n this.points = this.benchmarkPeriod;\n }\n }\n }\n\n updateBenchmarkPeriod(): void {\n this.$emit(\"customPeriod\", this.points);\n this.periodMenu = false;\n }\n\n resetBenchmarkPeriod(): void {\n this.$emit(\"customPeriod\", -1);\n this.periodMenu = false;\n }\n\n get longTrendPeriods(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriods?.isBenchmarking;\n }\n get isManualBenchmark(): boolean | undefined {\n return this.longTrendPeriods?.isManualBenchmark;\n }\n get benchmarkPeriod(): number | undefined {\n return this.longTrendPeriods?.benchmarkPeriod;\n }\n get benchmarkPoint(): GraphPoint | undefined {\n return this.longTrendPeriods?.benchmarkPoint;\n }\n get pointCount(): number | undefined {\n return this.longTrendPeriods?.longTrendData.length;\n }\n get outlierPointsCount(): number | undefined {\n if (this.pointCount && this.longTrendPeriods) {\n return this.pointCount - this.longTrendPeriods.filteredLongTrendData.length;\n }\n }\n get requireBenchmarkPoints(): number | undefined {\n return this.isManualBenchmark ? 2 : this.longTrendPeriods?.benchmarkPeriod;\n }\n get remainingPointsCount(): number | undefined {\n if (this.requireBenchmarkPoints && this.longTrendPeriods) {\n return this.requireBenchmarkPoints - this.longTrendPeriods.filteredLongTrendData.length;\n }\n }\n get periodStart(): string | undefined {\n return this.longTrendPeriods?.start;\n }\n get periodEnd(): string | undefined {\n return this.benchmarkPoint?.x;\n }\n get yellowLine(): GraphPoint | undefined {\n return this.longTrendPeriods?.yellowLine;\n }\n get yellowOffset(): number | undefined {\n return this.longTrendPeriods?.yellowOffset;\n }\n get redLine(): GraphPoint | undefined {\n return this.longTrendPeriods?.redLine;\n }\n get redOffset(): number | undefined {\n return this.longTrendPeriods?.redOffset;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\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!./BenchmarkCard.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!./BenchmarkCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BenchmarkCard.vue?vue&type=template&id=5e4d8f9b&scoped=true&\"\nimport script from \"./BenchmarkCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./BenchmarkCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BenchmarkCard.vue?vue&type=style&index=0&id=5e4d8f9b&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 \"5e4d8f9b\",\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 { VCardText } from 'vuetify/lib/components/VCard';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VForm,VIcon,VList,VListItem,VListItemContent,VMenu,VSkeletonLoader,VSpacer,VSystemBar,VTextField,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-chart-bar\")]),_c('span',[_vm._v(\"Statistics\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[(!_vm.isBenchmarking)?_c('ul',[_c('li',[_vm._v(\"Number of points: \"),_c('strong',[_vm._v(_vm._s(_vm.pointCount)+\" Long trend points\")])]),_c('li',[_vm._v(\"Loss per month: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.diffPerMonth, 2))+\"%\")])]),_c('li',[_vm._v(\"Loss per year: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.diffPerYear, 2))+\"%\")])]),_c('li',[_vm._v(\"Correlation: \"),_c('strong',[_vm._v(_vm._s(_vm.round(_vm.correlation, 2)))])]),_c('li',[_vm._v(\"Standard Deviation:\"),_c('strong',[_vm._v(\" +/-\"+_vm._s(_vm.round(_vm.standardDeviation, 2))+\"%\")])]),_c('li',[_vm._v(\"Average(Mean): \"),_c('strong',[_vm._v(_vm._s(_vm.averageMean ? _vm.round(_vm.averageMean, 2) : 0)+\"% deviation from benchmark\")])]),_c('li',[_vm._v(\"Trend Function: \"),_c('strong',[_vm._v(_vm._s(_vm.trendFunction))])])]):_c('p',[_vm._v(\"Statistics not available before the benchmark period is completed\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport { LongTrendPeriodStatistics } from \"@/types/longTrendPeriodStatistics\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\n\n@Component\nexport default class StatisticsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n\n tooltip = \"The number of long trend points shows the number of days where the conditions were suitable for a data point to be included.\";\n\n get statistics(): LongTrendPeriodStatistics | null {\n return LongTrendPeriod.statistics;\n }\n get longTrendPeriods(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n get pointCount(): number | undefined {\n return this.longTrendPeriods?.longTrendData?.length;\n }\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriods?.isBenchmarking;\n }\n get averageMean(): number | undefined {\n return this.statistics?.averageMean;\n }\n get correlation(): number | undefined {\n return this.statistics?.correlation;\n }\n get diffPerMonth(): number | undefined {\n return this.statistics?.diffPerMonth;\n }\n get diffPerYear(): number | undefined {\n return this.statistics?.diffPerYear;\n }\n get standardDeviation(): number | undefined {\n return this.statistics?.standardDeviation;\n }\n get trendFunction(): string | undefined {\n return this.statistics?.trendFunction;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\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!./StatisticsCard.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!./StatisticsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatisticsCard.vue?vue&type=template&id=15ac3070&\"\nimport script from \"./StatisticsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatisticsCard.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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-ferry\")]),_c('span',[_vm._v(\"On board data collection limits\")]),_c('v-spacer'),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"40ch\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.tooltip)}})])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[_c('p',[_vm._v(\"The on board data collection system creates 1 long trend point per day while the following long-time trend limits are met:\")]),_c('ul',[_c('li',[_vm._v(\"Minimum power in % of MCR\")]),_c('li',[_vm._v(\"Wind speed less than Beaufort value\")]),_c('li',[_vm._v(\"Minimum continuous trend condition in hours\")])]),_c('table',{staticClass:\"table-kyma\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Updated\")]),_c('th',[_vm._v(\"Power (% MCR)\")]),_c('th',[_vm._v(\"Wind (BF)\")]),_c('th',[_vm._v(\"Time (hours)\")])])]),_vm._l((_vm.limits),function(limit,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s((i > 0) ? _vm.$options.filters.dateDMY(limit.exportedAt) : '—'))]),_c('td',[_vm._v(_vm._s(limit.minPower ? _vm.round(limit.minPower, 0) : '0'))]),_c('td',[_vm._v(_vm._s(limit.windSpeed ? _vm.round(limit.windSpeed, 0) : ''))]),_c('td',[_vm._v(_vm._s(limit.minTime ? _vm.round(limit.minTime/3600, 1) : ''))])])}),(!_vm.limits.length)?_c('tfoot',[_c('tr',[_c('td',{attrs:{\"colspan\":\"4\"}},[_c('i',[_vm._v(\" Please wait for the next data export from vessel to be received, before long-trend limits are visible here. \")])])])]):_vm._e()],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport { TrendLimit } from \"@/types/trendLimit\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\n\n@Component\nexport default class LimitsCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n\n tooltip = \"The on board data collection limits met for valid long trend points\";\n\n get limits(): TrendLimit | null {\n return LongTrendPeriod.trendLimits;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\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!./LimitsCard.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!./LimitsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LimitsCard.vue?vue&type=template&id=3d9c84f2&\"\nimport script from \"./LimitsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./LimitsCard.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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VCard,VCardText,VIcon,VSkeletonLoader,VSpacer,VSystemBar,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[_c('v-system-bar',{attrs:{\"window\":\"\",\"color\":\"primary\",\"dark\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-clipboard-list-outline\")]),_c('span',[_vm._v(\"Result\")])],1),(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item-three-line, list-item-three-line\"}}):_c('v-card-text',[(!_vm.isBenchmarking)?_c('div',[_c('p',[_vm._v(\"Performance status at \"+_vm._s(_vm._f(\"dateDMY\")(_vm.endDate))+\" is \"+_vm._s(_vm.performanceStatusVSBenchmark)+\"% compared to the benchmark level.\")]),_c('h4',[_vm._v(\"Consequence\")]),_c('p',[_vm._v(\"Based on the trend data and with an assumed draft of \"),_c('strong',[_vm._v(_vm._s(_vm.draft)+\" m\")]),_vm._v(\" ( \"),_c('v-menu',{attrs:{\"top\":\"\",\"offset-y\":true,\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('a',_vm._g(_vm._b({attrs:{\"role\":\"button\",\"href\":\"#\"}},'a',attrs,false),on),[_c('v-icon',{staticStyle:{\"vertical-align\":\"baseline\"},attrs:{\"small\":\"\"}},[_vm._v(\"mdi-pencil\")]),_vm._v(\" EDIT \")],1)]}}],null,false,1542973882),model:{value:(_vm.draftMenu),callback:function ($$v) {_vm.draftMenu=$$v},expression:\"draftMenu\"}},[_c('v-list',[_c('v-list-item',[_c('v-list-item-content',[_c('v-form',{attrs:{\"id\":\"update-draft\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.handleUpdateDraft.apply(null, arguments)}},model:{value:(_vm.isDraftFormValid),callback:function ($$v) {_vm.isDraftFormValid=$$v},expression:\"isDraftFormValid\"}},[_c('div',{staticClass:\"draft-row\"},[_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"0\",\"max\":\"25\",\"label\":\"meter\",\"rules\":[_vm.draftRules.required, _vm.draftRules.valid]},model:{value:(_vm.$data._draft),callback:function ($$v) {_vm.$set(_vm.$data, \"_draft\", $$v)},expression:\"$data._draft\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"type\":\"submit\",\"form\":\"update-draft\",\"color\":\"accent\",\"disabled\":!_vm.isDraftFormValid,\"loading\":_vm.draftLoading}},[_vm._v(\"Save\")])],1)])],1)],1)],1)],1),_vm._v(\" ) \"),_c('br'),_vm._v(\"the following deviations from benchmark performance can be expected: \")],1),(_vm.consequencesLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"list-item@5\"}}):(!_vm.hasConsequenceResults)?_c('v-alert',{attrs:{\"border\":\"left\",\"colored-border\":\"\",\"color\":\"warning\",\"elevation\":\"2\"}},[_c('p',{staticClass:\"caption\"},[_vm._v(\"Consequences cannot be calculated because the vessel-specific code was not found. \"),_c('br'),_vm._v(\" Please contact Danelec at \"),_c('a',{attrs:{\"href\":\"mailto:support@danelec.com\"}},[_vm._v(\"support@danelec.com\")]),_vm._v(\" for assistance.\")])]):_c('v-simple-table',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(\"MCR\")]),_vm._l((_vm.consequences[0].results),function(consequence){return _c('th',{key:consequence.headerName,staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(consequence.headerName)+\" \")])})],2)]),_c('tbody',_vm._l((_vm.consequences),function(consequence){return _c('tr',{key:consequence.mcrDisplay},[_c('td',[_vm._v(_vm._s(consequence.mcrDisplay))]),_vm._l((consequence.results),function(result){return _c('td',{key:result.displayValue},[_vm._v(_vm._s(result.displayValue)+\" \")])})],2)}),0)]},proxy:true}],null,false,2485445652)}),(_vm.showAsteriskText)?_c('p',[_c('em',[_vm._v(\"* Estimated additional fuel oil required due to \"+_vm._s(_vm.diagnosticTypeName)+\" change, based on ISO corrected Calorific Value.\")])]):_vm._e(),(_vm.showPrediction)?_c('div',[_c('h4',[_vm._v(\"Prediction\")]),(_vm.showYellowPrediction)?_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.yellowPrediction))]):_vm._e(),(_vm.showRedPrediction)?_c('p',[_vm._v(_vm._s(_vm.redPrediction))]):_vm._e()]):_vm._e()],1):_c('p',[_vm._v(\"Result not available before the benchmark period is completed.\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport ConsequencesClient from \"@/Scripts/clients/consequences-client\";\nimport { Consequence } from \"@/types/consequence\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component\nexport default class ResultCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n _draft = 0;\n consequences: Consequence[] = [];\n consequencesLoading = true;\n isDraftFormValid = true;\n draftMenu = false;\n draftLoading = false;\n draftRules = {\n required: (value: number) => !!value || \"Value required\",\n valid: (value: number) => (value >= 2 && value <= 25) || \"Value must be between 2 and 25\",\n };\n\n @Watch(\"loading\", { immediate: true })\n onLoaded(val: boolean): void {\n if (!val) {\n if (this.draft) {\n this.$data._draft = this.draft;\n }\n this.getConsequences();\n }\n }\n\n async handleUpdateDraft(): Promise {\n if (this.meta) {\n this.draftLoading = true;\n const data = {\n vesselId: this.meta?.vesselId,\n draft: this.$data._draft,\n };\n await Vessels.updateVesselDraft(data);\n this.draftMenu = false;\n this.draftLoading = false;\n this.$emit(\"update\");\n }\n }\n\n async getConsequences(): Promise {\n await ConsequencesClient.find(Vessels.currentVessel?.id, this.longTrendPeriods?.longTrendId, this.startDate, this.endDate, this.longTrendPeriods?.benchmarkPeriod).then(data => {\n this.consequences = data;\n this.consequencesLoading = false;\n });\n }\n\n get hasConsequenceResults(): boolean {\n if (!this.consequences?.length) return false;\n return Boolean(this.consequences[0].results.length);\n }\n\n get meta(): LongTrendPeriodMeta | null {\n return LongTrendPeriod.meta;\n }\n\n get longTrendPeriods(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriods?.isBenchmarking;\n }\n\n get draft(): number | null | undefined {\n return this.longTrendPeriods?.draft;\n }\n\n get showAsteriskText(): boolean {\n const type = this.diagnosticTypeName?.toLowerCase();\n return type === \"speed\" || type === \"sfr\";\n }\n get diagnosticTypeName(): string | undefined {\n return this.longTrendPeriods?.diagnosticTypeName;\n }\n\n get startDate(): string | undefined {\n return this.meta?.startDate;\n }\n\n get endDate(): string | undefined {\n return this.meta?.endDate;\n }\n\n get performanceStatusVSBenchmark(): number | string {\n if (!this.longTrendPeriods?.trendline || !this.longTrendPeriods.benchmarkPoint) return \"\";\n return this.round(this.longTrendPeriods.trendline.end.y - this.longTrendPeriods.benchmarkPoint.y);\n }\n\n get showPrediction(): boolean {\n if (!this.longTrendPeriods?.isCurrent) return false;\n if (this.showYellowPrediction || this.showRedPrediction) return true;\n return false;\n }\n\n get redLineReached(): string | null | undefined {\n return this.longTrendPeriods?.redLineReached;\n }\n\n get yellowLineReached(): string | null | undefined {\n return this.longTrendPeriods?.yellowLineReached;\n }\n\n get showYellowPrediction(): boolean {\n if (!this.redLineReached) return true;\n const redLineReached = new Date(this.redLineReached).getTime();\n if (redLineReached > Date.now()) return true;\n return false;\n }\n\n get showRedPrediction(): boolean {\n if (!this.yellowLineReached) return true;\n const yellowLineReached = new Date(this.yellowLineReached).getTime();\n if (yellowLineReached > Date.now()) return true;\n return false;\n }\n\n get yellowPrediction(): string {\n if (!this.yellowLineReached) return \"Yellow zone will not be reached in the foreseeable future\";\n const verb = new Date(this.yellowLineReached).getTime() < Date.now() ? \"was\" : \"will be\";\n return `Yellow zone ${verb} reached on ${this.$options.filters?.dateDMY(this.yellowLineReached)}.`;\n }\n\n get redPrediction(): string {\n if (!this.redLineReached) return \"Red zone will not be reached in the foreseeable future\";\n const verb = new Date(this.redLineReached).getTime() < Date.now() ? \"was\" : \"will be\";\n return `Red zone ${verb} reached on ${this.$options.filters?.dateDMY(this.redLineReached)}.`;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\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!./ResultCard.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!./ResultCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResultCard.vue?vue&type=template&id=1dcac9ea&scoped=true&\"\nimport script from \"./ResultCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResultCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ResultCard.vue?vue&type=style&index=0&id=1dcac9ea&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 \"1dcac9ea\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSystemBar } from 'vuetify/lib/components/VSystemBar';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardText,VForm,VIcon,VList,VListItem,VListItemContent,VMenu,VSimpleTable,VSkeletonLoader,VSystemBar,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 moment from \"moment\";\nimport GraphCard from \"@/components/diagnosticsDetails/GraphCard.vue\";\nimport BenchmarkCard from \"@/components/diagnosticsDetails/BenchmarkCard.vue\";\nimport StatisticsCard from \"@/components/diagnosticsDetails/StatisticsCard.vue\";\nimport LimitsCard from \"@/components/diagnosticsDetails/LimitsCard.vue\";\nimport ResultCard from \"@/components/diagnosticsDetails/ResultCard.vue\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\nimport LongTrendExportClient from \"@/Scripts/clients/long-trend-export-client\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\n@Component({\n components: {\n GraphCard,\n BenchmarkCard,\n StatisticsCard,\n LimitsCard,\n ResultCard,\n },\n})\nexport default class DiagnosticsDetails extends Vue {\n dialog = false;\n loading = true;\n periodMeta!: LongTrendPeriodMeta;\n customBenchmarkPeriod = false;\n\n get meta(): LongTrendPeriodMeta | null {\n return LongTrendPeriod.meta;\n }\n get longTrendPeriod(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n get title(): string | undefined {\n return this.meta?.description;\n }\n get hasNextPeriod(): boolean | undefined {\n return this.meta?.hasNextPeriod;\n }\n get hasPreviousPeriod(): boolean | undefined {\n return this.meta?.hasPreviousPeriod;\n }\n get nextPeriodStart(): string | undefined {\n return new Date(moment.utc(this.meta?.nextPeriodStartDate).valueOf()).toISOString();\n }\n get nextPeriodEnd(): string | undefined {\n return new Date(moment.utc(this.meta?.nextPeriodEndDate).valueOf()).toISOString();\n }\n get prevPeriodStart(): string | undefined {\n return new Date(moment.utc(this.meta?.previousPeriodStartDate).valueOf()).toISOString();\n }\n get prevPeriodEnd(): string | undefined {\n return new Date(moment.utc(this.meta?.previousPeriodEndDate).valueOf()).toISOString();\n }\n get benchmarkPeriod(): number | undefined {\n return this.longTrendPeriod?.benchmarkPeriod;\n }\n\n exportExcel(): void {\n LongTrendExportClient.exportExcelPeriod(this.meta?.vesselId, this.meta?.longTrendId, this.meta?.startDate, this.meta?.endDate);\n }\n\n nextPeriod(): void {\n if (this.nextPeriodStart && this.nextPeriodEnd) {\n this.periodMeta.startDate = this.nextPeriodStart;\n this.periodMeta.endDate = this.nextPeriodEnd;\n }\n this.updateData();\n }\n\n previousPeriod(): void {\n if (this.prevPeriodStart && this.prevPeriodEnd) {\n this.periodMeta.startDate = this.prevPeriodStart;\n this.periodMeta.endDate = this.prevPeriodEnd;\n }\n this.updateData();\n }\n\n open(data: LongTrendPeriodMeta): void {\n this.periodMeta = data;\n this.dialog = true;\n this.updateData();\n }\n\n async updateData(): Promise {\n this.customBenchmarkPeriod = false;\n this.loading = true;\n try {\n await Promise.all([\n LongTrendPeriod.updateMeta(this.periodMeta),\n LongTrendPeriod.updateLongTrendPeriod(this.periodMeta),\n LongTrendPeriod.updateStatistics(this.periodMeta),\n LongTrendPeriod.updateTrendLimits(this.periodMeta.vesselId),\n ]);\n } catch (error) {\n this.close();\n Snackbar.showSnackbar({ text: \"Could not load trend period details\" });\n } finally {\n this.loading = false;\n }\n }\n\n async customPeriod(points: number): Promise {\n const clonedMeta = Object.assign({}, this.periodMeta);\n const customPeriod = {\n customBenchmarkPeriod: points,\n };\n const data = Object.assign(clonedMeta, customPeriod);\n this.loading = true;\n await LongTrendPeriod.updateLongTrendPeriod(data);\n if (points !== -1) {\n this.customBenchmarkPeriod = true;\n } else {\n this.customBenchmarkPeriod = false;\n }\n this.loading = false;\n }\n\n close(): void {\n this.dialog = false;\n LongTrendPeriod.DELETE_DATA();\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!./DiagnosticsDetails.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!./DiagnosticsDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DiagnosticsDetails.vue?vue&type=template&id=f1416762&scoped=true&\"\nimport script from \"./DiagnosticsDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./DiagnosticsDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DiagnosticsDetails.vue?vue&type=style&index=0&id=f1416762&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 \"f1416762\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardText,VCol,VDialog,VDivider,VIcon,VRow,VSpacer,VToolbar,VToolbarTitle})\n","import net from \"App/net\";\r\n\r\nvar LongTrendExportClient = function () {\r\n\r\n};\r\n\r\nLongTrendExportClient.prototype.exportExcel = function(vesselId) {\r\n var filter = {\r\n vesselId: vesselId,\r\n };\r\n return net.fileDownload(\"/LongTrend/Excel\", \"GET\", filter);\r\n};\r\n\r\nLongTrendExportClient.prototype.exportExcelPeriod = function(vesselId, longTrendId, startDate, endDate) {\r\n var filter = {\r\n vesselId: vesselId,\r\n longTrendId: longTrendId,\r\n startDate: startDate,\r\n endDate: endDate,\r\n };\r\n\r\n return net.fileDownload(\"/LongTrend/Excel\", \"GET\", filter);\r\n};\r\n\r\nexport default new LongTrendExportClient();\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultCard.vue?vue&type=style&index=0&id=1dcac9ea&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!./LoadingTextWave.vue?vue&type=style&index=0&id=10fd63c9&scoped=true&lang=scss&\"","//Not complete. More options can be added from Highcharts API as needed.\r\nexport interface IPlotLine {\r\n value: number,\r\n color: string,\r\n width: number,\r\n zIndex?: number,\r\n id: string,\r\n label: {\r\n rotation: number,\r\n style: {\r\n color: string,\r\n },\r\n text: string,\r\n useHTML: boolean,\r\n y: number,\r\n x: number,\r\n },\r\n}\r\n\r\nexport const DefaultVesselEventPlotline: IPlotLine = {\r\n value: 0,\r\n color: \"#000000\",\r\n width: 2,\r\n id: \"plotline\",\r\n zIndex: 5,\r\n label: {\r\n rotation: 0,\r\n style: {\r\n color: \"#000000\",\r\n },\r\n text: \"\",\r\n useHTML: true,\r\n y: -10,\r\n x: -10,\r\n },\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-text d-flex justify-center\"},[_c('div',[_vm._v(\"L\")]),_c('div',[_vm._v(\"O\")]),_c('div',[_vm._v(\"A\")]),_c('div',[_vm._v(\"D\")]),_c('div',[_vm._v(\"I\")]),_c('div',[_vm._v(\"N\")]),_c('div',[_vm._v(\"G\")]),_c('div',[_vm._v(\".\")]),_c('div',[_vm._v(\".\")]),_c('div',[_vm._v(\".\")])])}]\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingTextWave.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadingTextWave.vue?vue&type=template&id=10fd63c9&scoped=true&\"\nimport script from \"./LoadingTextWave.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadingTextWave.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadingTextWave.vue?vue&type=style&index=0&id=10fd63c9&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10fd63c9\",\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!./EditVesselEvent.vue?vue&type=style&index=0&id=7c0ef87a&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"400px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel.apply(null, arguments)},\"click:outside\":_vm.cancel},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.title))]),(_vm.isNewEvent)?_c('span',{staticClass:\"sub-headline mt-2\"},[_vm._v(\"This event will not be displayed on the onboard software\")]):_vm._e()]),_c('v-form',{staticClass:\"mt-2\",attrs:{\"disabled\":_vm.submitting,\"id\":\"edit-event-form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit.apply(null, arguments)}},model:{value:(_vm.isFormValid),callback:function ($$v) {_vm.isFormValid=$$v},expression:\"isFormValid\"}},[_c('v-card-text',[(_vm.isNewEvent)?_c('v-radio-group',{attrs:{\"mandatory\":\"\",\"row\":\"\"},model:{value:(_vm.type),callback:function ($$v) {_vm.type=$$v},expression:\"type\"}},[_c('v-radio',{attrs:{\"value\":\"InfoEvent\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":\"#0060fe\"}},[_vm._v(\"mdi-alpha-i-circle\")]),_vm._v(\" Info event \")],1)]},proxy:true}],null,false,3373602734)}),_c('v-radio',{attrs:{\"value\":\"TrendEvent\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":\"#008000\"}},[_vm._v(\"mdi-alpha-t-circle\")]),_vm._v(\" Trend event \")],1)]},proxy:true}],null,false,3780787737)})],1):_vm._e(),(_vm.type === 'InfoEvent')?_c('v-text-field',{staticClass:\"mb-2\",attrs:{\"label\":\"Event name\",\"prepend-icon\":\"mdi-pencil\",\"rules\":[_vm.nameValidation.required],\"type\":\"text\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}):_c('v-select',{ref:\"typeSelect\",attrs:{\"rules\":[_vm.typeSelectValidation.required],\"value\":\"trendEventTypeName\",\"label\":\"Trend event type\",\"return-object\":\"\",\"prepend-icon\":\"mdi-format-list-bulleted-type\",\"items\":_vm.trendEventTypes,\"item-text\":\"trendEventTypeName\",\"item-value\":\"trendEventTypeId\"},on:{\"change\":_vm.selectTrendEventType},model:{value:(_vm.selectedType),callback:function ($$v) {_vm.selectedType=$$v},expression:\"selectedType\"}}),_c('v-menu',{attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._g(_vm._b({attrs:{\"rules\":[_vm.dateValidation.required],\"label\":\"Event date\",\"prepend-icon\":\"mdi-calendar\",\"readonly\":\"\"},model:{value:(_vm.timeStamp),callback:function ($$v) {_vm.timeStamp=$$v},expression:\"timeStamp\"}},'v-text-field',attrs,false),on))]}}]),model:{value:(_vm.dateMenu),callback:function ($$v) {_vm.dateMenu=$$v},expression:\"dateMenu\"}},[_c('v-date-picker',{on:{\"input\":function($event){_vm.dateMenu = false}},model:{value:(_vm.timeStamp),callback:function ($$v) {_vm.timeStamp=$$v},expression:\"timeStamp\"}})],1)],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"type\":\"submit\",\"form\":\"edit-event-form\",\"elevation\":\"0\",\"loading\":_vm.submitting,\"disabled\":!_vm.isFormValid}},[_vm._v(\"Save\")]),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"primary-lighten-90\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}}},[_vm._v(\"Cancel\")])],1)],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Watch, PropSync, Ref, Vue } from \"vue-property-decorator\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { TrendEventType } from \"@/types/trendEventType\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component\nexport default class EditVesselEvent extends Vue {\n @Ref(\"typeSelect\") typeSelect!: any;\n @PropSync(\"isOpen\", { type: Boolean, default: false }) dialog!: boolean;\n resolve!: any;\n reject!: any;\n isNewEvent = true;\n isFormValid = true;\n submitting = false;\n dateMenu = false;\n selectedType: any = {};\n\n id?: number;\n name = \"\";\n source = \"Office\";\n timeStamp = \"\";\n type = \"\";\n typeId: number | null = null;\n vesselId = Vessels.currentVessel?.id;\n\n nameValidation = {\n required: (value: string) => !!value || \"Event name required\",\n };\n\n dateValidation = {\n required: (value: string) => !!value || \"Event date required\",\n };\n\n typeSelectValidation = {\n required: (value: TrendEventType) => (!!value && !!value.trendEventTypeId) || \"Type required\",\n };\n\n get title(): string {\n if (this.isNewEvent) {\n return \"Create event\";\n } else {\n return \"Edit event\";\n }\n }\n\n get trendEventTypes(): TrendEventType[] | null {\n return VesselEvents.trendEventTypes;\n }\n\n //reset the inputs when switching between type in case of new event\n @Watch(\"type\")\n typeChanged(val: string): void {\n if (!this.isNewEvent) return;\n if (val && val === \"InfoEvent\") {\n this.typeId = null;\n this.name = \"\";\n } else if (val && val === \"TrendEvent\") {\n this.$nextTick(() => {\n this.typeSelect.reset();\n });\n }\n }\n\n selectTrendEventType(trendEventType: TrendEventType): void {\n this.typeId = trendEventType.trendEventTypeId;\n this.name = trendEventType.trendEventTypeName;\n }\n\n open(vesselEvent?: VesselEvent): Promise {\n this.dialog = true;\n if (vesselEvent) {\n this.setFieldData(vesselEvent);\n }\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n async handleSubmit(): Promise {\n const payload: VesselEvent = {\n name: this.name,\n source: this.source,\n timestamp: this.timeStamp,\n type: this.type,\n vesselId: this.vesselId,\n };\n\n if (this.id) {\n payload.id = this.id;\n }\n\n if (this.typeId) {\n payload.typeId = this.typeId;\n }\n\n this.submitting = true;\n if (this.isNewEvent) {\n await VesselEvents.createEvent(payload);\n } else {\n await VesselEvents.editEvent(payload);\n }\n\n this.submitting = false;\n this.confirm();\n }\n\n confirm(): void {\n this.dialog = false;\n this.resetFieldData();\n this.resolve(true);\n }\n\n cancel(): void {\n this.dialog = false;\n this.resolve(null);\n setTimeout(() => {\n this.resetFieldData();\n }, 500);\n }\n\n resetFieldData(): void {\n this.isNewEvent = true;\n this.isFormValid = true;\n this.dateMenu = false;\n this.selectedType = {};\n this.id = 0;\n this.name = \"\";\n this.source = \"Office\";\n this.timeStamp = \"\";\n this.type = \"\";\n this.typeId = null;\n this.vesselId = Vessels.currentVessel?.id;\n this.selectedType = {};\n }\n\n setFieldData(vesselEvent: VesselEvent): void {\n this.isNewEvent = false;\n this.id = vesselEvent.id;\n this.name = vesselEvent.name;\n this.source = vesselEvent.source;\n //incoming format \"2020-03-16T00:00:00\" is not compatible with datepicker\n this.timeStamp = vesselEvent.timestamp.split(\"T\")[0];\n this.type = vesselEvent.type;\n this.vesselId = vesselEvent.vesselId;\n\n if (vesselEvent.typeId) {\n this.typeId = vesselEvent.typeId;\n this.selectedType = {\n trendEventTypeId: vesselEvent.typeId,\n trendEventTypeName: vesselEvent.name,\n };\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditVesselEvent.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!./EditVesselEvent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditVesselEvent.vue?vue&type=template&id=7c0ef87a&scoped=true&\"\nimport script from \"./EditVesselEvent.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditVesselEvent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EditVesselEvent.vue?vue&type=style&index=0&id=7c0ef87a&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 \"7c0ef87a\",\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 { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDatePicker,VDialog,VForm,VIcon,VMenu,VRadio,VRadioGroup,VSelect,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('v-card',{staticClass:\"card\"},[_c('v-card-title',{staticClass:\"text-h6\"},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":_vm.statusIcon.color}},[_vm._v(_vm._s(_vm.statusIcon.name))]),_c('span',{staticClass:\"d-flex align-center diagnostic__title--text\"},[_vm._v(_vm._s(_vm.longTrend.descriptionLong))]),_c('v-tooltip',{attrs:{\"right\":\"\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}],null,false,1171182639)},[_c('span',[_vm._v(_vm._s(_vm.tooltipText))])])],1),(_vm.isLongTrendsLoading || _vm.showError)?_c('v-card-text',{staticClass:\"pa-8\"},[_c('v-sheet',{staticClass:\"d-flex justify-center align-center mx-auto\",attrs:{\"rounded\":\"\",\"outlined\":\"\",\"max-width\":\"70%\",\"height\":\"150\"}},[(_vm.isLongTrendsLoading)?_c('LoadingTextWave'):[_vm._v(\" Unable to load graph data \")]],2)],1):_c('v-card-text',[(_vm.showError)?_c('v-sheet',{staticClass:\"d-flex justify-center align-center pa-8 mb-8\",attrs:{\"rounded\":\"\",\"outlined\":\"\",\"elevation\":\"3\"}},[_vm._v(\" Unable to load graph data\"),_c('v-icon',{attrs:{\"left\":\"\",\"color\":_vm.performanceStatusColor}},[_vm._v(_vm._s(_vm.performanceStatusIcon))])],1):_c('div',{staticClass:\"mb-3 overflow-visible\"},[_c('Highcharts',{ref:\"chart\",staticClass:\"overflow-visible\",attrs:{\"options\":_vm.chartOptions,\"deepCopyOnUpdate\":true,\"width\":\"100%\"}})],1),_c('div',{staticClass:\"d-flex flex-row diagnostic__benefit-and-benchmark\"},[_c('v-expansion-panels',{staticClass:\"mb-auto\"},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"text-overline white--text\",attrs:{\"color\":\"primary\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}],null,false,621141048)},[_vm._v(\" Benefit resulting from trend event \")]),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[(_vm.noTrendEvents)?_c('em',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\" [ Minimum one trend event required to calculate benefit. ] \")]):_c('TrendEventBenefit',{attrs:{\"longTrend\":_vm.longTrend}})],1)],1)],1),_c('v-expansion-panels',{staticClass:\"mb-auto\"},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"text-overline white--text\",attrs:{\"color\":\"primary\",\"ripple\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-down \")])]},proxy:true}],null,false,621141048)},[_c('v-tooltip',{attrs:{\"top\":\"\",\"max-width\":\"400px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"mb-1 flex-grow-0\",attrs:{\"color\":\"#4D86AF\",\"left\":\"\"}},on),[_vm._v(_vm._s(_vm.benchmarkType.icon))])]}}],null,false,404548764)},[_c('span',{staticClass:\"mx-auto\"},[_vm._v(_vm._s(_vm.benchmarkType.tooltip))])]),_c('span',[_vm._v(\" Benchmark level settings \")])],1),_c('v-expansion-panel-content',[_c('v-checkbox',{attrs:{\"label\":\"Use manual benchmark level\"},model:{value:(_vm.useManualBenchmarkLevel),callback:function ($$v) {_vm.useManualBenchmarkLevel=$$v},expression:\"useManualBenchmarkLevel\"}}),_c('span',{staticClass:\"d-flex flex-row justify-space-between align-end\"},[_c('v-text-field',{staticClass:\"shrink\",attrs:{\"suffix\":\"% from baseline\",\"label\":\"Manual benchmark is:\",\"rules\":[_vm.benchmarkLevelInputRules],\"hint\":\"Value from -40 to 40\"},on:{\"blur\":_vm.resetManualBenchmarkLevel},model:{value:(_vm.manualBenchmarkLevel),callback:function ($$v) {_vm.manualBenchmarkLevel=_vm._n($$v)},expression:\"manualBenchmarkLevel\"}}),_c('v-btn',{staticClass:\"font-weight-semibold\",attrs:{\"color\":\"accent\",\"loading\":_vm.isBenchmarkLevelSettingsLoading,\"disabled\":_vm.disableSaveBenchmarkLevelSettings},on:{\"click\":_vm.updateBenchmarkLevelSettings}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" Save \")],1)],1)],1)],1)],1)],1)],1)],1):_vm._e()}\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-select',{attrs:{\"items\":_vm.trendEvents,\"item-value\":\"id\",\"return-object\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":_vm.fetchBenefitData},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDateForDisplay(data.item.timestamp))+\" - \"+_vm._s(data.item.name)+\" \")]}},{key:\"item\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDateForDisplay(data.item.timestamp))+\" - \"+_vm._s(data.item.name)+\" \")]}}]),model:{value:(_vm.selectedTrendEvent),callback:function ($$v) {_vm.selectedTrendEvent=$$v},expression:\"selectedTrendEvent\"}}),(_vm.isBenefitLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}}):[(_vm.loadBenefitError)?_c('em',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\" \"+_vm._s(_vm.errorText)+\" \")]):[_c('section',[_c('p',[_vm._v(\" Previous trend period ended on \"),_c('strong',[_vm._v(_vm._s(_vm.formatDateForDisplay(_vm.benefitData.benefitDate)))]),_vm._v(\" with a value \"),_c('strong',[_vm._v(_vm._s(_vm.benefitData.prevEndValue.toFixed(2))+\"%\")]),_vm._v(\" from baseline. The Benchmark level for the following trend period is \"),_c('strong',[_vm._v(_vm._s(_vm.benefitData.nextBenchmarkValue.toFixed(2))+\"%\")]),_vm._v(\" from baseline. \")]),_c('p',{staticClass:\"my-2\"},[_vm._v(\" Based on the trend data and with an assumed draft of \"),_c('strong',[_vm._v(_vm._s(_vm.benefitData.draft.toFixed(1))+\"m\")]),_vm._v(\" the following benefit was achieved: \")])]),_c('section',[(!_vm.hasConsequenceResults)?_c('p',{staticClass:\"warning--text text--darken-1 mt-2\"},[_vm._v(\" Consequences cannot be calculated because the vessel-specific code was not found. Please contact Danelec at \"),_c('a',{attrs:{\"href\":\"mailto:support@danelec.com\"}},[_vm._v(\"support@danelec.com\")]),_vm._v(\" for assistance. \")]):[_c('v-data-table',{staticClass:\"mb-4\",attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.tableItems,\"dense\":\"\",\"no-data-text\":\"No data\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\",\"fixed-header\":\"\"}}),_c('em',{staticClass:\"grey--text\"},[_vm._v(_vm._s(_vm.benefitText))])]],2)]]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\nimport { getModule } from \"vuex-module-decorators\";\nimport diagnosticTypesHelper from \"Utilities/diagnostic-types-helper\";\nimport { ITrendBenefit } from \"@/types/trendBenefit\";\nimport { ILongTrend } from \"@/types/longTrend\";\nimport BenefitsModule from \"@/store/clients/Benefits.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\n\nconst TrendEventBenefits = getModule(BenefitsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\n\n@Component({})\nexport default class TrendEventBenefit extends Vue {\n @Prop() readonly longTrend!: ILongTrend;\n\n benefitData: ITrendBenefit | null = null;\n isBenefitLoading = true;\n selectedTrendEvent: any = {};\n loadBenefitError: string | boolean = false;\n\n @Watch(\"trendEvents\")\n trendEventsChanged(): void {\n this.selectedTrendEvent = this.trendEvents[0];\n }\n\n @Watch(\"longTrend\")\n longtrendchanged(): void {\n this.fetchBenefitData();\n }\n\n async created(): Promise {\n this.selectedTrendEvent = this.trendEvents[0];\n await this.fetchBenefitData();\n }\n\n async fetchBenefitData(): Promise {\n try {\n this.isBenefitLoading = true;\n this.benefitData = await TrendEventBenefits.fetchBenefit({ trendEventId: this.selectedTrendEvent.id, longTrendId: this.longTrend.id });\n this.loadBenefitError = false;\n } catch (error) {\n this.loadBenefitError = error as string;\n } finally {\n this.isBenefitLoading = false;\n }\n }\n\n get trendEvents(): VesselEvent[] {\n return VesselEvents.trendEvents;\n }\n\n get benefitText(): string {\n return diagnosticTypesHelper.getBenefitText(this.longTrend.diagnosticType);\n }\n\n get hasConsequenceResults(): boolean {\n return this.benefitData?.consequences?.length ? this.benefitData.consequences[0].results.length > 0 : false;\n }\n\n get tableHeaders(): any[] {\n const headers: any[] = [];\n\n if (!this.benefitData?.consequences[0].results.length) return headers;\n\n headers.push({ text: \"MCR\", value: \"MCR\" });\n\n this.benefitData?.consequences[0].results.forEach(result => {\n headers.push({ text: result.headerName, value: result.headerName });\n });\n\n return headers;\n }\n\n get tableItems(): any[] {\n const items: any[] = [];\n\n this.benefitData?.consequences.forEach(consequence => {\n const item: any = { MCR: consequence.mcrDisplay };\n\n consequence.results.forEach(result => {\n item[result.headerName] = result.displayValue;\n });\n items.push(item);\n });\n\n return items;\n }\n\n get errorText(): string {\n switch (this.loadBenefitError) {\n case \"Benchmarking\":\n return \"Could not calculate benefit. This might be because the trend period before or after selected trend event is benchmarking, or have no data.\";\n default:\n return \"Could not calculate benefit.\";\n }\n }\n\n formatDateForDisplay(date: any): string {\n return moment(date).format(\"DD.MMM YYYY\");\n } //use parent?\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!./TrendEventBenefit.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!./TrendEventBenefit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TrendEventBenefit.vue?vue&type=template&id=33420f22&\"\nimport script from \"./TrendEventBenefit.vue?vue&type=script&lang=ts&\"\nexport * from \"./TrendEventBenefit.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 { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VDataTable,VSelect,VSkeletonLoader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 store from \"@/store\";\nimport moment from \"moment\";\nimport { Component, Prop, Vue, Ref, Watch } from \"vue-property-decorator\";\nimport DiagnosticTypesHelper from \"Utilities/diagnostic-types-helper\";\n//modules\nimport { getModule } from \"vuex-module-decorators\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport LongTrendsModule from \"@/store/clients/LongTrends.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\n//types\nimport { ILongTrend } from \"@/types/longTrend\";\nimport { Vessel } from \"@/types/Vessel\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { IPlotLine, DefaultVesselEventPlotline } from \"@/types/highcharts/plotLine\";\nimport { IPlotBand } from \"@/types/highcharts/plotBand\";\nimport { IDataSerie } from \"@/types/highcharts/dataSerie\";\n//components\nimport GraphCard from \"@/components/diagnosticsDetails/GraphCard.vue\";\nimport { Chart } from \"highcharts-vue\";\nimport HighchartsNoData from \"highcharts/modules/no-data-to-display\";\nimport Highcharts from \"highcharts\";\nimport LoadingTextWave from \"@/components/LoadingTextWave.vue\";\nimport TrendEventBenefit from \"@/components/diagnostics/TrendEventBenefit.vue\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\n\nHighchartsNoData(Highcharts);\n\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst LongTrends = getModule(LongTrendsModule, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\ninterface StatusIcon {\n name: string;\n color: string;\n}\n\n@Component({\n components: {\n LoadingTextWave,\n GraphCard,\n Highcharts: Chart,\n TrendEventBenefit,\n },\n})\nexport default class DiagnosticCard extends Vue {\n @Prop() readonly longTrendName!: string;\n @Prop() readonly visible!: boolean;\n @Ref() readonly chart!: any;\n\n showError = false;\n\n useManualBenchmarkLevel = false;\n manualBenchmarkLevel = 0;\n\n isLongTrendsLoading = true;\n isBenchmarkLevelSettingsLoading = false;\n\n async created(): Promise {\n if (!this.vessel || !this.longTrend) {\n this.showError = true;\n this.isLongTrendsLoading = false;\n } else {\n try {\n await Promise.all([LongTrends.fetchVesselLongTrendPeriods({ vesselId: this.vessel.id, longTrend: this.longTrend })]);\n this.manualBenchmarkLevel = this.longTrend.manualBenchmarkLevel;\n this.useManualBenchmarkLevel = this.longTrend.useManualBenchmarkLevel;\n } catch (error) {\n this.showError = true;\n console.warn(error);\n } finally {\n this.isLongTrendsLoading = false;\n }\n }\n }\n\n @Watch(\"vesselEvents\")\n onVesselEventsChanged(): void {\n if (!this.vessel) return;\n\n LongTrends.fetchVesselLongTrendPeriods({ vesselId: this.vessel.id, longTrend: this.longTrend });\n }\n\n get longTrend(): ILongTrend {\n return LongTrends.vesselLongTrendByName(this.longTrendName).longTrend;\n }\n\n get longTrendPeriods(): ILongTrendPeriod[] {\n return this.longTrend ? LongTrends.vesselLongTrendByName(this.longTrendName).longTrendPeriods : [];\n }\n\n get vesselEvents(): VesselEvent[] {\n return VesselEvents.allEvents;\n }\n\n get firstLongTrendPeriod(): ILongTrendPeriod {\n return this.longTrendPeriods[0];\n }\n\n get tooltipText(): string {\n return DiagnosticTypesHelper.getHelpText(this.longTrend.diagnosticType);\n }\n\n get noTrendEvents(): any {\n return !VesselEvents.trendEvents?.length;\n }\n\n get vessel(): Vessel | null {\n return Vessels.currentVessel;\n }\n\n get statusIcon(): StatusIcon {\n switch (this.longTrend.performanceStatus) {\n case \"Ok\":\n return { name: \"mdi-check-circle\", color: \"success\" };\n case \"NotOk\":\n return { name: \"mdi-alert-circle\", color: \"error\" };\n case \"Observe\":\n return { name: \"mdi-alert-circle\", color: \"warning\" };\n case \"BenchMarking\":\n return { name: \"mdi-gauge\", color: \"info darken-4\" };\n default:\n return { name: \"mdi-minus-circle\", color: \"grey\" };\n }\n }\n\n get benchmarkType(): { tooltip: string; icon: string } {\n if (this.longTrend.useManualBenchmarkLevel) {\n return {\n tooltip: \"Using manual benchmark level: \" + this.longTrend.manualBenchmarkLevel + \"%\",\n icon: \"mdi-alpha-m-circle\",\n };\n } else {\n return {\n tooltip: \"Using automatic calculated benchmark level\",\n icon: \"mdi-alpha-a-circle\",\n };\n }\n }\n\n getVesselEventsOnSameDate(eventTimestamp: string): VesselEvent[] {\n return this.vesselEvents.filter((vesselEvent: VesselEvent) => vesselEvent.timestamp === eventTimestamp);\n }\n\n getPlotLineLabels(vesselEventsOnSameDate: VesselEvent[], event: VesselEvent): string {\n return `\n \n = 2 ? \"block\" : \"none\"}\"\n >\n ${vesselEventsOnSameDate.length}\n \n \n
\n ${vesselEventsOnSameDate\n .map(\n (vesselEvent: VesselEvent, index: number) => `\n

\n = 2 ? \"block\" : \"none\"}\"\n >\n ${this.formatDateForDisplay(vesselEvent.timestamp)}\n

\n

${vesselEvent.name}

\n
\n `\n )\n .join(\"\")}\n
\n `;\n }\n\n get vesselEventPlotLines(): IPlotLine[] {\n const plotLines: IPlotLine[] = [];\n\n this.vesselEvents.forEach(event => {\n const html = this.getPlotLineLabels(this.getVesselEventsOnSameDate(event.timestamp), event);\n plotLines.push(\n Object.assign(JSON.parse(JSON.stringify(DefaultVesselEventPlotline)), {\n id: `plotline-${event.id}`,\n color: this.eventColor(event.type),\n value: moment.utc(event.timestamp).valueOf(),\n width: 2,\n label: {\n rotation: 0,\n style: { color: this.eventColor(event.type) },\n text: html,\n useHTML: true,\n y: -15,\n x: -11,\n },\n })\n );\n });\n\n return plotLines;\n }\n\n get vesselEventPlotBands(): IPlotBand[] {\n const plotBands: IPlotBand[] = [];\n\n this.longTrendPeriods.forEach(period => {\n plotBands.push({\n from: moment.utc(period.start).valueOf(),\n to: moment.utc(period.end).valueOf(),\n id: period.longTrendId,\n className: \"diagnotic-graph__plot-bands\",\n color: \"rgba(0,0,0,0.0)\",\n zIndex: 4,\n events: {\n click: () => {\n this.$emit(\"plotBandClicked\", this.getLongTrendPeriodMeta(period));\n },\n mouseover: (e: any) => {\n e.target.attributes.getNamedItem(\"fill\").value = \"#ccd9cc4D\";\n },\n mouseout: (e: any) => {\n e.target.attributes.getNamedItem(\"fill\").value = \"rgba(0,0,0,0.0)\";\n },\n },\n });\n });\n\n return plotBands;\n }\n\n get dataSeries(): IDataSerie[] {\n if (!this.longTrend) {\n this.showError = true;\n return [];\n } else {\n const series: IDataSerie[] = [];\n const longTrendData: [number, number][] = [];\n const benchmarkingData: any[] = [];\n\n this.longTrendPeriods.forEach(period => {\n //graph points for long trend data\n period.longTrendData.forEach(dataPoint => {\n longTrendData.push([new Date(this.formatDatetimeToUTC(dataPoint.x)).getTime(), dataPoint.y]);\n });\n\n //graph points for benchmark data\n if (!this.longTrend.useManualBenchmarkLevel && period.benchmarkPoint) {\n benchmarkingData.push(\n [new Date(this.formatDatetimeToUTC(period.benchmarkPoint.x)).getTime(), period.benchmarkPoint.y],\n [new Date(this.formatDatetimeToUTC(period.end)).getTime(), period.benchmarkPoint.y]\n );\n }\n\n if (period.trendline) {\n series.push({\n name: `Trendline (${this.formatDateForDisplay(period.trendline.start.x)})`,\n type: \"line\",\n color: \"#008000\",\n zIndex: 2,\n marker: {\n enabled: false,\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: [\n [new Date(this.formatDatetimeToUTC(period.trendline.start.x)).getTime(), period.trendline.start.y],\n [new Date(this.formatDatetimeToUTC(period.trendline.end.x)).getTime(), period.trendline.end.y],\n ],\n });\n }\n });\n\n series.push({\n name: \"Deviation from baseline\",\n type: \"line\",\n color: \"#800000\",\n zIndex: 1,\n enableMouseTracking: true,\n marker: {\n symbol: \"circle\",\n },\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: longTrendData,\n });\n\n series.push({\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n zIndex: 4,\n visible: false,\n tooltip: {\n valueDecimals: 1,\n valueSuffix: \"%\",\n },\n data: this.longTrend.useManualBenchmarkLevel\n ? [\n [new Date(this.formatDatetimeToUTC(this.firstLongTrendPeriod.start)).getTime(), this.longTrend.manualBenchmarkLevel],\n [new Date().getTime(), this.longTrend.manualBenchmarkLevel],\n ]\n : benchmarkingData,\n });\n\n series.push({\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.firstLongTrendPeriod.start)).getTime(), 0],\n [new Date().getTime(), 0],\n ],\n });\n\n return series;\n }\n }\n\n get chartOptions(): any {\n if (!this.longTrendPeriods?.length) return {};\n\n const options = {\n time: {\n useUTC: false,\n },\n chart: {\n type: \"line\",\n zoomType: \"x\",\n spacingRight: 20,\n animation: false,\n height: 300,\n spacingTop: 40,\n },\n credits: {\n enabled: false,\n },\n legend: {\n enabled: true,\n },\n title: {\n text: null,\n },\n yAxis: {\n title: {\n text: `${this.firstLongTrendPeriod.unitName} (${this.firstLongTrendPeriod.unitCaption})`,\n },\n min: this.firstLongTrendPeriod.isRpmDiagnostic ? -25 : -50,\n max: this.firstLongTrendPeriod.isRpmDiagnostic ? 25 : 50,\n tickPixelInterval: 20,\n },\n xAxis: {\n title: {\n text: null,\n },\n type: \"datetime\",\n plotLines: this.vesselEventPlotLines,\n plotBands: this.vesselEventPlotBands,\n labels: {\n y: 35,\n },\n },\n series: this.dataSeries,\n tooltip: {\n backgroundColor: \"rgba(0, 0, 0, .85)\",\n borderWidth: 2,\n style: {\n color: \"#EBEBEB\",\n },\n },\n plotOptions: {\n series: {\n zIndex: 1,\n },\n },\n exporting: {\n filename: `${this.vessel?.name}_${this.longTrend.descriptionLong}`,\n chartOptions: {\n legend: {\n enabled: false,\n },\n title: {\n text: `${this.vessel?.name} [${this.longTrend.descriptionLong}]`,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n };\n\n return options;\n }\n\n get disableSaveBenchmarkLevelSettings(): boolean {\n return (\n (!this.longTrend.useManualBenchmarkLevel === !this.useManualBenchmarkLevel && this.longTrend.manualBenchmarkLevel.toString() === this.manualBenchmarkLevel.toString()) ||\n this.manualBenchmarkLevel > 40 ||\n this.manualBenchmarkLevel < -40\n );\n }\n\n benchmarkLevelInputRules(value: any): boolean | string {\n if (!!!value) return \"Required\";\n else return (-40 <= value && value <= 40) || \"Benchmark level must be a number between -40 and 40.\";\n }\n\n resetManualBenchmarkLevel(): void {\n if (!!!this.manualBenchmarkLevel) {\n this.manualBenchmarkLevel = this.longTrend ? this.longTrend.manualBenchmarkLevel : 0;\n }\n }\n\n async updateBenchmarkLevelSettings(): Promise {\n this.isBenchmarkLevelSettingsLoading = true;\n const updatedLongTrend: ILongTrend = JSON.parse(JSON.stringify(this.longTrend));\n updatedLongTrend.useManualBenchmarkLevel = this.useManualBenchmarkLevel;\n updatedLongTrend.manualBenchmarkLevel = this.manualBenchmarkLevel;\n\n try {\n await LongTrends.updateVesselLongTrend({ vesselId: this.vessel!.id, longTrend: updatedLongTrend });\n await Vessels.updateCurrentVesselById(this.vessel!.id);\n Snackbar.showSnackbar({ text: \"Benchmark settings successfully updated\", color: \"success\" });\n } catch (error) {\n Snackbar.showSnackbar({ text: \"Failed to update benchmark settings\" });\n } finally {\n this.isBenchmarkLevelSettingsLoading = false;\n }\n }\n\n formatDatetimeToUTC(datetime: any): any {\n datetime = datetime.split(\"+\");\n return datetime[0].endsWith(\"z\") || datetime[0].endsWith(\"Z\") ? datetime[0] : datetime[0] + \"Z\";\n }\n\n formatDateForDisplay(date: any): string {\n return moment.utc(date).format(\"DD.MMM YYYY\");\n }\n\n getLongTrendPeriodMeta(longTrendPeriod: ILongTrendPeriod): Partial {\n return {\n longTrendId: longTrendPeriod.longTrendId,\n vesselId: longTrendPeriod.vesselId,\n startDate: moment.utc(longTrendPeriod.start).toISOString(),\n endDate: moment.utc(longTrendPeriod.end).toISOString(),\n };\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\n }\n\n eventColor(eventType: string): string {\n return eventType === \"InfoEvent\" ? \"#0060fe\" : \"#008000\";\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!./DiagnosticCard.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!./DiagnosticCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DiagnosticCard.vue?vue&type=template&id=a49ba308&scoped=true&\"\nimport script from \"./DiagnosticCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./DiagnosticCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DiagnosticCard.vue?vue&type=style&index=0&id=a49ba308&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a49ba308\",\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 { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VCheckbox,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSheet,VTextField,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"outlined\":\"\",\"tile\":\"\"}},[(_vm.loading)?_c('v-skeleton-loader',{attrs:{\"type\":\"image@2\",\"height\":\"434px\"}}):_c('v-card-text',[_c('highcharts',{attrs:{\"id\":\"chart\",\"options\":_vm.chartOptions,\"callback\":_vm.chartReady}})],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\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Chart } from \"highcharts-vue\";\nimport store from \"@/store\";\nimport moment from \"moment\";\n// types\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { GraphPoint } from \"@/types/graphPoint\";\nimport { TrendLine } from \"@/types/trendLine\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\n\nconst LongTrendPeriod = getModule(LongTrendPeriodModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\n\n//How it was made in old solution:\n//KspOfficeWeb.WebApplication\\Views\\Diagnostics\\DetailsGraph.cshtml\n//sendt data here for final assembly:\n//src\\Scripts\\misc\\chart.js\n\n//TODOS\n//tooltip on vesselevents in chart: graph is overflow hidden, so added marginTop to fit.\n//v-tooltip doesn't render, so i just made a simple css-only tooltip for now.\n//Issue: clips at the ends but maybe not a big deal, if you want tooltip to always be fully visible,\n//can use title attribute, but this can not be styled obviously\n\n@Component({\n components: {\n highcharts: Chart,\n },\n})\nexport default class GraphCard extends Vue {\n @Prop({ default: true }) loading!: boolean;\n chart!: any;\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.addEventLabels();\n const cmax = this.isRpm ? 25 : 50;\n const cmin = this.isRpm ? -25 : -50;\n this.chart.yAxis[0].setExtremes(cmin, cmax);\n }\n\n //just copying this from chart.js. Original comment:\n //Adds \"Z\" to datetime strings and, optionally, removes already existing\n //UTC/timezone difference suffix (like '+01:00')\n formatDatetimeToUTC(datetime: any): any {\n datetime = datetime.split(\"+\");\n return datetime[0].endsWith(\"z\") || datetime[0].endsWith(\"Z\") ? datetime[0] : datetime[0] + \"Z\";\n }\n\n addEventLabels(): void {\n this.infoEvents.forEach(event => {\n const html = `\n \n
\n

${this.formatDateForDisplay(event.timestamp)}

\n

${event.name}

\n
\n `;\n this.chart.xAxis[0].addPlotLine({\n value: new Date(this.formatDatetimeToUTC(event.timestamp)).getTime(),\n color: \"#0060fe\",\n width: 2,\n id: \"plot-line-\" + event.id,\n label: {\n rotation: 0,\n style: {\n color: \"#0060fe\",\n },\n text: html,\n useHTML: true,\n y: -14,\n x: -11,\n },\n });\n });\n }\n\n get longTrendPeriod(): ILongTrendPeriod | null {\n return LongTrendPeriod.longTrendPeriod;\n }\n\n get meta(): LongTrendPeriodMeta | null {\n return LongTrendPeriod.meta;\n }\n\n //it looks like we don't need to filter these to the graph range,\n //as only the ones inside the range of the graph are shown anyway\n get infoEvents(): any[] {\n return VesselEvents.infoEvents;\n }\n\n get longTrendData(): GraphPoint[] | undefined {\n return this.longTrendPeriod?.longTrendData;\n }\n\n get isBenchmarking(): boolean | undefined {\n return this.longTrendPeriod?.isBenchmarking;\n }\n\n get isManualBenchmark(): boolean | undefined {\n return this.longTrendPeriod?.isManualBenchmark;\n }\n\n get benchmarkPoint(): GraphPoint | undefined {\n return this.longTrendPeriod?.benchmarkPoint;\n }\n\n get benchmarkingZone(): any {\n const benchmarkZone: any = {\n from: null,\n to: null,\n };\n if (!this.isBenchmarking && !this.isManualBenchmark) {\n benchmarkZone.from = new Date(this.formatDatetimeToUTC(this.longTrendPeriod?.longTrendData[0].x)).getTime();\n benchmarkZone.to = new Date(this.formatDatetimeToUTC(this.benchmarkPoint?.x)).getTime();\n }\n return benchmarkZone;\n }\n\n get isRpm(): boolean | undefined {\n return this.longTrendPeriod?.isRpmDiagnostic;\n }\n\n get redOffset(): number | undefined {\n return this.longTrendPeriod?.redOffset;\n }\n\n get yellowOffset(): number | undefined {\n return this.longTrendPeriod?.yellowOffset;\n }\n\n get yellowLine(): GraphPoint | undefined {\n return this.longTrendPeriod?.yellowLine;\n }\n\n get redLine(): GraphPoint | undefined {\n return this.longTrendPeriod?.redLine;\n }\n\n get startDate(): string | undefined {\n return this.longTrendPeriod?.start;\n }\n\n get endDate(): string | undefined {\n return this.longTrendPeriod?.end;\n }\n\n get trendline(): TrendLine | undefined {\n return this.longTrendPeriod?.trendline;\n }\n\n get trialPoints(): GraphPoint[] | undefined {\n return this.longTrendPeriod?.trialPoints;\n }\n\n get exportName(): string | undefined {\n if (this.meta) {\n return `${this.meta.vesselName} _ ${this.meta.description}`;\n }\n return;\n }\n\n get exportTitle(): string | undefined {\n if (this.meta) {\n return `${this.meta.vesselName} - ${this.meta.description}`;\n }\n return;\n }\n\n get chartOptions(): unknown {\n if (!this.longTrendPeriod || !this.meta) return {};\n\n return {\n time: {\n useUTC: false,\n },\n chart: {\n type: \"line\",\n zoomType: \"x\",\n spacingRight: 20,\n marginTop: 55, //to fit tooltip\n animation: false,\n spacingTop: 20,\n },\n credits: {\n enabled: false,\n },\n legend: {\n enabled: true,\n },\n title: {\n text: null,\n },\n\n xAxis: {\n type: \"datetime\",\n gridLineWidth: 1,\n plotBands: [\n {\n id: \"benchmarkPeriod\",\n from: this.benchmarkingZone.from,\n to: this.benchmarkingZone.to,\n color: \"rgba(0,0,255,0.2)\",\n zIndex: 1,\n label: {\n text: \"Benchmark period\",\n },\n },\n ],\n plotLines: [\n {\n id: \"benchmarkPeriodEnd\",\n value: this.benchmarkingZone.to,\n color: \"rgb(0,0,255)\",\n zIndex: 2,\n width: 2,\n },\n ],\n events: {\n setExtremes: (e: any) => {\n var cmax = this.isRpm ? 25 : 50;\n var cmin = this.isRpm ? -25 : -50;\n\n setTimeout(() => {\n //the documented recommended way of determining if reset zoom was clicked does not work\n //(e.min and e.max are supposed to be undefined, but aren't, so we use\n //this other way where we check if zoom button exists or not)\n if (this.chart.resetZoomButton) {\n this.chart.yAxis[0].setExtremes();\n } else {\n this.chart.yAxis[0].update({ min: cmin, max: cmax });\n }\n }, 0);\n },\n },\n title: {\n text: null,\n },\n labels: {\n y: 35,\n },\n },\n yAxis: {\n title: {\n text: this.yAxisLabel,\n },\n gridLineColor: \"#aaaaaa\",\n tickPixelInterval: 20,\n plotBands: this.plotBands,\n plotLines: this.plotLines,\n },\n tooltip: {\n useHTML: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n },\n plotOptions: {\n series: {\n zIndex: 1,\n marker: {\n enabled: true,\n symbol: \"circle\",\n radius: 2,\n lineWidth: 0,\n lineColor: \"#000000\",\n fillColor: \"#e60000\",\n },\n },\n },\n exporting: {\n enabled: false,\n filename: this.exportName,\n chartOptions: {\n title: {\n text: this.exportTitle,\n style: {\n width: \"450px\",\n },\n },\n },\n },\n series: this.series,\n };\n }\n\n get yAxisLabel(): string {\n return `${this.longTrendPeriod?.unitName} (${this.longTrendPeriod?.unitCaption})`;\n }\n\n get plotBands(): any {\n if (this.isBenchmarking) return [];\n\n const plotBands: any = [];\n if (this.redOffset && this.yellowOffset && this.redOffset < this.yellowOffset) {\n plotBands.push({\n name: \"pb-green\",\n color: \"rgba(69,186,69,0.5)\",\n from: this.yellowLine?.y,\n to: 100,\n });\n plotBands.push({\n id: \"pb-yellow\",\n color: \"rgba(226,226,29,0.5)\",\n from: this.redLine?.y,\n to: this.yellowLine?.y,\n });\n plotBands.push({\n name: \"pb-red\",\n color: \"rgba(196,59,59,0.5)\",\n from: -100,\n to: this.redLine?.y,\n });\n } else {\n // Red at the top, green at the bottom\n plotBands.push({\n name: \"pb-red\",\n color: \"rgba(196,59,59,0.5)\",\n from: this.redLine?.y,\n to: 100,\n });\n plotBands.push({\n id: \"pb-yellow\",\n color: \"rgba(226,226,29,0.5)\",\n from: this.yellowLine?.y,\n to: this.redLine?.y,\n });\n plotBands.push({\n name: \"pb-green\",\n color: \"rgba(69,186,69,0.5)\",\n from: -100,\n to: this.yellowLine?.y,\n });\n }\n return plotBands;\n }\n\n get plotLines(): any {\n if (this.isBenchmarking) return [];\n\n const plotLines: any = [];\n if (this.redOffset && this.yellowOffset && this.redOffset < this.yellowOffset) {\n plotLines.push({\n id: \"red-yellow-line\",\n value: this.redLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n plotLines.push({\n id: \"yellow-green-line\",\n value: this.yellowLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n } else {\n plotLines.push({\n id: \"red-yellow-line\",\n value: this.yellowLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n plotLines.push({\n id: \"yellow-green-line\",\n value: this.redLine?.y,\n color: \"#888888\",\n zIndex: 1,\n width: 1,\n });\n }\n return plotLines;\n }\n\n get series(): any {\n const series: any = [];\n if (!this.isBenchmarking) {\n series.push({\n name: \"Baseline\",\n type: \"line\",\n color: \"#000000\",\n lineWidth: 1,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.startDate)).getTime(), 0],\n [new Date(this.formatDatetimeToUTC(this.endDate)).getTime(), 0],\n ],\n });\n\n series.push({\n name: \"Trendline\",\n type: \"line\",\n lineWidth: 3,\n color: \"#008000\",\n zIndex: 3,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.trendline?.start.x)).getTime(), this.trendline?.start.y],\n [new Date(this.formatDatetimeToUTC(this.trendline?.end.x)).getTime(), this.trendline?.end.y],\n ],\n });\n\n series.push({\n name: \"Benchmark\",\n type: \"line\",\n dashStyle: \"dash\",\n color: \"#0000FF\",\n zIndex: 2,\n enableMouseTracking: false,\n marker: {\n enabled: false,\n },\n data: [\n [new Date(this.formatDatetimeToUTC(this.benchmarkPoint?.x)).getTime(), this.benchmarkPoint?.y],\n [new Date(this.formatDatetimeToUTC(this.endDate)).getTime(), this.benchmarkPoint?.y],\n ],\n });\n }\n\n const longTrendData = [];\n if (this.longTrendData) {\n for (var j = 0; j < this.longTrendData.length; j++) {\n longTrendData.push([new Date(this.formatDatetimeToUTC(this.longTrendData[j].x)).getTime(), this.longTrendData[j].y]);\n }\n }\n series.push({\n name: \"Long trend\",\n type: \"scatter\",\n enableMouseTracking: true,\n data: longTrendData,\n });\n\n if (this.trialPoints && this.trialPoints.length > 0) {\n const trialPoints = [];\n for (var j = 0; j < this.trialPoints.length; j++) {\n trialPoints.push([new Date(this.formatDatetimeToUTC(this.trialPoints[j].x)).getTime(), this.trialPoints[j].y]);\n }\n\n series.push({\n name: \"Trials\",\n type: \"scatter\",\n color: \"#0000FF\",\n enableMouseTracking: true,\n zIndex: 1,\n marker: {\n enabled: true,\n symbol: \"diamond\",\n radius: 3,\n fillColor: \"#8989ff\",\n },\n data: trialPoints,\n });\n }\n return series;\n }\n\n round(value: number, precision = 1): number {\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n\n formatDateForDisplay(date: any): string {\n return moment(date).format(\"DD.MMM YYYY\");\n }\n\n eventIcon(eventType: string): string {\n return eventType === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\";\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!./GraphCard.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!./GraphCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GraphCard.vue?vue&type=template&id=6d8a5ff8&scoped=true&\"\nimport script from \"./GraphCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GraphCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GraphCard.vue?vue&type=style&index=0&id=6d8a5ff8&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 \"6d8a5ff8\",\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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {VCard,VCardText,VSkeletonLoader})\n"],"sourceRoot":""}