@mxtommy/kip 4.8.2 → 4.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/package.json +27 -4
- package/public/{chunk-BIYHVfJl.js → chunk-07zHjmg-.js} +1 -1
- package/public/{chunk-NnB8OYZt.js → chunk-0z3nIRXw.js} +1 -1
- package/public/{chunk-CCiqU2uY.js → chunk-B09jfNia.js} +1 -1
- package/public/{chunk-Bq-eHuZV.js → chunk-B0D54iJs.js} +1 -1
- package/public/{chunk-DfGLo6Tb.js → chunk-B0eE4udE.js} +1 -1
- package/public/{chunk-CkfPr-c5.js → chunk-B9nVBlGj.js} +1 -1
- package/public/{chunk-B8zRhoG8.js → chunk-BFpzxIIT.js} +1 -1
- package/public/{chunk-D_wrJJxl.js → chunk-BIb-xYiS.js} +1 -1
- package/public/{chunk-CSpA60X7.js → chunk-BJ-wyixK.js} +1 -1
- package/public/{chunk-Bb1mO304.js → chunk-BLEZOsfR.js} +1 -1
- package/public/{chunk-7lulvsGI.js → chunk-BN7A4g6c.js} +1 -1
- package/public/{chunk-h2q_pbbF.js → chunk-BTOTKeBo.js} +1 -1
- package/public/{chunk-DjavLLpP.js → chunk-BUguZ7cK.js} +1 -1
- package/public/{chunk-B8gfh4xf.js → chunk-BZx964-p.js} +1 -1
- package/public/{chunk-CcvYOops.js → chunk-BeM64etA.js} +1 -1
- package/public/{chunk-DSvdWjO4.js → chunk-BfiyH3nV.js} +1 -1
- package/public/{chunk-B_PiPxb4.js → chunk-BjINKQ03.js} +1 -1
- package/public/{chunk-BdBWqZzL.js → chunk-BpcNrtxJ.js} +1 -1
- package/public/{chunk-C4FGoLDg.js → chunk-BuvyF0y5.js} +1 -1
- package/public/{chunk-DGOvRnAo.js → chunk-C6b8CVno.js} +1 -1
- package/public/{chunk-BgyxBAyq.js → chunk-CCfhzpE8.js} +1 -1
- package/public/{chunk-CoEM_FqS.js → chunk-CHAFm_nM.js} +1 -1
- package/public/{chunk-D0MyVrEL.js → chunk-CIGP2YJm.js} +1 -1
- package/public/{chunk-Bhah8DNM.js → chunk-CLTHuhlN.js} +1 -1
- package/public/{chunk-B6XxnPxk.js → chunk-CLs_NL1y.js} +1 -1
- package/public/{chunk-Cr34s2uQ.js → chunk-COI6IBXH.js} +1 -1
- package/public/{chunk-BxV0O2fU.js → chunk-CQMVIDcp.js} +1 -1
- package/public/{chunk-CHKQxw6E.js → chunk-CXvWM_vF.js} +1 -1
- package/public/{chunk-Di5pPpU7.js → chunk-CYYBxjrc.js} +1 -1
- package/public/{chunk-BW4m3O2L.js → chunk-C_OZJltF.js} +1 -1
- package/public/{chunk-CjsnWLUr.js → chunk-Co2wVrD6.js} +1 -1
- package/public/{chunk-DMhuBqKs.js → chunk-CoCQ3DW2.js} +1 -1
- package/public/{chunk-DMoEBcor.js → chunk-CxPx4NZv.js} +1 -1
- package/public/{chunk-CdSWuWKr.js → chunk-CyVRpGoJ.js} +1 -1
- package/public/{chunk-Dv77RFHm.js → chunk-D-_-GUVr.js} +1 -1
- package/public/{chunk-CU8RPnsi.js → chunk-D1HYfaL_.js} +1 -1
- package/public/{chunk-DBA0eRqb.js → chunk-D2953Rfp.js} +1 -1
- package/public/{chunk-Cu9FE8cB.js → chunk-DIl1k00y.js} +1 -1
- package/public/{chunk-CyURmwWh.js → chunk-DPnbM-aB.js} +1 -1
- package/public/{chunk-8hkXyEzG.js → chunk-DTN-sa1K.js} +1 -1
- package/public/{chunk-C3CwUYvD.js → chunk-DUEKoZhd.js} +1 -1
- package/public/{chunk-COMZv7NY.js → chunk-DmkAKXR1.js} +1 -1
- package/public/{chunk-zg7II0hz.js → chunk-Do8wqING.js} +1 -1
- package/public/{chunk-oPq9Nexl.js → chunk-JhFkJS7i.js} +1 -1
- package/public/{chunk-CJIxuzvd.js → chunk-OeQDZKFO.js} +1 -1
- package/public/{chunk-Bz9bswDl.js → chunk-_zRMMvCu.js} +1 -1
- package/public/{chunk-D-xDPCf7.js → chunk-eQ1pa34Q.js} +1 -1
- package/public/{chunk-DVB9tiW3.js → chunk-ibauGmSP.js} +1 -1
- package/public/{chunk-oZiyAw_P.js → chunk-otzyItXL.js} +1 -1
- package/public/{chunk-B6AwCAvV.js → chunk-q9NoPvcx.js} +1 -1
- package/public/{chunk-B15lj2T8.js → chunk-szQs8fiq.js} +1 -1
- package/public/{chunk-o977r5_s.js → chunk-x7L6DXVK.js} +1 -1
- package/public/index.html +1 -1
- package/public/{main-BNR44HGB.js → main-YKDNK5VZ.js} +4 -4
- package/plugin/history-series.service.js +0 -637
- package/plugin/index.js +0 -1322
- package/plugin/kip-series-contract.js +0 -31
- package/plugin/openApi.json +0 -855
- package/plugin/sqlite-history-storage.service.js +0 -1124
- package/plugin/src/history-series.service.js +0 -634
- package/plugin/src/index.js +0 -1322
- package/plugin/src/kip-series-contract.js +0 -31
- package/plugin/src/openApi.json +0 -855
- package/plugin/src/sqlite-history-storage.service.js +0 -1122
|
@@ -1 +1 @@
|
|
|
1
|
-
import {d1 as Hj,w,a as G,G as Gi,J as JD,bh as xp,bP as si,P as Pi,_ as _w,u as ul,e as EE,M as Mw,T as TT,h as Fw,c as $h,k as Qh,l as ud,g as qw,m as dd}from'./main-
|
|
1
|
+
import {d1 as Hj,w,a as G,G as Gi,J as JD,bh as xp,bP as si,P as Pi,_ as _w,u as ul,e as EE,M as Mw,T as TT,h as Fw,c as $h,k as Qh,l as ud,g as qw,m as dd}from'./main-YKDNK5VZ.js';function y(n,k){if(n&1){let r=Fw();Pi(0,"h3"),TT(1,"Getting Started"),ul(),Pi(2,"p"),TT(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application. Access the "),Pi(4,"a",1),TT(5,"KIP Help"),ul(),TT(6," documentation to learn more about KIP."),ul(),Pi(7,"table",2)(8,"thead")(9,"tr")(10,"th"),TT(11,"Actions"),ul(),Pi(12,"th"),TT(13,"Touch"),ul(),Pi(14,"th"),TT(15,"Mouse"),ul(),Pi(16,"th"),TT(17,"Keyboard Shortcuts"),ul()()(),Pi(18,"tbody")(19,"tr")(20,"td"),TT(21,"Open Actions menu"),ul(),Pi(22,"td"),TT(23,"Swipe left"),ul(),Pi(24,"td"),TT(25,"Click, drag left, and release"),ul(),Pi(26,"td")(27,"kbd"),TT(28,"Shift"),ul(),TT(29," + "),Pi(30,"kbd"),TT(31,"Ctrl"),ul(),TT(32," + "),Pi(33,"kbd",3),TT(34,"\u2190"),ul(),TT(35," (Left Arrow)"),ul()(),Pi(36,"tr")(37,"td"),TT(38,"Open Notification menu"),ul(),Pi(39,"td"),TT(40,"Swipe right"),ul(),Pi(41,"td"),TT(42,"Click, drag right, and release"),ul(),Pi(43,"td")(44,"kbd"),TT(45,"Shift"),ul(),TT(46," + "),Pi(47,"kbd"),TT(48,"Ctrl"),ul(),TT(49," + "),Pi(50,"kbd",3),TT(51,"\u2192"),ul(),TT(52," (Right Arrow)"),ul()(),Pi(53,"tr")(54,"td"),TT(55,"Cycle through dashboards"),ul(),Pi(56,"td"),TT(57,"Swipe up/down"),ul(),Pi(58,"td"),TT(59,"Click, drag up/down, and release"),ul(),Pi(60,"td")(61,"kbd"),TT(62,"Shift"),ul(),TT(63," + "),Pi(64,"kbd"),TT(65,"Ctrl"),ul(),TT(66," + "),Pi(67,"kbd",3),TT(68,"\u2191"),ul(),TT(69,"/"),Pi(70,"kbd",3),TT(71,"\u2193"),ul(),TT(72," (Up/Down Arrow)"),ul()(),Pi(73,"tr")(74,"td"),TT(75,"Toggle Fullscreen"),ul(),Pi(76,"td"),TT(77,"N/A"),ul(),Pi(78,"td"),TT(79,"N/A"),ul(),Pi(80,"td")(81,"kbd"),TT(82,"Shift"),ul(),TT(83," + "),Pi(84,"kbd"),TT(85,"Ctrl"),ul(),TT(86," + "),Pi(87,"kbd"),TT(88,"F"),ul()()(),Pi(89,"tr")(90,"td"),TT(91,"Toggle Night mode"),ul(),Pi(92,"td"),TT(93,"N/A"),ul(),Pi(94,"td"),TT(95,"N/A"),ul(),Pi(96,"td")(97,"kbd"),TT(98,"Shift"),ul(),TT(99," + "),Pi(100,"kbd"),TT(101,"Ctrl"),ul(),TT(102," + "),Pi(103,"kbd"),TT(104,"N"),ul()()(),Pi(105,"tr")(106,"td"),TT(107,"Toggle dashboard edit mode"),ul(),Pi(108,"td"),TT(109,"N/A"),ul(),Pi(110,"td"),TT(111,"N/A"),ul(),Pi(112,"td")(113,"kbd"),TT(114,"Shift"),ul(),TT(115," + "),Pi(116,"kbd"),TT(117,"Ctrl"),ul(),TT(118," + "),Pi(119,"kbd"),TT(120,"E"),ul()()()()(),Pi(121,"i"),TT(122,"Note that the words Touch and Tap are synonymous with mouse Click."),ul(),$h(123,"br")(124,"br"),Pi(125,"h3"),TT(126,"Login to Signal K"),ul(),Pi(127,"p"),TT(128," The first step is to configure Signal K server authentication ("),Pi(129,"i"),TT(130,"a pre-existing Signal K server username and password is required"),ul(),TT(131,"). Go to KIP's Connectivity options, toggle "),Pi(132,"strong"),TT(133,"Login to server"),ul(),TT(134,", enter your Signal K credentials and click "),Pi(135,"strong"),TT(136,"Sign in"),ul(),TT(137,". Once completed, click the upper right X button to get back to this dashboard ("),Pi(138,"a",4),TT(139,"Connectivity options"),ul(),TT(140,"). "),ul(),Pi(141,"ul")(142,"li"),TT(143," If you don\u2019t have a Signal K account, ask your captain or access the Signal K Admin Settings / Users page and create a user. "),ul(),Pi(144,"li"),TT(145," If you see an error, double-check your username and password, and make sure your device is on the same network as your Signal K server. "),ul()(),Pi(146,"h3"),TT(147,"Option 1: Load Demonstration Dashboards"),ul(),Pi(148,"p"),TT(149," Try the sample dashboards using data from your server: "),$h(150,"br"),Pi(151,"button",5),Qh("click",function(){ud(r);let l=qw();return dd(l.loadDemoConfig())}),TT(152,"Load Demo"),ul()(),Pi(153,"h3"),TT(154,"Option 2: Create Your Own Layout"),ul(),Pi(155,"p"),TT(156,' The text you are reading is actually a widget that fills half of the dashboard. The screen is split in halves at the middle. This mode is called Chartplotter mode. It can later be turned off in Settings / Options / Display. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. Note that you can add and manage dashboards using the Settings button from the Actions menu. '),ul(),Pi(157,"p")(158,"strong"),TT(159,"Try editing the Dashboard now to receive further instructions!"),ul()();}}function v(n,k){n&1&&(Pi(0,"h2"),TT(1,"Changing Layouts"),ul(),TT(2," Follow these simple steps to learn how to change your dashboard layout: "),Pi(3,"ol")(4,"li"),TT(5,"Resize this Tutorial widget using the now visible dashed borders or corners arrows. Resize it so it does not take up all the screen. You need free space in your dashboard to add more widgets. You can delete this Tutorial widget later when you are done with the instructions."),ul(),Pi(6,"li"),TT(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),ul(),Pi(8,"li"),TT(9,"Choose a widget from the selection panel to add it to the dashboard."),ul()(),Pi(10,"h3"),TT(11,"Possible widget operations"),ul(),Pi(12,"ul")(13,"li")(14,"strong"),TT(15,"Touch and drag"),ul(),TT(16," to move widgets"),ul(),Pi(17,"li")(18,"strong"),TT(19,"Drag corners and sides"),ul(),TT(20," to resize widgets"),ul(),Pi(21,"li")(22,"strong"),TT(23,"Double Tap"),ul(),TT(24," on a widget to configure it"),ul(),Pi(25,"li")(26,"strong"),TT(27,"Press and Hold"),ul(),TT(28," on a widget to delete or duplicate widgets"),ul()(),Pi(29,"h2"),TT(30,"Exiting dashboard edit mode"),ul(),Pi(31,"p"),TT(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),ul(),Pi(33,"h2"),TT(34,"Adding more dashboards"),ul(),Pi(35,"p"),TT(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),ul());}var N=(()=>{class n{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={filterSelfPaths:true};dashboard=w(G);settings=w(Gi);loadDemoConfig(){this.settings.loadDemoConfig();}static \u0275fac=function(o){return new(o||n)};static \u0275cmp=JD({type:n,selectors:[["widget-tutorial"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:1,consts:[[1,"tutorial-container"],["routerLink","/help"],[1,"nav-table"],[2,"font-size","x-large"],["routerLink","/options"],["mat-flat-button","",2,"margin-left","15px",3,"click"]],template:function(o,l){o&1&&(Pi(0,"div",0),_w(1,y,160,0)(2,v,37,0),ul()),o&2&&(EE(),Mw(l.dashboard.isDashboardStatic()?1:2));},dependencies:[xp,si],styles:[".tutorial-container[_ngcontent-%COMP%]{position:absolute;top:0;left:0;display:block;height:100%;width:100%;overflow-y:auto}.tutorial-container[_ngcontent-%COMP%]{padding:0 15px}.nav-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:2em}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .nav-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #bbb;padding:.5em 1em;text-align:center}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background:#ddd;color:#222;font-weight:700}.nav-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background:#242424}.warning[_ngcontent-%COMP%]{color:#b71c1c}.button-group[_ngcontent-%COMP%]{margin-top:2em;display:flex;gap:20px}a[_ngcontent-%COMP%]:visited, a[_ngcontent-%COMP%]:link{color:var(--kip-blue-color)}"]})}return n})();export{N as WidgetTutorialComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-h2q_pbbF.js';import {d1 as Hj,w,du as p,dy as K,ao as ue,aZ as R,bu as ut,dw as S,$ as $j,a6 as Lr,D as Dt,F as Fa,dn as ge,b0 as Wl,J as JD,_ as _w,M as Mw,f as eg,K as Kw,cp as Uh,ci as dl,T as TT,cj as fl}from'./main-BNR44HGB.js';var _=["widgetDataChart"];function E(m,t){m&1&&Uh(0,"canvas",1,0);}function I(m,t){m&1&&(dl(0,"div",2)(1,"p"),TT(2,"Ready to configure"),fl(),dl(3,"p",3),TT(4,"Double-tap to begin"),fl()());}var U=class m{id=Hj.required();type=Hj.required();theme=Hj.required();runtime=w(p);dsService=w(K);ngZone=w(ue);canvasService=w(R);unitsService=w(ut);datasetLifecycle=w(S);widgetDataChart=$j("widgetDataChart",{read:Lr});static DEFAULT_CONFIG={displayName:"Chart Label",color:"contrast",filterSelfPaths:true,datachartPath:null,datachartSource:null,convertUnitTo:null,timeScale:"minute",period:10,numDecimal:1,inverseYAxis:false,datasetAverageArray:"sma",showDataPoints:false,showAverageData:true,trackAgainstAverage:false,showDatasetMinimumValueLine:false,showDatasetMaximumValueLine:false,showDatasetAverageValueLine:true,showDatasetAngleAverageValueLine:false,showLabel:true,showTimeScale:false,startScaleAtZero:false,verticalChart:false,showYScale:false,yScaleSuggestedMin:void 0,yScaleSuggestedMax:void 0,enableMinMaxScaleLimit:false,yScaleMin:void 0,yScaleMax:void 0};lineChartData={datasets:[]};lineChartOptions={parsing:false,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.4}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart=null;dsServiceSub=null;datasetConfig=null;dataSourceInfo=null;lastVerticalChart=null;lastAverageValue=null;lastMinimumValue=null;lastMaximumValue=null;hasPath=Dt(()=>!!this.runtime.options()?.datachartPath);pathSignature=Dt(()=>{let t=this.runtime.options();if(t?.datachartPath)return [t.datachartPath,t.convertUnitTo,t.datachartSource,t.timeScale,t.period].join("|")});previousPathSignature=void 0;constructor(){Fa(()=>{let t=this.pathSignature();ge(()=>{t!==this.previousPathSignature&&ge(()=>{this.previousPathSignature=t;let e=this.runtime.options();e&&this.rebuildForDataset(e);});});}),Fa(()=>{let t=this.runtime.options(),e=this.theme();!t||!e||ge(()=>{this.lastVerticalChart!==null&&this.lastVerticalChart!==t.verticalChart?(this.lastVerticalChart=t.verticalChart??false,this.rebuildForDataset(t)):this.chart&&(this.ensureAverageDatasetPresence(),this.updateAnnotationVisibility(),this.applyDynamicTrackAverageStyling(),this.setChartOptions(t),this.setDatasetsColors(),this.ngZone.runOutsideAngular(()=>this.chart?.update("none")));});}),Fa(()=>{let t=this.runtime.options(),e=this.widgetDataChart(),a=this.hasPath();!t||!a||!e||this.chart||ge(()=>this.rebuildForDataset(t));});}rebuildForDataset(t){if(!t.datachartPath||!this.widgetDataChart()||(this.dsServiceSub?.unsubscribe(),this.lineChartData.datasets=[],this.datasetLifecycle.syncDataChartDataset(this.id(),t,this.pathSignature()),this.datasetConfig=this.dsService.getDatasetConfig(this.id())??null,this.dataSourceInfo=this.dsService.getDataSourceInfo(this.id())??null,!this.datasetConfig))return;this.createDatasets(t),this.setChartOptions(t),this.chart?.destroy();let a=this.widgetDataChart()?.nativeElement?.getContext("2d");a&&(this.chart=new Wl(a,{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming(),this.ngZone.runOutsideAngular(()=>this.chart?.update()));}setChartOptions(t){let e=this.datasetConfig;e&&(this.lineChartOptions.maintainAspectRatio=false,this.lineChartOptions.animation=false,this.lineChartOptions.indexAxis=t.verticalChart?"y":"x",t.verticalChart?this.lineChartOptions.scales={y:{type:"realtime",display:t.showTimeScale,position:t.verticalChart?"right":"left",suggestedMin:void 0,suggestedMax:void 0,title:{display:true,text:`Last ${e.period} ${e.timeScaleFormat}`,align:"center",color:this.getThemeColors().averageChartLine},time:{unit:e.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:true,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}},x:{type:"linear",display:t.showYScale,position:t.verticalChart?"top":"bottom",suggestedMin:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMin,suggestedMax:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMax,min:t.enableMinMaxScaleLimit?t.yScaleMin:void 0,max:t.enableMinMaxScaleLimit?t.yScaleMax:void 0,beginAtZero:t.startScaleAtZero,reverse:t.inverseYAxis,title:{display:false,text:"Value Axis",align:"center",color:this.getThemeColors().averageChartLine},ticks:{maxTicksLimit:8,precision:t.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"realtime",display:t.showTimeScale,title:{display:true,text:`Last ${e.period} ${e.timeScaleFormat}`,align:"center",color:this.getThemeColors().averageChartLine},time:{unit:e.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:true,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}},y:{display:t.showYScale,position:"right",suggestedMin:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMin,suggestedMax:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMax,min:t.enableMinMaxScaleLimit?t.yScaleMin:void 0,max:t.enableMinMaxScaleLimit?t.yScaleMax:void 0,beginAtZero:t.startScaleAtZero,reverse:t.inverseYAxis,title:{display:false,text:"Value Axis",align:"center",color:this.getThemeColors().averageChartLine},ticks:{maxTicksLimit:8,precision:t.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}}},this.lineChartOptions.plugins={title:{display:true,align:"end",padding:{top:3,bottom:0},text:"",font:{size:32},color:this.getThemeColors().chartValue},subtitle:{display:t.showLabel,align:"start",padding:{top:-35,bottom:20},text:` ${t.displayName}`,font:{size:22},color:this.getThemeColors().chartLabel},annotation:{annotations:{minimumLine:{type:"line",scaleID:t.verticalChart?"x":"y",display:t.showDatasetMinimumValueLine&&this.lastMinimumValue!==null,value:this.lastMinimumValue??0,drawTime:"afterDatasetsDraw",label:{display:t.showDatasetMinimumValueLine&&this.lastMinimumValue!==null,content:this.lastMinimumValue!==null?`${this.lastMinimumValue.toFixed(t.numDecimal??1)}`:"",position:"start",yAdjust:12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},maximumLine:{type:"line",scaleID:t.verticalChart?"x":"y",display:t.showDatasetMaximumValueLine&&this.lastMaximumValue!==null,value:this.lastMaximumValue??0,drawTime:"afterDatasetsDraw",label:{display:t.showDatasetMaximumValueLine&&this.lastMaximumValue!==null,content:this.lastMaximumValue!==null?`${this.lastMaximumValue.toFixed(t.numDecimal??1)}`:"",position:"start",yAdjust:-12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},averageLine:{type:"line",scaleID:t.verticalChart?"x":"y",display:t.showDatasetAverageValueLine&&this.lastAverageValue!==null,value:this.lastAverageValue??0,borderDash:[6,6],borderColor:this.getThemeColors().averageChartLine,drawTime:"afterDatasetsDraw",label:{display:t.showDatasetAverageValueLine&&this.lastAverageValue!==null,content:this.lastAverageValue!==null?`${this.lastAverageValue.toFixed(t.numDecimal??1)}`:"",position:"start",padding:4,color:this.getThemeColors().chartValue,backgroundColor:"rgba(63,63,63,0.7)"}}}},legend:{display:false},streaming:{duration:(this.dataSourceInfo?.maxDataPoints??0)*(this.dataSourceInfo?.sampleTime??0),delay:this.dataSourceInfo?.sampleTime??0,frameRate:e.timeScaleFormat==="day"?5:e.timeScaleFormat==="hour"?8:e.timeScaleFormat==="minute"?15:30}});}createDatasets(t){let e,a;t.inverseYAxis&&t.trackAgainstAverage?(e="start",a=false):t.inverseYAxis&&!t.trackAgainstAverage?(e=false,a="start"):!t.inverseYAxis&&t.trackAgainstAverage?(e=true,a=false):(e=false,a=true),this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:t.trackAgainstAverage?1:0,parsing:false,tension:0,pointRadius:t.showDataPoints?t.trackAgainstAverage?0:1.5:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:t.trackAgainstAverage||t.showDataPoints?0:3,fill:e}),t.showAverageData&&this.lineChartData.datasets.push({label:"Average",data:[],order:t.trackAgainstAverage?0:1,parsing:false,tension:.4,pointRadius:t.showDataPoints&&t.trackAgainstAverage?1.5:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:t.trackAgainstAverage?t.showDataPoints?0:3:0,fill:a}),this.setDatasetsColors();}setDatasetsColors(){this.lineChartData.datasets.forEach(t=>{t.label==="Value"?(t.borderColor=this.getThemeColors().valueLine,t.backgroundColor=this.getThemeColors().valueFill):t.label==="Average"&&(t.borderColor=this.getThemeColors().averageLine,t.backgroundColor=this.getThemeColors().averageFill);});}ensureAverageDatasetPresence(){let t=this.runtime.options();if(!t||!this.chart)return;let e=this.lineChartData.datasets.some(a=>a.label==="Average");if(t.showAverageData&&!e){if(this.lineChartData.datasets.findIndex(n=>n.label==="Value")>=0){let n=t.inverseYAxis?t.trackAgainstAverage?false:"start":!t.trackAgainstAverage;this.lineChartData.datasets.push({label:"Average",data:[],order:t.trackAgainstAverage?0:1,parsing:false,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:t.trackAgainstAverage?3:0,fill:n});}}else !t.showAverageData&&e&&(this.lineChartData.datasets=this.lineChartData.datasets.filter(a=>a.label!=="Average"));}applyDynamicTrackAverageStyling(){let t=this.runtime.options();if(!t)return;let e=this.lineChartData.datasets.find(l=>l.label==="Value"),a=this.lineChartData.datasets.find(l=>l.label==="Average"),n,r;t.inverseYAxis&&t.trackAgainstAverage?(n="start",r=false):t.inverseYAxis&&!t.trackAgainstAverage?(n=false,r="start"):!t.inverseYAxis&&t.trackAgainstAverage?(n=true,r=false):(n=false,r=true),e&&(e.order=t.trackAgainstAverage?1:0,e.borderWidth=t.trackAgainstAverage?0:3,e.fill=n),a&&(a.order=t.trackAgainstAverage?0:1,a.borderWidth=t.trackAgainstAverage?3:0,a.fill=r);}updateAnnotationVisibility(){let t=this.runtime.options();if(!t||!this.chart)return;let e=this.chart.options.plugins.annotation?.annotations;if(e){if(e.minimumLine){let a=t.showDatasetMinimumValueLine&&this.lastMinimumValue!==null;e.minimumLine.display=a,e.minimumLine.label&&(e.minimumLine.label.display=a);}if(e.maximumLine){let a=t.showDatasetMaximumValueLine&&this.lastMaximumValue!==null;e.maximumLine.display=a,e.maximumLine.label&&(e.maximumLine.label.display=a);}if(e.averageLine){let a=t.showDatasetAverageValueLine&&this.lastAverageValue!==null;e.averageLine.display=a,e.averageLine.label&&(e.averageLine.label.display=a);}}}getThemeColors(){let t=this.runtime.options()?.color,e={valueLine:"",valueFill:"",averageLine:"",averageFill:"",averageChartLine:"",chartLabel:"",chartValue:""};switch(t){case "contrast":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().contrastDimmer,e.valueFill=this.theme().contrastDimmer,e.averageLine=this.theme().contrast,e.averageFill=this.theme().contrast,e.chartValue=e.averageLine):(e.valueLine=this.theme().contrast,e.valueFill=this.theme().contrast,e.averageLine=this.theme().contrastDimmer,e.averageFill=this.theme().contrastDimmer,e.chartValue=this.theme().contrast),e.averageChartLine=this.theme().contrastDim,e.chartLabel=this.theme().contrastDim;break;case "blue":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().blueDimmer,e.valueFill=this.theme().blueDimmer,e.averageLine=this.theme().blue,e.averageFill=this.theme().blue,e.chartValue=e.averageLine):(e.valueLine=this.theme().blue,e.valueFill=this.theme().blue,e.averageLine=this.theme().blueDimmer,e.averageFill=this.theme().blueDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().blueDim,e.chartLabel=this.theme().contrastDim;break;case "green":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().greenDimmer,e.valueFill=this.theme().greenDimmer,e.averageLine=this.theme().green,e.averageFill=this.theme().green,e.chartValue=e.averageLine):(e.valueLine=this.theme().green,e.valueFill=this.theme().green,e.averageLine=this.theme().greenDimmer,e.averageFill=this.theme().greenDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().greenDim,e.chartLabel=this.theme().contrastDim;break;case "pink":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().pinkDimmer,e.valueFill=this.theme().pinkDimmer,e.averageLine=this.theme().pink,e.averageFill=this.theme().pink,e.chartValue=e.averageLine):(e.valueLine=this.theme().pink,e.valueFill=this.theme().pink,e.averageLine=this.theme().pinkDimmer,e.averageFill=this.theme().pinkDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().pinkDim,e.chartLabel=this.theme().contrastDim;break;case "orange":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().orangeDimmer,e.valueFill=this.theme().orangeDimmer,e.averageLine=this.theme().orange,e.averageFill=this.theme().orange,e.chartValue=e.averageLine):(e.valueLine=this.theme().orange,e.valueFill=this.theme().orange,e.averageLine=this.theme().orangeDimmer,e.averageFill=this.theme().orangeDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().orangeDim,e.chartLabel=this.theme().contrastDim;break;case "purple":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().purpleDimmer,e.valueFill=this.theme().purpleDimmer,e.averageLine=this.theme().purple,e.averageFill=this.theme().purple,e.chartValue=e.averageLine):(e.valueLine=this.theme().purple,e.valueFill=this.theme().purple,e.averageLine=this.theme().purpleDimmer,e.averageFill=this.theme().purpleDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().purpleDim,e.chartLabel=this.theme().contrastDim;break;case "grey":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().greyDimmer,e.valueFill=this.theme().greyDimmer,e.averageLine=this.theme().grey,e.averageFill=this.theme().grey,e.chartValue=e.averageLine):(e.valueLine=this.theme().grey,e.valueFill=this.theme().grey,e.averageLine=this.theme().greyDimmer,e.averageFill=this.theme().greyDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().greyDim,e.chartLabel=this.theme().contrastDim;break;case "yellow":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().yellowDimmer,e.valueFill=this.theme().yellowDimmer,e.averageLine=this.theme().yellow,e.averageFill=this.theme().yellow,e.chartValue=e.averageLine):(e.valueLine=this.theme().yellow,e.valueFill=this.theme().yellow,e.averageLine=this.theme().yellowDimmer,e.averageFill=this.theme().yellowDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().yellowDim,e.chartLabel=this.theme().contrastDim;break}return e}getUnitsLabel(){let t="",e=this.runtime.options()?.convertUnitTo??"";switch(e){case "percent":case "percentraw":t="%";break;case "latitudeMin":t="latitude in minutes";break;case "latitudeSec":t="latitude in secondes";break;case "longitudeMin":t="longitude in minutes";break;case "longitudeSec":t="longitude in secondes";break;default:t=e;break}return t}startStreaming(){let t=this.runtime.options();if(!t?.datachartPath)return;this.dsServiceSub?.unsubscribe();let e=this.dsService.getDatasetBatchThenLiveObservable(this.id());e&&(this.dsServiceSub=e.subscribe(a=>{if(this.chart){if(Array.isArray(a)){let n=this.transformDatasetRows(a,0);if(this.chart.data.datasets[0].data.push(...n),t.showAverageData&&this.lineChartData.datasets[1]){let l=t.datasetAverageArray??"sma",s=this.transformDatasetRows(a,l);this.chart.data.datasets[1].data.push(...s);}let r=a[a.length-1];r&&this.applyTitleAndAnnotationValues(r,t);}else {let n=this.transformDatasetRows([a],0)[0];if(this.chart.data.datasets[0].data.push(n),t.showAverageData&&this.lineChartData.datasets[1]){let r=t.datasetAverageArray??"sma",l=this.transformDatasetRows([a],r)[0];this.chart.data.datasets[1].data.push(l);}this.applyTitleAndAnnotationValues(a,t);}this.ngZone.runOutsideAngular(()=>this.chart?.update("none"));}}));}applyTitleAndAnnotationValues(t,e){if(!this.chart)return;let a=e.convertUnitTo??"",n=e.numDecimal??1,r=e.trackAgainstAverage?t.data.sma??t.data.value:t.data.value,l=this.unitsService.convertToUnit(a,r);if(l!=null&&Number.isFinite(l)){let y=this.chart.options.plugins;y?.title&&(y.title.text=`${l.toFixed(n)} ${this.getUnitsLabel()} `);}let s=t.data.lastAverage!=null?this.unitsService.convertToUnit(a,t.data.lastAverage)??void 0:void 0,h=t.data.lastMinimum!=null?this.unitsService.convertToUnit(a,t.data.lastMinimum)??void 0:void 0,g=t.data.lastMaximum!=null?this.unitsService.convertToUnit(a,t.data.lastMaximum)??void 0:void 0,i=this.chart.options.plugins.annotation?.annotations;i&&(this.lastAverageValue=s!=null&&Number.isFinite(s)?s:null,this.lastMinimumValue=h!=null&&Number.isFinite(h)?h:null,this.lastMaximumValue=g!=null&&Number.isFinite(g)?g:null,i.averageLine&&(this.lastAverageValue!==null?(i.averageLine.value=this.lastAverageValue,i.averageLine.display=e.showDatasetAverageValueLine,i.averageLine.label&&(i.averageLine.label.display=e.showDatasetAverageValueLine,i.averageLine.label.content=`${this.lastAverageValue.toFixed(n)}`)):(i.averageLine.display=false,i.averageLine.label&&(i.averageLine.label.display=false,i.averageLine.label.content=""))),i.minimumLine&&(this.lastMinimumValue!==null?(i.minimumLine.value=this.lastMinimumValue,i.minimumLine.display=e.showDatasetMinimumValueLine,i.minimumLine.label&&(i.minimumLine.label.display=e.showDatasetMinimumValueLine,i.minimumLine.label.content=`${this.lastMinimumValue.toFixed(n)}`)):(i.minimumLine.display=false,i.minimumLine.label&&(i.minimumLine.label.display=false,i.minimumLine.label.content=""))),i.maximumLine&&(this.lastMaximumValue!==null?(i.maximumLine.value=this.lastMaximumValue,i.maximumLine.display=e.showDatasetMaximumValueLine,i.maximumLine.label&&(i.maximumLine.label.display=e.showDatasetMaximumValueLine,i.maximumLine.label.content=`${this.lastMaximumValue.toFixed(n)}`)):(i.maximumLine.display=false,i.maximumLine.label&&(i.maximumLine.label.display=false,i.maximumLine.label.content=""))));}transformDatasetRows(t,e){let a=this.runtime.options();if(!a)return [];let n=s=>this.unitsService.convertToUnit(a.convertUnitTo??"",s)??s,r=a.verticalChart===true,l=a.datasetAverageArray;return t.map(s=>{if(r){if(e===0)return {x:n(s.data.value),y:s.timestamp};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return {x:n(h[l]??s.data.value),y:s.timestamp}}}else {if(e===0)return {x:s.timestamp,y:n(s.data.value)};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return {x:s.timestamp,y:n(h[l]??s.data.value)}}}})}ngOnDestroy(){this.dsServiceSub?.unsubscribe(),this.chart?.destroy();let t=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(t,{clear:true,removeFromDom:true});}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=JD({type:m,selectors:[["widget-data-chart"]],viewQuery:function(e,a){e&1&&eg(a.widgetDataChart,_,5,Lr),e&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:1,consts:[["widgetDataChart",""],[2,"z-index","inherit"],[1,"empty-state"],[1,"hint"]],template:function(e,a){e&1&&_w(0,E,2,0,"canvas",1)(1,I,5,0,"div",2),e&2&&Mw(a.hasPath()?0:1);},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;text-align:center;color:var(--mat-sys-on-surface-variant)}.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0;padding:0 16px}.empty-state[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{font-size:.85em;opacity:.7}"]})};export{U as WidgetDataChartComponent};
|
|
1
|
+
import'./chunk-BTOTKeBo.js';import {d1 as Hj,w,du as p,dy as K,ao as ue,aZ as R,bu as ut,dw as S,$ as $j,a6 as Lr,D as Dt,F as Fa,dn as ge,b0 as Wl,J as JD,_ as _w,M as Mw,f as eg,K as Kw,cp as Uh,ci as dl,T as TT,cj as fl}from'./main-YKDNK5VZ.js';var _=["widgetDataChart"];function E(m,t){m&1&&Uh(0,"canvas",1,0);}function I(m,t){m&1&&(dl(0,"div",2)(1,"p"),TT(2,"Ready to configure"),fl(),dl(3,"p",3),TT(4,"Double-tap to begin"),fl()());}var U=class m{id=Hj.required();type=Hj.required();theme=Hj.required();runtime=w(p);dsService=w(K);ngZone=w(ue);canvasService=w(R);unitsService=w(ut);datasetLifecycle=w(S);widgetDataChart=$j("widgetDataChart",{read:Lr});static DEFAULT_CONFIG={displayName:"Chart Label",color:"contrast",filterSelfPaths:true,datachartPath:null,datachartSource:null,convertUnitTo:null,timeScale:"minute",period:10,numDecimal:1,inverseYAxis:false,datasetAverageArray:"sma",showDataPoints:false,showAverageData:true,trackAgainstAverage:false,showDatasetMinimumValueLine:false,showDatasetMaximumValueLine:false,showDatasetAverageValueLine:true,showDatasetAngleAverageValueLine:false,showLabel:true,showTimeScale:false,startScaleAtZero:false,verticalChart:false,showYScale:false,yScaleSuggestedMin:void 0,yScaleSuggestedMax:void 0,enableMinMaxScaleLimit:false,yScaleMin:void 0,yScaleMax:void 0};lineChartData={datasets:[]};lineChartOptions={parsing:false,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.4}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart=null;dsServiceSub=null;datasetConfig=null;dataSourceInfo=null;lastVerticalChart=null;lastAverageValue=null;lastMinimumValue=null;lastMaximumValue=null;hasPath=Dt(()=>!!this.runtime.options()?.datachartPath);pathSignature=Dt(()=>{let t=this.runtime.options();if(t?.datachartPath)return [t.datachartPath,t.convertUnitTo,t.datachartSource,t.timeScale,t.period].join("|")});previousPathSignature=void 0;constructor(){Fa(()=>{let t=this.pathSignature();ge(()=>{t!==this.previousPathSignature&&ge(()=>{this.previousPathSignature=t;let e=this.runtime.options();e&&this.rebuildForDataset(e);});});}),Fa(()=>{let t=this.runtime.options(),e=this.theme();!t||!e||ge(()=>{this.lastVerticalChart!==null&&this.lastVerticalChart!==t.verticalChart?(this.lastVerticalChart=t.verticalChart??false,this.rebuildForDataset(t)):this.chart&&(this.ensureAverageDatasetPresence(),this.updateAnnotationVisibility(),this.applyDynamicTrackAverageStyling(),this.setChartOptions(t),this.setDatasetsColors(),this.ngZone.runOutsideAngular(()=>this.chart?.update("none")));});}),Fa(()=>{let t=this.runtime.options(),e=this.widgetDataChart(),a=this.hasPath();!t||!a||!e||this.chart||ge(()=>this.rebuildForDataset(t));});}rebuildForDataset(t){if(!t.datachartPath||!this.widgetDataChart()||(this.dsServiceSub?.unsubscribe(),this.lineChartData.datasets=[],this.datasetLifecycle.syncDataChartDataset(this.id(),t,this.pathSignature()),this.datasetConfig=this.dsService.getDatasetConfig(this.id())??null,this.dataSourceInfo=this.dsService.getDataSourceInfo(this.id())??null,!this.datasetConfig))return;this.createDatasets(t),this.setChartOptions(t),this.chart?.destroy();let a=this.widgetDataChart()?.nativeElement?.getContext("2d");a&&(this.chart=new Wl(a,{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming(),this.ngZone.runOutsideAngular(()=>this.chart?.update()));}setChartOptions(t){let e=this.datasetConfig;e&&(this.lineChartOptions.maintainAspectRatio=false,this.lineChartOptions.animation=false,this.lineChartOptions.indexAxis=t.verticalChart?"y":"x",t.verticalChart?this.lineChartOptions.scales={y:{type:"realtime",display:t.showTimeScale,position:t.verticalChart?"right":"left",suggestedMin:void 0,suggestedMax:void 0,title:{display:true,text:`Last ${e.period} ${e.timeScaleFormat}`,align:"center",color:this.getThemeColors().averageChartLine},time:{unit:e.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:true,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}},x:{type:"linear",display:t.showYScale,position:t.verticalChart?"top":"bottom",suggestedMin:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMin,suggestedMax:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMax,min:t.enableMinMaxScaleLimit?t.yScaleMin:void 0,max:t.enableMinMaxScaleLimit?t.yScaleMax:void 0,beginAtZero:t.startScaleAtZero,reverse:t.inverseYAxis,title:{display:false,text:"Value Axis",align:"center",color:this.getThemeColors().averageChartLine},ticks:{maxTicksLimit:8,precision:t.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"realtime",display:t.showTimeScale,title:{display:true,text:`Last ${e.period} ${e.timeScaleFormat}`,align:"center",color:this.getThemeColors().averageChartLine},time:{unit:e.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:true,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}},y:{display:t.showYScale,position:"right",suggestedMin:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMin,suggestedMax:t.enableMinMaxScaleLimit?void 0:t.yScaleSuggestedMax,min:t.enableMinMaxScaleLimit?t.yScaleMin:void 0,max:t.enableMinMaxScaleLimit?t.yScaleMax:void 0,beginAtZero:t.startScaleAtZero,reverse:t.inverseYAxis,title:{display:false,text:"Value Axis",align:"center",color:this.getThemeColors().averageChartLine},ticks:{maxTicksLimit:8,precision:t.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:true}},grid:{display:true,color:this.theme().contrastDimmer}}},this.lineChartOptions.plugins={title:{display:true,align:"end",padding:{top:3,bottom:0},text:"",font:{size:32},color:this.getThemeColors().chartValue},subtitle:{display:t.showLabel,align:"start",padding:{top:-35,bottom:20},text:` ${t.displayName}`,font:{size:22},color:this.getThemeColors().chartLabel},annotation:{annotations:{minimumLine:{type:"line",scaleID:t.verticalChart?"x":"y",display:t.showDatasetMinimumValueLine&&this.lastMinimumValue!==null,value:this.lastMinimumValue??0,drawTime:"afterDatasetsDraw",label:{display:t.showDatasetMinimumValueLine&&this.lastMinimumValue!==null,content:this.lastMinimumValue!==null?`${this.lastMinimumValue.toFixed(t.numDecimal??1)}`:"",position:"start",yAdjust:12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},maximumLine:{type:"line",scaleID:t.verticalChart?"x":"y",display:t.showDatasetMaximumValueLine&&this.lastMaximumValue!==null,value:this.lastMaximumValue??0,drawTime:"afterDatasetsDraw",label:{display:t.showDatasetMaximumValueLine&&this.lastMaximumValue!==null,content:this.lastMaximumValue!==null?`${this.lastMaximumValue.toFixed(t.numDecimal??1)}`:"",position:"start",yAdjust:-12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},averageLine:{type:"line",scaleID:t.verticalChart?"x":"y",display:t.showDatasetAverageValueLine&&this.lastAverageValue!==null,value:this.lastAverageValue??0,borderDash:[6,6],borderColor:this.getThemeColors().averageChartLine,drawTime:"afterDatasetsDraw",label:{display:t.showDatasetAverageValueLine&&this.lastAverageValue!==null,content:this.lastAverageValue!==null?`${this.lastAverageValue.toFixed(t.numDecimal??1)}`:"",position:"start",padding:4,color:this.getThemeColors().chartValue,backgroundColor:"rgba(63,63,63,0.7)"}}}},legend:{display:false},streaming:{duration:(this.dataSourceInfo?.maxDataPoints??0)*(this.dataSourceInfo?.sampleTime??0),delay:this.dataSourceInfo?.sampleTime??0,frameRate:e.timeScaleFormat==="day"?5:e.timeScaleFormat==="hour"?8:e.timeScaleFormat==="minute"?15:30}});}createDatasets(t){let e,a;t.inverseYAxis&&t.trackAgainstAverage?(e="start",a=false):t.inverseYAxis&&!t.trackAgainstAverage?(e=false,a="start"):!t.inverseYAxis&&t.trackAgainstAverage?(e=true,a=false):(e=false,a=true),this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:t.trackAgainstAverage?1:0,parsing:false,tension:0,pointRadius:t.showDataPoints?t.trackAgainstAverage?0:1.5:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:t.trackAgainstAverage||t.showDataPoints?0:3,fill:e}),t.showAverageData&&this.lineChartData.datasets.push({label:"Average",data:[],order:t.trackAgainstAverage?0:1,parsing:false,tension:.4,pointRadius:t.showDataPoints&&t.trackAgainstAverage?1.5:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:t.trackAgainstAverage?t.showDataPoints?0:3:0,fill:a}),this.setDatasetsColors();}setDatasetsColors(){this.lineChartData.datasets.forEach(t=>{t.label==="Value"?(t.borderColor=this.getThemeColors().valueLine,t.backgroundColor=this.getThemeColors().valueFill):t.label==="Average"&&(t.borderColor=this.getThemeColors().averageLine,t.backgroundColor=this.getThemeColors().averageFill);});}ensureAverageDatasetPresence(){let t=this.runtime.options();if(!t||!this.chart)return;let e=this.lineChartData.datasets.some(a=>a.label==="Average");if(t.showAverageData&&!e){if(this.lineChartData.datasets.findIndex(n=>n.label==="Value")>=0){let n=t.inverseYAxis?t.trackAgainstAverage?false:"start":!t.trackAgainstAverage;this.lineChartData.datasets.push({label:"Average",data:[],order:t.trackAgainstAverage?0:1,parsing:false,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:t.trackAgainstAverage?3:0,fill:n});}}else !t.showAverageData&&e&&(this.lineChartData.datasets=this.lineChartData.datasets.filter(a=>a.label!=="Average"));}applyDynamicTrackAverageStyling(){let t=this.runtime.options();if(!t)return;let e=this.lineChartData.datasets.find(l=>l.label==="Value"),a=this.lineChartData.datasets.find(l=>l.label==="Average"),n,r;t.inverseYAxis&&t.trackAgainstAverage?(n="start",r=false):t.inverseYAxis&&!t.trackAgainstAverage?(n=false,r="start"):!t.inverseYAxis&&t.trackAgainstAverage?(n=true,r=false):(n=false,r=true),e&&(e.order=t.trackAgainstAverage?1:0,e.borderWidth=t.trackAgainstAverage?0:3,e.fill=n),a&&(a.order=t.trackAgainstAverage?0:1,a.borderWidth=t.trackAgainstAverage?3:0,a.fill=r);}updateAnnotationVisibility(){let t=this.runtime.options();if(!t||!this.chart)return;let e=this.chart.options.plugins.annotation?.annotations;if(e){if(e.minimumLine){let a=t.showDatasetMinimumValueLine&&this.lastMinimumValue!==null;e.minimumLine.display=a,e.minimumLine.label&&(e.minimumLine.label.display=a);}if(e.maximumLine){let a=t.showDatasetMaximumValueLine&&this.lastMaximumValue!==null;e.maximumLine.display=a,e.maximumLine.label&&(e.maximumLine.label.display=a);}if(e.averageLine){let a=t.showDatasetAverageValueLine&&this.lastAverageValue!==null;e.averageLine.display=a,e.averageLine.label&&(e.averageLine.label.display=a);}}}getThemeColors(){let t=this.runtime.options()?.color,e={valueLine:"",valueFill:"",averageLine:"",averageFill:"",averageChartLine:"",chartLabel:"",chartValue:""};switch(t){case "contrast":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().contrastDimmer,e.valueFill=this.theme().contrastDimmer,e.averageLine=this.theme().contrast,e.averageFill=this.theme().contrast,e.chartValue=e.averageLine):(e.valueLine=this.theme().contrast,e.valueFill=this.theme().contrast,e.averageLine=this.theme().contrastDimmer,e.averageFill=this.theme().contrastDimmer,e.chartValue=this.theme().contrast),e.averageChartLine=this.theme().contrastDim,e.chartLabel=this.theme().contrastDim;break;case "blue":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().blueDimmer,e.valueFill=this.theme().blueDimmer,e.averageLine=this.theme().blue,e.averageFill=this.theme().blue,e.chartValue=e.averageLine):(e.valueLine=this.theme().blue,e.valueFill=this.theme().blue,e.averageLine=this.theme().blueDimmer,e.averageFill=this.theme().blueDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().blueDim,e.chartLabel=this.theme().contrastDim;break;case "green":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().greenDimmer,e.valueFill=this.theme().greenDimmer,e.averageLine=this.theme().green,e.averageFill=this.theme().green,e.chartValue=e.averageLine):(e.valueLine=this.theme().green,e.valueFill=this.theme().green,e.averageLine=this.theme().greenDimmer,e.averageFill=this.theme().greenDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().greenDim,e.chartLabel=this.theme().contrastDim;break;case "pink":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().pinkDimmer,e.valueFill=this.theme().pinkDimmer,e.averageLine=this.theme().pink,e.averageFill=this.theme().pink,e.chartValue=e.averageLine):(e.valueLine=this.theme().pink,e.valueFill=this.theme().pink,e.averageLine=this.theme().pinkDimmer,e.averageFill=this.theme().pinkDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().pinkDim,e.chartLabel=this.theme().contrastDim;break;case "orange":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().orangeDimmer,e.valueFill=this.theme().orangeDimmer,e.averageLine=this.theme().orange,e.averageFill=this.theme().orange,e.chartValue=e.averageLine):(e.valueLine=this.theme().orange,e.valueFill=this.theme().orange,e.averageLine=this.theme().orangeDimmer,e.averageFill=this.theme().orangeDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().orangeDim,e.chartLabel=this.theme().contrastDim;break;case "purple":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().purpleDimmer,e.valueFill=this.theme().purpleDimmer,e.averageLine=this.theme().purple,e.averageFill=this.theme().purple,e.chartValue=e.averageLine):(e.valueLine=this.theme().purple,e.valueFill=this.theme().purple,e.averageLine=this.theme().purpleDimmer,e.averageFill=this.theme().purpleDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().purpleDim,e.chartLabel=this.theme().contrastDim;break;case "grey":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().greyDimmer,e.valueFill=this.theme().greyDimmer,e.averageLine=this.theme().grey,e.averageFill=this.theme().grey,e.chartValue=e.averageLine):(e.valueLine=this.theme().grey,e.valueFill=this.theme().grey,e.averageLine=this.theme().greyDimmer,e.averageFill=this.theme().greyDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().greyDim,e.chartLabel=this.theme().contrastDim;break;case "yellow":this.runtime.options()?.trackAgainstAverage?(e.valueLine=this.theme().yellowDimmer,e.valueFill=this.theme().yellowDimmer,e.averageLine=this.theme().yellow,e.averageFill=this.theme().yellow,e.chartValue=e.averageLine):(e.valueLine=this.theme().yellow,e.valueFill=this.theme().yellow,e.averageLine=this.theme().yellowDimmer,e.averageFill=this.theme().yellowDimmer,e.chartValue=e.valueFill),e.averageChartLine=this.theme().yellowDim,e.chartLabel=this.theme().contrastDim;break}return e}getUnitsLabel(){let t="",e=this.runtime.options()?.convertUnitTo??"";switch(e){case "percent":case "percentraw":t="%";break;case "latitudeMin":t="latitude in minutes";break;case "latitudeSec":t="latitude in secondes";break;case "longitudeMin":t="longitude in minutes";break;case "longitudeSec":t="longitude in secondes";break;default:t=e;break}return t}startStreaming(){let t=this.runtime.options();if(!t?.datachartPath)return;this.dsServiceSub?.unsubscribe();let e=this.dsService.getDatasetBatchThenLiveObservable(this.id());e&&(this.dsServiceSub=e.subscribe(a=>{if(this.chart){if(Array.isArray(a)){let n=this.transformDatasetRows(a,0);if(this.chart.data.datasets[0].data.push(...n),t.showAverageData&&this.lineChartData.datasets[1]){let l=t.datasetAverageArray??"sma",s=this.transformDatasetRows(a,l);this.chart.data.datasets[1].data.push(...s);}let r=a[a.length-1];r&&this.applyTitleAndAnnotationValues(r,t);}else {let n=this.transformDatasetRows([a],0)[0];if(this.chart.data.datasets[0].data.push(n),t.showAverageData&&this.lineChartData.datasets[1]){let r=t.datasetAverageArray??"sma",l=this.transformDatasetRows([a],r)[0];this.chart.data.datasets[1].data.push(l);}this.applyTitleAndAnnotationValues(a,t);}this.ngZone.runOutsideAngular(()=>this.chart?.update("none"));}}));}applyTitleAndAnnotationValues(t,e){if(!this.chart)return;let a=e.convertUnitTo??"",n=e.numDecimal??1,r=e.trackAgainstAverage?t.data.sma??t.data.value:t.data.value,l=this.unitsService.convertToUnit(a,r);if(l!=null&&Number.isFinite(l)){let y=this.chart.options.plugins;y?.title&&(y.title.text=`${l.toFixed(n)} ${this.getUnitsLabel()} `);}let s=t.data.lastAverage!=null?this.unitsService.convertToUnit(a,t.data.lastAverage)??void 0:void 0,h=t.data.lastMinimum!=null?this.unitsService.convertToUnit(a,t.data.lastMinimum)??void 0:void 0,g=t.data.lastMaximum!=null?this.unitsService.convertToUnit(a,t.data.lastMaximum)??void 0:void 0,i=this.chart.options.plugins.annotation?.annotations;i&&(this.lastAverageValue=s!=null&&Number.isFinite(s)?s:null,this.lastMinimumValue=h!=null&&Number.isFinite(h)?h:null,this.lastMaximumValue=g!=null&&Number.isFinite(g)?g:null,i.averageLine&&(this.lastAverageValue!==null?(i.averageLine.value=this.lastAverageValue,i.averageLine.display=e.showDatasetAverageValueLine,i.averageLine.label&&(i.averageLine.label.display=e.showDatasetAverageValueLine,i.averageLine.label.content=`${this.lastAverageValue.toFixed(n)}`)):(i.averageLine.display=false,i.averageLine.label&&(i.averageLine.label.display=false,i.averageLine.label.content=""))),i.minimumLine&&(this.lastMinimumValue!==null?(i.minimumLine.value=this.lastMinimumValue,i.minimumLine.display=e.showDatasetMinimumValueLine,i.minimumLine.label&&(i.minimumLine.label.display=e.showDatasetMinimumValueLine,i.minimumLine.label.content=`${this.lastMinimumValue.toFixed(n)}`)):(i.minimumLine.display=false,i.minimumLine.label&&(i.minimumLine.label.display=false,i.minimumLine.label.content=""))),i.maximumLine&&(this.lastMaximumValue!==null?(i.maximumLine.value=this.lastMaximumValue,i.maximumLine.display=e.showDatasetMaximumValueLine,i.maximumLine.label&&(i.maximumLine.label.display=e.showDatasetMaximumValueLine,i.maximumLine.label.content=`${this.lastMaximumValue.toFixed(n)}`)):(i.maximumLine.display=false,i.maximumLine.label&&(i.maximumLine.label.display=false,i.maximumLine.label.content=""))));}transformDatasetRows(t,e){let a=this.runtime.options();if(!a)return [];let n=s=>this.unitsService.convertToUnit(a.convertUnitTo??"",s)??s,r=a.verticalChart===true,l=a.datasetAverageArray;return t.map(s=>{if(r){if(e===0)return {x:n(s.data.value),y:s.timestamp};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return {x:n(h[l]??s.data.value),y:s.timestamp}}}else {if(e===0)return {x:s.timestamp,y:n(s.data.value)};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return {x:s.timestamp,y:n(h[l]??s.data.value)}}}})}ngOnDestroy(){this.dsServiceSub?.unsubscribe(),this.chart?.destroy();let t=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(t,{clear:true,removeFromDom:true});}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=JD({type:m,selectors:[["widget-data-chart"]],viewQuery:function(e,a){e&1&&eg(a.widgetDataChart,_,5,Lr),e&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:1,consts:[["widgetDataChart",""],[2,"z-index","inherit"],[1,"empty-state"],[1,"hint"]],template:function(e,a){e&1&&_w(0,E,2,0,"canvas",1)(1,I,5,0,"div",2),e&2&&Mw(a.hasPath()?0:1);},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;text-align:center;color:var(--mat-sys-on-surface-variant)}.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:4px 0;padding:0 16px}.empty-state[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{font-size:.85em;opacity:.7}"]})};export{U as WidgetDataChartComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {v,R,S}from'./chunk-CQNVyz8q.js';import {d1 as Hj,w,du as p,dv as rt$1,D as Dt,v as vt,F as Fa,dn as ge,aI as ms,J as JD,c as $h,B as Bh,$ as $j,ao as ue,dz as es,cn as wd,ci as dl,cp as Uh,cj as fl,_ as _w,T as TT,bD as HT,e as EE,M as Mw,d as ig,an as Hh,aA as gg,dA as UT,f as eg,K as Kw}from'./main-BNR44HGB.js';var nt=["rotatingDial"],it=["awaIndicator"],at=["twaIndicator"],ot=["wptIndicator"],rt=["setIndicator"],st=["cogIndicator"];function lt(m,b){m&1&&(wd(),dl(0,"g",69)(1,"text",100)(2,"tspan",101),TT(3,"330"),fl()(),dl(4,"text",102)(5,"tspan",103),TT(6,"300"),fl()(),dl(7,"text",104)(8,"tspan",105),TT(9,"W"),fl()(),dl(10,"text",106)(11,"tspan",107),TT(12,"240"),fl()(),dl(13,"text",108)(14,"tspan",109),TT(15,"210"),fl()(),dl(16,"text",110)(17,"tspan",111),TT(18,"S"),fl()(),dl(19,"text",112)(20,"tspan",113),TT(21,"150"),fl()(),dl(22,"text",114)(23,"tspan",115),TT(24,"120"),fl()(),dl(25,"text",116)(26,"tspan",117),TT(27,"E"),fl()(),dl(28,"text",118)(29,"tspan",119),TT(30,"60"),fl()(),dl(31,"text",120)(32,"tspan",121),TT(33,"30"),fl()(),dl(34,"text",122)(35,"tspan",123),TT(36,"N"),fl()()());}function dt(m,b){m&1&&(wd(),dl(0,"g",70)(1,"text",100)(2,"tspan",101),TT(3,"30"),fl()(),dl(4,"text",102)(5,"tspan",103),TT(6,"60"),fl()(),dl(7,"text",104)(8,"tspan",105),TT(9,"90"),fl()(),dl(10,"text",106)(11,"tspan",107),TT(12,"120"),fl()(),dl(13,"text",108)(14,"tspan",109),TT(15,"150"),fl()(),dl(16,"text",110)(17,"tspan",111),TT(18,"180"),fl()(),dl(19,"text",112)(20,"tspan",113),TT(21,"150"),fl()(),dl(22,"text",114)(23,"tspan",115),TT(24,"120"),fl()(),dl(25,"text",116)(26,"tspan",117),TT(27,"90"),fl()(),dl(28,"text",118)(29,"tspan",119),TT(30,"60"),fl()(),dl(31,"text",120)(32,"tspan",121),TT(33,"30"),fl()(),dl(34,"text",122)(35,"tspan",123),TT(36,"0"),fl()()());}var Y=([m,b],[n,e],[t,o])=>(Math.atan2(o-e,t-n)-Math.atan2(b-e,m-n)+3*Math.PI)%(2*Math.PI)-Math.PI,J=(()=>{class m{rotatingDial=$j.required("rotatingDial");awaIndicator=$j.required("awaIndicator");twaIndicator=$j.required("twaIndicator");wptIndicator=$j.required("wptIndicator");setIndicator=$j.required("setIndicator");cogIndicator=$j.required("cogIndicator");compassHeading=Hj.required();compassModeEnabled=Hj.required();courseOverGroundAngle=Hj(void 0);courseOverGroundEnabled=Hj.required();trueWindAngle=Hj.required();twsEnabled=Hj.required();twaEnabled=Hj.required();trueWindSpeed=Hj.required();trueWindSpeedUnit=Hj.required();appWindAngle=Hj.required();awsEnabled=Hj.required();appWindSpeed=Hj.required();appWindSpeedUnit=Hj.required();laylineAngle=Hj(void 0);closeHauledLineEnabled=Hj.required();sailSetupEnabled=Hj.required();windSectorEnabled=Hj.required();driftEnabled=Hj.required();driftSet=Hj(void 0);driftFlow=Hj(void 0);waypointAngle=Hj(void 0);waypointEnabled=Hj.required();trueWindMinHistoric=Hj(void 0);trueWindMidHistoric=Hj(void 0);trueWindMaxHistoric=Hj(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};compassInitialized=false;twaInitialized=false;awaInitialized=false;wptInitialized=false;cogInitialized=false;setInitialized=false;headingValue=vt("--");trueWindHeading=0;waypointActive=vt(false);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath=vt("M 500,500 500,500");closeHauledLineStbdPath=vt("M 500,500 500,500");portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=vt("");stbdWindSectorPath=vt("");animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=w(ue);setRotationImmediate(n,e){n.setAttribute("transform",`rotate(${e} 500 500)`);}constructor(){Fa(()=>{let n=this.waypointEnabled();ge(()=>{this.waypointActive.set(n);});}),Fa(()=>{let n=this.compassModeEnabled(),e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&ge(()=>{let o=n?t:0,r=!this.compassInitialized;r?(this.compass.oldValue=o,this.compass.newValue=o,this.compassInitialized=true):(this.compass.oldValue=this.compass.newValue,this.compass.newValue=o),this.headingValue.set(t.toString()),this.rotatingDial()?.nativeElement&&(r||this.compass.oldValue===this.compass.newValue?this.setRotationImmediate(this.rotatingDial().nativeElement,-this.compass.newValue):S(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(false),this.updateWindSectors(false));});}),Fa(()=>{let n=this.courseOverGroundAngle(),e=Number.isFinite(n)?Math.round(n):null,t=this.compassModeEnabled();e!=null&&ge(()=>{let o=t?this.compass.newValue:0,r=e-o,p=!this.cogInitialized;p?(this.cog.oldValue=r,this.cog.newValue=r,this.cogInitialized=true):(this.cog.oldValue=this.cog.newValue,this.cog.newValue=r),this.cogIndicator()?.nativeElement&&(p||this.cog.oldValue===this.cog.newValue?this.setRotationImmediate(this.cogIndicator().nativeElement,this.cog.newValue):S(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{let n=this.waypointAngle();ge(()=>{if(n==null||!Number.isFinite(n)){this.waypointActive.set(false);return}this.waypointEnabled()?this.waypointActive.set(true):this.waypointActive.set(false);let e=!this.wptInitialized;e?(this.wpt.oldValue=n,this.wpt.newValue=n,this.wptInitialized=true):(this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=n),this.wptIndicator()?.nativeElement&&(e||this.wpt.oldValue===this.wpt.newValue?this.setRotationImmediate(this.wptIndicator().nativeElement,this.wpt.newValue):S(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{let n=this.appWindAngle(),e=Number.isFinite(n)?Math.round(n):null;e!=null&&ge(()=>{let t=!this.awaInitialized;t?(this.awa.oldValue=e,this.awa.newValue=e,this.awaInitialized=true):(this.awa.oldValue=this.awa.newValue,this.awa.newValue=e),this.awaIndicator()?.nativeElement&&(t||this.awa.oldValue===this.awa.newValue?this.setRotationImmediate(this.awaIndicator().nativeElement,this.awa.newValue):S(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)),this.updateCloseHauledLines(!t);});}),Fa(()=>{let n=this.trueWindAngle(),e=Number.isFinite(n)?Math.round(n):null,t=this.compassModeEnabled();e!=null&&ge(()=>{this.trueWindHeading=e;let o=t?this.compass.newValue*-1:0,r=this.addHeading(this.trueWindHeading,o);this.twaInitialized?(this.twa.oldValue=this.twa.newValue,this.twa.newValue=r):(this.twa.oldValue=r,this.twa.newValue=r,this.twaInitialized=true),this.twaIndicator()?.nativeElement&&(!this.twaInitialized||this.twa.oldValue===this.twa.newValue?this.setRotationImmediate(this.twaIndicator().nativeElement,this.twa.newValue):S(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&ge(()=>this.updateCloseHauledLines());}),Fa(()=>{let n=this.driftSet(),e=Number.isFinite(n)?Math.round(n):null;e!=null&&ge(()=>{this.setInitialized?(this.set.oldValue=this.set.newValue,this.set.newValue=e):(this.set.oldValue=e,this.set.newValue=e,this.setInitialized=true),this.setIndicator()?.nativeElement&&(!this.setInitialized||this.set.oldValue===this.set.newValue?this.setRotationImmediate(this.setIndicator().nativeElement,this.set.newValue):S(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{let n=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),ge(()=>{if(!n){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath.set(""),this.stbdWindSectorPath.set("");return}this.updateWindSectors(true);});});}updateCloseHauledLines(n=true){if(!this.closeHauledLineEnabled())return;let e=this.compassModeEnabled(),t=e&&Number(this.compass.newValue)||0,o=e&&Number(this.awa.newValue)||0,r=Number(this.laylineAngle())||0,p=e?this.addHeading(t,this.addHeading(o,r*-1)):this.addHeading(o,r*-1);this.animateLayline(this.portLaylinePrev,p,true,n),this.portLaylinePrev=p;let u=e?this.addHeading(t,this.addHeading(o,r)):this.addHeading(o,r);this.animateLayline(this.stbdLaylinePrev,u,false,n),this.stbdLaylinePrev=u;}animateLayline(n,e,t,o=true){if(t&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!t&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.angleDelta(n,e)<this.EPS_ANGLE){this.drawLayline(e,t),t?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}if(!o){this.drawLayline(e,t),t?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=v(n,e,this.ANIMATION_DURATION,p=>this.drawLayline(p,t),()=>{t?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;},this.ngZone);t?this.portLaylineAnimId=r:this.stbdLaylineAnimId=r;}drawLayline(n,e){let t=n*Math.PI/180,o=Math.floor(this.RADIUS*Math.sin(t)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(t)*-1+this.CENTER);e?this.closeHauledLinePortPath.set(`M ${this.CENTER},${this.CENTER} L ${o},${r}`):this.closeHauledLineStbdPath.set(`M ${this.CENTER},${this.CENTER} L ${o},${r}`);}windSectorsInitialized=false;updateWindSectors(n=true){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let e={min:this.trueWindMinHistoric()??0,mid:this.trueWindMidHistoric()??0,max:this.trueWindMaxHistoric()??0},t={min:this.trueWindMinHistoric()??0,mid:this.trueWindMidHistoric()??0,max:this.trueWindMaxHistoric()??0};if(!this.windSectorsInitialized){this.windSectorsInitialized=true,n?(this.animateWindSector(e,e,true),this.animateWindSector(t,t,false)):(this.portWindSectorPath.set(this.computeSectorPath(e,true)),this.stbdWindSectorPath.set(this.computeSectorPath(t,false))),this.portSectorPrev=e,this.stbdSectorPrev=t;return}n?this.angleDelta(this.portSectorPrev.min,e.min)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.mid,e.mid)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.max,e.max)<this.EPS_ANGLE?(this.portWindSectorPath.set(this.computeSectorPath(e,true)),this.stbdWindSectorPath.set(this.computeSectorPath(t,false))):(this.animateWindSector(this.portSectorPrev,e,true),this.animateWindSector(this.stbdSectorPrev,t,false)):(this.portWindSectorPath.set(this.computeSectorPath(e,true)),this.stbdWindSectorPath.set(this.computeSectorPath(t,false))),this.portSectorPrev=e,this.stbdSectorPrev=t;}animateWindSector(n,e,t){if(t&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!t&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.angleDelta(n.min,e.min)<this.EPS_ANGLE&&this.angleDelta(n.mid,e.mid)<this.EPS_ANGLE&&this.angleDelta(n.max,e.max)<this.EPS_ANGLE){let p=this.computeSectorPath(e,t);t?this.portWindSectorPath.set(p):this.stbdWindSectorPath.set(p),t?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=R(n,e,this.ANIMATION_DURATION,p=>{let u=this.computeSectorPath(p,t);t?this.portWindSectorPath.set(u):this.stbdWindSectorPath.set(u);},()=>{t?this.portSectorAnimId=null:this.stbdSectorAnimId=null;},this.ngZone);t?this.portSectorAnimId=r:this.stbdSectorAnimId=r;}addHeading(n=0,e=0){let t=(n+e)%360;return t<0&&(t+=360),t}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let n=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let e of n){let t=e?.nativeElement;if(!t)continue;let o=this.animationFrameIds.get(t);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(t);}}angleDelta(n,e){let t=(e-n+540)%360-180;return Math.abs(t)}computeSectorPath(n,e){let o=(Number(this.laylineAngle())||0)*(e?-1:1),r=this.compassModeEnabled(),p=r&&Number(this.compass.newValue)||0,u=Number(this.awa.newValue)||0,M=r?this.addHeading(p,this.addHeading(n.min,o)):this.addHeading(o,this.addHeading(n.min,u*-1)),A=r?this.addHeading(p,this.addHeading(n.mid,o)):this.addHeading(o,this.addHeading(n.mid,u*-1)),W=r?this.addHeading(p,this.addHeading(n.max,o)):this.addHeading(o,this.addHeading(n.max,u*-1)),D=this.RADIUS*Math.sin(M*Math.PI/180)+this.CENTER,k=this.RADIUS*Math.cos(M*Math.PI/180)*-1+this.CENTER,O=this.RADIUS*Math.sin(A*Math.PI/180)+this.CENTER,U=this.RADIUS*Math.cos(A*Math.PI/180)*-1+this.CENTER,T=this.RADIUS*Math.sin(W*Math.PI/180)+this.CENTER,q=this.RADIUS*Math.cos(W*Math.PI/180)*-1+this.CENTER,K=Math.abs(Y([D,k],[O,U],[T,q]))>Math.PI/2?0:1,tt=Y([T,q],[D,k],[O,U])>0?0:1;return `M ${this.CENTER},${this.CENTER} L ${D},${k} A ${this.RADIUS},${this.RADIUS} 0 ${K} ${tt} ${T},${q} z`}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=JD({type:m,selectors:[["svg-windsteer"]],viewQuery:function(e,t){e&1&&eg(t.rotatingDial,nt,5)(t.awaIndicator,it,5)(t.twaIndicator,at,5)(t.wptIndicator,ot,5)(t.setIndicator,rt,5)(t.cogIndicator,st,5),e&2&&Kw(6);},inputs:{compassHeading:[1,"compassHeading"],compassModeEnabled:[1,"compassModeEnabled"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],twaEnabled:[1,"twaEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:124,vars:44,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["cx","500","cy","500","r","404",1,"rotating-dial-Backplate"],["id","dialLabelsCompass"],["id","dialLabelsPortStbd"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"]],template:function(e,t){e&1&&(wd(),dl(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),Uh(3,"stop",9)(4,"stop",10),fl(),dl(5,"linearGradient",11),Uh(6,"stop",9)(7,"stop",10),fl(),dl(8,"linearGradient",12),Uh(9,"stop",13)(10,"stop",14),fl(),dl(11,"linearGradient",15),Uh(12,"stop",16),fl(),dl(13,"clipPath",17),Uh(14,"ellipse",18),fl(),Uh(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),fl(),dl(18,"g",22)(19,"g",23),Uh(20,"path",24)(21,"path",25),fl()(),dl(22,"g",26)(23,"g",27),Uh(24,"path",28)(25,"path",29)(26,"path",30),fl(),dl(27,"g",null,0)(29,"g",31),Uh(30,"path",32)(31,"path",33)(32,"path",34)(33,"path",35)(34,"path",36)(35,"path",37)(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"circle",68),_w(67,lt,37,0,":svg:g",69)(68,dt,37,0,":svg:g",70),fl(),dl(69,"g",71),Uh(70,"path",72)(71,"path",73),fl(),dl(72,"g",74),Uh(73,"path",75)(74,"path",76),fl(),dl(75,"g",null,1),Uh(77,"path",77)(78,"ellipse",78),fl(),dl(79,"g",null,2),Uh(81,"path",79),fl()()(),dl(82,"g",80)(83,"g",81)(84,"text",82),TT(85),fl(),dl(86,"text",83),TT(87),HT(88,"number"),fl(),dl(89,"text",84),TT(90,"TWS"),fl()(),dl(91,"g",85)(92,"text",86),TT(93),fl(),dl(94,"text",87),TT(95),HT(96,"number"),fl(),dl(97,"text",88),TT(98,"AWS"),fl()()(),dl(99,"g",89)(100,"text",90),TT(101),HT(102,"number"),fl()(),dl(103,"g",91)(104,"g",null,3),Uh(106,"path",92),fl(),dl(107,"g",null,4),Uh(109,"path",93),dl(110,"text",94),TT(111,"A"),fl()(),dl(112,"g",null,5),Uh(114,"path",95),dl(115,"text",96),TT(116,"T"),fl()()(),dl(117,"g",97),Uh(118,"rect",98),dl(119,"text",99)(120,"tspan"),TT(121),dl(122,"tspan"),TT(123,"\xB0"),fl()()()()()),e&2&&(EE(67),Mw(t.compassModeEnabled()?67:68),EE(2),ig("display",t.closeHauledLineEnabled()?"inline":"none"),EE(),ig("display",t.appWindAngle()!=null?"inline":"none"),Hh("d",t.closeHauledLineStbdPath()),EE(),ig("display",t.appWindAngle()!=null?"inline":"none"),Hh("d",t.closeHauledLinePortPath()),EE(),ig("display",t.windSectorEnabled()?"inline":"none"),EE(),ig("display",t.portWindSectorPath()?"inline":"none"),Hh("d",t.portWindSectorPath()||null),EE(),ig("display",t.stbdWindSectorPath()?"inline":"none"),Hh("d",t.stbdWindSectorPath()||null),EE(),Hh("display",t.waypointActive()&&t.compassModeEnabled()?"inline":"none"),EE(4),ig("display",t.driftEnabled()&&t.compassModeEnabled()?"inline":"none"),EE(4),ig("display",t.twsEnabled()?"inline":"none"),EE(2),gg(t.trueWindSpeedUnit()),EE(2),gg(UT(88,35,t.trueWindSpeed(),"1.1-1")??"--"),EE(4),ig("display",t.awsEnabled()?"inline":"none"),EE(2),gg(t.appWindSpeedUnit()),EE(2),gg(UT(96,38,t.appWindSpeed(),"1.1-1")??"--"),EE(4),ig("display",t.driftEnabled()&&t.compassModeEnabled()?"inline":"none"),EE(2),gg(UT(102,41,t.driftFlow(),"1.1-1")??"--"),EE(3),Hh("display",t.courseOverGroundEnabled()&&t.compassModeEnabled()?"inline":"none"),EE(8),ig("display",t.twaEnabled()?"inline":"none"),EE(9),gg(t.headingValue()));},dependencies:[es],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{stroke:var(--mat-sys-background);fill:none;stroke-width:95}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"]})}return m})();var St=(()=>{class m{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={supportAutomaticHistoricalSeries:false,filterSelfPaths:true,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",showConvertUnitTo:false,convertUnitTo:"deg",sampleTime:1e3},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.course.calcValues.bearingTrue",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3}},compassModeEnabled:true,windSectorEnable:true,windSectorWindowSeconds:5,laylineEnable:true,laylineAngle:40,waypointEnable:true,courseOverGroundEnable:true,driftEnable:true,awsEnable:true,twsEnable:true,twaEnable:true,sailSetupEnable:false,enableTimeout:false,dataTimeout:5};runtime=w(p);stream=w(rt$1);cfg=Dt(()=>this.runtime.options()??m.DEFAULT_CONFIG);compassModeEnabledValue=Dt(()=>this.cfg().compassModeEnabled??false);courseOverGroundEnabledValue=Dt(()=>this.cfg().courseOverGroundEnable??false);twsEnabledValue=Dt(()=>this.cfg().twsEnable??false);twaEnabledValue=Dt(()=>this.cfg().twaEnable??false);awsEnabledValue=Dt(()=>this.cfg().awsEnable??false);laylineAngleValue=Dt(()=>this.cfg().laylineAngle??40);closeHauledLineEnabledValue=Dt(()=>this.cfg().laylineEnable??false);windSectorEnabledValue=Dt(()=>this.cfg().windSectorEnable??false);driftEnabledValue=Dt(()=>this.cfg().driftEnable??false);waypointEnabledValue=Dt(()=>this.cfg().waypointEnable??false);hasHeading=false;hasCOG=false;hasAWA=false;hasAWS=false;hasTWA=false;hasTWS=false;hasSet=false;hasDrift=false;hasWPT=false;currentHeading=vt(0);courseOverGroundAngle=vt(0);appWindAngle=vt(0);appWindSpeed=vt(0);appWindSpeedUnit=vt("");trueWindAngle=vt(0);trueWindSpeed=vt(0);trueWindSpeedUnit=vt("");driftFlow=vt(0);driftSet=vt(0);waypointAngle=vt(0);historicalWindDirection=[];trueWindMinHistoric=vt(void 0);trueWindMidHistoric=vt(void 0);trueWindMaxHistoric=vt(void 0);windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};DEG_EPSILON=1;SPEED_EPSILON=.1;constructor(){Fa(()=>{let e=this.cfg().paths;ge(()=>{this.appWindSpeedUnit.set(e?.appWindSpeed?.convertUnitTo??""),this.trueWindSpeedUnit.set(e?.trueWindSpeed?.convertUnitTo??""),this.registerStreams(),this.stopWindSectors(),this.startWindSectors();});});}onHeadingUpdate=n=>{let e=this.normalizeAngle(this.getPathValueOrZero(n));(!this.hasHeading||this.angleDelta(this.currentHeading(),e)>=this.DEG_EPSILON)&&(this.currentHeading.set(e),this.hasHeading=true);};onCOGUpdate=n=>{let e=this.normalizeAngle(this.getPathValueOrZero(n));(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle(),e)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle.set(e),this.hasCOG=true);};onDriftUpdate=n=>{let e=this.getPathValueOrZero(n);(!this.hasDrift||Math.abs(this.driftFlow()-e)>=this.SPEED_EPSILON)&&(this.driftFlow.set(e),this.hasDrift=true);};onSetUpdate=n=>{let e=this.normalizeAngle(this.getPathValueOrZero(n));(!this.hasSet||this.angleDelta(this.driftSet(),e)>=this.DEG_EPSILON)&&(this.driftSet.set(e),this.hasSet=true);};onWaypointUpdate=n=>{let e=n.data.value,t=this.normalizeAngle(e);(!this.hasWPT||this.angleDelta(this.waypointAngle(),t)>=this.DEG_EPSILON)&&(this.waypointAngle.set(t),this.hasWPT=true);};onAppWindAngle=n=>{let e=this.getPathValueOrZero(n),t=this.normalizeAngle(e);(!this.hasAWA||this.angleDelta(this.appWindAngle(),t)>=this.DEG_EPSILON)&&(this.appWindAngle.set(t),this.hasAWA=true,this.runtime.options()?.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(e)));};onAppWindSpeed=n=>{let e=this.getPathValueOrZero(n);(!this.hasAWS||Math.abs(this.appWindSpeed()-e)>=this.SPEED_EPSILON)&&(this.appWindSpeed.set(e),this.hasAWS=true);};onTrueWindSpeed=n=>{let e=this.getPathValueOrZero(n);(!this.hasTWS||Math.abs(this.trueWindSpeed()-e)>=this.SPEED_EPSILON)&&(this.trueWindSpeed.set(e),this.hasTWS=true);};onTrueWindAngle=n=>{let e=this.cfg(),t=e.paths?.trueWindAngle?.path||"",o=ht(t,this.getPathValueOrZero(n),this.currentHeading(),!!e?.compassModeEnabled),r=this.normalizeAngle(o);(!this.hasTWA||this.angleDelta(this.trueWindAngle(),r)>=this.DEG_EPSILON)&&(this.trueWindAngle.set(r),this.hasTWA=true);};registerStreams(){this.runtime.options()&&(this.stream.observe("headingPath",this.onHeadingUpdate),this.stream.observe("courseOverGround",this.onCOGUpdate),this.stream.observe("drift",this.onDriftUpdate),this.stream.observe("set",this.onSetUpdate),this.stream.observe("nextWaypointBearing",this.onWaypointUpdate),this.stream.observe("appWindAngle",this.onAppWindAngle),this.stream.observe("appWindSpeed",this.onAppWindSpeed),this.stream.observe("trueWindSpeed",this.onTrueWindSpeed),this.stream.observe("trueWindAngle",this.onTrueWindAngle));}ngOnDestroy(){this.stopWindSectors();}startWindSectors(){if(this.windSamples=[],this.windMinDeque=[],this.windMaxDeque=[],this.windSampleIndex=0,this.lastUnwrapped=null,this.lastSector={},!this.cfg().windSectorEnable){this.trueWindMinHistoric.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={};return}this.windSectorObservableSub=ms(1e3).subscribe(()=>{this.historicalCleanup();});}addHistoricalWindDirection(n){let e=Date.now(),t=this.unwrapAngle(n),o=this.windSampleIndex++;for(this.windSamples.push({t:e,u:t,i:o});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=t;)this.windMinDeque.pop();for(this.windMinDeque.push({i:o,u:t});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=t;)this.windMaxDeque.pop();this.windMaxDeque.push({i:o,u:t});}historicalCleanup(){if(!this.cfg().windSectorEnable)return;let n=Date.now()-(this.cfg().windSectorWindowSeconds??5)*1e3;for(;this.windSamples.length&&this.windSamples[0].t<n;){let k=this.windSamples.shift();if(!k)break;this.windMinDeque.length&&this.windMinDeque[0].i===k.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===k.i&&this.windMaxDeque.shift();}if(!this.windSamples.length||!this.windMinDeque.length||!this.windMaxDeque.length){(this.trueWindMinHistoric()!==void 0||this.trueWindMidHistoric()!==void 0||this.trueWindMaxHistoric()!==void 0)&&(this.trueWindMinHistoric.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={});return}let e=this.windMinDeque[0].u,t=this.windMaxDeque[0].u,o=(e+t)/2,r=this.normalizeAngle(e),p=this.normalizeAngle(o),u=this.normalizeAngle(t),M=this.lastSector.min,A=this.lastSector.mid,W=this.lastSector.max;(M===void 0||this.angleDelta(M,r)>=this.DEG_EPSILON||A===void 0||this.angleDelta(A,p)>=this.DEG_EPSILON||W===void 0||this.angleDelta(W,u)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric.set(r),this.trueWindMidHistoric.set(p),this.trueWindMaxHistoric.set(u),this.lastSector={min:r,mid:p,max:u});}getPathValueOrZero(n){return n.data.value==null?0:n.data.value}stopWindSectors(){this.windSectorObservableSub?.unsubscribe();}unwrapAngle(n){if(this.lastUnwrapped==null)return this.lastUnwrapped=n,n;let e=this.lastUnwrapped,t=(e%360+360)%360,o=(n-t+540)%360-180,r=e+o;return this.lastUnwrapped=r,r}normalizeAngle(n){return (n%360+360)%360}angleDelta(n,e){let t=(e-n+540)%360-180;return Math.abs(t)}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=JD({type:m,selectors:[["widget-wind-steer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:25,consts:[[3,"compassHeading","compassModeEnabled","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","twaEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(e,t){e&1&&$h(0,"svg-windsteer",0),e&2&&Bh("compassHeading",t.currentHeading())("compassModeEnabled",t.compassModeEnabledValue())("courseOverGroundAngle",t.courseOverGroundAngle())("courseOverGroundEnabled",t.courseOverGroundEnabledValue())("trueWindAngle",t.trueWindAngle())("twsEnabled",t.twsEnabledValue())("twaEnabled",t.twaEnabledValue())("trueWindSpeed",t.trueWindSpeed())("trueWindSpeedUnit",t.trueWindSpeedUnit())("appWindAngle",t.appWindAngle())("awsEnabled",t.awsEnabledValue())("appWindSpeed",t.appWindSpeed())("appWindSpeedUnit",t.appWindSpeedUnit())("laylineAngle",t.laylineAngleValue())("closeHauledLineEnabled",t.closeHauledLineEnabledValue())("windSectorEnabled",t.windSectorEnabledValue())("driftEnabled",t.driftEnabledValue())("driftFlow",t.driftFlow())("driftSet",t.driftSet())("waypointAngle",t.waypointAngle())("waypointEnabled",t.waypointEnabledValue())("trueWindMinHistoric",t.trueWindMinHistoric())("trueWindMidHistoric",t.trueWindMidHistoric())("trueWindMaxHistoric",t.trueWindMaxHistoric())("sailSetupEnabled",t.runtime.options()?.sailSetupEnable??false);},dependencies:[J],encapsulation:2})}return m})();function mt(m,b){let n=(m+b)%360;return n<0&&(n+=360),n}function ht(m,b,n,e){return (m.includes("angleTrueWater")||m.includes("angleTrueGround"))&&e?mt(n,b):b}export{St as WidgetWindComponent,ht as computeTrueWindBaseAngle};
|
|
1
|
+
import {v,R,S}from'./chunk-CQNVyz8q.js';import {d1 as Hj,w,du as p,dv as rt$1,D as Dt,v as vt,F as Fa,dn as ge,aI as ms,J as JD,c as $h,B as Bh,$ as $j,ao as ue,dz as es,cn as wd,ci as dl,cp as Uh,cj as fl,_ as _w,T as TT,bD as HT,e as EE,M as Mw,d as ig,an as Hh,aA as gg,dA as UT,f as eg,K as Kw}from'./main-YKDNK5VZ.js';var nt=["rotatingDial"],it=["awaIndicator"],at=["twaIndicator"],ot=["wptIndicator"],rt=["setIndicator"],st=["cogIndicator"];function lt(m,b){m&1&&(wd(),dl(0,"g",69)(1,"text",100)(2,"tspan",101),TT(3,"330"),fl()(),dl(4,"text",102)(5,"tspan",103),TT(6,"300"),fl()(),dl(7,"text",104)(8,"tspan",105),TT(9,"W"),fl()(),dl(10,"text",106)(11,"tspan",107),TT(12,"240"),fl()(),dl(13,"text",108)(14,"tspan",109),TT(15,"210"),fl()(),dl(16,"text",110)(17,"tspan",111),TT(18,"S"),fl()(),dl(19,"text",112)(20,"tspan",113),TT(21,"150"),fl()(),dl(22,"text",114)(23,"tspan",115),TT(24,"120"),fl()(),dl(25,"text",116)(26,"tspan",117),TT(27,"E"),fl()(),dl(28,"text",118)(29,"tspan",119),TT(30,"60"),fl()(),dl(31,"text",120)(32,"tspan",121),TT(33,"30"),fl()(),dl(34,"text",122)(35,"tspan",123),TT(36,"N"),fl()()());}function dt(m,b){m&1&&(wd(),dl(0,"g",70)(1,"text",100)(2,"tspan",101),TT(3,"30"),fl()(),dl(4,"text",102)(5,"tspan",103),TT(6,"60"),fl()(),dl(7,"text",104)(8,"tspan",105),TT(9,"90"),fl()(),dl(10,"text",106)(11,"tspan",107),TT(12,"120"),fl()(),dl(13,"text",108)(14,"tspan",109),TT(15,"150"),fl()(),dl(16,"text",110)(17,"tspan",111),TT(18,"180"),fl()(),dl(19,"text",112)(20,"tspan",113),TT(21,"150"),fl()(),dl(22,"text",114)(23,"tspan",115),TT(24,"120"),fl()(),dl(25,"text",116)(26,"tspan",117),TT(27,"90"),fl()(),dl(28,"text",118)(29,"tspan",119),TT(30,"60"),fl()(),dl(31,"text",120)(32,"tspan",121),TT(33,"30"),fl()(),dl(34,"text",122)(35,"tspan",123),TT(36,"0"),fl()()());}var Y=([m,b],[n,e],[t,o])=>(Math.atan2(o-e,t-n)-Math.atan2(b-e,m-n)+3*Math.PI)%(2*Math.PI)-Math.PI,J=(()=>{class m{rotatingDial=$j.required("rotatingDial");awaIndicator=$j.required("awaIndicator");twaIndicator=$j.required("twaIndicator");wptIndicator=$j.required("wptIndicator");setIndicator=$j.required("setIndicator");cogIndicator=$j.required("cogIndicator");compassHeading=Hj.required();compassModeEnabled=Hj.required();courseOverGroundAngle=Hj(void 0);courseOverGroundEnabled=Hj.required();trueWindAngle=Hj.required();twsEnabled=Hj.required();twaEnabled=Hj.required();trueWindSpeed=Hj.required();trueWindSpeedUnit=Hj.required();appWindAngle=Hj.required();awsEnabled=Hj.required();appWindSpeed=Hj.required();appWindSpeedUnit=Hj.required();laylineAngle=Hj(void 0);closeHauledLineEnabled=Hj.required();sailSetupEnabled=Hj.required();windSectorEnabled=Hj.required();driftEnabled=Hj.required();driftSet=Hj(void 0);driftFlow=Hj(void 0);waypointAngle=Hj(void 0);waypointEnabled=Hj.required();trueWindMinHistoric=Hj(void 0);trueWindMidHistoric=Hj(void 0);trueWindMaxHistoric=Hj(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};compassInitialized=false;twaInitialized=false;awaInitialized=false;wptInitialized=false;cogInitialized=false;setInitialized=false;headingValue=vt("--");trueWindHeading=0;waypointActive=vt(false);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath=vt("M 500,500 500,500");closeHauledLineStbdPath=vt("M 500,500 500,500");portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=vt("");stbdWindSectorPath=vt("");animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=w(ue);setRotationImmediate(n,e){n.setAttribute("transform",`rotate(${e} 500 500)`);}constructor(){Fa(()=>{let n=this.waypointEnabled();ge(()=>{this.waypointActive.set(n);});}),Fa(()=>{let n=this.compassModeEnabled(),e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&ge(()=>{let o=n?t:0,r=!this.compassInitialized;r?(this.compass.oldValue=o,this.compass.newValue=o,this.compassInitialized=true):(this.compass.oldValue=this.compass.newValue,this.compass.newValue=o),this.headingValue.set(t.toString()),this.rotatingDial()?.nativeElement&&(r||this.compass.oldValue===this.compass.newValue?this.setRotationImmediate(this.rotatingDial().nativeElement,-this.compass.newValue):S(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(false),this.updateWindSectors(false));});}),Fa(()=>{let n=this.courseOverGroundAngle(),e=Number.isFinite(n)?Math.round(n):null,t=this.compassModeEnabled();e!=null&&ge(()=>{let o=t?this.compass.newValue:0,r=e-o,p=!this.cogInitialized;p?(this.cog.oldValue=r,this.cog.newValue=r,this.cogInitialized=true):(this.cog.oldValue=this.cog.newValue,this.cog.newValue=r),this.cogIndicator()?.nativeElement&&(p||this.cog.oldValue===this.cog.newValue?this.setRotationImmediate(this.cogIndicator().nativeElement,this.cog.newValue):S(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{let n=this.waypointAngle();ge(()=>{if(n==null||!Number.isFinite(n)){this.waypointActive.set(false);return}this.waypointEnabled()?this.waypointActive.set(true):this.waypointActive.set(false);let e=!this.wptInitialized;e?(this.wpt.oldValue=n,this.wpt.newValue=n,this.wptInitialized=true):(this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=n),this.wptIndicator()?.nativeElement&&(e||this.wpt.oldValue===this.wpt.newValue?this.setRotationImmediate(this.wptIndicator().nativeElement,this.wpt.newValue):S(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{let n=this.appWindAngle(),e=Number.isFinite(n)?Math.round(n):null;e!=null&&ge(()=>{let t=!this.awaInitialized;t?(this.awa.oldValue=e,this.awa.newValue=e,this.awaInitialized=true):(this.awa.oldValue=this.awa.newValue,this.awa.newValue=e),this.awaIndicator()?.nativeElement&&(t||this.awa.oldValue===this.awa.newValue?this.setRotationImmediate(this.awaIndicator().nativeElement,this.awa.newValue):S(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)),this.updateCloseHauledLines(!t);});}),Fa(()=>{let n=this.trueWindAngle(),e=Number.isFinite(n)?Math.round(n):null,t=this.compassModeEnabled();e!=null&&ge(()=>{this.trueWindHeading=e;let o=t?this.compass.newValue*-1:0,r=this.addHeading(this.trueWindHeading,o);this.twaInitialized?(this.twa.oldValue=this.twa.newValue,this.twa.newValue=r):(this.twa.oldValue=r,this.twa.newValue=r,this.twaInitialized=true),this.twaIndicator()?.nativeElement&&(!this.twaInitialized||this.twa.oldValue===this.twa.newValue?this.setRotationImmediate(this.twaIndicator().nativeElement,this.twa.newValue):S(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&ge(()=>this.updateCloseHauledLines());}),Fa(()=>{let n=this.driftSet(),e=Number.isFinite(n)?Math.round(n):null;e!=null&&ge(()=>{this.setInitialized?(this.set.oldValue=this.set.newValue,this.set.newValue=e):(this.set.oldValue=e,this.set.newValue=e,this.setInitialized=true),this.setIndicator()?.nativeElement&&(!this.setInitialized||this.set.oldValue===this.set.newValue?this.setRotationImmediate(this.setIndicator().nativeElement,this.set.newValue):S(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone));});}),Fa(()=>{let n=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),ge(()=>{if(!n){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath.set(""),this.stbdWindSectorPath.set("");return}this.updateWindSectors(true);});});}updateCloseHauledLines(n=true){if(!this.closeHauledLineEnabled())return;let e=this.compassModeEnabled(),t=e&&Number(this.compass.newValue)||0,o=e&&Number(this.awa.newValue)||0,r=Number(this.laylineAngle())||0,p=e?this.addHeading(t,this.addHeading(o,r*-1)):this.addHeading(o,r*-1);this.animateLayline(this.portLaylinePrev,p,true,n),this.portLaylinePrev=p;let u=e?this.addHeading(t,this.addHeading(o,r)):this.addHeading(o,r);this.animateLayline(this.stbdLaylinePrev,u,false,n),this.stbdLaylinePrev=u;}animateLayline(n,e,t,o=true){if(t&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!t&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.angleDelta(n,e)<this.EPS_ANGLE){this.drawLayline(e,t),t?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}if(!o){this.drawLayline(e,t),t?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=v(n,e,this.ANIMATION_DURATION,p=>this.drawLayline(p,t),()=>{t?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;},this.ngZone);t?this.portLaylineAnimId=r:this.stbdLaylineAnimId=r;}drawLayline(n,e){let t=n*Math.PI/180,o=Math.floor(this.RADIUS*Math.sin(t)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(t)*-1+this.CENTER);e?this.closeHauledLinePortPath.set(`M ${this.CENTER},${this.CENTER} L ${o},${r}`):this.closeHauledLineStbdPath.set(`M ${this.CENTER},${this.CENTER} L ${o},${r}`);}windSectorsInitialized=false;updateWindSectors(n=true){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let e={min:this.trueWindMinHistoric()??0,mid:this.trueWindMidHistoric()??0,max:this.trueWindMaxHistoric()??0},t={min:this.trueWindMinHistoric()??0,mid:this.trueWindMidHistoric()??0,max:this.trueWindMaxHistoric()??0};if(!this.windSectorsInitialized){this.windSectorsInitialized=true,n?(this.animateWindSector(e,e,true),this.animateWindSector(t,t,false)):(this.portWindSectorPath.set(this.computeSectorPath(e,true)),this.stbdWindSectorPath.set(this.computeSectorPath(t,false))),this.portSectorPrev=e,this.stbdSectorPrev=t;return}n?this.angleDelta(this.portSectorPrev.min,e.min)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.mid,e.mid)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.max,e.max)<this.EPS_ANGLE?(this.portWindSectorPath.set(this.computeSectorPath(e,true)),this.stbdWindSectorPath.set(this.computeSectorPath(t,false))):(this.animateWindSector(this.portSectorPrev,e,true),this.animateWindSector(this.stbdSectorPrev,t,false)):(this.portWindSectorPath.set(this.computeSectorPath(e,true)),this.stbdWindSectorPath.set(this.computeSectorPath(t,false))),this.portSectorPrev=e,this.stbdSectorPrev=t;}animateWindSector(n,e,t){if(t&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!t&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.angleDelta(n.min,e.min)<this.EPS_ANGLE&&this.angleDelta(n.mid,e.mid)<this.EPS_ANGLE&&this.angleDelta(n.max,e.max)<this.EPS_ANGLE){let p=this.computeSectorPath(e,t);t?this.portWindSectorPath.set(p):this.stbdWindSectorPath.set(p),t?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=R(n,e,this.ANIMATION_DURATION,p=>{let u=this.computeSectorPath(p,t);t?this.portWindSectorPath.set(u):this.stbdWindSectorPath.set(u);},()=>{t?this.portSectorAnimId=null:this.stbdSectorAnimId=null;},this.ngZone);t?this.portSectorAnimId=r:this.stbdSectorAnimId=r;}addHeading(n=0,e=0){let t=(n+e)%360;return t<0&&(t+=360),t}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let n=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let e of n){let t=e?.nativeElement;if(!t)continue;let o=this.animationFrameIds.get(t);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(t);}}angleDelta(n,e){let t=(e-n+540)%360-180;return Math.abs(t)}computeSectorPath(n,e){let o=(Number(this.laylineAngle())||0)*(e?-1:1),r=this.compassModeEnabled(),p=r&&Number(this.compass.newValue)||0,u=Number(this.awa.newValue)||0,M=r?this.addHeading(p,this.addHeading(n.min,o)):this.addHeading(o,this.addHeading(n.min,u*-1)),A=r?this.addHeading(p,this.addHeading(n.mid,o)):this.addHeading(o,this.addHeading(n.mid,u*-1)),W=r?this.addHeading(p,this.addHeading(n.max,o)):this.addHeading(o,this.addHeading(n.max,u*-1)),D=this.RADIUS*Math.sin(M*Math.PI/180)+this.CENTER,k=this.RADIUS*Math.cos(M*Math.PI/180)*-1+this.CENTER,O=this.RADIUS*Math.sin(A*Math.PI/180)+this.CENTER,U=this.RADIUS*Math.cos(A*Math.PI/180)*-1+this.CENTER,T=this.RADIUS*Math.sin(W*Math.PI/180)+this.CENTER,q=this.RADIUS*Math.cos(W*Math.PI/180)*-1+this.CENTER,K=Math.abs(Y([D,k],[O,U],[T,q]))>Math.PI/2?0:1,tt=Y([T,q],[D,k],[O,U])>0?0:1;return `M ${this.CENTER},${this.CENTER} L ${D},${k} A ${this.RADIUS},${this.RADIUS} 0 ${K} ${tt} ${T},${q} z`}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=JD({type:m,selectors:[["svg-windsteer"]],viewQuery:function(e,t){e&1&&eg(t.rotatingDial,nt,5)(t.awaIndicator,it,5)(t.twaIndicator,at,5)(t.wptIndicator,ot,5)(t.setIndicator,rt,5)(t.cogIndicator,st,5),e&2&&Kw(6);},inputs:{compassHeading:[1,"compassHeading"],compassModeEnabled:[1,"compassModeEnabled"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],twaEnabled:[1,"twaEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:124,vars:44,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["cx","500","cy","500","r","404",1,"rotating-dial-Backplate"],["id","dialLabelsCompass"],["id","dialLabelsPortStbd"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"]],template:function(e,t){e&1&&(wd(),dl(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),Uh(3,"stop",9)(4,"stop",10),fl(),dl(5,"linearGradient",11),Uh(6,"stop",9)(7,"stop",10),fl(),dl(8,"linearGradient",12),Uh(9,"stop",13)(10,"stop",14),fl(),dl(11,"linearGradient",15),Uh(12,"stop",16),fl(),dl(13,"clipPath",17),Uh(14,"ellipse",18),fl(),Uh(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),fl(),dl(18,"g",22)(19,"g",23),Uh(20,"path",24)(21,"path",25),fl()(),dl(22,"g",26)(23,"g",27),Uh(24,"path",28)(25,"path",29)(26,"path",30),fl(),dl(27,"g",null,0)(29,"g",31),Uh(30,"path",32)(31,"path",33)(32,"path",34)(33,"path",35)(34,"path",36)(35,"path",37)(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"circle",68),_w(67,lt,37,0,":svg:g",69)(68,dt,37,0,":svg:g",70),fl(),dl(69,"g",71),Uh(70,"path",72)(71,"path",73),fl(),dl(72,"g",74),Uh(73,"path",75)(74,"path",76),fl(),dl(75,"g",null,1),Uh(77,"path",77)(78,"ellipse",78),fl(),dl(79,"g",null,2),Uh(81,"path",79),fl()()(),dl(82,"g",80)(83,"g",81)(84,"text",82),TT(85),fl(),dl(86,"text",83),TT(87),HT(88,"number"),fl(),dl(89,"text",84),TT(90,"TWS"),fl()(),dl(91,"g",85)(92,"text",86),TT(93),fl(),dl(94,"text",87),TT(95),HT(96,"number"),fl(),dl(97,"text",88),TT(98,"AWS"),fl()()(),dl(99,"g",89)(100,"text",90),TT(101),HT(102,"number"),fl()(),dl(103,"g",91)(104,"g",null,3),Uh(106,"path",92),fl(),dl(107,"g",null,4),Uh(109,"path",93),dl(110,"text",94),TT(111,"A"),fl()(),dl(112,"g",null,5),Uh(114,"path",95),dl(115,"text",96),TT(116,"T"),fl()()(),dl(117,"g",97),Uh(118,"rect",98),dl(119,"text",99)(120,"tspan"),TT(121),dl(122,"tspan"),TT(123,"\xB0"),fl()()()()()),e&2&&(EE(67),Mw(t.compassModeEnabled()?67:68),EE(2),ig("display",t.closeHauledLineEnabled()?"inline":"none"),EE(),ig("display",t.appWindAngle()!=null?"inline":"none"),Hh("d",t.closeHauledLineStbdPath()),EE(),ig("display",t.appWindAngle()!=null?"inline":"none"),Hh("d",t.closeHauledLinePortPath()),EE(),ig("display",t.windSectorEnabled()?"inline":"none"),EE(),ig("display",t.portWindSectorPath()?"inline":"none"),Hh("d",t.portWindSectorPath()||null),EE(),ig("display",t.stbdWindSectorPath()?"inline":"none"),Hh("d",t.stbdWindSectorPath()||null),EE(),Hh("display",t.waypointActive()&&t.compassModeEnabled()?"inline":"none"),EE(4),ig("display",t.driftEnabled()&&t.compassModeEnabled()?"inline":"none"),EE(4),ig("display",t.twsEnabled()?"inline":"none"),EE(2),gg(t.trueWindSpeedUnit()),EE(2),gg(UT(88,35,t.trueWindSpeed(),"1.1-1")??"--"),EE(4),ig("display",t.awsEnabled()?"inline":"none"),EE(2),gg(t.appWindSpeedUnit()),EE(2),gg(UT(96,38,t.appWindSpeed(),"1.1-1")??"--"),EE(4),ig("display",t.driftEnabled()&&t.compassModeEnabled()?"inline":"none"),EE(2),gg(UT(102,41,t.driftFlow(),"1.1-1")??"--"),EE(3),Hh("display",t.courseOverGroundEnabled()&&t.compassModeEnabled()?"inline":"none"),EE(8),ig("display",t.twaEnabled()?"inline":"none"),EE(9),gg(t.headingValue()));},dependencies:[es],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{stroke:var(--mat-sys-background);fill:none;stroke-width:95}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"]})}return m})();var St=(()=>{class m{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={supportAutomaticHistoricalSeries:false,filterSelfPaths:true,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",showConvertUnitTo:false,convertUnitTo:"deg",sampleTime:1e3},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.course.calcValues.bearingTrue",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:false,sampleTime:1e3},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3}},compassModeEnabled:true,windSectorEnable:true,windSectorWindowSeconds:5,laylineEnable:true,laylineAngle:40,waypointEnable:true,courseOverGroundEnable:true,driftEnable:true,awsEnable:true,twsEnable:true,twaEnable:true,sailSetupEnable:false,enableTimeout:false,dataTimeout:5};runtime=w(p);stream=w(rt$1);cfg=Dt(()=>this.runtime.options()??m.DEFAULT_CONFIG);compassModeEnabledValue=Dt(()=>this.cfg().compassModeEnabled??false);courseOverGroundEnabledValue=Dt(()=>this.cfg().courseOverGroundEnable??false);twsEnabledValue=Dt(()=>this.cfg().twsEnable??false);twaEnabledValue=Dt(()=>this.cfg().twaEnable??false);awsEnabledValue=Dt(()=>this.cfg().awsEnable??false);laylineAngleValue=Dt(()=>this.cfg().laylineAngle??40);closeHauledLineEnabledValue=Dt(()=>this.cfg().laylineEnable??false);windSectorEnabledValue=Dt(()=>this.cfg().windSectorEnable??false);driftEnabledValue=Dt(()=>this.cfg().driftEnable??false);waypointEnabledValue=Dt(()=>this.cfg().waypointEnable??false);hasHeading=false;hasCOG=false;hasAWA=false;hasAWS=false;hasTWA=false;hasTWS=false;hasSet=false;hasDrift=false;hasWPT=false;currentHeading=vt(0);courseOverGroundAngle=vt(0);appWindAngle=vt(0);appWindSpeed=vt(0);appWindSpeedUnit=vt("");trueWindAngle=vt(0);trueWindSpeed=vt(0);trueWindSpeedUnit=vt("");driftFlow=vt(0);driftSet=vt(0);waypointAngle=vt(0);historicalWindDirection=[];trueWindMinHistoric=vt(void 0);trueWindMidHistoric=vt(void 0);trueWindMaxHistoric=vt(void 0);windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};DEG_EPSILON=1;SPEED_EPSILON=.1;constructor(){Fa(()=>{let e=this.cfg().paths;ge(()=>{this.appWindSpeedUnit.set(e?.appWindSpeed?.convertUnitTo??""),this.trueWindSpeedUnit.set(e?.trueWindSpeed?.convertUnitTo??""),this.registerStreams(),this.stopWindSectors(),this.startWindSectors();});});}onHeadingUpdate=n=>{let e=this.normalizeAngle(this.getPathValueOrZero(n));(!this.hasHeading||this.angleDelta(this.currentHeading(),e)>=this.DEG_EPSILON)&&(this.currentHeading.set(e),this.hasHeading=true);};onCOGUpdate=n=>{let e=this.normalizeAngle(this.getPathValueOrZero(n));(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle(),e)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle.set(e),this.hasCOG=true);};onDriftUpdate=n=>{let e=this.getPathValueOrZero(n);(!this.hasDrift||Math.abs(this.driftFlow()-e)>=this.SPEED_EPSILON)&&(this.driftFlow.set(e),this.hasDrift=true);};onSetUpdate=n=>{let e=this.normalizeAngle(this.getPathValueOrZero(n));(!this.hasSet||this.angleDelta(this.driftSet(),e)>=this.DEG_EPSILON)&&(this.driftSet.set(e),this.hasSet=true);};onWaypointUpdate=n=>{let e=n.data.value,t=this.normalizeAngle(e);(!this.hasWPT||this.angleDelta(this.waypointAngle(),t)>=this.DEG_EPSILON)&&(this.waypointAngle.set(t),this.hasWPT=true);};onAppWindAngle=n=>{let e=this.getPathValueOrZero(n),t=this.normalizeAngle(e);(!this.hasAWA||this.angleDelta(this.appWindAngle(),t)>=this.DEG_EPSILON)&&(this.appWindAngle.set(t),this.hasAWA=true,this.runtime.options()?.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(e)));};onAppWindSpeed=n=>{let e=this.getPathValueOrZero(n);(!this.hasAWS||Math.abs(this.appWindSpeed()-e)>=this.SPEED_EPSILON)&&(this.appWindSpeed.set(e),this.hasAWS=true);};onTrueWindSpeed=n=>{let e=this.getPathValueOrZero(n);(!this.hasTWS||Math.abs(this.trueWindSpeed()-e)>=this.SPEED_EPSILON)&&(this.trueWindSpeed.set(e),this.hasTWS=true);};onTrueWindAngle=n=>{let e=this.cfg(),t=e.paths?.trueWindAngle?.path||"",o=ht(t,this.getPathValueOrZero(n),this.currentHeading(),!!e?.compassModeEnabled),r=this.normalizeAngle(o);(!this.hasTWA||this.angleDelta(this.trueWindAngle(),r)>=this.DEG_EPSILON)&&(this.trueWindAngle.set(r),this.hasTWA=true);};registerStreams(){this.runtime.options()&&(this.stream.observe("headingPath",this.onHeadingUpdate),this.stream.observe("courseOverGround",this.onCOGUpdate),this.stream.observe("drift",this.onDriftUpdate),this.stream.observe("set",this.onSetUpdate),this.stream.observe("nextWaypointBearing",this.onWaypointUpdate),this.stream.observe("appWindAngle",this.onAppWindAngle),this.stream.observe("appWindSpeed",this.onAppWindSpeed),this.stream.observe("trueWindSpeed",this.onTrueWindSpeed),this.stream.observe("trueWindAngle",this.onTrueWindAngle));}ngOnDestroy(){this.stopWindSectors();}startWindSectors(){if(this.windSamples=[],this.windMinDeque=[],this.windMaxDeque=[],this.windSampleIndex=0,this.lastUnwrapped=null,this.lastSector={},!this.cfg().windSectorEnable){this.trueWindMinHistoric.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={};return}this.windSectorObservableSub=ms(1e3).subscribe(()=>{this.historicalCleanup();});}addHistoricalWindDirection(n){let e=Date.now(),t=this.unwrapAngle(n),o=this.windSampleIndex++;for(this.windSamples.push({t:e,u:t,i:o});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=t;)this.windMinDeque.pop();for(this.windMinDeque.push({i:o,u:t});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=t;)this.windMaxDeque.pop();this.windMaxDeque.push({i:o,u:t});}historicalCleanup(){if(!this.cfg().windSectorEnable)return;let n=Date.now()-(this.cfg().windSectorWindowSeconds??5)*1e3;for(;this.windSamples.length&&this.windSamples[0].t<n;){let k=this.windSamples.shift();if(!k)break;this.windMinDeque.length&&this.windMinDeque[0].i===k.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===k.i&&this.windMaxDeque.shift();}if(!this.windSamples.length||!this.windMinDeque.length||!this.windMaxDeque.length){(this.trueWindMinHistoric()!==void 0||this.trueWindMidHistoric()!==void 0||this.trueWindMaxHistoric()!==void 0)&&(this.trueWindMinHistoric.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={});return}let e=this.windMinDeque[0].u,t=this.windMaxDeque[0].u,o=(e+t)/2,r=this.normalizeAngle(e),p=this.normalizeAngle(o),u=this.normalizeAngle(t),M=this.lastSector.min,A=this.lastSector.mid,W=this.lastSector.max;(M===void 0||this.angleDelta(M,r)>=this.DEG_EPSILON||A===void 0||this.angleDelta(A,p)>=this.DEG_EPSILON||W===void 0||this.angleDelta(W,u)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric.set(r),this.trueWindMidHistoric.set(p),this.trueWindMaxHistoric.set(u),this.lastSector={min:r,mid:p,max:u});}getPathValueOrZero(n){return n.data.value==null?0:n.data.value}stopWindSectors(){this.windSectorObservableSub?.unsubscribe();}unwrapAngle(n){if(this.lastUnwrapped==null)return this.lastUnwrapped=n,n;let e=this.lastUnwrapped,t=(e%360+360)%360,o=(n-t+540)%360-180,r=e+o;return this.lastUnwrapped=r,r}normalizeAngle(n){return (n%360+360)%360}angleDelta(n,e){let t=(e-n+540)%360-180;return Math.abs(t)}static \u0275fac=function(e){return new(e||m)};static \u0275cmp=JD({type:m,selectors:[["widget-wind-steer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:25,consts:[[3,"compassHeading","compassModeEnabled","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","twaEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(e,t){e&1&&$h(0,"svg-windsteer",0),e&2&&Bh("compassHeading",t.currentHeading())("compassModeEnabled",t.compassModeEnabledValue())("courseOverGroundAngle",t.courseOverGroundAngle())("courseOverGroundEnabled",t.courseOverGroundEnabledValue())("trueWindAngle",t.trueWindAngle())("twsEnabled",t.twsEnabledValue())("twaEnabled",t.twaEnabledValue())("trueWindSpeed",t.trueWindSpeed())("trueWindSpeedUnit",t.trueWindSpeedUnit())("appWindAngle",t.appWindAngle())("awsEnabled",t.awsEnabledValue())("appWindSpeed",t.appWindSpeed())("appWindSpeedUnit",t.appWindSpeedUnit())("laylineAngle",t.laylineAngleValue())("closeHauledLineEnabled",t.closeHauledLineEnabledValue())("windSectorEnabled",t.windSectorEnabledValue())("driftEnabled",t.driftEnabledValue())("driftFlow",t.driftFlow())("driftSet",t.driftSet())("waypointAngle",t.waypointAngle())("waypointEnabled",t.waypointEnabledValue())("trueWindMinHistoric",t.trueWindMinHistoric())("trueWindMidHistoric",t.trueWindMidHistoric())("trueWindMaxHistoric",t.trueWindMaxHistoric())("sailSetupEnabled",t.runtime.options()?.sailSetupEnable??false);},dependencies:[J],encapsulation:2})}return m})();function mt(m,b){let n=(m+b)%360;return n<0&&(n+=360),n}function ht(m,b,n,e){return (m.includes("angleTrueWater")||m.includes("angleTrueGround"))&&e?mt(n,b):b}export{St as WidgetWindComponent,ht as computeTrueWindBaseAngle};
|