UNPKG

@signalk/calibration

Version:

Signal K Node Server plugin to alter incoming data based a set of calibration values

1 lines 4.75 kB
"use strict";(self.webpackChunk_signalk_calibration=self.webpackChunk_signalk_calibration||[]).push([[496],{39:(e,t,a)=>{a.r(t),a.d(t,{default:()=>m});var n=a(823),l=a.n(n),r=a(592),s=a(735);const c=function(e){const{values:t}=e,a=(0,n.useRef)(),r=e=>e.in,c=e=>e.out-e.in,i=e.width,m=e.height,o=i-30-10,p=m-10-30;(0,n.useEffect)((()=>{s.Ltv(a.current).attr("width",i).attr("height",m).style("border","1px solid black")}),[]),(0,n.useEffect)((()=>{u()}),[e.values]);const u=()=>{const e=s.Ltv(a.current);e.selectAll("*").remove();const n=e.append("g").attr("transform","translate(30,10)"),l=s.m4Y().domain(s.Xxv(t,r)).range([0,o]),i=s.m4Y().domain(s.Xxv(t,c)).range([p,0]);console.log(s.Xxv(t,c));const m=s.n8j().x((e=>l(r(e)))).y((e=>i(c(e)))),u=n.selectAll("path").data([t]);u.enter().append("path").attr("d",m).style("fill","none").style("stroke","blue"),u.exit().remove(),u.attr("d",m);const d=s.l78(l).ticks(5);n.append("g").attr("class","x axis").attr("transform","translate(0,"+p+")").call(d),console.log(i);const E=s.V4s(i).ticks(5);n.append("g").attr("class","y axis").call(E)};return l().createElement("div",{className:"chart"},l().createElement("svg",{ref:a}))};function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},i.apply(null,arguments)}const m=e=>{const t=e.configuration||{calibrations:[]},a=[...t.calibrations];return a.push({path:"",sourceRef:"",period:"",mappings:[]}),l().createElement("div",null,a.map(((a,n)=>l().createElement(p,i({key:`${n}${Date.now()}`,i:n},a,{save:a=>{const l={...t};l.calibrations[n]=a,e.save(l)},delete:()=>{const a={...t};a.calibrations.splice(n,1),e.save(a)}})))))},o={lineHeight:"36px"},p=e=>{const[t,a]=(0,n.useState)(e.path),[s,i]=(0,n.useState)(e.sourceRef),[m,o]=(0,n.useState)(e.period),[p,E]=(0,n.useState)(e.mappings);return l().createElement(r.Zp,null,l().createElement(r.aR,null,"#",e.i+1),l().createElement(r.bw,null,l().createElement(r.lV,null,l().createElement(r.fI,null,l().createElement(r.fv,{md:"6"},l().createElement(u,{fieldName:"path",label:"Path",value:t,setter:a,text:"Signal K path of the data"}),l().createElement(u,{fieldName:"sourceRef",label:"Source",value:s,setter:i,text:"Specify source if needed, leave empty otherwise. Sources are available in Data Browser."}),l().createElement(u,{fieldName:"period",label:"Period",value:m,setter:o,text:"If data is periodic, like direction."}),l().createElement(r.gE,{row:!0},l().createElement(r.fv,{md:"2"}),l().createElement(r.fv,{xs:"12",md:"6"},l().createElement(r._O,{style:{justifyContent:"space-between"}},l().createElement(r.$n,{size:"sm",color:"primary",onClick:a=>{a.preventDefault(),e.save({path:t,sourceRef:s,period:m,mappings:p})}},l().createElement("i",{className:"fa fa-save"})," Save"),l().createElement(r.$n,{size:"sm",color:"danger",onClick:t=>{t.preventDefault(),e.delete()}},l().createElement("i",{className:"fa fa-ban"})," Delete"))))),l().createElement(r.fv,null,l().createElement(c,{values:p,width:300,height:200}),l().createElement(d,{mappings:p,setMappings:E}))))))},u=({fieldName:e,label:t,value:a,setter:n,text:s})=>l().createElement(r.gE,{row:!0},l().createElement(r.fv,{md:"2"},l().createElement(r.JU,{style:o,htmlFor:e},t)),l().createElement(r.fv,{xs:"12",md:"6"},l().createElement(r.pd,{type:"text",name:e,onChange:e=>n(e.target.value),value:a}),l().createElement(r.ay,{color:"muted"},s))),d=({mappings:e,setMappings:t})=>{const a=[...e];return a.push({in:"",out:""}),l().createElement(r.XI,{responsive:!0,bordered:!0},l().createElement("thead",null,l().createElement("tr",null,l().createElement("td",null,"Input"),l().createElement("td",null,"Output"),l().createElement("td",null,"Difference"),l().createElement("td",null,"Delete row"))),l().createElement("tbody",null,a.map(((a,n)=>l().createElement(E,i({key:n,setMapping:a=>{const l=[...e];l[n]=a,t(l)},deleteMapping:()=>{const a=[...e];a.splice(n,1),t(a)},canDelete:n<e.length},a))))))},E=e=>l().createElement("tr",{style:{lineHeight:"0px"}},l().createElement("td",{style:{padding:"0px"}},l().createElement(r.pd,{type:"number",name:"in",onChange:t=>{e.setMapping({in:Number(t.target.value),out:e.out})},value:e.in})),l().createElement("td",{style:{padding:"0px"}},l().createElement(r.pd,{type:"number",name:"out",onChange:t=>{e.setMapping({in:e.in,out:Number(t.target.value)})},value:e.out})),l().createElement("td",{style:{padding:"0px"}},l().createElement(r.pd,{type:"number",name:"diff",value:e.out-e.in,disabled:!0})),l().createElement("td",{style:{padding:"0px",textAlign:"center",verticalAlign:"middle"}},e.canDelete&&l().createElement("i",{className:"fas fa-trash",onClick:()=>{e.deleteMapping()}})))}}]);