1import{a as ie}from"./chunk-IUTJLVK4.js";import"./chunk-OYOXAY44.js";import"./chunk-IO44HIO6.js";import"./chunk-FDN33MRG.js";import{m as K,n as ee,y as te}from"./chunk-F45KP72J.js";import{Cc as u,Dc as m,Ec as d,Fc as k,K as H,Lb as o,Mc as P,Pa as N,Qa as $,Qd as Z,Ra as S,Sa as j,Sc as C,Vc as y,Xb as O,cc as X,cd as G,d as U,fd as h,gd as E,hc as M,hd as I,id as z,jb as J,sa as R,wc as T}from"./chunk-Z5YOIIAC.js";import{a as Y,b as W,l as s,t as A}from"./chunk-ATLPHYUF.js";function ae(r,c){if(r&1&&(m(0,"span"),h(1),d()),r&2){let i=y().$implicit;o(),I("(",i.unit,")")}}function se(r,c){if(r&1&&(m(0,"option",23),h(1),M(2,ae,2,1,"span",16),d()),r&2){let i=c.$implicit,e=c.index;u("value",e),o(),I(" ",i.label," "),o(),u("ngIf",i.unit)}}function oe(r,c){if(r&1){let i=P();m(0,"label",24)(1,"input",25),C("change",function(){let a=N(i).$implicit,t=y();return $(t.onPresetSelect(a.key))}),d(),h(2),d()}if(r&2){let i=c.$implicit,e=y();G("active",e.selectedPreset===i.key),o(),u("checked",e.selectedPreset===i.key),o(),I(" ",i.label," ")}}function le(r,c){if(r&1){let i=P();m(0,"div",26)(1,"div",27)(2,"label"),h(3,"Von:"),d(),m(4,"input",28),C("change",function(a){N(i);let t=y();return $(t.customFrom=t.asInputValue(a))}),d()(),m(5,"div",27)(6,"label"),h(7,"Bis:"),d(),m(8,"input",28),C("change",function(a){N(i);let t=y();return $(t.customTo=t.asInputValue(a))}),d()()()}if(r&2){let i=y();o(4),u("value",i.customFrom),o(4),u("value",i.customTo)}}function ce(r,c){if(r&1&&(m(0,"div",29)(1,"strong"),h(2,"Differenz erster / letzter Wert"),d(),m(3,"span"),h(4),d()()),r&2){let i=y();o(4),E(i.diffText)}}function de(r,c){r&1&&(m(0,"span"),h(1,"Abrufen"),d())}function me(r,c){r&1&&k(0,"span",30)}function pe(r,c){if(r&1){let i=P();m(0,"button",31),C("click",function(){N(i);let a=y();return $(a.toggleChartType())}),h(1," Diagrammtyp wechseln "),d()}}function ue(r,c){if(r&1){let i=P();m(0,"button",31),C("click",function(){N(i);let a=y();return $(a.downloadCsv())}),h(1," CSV herunterladen "),d()}}function he(r,c){if(r&1&&(m(0,"div",32),h(1),d()),r&2){let i=y();o(),E(i.errorMessage)}}function fe(r,c){if(r&1&&(S(),k(0,"line",43)),r&2){let i=c.$implicit,e=y(2);T("x1",10)("x2",e.chartW-10)("y1",i.pos)("y2",i.pos)}}function ge(r,c){if(r&1&&(S(),m(0,"text",44),h(1),d()),r&2){let i=c.$implicit;T("x",6)("y",i.pos-3),o(),I(" ",i.label," ")}}function xe(r,c){if(r&1&&(S(),k(0,"line",45)),r&2){let i=c.$implicit,e=y(2);T("x1",i.pos)("x2",i.pos)("y1",15)("y2",e.chartH-28)}}function ye(r,c){if(r&1&&(S(),m(0,"text",46),h(1),d()),r&2){let i=c.$implicit,e=y(2);T("x",i.pos)("y",e.chartH-10),o(),I(" ",i.label," ")}}function _e(r,c){if(r&1&&(S(),k(0,"path",47)),r&2){let i=y(2);T("d",i.svgAreaPath)}}function be(r,c){if(r&1&&(S(),k(0,"polyline",48)),r&2){let i=y(2);T("points",i.svgPolyline)}}function ve(r,c){if(r&1&&(S(),k(0,"circle",49)),r&2){let i=c.$implicit;T("cx",i.x)("cy",i.y)}}function we(r,c){if(r&1&&(S(),k(0,"rect",50)),r&2){let i=c.$implicit;T("x",i.x)("y",i.y)("width",i.w)("height",i.h)}}function qe(r,c){if(r&1&&(m(0,"div",33),S(),m(1,"svg"),M(2,fe,1,4,"line",34)(3,ge,2,3,"text",35)(4,xe,1,4,"line",36)(5,ye,2,3,"text",37)(6,_e,1,1,"path",38)(7,be,1,1,"polyline",39)(8,ve,1,2,"circle",40)(9,we,1,4,"rect",41),d(),j(),m(10,"div",42)(11,"span"),h(12),d(),m(13,"span"),h(14),d()()()),r&2){let i=y();o(),T("viewBox","0 0 "+i.chartW+" "+i.chartH),o(),u("ngForOf",i.chartGridY),o(),u("ngForOf",i.chartGridY),o(),u("ngForOf",i.chartGridX),o(),u("ngForOf",i.chartGridX),o(),u("ngIf",i.chartType==="line"&&i.svgAreaPath),o(),u("ngIf",i.chartType==="line"),o(),u("ngForOf",i.chartPoints),o(),u("ngForOf",i.chartBars),o(3),E(i.chartMinLabel),o(2),E(i.chartMaxLabel)}}function Se(r,c){if(r&1&&(m(0,"tr")(1,"td"),h(2),d(),m(3,"td"),h(4),d()()),r&2){let i=c.$implicit,e=y(2);o(2),E(e.formatTimestamp(e.displayTimestamp(i))),o(2),E(e.formatValue(i.payload_num))}}function Me(r,c){if(r&1&&(m(0,"div",51)(1,"div",52)(2,"table")(3,"thead")(4,"tr")(5,"th"),h(6,"Zeitstempel"),d(),m(7,"th"),h(8),d()()(),m(9,"tbody"),M(10,Se,5,2,"tr",53),d()()(),m(11,"div",54),h(12),d()()),r&2){let i=y();o(8),z(" ",i.selectedMeasurementLabel," ",i.selectedUnit?"("+i.selectedUnit+")":""," "),o(2),u("ngForOf",i.rows),o(2),z(" ",i.rows.length," Zeilen in ",i.elapsedMs,"ms ")}}function Te(r,c){r&1&&(m(0,"div",55),h(1," Keine Daten verf\xFCgbar "),d())}var ke=[{label:"Nur heute",key:"today"},{label:"Gestern",key:"yesterday"},{label:"Diese Woche",key:"this-week"},{label:"Letzte Woche",key:"last-week"},{label:"Diesen Monat",key:"this-month"},{label:"Letzten Monat",key:"last-month"},{label:"Dieses Jahr",key:"this-year"},{label:"Letztes Jahr",key:"last-year"}
1,{label:"Gesamte Zeit",key:"all"},{label:"Benutzerdefiniert",key:"custom"}],ne=[{label:"Durchfluss",g1:0,g2:0,g3:0,unit:"l/min"},{label:"Strom",g1:0,g2:0,g3:1,unit:"A"},{label:"Druck",g1:0,g2:0,g3:2,unit:"bar"},{label:"Temperatur",g1:0,g2:0,g3:4,unit:"\xB0C"},{label:"F\xF6rdermenge Total",g1:0,g2:0,g3:5,unit:"m\xB3"},{label:"Wasserstand",g1:0,g2:0,g3:6,unit:"m"},{label:"Freigabe Steuerung",g1:0,g2:0,g3:7,unit:""},{label:"Status Freigabe",g1:0,g2:0,g3:8,unit:""},{label:"Betriebsstunden Total",g1:0,g2:0,g3:10,unit:"h"},{label:"Spannung",g1:0,g2:2,g3:1,unit:"V"},{label:"Verbrauch Total",g1:0,g2:0,g3:12,unit:"kWh"}],Pe="mqtt-query",Qe=["url","user","password","broker","query-topic","serial","address-space","label","measurements","wells","timeout","time-source","time-g3"],Oe=(()=>{let c=class c{constructor(e,a,t){s(this,"elementRef");s(this,"cdr");s(this,"mqttService");s(this,"url");s(this,"user","");s(this,"password","");s(this,"broker","");s(this,"queryTopic","GDAS/HAZU");s(this,"serial","");s(this,"addressSpace","");s(this,"label","");s(this,"measurements","");s(this,"wells","");s(this,"timeout","60000");s(this,"timeSource","ts");s(this,"timeG3","99");s(this,"parsedMeasurements",[]);s(this,"selectedMeasurementIndex",-1);s(this,"selectedPreset","this-week");s(this,"customFrom","");s(this,"customTo","");s(this,"timePresets",ke);s(this,"connected",!1);s(this,"loading",!1);s(this,"queryExecuted",!1);s(this,"errorMessage","");s(this,"rows",[]);s(this,"elapsedMs",0);s(this,"diffText","");s(this,"chartPoints",[]);s(this,"chartBars",[]);s(this,"svgPolyline","");s(this,"chartW",800);s(this,"chartH",200);s(this,"chartMinLabel","");s(this,"chartMaxLabel","");s(this,"chartType","line");s(this,"svgAreaPath","");s(this,"chartGridY",[]);s(this,"chartGridX",[]);s(this,"destroy$",new U);s(this,"connectionConfig");s(this,"pendingQueries",new Map);this.elementRef=e,this.cdr=a,this.mqttService=t}get selectedMeasurementLabel(){return this.selectedMeasurementIndex>=0?this.parsedMeasurements[this.selectedMeasurementIndex].label:this.label||"Messwertverlauf"}get selectedUnit(){return this.selectedMeasurementIndex>=0?this.parsedMeasurements[this.selectedMeasurementIndex].unit:""}ngOnInit(){return A(this,null,function*(){if(this.elementRef.nativeElement.removeAttribute("ng-version"),this.measurements)try{this.parsedMeasurements=JSON.parse(this.measurements)}catch(t){this.parsedMeasurements=ne}else this.parsedMeasurements=ne;if(this.addressSpace){let t=parseInt(this.addressSpace,10);this.parsedMeasurements=this.parsedMeasurements.map(n=>W(Y({},n),{g1:n.g1===0?t:n.g1}))}if(!this.serial&&this.wells)try{let t=JSON.parse(this.wells);t.length>0&&(this.serial=t[0].serial,this.addressSpace||(this.addressSpace=t[0].addressS
1pace))}catch(t){}let e=new Date;this.customTo=this.toIsoDate(e);let a=new Date(e.getTime()-10080*60*1e3);this.customFrom=this.toIsoDate(a);try{this.connectionConfig=yield this.mqttService.resolveConfig({url:this.url,username:this.user||void 0,password:this.password||void 0,broker:this.broker||void 0})}catch(t){console.error("[mqtt-query] Failed to resolve MQTT auth:",t);return}this.mqttService.connect(this.connectionConfig,this.queryTopic).pipe(R(this.destroy$),H(t=>{try{return JSON.parse(t.payload).type==="result"}catch(n){return!1}})).subscribe(t=>{try{let n=JSON.parse(t.payload),l=this.pendingQueries.get(n.id);l&&(this.pendingQueries.delete(n.id),n.ok?l.resolve(n):l.reject(n.error||"Query failed"))}catch(n){console.error("[mqtt-query] Failed to parse response:",n)}}),this.mqttService.connectionStatus$(this.connectionConfig).pipe(R(this.destroy$)).subscribe(t=>{this.connected=t,this.cdr.markForCheck()})})}stopPropagation(e){e.stopPropagation()}onMeasurementSelect(e){this.selectedMeasurementIndex=parseInt(e.target.value,10),this.rows=[],this.chartPoints=[],this.chartBars=[],this.svgPolyline="",this.diffText="",this.queryExecuted=!1,this.errorMessage="",this.cdr.markForCheck()}onPresetSelect(e){this.selectedPreset=e,this.cdr.markForCheck()}asInputValue(e){return e.target.value}canQuery(){return this.connected&&!this.loading&&this.selectedMeasurementIndex>=0&&!!this.serial}executeQuery(){return A(this,null,function*(){var n,l;if(!this.canQuery())return;let e=this.parsedMeasurements[this.selectedMeasurementIndex],{from:a,to:t}=this.getDateRange();this.loading=!0,this.errorMessage="",this.queryExecuted=!0,this.cdr.markForCheck();try{let f=this.timeSource==="payload",b=parseInt(this.timeG3,10)||99,v=f?"SELECT m.ts, m.payload_num,\n (SELECT t.payload_text FROM measurements t FORCE INDEX (idx_lookup)\n JOIN addresses ta ON ta.id=t.address_id\n WHERE t.device_id=m.device_id\n AND ta.device_id=m.device_id\n AND ta.g1=? AND ta.g2=? AND ta.g3=?\n AND t.ts <= m.ts\n ORDER BY t.ts DESC LIMIT 1) AS payload_ts\n FROM measurements m FORCE INDEX (idx_lookup)\n JOIN devices d ON d.id=m.device_id\n JOIN addresses a ON a.id=m.address_id\n WHERE d.serial=? AND a.g1=? AND a.g2=? AND a.g3=?\n AND m.ts BETWEEN ? AND ?\n ORDER BY m.ts":"SELECT m.ts, m.payload_num FROM measurements m FORCE INDEX (idx_lookup) JOIN devices d ON d.id=m.device_id JOIN addresses a ON a.id=m.address_id WHERE d.serial=? AND a.g1=? AND a.g2=? AND a.g3=? AND m.ts BETWEEN ? AND ? ORDER BY m.ts",q=f?[e.g1,e.g2,b,this.serial,e.g1,e.g2,e.g3,a,t]:[this.serial,e.g1,e.g2,e.g3,a,t],_=yield this.sendQuery(v,q,5e3);this.rows=(n=_.rows)!=null?n:[],this.elapsedMs=(l=_.elapsed_ms)!=null?l:0,this.rows.length>0?(this.buildChart(),this.buildDiff()):(this.chartPoints=[],this.chartBars=[],this.svgPolyline="",this.diffText="")}catch(f){this.errorMessage=String(f),this.rows=[],this.chartPoints=[],this.chartBars=[],this.svgPolyline="",this.diffText=""}finally{this.loading=!1,this.cdr.markForCheck()}})}toggleChartType(){this.chartType=this.chartType==="line"?"bar":"line",this.buildChart(),this.cdr.markForCheck()}downloadCsv(){if(this.rows.length===0)return;let e=this.parsedMeasurements[this.selectedMeasurementIndex],a="Zeitstempel;".concat(e.label," (").concat(e.unit,")"),t=this.rows.map(v=>"".concat(this.formatTimestamp(this.displayTimestamp(v)),";").concat(this.formatValue(v.payload_num))),n=[a,...t].join("\n"),l=new Blob(["\uFEFF"+n],{type:"text/csv;charset=utf-8"}),f=URL.createObjectURL(l),b=document.createElement("a");b.href=f,b.download="".concat(e.label.replace(/\s+/g,"_"),"_").concat(this.customFrom||"export",".csv"),b.click(),URL.revokeObjectURL(f)}formatTimestamp(e){if(e==null)return"--";let a=this.parseTimestamp(e);if(a===null)return String(e);let t=new Date(a),n=l=>String(l).padStart(2,"0");return"".concat(n(t.getDate()),".").concat(n(t.getMonth()+1),".").concat(t.getFullYear()," ").concat(n(t.getHours()),":").concat(n(t.getMinutes()),":").concat(n(t.getSeconds()))}parseTimestamp(e){if(e==null)return null;let a=String(e);for(;a.length>0&&a.charCodeAt(a.length-1)===0;)a=a.slice(0,-1);let t=a.trim();if(!t)return null;let n=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})(?:[ T](\d{1,2}):(\d{2})(?::(\d{2}))?)?$/);if(n){let[,f,b,v,q,_,F]=n,D=new Date(Number(v),Number(b)-1,Number(f),Number(q!=null?q:0),Number(_!=null?_:0),Number(F!=null?F:0)).getTime();return isNaN(D)?null:D}let l=new Date(t).getTime();return isNaN(l)?null:l}rowTimestamp(e){if(this.timeSource==="payload"){let a=this.parseTimestamp(e.payload_ts);if(a!==null)return a}return this.parseTimestamp(e.ts)}displayTimestamp(e){return this.timeSource==="payload"&&e.payload_ts?e.payload_ts:e.ts}formatTimeTick(e,a){let t=new Date(e);if(isNaN(t.getTime()))return"";let n=f=>String(f).padStart(2,"0"),l="".concat(n(t.getHours()),":").concat(n(t.getMinutes()));return a?"".concat(n(t.getDate()),".").concat(n(t.getMonth()+1),". ").concat(l):l}formatValue(e){if(e==null)return"--";if(typeof e=="number")return e.toFixed(4);let a=parseFloat(String(e));return isNaN(a)?String(e):a.toFixed(4)}buildDiff(){let e=this.rows.filter(f=>f.payload_num!==null&&f.payload_num!==void 0);if(e.length<2){this.diffText="";return}let a=Number(e[0].payload_num),n=Number(e[e.length-1].payload_num)-a,l=n>=0?"+":"";this.diffText="".concat(l).concat(n.toFixed(4)," ").concat(this.selectedUnit)}buildChart(){let e=this.rows.filter(p=>p.payload_num!==null&&p.payload_num!==void 0&&!isNaN(Number(p.payload_num))).sort((p,x)=>{var g,w;return((g=this.rowTimestamp(p))!=null?g:0)-((w=this.rowTimestamp(x))!=null?w:0)});if(e.length<2){this.chartPoints=[],this.chartBars=[],this.svgPolyline="",this.svgAreaPath="",this.chartGridY=[],this.chartGridX=[];return}let a=e.map(p=>Number(p.payload_num)),t=Math.min(...a),n=Math.max(...a);if(n===t){let p=Math.abs(t),x=p>0?p*.05:1;t-=x,n+=x}let l=n-t,f=50,b=15,v=28,q=e.length,_=this.chartW-f-10,F=this.chartH-b-v,Q=e.map(p=>{var x;return(x=this.rowTimestamp(p))!=null?x:0}),D=Q[0],V=Q[q-1]-D||1;this.chartPoints=e.map((p,x)=>{var g;return{x:f+_*(Q[x]-D)/V,y:b+F*(1-(Number(p.payload_num)-t)/l),label:String((g=this.displayTimestamp(p))!=null?g:p.ts),value:Number(p.payload_num)}});let L=4;this.chartGridX=[];let re=V>1440*60*1e3;for(let p=0;p<=L;p++){let x=p/L,g=D+V*x;this.chartGridX.push({pos:f+_*x,label:this.formatTimeTick(g,re)})}let B=4;this.chartGridY=[];for(let p=0;p<=B;p++){let x=p/B,g=t+l*(1-x);this.chartGridY.push({pos:b+F*x,label:g.toFixed(2)})}if(this.chartType==="line"){this.svgPolyline=this.chartPoints.map(w=>"".concat(w.x,",").concat(w.y)).join(" ");let p=this.chartPoints[0],x=this.chartPoints[this.chartPoints.length-1],g=this.chartH-v;this.svgAreaPath="M".concat(p.x,",").concat(g," ")+this.chartPoints.map(w=>"L".concat(w.x,",").concat(w.y)).join(" ")+" L".concat(x.x,",").concat(g," Z"),this.chartBars=[]}else{this.svgPolyline="",this.svgAreaPath="";let p=_;for(let g=1;g<this.chartPoints.length;g++){let w=this.chartPoints[g].x-this.chartPoints[g-1].x;w>0&&w<p&&(p=w)}let x=Math.max(2,Math.min(20,p*.8));this.chartBars=this.chartPoints.map(g=>({x:g.x-x/2,y:g.y,w:x,h:this.chartH-v-g.y}))}this.chartMinLabel="Min: ".concat(Math.min(...a).toFixed(2)," ").concat(this.selectedUnit),this.chartMaxLabel="Max: ".concat(Math.max(...a).toFixed(2)," ").concat(this.selectedUnit)}getDateRange(){let e=new Date,a=new Date(e.getFullYear(),e.getMonth(),e.getDate()),t=n=>"".concat(n.getFullYear(),"-").concat(String(n.getMonth()+1).padStart(2,"0"),"-").concat(String(n.getDate()).padStart(2,"0")," ").concat(String(n.getHours()).padStart(2,"0"),":").concat(String(n.getMinutes()).padStart(2,"0"),":").concat(String(n.getSeconds()).padStart(2,"0"));switch(this.selectedPreset){case"today":return{from:t(a),to:t(e)};case"yesterday":{let n=new Date(a.getTime()-864e5);return{from:t(n),to:t(a)}}case"this-week":{let n=a.getDay()||7,l=new Date(a.getTime()-(n-1)*864e5);return{from:t(l),to:t(e)}}case"last-week":{let n=a.getDay()||7,l=new Date(a.getTime()-(n-1)*864e5),f=new Date(l.getTime()-7*864e5);return{from:t(f),to:t(l)}}case"this-month":{let n=new Date(e.getFullYear(),e.getMonth(),1);return{from:t(n),to:t(e)}}case"last-month":{let n=new Date(e.getFullYear(),e.getMonth()-1,1),l=new Date(e.getFullYear(),e.getMonth(),1);return{from:t(n),to:t(l)}}case"this-year":{let n=new Date(e.getFullYear(),0,1);return{from:t(n),to:t(e)}}case"last-year":{let n=new Date(e.getFullYear()-1,0,1),l=new Date(e.getFullYear(),0,1);return{from:t(n),to:t(l)}}case"all":return{from:"2020-01-01 00:00:00",to:t(e)};
1case"custom":return{from:(this.customFrom||"2020-01-01")+" 00:00:00",to:(this.customTo||t(e).split(" ")[0])+" 23:59:59"};default:return{from:t(a),to:t(e)}}}sendQuery(e,a=[],t=1e3){return new Promise((n,l)=>{let f=crypto.randomUUID(),b=JSON.stringify({type:"query",id:f,sql:e,params:a,max_rows:t}),v=parseInt(this.timeout,10)||6e4,q=setTimeout(()=>{this.pendingQueries.delete(f),l("Timeout: Keine Antwort vom Server (".concat(v/1e3,"s)")),this.cdr.markForCheck()},v);this.pendingQueries.set(f,{resolve:_=>{clearTimeout(q),n(_)},reject:_=>{clearTimeout(q),l(_)}}),this.mqttService.publish(this.connectionConfig,this.queryTopic,b,!1).catch(_=>{clearTimeout(q),this.pendingQueries.delete(f),l("Publish failed: ".concat(_))})})}toIsoDate(e){return"".concat(e.getFullYear(),"-").concat(String(e.getMonth()+1).padStart(2,"0"),"-").concat(String(e.getDate()).padStart(2,"0"))}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete(),this.pendingQueries.forEach(e=>e.reject("Component destroyed")),this.pendingQueries.clear(),this.connectionConfig&&this.mqttService.disconnect(this.connectionConfig,this.queryTopic)}};s(c,"\u0275fac",function(a){return new(a||c)(O(J),O(Z),O(ie))}),s(c,"\u0275cmp",X({type:c,selectors:[["hz-mqtt-query"]],inputs:{url:"url",user:"user",password:"password",broker:"broker",queryTopic:"queryTopic",serial:"serial",addressSpace:"addressSpace",label:"label",measurements:"measurements",wells:"wells",timeout:"timeout",timeSource:[0,"time-source","timeSource"],timeG3:[0,"time-g3","timeG3"]},decls:29,vars:18,consts:[[1,"mq",3,"mousedown","click"],[1,"mq-header"],[1,"mq-title"],[1,"mq-conn"],[1,"mq-dot"],[1,"mq-form"],[1,"mq-field"],[3,"change","value"],["value","-1"],[3,"value",4,"ngFor","ngForOf"],[1,"mq-presets"],["class","mq-preset",3,"active",4,"ngFor","ngForOf"],["class","mq-custom-range",4,"ngIf"],["class","mq-diff",4,"ngIf"],[1,"mq-buttons"],[1,"mq-btn","primary",3,"click","disabled"],[4,"ngIf"],["class","mq-spinner",4,"ngIf"],["class","mq-btn",3,"click",4,"ngIf"],["class","mq-error",4,"ngIf"],["class","mq-chart",4,"ngIf"],["class","mq-results",4,"ngIf"],["class","mq-empty",4,"ngIf"],[3,"value"],[1,"mq-preset"],["type","checkbox",3,"change","checked"],[1,"mq-custom-range"],[1,"mq-field-inline"],["type","date",3,"change","value"],[1,"mq-diff"],[1,"mq-spinner"],[1,"mq-btn",3,"click"],[1,"mq-error"],[1,"mq-chart"],["stroke","#eee","stroke-width","1",4,"ngFor","ngForOf"],["fill","#1a1a1a","font-size","10","text-anchor","start",4,"ngFor","ngForOf"],["stroke","#f3f3f3","stroke-width","1",4,"ngFor","ngForOf"],["fill","#1a1a1a","font-size","10","text-anchor","middle",4,"ngFor","ngForOf"],["fill","#2185d0","opacity","0.08",4,"ngIf"],["fill","none","stroke","#2185d0","stroke-width","2",4,"ngIf"],["r","3.5","fill","#2185d0","stroke","#fff","stroke-width","1.5",4,"ngFor","ngForOf"],["fill","#2185d0","opacity","0.8","rx","2",4,"ngFor","ngForOf"],[1,"mq-chart-labels"],["stroke","#eee","stroke-width","1"],["fill","#1a1a1a","font-size","10","text-anchor","start"],["stroke","#f3f3f3","stroke-width","1"],["fill","#1a1a1a","font-size","10","text-anchor","middle"],["fill","#2185d0","opacity","0.08"],["fill","none","stroke","#2185d0","stroke-width","2"],["r","3.5","fill","#2185d0","stroke","#fff","stroke-width","1.5"],["fill","#2185d0","opacity","0.8","rx","2"],[1,"mq-results"],[1,"mq-table-wrap"],[4,"ngFor","ngForOf"],[1,"mq-status"],[1,"mq-empty"]],template:function(a,t){a&1&&(m(0,"div",0),C("mousedown",function(l){return t.stopPropagation(l)})("click",function(l){return t.stopPropagation(l)}),m(1,"div",1)(2,"h3",2),h(3),d(),m(4,"div",3),k(5,"span",4),h(6),d()(),m(7,"div",5)(8,"div",6)(9,"label"),h(10,"Messwert"),d(),m(11,"select",7),C("change",function(l){return t.onMeasurementSelect(l)}),m(12,"option",8),h(13,"-- Messwert w\xE4hlen --"),d(),M(14,se,3,3,"option",9),d()(),m(15,"div",10),M(16,oe,3,4,"label",11),d(),M(17,le,9,2,"div",12)(18,ce,5,1,"div",13),m(19,"div",14)(20,"button",15),C("click",function(){return t.executeQuery()}),M(21,de,2,0,"span",16)(22,me,1,0,"span",17),d(),M(23,pe,2,0,"button",18)(24,ue,2,0,"button",18),d()(),M(25,he,2,1,"div",19)(26,qe,15,11,"div",20)(27,Me,13,5,"div",21)(28,Te,2,0,"div",22),d()),a&2&&(
1o(3),E(t.selectedMeasurementLabel),o(),G("on",t.connected),o(2),I(" ",t.connected?"Verbunden":"Verbindung..."," "),o(5),u("value",t.selectedMeasurementIndex),o(3),u("ngForOf",t.parsedMeasurements),o(2),u("ngForOf",t.timePresets),o(),u("ngIf",t.selectedPreset==="custom"),o(),u("ngIf",t.diffText),o(2),u("disabled",!t.canQuery()),o(),u("ngIf",!t.loading),o(),u("ngIf",t.loading),o(),u("ngIf",t.rows.length>0),o(),u("ngIf",t.rows.length>0),o(),u("ngIf",t.errorMessage),o(),u("ngIf",t.chartPoints.length>1),o(),u("ngIf",t.rows.length>0),o(),u("ngIf",t.queryExecuted&&t.rows.length===0&&!t.errorMessage&&!t.loading))},dependencies:[te,K,ee],styles:[":host{display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.mq{background:#fff;border-radius:12px;border:1px solid #e0e0e0;box-shadow:0 2px 8px #0000000f;padding:24px}.mq-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.mq-title{margin:0;font-size:18px;font-weight:600;color:#1a1a2e}.mq-conn{display:flex;align-items:center;gap:6px;font-size:11px;color:#999}.mq-dot{width:7px;height:7px;border-radius:50%;background:#db2828}.mq-conn.on .mq-dot{background:#21ba45}.mq-form{display:flex;flex-direction:column;gap:14px}.mq-field{display:flex;flex-direction:column;gap:4px}.mq-field label{font-size:12px;font-weight:500;color:#666;text-transform:uppercase;letter-spacing:.3px}.mq-field select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;background:#f8f9fa;color:#333;outline:none;max-width:300px}.mq-field select:focus{border-color:#2185d0}.mq-presets{display:flex;flex-wrap:wrap;gap:6px 12px}.mq-preset{display:flex;align-items:center;gap:4px;font-size:13px;color:#444;cursor:pointer;-webkit-user-select:none;user-select:none}.mq-preset.active{color:#2185d0;font-weight:600}.mq-preset input[type=checkbox]{accent-color:#2185d0}.mq-custom-range{display:flex;gap:16px;flex-wrap:wrap}.mq-field-inline{display:flex;align-items:center;gap:6px}.mq-field-inline label{font-size:13px;color:#666;font-weight:500}.mq-field-inline input{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.mq-diff{font-size:14px;color:#333}.mq-diff strong{margin-right:8px}.mq-buttons{display:flex;gap:8px;flex-wrap:wrap}.mq-btn{padding:8px 18px;border:1px solid #333;border-radius:4px;font-size:13px;font-weight:500;cursor:pointer;background:#fff;color:#333}.mq-btn.primary{background:#333;color:#fff;border-color:#333}.mq-btn:hover:not(:disabled){opacity:.85}.mq-btn:disabled{opacity:.4;cursor:not-allowed}.mq-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.mq-error{background:#fff6f6;border:1px solid #e0b4b4;color:#9f3a38;padding:10px 14px;border-radius:4px;margin-top:12px;font-size:13px}.mq-chart{margin-top:16px;border:1px solid #eee;border-radius:4px;padding:12px 8px 4px;background:#fafafa}.mq-chart svg{width:100%;height:220px;overflow:visible}.mq-chart-labels{display:flex;justify-content:space-between;font-size:11px;color:#1a1a1a;padding:4px 0}.mq-results{margin-top:12px}.mq-table-wrap{overflow-x:auto;max-height:350px;overflow-y:auto;border:1px solid #eee;border-radius:4px}table{width:100%;border-collapse:collapse;font-size:13px}th{background:#f5f5f5;padding:8px 12px;text-align:left;font-weight:600;color:#555;border-bottom:2px solid #eee;position:-webkit-sticky;position:sticky;top:0;z-index:1}td{padding:6px 12px;border-bottom:1px solid #f0f0f0;color:#333;font-variant-numeric:tabular-nums}tr:hover td{background:#f5f8ff}.mq-status{padding:6px 12px;font-size:11px;color:#999;text-align:right}.mq-empty{text-align:center;padding:30px 16px;color:#999;font-size:14px}\n"],encapsulation:3,changeDetection:0}));let r=c;return r})();export{Oe as MqttQueryComponent,Qe as webComponentAttributes,Pe as webComponentName};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.