{"version":3,"sources":["webpack:///./src/views/referencecurves/SFOC.vue?a63f","webpack:///./src/components/referencecurves/SFOCPowerConfigEditDialog.vue?29fd","webpack:///./src/components/referencecurves/SfocPowerCurveDataEditDialog.vue?633a","webpack:///./src/views/referencecurves/SFOC.vue?d73c","webpack:///./src/types/SFOCPowerCurveConfig.ts","webpack:///./src/components/referencecurves/SFOCPowerConfigEditDialog.vue?7937","webpack:///./src/components/referencecurves/SfocPowerCurveEditDialog.vue?7147","webpack:///./src/components/referencecurves/SfocPowerCurveDataEditDialog.vue?a2d8","webpack:///./src/components/referencecurves/SfocPowerCurveDataEditDialog.vue","webpack:///./src/components/referencecurves/SfocPowerCurveDataEditDialog.vue?21b4","webpack:///./src/components/referencecurves/SfocPowerCurveDataEditDialog.vue?2d09","webpack:///./src/components/referencecurves/SfocPowerCurveEditDialog.vue","webpack:///./src/components/referencecurves/SfocPowerCurveEditDialog.vue?2de4","webpack:///./src/components/referencecurves/SfocPowerCurveEditDialog.vue?c4f1","webpack:///./src/Scripts/clients/sfoc-power-curve-client.js","webpack:///./src/components/referencecurves/SFOCPowerConfigEditDialog.vue","webpack:///./src/components/referencecurves/SFOCPowerConfigEditDialog.vue?4e78","webpack:///./src/components/referencecurves/SFOCPowerConfigEditDialog.vue?d1ca","webpack:///./src/views/referencecurves/SFOC.vue","webpack:///./src/views/referencecurves/SFOC.vue?d476","webpack:///./src/views/referencecurves/SFOC.vue?2c1f"],"names":["EngineTier","EngineType","Constant","render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","attrs","on","addConfig","doSearchDebounced","slot","headers","filtredConfigs","debounceLoader","scopedSlots","_u","key","fn","ref","item","_g","isConfigValid","_s","minSfoc","maxSfoc","minPower","maxPower","_l","vesselId","index","getVesselName","$event","openConfigEditDialog","deleteConfig","proxy","editDialog","configToEdit","allVessels","currentCompanyVessels","fetchConfigs","staticRenderFns","dialogWidth","model","value","callback","$$v","isOpen","expression","selectedTab","numericFilter","replaceDecimalPeriod","clonedConfig","$set","_n","curves","length","openCurveEditModal","deleteCurve","addNewCurve","companies","contentClass","onCompanyChanged","selectedCompanyId","filteredVessels","selectedVessels","saveConfig","discardChanges","editCurveDialog","curveToEdit","handleCurveSave","_e","EngineOptions","selectedEngines","TierOptions","clonedCurve","segments","fromPower","toPower","openTierDataCurveEditModal","deleteSegment","addNewSegment","saveChanges","editCurveSegmentDialog","curveSegmentToEdit","handleCurveSegmentSave","curveOptions","clonedCurveData","selectedCurveFunctionFormula","parameter","constant","refInFor","isAvailableToRemove","isRemoveConstantEnabled","removeParameter","isAddConstantEnabled","addParameter","SfocPowerCurveDataEditDialong","parameters","Object","keys","CurveFunction","curveFunction","Polynomial","selectedCurveFunction","curveTypeFormula","JSON","parse","stringify","curveData","parametersNeeded","Power","addMissingParameters","slice","Hoerl","push","Rational","missingParameters","filter","p","some","c","forEach","id","curveDataId","event","numberHelper","numericWithNegativeFilter","includes","$refs","internalValue","replace","curveParameters","showActions","parameterIndex","findIndex","splice","$emit","Vue","__decorate","PropSync","required","default","Prop","Watch","Component","component","VBtn","VCard","VCardActions","VCardText","VCol","VDialog","VDivider","VIcon","VRow","VSelect","VTextField","VToolbar","VToolbarTitle","VTooltip","SfocPowerCurveEditDialog","text","class","width","sortable","Boolean","curve","engines","map","e","engineType","segment","confirmDelete","open","confirmed","indexOf","newSegment","curveId","Ref","components","SfocPowerCurveDataEditDialog","ConfirmDialog","VDataTable","SfocPowerCurveClient","net","get","post","config","put","del","Companies","getModule","CompaniesModule","store","User","UserModule","SFOCPowerConfigEditDialog","showAllCompany","name","searchQuery","_","debounce","updateSearchQueryInput","alreadySelectedVesselIds","vesselIds","v","i","userCompanyId","vessels","toLowerCase","newValue","setTimeout","newCurve","configId","tier","Tier2","tierValue","SFOCPowerCurveClient","updateConfig","handleConfigChange","VesselsClient","getVesselsByCompanyId","updatedCurve","refreshCompanies","getVessels","unshift","VesselSelectSimple","VProgressCircular","VTab","VTabItem","VTabs","VTabsItems","VTextarea","SFOC","isLoading","configs","isAdmin","vesselInSearch","isVesselInSearch","hasSearchQuery","description","getAllConfigs","postEmptyConfig","find","minNumberOfConstants","numberOfConstants","tiers","tierCount","data","hasAtLeastOneTier","hasMaxOneOfeachTier","hasMaxOneOfEachTier","hasAtLeastOneCurve","every","t","areCurvesValid","isValidCurveData","areAllPowerSet","areAllConstantsSet","$router","ignoreCompany","VSkeletonLoader","VSpacer"],"mappings":"kHAAA,W,kCCAA,W,oFCAA,W,yCCAA,IC2CYA,EAKAC,EAYAC,ED5DRC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,oBAAoB,CAACA,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIO,GAAG,gBAAgBH,EAAG,YAAYA,EAAG,QAAQ,CAACE,YAAY,wBAAwBE,MAAM,CAAC,MAAQ,GAAG,MAAQ,UAAUC,GAAG,CAAC,MAAQT,EAAIU,YAAY,CAACN,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,KAAK,CAACR,EAAIO,GAAG,cAAcP,EAAIO,GAAG,iBAAiB,IAAI,GAAGH,EAAG,eAAe,CAACE,YAAY,iCAAiCE,MAAM,CAAC,MAAQ,SAAS,cAAc,cAAc,yBAAyB,GAAG,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIC,GAAG,CAAC,MAAQT,EAAIW,oBAAoB,CAACP,EAAG,WAAW,CAACQ,KAAK,UAAU,CAAEZ,EAAkB,eAAEI,EAAG,sBAAsB,CAACE,YAAY,gBAAgBE,MAAM,CAAC,cAAgB,GAAG,MAAQ,mBAAmBJ,EAAG,SAAS,CAACJ,EAAIO,GAAG,kBAAkB,IAAI,GAAIP,EAAa,UAAEI,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,WAAWJ,EAAG,eAAe,CAACE,YAAY,qBAAqBE,MAAM,CAAC,QAAUR,EAAIa,QAAQ,MAAQb,EAAIc,eAAe,QAAUd,EAAIe,gBAAgBC,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,eAAeC,GAAG,SAASC,GACrkC,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,OAAOJ,EAAIsB,GAAG,GAAGb,GAAI,CAAET,EAAIuB,cAAcF,GAAOjB,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,YAAY,CAACR,EAAIO,GAAG,8BAA8BH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACR,EAAIO,GAAG,+BAA+B,OAAO,MAAK,IAAO,CAAEP,EAAIuB,cAAcF,GAAOjB,EAAG,OAAO,CAACJ,EAAIO,GAAG,qBAAqBH,EAAG,OAAO,CAACJ,EAAIO,GAAG,8BAA8B,CAACW,IAAI,YAAYC,GAAG,SAASC,GACxX,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACrB,EAAIO,GAAG,IAAIP,EAAIwB,GAAGH,EAAKI,SAAS,MAAMzB,EAAIwB,GAAGH,EAAKK,SAAS,QAAQ,CAACR,IAAI,aAAaC,GAAG,SAASC,GACzG,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACrB,EAAIO,GAAG,IAAIP,EAAIwB,GAAGH,EAAKM,UAAU,MAAM3B,EAAIwB,GAAGH,EAAKO,UAAU,QAAQ,CAACV,IAAI,eAAeC,GAAG,SAASC,GAC7G,IAAIC,EAAOD,EAAIC,KACf,OAAOrB,EAAI6B,GAAIR,EAAc,WAAE,SAASS,EAASC,GAAO,OAAO3B,EAAG,YAAY,CAACc,IAAIa,EAAMvB,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC3J,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,OAAOJ,EAAIsB,GAAG,GAAGb,GAAI,CAACT,EAAIO,GAAG,IAAIP,EAAIwB,GAAGxB,EAAIgC,cAAcF,IAAW,YAAY,MAAK,IAAO,CAAC1B,EAAG,OAAO,CAACJ,EAAIO,GAAGP,EAAIwB,GAAGxB,EAAIgC,cAAcF,cAAoB,CAACZ,IAAI,YAAYC,GAAG,SAASC,GACrM,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,QAAQJ,EAAIsB,GAAG,CAACd,MAAM,CAAC,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAIkC,qBAAqBb,MAASZ,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,YAAY,CAACR,EAAIO,GAAG,yBAAyB,OAAO,MAAK,IAAO,CAACH,EAAG,OAAO,CAACJ,EAAIO,GAAG,sBAAsB,CAACW,IAAI,cAAcC,GAAG,SAASC,GACvS,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,QAAQJ,EAAIsB,GAAG,CAACd,MAAM,CAAC,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAImC,aAAad,MAASZ,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,QAAQ,CAACR,EAAIO,GAAG,yBAAyB,OAAO,MAAK,IAAO,CAACH,EAAG,OAAO,CAACJ,EAAIO,GAAG,wBAAyBP,EAAY,SAAE,CAACkB,IAAI,UAAUC,GAAG,WAAW,MAAO,CAACf,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,KAAK,CAACE,YAAY,WAAW,CAACN,EAAIO,GAAG,0CAA0C6B,OAAM,GAAM,MAAM,MAAK,KAAQhC,EAAG,4BAA4B,CAACI,MAAM,CAAC,MAAQR,EAAIqC,WAAW,OAASrC,EAAIsC,aAAa,WAAatC,EAAIuC,WAAW,sBAAwBvC,EAAIwC,sBAAsB,YAAY,UAAU/B,GAAG,CAAC,eAAe,SAASwB,GAAQjC,EAAIqC,WAAWJ,GAAQ,aAAejC,EAAIyC,gBAAgBrC,EAAG,gBAAgB,CAACgB,IAAI,mBAAmB,IAC3wBsB,EAAkB,G,gOErBlB,EAAS,WAAa,IAAI1C,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAgB,aAAEI,EAAG,WAAW,CAACI,MAAM,CAAC,YAAYR,EAAI2C,aAAaC,MAAM,CAACC,MAAO7C,EAAU,OAAE8C,SAAS,SAAUC,GAAM/C,EAAIgD,OAAOD,GAAKE,WAAW,WAAW,CAAC7C,EAAG,SAAS,CAACA,EAAG,YAAY,CAACE,YAAY,mBAAmBE,MAAM,CAAC,KAAO,GAAG,MAAQ,SAAS,MAAQ,GAAG,KAAO,KAAK,CAACJ,EAAG,kBAAkB,CAACJ,EAAIO,GAAG,mBAAmB,GAAGH,EAAG,cAAc,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACA,EAAG,SAAS,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,IAAIoC,MAAM,CAACC,MAAO7C,EAAe,YAAE8C,SAAS,SAAUC,GAAM/C,EAAIkD,YAAYH,GAAKE,WAAW,gBAAgB,CAAC7C,EAAG,QAAQ,CAACc,IAAI,UAAUZ,YAAY,oBAAoB,CAACN,EAAIO,GAAG,aAAaH,EAAG,QAAQ,CAACc,IAAI,SAASZ,YAAY,oBAAoB,CAACN,EAAIO,GAAG,YAAYH,EAAG,QAAQ,CAACc,IAAI,UAAUZ,YAAY,oBAAoB,CAACN,EAAIO,GAAG,uBAAuB,GAAGH,EAAG,eAAe,CAACE,YAAY,eAAesC,MAAM,CAACC,MAAO7C,EAAe,YAAE8C,SAAS,SAAUC,GAAM/C,EAAIkD,YAAYH,GAAKE,WAAW,gBAAgB,CAAC7C,EAAG,aAAa,CAACc,IAAI,WAAW,CAACd,EAAG,QAAQ,CAACE,YAAY,aAAa,CAACF,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,MAAM,CAACJ,EAAG,eAAe,CAACgB,IAAI,UAAUZ,MAAM,CAAC,MAAQ,YAAY,OAAS,QAAQ,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,KAAO,GAAG,SAAW,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAQ,aAAaW,MAAM,CAACC,MAAO7C,EAAIqD,aAAoB,QAAEP,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIqD,aAAc,UAAWrD,EAAIuD,GAAGR,KAAOE,WAAW,2BAA2B,GAAG7C,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,MAAM,CAACJ,EAAG,eAAe,CAACgB,IAAI,UAAUZ,MAAM,CAAC,MAAQ,YAAY,OAAS,QAAQ,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,KAAO,GAAG,SAAW,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAQ,aAAaW,MAAM,CAACC,MAAO7C,EAAIqD,aAAoB,QAAEP,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIqD,aAAc,UAAWrD,EAAIuD,GAAGR,KAAOE,WAAW,2BAA2B,GAAG7C,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,MAAM,CAACJ,EAAG,eAAe,CAACgB,IAAI,WAAWZ,MAAM,CAAC,MAAQ,aAAa,OAAS,KAAK,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,KAAO,GAAG,SAAW,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAQ,cAAcW,MAAM,CAACC,MAAO7C,EAAIqD,aAAqB,SAAEP,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIqD,aAAc,WAAYrD,EAAIuD,GAAGR,KAAOE,WAAW,4BAA4B,GAAG7C,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,MAAM,CAACJ,EAAG,eAAe,CAACgB,IAAI,WAAWZ,MAAM,CAAC,MAAQ,aAAa,OAAS,KAAK,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,KAAO,GAAG,SAAW,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAQ,cAAcW,MAAM,CAACC,MAAO7C,EAAIqD,aAAqB,SAAEP,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIqD,aAAc,WAAYrD,EAAIuD,GAAGR,KAAOE,WAAW,4BAA4B,IAAI,GAAG7C,EAAG,QAAQ,CAACE,YAAY,QAAQ,CAACF,EAAG,QAAQ,CAACA,EAAG,aAAa,CAACI,MAAM,CAAC,aAAa,mBAAmB,MAAQ,cAAc,aAAa,KAAK,KAAO,IAAI,YAAY,GAAG,yBAAyB,GAAG,UAAY,GAAG,eAAe,GAAG,KAAO,GAAG,SAAW,IAAIoC,MAAM,CAACC,MAAO7C,EAAIqD,aAAwB,YAAEP,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIqD,aAAc,cAAeN,IAAME,WAAW,+BAA+B,IAAI,IAAI,GAAG7C,EAAG,aAAa,CAACc,IAAI,UAAU,CAACd,EAAG,eAAe,CAACE,YAAY,mBAAmBE,MAAM,CAAC,QAAUR,EAAIa,QAAQ,MAAQb,EAAIqD,aAAaG,QAAQxC,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASC,GACpkH,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACrB,EAAIO,GAAG,IAAIP,EAAIwB,GAAGH,EAAKmC,OAAOC,QAAQ,QAAQ,CAACvC,IAAI,YAAYC,GAAG,SAASC,GACnF,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,QAAQJ,EAAIsB,GAAG,CAACd,MAAM,CAAC,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAI0D,mBAAmBrC,MAASZ,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,YAAY,CAACR,EAAIO,GAAG,yBAAyB,OAAO,MAAK,IAAO,CAACH,EAAG,OAAO,CAACJ,EAAIO,GAAG,sBAAsB,CAACW,IAAI,cAAcC,GAAG,SAASC,GACrS,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,QAAQJ,EAAIsB,GAAG,CAACd,MAAM,CAAC,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAI2D,YAAYtC,MAASZ,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,QAAQ,CAACR,EAAIO,GAAG,yBAAyB,OAAO,MAAK,IAAO,CAACH,EAAG,OAAO,CAACJ,EAAIO,GAAG,wBAAyBP,EAAY,SAAE,CAACkB,IAAI,UAAUC,GAAG,WAAW,MAAO,CAACf,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,KAAK,CAACE,YAAY,gBAAgB,CAACN,EAAIO,GAAG,yCAAyC6B,OAAM,GAAM,MAAM,MAAK,KAAQhC,EAAG,QAAQ,CAACE,YAAY,sCAAsCE,MAAM,CAAC,MAAQ,oBAAoB,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQT,EAAI4D,cAAc,CAAC5D,EAAIO,GAAG,kBAAkB,GAAGH,EAAG,aAAa,CAACA,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,eAAe,CAACE,YAAY,4BAA4BE,MAAM,CAAC,MAAQ,wBAAwB,cAAc,cAAc,yBAAyB,GAAG,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIC,GAAG,CAAC,MAAQT,EAAIW,oBAAoB,CAACP,EAAG,WAAW,CAACQ,KAAK,UAAU,CAAEZ,EAAkB,eAAEI,EAAG,sBAAsB,CAACE,YAAY,gBAAgBE,MAAM,CAAC,cAAgB,GAAG,MAAQ,mBAAmBJ,EAAG,SAAS,CAACJ,EAAIO,GAAG,kBAAkB,IAAI,GAAGH,EAAG,WAAW,CAACE,YAAY,8BAA8BE,MAAM,CAAC,MAAQR,EAAI6D,UAAU,aAAa,KAAK,YAAY,OAAO,MAAQ,4BAA4B,aAAa,CAAEC,aAAc,2BAA4B,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,SAAW,IAAIrD,GAAG,CAAC,OAAST,EAAI+D,kBAAkBnB,MAAM,CAACC,MAAO7C,EAAqB,kBAAE8C,SAAS,SAAUC,GAAM/C,EAAIgE,kBAAkBjB,GAAKE,WAAW,wBAAwB,GAAG7C,EAAG,qBAAqB,CAACI,MAAM,CAAC,QAAUR,EAAIiE,gBAAgB,oBAAsBjE,EAAIkE,iBAAiBzD,GAAG,CAAC,6BAA6B,SAASwB,GAAQjC,EAAIkE,gBAAgBjC,GAAQ,+BAA+B,SAASA,GAAQjC,EAAIkE,gBAAgBjC,OAAY,IAAI,IAAI,KAAK7B,EAAG,iBAAiB,CAACE,YAAY,2CAA2C,CAACF,EAAG,QAAQ,CAACE,YAAY,mBAAmBE,MAAM,CAAC,MAAQ,UAAUC,GAAG,CAAC,MAAQT,EAAImE,aAAa,CAACnE,EAAIO,GAAG,UAAUH,EAAG,QAAQ,CAACE,YAAY,mBAAmBE,MAAM,CAAC,KAAO,IAAIC,GAAG,CAAC,MAAQT,EAAIoE,iBAAiB,CAACpE,EAAIO,GAAG,aAAa,IAAI,GAAGH,EAAG,gBAAgB,CAACgB,IAAI,kBAAkBhB,EAAG,2BAA2B,CAACI,MAAM,CAAC,MAAQR,EAAIqE,gBAAgB,OAASrE,EAAIqD,aAAa,MAAQrD,EAAIsE,YAAY,YAAY,SAAS7D,GAAG,CAAC,eAAe,SAASwB,GAAQjC,EAAIqE,gBAAgBpC,GAAQ,OAASjC,EAAIuE,oBAAoB,GAAGvE,EAAIwE,MACp6E,EAAkB,G,kGCXlB,EAAS,WAAa,IAAIxE,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAe,YAAEI,EAAG,WAAW,CAACI,MAAM,CAAC,YAAYR,EAAI2C,aAAaC,MAAM,CAACC,MAAO7C,EAAU,OAAE8C,SAAS,SAAUC,GAAM/C,EAAIgD,OAAOD,GAAKE,WAAW,WAAW,CAAC7C,EAAG,SAAS,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,KAAO,GAAG,MAAQ,SAAS,MAAQ,GAAG,KAAO,KAAK,CAACJ,EAAG,kBAAkB,CAACE,YAAY,oBAAoB,CAACN,EAAIO,GAAG,cAAc,GAAGH,EAAG,cAAc,CAACE,YAAY,aAAa,CAACF,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACI,MAAM,CAAC,MAAQR,EAAIyE,cAAc,MAAQ,UAAU,SAAW,GAAG,MAAQ,GAAG,eAAe,GAAG,SAAW,IAAI7B,MAAM,CAACC,MAAO7C,EAAmB,gBAAE8C,SAAS,SAAUC,GAAM/C,EAAI0E,gBAAgB3B,GAAKE,WAAW,sBAAsB,IAAI,GAAG7C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACI,MAAM,CAAC,MAAQR,EAAI2E,YAAY,MAAQ,cAAc,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,SAAW,IAAI/B,MAAM,CAACC,MAAO7C,EAAI4E,YAAgB,KAAE9B,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAI4E,YAAa,OAAQ7B,IAAME,WAAW,uBAAuB,GAAG7C,EAAG,QAAQ,CAACA,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,SAAS,MAAQ,aAAa,yBAAyB,GAAG,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIC,GAAG,CAAC,SAAWT,EAAImD,eAAeP,MAAM,CAACC,MAAO7C,EAAI4E,YAAqB,UAAE9B,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAI4E,YAAa,YAAa5E,EAAIuD,GAAGR,KAAOE,WAAW,4BAA4B,IAAI,GAAG7C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,eAAe,CAACE,YAAY,oBAAoBE,MAAM,CAAC,QAAUR,EAAIa,QAAQ,MAAQb,EAAI4E,YAAYC,UAAU7D,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,aAAaC,GAAG,SAASC,GAChjD,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACrB,EAAIO,GAAG,IAAIP,EAAIwB,GAAGH,EAAKyD,WAAW,MAAM9E,EAAIwB,GAAGH,EAAK0D,SAAS,QAAQ,CAAC7D,IAAI,YAAYC,GAAG,SAASC,GAC1G,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,QAAQJ,EAAIsB,GAAG,CAACd,MAAM,CAAC,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAIgF,2BAA2B3D,MAASZ,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,YAAY,CAACR,EAAIO,GAAG,yBAAyB,OAAO,MAAK,IAAO,CAACH,EAAG,OAAO,CAACJ,EAAIO,GAAG,sBAAsB,CAACW,IAAI,cAAcC,GAAG,SAASC,GAC7S,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACjB,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC1F,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAACL,EAAG,QAAQJ,EAAIsB,GAAG,CAACd,MAAM,CAAC,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAIiF,cAAc5D,MAASZ,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,QAAQ,CAACR,EAAIO,GAAG,yBAAyB,OAAO,MAAK,IAAO,CAACH,EAAG,OAAO,CAACJ,EAAIO,GAAG,wBAAyBP,EAAY,SAAE,CAACkB,IAAI,UAAUC,GAAG,WAAW,MAAO,CAACf,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,KAAK,CAACE,YAAY,gBAAgB,CAACN,EAAIO,GAAG,iDAAiD6B,OAAM,GAAM,MAAM,MAAK,MAAS,IAAI,GAAGhC,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACE,YAAY,sCAAsCE,MAAM,CAAC,MAAQ,oBAAoB,MAAQ,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQT,EAAIkF,gBAAgB,CAAClF,EAAIO,GAAG,0BAA0B,IAAI,IAAI,GAAGH,EAAG,iBAAiB,CAACE,YAAY,2CAA2C,CAACF,EAAG,QAAQ,CAACE,YAAY,mBAAmBE,MAAM,CAAC,MAAQ,UAAUC,GAAG,CAAC,MAAQT,EAAImF,cAAc,CAACnF,EAAIO,GAAG,UAAUH,EAAG,QAAQ,CAACE,YAAY,mBAAmBE,MAAM,CAAC,KAAO,IAAIC,GAAG,CAAC,MAAQT,EAAIoE,iBAAiB,CAACpE,EAAIO,GAAG,aAAa,IAAI,GAAGH,EAAG,gBAAgB,CAACgB,IAAI,kBAAkBhB,EAAG,+BAA+B,CAACI,MAAM,CAAC,MAAQR,EAAIoF,uBAAuB,UAAYpF,EAAIqF,mBAAmB,YAAY,SAAS5E,GAAG,CAAC,eAAe,SAASwB,GAAQjC,EAAIoF,uBAAuBnD,GAAQ,OAASjC,EAAIsF,2BAA2B,GAAGtF,EAAIwE,MACvxC,EAAkB,G,qCFgCtB,SAAY5E,GACVA,mBACAA,oBAFF,CAAYA,MAAU,KAKtB,SAAYC,GACVA,2BACAA,eACAA,eACAA,eACAA,eACAA,eACAA,eACAA,eACAA,eATF,CAAYA,MAAU,KAYtB,SAAYC,GACVA,WACAA,WACAA,WACAA,WAJF,CAAYA,MAAQ,KG5DpB,IAAI,EAAS,WAAa,IAAIE,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAmB,gBAAEI,EAAG,WAAW,CAACI,MAAM,CAAC,YAAYR,EAAI2C,aAAaC,MAAM,CAACC,MAAO7C,EAAU,OAAE8C,SAAS,SAAUC,GAAM/C,EAAIgD,OAAOD,GAAKE,WAAW,WAAW,CAAC7C,EAAG,SAAS,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,KAAO,GAAG,MAAQ,SAAS,MAAQ,GAAG,KAAO,KAAK,CAACJ,EAAG,kBAAkB,CAACE,YAAY,oBAAoB,CAACN,EAAIO,GAAG,sBAAsB,GAAGH,EAAG,cAAc,CAACE,YAAY,aAAa,CAACF,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACI,MAAM,CAAC,MAAQR,EAAIuF,aAAa,MAAQ,iBAAiB,yBAAyB,GAAG,eAAe,GAAG,MAAQ,GAAG,SAAW,IAAI3C,MAAM,CAACC,MAAO7C,EAAIwF,gBAA6B,cAAE1C,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIwF,gBAAiB,gBAAiBzC,IAAME,WAAW,oCAAoC,GAAG7C,EAAG,QAAQ,CAACA,EAAG,eAAe,CAACI,MAAM,CAAC,MAAQ,WAAW,yBAAyB,GAAG,UAAW,EAAK,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIoC,MAAM,CAACC,MAAO7C,EAAgC,6BAAE8C,SAAS,SAAUC,GAAM/C,EAAIyF,6BAA6BzF,EAAIuD,GAAGR,IAAME,WAAW,mCAAmC,IAAI,GAAG7C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,MAAM,CAACJ,EAAG,eAAe,CAACgB,IAAI,YAAYZ,MAAM,CAAC,MAAQ,eAAe,OAAS,KAAK,yBAAyB,GAAG,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAQ,eAAeW,MAAM,CAACC,MAAO7C,EAAIwF,gBAAyB,UAAE1C,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIwF,gBAAiB,YAAaxF,EAAIuD,GAAGR,KAAOE,WAAW,gCAAgC,GAAG7C,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,MAAM,CAACJ,EAAG,eAAe,CAACgB,IAAI,UAAUZ,MAAM,CAAC,MAAQ,aAAa,OAAS,KAAK,yBAAyB,GAAG,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAQ,aAAaW,MAAM,CAACC,MAAO7C,EAAIwF,gBAAuB,QAAE1C,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKtD,EAAIwF,gBAAiB,UAAWxF,EAAIuD,GAAGR,KAAOE,WAAW,8BAA8B,IAAI,GAAG7C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,OAAO,CAACJ,EAAG,MAAM,CAACE,YAAY,4BAA4B,CAACF,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAACF,EAAG,MAAM,CAACE,YAAY,kDAAkD,CAACN,EAAIO,GAAG,eAAeH,EAAG,YAAY,CAACE,YAAY,UAAU,GAAGN,EAAI6B,GAAI7B,EAAmB,iBAAE,SAAS0F,EAAU3D,GAAO,OAAO3B,EAAG,MAAM,CAACc,IAAIa,EAAMzB,YAAY,uBAAuB,CAACF,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACF,EAAG,OAAO,CAACE,YAAY,mBAAmB,CAACN,EAAIO,GAAG,YAAYP,EAAIwB,GAAGkE,EAAUC,UAAU,SAASvF,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,eAAe,CAACgB,IAAK,WAAcsE,EAAkB,SAAGE,UAAS,EAAKpF,MAAM,CAAC,eAAe,GAAG,KAAO,GAAG,SAAW,GAAG,MAAQ,IAAIC,GAAG,CAAC,SAAWT,EAAImD,cAAc,MAAQ,SAASlB,GAAQ,OAAOjC,EAAIoD,qBAAqBnB,EAAS,WAAcyD,EAAkB,YAAM9C,MAAM,CAACC,MAAO6C,EAAe,MAAE5C,SAAS,SAAUC,GAAM/C,EAAIsD,KAAKoC,EAAW,QAAS1F,EAAIuD,GAAGR,KAAOE,WAAW,qBAAsBjD,EAAI6F,oBAAoBH,GAAYtF,EAAG,YAAY,CAACI,MAAM,CAAC,IAAM,IAAIQ,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GACxoG,IAAIX,EAAKW,EAAIX,GACb,MAAO,CAAET,EAAI8F,0BAA2B1F,EAAG,QAAQJ,EAAIsB,GAAG,CAAChB,YAAY,kBAAkBE,MAAM,CAAC,MAAQ,QAAQ,IAAM,GAAG,KAAO,GAAG,UAAU,IAAIC,GAAG,CAAC,MAAQ,SAASwB,GAAQ,OAAOjC,EAAI+F,gBAAgBL,MAAcjF,GAAI,CAACL,EAAG,SAAS,CAACI,MAAM,CAAC,KAAO,KAAK,CAACR,EAAIO,GAAG,gBAAgB,GAAGP,EAAIwE,SAAS,MAAK,IAAO,CAACpE,EAAG,OAAO,CAACJ,EAAIO,GAAG,uBAAuBP,EAAIwE,MAAM,QAAQxE,EAAe,YAAEI,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,UAAYR,EAAIgG,uBAAuB,MAAQ,oBAAoB,MAAQ,IAAIvF,GAAG,CAAC,MAAQT,EAAIiG,eAAe,CAAC7F,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,KAAK,CAACR,EAAIO,GAAG,cAAcP,EAAIO,GAAG,iBAAiB,GAAGP,EAAIwE,MAAM,MAAM,IAAI,GAAGpE,EAAG,iBAAiB,CAACE,YAAY,2CAA2C,CAACF,EAAG,QAAQ,CAACE,YAAY,mBAAmBE,MAAM,CAAC,MAAQ,UAAUC,GAAG,CAAC,MAAQT,EAAImF,cAAc,CAACnF,EAAIO,GAAG,UAAUH,EAAG,QAAQ,CAACE,YAAY,mBAAmBE,MAAM,CAAC,KAAO,IAAIC,GAAG,CAAC,MAAQT,EAAIoE,iBAAiB,CAACpE,EAAIO,GAAG,aAAa,IAAI,IAAI,GAAGP,EAAIwE,MAC17B,EAAkB,GC2JD0B,G,oBAA6B,wDAAlD,iD,0BAKE,EAAAV,gBAA6C,KAC7C,EAAAW,WAAuB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KANxD,EAAkD,iDAQhD,WACE,OAAOC,OAAOC,KAAKC,UAT2B,uBAYhD,WACE,QAAKrG,KAAKuF,iBACHvF,KAAKuF,gBAAgBe,gBAAkBD,OAAcE,aAdd,iCAiBhD,WAAyB,MACvB,iBAAOvG,KAAKuF,uBAAZ,aAAO,EAAsBe,gBAlBiB,wCAqBhD,WACE,OAAKtG,KAAKwG,sBACHC,OAAiBzG,KAAKwG,uBADW,KAtBM,2BA0BhD,WACE,OAAKxG,KAAKuF,iBAAoBvF,KAAKwG,sBAC5BxG,KAAKuF,gBAAgBW,WADqC,KA3BnB,mCAgChD,WACElG,KAAKuF,gBAAkBmB,KAAKC,MAAMD,KAAKE,UAAU5G,KAAK6G,cAjCR,uCAqChD,WAAyB,QACvB,GAAK7G,KAAKuF,gBAAV,CACA,IAAMuB,EAAmB,CAAC,IAAK,KAC/B,OAAQ9G,KAAKwG,uBACX,KAAKH,OAAcU,MACjB/G,KAAKgH,qBAAqBF,GAC1B9G,KAAKuF,gBAAgBW,WAAalG,KAAKuF,gBAAgBW,WAAWe,MAAM,EAAG,GAC3E,MACF,KAAKZ,OAAca,MACjBJ,EAAiBK,KAAK,KACtBnH,KAAKgH,qBAAqBF,GAC1B9G,KAAKuF,gBAAgBW,WAAalG,KAAKuF,gBAAgBW,WAAWe,MAAM,EAAG,GAC3E,MACF,KAAKZ,OAAcE,WACjBO,EAAiBK,KAAK,KACtBnH,KAAKgH,qBAAqBF,GAC1B9G,KAAKuF,gBAAgBW,WAArB,UAAkClG,KAAKuF,uBAAvC,aAAkC,EAAsBW,WAAWe,MAAM,EAAG,GAC5E,MACF,KAAKZ,OAAce,SACjBN,EAAiBK,KAAK,KACtBL,EAAiBK,KAAK,KACtBnH,KAAKgH,qBAAqBF,GAC1B9G,KAAKuF,gBAAgBW,WAArB,UAAkClG,KAAKuF,uBAAvC,aAAkC,EAAsBW,WAAWe,MAAM,EAAG,GAC5E,MACF,QACE,UA9D0C,kCAkEhD,SAAqBH,GAA0B,WACvCO,EAAoBP,EAAiBQ,QAAO,SAAAC,GAAC,cAAI,UAAC,EAAKhC,uBAAN,OAAC,EAAsBW,WAAWsB,MAAK,SAAAC,GAAC,OAAIA,EAAE/B,WAAa6B,SAClHF,EAAkBK,SAAQ,SAAAjC,GAAY,MACpC,YAAKF,uBAAL,SAAsBW,WAAWiB,KAAK,CAAEQ,GAAI,EAAGC,YAAa,EAAGlC,SAAUD,EAAW7C,MAAO,SArE/C,2BAyEhD,SAAciF,GACZ,OAAOC,OAAaC,0BAA0BF,KA1EA,kCA6EhD,SAAqB7F,EAAab,GAC3Ba,EAAOgG,SAAS,MAAShG,IAC1Bb,EAAI6G,SAAS,YAAchI,KAAKiI,MAAM9G,GAAa,GAAG+G,cAAgBlG,EAAOmG,QAAQ,KAAM,KACzFnI,KAAKiI,MAAM9G,GAAa+G,cAAgBlG,EAAOmG,QAAQ,KAAM,QAhFrB,kCAmFhD,WACE,OAAOnI,KAAKoI,gBAAgB5E,OAASxD,KAAKkG,WAAW1C,SApFP,qCAuFhD,WACE,OAAOxD,KAAKoI,gBAAgB5E,OAAS,IAxFS,iCA0FhD,SAAoBiC,GAClB,OAA+B,MAAvBA,EAAUC,UAA2C,MAAvBD,EAAUC,UAA2C,MAAvBD,EAAUC,UAA2C,MAAvBD,EAAUC,WAAqB1F,KAAKqI,cA3FxF,0BA8FhD,WAAY,MACV,GAAKrI,KAAKuF,mBACNvF,KAAKuF,gBAAgBW,WAAW1C,QAAUxD,KAAKkG,WAAW1C,QAA9D,CACA,IAAMiC,EAAYzF,KAAKkG,WAAWlG,KAAKuF,gBAAgBW,WAAW1C,QAClE,UAAAxD,KAAKuF,uBAAL,SAAsBW,WAAWiB,KAAK,CAAEQ,GAAI,EAAGC,YAAa,EAAGlC,SAAUD,EAAW7C,MAAO,OAlG7C,6BAqGhD,SAAgB6C,GACd,GAAKzF,KAAKuF,mBACNvF,KAAKuF,gBAAgBW,WAAW1C,QAAU,GAA9C,CACA,IAAM8E,EAAiBtI,KAAKuF,gBAAgBW,WAAWqC,WAAU,SAAAhB,GAAC,OAAIA,EAAE7B,WAAaD,EAAUC,aACvE,IAApB4C,GACFtI,KAAKuF,gBAAgBW,WAAWsC,OAAOF,EAAgB,MA1GX,yBA8GhD,WACEtI,KAAK+C,QAAS,EACd/C,KAAKyI,MAAM,SAAUzI,KAAKuF,mBAhHoB,4BAmHhD,WACEvF,KAAK+C,QAAS,MApHgC,GAAS2F,SAClBC,gBAAtCC,eAAS,QAAS,CAAEC,UAAU,KAAQ,6BACEF,gBAAxCC,eAAS,WAAY,CAAEE,QAAS,OAAQ,kCACfH,gBAAzBI,eAAK,CAAEF,UAAU,KAAQ,gCA6B1BF,gBADCK,eAAM,WACP,0CAKAL,gBADCK,eAAM,0BACP,8CArCmB/C,EAA6B,gBADjDgD,eAAU,KACUhD,WC9JoZ,I,yMCQraiD,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,EAAiB,QAkBhC,IAAkBA,EAAW,CAACC,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,OAAA,KAAKC,UAAA,KAAQC,WAAA,KAASC,QAAA,KAAMC,OAAA,KAAKC,UAAA,KAAQC,aAAA,KAAWC,WAAA,KAASC,cAAA,OAAcC,WAAA,O,gBCkItHC,EAAwB,wDAA7C,iD,0BAOE,EAAAtF,YAAqC,KACrC,EAAAQ,wBAAyB,EACzB,EAAAC,mBAAgD,KAChD,EAAAX,gBAAgC,GAChC,EAAA7D,QAAU,CACR,CACEsJ,KAAM,QACNtH,MAAO,gBACPuH,MAAO,6BACPC,MAAO,MACPC,UAAU,GAEZ,CACEH,KAAM,cACNtH,MAAO,QACPuH,MAAO,6BACPC,MAAO,OAET,CACEF,KAAM,OACNtH,MAAO,OACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,GAEZ,CACEH,KAAM,SACNtH,MAAO,SACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,IArChB,EAA6C,gDAyC3C,WACE,OAAOlE,OAAOC,KAAKzG,KA1CsB,yBA6C3C,WACE,OAAOwG,OAAOC,KAAKxG,KA9CsB,oBAiD3C,WAAY,MACV,OAAO0K,QAA8C,KAAtC,UAAAtK,KAAK2E,mBAAL,eAAkBC,SAASpB,WAlDD,mCAsD3C,WAAqB,QACnBxD,KAAK2E,YAAc+B,KAAKC,MAAMD,KAAKE,UAAU5G,KAAKuK,QAClDvK,KAAKyE,gBAAL,oBAAuBzE,KAAK2E,mBAA5B,aAAuB,EAAkB6F,QAAQC,KAAI,SAAAC,GAAC,OAAIA,EAAEC,qBAA5D,QAA2E,KAxDlC,2BA2D3C,SAAc9C,GACZ,OAAO3E,eAAc2E,KA5DoB,wCA+D3C,SAA2B+C,GACzB5K,KAAKmF,wBAAyB,EAC9BnF,KAAKoF,mBAAqBwF,IAjEe,oFAoE3C,WAAoBA,GAApB,yGAC0B5K,KAAK6K,cAAcC,KAAK,uBAAwB,uDAD1E,UACQC,EADR,QAEMA,EAFN,mBAGS/K,KAAK2E,YAHd,iDAIU7C,EAAQ9B,KAAK2E,YAAYC,SAASoG,QAAQJ,GAC5C9I,GAAS,GAAG9B,KAAK2E,YAAYC,SAAS4D,OAAO1G,EAAO,GAL5D,gDApE2C,qFA6E3C,WAAa,UACLmJ,EAAiC,CACrCtD,GAAI,EACJuD,QAAO,oBAAElL,KAAK2E,mBAAP,aAAE,EAAkBgD,UAApB,QAA0B,EACjCrB,cAAeD,OAAcE,WAC7B1B,UAAW,EACXC,QAAS,EACToB,WAAY,IAEd,UAAAlG,KAAK2E,mBAAL,SAAkBC,SAASuC,KAAK8D,GAChCjL,KAAK+E,2BAA2BkG,KAvFS,oCA0F3C,SAAuBL,GACrB,GAAK5K,KAAK2E,YAAV,CACA,IAAM7C,EAAQ9B,KAAK2E,YAAYC,SAAS2D,WAAU,SAAAd,GAAC,OAAIA,EAAEE,KAAOiD,EAAQjD,MACpE7F,GAAS,GACX9B,KAAK2E,YAAYC,SAAS4D,OAAO1G,EAAO,EAAG8I,MA9FJ,yBAkG3C,WAAW,WACL5K,KAAK2E,cACP3E,KAAK2E,YAAY6F,QAAUxK,KAAKyE,gBAAgBgG,KAAI,SAAAC,GAAC,YAAK,CAAE/C,GAAI,EAAGgD,WAAYD,EAAGQ,QAAO,UAAE,EAAKvG,mBAAP,aAAE,EAAkBgD,QAE/G3H,KAAK+C,QAAS,EACd/C,KAAKyI,MAAM,SAAUzI,KAAK2E,eAvGe,4BA0G3C,WACE3E,KAAK+C,QAAS,MA3G2B,GAAS2F,QACbC,gBAAtCC,eAAS,QAAS,CAAEC,UAAU,KAAQ,6BACEF,gBAAxCC,eAAS,WAAY,CAAEE,QAAS,OAAQ,kCACfH,gBAAzBI,eAAK,CAAEF,UAAU,KAAQ,6BACAF,gBAAzBI,eAAK,CAAEF,UAAU,KAAQ,4BACJF,gBAArBwC,eAAI,kBAAiB,oCAiDtBxC,gBADCK,eAAM,WACP,0CAtDmBiB,EAAwB,gBAN5ChB,eAAU,CACTmC,WAAY,CACVC,+BACAC,yBAGiBrB,WCvKgZ,K,aCOja,GAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,MAIa,MAAiB,QAkBhC,IAAkB,GAAW,CAACd,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,OAAA,KAAKgC,cAAA,KAAW/B,UAAA,KAAQE,QAAA,KAAMC,OAAA,KAAKC,UAAA,KAAQC,aAAA,KAAWC,WAAA,KAASC,cAAA,OAAcC,WAAA,O,wDClCvIwB,G,WACJ,aAAc,uB,oDAGd,WACE,OAAOC,QAAIC,IAAI,wC,6BAGjB,WACE,OAAOD,QAAIE,KAAK,wC,wBAGlB,SAAWC,GACT,OAAOH,QAAIE,KAAK,qCAAsCC,K,0BAGxD,SAAaA,GACX,OAAOH,QAAII,IAAI,qCAAsCD,K,0BAGvD,SAAajE,GACX,OAAO8D,QAAIK,IAAJ,6CAA8CnE,Q,KAK1C,OAAI6D,GC8QbO,GAAYC,eAAUC,QAAiBC,QACvCC,GAAOH,eAAUI,QAAYF,QASdG,GAAyB,wDAA9C,iD,0BAME,EAAApJ,YAAc,EACd,EAAAG,aAAuC,KACvC,EAAAa,gBAA4B,GAC5B,EAAAF,kBAAmC,KACnC,EAAAuI,eAAmC,CAAEC,KAAM,mBAAoB5E,GAAI,GAEnE,EAAAvD,iBAAkB,EAClB,EAAAC,YAAqC,KAErC,EAAAzD,QAAU,CACR,CACEsJ,KAAM,UACNtH,MAAO,iBACPuH,MAAO,6BACPC,MAAO,MACPC,UAAU,GAEZ,CACEH,KAAM,OACNtH,MAAO,OACPuH,MAAO,6BACPC,MAAO,MACPC,UAAU,GAEZ,CACEH,KAAM,aACNtH,MAAO,YACPuH,MAAO,6BACPC,MAAO,OAET,CACEF,KAAM,WACNtH,MAAO,kBACPuH,MAAO,6BACPC,MAAO,OAET,CACEF,KAAM,OACNtH,MAAO,OACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,GAEZ,CACEH,KAAM,SACNtH,MAAO,SACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,IAGd,EAAAmC,YAA6B,KAC7B,EAAA1L,gBAAiB,EACjB,EAAAyB,sBAAkC,GAmDlC,EAAA7B,kBAAoB+L,aAAEC,SAAS,EAAKC,uBAAwB,KA9G9D,EAA8C,yDA8D5C,WAAkB,MAChB3M,KAAKoD,aAAesD,KAAKC,MAAMD,KAAKE,UAAU5G,KAAK4L,SACnD,IAAMgB,EAAwB,UAAG5M,KAAKoD,oBAAR,aAAG,EAAmByJ,UACpD7M,KAAKiE,gBAAkBjE,KAAKsC,WAAWgF,QAAO,SAAAwF,GAAC,cAAIF,QAAJ,IAAIA,OAAJ,EAAIA,EAA0BpF,MAAK,SAAAuF,GAAC,OAAIA,IAAMD,EAAEnF,WAjErD,qBAoE5C,WACE,OAAOoE,GAAUnI,YArEyB,yBAwE5C,WACE,OAAOuI,GAAKa,gBAzE8B,2BA4E5C,WAAmB,WACjB,GAAwB,MAApBhN,KAAKwM,YAAqB,OAAkC,IAA3BxM,KAAK+D,kBAA0B/D,KAAKsC,WAAatC,KAAKuC,sBAC3F,IAAM0K,EAAqC,IAA3BjN,KAAK+D,kBAA0B/D,KAAKsC,WAAatC,KAAKuC,sBACtE,OAAO0K,EAAQ3F,QAAO,SAAAwF,GAAC,OAAIA,EAAEP,KAAKW,cAAclF,SAAU,EAAKwE,YAAuBU,oBA/E5C,oBAkF5C,WAAY,MACV,OAAO5C,QAA6C,KAArC,UAAAtK,KAAKoD,oBAAL,eAAmBG,OAAOC,WAnFC,2BAsF5C,SAAcqE,GACZ,OAAOC,OAAaC,0BAA0BF,KAvFJ,kCA0F5C,SAAqB7F,EAAab,GAC3Ba,EAAOgG,SAAS,MAAShG,IAC7BhC,KAAKiI,MAAM9G,GAAa+G,cAAgBlG,EAAOmG,QAAQ,KAAM,QA5FpB,kFA+F5C,WAAkBoC,GAAlB,yGAC0BvK,KAAK6K,cAAcC,KAAK,eAAgB,+CADlE,UACQC,EADR,QAEMA,EAFN,mBAGS/K,KAAKoD,aAHd,iDAIUtB,EAAQ9B,KAAKoD,aAAaG,OAAOyH,QAAQT,GAC3CzI,GAAS,GAAG9B,KAAKoD,aAAaG,OAAOiF,OAAO1G,EAAO,GAL3D,gDA/F4C,8FAwG5C,SAAuBqL,GAAgB,WACrCnN,KAAKc,gBAAiB,EACtBd,KAAKwM,YAAcW,EACnBC,YAAW,kBAAO,EAAKtM,gBAAiB,IAAQ,OA3GN,yBAgH5C,WAAW,MACHuM,EAA2B,CAC/B1F,GAAI,EACJ2F,SAAUtN,KAAK4L,OAAOjE,GACtB4F,KAAM5N,EAAW6N,MACjBC,UAAW,EACX7I,SAAU,GACV4F,QAAS,IAEX,UAAAxK,KAAKoD,oBAAL,SAAmBG,OAAO4D,KAAKkG,GAC/BrN,KAAKyD,mBAAmB4J,KA1HkB,0BA6H5C,SAAa/G,GACX,OAAOG,OAAiBH,KA9HkB,iFAiI5C,kGACMtG,KAAKoD,aADX,uBAEIpD,KAAKoD,aAAayJ,UAAY7M,KAAKiE,gBAAgBwG,KAAI,SAAAqC,GAAC,OAAIA,EAAEnF,MAFlE,SAGU+F,GAAqBC,aAAa3N,KAAKoD,cAHjD,OAKEpD,KAAK+C,QAAS,EACd/C,KAAKyI,MAAM,gBANb,gDAjI4C,qFA0I5C,WACEzI,KAAK4N,qBACL5N,KAAK+C,QAAS,IA5I4B,gCA+I5C,SAAmBwH,GACjBvK,KAAKoE,iBAAkB,EACvBpE,KAAKqE,YAAckG,IAjJuB,uFAoJ5C,8GACqCsD,QAAcC,sBAAsB9N,KAAK+D,mBAD9E,OACE/D,KAAKuC,sBADP,uDApJ4C,sFAwJ5C,SAAgBwL,GACd,GAAK/N,KAAKoD,aAAV,CACA,IAAMtB,EAAQ9B,KAAKoD,aAAaG,OAAOgF,WAAU,SAAAd,GAAC,OAAIA,EAAEE,KAAOoG,EAAapG,MACxE7F,GAAS,GACX9B,KAAKoD,aAAaG,OAAOiF,OAAO1G,EAAO,EAAGiM,MA5JF,8EAgK5C,8GACQhC,GAAUiC,mBADlB,uBAEqCH,QAAcI,aAFnD,OAEEjO,KAAKuC,sBAFP,OAGEvC,KAAK4D,UAAUsK,QAAQlO,KAAKsM,gBAC5BtM,KAAK+D,kBAAoB/D,KAAKgN,cAJhC,gDAhK4C,8DAAStE,QAC/BC,gBAArBwC,eAAI,kBAAiB,qCACiBxC,gBAAtCC,eAAS,QAAS,CAAEC,UAAU,KAAQ,8BACEF,gBAAxCC,eAAS,WAAY,CAAEE,QAAS,OAAQ,mCACfH,gBAAzBI,eAAK,CAAEF,UAAU,KAAQ,8BACAF,gBAAzBI,eAAK,CAAEF,UAAU,KAAQ,kCAyD1BF,gBADCK,eAAM,WACP,wCA9DmBqD,GAAyB,gBAP7CpD,eAAU,CACTmC,WAAY,CACV+C,0BACAlE,4BACAqB,yBAGiBe,cCpTiZ,M,0FCQla,GAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,MAIa,MAAiB,QAwBhC,IAAkB,GAAW,CAAClD,OAAA,KAAKC,QAAA,KAAMC,aAAA,OAAaC,UAAA,OAAUC,OAAA,KAAKgC,cAAA,KAAW/B,UAAA,KAAQE,QAAA,KAAM0E,qBAAA,KAAkBzE,OAAA,KAAKC,UAAA,KAAQyE,QAAA,KAAKC,YAAA,KAASC,SAAA,KAAMC,cAAA,KAAW3E,aAAA,KAAW4E,aAAA,KAAU3E,WAAA,KAASC,cAAA,OAAcC,WAAA,OCsHxM,IAAMmC,GAAOH,eAAUI,QAAYF,QAQdwC,GAAI,wDAAzB,iD,0BAEE,EAAAC,WAAY,EACZ,EAAAvM,YAAa,EACb,EAAAC,aAAuC,KACvC,EAAAuM,QAA6B,GAC7B,EAAAtM,WAAuB,GACvB,EAAAC,sBAAkC,GAClC,EAAA7B,kBAAoB+L,aAAEC,SAAS,EAAKC,uBAAwB,KAC5D,EAAAH,YAA6B,KAC7B,EAAA1L,gBAAiB,EACjB,EAAAF,QAAU,CACR,CACEsJ,KAAM,SACNtH,MAAO,UACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,GAEZ,CACEH,KAAM,KACNtH,MAAO,KACPuH,MAAO,6BACPC,MAAO,MAET,CACEF,KAAM,cACNtH,MAAO,cACPuH,MAAO,6BACPC,MAAO,OAET,CACEF,KAAM,UACNtH,MAAO,UACPuH,MAAO,6BACPC,MAAO,OAET,CACEF,KAAM,OACNtH,MAAO,OACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,GAEZ,CACEH,KAAM,SACNtH,MAAO,SACPuH,MAAO,6BACPC,MAAO,KACPC,UAAU,IAjDhB,EAAyB,4CAqDvB,WACE,OAAO8B,GAAK0C,UAtDS,oBAyDvB,WACE,OAAOvE,QAAgC,IAAxBtK,KAAK4O,QAAQpL,UA1DP,0BA6DvB,WAAkB,WAChB,IAAKxD,KAAKwM,YAAa,OAAOxM,KAAK4O,QAGnC,IAAIE,EAAgC,KAC9BC,EAAmB/O,KAAKsC,WAAWkF,MAAK,SAAAsF,GAC5C,GAAIA,EAAEP,KAAKW,cAAclF,SAAU,EAAKwE,YAAuBU,eAE7D,OADA4B,EAAiBhC,GACV,KAGX,OAAIiC,EACK/O,KAAK4O,QAAQtH,QAAO,SAAAsE,GACzB,IAAMoD,EAAiBpD,EAAOiB,UAAUvF,QAAO,SAAAK,GAAK,MAClD,GAAIA,KAAE,UAAKmH,SAAL,aAAK,EAAgBnH,IACzB,OAAOA,KAGX,QAAOqH,EAAexL,QAASoI,KAI1B5L,KAAK4O,QAAQtH,QAAO,SAAAG,GAAC,OAAIA,EAAEwH,aAAexH,EAAEwH,YAAY/B,cAAclF,SAAU,EAAKwE,YAAuBU,oBAnFhG,mFAuFvB,qGACElN,KAAK2O,WAAY,EADnB,SAEuBjB,GAAqBwB,gBAF5C,OAEElP,KAAK4O,QAFP,OAGE5O,KAAK2O,WAAY,EAHnB,gDAvFuB,6FA6FvB,SAAuBxB,GAAgB,WACrCnN,KAAKc,gBAAiB,EACtBd,KAAKwM,YAAcW,EACnBC,YAAW,kBAAO,EAAKtM,gBAAiB,IAAQ,OAhG3B,gFAmGvB,8GACQ4M,GAAqByB,kBAD7B,uBAEuBzB,GAAqBwB,gBAF5C,OAEElP,KAAK4O,QAFP,OAGE5O,KAAKiC,qBAAqBjC,KAAK4O,QAAQ5O,KAAK4O,QAAQpL,OAAS,IAH/D,gDAnGuB,4IAyGvB,WAAmBoI,GAAnB,uGAC0B5L,KAAK6K,cAAcC,KAAK,gBAAiB,gDADnE,UACQC,EADR,QAEMA,EAFN,gCAGU2C,GAAqBxL,aAAa0J,EAAOjE,IAHnD,uBAIyB+F,GAAqBwB,gBAJ9C,OAIIlP,KAAK4O,QAJT,uDAzGuB,4FAiHvB,SAAqBhD,GACnB5L,KAAKoC,YAAa,EAClBpC,KAAKqC,aAAeuJ,IAnHC,2BAsHvB,SAAc/J,GAAgB,MAC5B,iBAAO7B,KAAKsC,WAAW8M,MAAK,SAAAtC,GAAC,OAAIA,EAAEnF,KAAO9F,YAA1C,aAAO,EAA8C0K,OAvHhC,8BA0HvB,SAAiB1F,GACf,IAAMwI,EAAmD,aAA5BxI,EAAUP,cAA+B,EAAI,EACpEgJ,EAAoBzI,EAAUX,WAAW1C,OAC/C,OAAO8L,GAAqBD,IA7HP,iCAgIvB,SAAoBE,GAClB,IADyC,EACnCC,EAAuC,GADJ,iBAEtBD,GAFsB,IAEzC,2BAA0B,KAAfE,EAAe,QAClBlC,EAAOkC,EAAKlC,KAClB,GAAIiC,EAAUjC,GACZ,OAAO,EAETiC,EAAUjC,GAAQ,GAPqB,8BASzC,OAAO,IAzIc,2BA4IvB,SAAc3B,GAAuB,WAC7B8D,EAAoB9D,EAAOrI,OAAOC,OAAS,EAC3CmM,EAAsB/D,EAAOrI,OAAOC,OAAS,GAAKxD,KAAK4P,oBAAoBhE,EAAOrI,QAClFsM,EAAqBjE,EAAOrI,OAAOC,OAAS,GAAKoI,EAAOrI,OAAOuM,OAAM,SAAAC,GAAC,OAAIA,EAAEnL,SAASpB,OAAS,KAC9FwM,EAAiBpE,EAAOrI,OAAOC,OAAS,GAAKoI,EAAOrI,OAAOuM,OAAM,SAAAC,GAAC,OAAIA,EAAEnL,SAASkL,OAAM,SAAArI,GAAC,OAAI,EAAKwI,iBAAiBxI,SAClHyI,EAAiBtE,EAAOrI,OAAOC,OAAS,GAAKoI,EAAOrI,OAAOuM,OAAM,SAAAC,GAAC,OAAIA,EAAEnL,SAASkL,OAAM,SAAArI,GAAC,OAAkB,IAAdA,EAAE3C,cAC9FqL,EAAqBvE,EAAOrI,OAAOC,OAAS,GAAKoI,EAAOrI,OAAOuM,OAAM,SAAAC,GAAC,OAAIA,EAAEnL,SAASkL,OAAM,SAAArI,GAAC,OAAIA,EAAEvB,WAAW4J,OAAM,SAAApK,GAAQ,OAAuB,IAAnBA,EAAS9C,eAC9I,OAAO8M,GAAqBC,GAAuBE,GAAsBG,GAAkBE,GAAkBC,IAnJxF,8EAsJvB,2GACOnQ,KAAK6O,SAAS7O,KAAKoQ,QAAQjJ,KAAK,KACrCnH,KAAKwC,eACC6N,GAAgB,EAHxB,SAI0BxC,QAAcI,WAAWoC,GAJnD,OAIErQ,KAAKsC,WAJP,uDAtJuB,8DAASoG,QACVC,gBAArBwC,eAAI,kBAAiB,qCADHuD,GAAI,gBANxBzF,eAAU,CACTmC,WAAY,CACViB,6BACAf,yBAGiBoD,cCzK4X,M,sCCQ7Y,GAAY,eACd,GACA5O,EACA2C,GACA,EACA,KACA,WACA,MAIa,gBAAiB,QAYhC,IAAkB,GAAW,CAAC0G,OAAA,KAAKoC,cAAA,KAAW7B,QAAA,KAAM0E,qBAAA,KAAkBkC,mBAAA,KAAgBC,WAAA,KAAQ1G,aAAA,KAAWG,WAAA,Q","file":"js/chunk-2810b695.8228a35b.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SFOC.vue?vue&type=style&index=0&id=32269592&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!./SFOCPowerConfigEditDialog.vue?vue&type=style&index=0&id=10cfd29c&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!./SfocPowerCurveDataEditDialog.vue?vue&type=style&index=0&id=732ef12e&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('default-container',[_c('h1',{staticClass:\"d-flex pt-4 px-4\"},[_vm._v(\" SFOC Power \"),_c('v-spacer'),_c('v-btn',{staticClass:\"ml-2 font-weight-bold\",attrs:{\"small\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.addConfig}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Add Config \")],1)],1),_c('v-text-field',{staticClass:\"filter-input search-input px-4\",attrs:{\"label\":\"Search\",\"append-icon\":\"mdi-magnify\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"input\":_vm.doSearchDebounced}},[_c('template',{slot:\"append\"},[(_vm.debounceLoader)?_c('v-progress-circular',{staticClass:\"circle-loader\",attrs:{\"indeterminate\":\"\",\"color\":\"neutralDark75\"}}):_c('v-icon',[_vm._v(\"mdi-magnify\")])],1)],2),(_vm.isLoading)?_c('v-skeleton-loader',{attrs:{\"type\":\"table\"}}):_c('v-data-table',{staticClass:\"configs-data-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.filtredConfigs,\"loading\":_vm.debounceLoader},scopedSlots:_vm._u([{key:\"item.isValid\",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('span',_vm._g({},on),[(_vm.isConfigValid(item))?_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\"mdi-check-circle-outline\")]):_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"mdi-alert-circle-outline\")])],1)]}}],null,true)},[(_vm.isConfigValid(item))?_c('span',[_vm._v(\"Config is valid\")]):_c('span',[_vm._v(\"Config is NOT valid\")])])]}},{key:\"item.sfoc\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.minSfoc)+\" - \"+_vm._s(item.maxSfoc)+\" \")]}},{key:\"item.power\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.minPower)+\" - \"+_vm._s(item.maxPower)+\" \")]}},{key:\"item.vessels\",fn:function(ref){\nvar item = ref.item;\nreturn _vm._l((item.vesselIds),function(vesselId,index){return _c('v-tooltip',{key:index,attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({},on),[_vm._v(\" \"+_vm._s(_vm.getVesselName(vesselId))+\"; \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.getVesselName(vesselId)))])])})}},{key:\"item.edit\",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({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.openConfigEditDialog(item)}}},on),[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"mdi-pencil-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Edit Config\")])])]}},{key:\"item.delete\",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({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteConfig(item)}}},on),[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Delete Config\")])])]}},(_vm.isNoData)?{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6\"},[_vm._v(\"There are no configs created yet\")])])]},proxy:true}:null],null,true)}),_c('SFOCPowerConfigEditDialog',{attrs:{\"value\":_vm.editDialog,\"config\":_vm.configToEdit,\"allVessels\":_vm.allVessels,\"currentCompanyVessels\":_vm.currentCompanyVessels,\"max-width\":'1050px'},on:{\"update:value\":function($event){_vm.editDialog=$event},\"onConfigSave\":_vm.fetchConfigs}}),_c('ConfirmDialog',{ref:\"confirmDelete\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { CurveFunction } from \"@/types/PowerSpeedCurveConfig\";\r\nexport interface SfocPowerConfig {\r\n id: number;\r\n description: string;\r\n minSfoc: number;\r\n maxSfoc: number;\r\n minPower: number;\r\n maxPower: number;\r\n vesselIds: number[];\r\n curves: SfocPowerCurve[];\r\n}\r\n\r\nexport interface SfocPowerCurve {\r\n id: number;\r\n configId: number;\r\n tier: EngineTier;\r\n tierValue: number;\r\n engines: SfocPowerCurveEngine[];\r\n segments: SfocPowerCurveData[];\r\n}\r\n\r\nexport interface SfocPowerCurveEngine {\r\n id: number;\r\n engineType: EngineType;\r\n curveId: number;\r\n}\r\n\r\nexport interface SfocPowerCurveData {\r\n id: number;\r\n curveId: number;\r\n curveFunction: CurveFunction;\r\n fromPower: number;\r\n toPower: number;\r\n parameters: SfocPowerCurveParameter[];\r\n}\r\n\r\nexport interface SfocPowerCurveParameter {\r\n id: number;\r\n curveDataId: number;\r\n constant: string;\r\n value: number;\r\n}\r\n\r\nexport enum EngineTier {\r\n Tier2 = \"Tier2\",\r\n Tier3 = \"Tier3\",\r\n}\r\n\r\nexport enum EngineType {\r\n Undefined = \"Undefined\",\r\n Me1 = \"Me1\",\r\n Me2 = \"Me2\",\r\n Ge1 = \"Ge1\",\r\n Ge2 = \"Ge2\",\r\n Ge3 = \"Ge3\",\r\n Ge4 = \"Ge4\",\r\n Ge5 = \"Ge5\",\r\n Ge6 = \"Ge6\",\r\n}\r\n\r\nexport enum Constant {\r\n A = \"A\",\r\n B = \"B\",\r\n C = \"C\",\r\n D = \"D\",\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.clonedConfig)?_c('v-dialog',{attrs:{\"max-width\":_vm.dialogWidth},model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-card',[_c('v-toolbar',{staticClass:\"font-weight-bold\",attrs:{\"dark\":\"\",\"color\":\"accent\",\"dense\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\" Add config \")])],1),_c('v-card-text',{staticClass:\"pb-0 pt-4\"},[_c('div',[_c('v-tabs',{staticClass:\"mb-4\",attrs:{\"grow\":\"\"},model:{value:(_vm.selectedTab),callback:function ($$v) {_vm.selectedTab=$$v},expression:\"selectedTab\"}},[_c('v-tab',{key:\"general\",staticClass:\"font-weight-bold\"},[_vm._v(\"General\")]),_c('v-tab',{key:\"curves\",staticClass:\"font-weight-bold\"},[_vm._v(\"Curves\")]),_c('v-tab',{key:\"vessels\",staticClass:\"font-weight-bold\"},[_vm._v(\"Assigned vessels\")])],1),_c('v-tabs-items',{staticClass:\"tabs-content\",model:{value:(_vm.selectedTab),callback:function ($$v) {_vm.selectedTab=$$v},expression:\"selectedTab\"}},[_c('v-tab-item',{key:\"general\"},[_c('v-row',{staticClass:\"mt-2 mb-6\"},[_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"3\"}},[_c('v-text-field',{ref:\"minSfoc\",attrs:{\"label\":\"SFOC: Min\",\"suffix\":\"g/kWh\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"flat\":\"\",\"outlined\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, 'minSfoc')}},model:{value:(_vm.clonedConfig.minSfoc),callback:function ($$v) {_vm.$set(_vm.clonedConfig, \"minSfoc\", _vm._n($$v))},expression:\"clonedConfig.minSfoc\"}})],1),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"3\"}},[_c('v-text-field',{ref:\"maxSfoc\",attrs:{\"label\":\"SFOC: Max\",\"suffix\":\"g/kWh\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"flat\":\"\",\"outlined\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, 'maxSfoc')}},model:{value:(_vm.clonedConfig.maxSfoc),callback:function ($$v) {_vm.$set(_vm.clonedConfig, \"maxSfoc\", _vm._n($$v))},expression:\"clonedConfig.maxSfoc\"}})],1),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"3\"}},[_c('v-text-field',{ref:\"minPower\",attrs:{\"label\":\"Power: Min\",\"suffix\":\"kW\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"flat\":\"\",\"outlined\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, 'minPower')}},model:{value:(_vm.clonedConfig.minPower),callback:function ($$v) {_vm.$set(_vm.clonedConfig, \"minPower\", _vm._n($$v))},expression:\"clonedConfig.minPower\"}})],1),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"3\"}},[_c('v-text-field',{ref:\"maxPower\",attrs:{\"label\":\"Power: Max\",\"suffix\":\"kW\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"flat\":\"\",\"outlined\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, 'maxPower')}},model:{value:(_vm.clonedConfig.maxPower),callback:function ($$v) {_vm.$set(_vm.clonedConfig, \"maxPower\", _vm._n($$v))},expression:\"clonedConfig.maxPower\"}})],1)],1),_c('v-row',{staticClass:\"mb-4\"},[_c('v-col',[_c('v-textarea',{attrs:{\"clear-icon\":\"mdi-close-circle\",\"label\":\"Description\",\"row-height\":\"20\",\"rows\":\"2\",\"auto-grow\":\"\",\"persistent-placeholder\":\"\",\"clearable\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\"},model:{value:(_vm.clonedConfig.description),callback:function ($$v) {_vm.$set(_vm.clonedConfig, \"description\", $$v)},expression:\"clonedConfig.description\"}})],1)],1)],1),_c('v-tab-item',{key:\"curves\"},[_c('v-data-table',{staticClass:\"tiers-data-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.clonedConfig.curves},scopedSlots:_vm._u([{key:\"item.curves\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.curves.length)+\" \")]}},{key:\"item.edit\",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({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.openCurveEditModal(item)}}},on),[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"mdi-pencil-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Edit Config\")])])]}},{key:\"item.delete\",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({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteCurve(item)}}},on),[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Delete Config\")])])]}},(_vm.isNoData)?{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6 mb-0\"},[_vm._v(\"There are no curves created yet\")])])]},proxy:true}:null],null,true)}),_c('v-btn',{staticClass:\"mb-2 font-weight-bold primary--text\",attrs:{\"color\":\"neutralLighten100\",\"small\":\"\",\"dark\":\"\"},on:{\"click\":_vm.addNewCurve}},[_vm._v(\" Add curve \")])],1),_c('v-tab-item',[_c('div',{staticClass:\"filters pt-2 mb-6\"},[_c('v-text-field',{staticClass:\"filter-input search-input\",attrs:{\"label\":\"Search by vessel name\",\"append-icon\":\"mdi-magnify\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"input\":_vm.doSearchDebounced}},[_c('template',{slot:\"append\"},[(_vm.debounceLoader)?_c('v-progress-circular',{staticClass:\"circle-loader\",attrs:{\"indeterminate\":\"\",\"color\":\"neutralDark75\"}}):_c('v-icon',[_vm._v(\"mdi-magnify\")])],1)],2),_c('v-select',{staticClass:\"filter-input company-select\",attrs:{\"items\":_vm.companies,\"item-value\":\"id\",\"item-text\":\"name\",\"label\":\"Filter vessels by Company\",\"menu-props\":{ contentClass: 'company-select-dropdown' },\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"change\":_vm.onCompanyChanged},model:{value:(_vm.selectedCompanyId),callback:function ($$v) {_vm.selectedCompanyId=$$v},expression:\"selectedCompanyId\"}})],1),_c('VesselSelectSimple',{attrs:{\"vessels\":_vm.filteredVessels,\"selectedVesselsList\":_vm.selectedVessels},on:{\"update:selectedVesselsList\":function($event){_vm.selectedVessels=$event},\"update:selected-vessels-list\":function($event){_vm.selectedVessels=$event}}})],1)],1)],1)]),_c('v-card-actions',{staticClass:\"justify-end align-center pb-4 pt-1 px-4\"},[_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"color\":\"accent\"},on:{\"click\":_vm.saveConfig}},[_vm._v(\"Save\")]),_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"text\":\"\"},on:{\"click\":_vm.discardChanges}},[_vm._v(\"Cancel\")])],1)],1),_c('ConfirmDialog',{ref:\"confirmDelete\"}),_c('SfocPowerCurveEditDialog',{attrs:{\"value\":_vm.editCurveDialog,\"config\":_vm.clonedConfig,\"curve\":_vm.curveToEdit,\"max-width\":'680px'},on:{\"update:value\":function($event){_vm.editCurveDialog=$event},\"onSave\":_vm.handleCurveSave}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.clonedCurve)?_c('v-dialog',{attrs:{\"max-width\":_vm.dialogWidth},model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"dense\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',{staticClass:\"font-weight-bold\"},[_vm._v(\" Curve \")])],1),_c('v-card-text',{staticClass:\"px-4 py-8\"},[_c('v-row',[_c('v-col',[_c('v-select',{attrs:{\"items\":_vm.EngineOptions,\"label\":\"Engines\",\"multiple\":\"\",\"chips\":\"\",\"hide-details\":\"\",\"outlined\":\"\"},model:{value:(_vm.selectedEngines),callback:function ($$v) {_vm.selectedEngines=$$v},expression:\"selectedEngines\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-select',{attrs:{\"items\":_vm.TierOptions,\"label\":\"Engine Tier\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.clonedCurve.tier),callback:function ($$v) {_vm.$set(_vm.clonedCurve, \"tier\", $$v)},expression:\"clonedCurve.tier\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Tier Value\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"keypress\":_vm.numericFilter},model:{value:(_vm.clonedCurve.tierValue),callback:function ($$v) {_vm.$set(_vm.clonedCurve, \"tierValue\", _vm._n($$v))},expression:\"clonedCurve.tierValue\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-data-table',{staticClass:\"curves-data-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.clonedCurve.segments},scopedSlots:_vm._u([{key:\"item.power\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.fromPower)+\" - \"+_vm._s(item.toPower)+\" \")]}},{key:\"item.edit\",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({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.openTierDataCurveEditModal(item)}}},on),[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"mdi-pencil-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Edit Config\")])])]}},{key:\"item.delete\",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({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteSegment(item)}}},on),[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Delete Config\")])])]}},(_vm.isNoData)?{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"no-data-slot\"},[_c('h6',{staticClass:\"text-h6 mb-0\"},[_vm._v(\"There are no curve segments created yet\")])])]},proxy:true}:null],null,true)})],1)],1),_c('v-row',[_c('v-col',[_c('v-btn',{staticClass:\"mb-2 font-weight-bold primary--text\",attrs:{\"color\":\"neutralLighten100\",\"small\":\"\",\"dark\":\"\"},on:{\"click\":_vm.addNewSegment}},[_vm._v(\" Add curve segment \")])],1)],1)],1),_c('v-card-actions',{staticClass:\"justify-end align-center pb-4 pt-1 px-4\"},[_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"color\":\"accent\"},on:{\"click\":_vm.saveChanges}},[_vm._v(\"Save\")]),_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"text\":\"\"},on:{\"click\":_vm.discardChanges}},[_vm._v(\"Cancel\")])],1)],1),_c('ConfirmDialog',{ref:\"confirmDelete\"}),_c('SfocPowerCurveDataEditDialog',{attrs:{\"value\":_vm.editCurveSegmentDialog,\"curveData\":_vm.curveSegmentToEdit,\"max-width\":'680px'},on:{\"update:value\":function($event){_vm.editCurveSegmentDialog=$event},\"onSave\":_vm.handleCurveSegmentSave}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.clonedCurveData)?_c('v-dialog',{attrs:{\"max-width\":_vm.dialogWidth},model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"dense\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',{staticClass:\"font-weight-bold\"},[_vm._v(\" Curve segment \")])],1),_c('v-card-text',{staticClass:\"px-4 py-8\"},[_c('v-row',[_c('v-col',[_c('v-select',{attrs:{\"items\":_vm.curveOptions,\"label\":\"Curve Function\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},model:{value:(_vm.clonedCurveData.curveFunction),callback:function ($$v) {_vm.$set(_vm.clonedCurveData, \"curveFunction\", $$v)},expression:\"clonedCurveData.curveFunction\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Function\",\"persistent-placeholder\":\"\",\"disabled\":true,\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.selectedCurveFunctionFormula),callback:function ($$v) {_vm.selectedCurveFunctionFormula=_vm._n($$v)},expression:\"selectedCurveFunctionFormula\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{ref:\"fromPower\",attrs:{\"label\":\"From (Power)\",\"suffix\":\"kW\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, 'fromPower')}},model:{value:(_vm.clonedCurveData.fromPower),callback:function ($$v) {_vm.$set(_vm.clonedCurveData, \"fromPower\", _vm._n($$v))},expression:\"clonedCurveData.fromPower\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{ref:\"toPower\",attrs:{\"label\":\"To (Power)\",\"suffix\":\"kW\",\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, 'toPower')}},model:{value:(_vm.clonedCurveData.toPower),callback:function ($$v) {_vm.$set(_vm.clonedCurveData, \"toPower\", _vm._n($$v))},expression:\"clonedCurveData.toPower\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"constants-editor-wrapper\"},[_c('div',{staticClass:\"constants-editor-header\"},[_c('div',{staticClass:\"subtitle-1 font-weight-bold primary--text mb-2\"},[_vm._v(\"Constants\")]),_c('v-divider',{staticClass:\"mb-6\"})],1),_vm._l((_vm.curveParameters),function(parameter,index){return _c('div',{key:index,staticClass:\"constant-field mb-8\"},[_c('p',{staticClass:\"mb-0\"},[_c('span',{staticClass:\"constant-symbol\"},[_vm._v(\"Constant \"+_vm._s(parameter.constant)+\":\")])]),_c('div',{staticClass:\"constant-field-list\"},[_c('v-text-field',{ref:(\"constant\" + (parameter.constant)),refInFor:true,attrs:{\"hide-details\":\"\",\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"keypress\":_vm.numericFilter,\"input\":function($event){return _vm.replaceDecimalPeriod($event, (\"constant\" + (parameter.constant)))}},model:{value:(parameter.value),callback:function ($$v) {_vm.$set(parameter, \"value\", _vm._n($$v))},expression:\"parameter.value\"}}),(_vm.isAvailableToRemove(parameter))?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [(_vm.isRemoveConstantEnabled())?_c('v-btn',_vm._g({staticClass:\"remove-constant\",attrs:{\"color\":\"error\",\"fab\":\"\",\"dark\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.removeParameter(parameter)}}},on),[_c('v-icon',{attrs:{\"dark\":\"\"}},[_vm._v(\"mdi-minus\")])],1):_vm._e()]}}],null,true)},[_c('span',[_vm._v(\"Remove constant\")])]):_vm._e()],1)])}),(_vm.showActions)?_c('v-btn',{staticClass:\"ma-2\",attrs:{\"disabled\":!_vm.isAddConstantEnabled(),\"color\":\"neutralLighten100\",\"small\":\"\"},on:{\"click\":_vm.addParameter}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\"Add constant\")],1):_vm._e()],2)])],1)],1),_c('v-card-actions',{staticClass:\"justify-end align-center pb-4 pt-1 px-4\"},[_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"color\":\"accent\"},on:{\"click\":_vm.saveChanges}},[_vm._v(\"Save\")]),_c('v-btn',{staticClass:\"font-weight-bold\",attrs:{\"text\":\"\"},on:{\"click\":_vm.discardChanges}},[_vm._v(\"Cancel\")])],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, PropSync, Vue, Watch } from \"vue-property-decorator\";\nimport numberHelper from \"Utilities/number-helper\";\n// types\nimport { CurveFunction } from \"@/types/PowerSpeedCurveConfig\";\nimport { curveTypeFormula } from \"@/consts/curveConfigDefaults\";\nimport { SfocPowerCurveParameter, SfocPowerCurveData } from \"@/types/SFOCPowerCurveConfig\";\n\n@Component({})\nexport default class SfocPowerCurveDataEditDialong extends Vue {\n @PropSync(\"value\", { required: true }) isOpen!: boolean;\n @PropSync(\"maxWidth\", { default: 1000 }) dialogWidth!: number;\n @Prop({ required: true }) curveData!: SfocPowerCurveData;\n\n clonedCurveData: SfocPowerCurveData | null = null;\n parameters: string[] = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\"];\n\n get curveOptions(): string[] {\n return Object.keys(CurveFunction);\n }\n\n get showActions(): boolean {\n if (!this.clonedCurveData) return false;\n return this.clonedCurveData.curveFunction === CurveFunction.Polynomial;\n }\n\n get selectedCurveFunction(): CurveFunction | undefined {\n return this.clonedCurveData?.curveFunction;\n }\n\n get selectedCurveFunctionFormula(): string {\n if (!this.selectedCurveFunction) return \"\";\n return curveTypeFormula[this.selectedCurveFunction];\n }\n\n get curveParameters(): SfocPowerCurveParameter[] {\n if (!this.clonedCurveData || !this.selectedCurveFunction) return [];\n return this.clonedCurveData.parameters;\n }\n\n @Watch(\"isOpen\")\n handleCurveDataChange(): void {\n this.clonedCurveData = JSON.parse(JSON.stringify(this.curveData));\n }\n\n @Watch(\"selectedCurveFunction\")\n handleCurveFunctionChange(): void {\n if (!this.clonedCurveData) return;\n const parametersNeeded = [\"A\", \"B\"];\n switch (this.selectedCurveFunction) {\n case CurveFunction.Power:\n this.addMissingParameters(parametersNeeded);\n this.clonedCurveData.parameters = this.clonedCurveData.parameters.slice(0, 2);\n break;\n case CurveFunction.Hoerl:\n parametersNeeded.push(\"C\");\n this.addMissingParameters(parametersNeeded);\n this.clonedCurveData.parameters = this.clonedCurveData.parameters.slice(0, 3);\n break;\n case CurveFunction.Polynomial:\n parametersNeeded.push(\"C\");\n this.addMissingParameters(parametersNeeded);\n this.clonedCurveData.parameters = this.clonedCurveData?.parameters.slice(0, 4);\n break;\n case CurveFunction.Rational:\n parametersNeeded.push(\"C\");\n parametersNeeded.push(\"D\");\n this.addMissingParameters(parametersNeeded);\n this.clonedCurveData.parameters = this.clonedCurveData?.parameters.slice(0, 4);\n break;\n default:\n break;\n }\n }\n\n addMissingParameters(parametersNeeded: string[]): void {\n const missingParameters = parametersNeeded.filter(p => !this.clonedCurveData?.parameters.some(c => c.constant === p));\n missingParameters.forEach(parameter => {\n this.clonedCurveData?.parameters.push({ id: 0, curveDataId: 0, constant: parameter, value: 0 });\n });\n }\n\n numericFilter(event: any): number {\n return numberHelper.numericWithNegativeFilter(event);\n }\n\n replaceDecimalPeriod($event: any, ref: string): void {\n if (!$event.includes(\",\") || !$event) return;\n if (ref.includes(\"constant\")) (this.$refs[ref] as any)[0].internalValue = $event.replace(/,/g, \".\");\n else (this.$refs[ref] as any).internalValue = $event.replace(/,/g, \".\");\n }\n\n isAddConstantEnabled(): boolean {\n return this.curveParameters.length < this.parameters.length;\n }\n\n isRemoveConstantEnabled(): boolean {\n return this.curveParameters.length > 3;\n }\n isAvailableToRemove(parameter: SfocPowerCurveParameter): boolean {\n return (parameter.constant === \"D\" || parameter.constant === \"E\" || parameter.constant === \"F\" || parameter.constant === \"G\") && this.showActions;\n }\n\n addParameter(): void {\n if (!this.clonedCurveData) return;\n if (this.clonedCurveData.parameters.length >= this.parameters.length) return;\n const parameter = this.parameters[this.clonedCurveData.parameters.length];\n this.clonedCurveData?.parameters.push({ id: 0, curveDataId: 0, constant: parameter, value: 0 });\n }\n\n removeParameter(parameter: SfocPowerCurveParameter): void {\n if (!this.clonedCurveData) return;\n if (this.clonedCurveData.parameters.length <= 3) return;\n const parameterIndex = this.clonedCurveData.parameters.findIndex(p => p.constant === parameter.constant);\n if (parameterIndex !== -1) {\n this.clonedCurveData.parameters.splice(parameterIndex, 1);\n }\n }\n\n saveChanges(): void {\n this.isOpen = false;\n this.$emit(\"onSave\", this.clonedCurveData);\n }\n\n discardChanges(): void {\n this.isOpen = false;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SfocPowerCurveDataEditDialog.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!./SfocPowerCurveDataEditDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SfocPowerCurveDataEditDialog.vue?vue&type=template&id=732ef12e&scoped=true&\"\nimport script from \"./SfocPowerCurveDataEditDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SfocPowerCurveDataEditDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SfocPowerCurveDataEditDialog.vue?vue&type=style&index=0&id=732ef12e&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 \"732ef12e\",\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 { 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 { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VDialog,VDivider,VIcon,VRow,VSelect,VTextField,VToolbar,VToolbarTitle,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, PropSync, Ref, Vue, Watch } from \"vue-property-decorator\";\nimport numericFilter from \"Utilities/numericFilter\";\n// types\nimport { CurveFunction } from \"@/types/PowerSpeedCurveConfig\";\nimport { SfocPowerConfig, SfocPowerCurve, EngineTier, SfocPowerCurveData, SfocPowerCurveEngine, EngineType } from \"@/types/SFOCPowerCurveConfig\";\n// components\nimport SfocPowerCurveDataEditDialog from \"@/components/referencecurves/SfocPowerCurveDataEditDialog.vue\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\n\n@Component({\n components: {\n SfocPowerCurveDataEditDialog,\n ConfirmDialog,\n },\n})\nexport default class SfocPowerCurveEditDialog extends Vue {\n @PropSync(\"value\", { required: true }) isOpen!: boolean;\n @PropSync(\"maxWidth\", { default: 1000 }) dialogWidth!: number;\n @Prop({ required: true }) config!: SfocPowerConfig;\n @Prop({ required: true }) curve!: SfocPowerCurve;\n @Ref(\"confirmDelete\") confirmDelete!: any;\n\n clonedCurve: SfocPowerCurve | null = null;\n editCurveSegmentDialog = false;\n curveSegmentToEdit: SfocPowerCurveData | null = null;\n selectedEngines: EngineType[] = [];\n headers = [\n {\n text: \"Curve\",\n value: \"curveFunction\",\n class: \"v-data-table-column-header\",\n width: \"45%\",\n sortable: true,\n },\n {\n text: \"Power Range\",\n value: \"power\",\n class: \"v-data-table-column-header\",\n width: \"45%\",\n },\n {\n text: \"Edit\",\n value: \"edit\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n {\n text: \"Delete\",\n value: \"delete\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n ];\n\n get TierOptions(): string[] {\n return Object.keys(EngineTier);\n }\n\n get EngineOptions(): string[] {\n return Object.keys(EngineType);\n }\n\n get isNoData(): boolean {\n return Boolean(this.clonedCurve?.segments.length === 0);\n }\n\n @Watch(\"isOpen\")\n handleCurveDataChange(): void {\n this.clonedCurve = JSON.parse(JSON.stringify(this.curve));\n this.selectedEngines = this.clonedCurve?.engines.map(e => e.engineType) ?? [];\n }\n\n numericFilter(event: any): number {\n return numericFilter(event);\n }\n\n openTierDataCurveEditModal(segment: SfocPowerCurveData): void {\n this.editCurveSegmentDialog = true;\n this.curveSegmentToEdit = segment;\n }\n\n async deleteSegment(segment: SfocPowerCurveData): Promise {\n const confirmed = await this.confirmDelete.open(\"Delete Curve Segment\", \"Are you sure you want to delete this curve segment?\");\n if (confirmed) {\n if (!this.clonedCurve) return;\n const index = this.clonedCurve.segments.indexOf(segment);\n if (index > -1) this.clonedCurve.segments.splice(index, 1);\n }\n }\n\n addNewSegment(): void {\n const newSegment: SfocPowerCurveData = {\n id: 0,\n curveId: this.clonedCurve?.id ?? 0,\n curveFunction: CurveFunction.Polynomial,\n fromPower: 0,\n toPower: 0,\n parameters: [],\n };\n this.clonedCurve?.segments.push(newSegment);\n this.openTierDataCurveEditModal(newSegment);\n }\n\n handleCurveSegmentSave(segment: SfocPowerCurveData): void {\n if (!this.clonedCurve) return;\n const index = this.clonedCurve.segments.findIndex(c => c.id === segment.id);\n if (index > -1) {\n this.clonedCurve.segments.splice(index, 1, segment);\n }\n }\n\n saveChanges(): void {\n if (this.clonedCurve) {\n this.clonedCurve.engines = this.selectedEngines.map(e => ({ id: 0, engineType: e, curveId: this.clonedCurve?.id })) as SfocPowerCurveEngine[];\n }\n this.isOpen = false;\n this.$emit(\"onSave\", this.clonedCurve);\n }\n\n discardChanges(): void {\n this.isOpen = false;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SfocPowerCurveEditDialog.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!./SfocPowerCurveEditDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SfocPowerCurveEditDialog.vue?vue&type=template&id=71bcadea&scoped=true&\"\nimport script from \"./SfocPowerCurveEditDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SfocPowerCurveEditDialog.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 \"71bcadea\",\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 { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VDataTable,VDialog,VIcon,VRow,VSelect,VTextField,VToolbar,VToolbarTitle,VTooltip})\n","import net from \"App/net\";\r\n\r\nclass SfocPowerCurveClient {\r\n constructor() {\r\n }\r\n\r\n getAllConfigs() {\r\n return net.get(\"/ReferenceCurves/SfocPower/Configs\");\r\n }\r\n\r\n postEmptyConfig() {\r\n return net.post(\"/ReferenceCurves/SfocPower/Configs\");\r\n }\r\n\r\n postConfig(config) {\r\n return net.post(\"/ReferenceCurves/SfocPower/Configs\", config);\r\n }\r\n\r\n updateConfig(config) {\r\n return net.put(\"/ReferenceCurves/SfocPower/Configs\", config);\r\n }\r\n\r\n deleteConfig(id) {\r\n return net.del(`/ReferenceCurves/SfocPower/Configs/${id}`);\r\n }\r\n}\r\n\r\n\r\nexport default new SfocPowerCurveClient();\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, PropSync, Vue, Watch, Ref } from \"vue-property-decorator\";\nimport store from \"@/store\";\nimport { getModule } from \"vuex-module-decorators\";\nimport { curveTypeFormula } from \"@/consts/curveConfigDefaults\";\nimport numberHelper from \"Utilities/number-helper\";\nimport _ from \"underscore\";\n// components\nimport VesselSelectSimple from \"@/components/VesselSelectSimple.vue\";\nimport SfocPowerCurveEditDialog from \"@/components/referencecurves/SfocPowerCurveEditDialog.vue\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\n// types\nimport { CurveFunction } from \"@/types/PowerSpeedCurveConfig\";\nimport { Vessel } from \"@/types/vessel\";\nimport { Company } from \"@/types/company\";\nimport { SfocPowerConfig, SfocPowerCurve, EngineTier } from \"@/types/SFOCPowerCurveConfig\";\n// clients\nimport VesselsClient from \"Clients/vessels-client\";\n// modules\nimport CompaniesModule from \"@/store/clients/Companies.module\";\nimport UserModule from \"@/store/clients/User.module\";\nimport SFOCPowerCurveClient from \"@/Scripts/clients/sfoc-power-curve-client\";\n\nconst Companies = getModule(CompaniesModule, store);\nconst User = getModule(UserModule, store);\n\n@Component({\n components: {\n VesselSelectSimple,\n SfocPowerCurveEditDialog,\n ConfirmDialog,\n },\n})\nexport default class SFOCPowerConfigEditDialog extends Vue {\n @Ref(\"confirmDelete\") confirmDelete!: any;\n @PropSync(\"value\", { required: true }) isOpen!: boolean;\n @PropSync(\"maxWidth\", { default: 1000 }) dialogWidth!: number;\n @Prop({ required: true }) config!: SfocPowerConfig;\n @Prop({ required: true }) allVessels!: Vessel[];\n selectedTab = 0;\n clonedConfig: SfocPowerConfig | null = null;\n selectedVessels: Vessel[] = [];\n selectedCompanyId: number | null = null;\n showAllCompany: Partial = { name: \"Show All Vessels\", id: 0 };\n\n editCurveDialog = false;\n curveToEdit: SfocPowerCurve | null = null;\n\n headers = [\n {\n text: \"Engines\",\n value: \"engines.length\",\n class: \"v-data-table-column-header\",\n width: \"33%\",\n sortable: true,\n },\n {\n text: \"Tier\",\n value: \"tier\",\n class: \"v-data-table-column-header\",\n width: \"33%\",\n sortable: true,\n },\n {\n text: \"Tier value\",\n value: \"tierValue\",\n class: \"v-data-table-column-header\",\n width: \"33%\",\n },\n {\n text: \"Segments\",\n value: \"segments.length\",\n class: \"v-data-table-column-header\",\n width: \"14%\",\n },\n {\n text: \"Edit\",\n value: \"edit\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n {\n text: \"Delete\",\n value: \"delete\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n ];\n searchQuery: string | null = null;\n debounceLoader = false;\n currentCompanyVessels: Vessel[] = [];\n\n @Watch(\"config\")\n handleConfigChange(): void {\n this.clonedConfig = JSON.parse(JSON.stringify(this.config));\n const alreadySelectedVesselIds = this.clonedConfig?.vesselIds;\n this.selectedVessels = this.allVessels.filter(v => alreadySelectedVesselIds?.some(i => i === v.id));\n }\n\n get companies(): Company[] {\n return Companies.companies;\n }\n\n get userCompanyId(): number | null {\n return User.userCompanyId;\n }\n\n get filteredVessels(): Vessel[] {\n if (this.searchQuery == null) return this.selectedCompanyId === 0 ? this.allVessels : this.currentCompanyVessels;\n const vessels = this.selectedCompanyId === 0 ? this.allVessels : this.currentCompanyVessels;\n return vessels.filter(v => v.name.toLowerCase().includes((this.searchQuery as string).toLowerCase()));\n }\n\n get isNoData(): boolean {\n return Boolean(this.clonedConfig?.curves.length === 0);\n }\n\n numericFilter(event: any): number {\n return numberHelper.numericWithNegativeFilter(event);\n }\n\n replaceDecimalPeriod($event: any, ref: string): void {\n if (!$event.includes(\",\") || !$event) return;\n (this.$refs[ref] as any).internalValue = $event.replace(/,/g, \".\");\n }\n\n async deleteCurve(curve: SfocPowerCurve): Promise {\n const confirmed = await this.confirmDelete.open(\"Delete Curve\", \"Are you sure you want to delete this curve?\");\n if (confirmed) {\n if (!this.clonedConfig) return;\n const index = this.clonedConfig.curves.indexOf(curve);\n if (index > -1) this.clonedConfig.curves.splice(index, 1);\n }\n }\n\n updateSearchQueryInput(newValue: string): void {\n this.debounceLoader = true;\n this.searchQuery = newValue;\n setTimeout(() => (this.debounceLoader = false), 500);\n }\n\n doSearchDebounced = _.debounce(this.updateSearchQueryInput, 1000);\n\n addNewCurve(): void {\n const newCurve: SfocPowerCurve = {\n id: 0,\n configId: this.config.id,\n tier: EngineTier.Tier2,\n tierValue: 0,\n segments: [],\n engines: [],\n };\n this.clonedConfig?.curves.push(newCurve);\n this.openCurveEditModal(newCurve);\n }\n\n curveFormula(curveFunction: CurveFunction): string {\n return curveTypeFormula[curveFunction];\n }\n\n async saveConfig(): Promise {\n if (this.clonedConfig) {\n this.clonedConfig.vesselIds = this.selectedVessels.map(v => v.id);\n await SFOCPowerCurveClient.updateConfig(this.clonedConfig);\n }\n this.isOpen = false;\n this.$emit(\"onConfigSave\");\n }\n\n discardChanges(): void {\n this.handleConfigChange();\n this.isOpen = false;\n }\n\n openCurveEditModal(curve: SfocPowerCurve): void {\n this.editCurveDialog = true;\n this.curveToEdit = curve;\n }\n\n async onCompanyChanged(): Promise {\n this.currentCompanyVessels = await VesselsClient.getVesselsByCompanyId(this.selectedCompanyId);\n }\n\n handleCurveSave(updatedCurve: SfocPowerCurve): void {\n if (!this.clonedConfig) return;\n const index = this.clonedConfig.curves.findIndex(c => c.id === updatedCurve.id);\n if (index > -1) {\n this.clonedConfig.curves.splice(index, 1, updatedCurve);\n }\n }\n\n async created(): Promise {\n await Companies.refreshCompanies();\n this.currentCompanyVessels = await VesselsClient.getVessels();\n this.companies.unshift(this.showAllCompany as Company);\n this.selectedCompanyId = this.userCompanyId;\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!./SFOCPowerConfigEditDialog.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!./SFOCPowerConfigEditDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SFOCPowerConfigEditDialog.vue?vue&type=template&id=10cfd29c&scoped=true&\"\nimport script from \"./SFOCPowerConfigEditDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SFOCPowerConfigEditDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SFOCPowerConfigEditDialog.vue?vue&type=style&index=0&id=10cfd29c&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 \"10cfd29c\",\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 { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VDataTable,VDialog,VIcon,VProgressCircular,VRow,VSelect,VTab,VTabItem,VTabs,VTabsItems,VTextField,VTextarea,VToolbar,VToolbarTitle,VTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 } from \"vue-property-decorator\";\nimport { getModule } from \"vuex-module-decorators\";\nimport store from \"@/store\";\nimport _ from \"underscore\";\n// components\nimport SFOCPowerConfigEditDialog from \"@/components/referencecurves/SFOCPowerConfigEditDialog.vue\";\nimport ConfirmDialog from \"@/components/ConfirmDialog.vue\";\n// clients\nimport SFOCPowerCurveClient from \"Clients/sfoc-power-curve-client\";\nimport VesselsClient from \"Clients/vessels-client\";\n// types\nimport { SfocPowerConfig, SfocPowerCurve, SfocPowerCurveData } from \"@/types/SFOCPowerCurveConfig\";\nimport { Vessel } from \"@/types/vessel\";\n// modules\nimport UserModule from \"@/store/clients/User.module\";\n\nconst User = getModule(UserModule, store);\n\n@Component({\n components: {\n SFOCPowerConfigEditDialog,\n ConfirmDialog,\n },\n})\nexport default class SFOC extends Vue {\n @Ref(\"confirmDelete\") confirmDelete!: any;\n isLoading = true;\n editDialog = false;\n configToEdit: SfocPowerConfig | null = null;\n configs: SfocPowerConfig[] = [];\n allVessels: Vessel[] = [];\n currentCompanyVessels: Vessel[] = [];\n doSearchDebounced = _.debounce(this.updateSearchQueryInput, 1000);\n searchQuery: string | null = null;\n debounceLoader = false;\n headers = [\n {\n text: \"Status\",\n value: \"isValid\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n {\n text: \"Id\",\n value: \"id\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n },\n {\n text: \"Description\",\n value: \"description\",\n class: \"v-data-table-column-header\",\n width: \"20%\",\n },\n {\n text: \"Vessels\",\n value: \"vessels\",\n class: \"v-data-table-column-header\",\n width: \"60%\",\n },\n {\n text: \"Edit\",\n value: \"edit\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n {\n text: \"Delete\",\n value: \"delete\",\n class: \"v-data-table-column-header\",\n width: \"5%\",\n sortable: false,\n },\n ];\n\n get isAdmin(): boolean {\n return User.isAdmin;\n }\n\n get isNoData(): boolean {\n return Boolean(this.configs.length === 0);\n }\n\n get filtredConfigs(): SfocPowerConfig[] {\n if (!this.searchQuery) return this.configs;\n\n // if searchable item is a vessel < >\n let vesselInSearch: Vessel | null = null;\n const isVesselInSearch = this.allVessels.some(v => {\n if (v.name.toLowerCase().includes((this.searchQuery as string).toLowerCase())) {\n vesselInSearch = v;\n return true;\n }\n });\n if (isVesselInSearch) {\n return this.configs.filter(config => {\n const hasSearchQuery = config.vesselIds.filter(id => {\n if (id === vesselInSearch?.id) {\n return id;\n }\n });\n return hasSearchQuery.length ? config : false;\n });\n // if searchable item is a vessel \n } else {\n return this.configs.filter(c => c.description && c.description.toLowerCase().includes((this.searchQuery as string).toLowerCase()));\n }\n }\n\n async fetchConfigs(): Promise {\n this.isLoading = true;\n this.configs = await SFOCPowerCurveClient.getAllConfigs();\n this.isLoading = false;\n }\n\n updateSearchQueryInput(newValue: string): void {\n this.debounceLoader = true;\n this.searchQuery = newValue;\n setTimeout(() => (this.debounceLoader = false), 500);\n }\n\n async addConfig(): Promise {\n await SFOCPowerCurveClient.postEmptyConfig();\n this.configs = await SFOCPowerCurveClient.getAllConfigs();\n this.openConfigEditDialog(this.configs[this.configs.length - 1]);\n }\n\n async deleteConfig(config: SfocPowerConfig): Promise {\n const confirmed = await this.confirmDelete.open(\"Delete config\", \"Are you sure you want to delete this config?\");\n if (confirmed) {\n await SFOCPowerCurveClient.deleteConfig(config.id);\n this.configs = await SFOCPowerCurveClient.getAllConfigs();\n }\n }\n\n openConfigEditDialog(config: SfocPowerConfig): void {\n this.editDialog = true;\n this.configToEdit = config;\n }\n\n getVesselName(vesselId: number): string | undefined {\n return this.allVessels.find(v => v.id === vesselId)?.name;\n }\n\n isValidCurveData(curveData: SfocPowerCurveData): boolean {\n const minNumberOfConstants = curveData.curveFunction === \"Rational\" ? 4 : 3;\n const numberOfConstants = curveData.parameters.length;\n return numberOfConstants >= minNumberOfConstants;\n }\n\n hasMaxOneOfEachTier(tiers: SfocPowerCurve[]): boolean {\n const tierCount: { [key: string]: number } = {};\n for (const data of tiers) {\n const tier = data.tier;\n if (tierCount[tier]) {\n return false;\n }\n tierCount[tier] = 1;\n }\n return true;\n }\n\n isConfigValid(config: SfocPowerConfig): boolean {\n const hasAtLeastOneTier = config.curves.length > 0;\n const hasMaxOneOfeachTier = config.curves.length > 0 && this.hasMaxOneOfEachTier(config.curves);\n const hasAtLeastOneCurve = config.curves.length > 0 && config.curves.every(t => t.segments.length > 0);\n const areCurvesValid = config.curves.length > 0 && config.curves.every(t => t.segments.every(c => this.isValidCurveData(c)));\n const areAllPowerSet = config.curves.length > 0 && config.curves.every(t => t.segments.every(c => c.toPower !== 0));\n const areAllConstantsSet = config.curves.length > 0 && config.curves.every(t => t.segments.every(c => c.parameters.every(constant => constant.value !== 0)));\n return hasAtLeastOneTier && hasMaxOneOfeachTier && hasAtLeastOneCurve && areCurvesValid && areAllPowerSet && areAllConstantsSet;\n }\n\n async created(): Promise {\n if (!this.isAdmin) this.$router.push(\"/\");\n this.fetchConfigs();\n const ignoreCompany = true;\n this.allVessels = await VesselsClient.getVessels(ignoreCompany);\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!./SFOC.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!./SFOC.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SFOC.vue?vue&type=template&id=32269592&scoped=true&\"\nimport script from \"./SFOC.vue?vue&type=script&lang=ts&\"\nexport * from \"./SFOC.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SFOC.vue?vue&type=style&index=0&id=32269592&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 \"32269592\",\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 { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VDataTable,VIcon,VProgressCircular,VSkeletonLoader,VSpacer,VTextField,VTooltip})\n"],"sourceRoot":""}