{"version":3,"sources":["webpack:///./src/views/vessel/Diagnostics/index.vue?7ae6","webpack:///./src/views/vessel/Diagnostics/DiagnosticsKyma.vue?e69a","webpack:///./src/Scripts/clients/long-trend-export-client.js","webpack:///./src/components/EditVesselEvent.vue?4619","webpack:///./src/components/EditVesselEvent.vue","webpack:///./src/components/EditVesselEvent.vue?308f","webpack:///./src/components/EditVesselEvent.vue?78b9","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?acfb","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?94eb","webpack:///./src/components/diagnosticsDetails/GraphCard.vue","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?3bea","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?1ca1","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?4190","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?aa4b","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?d1f6","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?e811","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/components/DiagnosticCard.vue?9de6","webpack:///./src/types/highcharts/plotLine.ts","webpack:///./src/components/diagnostics/TrendEventBenefit.vue?e4af","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/views/vessel/Diagnostics/DiagnosticsKyma.vue","webpack:///./src/views/vessel/Diagnostics/DiagnosticsKyma.vue?1e16","webpack:///./src/views/vessel/Diagnostics/DiagnosticsKyma.vue?4c1b","webpack:///./src/views/vessel/Diagnostics/DiagnosticsISO.vue?026f","webpack:///./src/Scripts/utilities/auto-granularity.js","webpack:///./src/components/Vessel/VesselEventsTable.vue?63c2","webpack:///./src/components/Vessel/VesselEventsTable.vue","webpack:///./src/components/Vessel/VesselEventsTable.vue?abc7","webpack:///./src/components/Vessel/VesselEventsTable.vue?8cae","webpack:///./src/components/PerformanceIndicatorChart.vue?2381","webpack:///./src/components/PerformanceIndicatorChart.vue","webpack:///./src/components/PerformanceIndicatorChart.vue?9cd6","webpack:///./src/components/PerformanceIndicatorChart.vue?8ad5","webpack:///./src/views/vessel/Diagnostics/DiagnosticsISO.vue","webpack:///./src/views/vessel/Diagnostics/DiagnosticsISO.vue?1844","webpack:///./src/views/vessel/Diagnostics/DiagnosticsISO.vue?4df7","webpack:///./src/views/vessel/Diagnostics/index.vue","webpack:///./src/views/vessel/Diagnostics/index.vue?cbd2","webpack:///./src/views/vessel/Diagnostics/index.vue?e492","webpack:///./src/components/diagnosticsDetails/GraphCard.vue?5b10","webpack:///./src/views/vessel/Diagnostics/index.vue?e91d","webpack:///./src/components/DiagnosticCard.vue?cdec","webpack:///./node_modules/highcharts/modules/no-data-to-display.js","webpack:///./src/components/LoadingTextWave.vue?b4c3","webpack:///./src/views/vessel/Diagnostics/DiagnosticsKyma.vue?1068","webpack:///./src/components/diagnosticsDetails/ResultCard.vue?b371","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/components/PerformanceIndicatorChart.vue?2d60","webpack:///./src/components/LoadingTextWave.vue?b11b","webpack:///src/components/LoadingTextWave.vue","webpack:///./src/components/LoadingTextWave.vue?640c","webpack:///./src/components/LoadingTextWave.vue?fc23","webpack:///./src/components/diagnosticsDetails/DiagnosticsDetails.vue?cf38","webpack:///./src/components/diagnosticsDetails/BenchmarkCard.vue?143c","webpack:///./src/components/Vessel/VesselEventsTable.vue?264b"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","DiagnosticViewTypes","on","onViewTypeChanged","model","value","callback","$$v","DiagnosticViewType","expression","component","tag","staticRenderFns","_e","staticStyle","scopedSlots","_u","key","fn","_v","proxy","nativeOn","$event","stopPropagation","createEvent","eventTableHeaders","eventTableRows","ref","header","_s","text","_g","item","formatEventDate","date","type","origin","editEvent","event","deleteEvent","preventDefault","exportExcel","EditEventOpen","notification","duration","$set","message","_l","trend","longTrend","id","name","showDiagnosticsDetails","LongTrendExportClient","prototype","vesselId","filter","net","fileDownload","exportExcelPeriod","longTrendId","startDate","endDate","indexOf","_k","keyCode","cancel","apply","arguments","dialog","title","submitting","handleSubmit","isFormValid","nameValidation","required","typeSelectValidation","trendEventTypes","selectTrendEventType","selectedType","_b","dateValidation","timeStamp","dateMenu","VesselEvents","getModule","VesselEventsModule","store","Vessels","VesselsModule","EditVesselEvent","isNewEvent","source","typeId","currentVessel","trendEventTypeId","val","$nextTick","typeSelect","reset","trendEventType","trendEventTypeName","vesselEvent","setFieldData","Promise","resolve","reject","payload","timestamp","confirm","resetFieldData","split","Vue","__decorate","Ref","PropSync","Boolean","default","Watch","Component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VDatePicker","VDialog","VForm","VMenu","VRadio","VRadioGroup","VSelect","VSpacer","VTextField","close","directives","rawName","loading","hasPreviousPeriod","previousPeriod","customBenchmarkPeriod","benchmarkPeriod","hasNextPeriod","nextPeriod","updateData","customPeriod","chartOptions","chartReady","LongTrendPeriod","LongTrendPeriodModule","GraphCard","chart","addEventLabels","cmax","isRpm","cmin","yAxis","setExtremes","datetime","endsWith","infoEvents","forEach","html","eventIcon","formatDateForDisplay","xAxis","addPlotLine","Date","formatDatetimeToUTC","getTime","color","width","label","rotation","style","useHTML","y","x","longTrendPeriod","meta","longTrendData","isBenchmarking","isManualBenchmark","benchmarkPoint","benchmarkZone","from","to","isRpmDiagnostic","redOffset","yellowOffset","yellowLine","redLine","start","end","trendline","trialPoints","vesselName","description","time","useUTC","zoomType","spacingRight","marginTop","animation","spacingTop","credits","enabled","legend","gridLineWidth","plotBands","benchmarkingZone","zIndex","plotLines","events","e","setTimeout","resetZoomButton","update","min","max","labels","yAxisLabel","gridLineColor","tickPixelInterval","tooltip","headerFormat","pointFormat","valueDecimals","valueSuffix","xDateFormat","plotOptions","series","marker","symbol","radius","lineWidth","lineColor","fillColor","exporting","filename","exportName","exportTitle","unitName","unitCaption","push","enableMouseTracking","data","dashStyle","j","length","precision","multiplier","Math","pow","round","moment","format","eventType","Prop","components","highcharts","Chart","VSkeletonLoader","domProps","pointCount","outlierPointsCount","remainingPointsCount","_f","periodStart","periodEnd","periodMenu","updateBenchmarkPeriod","isBenchmarkFormValid","benchmarkPeriodRules","valid","points","submittingBenchmarkPeriod","resetBenchmarkPeriod","abs","BenchmarkCard","$emit","longTrendPeriods","filteredLongTrendData","requireBenchmarkPoints","immediate","VIcon","VList","VListItem","VListItemContent","VSystemBar","VTooltip","diffPerMonth","diffPerYear","correlation","standardDeviation","averageMean","trendFunction","StatisticsCard","statistics","limit","i","$options","filters","dateDMY","exportedAt","minPower","windSpeed","minTime","limits","LimitsCard","trendLimits","performanceStatusVSBenchmark","draft","draftMenu","handleUpdateDraft","isDraftFormValid","draftRules","$data","draftLoading","hasConsequenceResults","consequences","consequence","headerName","mcrDisplay","result","displayValue","diagnosticTypeName","yellowPrediction","redPrediction","ResultCard","_draft","consequencesLoading","getConsequences","updateVesselDraft","ConsequencesClient","find","then","results","toLowerCase","isCurrent","showYellowPrediction","showRedPrediction","redLineReached","yellowLineReached","now","verb","VAlert","VSimpleTable","Snackbar","SnackbarModule","DiagnosticsDetails","utc","nextPeriodStartDate","valueOf","toISOString","nextPeriodEndDate","previousPeriodStartDate","previousPeriodEndDate","nextPeriodStart","nextPeriodEnd","periodMeta","prevPeriodStart","prevPeriodEnd","all","updateMeta","updateLongTrendPeriod","updateStatistics","updateTrendLimits","showSnackbar","clonedMeta","Object","assign","DELETE_DATA","VCol","VDivider","VRow","VToolbar","VToolbarTitle","statusIcon","descriptionLong","tooltipText","isLongTrendsLoading","showError","performanceStatusColor","performanceStatusIcon","benchmarkType","icon","useManualBenchmarkLevel","benchmarkLevelInputRules","resetManualBenchmarkLevel","manualBenchmarkLevel","isBenchmarkLevelSettingsLoading","disableSaveBenchmarkLevelSettings","updateBenchmarkLevelSettings","DefaultVesselEventPlotline","trendEvents","fetchBenefitData","selectedTrendEvent","errorText","benefitData","benefitDate","prevEndValue","toFixed","nextBenchmarkValue","tableHeaders","tableItems","benefitText","TrendEventBenefits","BenefitsModule","TrendEventBenefit","isBenefitLoading","loadBenefitError","fetchBenefit","trendEventId","diagnosticTypesHelper","getBenefitText","diagnosticType","headers","items","MCR","VDataTable","HighchartsNoData","Highcharts","LongTrends","LongTrendsModule","DiagnosticCard","vessel","fetchVesselLongTrendPeriods","console","warn","vesselLongTrendByName","longTrendName","allEvents","DiagnosticTypesHelper","getHelpText","performanceStatus","eventTimestamp","vesselEvents","vesselEventsOnSameDate","map","index","join","getPlotLineLabels","getVesselEventsOnSameDate","JSON","parse","stringify","eventColor","period","className","click","getLongTrendPeriodMeta","mouseover","target","attributes","getNamedItem","mouseout","benchmarkingData","dataPoint","visible","firstLongTrendPeriod","options","height","vesselEventPlotLines","vesselEventPlotBands","dataSeries","backgroundColor","borderWidth","toString","updatedLongTrend","updateVesselLongTrend","updateCurrentVesselById","LoadingTextWave","VCheckbox","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VSheet","DiagnosticsKyma","detailsError","isLoading","align","sortable","features","some","feature","vesselLongTrends","tableRows","actions","fetchEvents","updateTrendEventTypes","fetchVesselLongTrends","editVessel","open","success","confirmDelete","confirmed","diagnosticsDetails","FeatureNotAvailable","ConfirmDialog","VSnackbar","eventsByVesselId","ISO19030PerformanceLogVariable","logDataMinDate","eventUpdated","getISOChartTypePeriods","ISO19030PerformanceLogData","isAnyEventUpdated","selectedTimeInMinutes","maxWidth","openEventModal","eventModal","eventTypes","indockingDateMenu","startTimestamp","outdockingDateMenu","formattedDataMinDate","thresholdValidation","_n","v","isSaveButtonDisabled","saveEvent","ISO19030","ISO19030Module","VesselEventsTable","isEventEditing","endTimestamp","maintenanceThreshold","comment","Number","$route","params","syncEvents","isEventMaintenance","dataMinDate","dateHelper","getFormatedDateString","dates","mode","row","updateEvent","resetFormData","titleFontSize","VTextarea","ChartOptions","chartEvents","selectedEvent","htmlStatistics","isEvaluationPeriodAvailable","hasCalculatedPeriods","PerformanceIndicatorChart","chartLoaded","mutatedPeriods","periods","reflow","setDryDockingEvaluationPeriod","setEvaluationPeriodAverage","setReferencesPeriodsAverage","setDryDockingDifferenceInPerformance","setSelectedReferencePeriodAverage","setDifferenceInPerformanceOfSelectedEvent","setTriggerValue","selectedEvaluationPeriod","formatDateString","periodStartDate","selectedReferencePeriod","periodEndDate","periodType","referencePeriods","reduce","acc","average","findPeriodOfSelectedEvent","eventId","evaluationPeriods","lastDryDockingEvent","currentDate","dryDockingEvents","diff","lastMaintenanceEvent","maintenanceEvents","isMaintenanceEffectChart","differenceInPerformanceOfSelectedEvent","includes","referencePeriodsWithoutCurrentAverage","triggerValue","referencePeriodsWithoutCurrent","isBefore","dryDockingDifferenceInPerformance","isDryDockingChart","set","periodLines","PeriodLine","isPeriodReferenceType","firstReferenceIndex","findIndex","line","firstEvaluationIndex","delete","startDateMS","endDateMS","periodLineLabel","linkedTo","dateMS","dataLabels","formatter","performanceData","remove","scatterPoints","entries","scatterPointsSerie","stickyTracking","maintenancePlotLines","dockingPlotLines","dryDockingPlotBands","selectedEventPlotBand","getPlotLineLabelsHtml","letter","plotBandStartDate","plotBandEndDate","eventPeriods","isAfter","fontFamily","ctx","chartSettings","scatter","outside","states","inactive","opacity","seriesData","LogVariables","LogVariablesModule","DiagnosticsISO","performanceIndicatorsLogVariable","ISOChartTypes","performanceIndicators","chartName","logVariableByName","_","isEmpty","minDate","maxDate","logDataMaxDate","minutesDiff","LogDataClient","findLogData","autoGranularity","fromDate","toDate","fetchPerformanceIndicators","fetchPerformanceIndicatorsData","state","initViewData","Store","Diagnostics","log","localStorage","setItem","strDiagnosticViewType","getItem","currentVesselLogVariables","refreshCurrentVesselLogVariables","parseInt","setDiagnosticViewType","a","module","exports","b","d","hasOwnProperty","_modules","f","getOptions","addEvent","g","extend","lang","noData","attr","position","verticalAlign","fontWeight","fontSize","showNoData","c","renderer","noDataLabel","add","styledMode","filterUserAttributes","css","getBBox","hideNoData","destroy","hasData","isInternal","loadingShown","baseMixins","mixins","props","autoGrow","noResize","rowHeight","String","validator","isNaN","parseFloat","rows","computed","classes","noResizeHandle","call","watch","calculateInputHeight","$refs","input","_this$$refs$input","removeProperty","lazyValue","mounted","methods","scrollHeight","minHeight","genInput","onInput","onKeyDown","isFocused","_m"],"mappings":"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","file":"js/chunk-6e33e60e.ac15cf8a.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"diagnostics pt-15\"},[_c('v-card',{staticClass:\"diagnostic-view-select\",attrs:{\"color\":\"accent\",\"elevation\":\"3\",\"dark\":\"\"}},[_c('v-select',{attrs:{\"items\":_vm.DiagnosticViewTypes,\"item-text\":\"text\",\"label\":\"Diagnostics View Type\",\"hide-details\":\"\",\"return-object\":\"\",\"rounded\":\"\",\"filled\":\"\",\"dense\":\"\",\"dark\":\"\"},on:{\"change\":_vm.onViewTypeChanged},model:{value:(_vm.DiagnosticViewType),callback:function ($$v) {_vm.DiagnosticViewType=$$v},expression:\"DiagnosticViewType\"}})],1),_c(_vm.DiagnosticViewType.component,{tag:\"component\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.featureEnabled)?_c('div',[(_vm.isLoading)?[_c('v-skeleton-loader',{attrs:{\"type\":\"table\",\"max-width\":\"800\"}}),(_vm.isLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"image, list-item-two-line, image, list-item-two-line, image, list-item-two-line\"}}):_vm._e()]:[_c('v-expansion-panels',{staticStyle:{\"max-width\":\"800px\"}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"white--text\",attrs:{\"color\":\"primary\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" $expand \")])]},proxy:true}],null,false,2794704483)},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"Events\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"mr-3 font-weight-bold\",attrs:{\"small\":\"\",\"color\":\"white\",\"max-width\":\"150\"},nativeOn:{\"click\":function($event){$event.stopPropagation();return _vm.createEvent()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" New event \")],1)],1),_c('v-expansion-panel-content',[_c('v-data-table',{attrs:{\"headers\":_vm.eventTableHeaders,\"items\":_vm.eventTableRows,\"dense\":\"\",\"loading-text\":\"Loading... Please wait\",\"no-data-text\":\"No events\",\"hide-default-footer\":\"\",\"disable-pagination\":\"\",\"fixed-header\":\"\",\"sort-by\":\"date\",\"sort-desc\":true},scopedSlots:_vm._u([{key:\"header.date\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.name\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.type\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Event can be either 'Trend event' or 'Info event'\")])])]}},{key:\"header.origin\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({staticClass:\"primary--text\"},on),[_vm._v(_vm._s(header.text))])]}}],null,true)},[_c('span',[_vm._v(\"Where was the event created\")])])]}},{key:\"header.actions\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"item.date\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',[_vm._v(\" \"+_vm._s(_vm.formatEventDate(item.date))+\" \")])]}},{key:\"item.type\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":item.type === 'TrendEvent' ? 'success' : 'info'}},on),[_vm._v(\" \"+_vm._s(item.type === \"TrendEvent\" ? \"mdi-alpha-t-circle\" : \"mdi-alpha-i-circle\")+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.type))])])]}},{key:\"item.origin\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({},on),[_vm._v(_vm._s(item.origin === \"Office\" ? \"mdi-home\" : \"mdi-ferry\"))])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.origin))])])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"mr-4\",attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.editEvent(item.event)}}},on),[_c('v-icon',[_vm._v(\"mdi-pencil\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Edit event\")])]),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteEvent(item.event)}}},on),[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Delete event\")])])]}}],null,true)})],1)],1)],1),_c('v-divider',{staticClass:\"my-3\"}),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"mb-3 mx-auto\",attrs:{\"small\":\"\",\"href\":\"#\",\"color\":\"primary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.exportExcel()}}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-microsoft-excel\")]),_vm._v(\" Export all \")],1)]}}],null,false,3134385231)},[_c('span',[_vm._v(\"Export all diagnostics data to Excel\")])]),_c('ConfirmDialog',{ref:\"confirmDelete\"}),_c('EditVesselEvent',{ref:\"editVessel\",attrs:{\"isOpen\":_vm.EditEventOpen},on:{\"update:isOpen\":function($event){_vm.EditEventOpen=$event},\"update:is-open\":function($event){_vm.EditEventOpen=$event}}}),_c('DiagnosticsDetails',{ref:\"diagnosticsDetails\"}),_c('v-snackbar',{attrs:{\"timeout\":_vm.notification.duration,\"color\":\"primary\"},model:{value:(_vm.notification.visible),callback:function ($$v) {_vm.$set(_vm.notification, \"visible\", $$v)},expression:\"notification.visible\"}},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"dark\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(_vm._s(_vm.notification.message)+\" \")],1),_c('div',{staticClass:\"d-flex flex-column\"},_vm._l((_vm.vesselLongTrends),function(trend){return _c('DiagnosticCard',{key:trend.longTrend.id,attrs:{\"longTrendName\":trend.longTrend.name},on:{\"plotBandClicked\":_vm.showDiagnosticsDetails}})}),1)]],2):_c('FeatureNotAvailable')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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","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))])]),_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:{\"label\":\"Info event\",\"value\":\"InfoEvent\"}}),_c('v-radio',{attrs:{\"label\":\"Trend event\",\"value\":\"TrendEvent\"}})],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',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}}},[_vm._v(\"Cancel\")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"form\":\"edit-event-form\",\"loading\":_vm.submitting,\"disabled\":!_vm.isFormValid}},[_vm._v(\"Save\")])],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\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.resetFieldData();\n this.resolve(false);\n this.dialog = false;\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=93a12720&\"\nimport script from \"./EditVesselEvent.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditVesselEvent.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { 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 { 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,VMenu,VRadio,VRadioGroup,VSelect,VSpacer,VTextField})\n","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',{attrs:{\"color\":\"primary\",\"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',{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\":\"\"}},[(_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\";\nimport { ILongTrendPeriod } from \"@/types/longTrendPeriod\";\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendPeriodModule from \"@/store/clients/LongTrendPeriod.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\nimport { LongTrendPeriodMeta } from \"@/types/longTrendPeriodMeta\";\nimport { GraphPoint } from \"@/types/graphPoint\";\nimport { TrendLine } from \"@/types/trendLine\";\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=270489e4&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=270489e4&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 \"270489e4\",\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","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({attrs:{\"text\":\"\",\"outlined\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Edit benchmark period \")])]}}],null,false,1966902776),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',{attrs:{\"type\":\"submit\",\"form\":\"update-benchmark-period\",\"color\":\"primary\",\"loading\":_vm.submittingBenchmarkPeriod,\"disabled\":!_vm.isBenchmarkFormValid}},[_vm._v(\"Update\")]),_c('v-btn',{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\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=5b595898&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=5b595898&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 \"5b595898\",\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',{attrs:{\"type\":\"submit\",\"form\":\"update-draft\",\"color\":\"primary\",\"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\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=455a5bd8&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=455a5bd8&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 \"455a5bd8\",\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\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=3d5de4fe&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=3d5de4fe&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 \"3d5de4fe\",\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"card mb-5\"},[_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\")])]}}])},[_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}])},[_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}])},[_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))])]}}])},[_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=$$v},expression:\"manualBenchmarkLevel\"}}),_c('v-btn',{attrs:{\"color\":\"primary\",\"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)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//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 _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\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 @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\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(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=4b84153c&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=4b84153c&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 \"4b84153c\",\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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Ref, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport moment from \"moment\";\nimport LongTrendExportClient from \"@/Scripts/clients/long-trend-export-client\";\n//modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LongTrendsModule from \"@/store/clients/LongTrends.module\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\nimport VesselEventsModule from \"@/store/clients/VesselEvents.module\";\n//components\nimport FeatureNotAvailable from \"@/components/FeatureNotAvailable.vue\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\nimport EditVesselEvent from \"@/components/EditVesselEvent.vue\";\nimport DiagnosticsDetails from \"@/components/diagnosticsDetails/DiagnosticsDetails.vue\";\nimport DiagnosticCard from \"@/components/DiagnosticCard.vue\";\n//types\nimport { VesselEvent } from \"@/types/vesselEvent\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\nimport { IVesselLongTrends } from \"@/types/vesselLongTrends\";\n\nconst Vessels = getModule(VesselsModule, store);\nconst VesselEvents = getModule(VesselEventsModule, store);\nconst LongTrends = getModule(LongTrendsModule, store);\n\n@Component({\n components: {\n FeatureNotAvailable,\n ConfirmDialog,\n EditVesselEvent,\n DiagnosticsDetails,\n DiagnosticCard,\n },\n})\nexport default class DiagnosticsKyma extends Vue {\n @Ref(\"confirmDelete\") confirmDelete!: any;\n @Ref(\"editVessel\") editVessel!: any;\n @Ref(\"diagnosticsDetails\") diagnosticsDetails!: any;\n EditEventOpen = false;\n detailsError = false;\n notification = {\n message: \"\",\n duration: 2000,\n visible: false,\n };\n\n isLoading = true;\n showError = false;\n\n get vessel(): ExtendedVessel | null {\n return Vessels.currentVessel;\n }\n\n get featureEnabled(): boolean {\n if (!this.vessel) return false;\n return this.vessel.features.some(feature => feature.name === \"Diagnostics\");\n }\n\n get vesselLongTrends(): IVesselLongTrends {\n return LongTrends.vesselLongTrends;\n }\n\n get events(): VesselEvent[] {\n return VesselEvents.allEvents;\n }\n\n eventTableHeaders = [\n { text: \"Date\", align: \"start\", sortable: false, value: \"date\" },\n { text: \"Name\", align: \"start\", sortable: false, value: \"name\" },\n { text: \"Type\", align: \"start\", sortable: false, value: \"type\" },\n { text: \"Origin\", align: \"start\", sortable: false, value: \"origin\" },\n { text: \"Actions\", align: \"start\", sortable: false, value: \"actions\" },\n ];\n\n get eventTableRows(): any[] {\n const tableRows: any[] = [];\n\n this.events.forEach(event => {\n tableRows.push({\n event,\n date: event.timestamp,\n name: event.name,\n type: event.type,\n origin: event.source,\n actions: [\"edit\", \"delete\"],\n });\n });\n\n return tableRows;\n }\n\n async created(): Promise {\n if (!this.vessel) {\n this.showError = true;\n } else {\n try {\n await Promise.all([VesselEvents.fetchEvents(this.vessel.id), VesselEvents.updateTrendEventTypes(), LongTrends.fetchVesselLongTrends(this.vessel.id)]);\n } catch (error) {\n console.warn(error);\n this.showError = true;\n } finally {\n this.isLoading = false;\n }\n }\n }\n\n async createEvent(): Promise {\n const success = await this.editVessel.open();\n if (success) {\n this.notification.message = \"Event created\";\n this.notification.visible = true;\n this.vessel ? LongTrends.fetchVesselLongTrends(this.vessel.id) : null;\n }\n }\n\n async editEvent(vesselEvent: VesselEvent): Promise {\n const success = await this.editVessel.open(vesselEvent);\n if (success) {\n this.notification.message = \"Event edited\";\n this.notification.visible = true;\n this.vessel ? LongTrends.fetchVesselLongTrends(this.vessel.id) : null;\n }\n }\n\n async deleteEvent(vesselEvent: VesselEvent): Promise {\n const confirmed = await this.confirmDelete.open(`Delete ${vesselEvent.name}`, \"Are you sure you want to delete this event?\");\n if (confirmed) {\n await VesselEvents.deleteEvent(vesselEvent);\n this.notification.message = \"Event deleted\";\n this.notification.visible = true;\n this.vessel ? LongTrends.fetchVesselLongTrends(this.vessel.id) : null;\n }\n }\n\n showDiagnosticsDetails(data: any): void {\n if (!data.vesselId) return;\n this.diagnosticsDetails.open(data);\n }\n\n exportExcel(): void {\n if (this.vessel) {\n LongTrendExportClient.exportExcel(this.vessel.id);\n }\n }\n\n formatEventDate(date: string): string {\n return moment.utc(date).format(\"DD.MMM YYYY\");\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!./DiagnosticsKyma.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!./DiagnosticsKyma.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DiagnosticsKyma.vue?vue&type=template&id=fdb1cb6a&scoped=true&\"\nimport script from \"./DiagnosticsKyma.vue?vue&type=script&lang=ts&\"\nexport * from \"./DiagnosticsKyma.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DiagnosticsKyma.vue?vue&type=style&index=0&id=fdb1cb6a&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 \"fdb1cb6a\",\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 { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VDataTable,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSkeletonLoader,VSnackbar,VSpacer,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.featureEnabled)?_c('div',[(_vm.isLoading)?_c('div',[_c('v-skeleton-loader',{attrs:{\"type\":\"table\",\"max-width\":\"800\"}}),(_vm.isLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"image, list-item-two-line, image, list-item-two-line, image, list-item-two-line\"}}):_vm._e()],1):_c('div',{staticClass:\"diagnostics-iso\"},[_c('VesselEventsTable',{attrs:{\"eventsList\":_vm.eventsByVesselId,\"dataMinDate\":_vm.ISO19030PerformanceLogVariable.logDataMinDate},on:{\"update:eventsList\":function($event){_vm.eventsByVesselId=$event},\"update:events-list\":function($event){_vm.eventsByVesselId=$event},\"eventUpdated\":_vm.eventUpdated}}),_vm._l((_vm.ISOChartTypes),function(chart,i){return _c('PerformanceIndicatorChart',{key:(\"\" + chart + i),attrs:{\"title\":chart,\"periods\":_vm.getISOChartTypePeriods(chart),\"eventsList\":_vm.eventsByVesselId,\"performanceData\":_vm.ISO19030PerformanceLogData,\"isAnyEventUpdated\":_vm.isAnyEventUpdated},on:{\"update:eventsList\":function($event){_vm.eventsByVesselId=$event},\"update:events-list\":function($event){_vm.eventsByVesselId=$event}}})})],2)]):_c('FeatureNotAvailable',{scopedSlots:_vm._u([{key:\"text\",fn:function(){return [_c('p',[_vm._v(\" We are sorry, the \"),_c('strong',[_vm._v(\"ISO19030\")]),_vm._v(\" module is not activated for \"),_c('span',[_vm._v(_vm._s(_vm.vessel.name))]),_vm._v(\".\"),_c('br'),_vm._v(\" This module requires that the vessel is equipped with a \"),_c('b',[_vm._v(\"Delfini\")]),_vm._v(\" ship performance system. \")]),_c('p',{staticClass:\"mb-0\"},[_vm._v(\"Please contact \"),_c('a',{attrs:{\"href\":\"mailto:sales@danelec.com\"}},[_vm._v(\"sales@danelec.com\")]),_vm._v(\" for more information about \"),_c('b',[_vm._v(\"ISO19030\")]),_vm._v(\" and \"),_c('b',[_vm._v(\"Delfini\")]),_vm._v(\".\")])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function(selectedTimeInMinutes) {\r\n if (selectedTimeInMinutes <= 1440) {\r\n return \"Raw\";\r\n } else if (selectedTimeInMinutes <= 2880) {\r\n return \"Minute\";\r\n } else if (selectedTimeInMinutes <= 20160) {\r\n return \"QuarterHour\";\r\n } else if (selectedTimeInMinutes <= 129600) {\r\n return \"Hour\";\r\n }\r\n\r\n return \"Day\";\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-expansion-panels',{style:((\"max-width: \" + _vm.maxWidth + \"px;\")),attrs:{\"value\":0}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"white--text\",attrs:{\"color\":\"primary\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" $expand \")])]},proxy:true}])},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"Events\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"mr-3 font-weight-bold\",attrs:{\"small\":\"\",\"color\":\"white\",\"max-width\":\"150\"},nativeOn:{\"click\":function($event){$event.stopPropagation();return _vm.openEventModal()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" New event \")],1)],1),_c('v-expansion-panel-content',[_c('v-data-table',{attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.tableRows,\"dense\":\"\",\"loading-text\":\"Loading... Please wait\",\"no-data-text\":\"No events\",\"items-per-page\":10,\"sort-by\":\"date\",\"sort-desc\":true},scopedSlots:_vm._u([{key:\"header.dates\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.actions\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"header.eventType\",fn:function(ref){\nvar header = ref.header;\nreturn [_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(header.text))])]}},{key:\"item.dates\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',[_vm._v(\" \"+_vm._s(_vm.formatEventDate(item))+\" \")])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.openEventModal('edit', item)}}},on),[_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"primary lighten-3\"}},[_vm._v(\"mdi-pencil\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Edit event\")])]),_c('v-tooltip',{attrs:{\"top\":\"\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteEvent(item)}}},on),[_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"primary lighten-3\"}},[_vm._v(\"mdi-delete\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Delete event\")])])]}}],null,true)})],1)],1)],1),_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.eventModal),callback:function ($$v) {_vm.eventModal=$$v},expression:\"eventModal\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Create event\")])]),_c('v-form',{staticClass:\"mt-2\"},[_c('v-card-text',[_c('v-select',{attrs:{\"rules\":[_vm.typeSelectValidation.required],\"value\":\"trendEventTypeName\",\"label\":\"Event type\",\"prepend-icon\":\"mdi-format-list-bulleted-type\",\"items\":_vm.eventTypes,\"item-text\":\"trendEventTypeName\",\"item-value\":\"trendEventTypeId\"},model:{value:(_vm.event.eventType),callback:function ($$v) {_vm.$set(_vm.event, \"eventType\", $$v)},expression:\"event.eventType\"}}),(_vm.isEventDryDocking)?_c('div',[_c('div',{staticClass:\"d-flex\"},[_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\":\"In-docking date\",\"prepend-icon\":\"mdi-calendar\",\"readonly\":\"\"},model:{value:(_vm.event.startTimestamp),callback:function ($$v) {_vm.$set(_vm.event, \"startTimestamp\", $$v)},expression:\"event.startTimestamp\"}},'v-text-field',attrs,false),on))]}}],null,false,2735545862),model:{value:(_vm.indockingDateMenu),callback:function ($$v) {_vm.indockingDateMenu=$$v},expression:\"indockingDateMenu\"}},[_c('v-date-picker',{on:{\"input\":function($event){_vm.indockingDateMenu = false}},model:{value:(_vm.event.startTimestamp),callback:function ($$v) {_vm.$set(_vm.event, \"startTimestamp\", $$v)},expression:\"event.startTimestamp\"}})],1),_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\":\"Out-docking date\",\"prepend-icon\":\"mdi-calendar\",\"disabled\":_vm.event.startTimestamp === null,\"readonly\":\"\"},model:{value:(_vm.event.endTimestamp),callback:function ($$v) {_vm.$set(_vm.event, \"endTimestamp\", $$v)},expression:\"event.endTimestamp\"}},'v-text-field',attrs,false),on))]}}],null,false,3474714540),model:{value:(_vm.outdockingDateMenu),callback:function ($$v) {_vm.outdockingDateMenu=$$v},expression:\"outdockingDateMenu\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.event.startTimestamp},on:{\"input\":function($event){_vm.outdockingDateMenu = false}},model:{value:(_vm.event.endTimestamp),callback:function ($$v) {_vm.$set(_vm.event, \"endTimestamp\", $$v)},expression:\"event.endTimestamp\"}})],1),_c('v-tooltip',{attrs:{\"top\":\"\",\"max-width\":\"400px\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"mb-1 ml-1 flex-grow-0\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"color\":\"primary lighten-2\",\"left\":\"\"}},on),[_vm._v(\"mdi-alert-circle\")])]}}],null,false,411864530)},[_c('span',{staticClass:\"mx-auto\"},[_vm._v(\"Started collecting speed-loss performance-values \"+_vm._s(_vm.formattedDataMinDate)+\". Will not be able to calculate vessel performance according to ISO 19030 before this date.\")])])],1),_c('v-text-field',{staticClass:\"mb-2\",attrs:{\"label\":\"Maintenance Threshold %\",\"prepend-icon\":\"mdi-percent-box-outline\",\"rules\":[_vm.thresholdValidation.required],\"type\":\"text\"},model:{value:(_vm.event.maintenanceThreshold),callback:function ($$v) {_vm.$set(_vm.event, \"maintenanceThreshold\", _vm._n($$v))},expression:\"event.maintenanceThreshold\"}})],1):_c('div',[_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\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"top\":\"\",\"max-width\":\"400px\",\"color\":\"primary lighten-2\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"mb-1 ml-1 flex-grow-0\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"color\":\"primary lighten-2\",\"left\":\"\"}},on),[_vm._v(\"mdi-alert-circle\")])]}}],null,true)},[_c('span',{staticClass:\"mx-auto\"},[_vm._v(\"Started collecting speed-loss performance-values \"+_vm._s(_vm.formattedDataMinDate)+\". Will not be able to calculate vessel performance according to ISO 19030 before this date.\")])])]},proxy:true}],null,true),model:{value:(_vm.event.startTimestamp),callback:function ($$v) {_vm.$set(_vm.event, \"startTimestamp\", $$v)},expression:\"event.startTimestamp\"}},'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.event.startTimestamp),callback:function ($$v) {_vm.$set(_vm.event, \"startTimestamp\", $$v)},expression:\"event.startTimestamp\"}})],1),_c('v-textarea',{attrs:{\"label\":\"Comment\",\"prepend-icon\":\"mdi-comment-outline\",\"rules\":[function (v) { return v && v.length <= 100 || 'Max 100 characters'; }],\"auto-grow\":\"\",\"rows\":\"2\",\"row-height\":\"20\",\"counter\":\"\",\"clearable\":\"\"},model:{value:(_vm.event.comment),callback:function ($$v) {_vm.$set(_vm.event, \"comment\", $$v)},expression:\"event.comment\"}})],1)],1),_c('v-card-actions',{staticClass:\"pt-3\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"form\":\"edit-event-form\",\"disabled\":_vm.isSaveButtonDisabled},on:{\"click\":_vm.saveEvent}},[_vm._v(\"Save\")]),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}}},[_vm._v(\"Cancel\")])],1)],1)],1)],1),_c('ConfirmDialog',{ref:\"confirmDelete\",staticClass:\"confirm-dialog\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Ref, Prop, PropSync } from \"vue-property-decorator\";\n// utilities\nimport moment from \"moment\";\nimport dateHelper from \"@/Scripts/utilities/date-helper\";\nimport store from \"@/store\";\n// components\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\n// types\nimport { ISO19030Event } from \"@/types/ISO19030Event\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport ISO19030Module from \"@/store/clients/ISO19030.module\";\nimport SnackbarModule from \"@/store/clients/Snackbar.module\";\n\nconst ISO19030 = getModule(ISO19030Module, store);\nconst Snackbar = getModule(SnackbarModule, store);\n\ninterface TableRow {\n id: number;\n eventType: string;\n actions: string[];\n dates: {\n startTimestamp: string | null;\n endTimestamp: string | null;\n };\n}\n\n@Component({\n components: {\n ConfirmDialog,\n },\n})\nexport default class VesselEventsTable extends Vue {\n @PropSync(\"eventsList\", { required: true }) syncEvents!: any;\n @Prop({ default: 800 }) maxWidth!: number;\n @Prop() dataMinDate!: string;\n @Ref(\"confirmDelete\") confirmDelete!: any;\n\n isLoading = false;\n eventModal = false;\n dateMenu = false;\n indockingDateMenu = false;\n outdockingDateMenu = false;\n isEventEditing = false;\n eventTypes = [\"Docking\", \"Maintenance\"];\n event: ISO19030Event = {\n id: 0,\n vesselId: this.vesselId,\n startTimestamp: null,\n endTimestamp: null,\n eventType: \"Maintenance\", // by default\n maintenanceThreshold: null,\n comment: \"\",\n };\n tableHeaders = [\n { text: \"Date\", align: \"start\", sortable: false, value: \"dates\" },\n { text: \"Type\", align: \"start\", sortable: false, value: \"eventType\" },\n { text: \"Actions\", align: \"start\", sortable: false, value: \"actions\" },\n ];\n\n thresholdValidation = {\n required: (value: string) => !!value || \"Maintenance Threshold required\",\n };\n\n dateValidation = {\n required: (value: string) => !!value || \"Event date required\",\n };\n\n typeSelectValidation = {\n required: (value: any) => !!value || \"Type required\",\n };\n\n get vesselId(): number {\n return Number(this.$route.params.vesselId);\n }\n\n get isEventDryDocking(): boolean {\n return this.event.eventType === \"Docking\";\n }\n\n get isEventMaintenance(): boolean {\n return this.event.eventType === \"Maintenance\";\n }\n\n get isNewEvent(): boolean {\n if (!this.event.id) return true;\n return Boolean(!this.syncEvents.find((event: ISO19030Event) => event.id === this.event.id));\n }\n\n get isSaveButtonDisabled(): boolean {\n if (this.isEventMaintenance) return Boolean(this.event.eventType === null || this.event.startTimestamp === null);\n else return Boolean(this.event.eventType === null || this.event.startTimestamp === null || this.event.endTimestamp === null || this.event.maintenanceThreshold === null);\n }\n\n get formattedDataMinDate(): string {\n return this.dataMinDate ? dateHelper.getFormatedDateString(this.dataMinDate) : \"N/A\";\n }\n\n get tableRows(): TableRow[] {\n if (!this.syncEvents.length) return [];\n const tableRows: TableRow[] = [];\n\n this.syncEvents.forEach((event: any) => {\n tableRows.push({\n id: event.id,\n eventType: event.eventType,\n actions: [\"edit\", \"delete\"],\n dates: {\n startTimestamp: event.startTimestamp,\n endTimestamp: event.endTimestamp,\n },\n });\n });\n return tableRows;\n }\n\n formatEventDate(item: any): string {\n if (item.dates.startTimestamp && item.dates.endTimestamp) {\n return `${moment.utc(item.dates.startTimestamp).format(\"DD.MMM YYYY\")} - ${moment.utc(item.dates.endTimestamp).format(\"DD.MMM YYYY\")}`;\n } else {\n return moment.utc(item.dates.startTimestamp).format(\"DD.MMM YYYY\");\n }\n }\n\n openEventModal(mode: string, row: TableRow): void {\n this.isEventEditing = mode ? mode === \"edit\" : false;\n if (this.isEventEditing) {\n // incoming format \"2020-03-16T00:00:00\" is not compatible with datepicker\n this.event = this.syncEvents.find((e: ISO19030Event) => e.id === row.id);\n this.event.startTimestamp = moment(this.event.startTimestamp).format(\"YYYY-MM-DD\");\n this.event.endTimestamp = moment(this.event.endTimestamp).format(\"YYYY-MM-DD\");\n }\n this.eventModal = true;\n }\n\n async saveEvent(): Promise {\n try {\n if (this.isEventEditing) {\n await ISO19030.updateEvent(this.event);\n this.$emit(\"eventUpdated\", true);\n } else await ISO19030.createEvent(this.event);\n this.eventModal = false;\n Snackbar.showSnackbar({ text: `Event ${this.event.eventType} was ${this.isEventEditing ? \"updated\" : \"created\"}`, color: \"success\" });\n this.resetFormData();\n } catch (err) {\n Snackbar.showSnackbar({ text: \"Failed to create event\" });\n }\n }\n\n async deleteEvent(row: TableRow): Promise {\n const confirmDelete = await this.confirmDelete.open(`Delete ${row.eventType} | ${this.formatEventDate(row)}`, \"Are you sure you want to delete this event?\", { titleFontSize: \"1.05rem\" });\n if (!confirmDelete) return;\n\n try {\n await ISO19030.deleteEvent(row.id);\n this.eventModal = false;\n Snackbar.showSnackbar({ text: `Event '${row.eventType}' was deleted`, color: \"success\" });\n this.resetFormData();\n } catch (err) {\n Snackbar.showSnackbar({ text: \"Failed to create event\" });\n }\n }\n\n cancel(): void {\n this.resetFormData();\n this.eventModal = false;\n }\n\n resetFormData(): void {\n this.event = {\n id: 0,\n vesselId: this.vesselId,\n startTimestamp: null,\n endTimestamp: null,\n eventType: null,\n maintenanceThreshold: null,\n comment: \"\",\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!./VesselEventsTable.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!./VesselEventsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VesselEventsTable.vue?vue&type=template&id=72c2be87&scoped=true&\"\nimport script from \"./VesselEventsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./VesselEventsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VesselEventsTable.vue?vue&type=style&index=0&id=72c2be87&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 \"72c2be87\",\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 { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\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 { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDataTable,VDatePicker,VDialog,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VForm,VIcon,VMenu,VSelect,VSpacer,VTextField,VTextarea,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{staticClass:\"mt-5 pb-4\"},[_c('v-card-title',[_c('span',{staticClass:\"font-weight-bold p-title\"},[_vm._v(_vm._s(_vm.title))])]),(_vm.periods)?_c('div',{staticClass:\"highchart-container\"},[_c('Highcharts',{ref:\"chart\",staticClass:\"chart\",attrs:{\"options\":_vm.ChartOptions,\"deepCopyOnUpdate\":false,\"callback\":_vm.chartReady}})],1):_vm._e(),_c('div',{staticClass:\"highchart-container-footer justify-space-between\"},[_c('div',{staticClass:\"content-left mx-4\"},[_c('v-expansion-panels',{staticClass:\"statistics mb-4\"},[_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}])},[_c('v-icon',{staticClass:\"mb-1 mr-2 flex-grow-0\",attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-chart-bar\")]),_vm._v(\" Statistics \"),_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 ml-1 flex-grow-0\",attrs:{\"color\":\"white\",\"left\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}])},[_c('span',{staticClass:\"mx-auto\"},[_vm._v(\"Percentage speed loss compared to reference curve\")])])],1),_c('v-expansion-panel-content',{staticClass:\"mt-3\"},[(_vm.title !== 'Maintenance Trigger')?_c('v-select',{attrs:{\"items\":_vm.chartEvents,\"item-value\":\"id\",\"return-object\":\"\",\"outlined\":\"\",\"dense\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDateForDisplay(data.item.startTimestamp, data.item.endTimestamp))+\" | \"+_vm._s(data.item.eventType)+\" \")]}},{key:\"item\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDateForDisplay(data.item.startTimestamp, data.item.endTimestamp))+\" | \"+_vm._s(data.item.eventType)+\" \")]}}],null,false,2990774396),model:{value:(_vm.selectedEvent),callback:function ($$v) {_vm.selectedEvent=$$v},expression:\"selectedEvent\"}}):_vm._e(),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.htmlStatistics)}})],1)],1)],1),(_vm.isAnyEventUpdated)?_c('v-alert',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"dense\":\"\",\"outlined\":\"\",\"color\":\"primary lighten-2\",\"type\":\"info\"}},[_vm._v(\" If any of the events have recently been edited, evaluation and reference periods will be updated within 5 minutes. \")]):_vm._e()],1),_c('div',{staticClass:\"content-right mx-4 width-50\"},[(!_vm.isEvaluationPeriodAvailable && this.title !== 'Maintenance Trigger' && _vm.hasCalculatedPeriods)?_c('v-alert',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"dense\":\"\",\"outlined\":\"\",\"color\":\"accent\",\"type\":\"info\"}},[_vm._v(\" There is not enough data to calculate evaluation period. \")]):(!_vm.hasCalculatedPeriods)?_c('v-alert',{staticStyle:{\"font-size\":\"14px\"},attrs:{\"dense\":\"\",\"outlined\":\"\",\"color\":\"accent\",\"type\":\"info\"}},[_vm._v(\" There is not enough data to calculate evaluation and reference periods. \")]):_vm._e()],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 import { Component, Vue, Prop, PropSync, Watch } from \"vue-property-decorator\";\n // utilities\n import { Chart } from \"highcharts-vue\";\n import Highcharts from \"highcharts\";\n import dateHelper from \"@/Scripts/utilities/date-helper\";\n import moment from \"moment\";\n // types\n import { PerformanceIndicatorPeriod } from \"@/types/PerformanceIndicatorPeriod\";\n import { IPlotLine } from \"@/types/highcharts/plotLine\";\n import { LogData } from \"@/types/logData\";\n import { IPlotBand } from \"@/types/highcharts/plotBand\";\n import { ISO19030Event } from \"@/types/ISO19030Event\";\n\n @Component({\n components: {\n Highcharts: Chart,\n },\n })\n export default class PerformanceIndicatorChart extends Vue {\n @Prop() title!: string;\n @Prop() isAnyEventUpdated = false;\n @Prop({ required: true }) periods!: PerformanceIndicatorPeriod[];\n @Prop({ required: true }) performanceData!: LogData;\n @PropSync(\"eventsList\", { required: true }) syncEvents!: ISO19030Event[];\n\n chart!: any;\n chartLoaded = false;\n selectedEvent: ISO19030Event = {} as ISO19030Event;\n mutatedPeriods: PerformanceIndicatorPeriod[] = JSON.parse(JSON.stringify(this.periods));\n\n @Watch(\"eventsList\")\n onEventsListChanged(): void {\n setTimeout(() => {\n this.chart.update(this.ChartOptions, true);\n this.chart.reflow();\n }, 500);\n }\n\n @Watch(\"selectedEvent\")\n onSelectedDockingEventChanged(): void {\n // re-setup evaluation period and recalculate statistics when event changed\n this.setDryDockingEvaluationPeriod();\n }\n\n get htmlStatistics(): string | undefined {\n switch (this.title) {\n case \"DryDocking Performance\":\n return `
    \n
  • Evaluation period average: ${this.setEvaluationPeriodAverage}
  • \n
  • Reference periods average: ${this.setReferencesPeriodsAverage}
  • \n
  • Difference in performance: ${this.setDryDockingDifferenceInPerformance}
  • \n
`;\n case \"InService Performance\":\n case \"Maintenance Effect\":\n return `
    \n
  • Evaluation period average: ${this.setEvaluationPeriodAverage}
  • \n
  • Reference period average: ${this.setSelectedReferencePeriodAverage}
  • \n
  • Difference in performance: ${this.setDifferenceInPerformanceOfSelectedEvent}
  • \n
`;\n case \"Maintenance Trigger\":\n return `
    \n
  • Reference period average: ${this.setSelectedReferencePeriodAverage}
  • \n
  • Maintenance trigger level (%): ${this.setTriggerValue}
  • \n ${\n this.selectedEvaluationPeriod ?\n `
  • Trigger period start date: ${this.formatDateString(this.selectedEvaluationPeriod?.periodStartDate)}
  • \n
  • Trigger period end date: ${this.formatDateString(this.selectedReferencePeriod?.periodEndDate)}
  • \n
  • Difference in performance: ${this.setDifferenceInPerformanceOfSelectedEvent}
  • `\n :\n `\n Maintenance trigger level not reached\n `\n }\n
`;\n }\n }\n\n get Highchart(): any {\n return this.chart;\n }\n\n get vesselId(): number {\n return Number(this.$route.params.vesselId);\n }\n\n get referencePeriods(): PerformanceIndicatorPeriod[] {\n return this.mutatedPeriods.filter(period => period.periodType === \"Reference Period\");\n }\n\n get referencePeriodsAverage(): number {\n return this.referencePeriods.reduce((acc: number, period: PerformanceIndicatorPeriod) => acc + period.average, 0) / this.referencePeriods.length;\n }\n\n get selectedReferencePeriod(): PerformanceIndicatorPeriod {\n let selectedReferencePeriod!: PerformanceIndicatorPeriod;\n if (this.selectedEvent) {\n // find period of selected event and set it as current\n const findPeriodOfSelectedEvent = this.periods.find(period => period.eventId === this.selectedEvent.id);\n if (findPeriodOfSelectedEvent) selectedReferencePeriod = findPeriodOfSelectedEvent;\n }\n return selectedReferencePeriod;\n }\n\n get isEvaluationPeriodAvailable(): boolean {\n return Boolean(this.selectedEvaluationPeriod);\n }\n\n get selectedEvaluationPeriod(): PerformanceIndicatorPeriod {\n let selectedEvaluationPeriod!: PerformanceIndicatorPeriod;\n if (this.selectedEvent) {\n const findPeriodOfSelectedEvent = this.evaluationPeriods.find(period => period.eventId === this.selectedEvent.id);\n if (findPeriodOfSelectedEvent) selectedEvaluationPeriod = findPeriodOfSelectedEvent;\n }\n\n return selectedEvaluationPeriod;\n }\n\n get lastDryDockingEvent(): ISO19030Event {\n const currentDate = moment().format(\"YYYY-MM-DD\");\n let lastDryDockingEvent!: ISO19030Event;\n this.dryDockingEvents.forEach(event => {\n const diff = moment(event.endTimestamp).diff(moment(currentDate), \"days\");\n if (diff > 0) {\n if (lastDryDockingEvent) {\n if (moment(event.endTimestamp).diff(moment(lastDryDockingEvent.endTimestamp), \"days\") < 0) {\n lastDryDockingEvent = event;\n }\n }\n } else {\n lastDryDockingEvent = event;\n }\n });\n return lastDryDockingEvent;\n }\n\n get lastMaintenanceEvent(): ISO19030Event {\n const currentDate = moment().format(\"YYYY-MM-DD\");\n let lastMaintenanceEvent!: ISO19030Event;\n this.maintenanceEvents.forEach(event => {\n const diff = moment(event.endTimestamp).diff(moment(currentDate), \"days\");\n if (diff > 0) {\n if (lastMaintenanceEvent) {\n if (moment(event.endTimestamp).diff(moment(lastMaintenanceEvent.endTimestamp), \"days\") < 0) {\n lastMaintenanceEvent = event;\n }\n }\n } else {\n lastMaintenanceEvent = event;\n }\n });\n return lastMaintenanceEvent;\n }\n\n get dryDockingEvents(): ISO19030Event[] {\n return this.syncEvents.filter(event => event.eventType === \"Docking\");\n }\n\n get maintenanceEvents(): ISO19030Event[] {\n return this.syncEvents.filter(event => event.eventType === \"Maintenance\");\n }\n\n get chartEvents(): ISO19030Event[] {\n if (this.isMaintenanceEffectChart) {\n return this.syncEvents.filter(event => event.eventType === \"Maintenance\");\n } else {\n return this.dryDockingEvents;\n }\n }\n\n get evaluationPeriods(): PerformanceIndicatorPeriod[] {\n return this.mutatedPeriods.filter(period => period.periodType === \"Evaluation Period\");\n }\n\n get hasCalculatedPeriods(): boolean {\n return Boolean(this.periods.length);\n }\n\n get differenceInPerformanceOfSelectedEvent(): number {\n return this.selectedEvaluationPeriod?.average - this.selectedReferencePeriod?.average;\n }\n\n get setDifferenceInPerformanceOfSelectedEvent(): string {\n return Boolean(this.differenceInPerformanceOfSelectedEvent) ? `${this.differenceInPerformanceOfSelectedEvent?.toFixed(1)}%` : \"N/A\";\n }\n\n get isDryDockingChart(): boolean {\n return this.title.toLowerCase().includes(\"docking\");\n }\n\n get isMaintenanceEffectChart(): boolean {\n return this.title === \"Maintenance Effect\";\n }\n\n get setEvaluationPeriodAverage(): string {\n return this.isEvaluationPeriodAvailable ? `${this.selectedEvaluationPeriod.average.toFixed(1)}%` : \"N/A\";\n }\n\n get setReferencesPeriodsAverage(): string {\n if (Boolean(this.referencePeriodsWithoutCurrentAverage)) {\n return `${this.referencePeriodsWithoutCurrentAverage.toFixed(1)}%`;\n } else {\n return \"N/A (There is no reference periods to calculate the average)\";\n }\n }\n\n get setSelectedReferencePeriodAverage(): string {\n return this.selectedReferencePeriod ? `${this.selectedReferencePeriod.average.toFixed(1)}%` : \"N/A\";\n }\n\n get setTriggerValue(): number | string | null | undefined {\n return this.selectedEvent ? this.selectedEvent?.triggerValue : \"N/A\";\n }\n\n get referencePeriodsWithoutCurrentAverage(): number {\n const referencePeriods = this.periods.filter(period => period.periodType === \"Reference Period\");\n const selectedReferencePeriod = this.periods.find(period => period.id === this.selectedReferencePeriod?.id);\n if (selectedReferencePeriod) {\n const referencePeriodsWithoutCurrent = referencePeriods.filter(period => {\n // check if period end date is before selected reference period start date\n if (moment(period.periodEndDate).isBefore(selectedReferencePeriod?.periodStartDate, \"day\") && period.id !== this.selectedReferencePeriod?.id) {\n return period;\n }\n });\n return referencePeriodsWithoutCurrent.reduce((acc: number, period: PerformanceIndicatorPeriod) => acc + period.average, 0) / referencePeriodsWithoutCurrent.length;\n } else {\n return referencePeriods.reduce((acc: number, period: PerformanceIndicatorPeriod) => acc + period.average, 0) / referencePeriods.length;\n }\n }\n\n get dryDockingDifferenceInPerformance(): number {\n if (!this.selectedReferencePeriod) return 0;\n const referencePeriodsWithoutCurrent = this.referencePeriods.filter(period => period.id !== this.selectedReferencePeriod?.id);\n const referencePeriodsWithoutCurrentAverage =\n referencePeriodsWithoutCurrent.reduce((acc: number, period: PerformanceIndicatorPeriod) => acc + period.average, 0) / referencePeriodsWithoutCurrent.length;\n return this.selectedReferencePeriod?.average - referencePeriodsWithoutCurrentAverage;\n }\n\n get setDryDockingDifferenceInPerformance(): string {\n return Boolean(this.dryDockingDifferenceInPerformance) ? `${this.dryDockingDifferenceInPerformance.toFixed(1)}%` : \"N/A\";\n }\n\n setDryDockingEvaluationPeriod(): void {\n // set selected reference period as evaluation period for dry docking chart\n if (!this.isDryDockingChart || !this.selectedReferencePeriod) return;\n this.mutatedPeriods = this.periods.filter((period: PerformanceIndicatorPeriod) => {\n if (moment(period.periodEndDate).isBefore(this.selectedEvent.startTimestamp, \"day\") || period.id === this.selectedReferencePeriod.id) {\n if (this.selectedReferencePeriod.id === period.id) {\n Vue.set(period, \"periodType\", \"Evaluation Period\");\n } else {\n Vue.set(period, \"periodType\", \"Reference Period\");\n }\n return period;\n }\n });\n }\n\n isPeriodReferenceType(type: string): boolean {\n return type === \"Reference Period\";\n }\n\n get periodLines(): any {\n if (!this.mutatedPeriods.length) return [];\n const periodLines: any = [];\n this.mutatedPeriods.forEach((period: any) => {\n // show period line if they have existed event\n if (this.syncEvents.filter(event => event.id === period.eventId).length) {\n periodLines.push(\n this.PeriodLine(\n Date.parse(period.periodStartDate),\n Date.parse(period.periodEndDate),\n period.average,\n this.isPeriodReferenceType(period.periodType) ? \"R\" : \"E\",\n this.isPeriodReferenceType(period.periodType) ? \"#ff5252\" : \"#0037ff\"\n )\n );\n }\n });\n\n // group lines by id to display common legend\n const firstReferenceIndex = periodLines.findIndex((line: any) => line.name === \"Reference period\");\n const firstEvaluationIndex = periodLines.findIndex((line: any) => line.name === \"Evaluation period\");\n if (firstReferenceIndex >= 0) {\n Vue.set(periodLines[firstReferenceIndex], \"id\", \"Reference\");\n Vue.delete(periodLines[firstReferenceIndex], \"linkedTo\");\n }\n if (firstEvaluationIndex >= 0) {\n Vue.set(periodLines[firstEvaluationIndex], \"id\", \"Evaluation\");\n Vue.delete(periodLines[firstEvaluationIndex], \"linkedTo\");\n }\n return periodLines;\n }\n\n PeriodLine(startDateMS: number, endDateMS: number, average: number, text: string, color: string): any {\n return {\n name: `${text === \"R\" ? \"Reference\" : \"Evaluation\"} period`,\n type: \"line\",\n color: color,\n lineWidth: 2,\n data: [[startDateMS, average], this.periodLineLabel(endDateMS, average, text, color)],\n linkedTo: `${text === \"R\" ? \"Reference\" : \"Evaluation\"}`,\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n },\n zIndex: 5,\n };\n }\n\n periodLineLabel(dateMS: number, average: number, text: string, color: string): any {\n return {\n x: dateMS,\n y: average,\n dataLabels: {\n enabled: true,\n useHTML: true,\n formatter: function () {\n return `${text}`;\n },\n zIndex: 10,\n },\n };\n }\n\n get seriesData(): any {\n if (!this.performanceData.data) return [];\n if (this.chart.series.length) {\n /* IMPORTANT:\n There is also a bug in Highcharts when it has more than 2 series\n and they are updated dynamically it \"loses\" correct indexes of the\n series and displays data in a weird manner so the solution is to\n clear the series array before it will be updated */\n while (this.chart.series.length) {\n this.chart.series[0].remove();\n }\n }\n const scatterPoints = Object.entries(this.performanceData.data).map(([timestamp, value]) => {\n return [Date.parse(`${timestamp}Z`), value !== null ? Number(value) : null];\n });\n const scatterPointsSerie = {\n name: \"Speed Loss\",\n type: \"scatter\",\n data: scatterPoints,\n stickyTracking: false,\n /* IMPORTANT:\n https://www.highcharts.com/forum/viewtopic.php?f=9&t=44589\n Turns out scatter points have a bug. When they get updated they can be displayed as line-through-dots\n with property lineWidth: 2 so here we need to set the lineWidth: 0, otherwise it should be set always\n through chart.series.forEach loop in serie.options.lineWidth\n */\n lineWidth: 0,\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n fillColor: \"#448eeb5c\",\n },\n };\n const series = [ ...this.periodLines, scatterPointsSerie];\n\n return series;\n }\n\n get plotLines(): IPlotLine[] {\n if (this.isMaintenanceEffectChart) {\n return [...this.maintenancePlotLines];\n } else {\n return [...this.dockingPlotLines];\n }\n }\n\n get plotBands(): IPlotBand[] {\n return [ ...this.dryDockingPlotBands, this.selectedEventPlotBand ];\n }\n\n get maintenancePlotLines(): IPlotLine[] {\n if (!this.syncEvents.length) return [];\n const plotLines: IPlotLine[] = [];\n this.syncEvents.forEach((event: any) => {\n if (event.eventType !== \"Maintenance\") return;\n const html = this.getPlotLineLabelsHtml(event);\n plotLines.push({\n id: `plotline-${event.id}`,\n color: \"#2196F3\",\n value: moment.utc(event.startTimestamp).valueOf(),\n width: 2,\n zIndex: 5,\n label: {\n rotation: 0,\n style: { color: \"#2196F3\" },\n text: html,\n useHTML: true,\n y: -15,\n x: -11,\n },\n });\n });\n return plotLines;\n }\n\n get dockingPlotLines(): IPlotLine[] {\n if (!this.syncEvents.length) return [];\n const plotLines: IPlotLine[] = [];\n this.syncEvents.forEach(event => {\n if (event.eventType !== \"Docking\") return;\n plotLines.push(\n {\n id: `plotline-${event.id}`,\n color: \"#008000\",\n value: moment.utc(event.startTimestamp).valueOf(),\n width: 2,\n zIndex: 7,\n label: {\n rotation: 0,\n style: { color: \"#008000\" },\n text: this.getPlotLineLabelsHtml(event, \"start\", \"d\"),\n useHTML: true,\n y: -15,\n x: -11,\n },\n },\n {\n id: `plotline-${event.id}`,\n color: \"#008000\",\n value: moment.utc(event.endTimestamp).valueOf(),\n width: 2,\n zIndex: 7,\n label: {\n rotation: 0,\n style: { color: \"#008000\" },\n text: this.getPlotLineLabelsHtml(event, \"end\", \"d\"),\n useHTML: true,\n y: -15,\n x: -11,\n },\n }\n );\n });\n return plotLines;\n }\n\n getPlotLineLabelsHtml(event: ISO19030Event, timestamp = \"start\", letter = \"e\"): string {\n return `\n \n
\n ID: ${event.id}

\n

\n ${timestamp} date: ${\n timestamp === \"start\" ? dateHelper.getFormatedDateString(event.startTimestamp) : dateHelper.getFormatedDateString(event.endTimestamp)\n}\n

\n

${timestamp === \"start\" ? \"In-docking\" : \"Out-docking\"}

\n

${event.comment ?? \"No comment\"}

\n
\n `;\n }\n\n get dryDockingPlotBands(): IPlotBand[] {\n const plotBands: IPlotBand[] = [];\n if (!this.syncEvents.length || this.isMaintenanceEffectChart) return plotBands;\n\n this.syncEvents.forEach(event => {\n if (event.eventType !== \"Docking\") return;\n plotBands.push({\n from: moment.utc(event.startTimestamp).valueOf(),\n to: moment.utc(event.endTimestamp).valueOf(),\n id: event.id,\n className: \"performance-graph__plot-bands\",\n color: \"#0080001f\",\n zIndex: 4,\n });\n });\n\n return plotBands;\n }\n\n get selectedEventPlotBand(): IPlotBand {\n if (this.title === \"Maintenance Trigger\") return {} as IPlotBand;\n const eventPeriods: PerformanceIndicatorPeriod[] = this.mutatedPeriods.filter(period => period.eventId === this.selectedEvent.id);\n let plotBandStartDate!: string | undefined | null;\n let plotBandEndDate!: string | undefined | null;\n\n if (this.isMaintenanceEffectChart) {\n plotBandStartDate = eventPeriods.find(period => {\n // plotBandStartDate is the start date of the period BEFORE the event\n if (moment(period.periodStartDate).isBefore(this.selectedEvent.startTimestamp, \"day\")) {\n return period;\n }\n })?.periodStartDate;\n plotBandEndDate = eventPeriods.find(period => {\n // plotBandEndDate is the end date of the period AFTER the event\n if (moment(period.periodEndDate).isAfter(this.selectedEvent.startTimestamp, \"day\")) {\n return period;\n }\n })?.periodEndDate;\n } else {\n plotBandStartDate = this.selectedEvent?.startTimestamp;\n plotBandEndDate = eventPeriods.find(period => {\n if (moment(period.periodEndDate).isAfter(this.selectedEvent.startTimestamp, \"day\") && period.periodType === \"Evaluation Period\") {\n return period;\n }\n })?.periodEndDate;\n }\n\n if (!plotBandStartDate && !plotBandEndDate) return {} as IPlotBand;\n\n return {\n from: moment.utc(plotBandStartDate).valueOf(),\n to: moment.utc(plotBandEndDate).valueOf(),\n id: this.selectedEvent.id,\n className: \"performance-graph__plot-bands\",\n color: \"#6363f636\",\n zIndex: 4,\n };\n }\n\n formatDateForDisplay(start: string, end: string): string {\n if (!dateHelper.getFormatedDateString(end).length) return dateHelper.getFormatedDateString(start);\n else return `${dateHelper.getFormatedDateString(start)} - ${dateHelper.getFormatedDateString(end)}`;\n }\n\n formatDateString(date: string | null): string {\n if (!date) return \"\";\n return dateHelper.getFormatedDateString(date);\n }\n\n get chartSettings(): any {\n if (!this.chartLoaded) return {};\n return {\n type: \"line\",\n height: 300,\n spacingTop: 30,\n zoomType: \"x\",\n style: { fontFamily: \"Helvetica Neue\" },\n };\n }\n get ChartOptions(): any {\n if (!this.chartLoaded || !Highcharts) return {};\n const ctx = this;\n const options = {\n chart: ctx.chartSettings,\n title: { text: \"\" },\n legend: {\n enabled: true,\n },\n yAxis: {\n title: {\n text: \"Percent (%)\",\n style: { color: \"#001844\" },\n },\n labels: {\n format: \"{value}\",\n style: { color: \"#001844\" },\n },\n min: -50,\n max: 50,\n },\n xAxis: {\n type: \"datetime\",\n labels: {\n style: { color: \"#001844\" },\n },\n plotLines: this.plotLines,\n plotBands: this.plotBands,\n },\n plotOptions: {\n scatter: {\n lineWidth: 0,\n marker: {\n radius: 2.5,\n symbol: \"circle\",\n fillColor: \"#448eeb5c\",\n },\n tooltip: {\n outside: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n zIndex: 7,\n },\n },\n line: {\n tooltip: {\n outside: true,\n headerFormat: \"{point.key}
\",\n pointFormat: \"Value: {point.y}\",\n valueDecimals: 1,\n valueSuffix: \"%\",\n xDateFormat: \"%d. %b, %Y\",\n zIndex: 7,\n },\n },\n series: {\n states: {\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n format: \"{value}\",\n zIndex: 50,\n },\n series: this.seriesData,\n credits: { enabled: false },\n exporting: { enabled: false },\n };\n\n return options;\n }\n\n chartReady(chart: any): void {\n this.chart = chart;\n this.chart.update(this.ChartOptions, true);\n this.chartLoaded = true;\n }\n\n mounted(): void {\n if (this.title !== \"Maintenance Effect\") {\n this.selectedEvent = this.lastDryDockingEvent;\n } else {\n this.selectedEvent = this.lastMaintenanceEvent;\n }\n this.setDryDockingEvaluationPeriod();\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!./PerformanceIndicatorChart.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!./PerformanceIndicatorChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PerformanceIndicatorChart.vue?vue&type=template&id=03bc414b&scoped=true&\"\nimport script from \"./PerformanceIndicatorChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./PerformanceIndicatorChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PerformanceIndicatorChart.vue?vue&type=style&index=0&id=03bc414b&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 \"03bc414b\",\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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VAlert,VCard,VCardTitle,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSelect,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport _ from \"underscore\";\nimport autoGranularity from \"Utilities/auto-granularity\";\n// components\nimport FeatureNotAvailable from \"@/components/FeatureNotAvailable.vue\";\nimport VesselEventsTable from \"@/components/Vessel/VesselEventsTable.vue\";\nimport PerformanceIndicatorChart from \"@/components/PerformanceIndicatorChart.vue\";\n// types\nimport { ISO19030Event } from \"@/types/ISO19030Event.js\";\nimport { PerformanceIndicatorPeriod } from \"@/types/PerformanceIndicatorPeriod.js\";\nimport { LogVariable } from \"@/types/logVariable.js\";\nimport { LogData } from \"@/types/logData.js\";\nimport { ExtendedVessel } from \"@/types/Vessel\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\nimport ISO19030Module from \"@/store/clients/ISO19030.module\";\nimport LogDataClient from \"Clients/log-data-client\";\nimport VesselsModule from \"@/store/clients/Vessels.module\";\n\nconst ISO19030 = getModule(ISO19030Module, store);\nconst LogVariables = getModule(LogVariablesModule, store);\nconst Vessels = getModule(VesselsModule, store);\n\n@Component({\n components: {\n FeatureNotAvailable,\n VesselEventsTable,\n PerformanceIndicatorChart,\n },\n})\nexport default class DiagnosticsISO extends Vue {\n isLoading = false;\n performanceIndicatorsLogVariable: LogVariable = {} as LogVariable;\n ISO19030PerformanceLogData: LogData = {} as LogData;\n ISOChartTypes = [\"DryDocking Performance\", \"InService Performance\", \"Maintenance Trigger\", \"Maintenance Effect\"];\n isAnyEventUpdated = false;\n\n get vessel(): ExtendedVessel | null {\n return Vessels.currentVessel;\n }\n\n get featureEnabled(): boolean {\n if (!this.vessel) return false;\n return this.vessel.features.some(feature => feature.name === \"Iso19030\");\n }\n\n get vesselId(): number {\n return Number(this.$route.params.vesselId);\n }\n\n get eventsByVesselId(): ISO19030Event[] {\n return ISO19030.eventsByVesselId(this.vesselId);\n }\n\n get performanceIndicators(): PerformanceIndicatorPeriod[] {\n return ISO19030.performanceIndicators;\n }\n\n getISOChartTypePeriods(type: string): PerformanceIndicatorPeriod[] {\n switch (type) {\n case \"DryDocking Performance\":\n return this.performanceIndicators.filter(item => item.chartName === \"DryDocking Performance\");\n case \"InService Performance\":\n return this.performanceIndicators.filter(item => item.chartName === \"InService Performance\");\n case \"Maintenance Trigger\":\n return this.performanceIndicators.filter(item => item.chartName === \"Maintenance Trigger\");\n case \"Maintenance Effect\":\n return this.performanceIndicators.filter(item => item.chartName === \"Maintenance Effect\");\n default:\n return [] as PerformanceIndicatorPeriod[];\n }\n }\n\n get ISO19030PerformanceLogVariable(): LogVariable {\n return LogVariables.logVariableByName(\"ISO19030 Performance Value\");\n }\n\n async fetchPerformanceIndicatorsData(): Promise {\n if (_.isEmpty(this.ISO19030PerformanceLogVariable)) return;\n const minDate = this.ISO19030PerformanceLogVariable.logDataMinDate ?? \"\";\n const maxDate = this.ISO19030PerformanceLogVariable.logDataMaxDate ?? \"\";\n const selectedTimeInMinutes = this.minutesDiff(new Date(minDate), new Date(maxDate));\n\n this.ISO19030PerformanceLogData = await LogDataClient.findLogData(this.ISO19030PerformanceLogVariable.id, minDate, maxDate, autoGranularity(selectedTimeInMinutes));\n }\n\n minutesDiff(fromDate: Date, toDate: Date): number {\n const diff = (fromDate.getTime() - toDate.getTime()) / 1000 / 60;\n\n return Math.abs(Math.round(diff));\n }\n\n async initViewData(): Promise {\n this.isLoading = true;\n try {\n await Promise.all([await ISO19030.fetchEvents(), await ISO19030.fetchPerformanceIndicators(this.vesselId), await this.fetchPerformanceIndicatorsData()]);\n } catch (error) {\n console.warn(error);\n } finally {\n this.isLoading = false;\n }\n }\n\n eventUpdated(state: boolean): void {\n this.isAnyEventUpdated = state;\n }\n\n async created(): Promise {\n await this.initViewData();\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!./DiagnosticsISO.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!./DiagnosticsISO.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DiagnosticsISO.vue?vue&type=template&id=051faa15&scoped=true&\"\nimport script from \"./DiagnosticsISO.vue?vue&type=script&lang=ts&\"\nexport * from \"./DiagnosticsISO.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 \"051faa15\",\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 { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\ninstallComponents(component, {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\nimport { Component, Vue } from \"vue-property-decorator\";\nimport Store from \"@/store\";\n//components\nimport DiagnosticsKyma from \"./DiagnosticsKyma.vue\";\nimport DiagnosticsISO from \"./DiagnosticsISO.vue\";\nimport FeatureNotAvailable from \"@/components/FeatureNotAvailable.vue\";\n// modules\nimport { getModule } from \"vuex-module-decorators\";\nimport LogVariablesModule from \"@/store/clients/LogVariables.module\";\n\nconst LogVariables = getModule(LogVariablesModule, Store);\n\n@Component({\n components: {\n DiagnosticsKyma,\n DiagnosticsISO,\n FeatureNotAvailable,\n },\n})\nexport default class Diagnostics extends Vue {\n DiagnosticViewTypes = [\n {\n component: \"DiagnosticsKyma\",\n text: \"Kyma\",\n },\n {\n component: \"DiagnosticsISO\",\n text: \"ISO19030\",\n },\n ];\n DiagnosticViewType = this.DiagnosticViewTypes[0];\n\n onViewTypeChanged(): void {\n console.log(\"onViewTypeChanged => onViewTypeChanged:\");\n localStorage.setItem(\"DiagnosticViewType\", JSON.stringify(this.DiagnosticViewType));\n }\n\n setDiagnosticViewType(): void {\n const strDiagnosticViewType: any = localStorage.getItem(\"DiagnosticViewType\") ?? this.DiagnosticViewTypes[0];\n if (typeof strDiagnosticViewType === \"string\") this.DiagnosticViewType = JSON.parse(strDiagnosticViewType);\n else this.DiagnosticViewType = strDiagnosticViewType;\n }\n\n async created(): Promise {\n if (!LogVariables.currentVesselLogVariables.length) await LogVariables.refreshCurrentVesselLogVariables(parseInt(this.$route.params.vesselId));\n this.setDiagnosticViewType();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=46fb2a2e&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=46fb2a2e&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 \"46fb2a2e\",\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 { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VCard,VSelect})\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!./GraphCard.vue?vue&type=style&index=0&id=270489e4&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=46fb2a2e&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!./DiagnosticCard.vue?vue&type=style&index=0&id=4b84153c&scoped=true&lang=scss&\"","/*\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","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&\"","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!./DiagnosticsKyma.vue?vue&type=style&index=0&id=fdb1cb6a&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!./ResultCard.vue?vue&type=style&index=0&id=455a5bd8&lang=scss&scoped=true&\"","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","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!./PerformanceIndicatorChart.vue?vue&type=style&index=0&id=03bc414b&lang=scss&scoped=true&\"","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!./DiagnosticsDetails.vue?vue&type=style&index=0&id=3d5de4fe&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=5b595898&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!./VesselEventsTable.vue?vue&type=style&index=0&id=72c2be87&lang=scss&scoped=true&\""],"sourceRoot":""}