@pennsieve-viz/tsviewer 1.1.12 → 1.1.13
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/dist/{BFLibraryButton-Bw2bCACx.cjs → BFLibraryButton-B_TaDdTw.cjs} +1 -1
- package/dist/{BFLibraryButton-BJ7iV-SK.js → BFLibraryButton-DTcYY6VD.js} +1 -1
- package/dist/{IconSelection-DD-Nr7PN.cjs → IconSelection-BPTLv8Go.cjs} +1 -1
- package/dist/{IconSelection-DijIWZHa.js → IconSelection-BocyglLO.js} +1 -1
- package/dist/{TSAnnotationCanvas-UV4pQEcl.js → TSAnnotationCanvas-DErBDH0Y.js} +2 -2
- package/dist/{TSAnnotationCanvas-Cco4wSGV.cjs → TSAnnotationCanvas-DaDdtIB4.cjs} +1 -1
- package/dist/{TSAnnotationModal-CcWNjBv6.js → TSAnnotationModal-B3OSl05U.js} +3 -3
- package/dist/{TSAnnotationModal-5CjROnsz.cjs → TSAnnotationModal-DevUUWys.cjs} +1 -1
- package/dist/{TSFilterModal-B9JkIYGi.js → TSFilterModal-DHBpbDNp.js} +3 -3
- package/dist/{TSFilterModal-CvberIKd.cjs → TSFilterModal-DoqvKSUT.cjs} +1 -1
- package/dist/{TSScrubber-Dq0E_KWP.cjs → TSScrubber-E03DDcMn.cjs} +1 -1
- package/dist/{TSScrubber-Dajtd-ud.js → TSScrubber-hN5JY-DA.js} +1 -1
- package/dist/{TSViewerCanvas-XWBUIuF1.js → TSViewerCanvas-2Jz9ZgqW.js} +2 -2
- package/dist/{TSViewerCanvas-D-2XBXEV.cjs → TSViewerCanvas-Dc5cwQzK.cjs} +2 -2
- package/dist/{TSViewerLayerWindow-D6IXVgCL.js → TSViewerLayerWindow-CalBmhT6.js} +2 -2
- package/dist/{TSViewerLayerWindow-ChsFJLvq.cjs → TSViewerLayerWindow-PAfR31ZO.cjs} +1 -1
- package/dist/{TSViewerToolbar-fwS3Y99W.cjs → TSViewerToolbar-C1wTQDPC.cjs} +1 -1
- package/dist/{TSViewerToolbar-BvDdoOiz.js → TSViewerToolbar-DL9XKYbV.js} +1 -1
- package/dist/{TsAnnotationDeleteDialog-D19Ynkd4.cjs → TsAnnotationDeleteDialog-Cv3z3dFh.cjs} +1 -1
- package/dist/{TsAnnotationDeleteDialog-BnN0eMFf.js → TsAnnotationDeleteDialog-DXgN07Wj.js} +2 -2
- package/dist/{index-Ch_7-EbG.js → index-BsH36ax4.js} +291 -290
- package/dist/index-yiwCKzNX.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +6 -6
- package/dist/index-DRsmx8uY.cjs +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "./base-VCnLhxie.js";
|
|
2
2
|
import { E as F } from "./el-overlay-BMUWCEw_.js";
|
|
3
|
-
import { I as _ } from "./IconSelection-
|
|
3
|
+
import { I as _ } from "./IconSelection-BocyglLO.js";
|
|
4
4
|
import { a as y, b as k } from "./el-input-Ct4WOqYx.js";
|
|
5
5
|
import { E as S } from "./el-input-number-DXBs74eH.js";
|
|
6
|
-
import P from "./BFLibraryButton-
|
|
6
|
+
import P from "./BFLibraryButton-DTcYY6VD.js";
|
|
7
7
|
import { resolveComponent as N, createBlock as u, openBlock as o, withCtx as i, createElementVNode as s, createVNode as r, createElementBlock as a, toDisplayString as d, createTextVNode as c, createCommentVNode as p, Fragment as b, renderList as v } from "vue";
|
|
8
|
-
import { g as H } from "./index-
|
|
8
|
+
import { g as H } from "./index-BsH36ax4.js";
|
|
9
9
|
const B = {
|
|
10
10
|
name: "TimeseriesFilterModal",
|
|
11
11
|
components: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./base-BQSnEcNP.cjs");const m=require("./el-overlay-D192MFpl.cjs"),c=require("./IconSelection-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./base-BQSnEcNP.cjs");const m=require("./el-overlay-D192MFpl.cjs"),c=require("./IconSelection-BPTLv8Go.cjs"),i=require("./el-input-BDEG_6zp.cjs"),f=require("./el-input-number-B_bFGgma.cjs"),b=require("./BFLibraryButton-B_TaDdTw.cjs"),e=require("vue"),V=require("./index-yiwCKzNX.cjs"),v={name:"TimeseriesFilterModal",components:{BfLibraryButton:b.default,IconSelection:c.IconSelection},emits:["closeWindow","update:visible"],mixins:[],watch:{},computed:{computeVisible0:function(){switch(this.selectedFilter){case"lowpass":return!0;case"highpass":return!0;case"bandpass":return!0;default:return!1}},onSingleChannel:function(){return this.onChannels.length==1},selectedChannels:function(){return this.onChannels.length},computeVisible1:function(){switch(this.selectedFilter){case"lowpass":return!1;case"highpass":return!1;case"bandpass":return!0;default:return!1}},computeVisible2:function(){switch(this.selectedFilter){case"bandstop":return!0;default:return!1}},computePlaceholder1:function(l){switch(this.selectedFilter){case"lowpass":return"Low Pass Cutoff Frequency (Hz)";case"highpass":return"High Pass Cutoff Frequency (Hz)";case"bandpass":return"Low Pass Cutoff Frequency (Hz)";default:return""}},computePlaceholder2:function(l){switch(this.selectedFilter){case"bandpass":return"High Pass Cutoff Frequency (Hz)";default:return""}}},props:{visible:{type:Boolean,default:!1}},data:function(){return{selectedFilter:null,filterOptions:[{label:"No Filter",value:"clear"},{label:"Low Pass",value:"lowpass"},{label:"High Pass",value:"highpass"},{label:"Band Pass",value:"bandpass"},{label:"Notch",value:"bandstop"}],selectedNotch:null,notchOptions:[{label:"50Hz",value:50},{label:"60Hz",value:60}],input0:null,input1:null,onChannels:[]}},methods:{close:function(){this.$emit("closeWindow")},handleChange:function(){},onButtonClick:function(){},submitForm:function(l){this.$emit("closeWindow")}}},g={slot:"body"},C={class:"select-wrapper"},k={key:0,class:"filter-input-wrapper"},_={key:1,class:"filter-input-wrapper"},w={slot:"footer"},B={class:"button-wrapper"},N={class:"channels-selected"},y={key:0},F={key:1},S={class:"buttons"};function E(l,n,u,P,I,o){const s=i.ElOption,a=i.ElSelect,r=f.ElInputNumber,d=c.IconSelection,p=e.resolveComponent("bf-library-button"),h=m.ElDialog;return e.openBlock(),e.createBlock(h,{class:"timeseries-filter-modal",ref:"filter-modal",title:"Set Filter",modelValue:u.visible,"onUpdate:modelValue":n[4]||(n[4]=t=>l.$emit("update:visible",t)),onClose:o.close},{default:e.withCtx(()=>[e.createElementVNode("div",g,[e.createElementVNode("div",C,[e.createVNode(a,{modelValue:l.selectedFilter,"onUpdate:modelValue":n[0]||(n[0]=t=>l.selectedFilter=t),placeholder:"Select"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.filterOptions,t=>(e.openBlock(),e.createBlock(s,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),o.computeVisible0?(e.openBlock(),e.createElementBlock("div",k,[e.createTextVNode(e.toDisplayString(o.computePlaceholder1)+" ",1),e.createVNode(r,{class:"filterInput",modelValue:l.input0,"onUpdate:modelValue":n[1]||(n[1]=t=>l.input0=t),"controls-position":"right",precision:2,onChange:o.handleChange},null,8,["modelValue","onChange"])])):e.createCommentVNode("",!0),o.computeVisible1?(e.openBlock(),e.createElementBlock("div",_,[e.createTextVNode(e.toDisplayString(o.computePlaceholder2)+" ",1),e.createVNode(r,{class:"filterInput",modelValue:l.input1,"onUpdate:modelValue":n[2]||(n[2]=t=>l.input1=t),"controls-position":"right",precision:2,onChange:o.handleChange},null,8,["modelValue","onChange"])])):e.createCommentVNode("",!0),o.computeVisible2?(e.openBlock(),e.createBlock(a,{key:2,modelValue:l.selectedNotch,"onUpdate:modelValue":n[3]||(n[3]=t=>l.selectedNotch=t),placeholder:"Select",class:"filter-input-wrapper"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.notchOptions,t=>(e.openBlock(),e.createBlock(s,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])):e.createCommentVNode("",!0)])])]),footer:e.withCtx(()=>[e.createElementVNode("div",w,[e.createElementVNode("div",B,[e.createElementVNode("div",N,[e.createVNode(d,{height:24,width:24}),o.onSingleChannel?(e.openBlock(),e.createElementBlock("div",y," Adding to single channel ")):(e.openBlock(),e.createElementBlock("div",F," Adding to "+e.toDisplayString(o.selectedChannels)+" Selected Channels ",1))]),e.createElementVNode("div",S,[e.createVNode(p,{onClick:o.submitForm},{default:e.withCtx(()=>[...n[5]||(n[5]=[e.createTextVNode("Set Filter ",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["modelValue","onClose"])}const q=V._export_sfc(v,[["render",E],["__scopeId","data-v-7d3f42db"]]);exports.default=q;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),d=require("./index-DRsmx8uY.cjs");function se(f,u,c){return function(){for(var t=[],_=0,v=f,k=0;k<u.length||_<arguments.length;){var W;k<u.length&&(!d._isPlaceholder(u[k])||_>=arguments.length)?W=u[k]:(W=arguments[_],_+=1),t[k]=W,d._isPlaceholder(W)||(v-=1),k+=1}return v<=0?c.apply(this,t):d._arity(v,se(f,t,c))}}var Te=d._curry2(function(u,c){return u===1?d._curry1(c):d._arity(u,se(u,[],c))});function Ce(f,u){for(var c=0,t=u.length,_=Array(t);c<t;)_[c]=f(u[c]),c+=1;return _}var ye=(function(){function f(u,c){this.xf=c,this.f=u}return f.prototype["@@transducer/init"]=d._xfBase.init,f.prototype["@@transducer/result"]=d._xfBase.result,f.prototype["@@transducer/step"]=function(u,c){return this.xf["@@transducer/step"](u,this.f(c))},f})(),xe=d._curry2(function(u,c){return new ye(u,c)}),ke=d._curry2(d._dispatchable(["fantasy-land/map","map"],xe,function(u,c){switch(Object.prototype.toString.call(c)){case"[object Function]":return Te(c.length,function(){return u.call(this,c.apply(this,arguments))});case"[object Object]":return d._reduce(function(t,_){return t[_]=u(c[_]),t},{},d.keys(c));default:return Ce(u,c)}}));const We={class:"timeseries-scrubber"},Ee={class:"dateWrap"},Ae={class:"noselect"},Pe={id:"scrubber",noselect:""},Ne=["width","height"],Me=["width","height"],Re=["width","height"],De={__name:"TSScrubber",props:{ts_start:Number,ts_end:Number,cWidth:Number,constants:Object,start:Number,duration:Number,cursorLoc:Number,labelWidth:Number,activeViewer:Object},emits:["setStart"],setup(f,{expose:u,emit:c}){const t=f,_=c,v=a.inject("viewerStore",()=>d.createViewerStore("default"),!0),k=a.ref(null),W=a.ref(null),j=a.ref(null),T=a.ref(null),g=a.ref(1),G=a.ref(28),C=a.ref(30),V=a.ref(!1),R=a.ref(""),I=a.ref("point"),F=a.ref(null),M=a.ref([]),w=a.ref([]),y=a.ref([]),U=a.ref(!1),J=a.ref(0),K=a.ref(0),E=a.ref(0),$=a.ref(0),oe=a.computed(()=>ee(t.ts_start)),ie=a.computed(()=>ee(t.ts_end)),le=a.computed(()=>{if(R.value!=="")return R.value;if(t.start>0){const n=new Date(t.start/1e3).toUTCString();return n.substring(0,n.length-3)}return""}),Q=a.computed(()=>({width:t.labelWidth+t.cWidth-8+5+"px",height:"28px"})),ce=a.computed(()=>({width:t.labelWidth+t.cWidth-8+5+"px",height:"30px"})),ue=a.computed(()=>t.cWidth+t.labelWidth-8+5),ve=a.computed(()=>Math.floor((t.ts_end-t.ts_start)/t.cWidth));a.watch(()=>t.start,()=>{A()}),a.watch(()=>t.duration,()=>{A()}),a.watch(()=>t.cWidth,()=>{A()}),a.watch(()=>t.activeViewer,(n,e)=>{var r;n&&n!==e&&(U.value=!0,Y(),(r=n.content)!=null&&r.id?a.nextTick(()=>{B(),U.value=!1}):U.value=!1)},{deep:!0}),a.watch(()=>v.viewerChannels,(n,e)=>{var r,o;n&&n.length>0&&!U.value&&(!e||n.length!==e.length||((r=n[0])==null?void 0:r.id)!==((o=e[0])==null?void 0:o.id))&&(X(),a.nextTick(()=>{te()}))},{deep:!0}),a.watch(()=>v.viewerAnnotations,n=>{n&&!U.value&&a.nextTick(()=>{B()})},{deep:!0});const Y=()=>{M.value=[],X(),V.value=!1,R.value="",I.value="point",Z()},X=()=>{y.value=new Array(5e3),y.value=y.value.fill(0,0,4999),w.value=[]},Z=()=>{a.nextTick(()=>{[W.value,j.value,T.value].forEach(e=>{if(e){const r=e.getContext("2d");r&&r.clearRect(0,0,e.width,e.height)}})})},D=(n,e,r)=>e*(n+r),de=()=>{const n=T.value.getContext("2d"),e=window.devicePixelRatio||1,r=n.webkitBackingStorePixelRatio||n.mozBackingStorePixelRatio||n.msBackingStorePixelRatio||n.oBackingStorePixelRatio||n.backingStorePixelRatio||1;return e/r},ee=n=>{if(n>0)return n=n/1e3,n=new Date(n),("0"+n.getUTCHours()).slice(-2)+":"+("0"+n.getUTCMinutes()).slice(-2)+":"+("0"+n.getUTCSeconds()).slice(-2)},fe=n=>{if(V.value){const r=(n.clientX-J.value)/t.cWidth*(t.ts_end-t.ts_start),o=K.value+r;_("setStart",o);const s=new Date((r+t.ts_start)/1e3);R.value=s.toUTCString()}else{const e=T.value.getBoundingClientRect(),r=n.clientX-e.left,o=E.value+$.value,s=I.value;r>E.value-10&&r<o+10?(I.value="drag",T.value.setAttribute("dragme",!0),T.value.removeAttribute("resizeme")):(I.value="point",T.value.removeAttribute("dragme"),T.value.removeAttribute("resizeme"));const i=r/t.cWidth*(t.ts_end-t.ts_start)+t.ts_start,b=new Date(i/1e3).toUTCString();R.value=b.substring(0,b.length-3),s!==I.value&&A()}},ge=()=>{V.value=!1},he=n=>{V.value=!0;const e=T.value.getBoundingClientRect(),r=n.clientX-e.left;J.value=n.clientX;const o=r/ue.value*(t.ts_end-t.ts_start);_("setStart",o+t.ts_start),K.value=o+t.ts_start},me=()=>{V.value=!1},pe=()=>{R.value=""},te=()=>{var r;if(!v.viewerChannels||v.viewerChannels.length===0){console.warn("TSScrubber: Cannot init segment spans - no viewer channels available");return}if(!t.ts_start||!t.ts_end){console.warn("TSScrubber: Cannot init segment spans - invalid time range");return}if(!((r=v.config)!=null&&r.timeSeriesApi)){console.warn("TSScrubber: Cannot init segment spans - no timeSeriesApi configured");return}X();const n=Math.min(t.constants.SEGMENTSPAN,t.ts_end-t.ts_start),e=v.viewerChannels;for(let o=0;o<e.length;o++)ne(e[o].id,o,t.ts_start,t.ts_start+n,0)},ne=async(n,e,r,o,s)=>{var i;const l=t.constants.MAXRECURSION;if(!((i=v.config)!=null&&i.timeSeriesApi)){console.warn("TSScrubber: Cannot request segment span - no timeSeriesApi configured");return}if(!n){console.warn("TSScrubber: Cannot request segment span - no channel ID provided");return}try{const b=await d.useToken(),h=`${v.config.timeSeriesApi}/ts/retrieve/segments?session=${b}&channel=${n}&start=${r}&end=${o}`,p=await d.useSendXhr(h);if(!v.viewerChannels[e]||v.viewerChannels[e].id!==n){console.warn("TSScrubber: Channel mismatch detected, ignoring segment response (likely package switched)");return}let m=new Array(p.length*2),S=0;for(let N=0;N<p.length;N++){m[S]=p[N][0],m[S+1]=p[N][1],S=S+2;const q=Math.floor((p[N][0]-t.ts_start)/(t.ts_end-t.ts_start)*5e3),we=Math.ceil((p[N][1]-t.ts_start)/(t.ts_end-t.ts_start)*5e3);y.value.fill(1,q,we)}let x=0,O=!1,z=0;for(w.value=[];x<y.value.length-1;){if(!y.value[x]&&!O){x++;continue}else y.value[x]?O||(z=x,O=!0):(w.value=w.value.concat([z,x]),O=!1);x++}O&&(w.value=w.value.concat([z,x])),w.value=w.value.concat([5e3]);let be=m[0],P=v.viewerChannels[e];if(!P||P.id!==n){console.warn("TSScrubber: Channel configuration mismatch, skipping update");return}be<P.dataSegments[P.dataSegments.length-1]&&(m.shift(),m.shift()),P.dataSegments=P.dataSegments.concat(m.sort((N,q)=>N-q)),v.updateChannelProperty(P.id,"dataSegments",P.dataSegments);let re=o-r;r+re<t.ts_end&&s<l?ne(n,e,o,o+re,s+1):L()}catch(b){console.error(`TSScrubber: Error fetching segments for channel ${n}:`,b),d.useHandleXhrError(b)}},B=async()=>{var e,r,o;const n=(e=t.activeViewer)==null?void 0:e.content.id;if(!n){console.warn("TSScrubber: Cannot get annotations - no active viewer ID"),M.value=[];return}if(!((r=v.config)!=null&&r.apiUrl)){console.warn("TSScrubber: Cannot get annotations - no API URL configured"),M.value=[];return}if(!v.viewerAnnotations||v.viewerAnnotations.length===0){M.value=[],A();return}try{const s=await d.useToken(),l=ke(m=>m.id,v.viewerAnnotations),i=t.ts_end;let h=`${v.config.apiUrl}/timeseries/${n}/annotations/window`+`?api_key=${s}&aggregation=count&start=${t.ts_start}&end=${t.ts_end}&period=${ve.value}&mergePeriods=true`;for(let m in l)h=h+`&layerIds=${l[m]}`;const p=await d.useSendXhr(h);((o=t.activeViewer)==null?void 0:o.content.id)===n&&(M.value=p,A())}catch(s){console.error("TSScrubber: Error fetching annotations:",s),M.value=[],d.useHandleXhrError(s),A()}},A=()=>{H(),ae(),L()},H=()=>{a.nextTick(()=>{const n=T.value;if(!n){console.warn("iCanvas ref is missing, skipping render");return}const e=n.getContext("2d");if(!e){console.warn("2D context is not available");return}e.setTransform(g.value,0,0,g.value,0,0),e.clearRect(0,0,t.cWidth,C.value),E.value=(t.start-t.ts_start)/(t.ts_end-t.ts_start)*t.cWidth+.5|0,$.value=t.duration/(t.ts_end-t.ts_start)*t.cWidth+.5|0,e.fillStyle="rgb(80,80,80)",e.strokeStyle="rgb(80,80,80)",e.strokeRect(E.value+.5,.5,$.value,C.value-1),e.fillRect(E.value-2,C.value/2-5|0,2,10),e.fillRect(E.value+$.value+1,C.value/2-5|0,2,10);const r=E.value+t.cursorLoc*$.value;r>E.value+.5&&(e.strokeStyle="red",e.beginPath(),e.moveTo(r,0),e.lineTo(r,C.value-1),e.stroke())})},L=()=>{a.nextTick(()=>{const n=W.value;if(!n){console.warn("segmentsCanvas ref is missing, skipping renderSegments");return}const e=n.getContext("2d");if(!e){console.warn("Unable to get 2D context for segmentsCanvas, skipping renderSegments");return}e.setTransform(g.value,0,0,g.value,0,0),e.fillStyle=e.createPattern(F.value,"repeat"),e.clearRect(0,0,t.cWidth,C.value);for(let r=1;r<w.value.length;r+=2){const o=t.cWidth*w.value[r]/5e3,s=t.cWidth*w.value[r+1]/5e3;e.fillRect(o,2,s-o,C.value-6)}})},ae=()=>{const n=j.value;if(!n){console.warn("annotationCanvas ref is missing, skipping renderTimelimeLine");return}const e=n.getContext("2d");if(!e){console.warn("Unable to get 2D context for annotationCanvas, skipping renderTimelimeLine");return}e.setTransform(g.value,0,0,g.value,0,0),e.clearRect(0,0,t.cWidth,G.value);const r=t.ts_start,o=t.ts_end,s=M.value;let l=0;const i=0,b=Math.floor((G.value-2)/Object.keys(s).length-i),h=v.viewerAnnotations;let p="rgb(0,0,0)";for(const m in s)if(s.hasOwnProperty(m)){for(let S=0;S<h.length;S++)if(h[S].id===parseInt(m)){l=S,p=h[S].color;break}Se(e,r,o,i,b,s[m],l,p)}},Se=(n,e,r,o,s,l,i,b)=>{a.nextTick(()=>{n.setTransform(g.value,0,0,g.value,0,0),n.fillStyle=b;for(let h=0;h<l.length;h++)if(l[h].value>0){const p=(l[h].start-e)/(r-e)*t.cWidth;let S=(l[h].end-e)/(r-e)*t.cWidth-p;S<1&&(S=1);const x=1+i*(s-1+o)+i;n.fillRect(p,x,S,s)}})},_e=()=>{const n=document.createElement("canvas"),e=n.getContext("2d",{antialias:!0}),r="rgb(220,220,220)",o=5,s=o,l=o,i=10;return n.width=s,n.height=l,e.fillStyle=r,e.beginPath(),e.moveTo(0,l*(1/i)),e.lineTo(s*(1/i),0),e.lineTo(0,0),e.lineTo(0,l*(1/i)),e.fill(),e.beginPath(),e.moveTo(s,l*(1/i)),e.lineTo(s*(1/i),l),e.lineTo(0,l),e.lineTo(0,l*((i-1)/i)),e.lineTo(s*((i-1)/i),0),e.lineTo(s,0),e.lineTo(s,l*(1/i)),e.fill(),e.beginPath(),e.moveTo(s,l*((i-1)/i)),e.lineTo(s*((i-1)/i),l),e.lineTo(s,l),e.lineTo(s,l*((i-1)/i)),e.fill(),n};return a.onMounted(()=>{y.value=new Array(5e3),y.value=y.value.fill(0,0,4999),g.value=de(),F.value=_e(),H()}),u({getAnnotations:B,initSegmentSpans:te,render:A,renderViewPort:H,renderSegments:L,renderTimelimeLine:ae,resetComponentState:Y,resetSegmentState:X,clearCanvases:Z}),(n,e)=>(a.openBlock(),a.createElementBlock("div",We,[a.createElementVNode("div",Ee,[a.createElementVNode("div",null,a.toDisplayString(oe.value),1),a.createElementVNode("div",null,a.toDisplayString(le.value),1),a.createElementVNode("div",null,a.toDisplayString(ie.value),1)]),a.createElementVNode("div",Ae,[a.createElementVNode("div",Pe,[a.createElementVNode("div",{id:"canvasWrap",ref_key:"canvasWrap",ref:k},[a.createElementVNode("canvas",{id:"segmentsCanvas",class:"canvas",ref_key:"segmentsCanvas",ref:W,width:D(f.cWidth,g.value,0),height:D(C.value-2,g.value,0),style:a.normalizeStyle(Q.value)},null,12,Ne),a.createElementVNode("canvas",{id:"annotationCanvas",class:"canvas",ref_key:"annotationCanvas",ref:j,width:D(f.cWidth,g.value,0),height:D(C.value-2,g.value,0),style:a.normalizeStyle(Q.value)},null,12,Me),a.createElementVNode("canvas",{id:"iCanvas",class:"canvas",ref_key:"iCanvas",ref:T,width:D(f.cWidth,g.value,0),height:D(C.value,g.value,0),onClick:e[0]||(e[0]=(...r)=>n._onTap&&n._onTap(...r)),onMousemove:fe,onMousedown:he,onMouseup:ge,onMouseenter:me,onMouseout:pe,style:a.normalizeStyle(ce.value)},null,44,Re)],512)])])]))}},Ve=d._export_sfc(De,[["__scopeId","data-v-595fa722"]]);exports.default=Ve;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),d=require("./index-yiwCKzNX.cjs");function se(f,u,c){return function(){for(var t=[],_=0,v=f,k=0;k<u.length||_<arguments.length;){var W;k<u.length&&(!d._isPlaceholder(u[k])||_>=arguments.length)?W=u[k]:(W=arguments[_],_+=1),t[k]=W,d._isPlaceholder(W)||(v-=1),k+=1}return v<=0?c.apply(this,t):d._arity(v,se(f,t,c))}}var Te=d._curry2(function(u,c){return u===1?d._curry1(c):d._arity(u,se(u,[],c))});function Ce(f,u){for(var c=0,t=u.length,_=Array(t);c<t;)_[c]=f(u[c]),c+=1;return _}var ye=(function(){function f(u,c){this.xf=c,this.f=u}return f.prototype["@@transducer/init"]=d._xfBase.init,f.prototype["@@transducer/result"]=d._xfBase.result,f.prototype["@@transducer/step"]=function(u,c){return this.xf["@@transducer/step"](u,this.f(c))},f})(),xe=d._curry2(function(u,c){return new ye(u,c)}),ke=d._curry2(d._dispatchable(["fantasy-land/map","map"],xe,function(u,c){switch(Object.prototype.toString.call(c)){case"[object Function]":return Te(c.length,function(){return u.call(this,c.apply(this,arguments))});case"[object Object]":return d._reduce(function(t,_){return t[_]=u(c[_]),t},{},d.keys(c));default:return Ce(u,c)}}));const We={class:"timeseries-scrubber"},Ee={class:"dateWrap"},Ae={class:"noselect"},Pe={id:"scrubber",noselect:""},Ne=["width","height"],Me=["width","height"],Re=["width","height"],De={__name:"TSScrubber",props:{ts_start:Number,ts_end:Number,cWidth:Number,constants:Object,start:Number,duration:Number,cursorLoc:Number,labelWidth:Number,activeViewer:Object},emits:["setStart"],setup(f,{expose:u,emit:c}){const t=f,_=c,v=a.inject("viewerStore",()=>d.createViewerStore("default"),!0),k=a.ref(null),W=a.ref(null),j=a.ref(null),T=a.ref(null),g=a.ref(1),G=a.ref(28),C=a.ref(30),V=a.ref(!1),R=a.ref(""),I=a.ref("point"),F=a.ref(null),M=a.ref([]),w=a.ref([]),y=a.ref([]),U=a.ref(!1),J=a.ref(0),K=a.ref(0),E=a.ref(0),$=a.ref(0),oe=a.computed(()=>ee(t.ts_start)),ie=a.computed(()=>ee(t.ts_end)),le=a.computed(()=>{if(R.value!=="")return R.value;if(t.start>0){const n=new Date(t.start/1e3).toUTCString();return n.substring(0,n.length-3)}return""}),Q=a.computed(()=>({width:t.labelWidth+t.cWidth-8+5+"px",height:"28px"})),ce=a.computed(()=>({width:t.labelWidth+t.cWidth-8+5+"px",height:"30px"})),ue=a.computed(()=>t.cWidth+t.labelWidth-8+5),ve=a.computed(()=>Math.floor((t.ts_end-t.ts_start)/t.cWidth));a.watch(()=>t.start,()=>{A()}),a.watch(()=>t.duration,()=>{A()}),a.watch(()=>t.cWidth,()=>{A()}),a.watch(()=>t.activeViewer,(n,e)=>{var r;n&&n!==e&&(U.value=!0,Y(),(r=n.content)!=null&&r.id?a.nextTick(()=>{B(),U.value=!1}):U.value=!1)},{deep:!0}),a.watch(()=>v.viewerChannels,(n,e)=>{var r,o;n&&n.length>0&&!U.value&&(!e||n.length!==e.length||((r=n[0])==null?void 0:r.id)!==((o=e[0])==null?void 0:o.id))&&(X(),a.nextTick(()=>{te()}))},{deep:!0}),a.watch(()=>v.viewerAnnotations,n=>{n&&!U.value&&a.nextTick(()=>{B()})},{deep:!0});const Y=()=>{M.value=[],X(),V.value=!1,R.value="",I.value="point",Z()},X=()=>{y.value=new Array(5e3),y.value=y.value.fill(0,0,4999),w.value=[]},Z=()=>{a.nextTick(()=>{[W.value,j.value,T.value].forEach(e=>{if(e){const r=e.getContext("2d");r&&r.clearRect(0,0,e.width,e.height)}})})},D=(n,e,r)=>e*(n+r),de=()=>{const n=T.value.getContext("2d"),e=window.devicePixelRatio||1,r=n.webkitBackingStorePixelRatio||n.mozBackingStorePixelRatio||n.msBackingStorePixelRatio||n.oBackingStorePixelRatio||n.backingStorePixelRatio||1;return e/r},ee=n=>{if(n>0)return n=n/1e3,n=new Date(n),("0"+n.getUTCHours()).slice(-2)+":"+("0"+n.getUTCMinutes()).slice(-2)+":"+("0"+n.getUTCSeconds()).slice(-2)},fe=n=>{if(V.value){const r=(n.clientX-J.value)/t.cWidth*(t.ts_end-t.ts_start),o=K.value+r;_("setStart",o);const s=new Date((r+t.ts_start)/1e3);R.value=s.toUTCString()}else{const e=T.value.getBoundingClientRect(),r=n.clientX-e.left,o=E.value+$.value,s=I.value;r>E.value-10&&r<o+10?(I.value="drag",T.value.setAttribute("dragme",!0),T.value.removeAttribute("resizeme")):(I.value="point",T.value.removeAttribute("dragme"),T.value.removeAttribute("resizeme"));const i=r/t.cWidth*(t.ts_end-t.ts_start)+t.ts_start,b=new Date(i/1e3).toUTCString();R.value=b.substring(0,b.length-3),s!==I.value&&A()}},ge=()=>{V.value=!1},he=n=>{V.value=!0;const e=T.value.getBoundingClientRect(),r=n.clientX-e.left;J.value=n.clientX;const o=r/ue.value*(t.ts_end-t.ts_start);_("setStart",o+t.ts_start),K.value=o+t.ts_start},me=()=>{V.value=!1},pe=()=>{R.value=""},te=()=>{var r;if(!v.viewerChannels||v.viewerChannels.length===0){console.warn("TSScrubber: Cannot init segment spans - no viewer channels available");return}if(!t.ts_start||!t.ts_end){console.warn("TSScrubber: Cannot init segment spans - invalid time range");return}if(!((r=v.config)!=null&&r.timeSeriesApi)){console.warn("TSScrubber: Cannot init segment spans - no timeSeriesApi configured");return}X();const n=Math.min(t.constants.SEGMENTSPAN,t.ts_end-t.ts_start),e=v.viewerChannels;for(let o=0;o<e.length;o++)ne(e[o].id,o,t.ts_start,t.ts_start+n,0)},ne=async(n,e,r,o,s)=>{var i;const l=t.constants.MAXRECURSION;if(!((i=v.config)!=null&&i.timeSeriesApi)){console.warn("TSScrubber: Cannot request segment span - no timeSeriesApi configured");return}if(!n){console.warn("TSScrubber: Cannot request segment span - no channel ID provided");return}try{const b=await d.useToken(),h=`${v.config.timeSeriesApi}/ts/retrieve/segments?session=${b}&channel=${n}&start=${r}&end=${o}`,p=await d.useSendXhr(h);if(!v.viewerChannels[e]||v.viewerChannels[e].id!==n){console.warn("TSScrubber: Channel mismatch detected, ignoring segment response (likely package switched)");return}let m=new Array(p.length*2),S=0;for(let N=0;N<p.length;N++){m[S]=p[N][0],m[S+1]=p[N][1],S=S+2;const q=Math.floor((p[N][0]-t.ts_start)/(t.ts_end-t.ts_start)*5e3),we=Math.ceil((p[N][1]-t.ts_start)/(t.ts_end-t.ts_start)*5e3);y.value.fill(1,q,we)}let x=0,O=!1,z=0;for(w.value=[];x<y.value.length-1;){if(!y.value[x]&&!O){x++;continue}else y.value[x]?O||(z=x,O=!0):(w.value=w.value.concat([z,x]),O=!1);x++}O&&(w.value=w.value.concat([z,x])),w.value=w.value.concat([5e3]);let be=m[0],P=v.viewerChannels[e];if(!P||P.id!==n){console.warn("TSScrubber: Channel configuration mismatch, skipping update");return}be<P.dataSegments[P.dataSegments.length-1]&&(m.shift(),m.shift()),P.dataSegments=P.dataSegments.concat(m.sort((N,q)=>N-q)),v.updateChannelProperty(P.id,"dataSegments",P.dataSegments);let re=o-r;r+re<t.ts_end&&s<l?ne(n,e,o,o+re,s+1):L()}catch(b){console.error(`TSScrubber: Error fetching segments for channel ${n}:`,b),d.useHandleXhrError(b)}},B=async()=>{var e,r,o;const n=(e=t.activeViewer)==null?void 0:e.content.id;if(!n){console.warn("TSScrubber: Cannot get annotations - no active viewer ID"),M.value=[];return}if(!((r=v.config)!=null&&r.apiUrl)){console.warn("TSScrubber: Cannot get annotations - no API URL configured"),M.value=[];return}if(!v.viewerAnnotations||v.viewerAnnotations.length===0){M.value=[],A();return}try{const s=await d.useToken(),l=ke(m=>m.id,v.viewerAnnotations),i=t.ts_end;let h=`${v.config.apiUrl}/timeseries/${n}/annotations/window`+`?api_key=${s}&aggregation=count&start=${t.ts_start}&end=${t.ts_end}&period=${ve.value}&mergePeriods=true`;for(let m in l)h=h+`&layerIds=${l[m]}`;const p=await d.useSendXhr(h);((o=t.activeViewer)==null?void 0:o.content.id)===n&&(M.value=p,A())}catch(s){console.error("TSScrubber: Error fetching annotations:",s),M.value=[],d.useHandleXhrError(s),A()}},A=()=>{H(),ae(),L()},H=()=>{a.nextTick(()=>{const n=T.value;if(!n){console.warn("iCanvas ref is missing, skipping render");return}const e=n.getContext("2d");if(!e){console.warn("2D context is not available");return}e.setTransform(g.value,0,0,g.value,0,0),e.clearRect(0,0,t.cWidth,C.value),E.value=(t.start-t.ts_start)/(t.ts_end-t.ts_start)*t.cWidth+.5|0,$.value=t.duration/(t.ts_end-t.ts_start)*t.cWidth+.5|0,e.fillStyle="rgb(80,80,80)",e.strokeStyle="rgb(80,80,80)",e.strokeRect(E.value+.5,.5,$.value,C.value-1),e.fillRect(E.value-2,C.value/2-5|0,2,10),e.fillRect(E.value+$.value+1,C.value/2-5|0,2,10);const r=E.value+t.cursorLoc*$.value;r>E.value+.5&&(e.strokeStyle="red",e.beginPath(),e.moveTo(r,0),e.lineTo(r,C.value-1),e.stroke())})},L=()=>{a.nextTick(()=>{const n=W.value;if(!n){console.warn("segmentsCanvas ref is missing, skipping renderSegments");return}const e=n.getContext("2d");if(!e){console.warn("Unable to get 2D context for segmentsCanvas, skipping renderSegments");return}e.setTransform(g.value,0,0,g.value,0,0),e.fillStyle=e.createPattern(F.value,"repeat"),e.clearRect(0,0,t.cWidth,C.value);for(let r=1;r<w.value.length;r+=2){const o=t.cWidth*w.value[r]/5e3,s=t.cWidth*w.value[r+1]/5e3;e.fillRect(o,2,s-o,C.value-6)}})},ae=()=>{const n=j.value;if(!n){console.warn("annotationCanvas ref is missing, skipping renderTimelimeLine");return}const e=n.getContext("2d");if(!e){console.warn("Unable to get 2D context for annotationCanvas, skipping renderTimelimeLine");return}e.setTransform(g.value,0,0,g.value,0,0),e.clearRect(0,0,t.cWidth,G.value);const r=t.ts_start,o=t.ts_end,s=M.value;let l=0;const i=0,b=Math.floor((G.value-2)/Object.keys(s).length-i),h=v.viewerAnnotations;let p="rgb(0,0,0)";for(const m in s)if(s.hasOwnProperty(m)){for(let S=0;S<h.length;S++)if(h[S].id===parseInt(m)){l=S,p=h[S].color;break}Se(e,r,o,i,b,s[m],l,p)}},Se=(n,e,r,o,s,l,i,b)=>{a.nextTick(()=>{n.setTransform(g.value,0,0,g.value,0,0),n.fillStyle=b;for(let h=0;h<l.length;h++)if(l[h].value>0){const p=(l[h].start-e)/(r-e)*t.cWidth;let S=(l[h].end-e)/(r-e)*t.cWidth-p;S<1&&(S=1);const x=1+i*(s-1+o)+i;n.fillRect(p,x,S,s)}})},_e=()=>{const n=document.createElement("canvas"),e=n.getContext("2d",{antialias:!0}),r="rgb(220,220,220)",o=5,s=o,l=o,i=10;return n.width=s,n.height=l,e.fillStyle=r,e.beginPath(),e.moveTo(0,l*(1/i)),e.lineTo(s*(1/i),0),e.lineTo(0,0),e.lineTo(0,l*(1/i)),e.fill(),e.beginPath(),e.moveTo(s,l*(1/i)),e.lineTo(s*(1/i),l),e.lineTo(0,l),e.lineTo(0,l*((i-1)/i)),e.lineTo(s*((i-1)/i),0),e.lineTo(s,0),e.lineTo(s,l*(1/i)),e.fill(),e.beginPath(),e.moveTo(s,l*((i-1)/i)),e.lineTo(s*((i-1)/i),l),e.lineTo(s,l),e.lineTo(s,l*((i-1)/i)),e.fill(),n};return a.onMounted(()=>{y.value=new Array(5e3),y.value=y.value.fill(0,0,4999),g.value=de(),F.value=_e(),H()}),u({getAnnotations:B,initSegmentSpans:te,render:A,renderViewPort:H,renderSegments:L,renderTimelimeLine:ae,resetComponentState:Y,resetSegmentState:X,clearCanvases:Z}),(n,e)=>(a.openBlock(),a.createElementBlock("div",We,[a.createElementVNode("div",Ee,[a.createElementVNode("div",null,a.toDisplayString(oe.value),1),a.createElementVNode("div",null,a.toDisplayString(le.value),1),a.createElementVNode("div",null,a.toDisplayString(ie.value),1)]),a.createElementVNode("div",Ae,[a.createElementVNode("div",Pe,[a.createElementVNode("div",{id:"canvasWrap",ref_key:"canvasWrap",ref:k},[a.createElementVNode("canvas",{id:"segmentsCanvas",class:"canvas",ref_key:"segmentsCanvas",ref:W,width:D(f.cWidth,g.value,0),height:D(C.value-2,g.value,0),style:a.normalizeStyle(Q.value)},null,12,Ne),a.createElementVNode("canvas",{id:"annotationCanvas",class:"canvas",ref_key:"annotationCanvas",ref:j,width:D(f.cWidth,g.value,0),height:D(C.value-2,g.value,0),style:a.normalizeStyle(Q.value)},null,12,Me),a.createElementVNode("canvas",{id:"iCanvas",class:"canvas",ref_key:"iCanvas",ref:T,width:D(f.cWidth,g.value,0),height:D(C.value,g.value,0),onClick:e[0]||(e[0]=(...r)=>n._onTap&&n._onTap(...r)),onMousemove:fe,onMousedown:he,onMouseup:ge,onMouseenter:me,onMouseout:pe,style:a.normalizeStyle(ce.value)},null,44,Re)],512)])])]))}},Ve=d._export_sfc(De,[["__scopeId","data-v-595fa722"]]);exports.default=Ve;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { inject as Ne, ref as v, computed as D, watch as $, nextTick as N, onMounted as Ie, createElementBlock as Ue, openBlock as $e, createElementVNode as x, toDisplayString as K, normalizeStyle as Q } from "vue";
|
|
2
|
-
import { _ as ve, a as me, b as Y, c as Oe, d as de, e as je, f as Le, k as Xe, g as Be, h as He, u as ge, i as fe, j as he } from "./index-
|
|
2
|
+
import { _ as ve, a as me, b as Y, c as Oe, d as de, e as je, f as Le, k as Xe, g as Be, h as He, u as ge, i as fe, j as he } from "./index-BsH36ax4.js";
|
|
3
3
|
function pe(d, c, l) {
|
|
4
4
|
return function() {
|
|
5
5
|
for (var t = [], S = 0, u = d, k = 0; k < c.length || S < arguments.length; ) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, onUnmounted, readonly, reactive, computed, watch, inject, onMounted, createElementBlock, openBlock, createElementVNode, renderSlot, normalizeStyle, defineAsyncComponent, nextTick, createVNode, withCtx, unref } from "vue";
|
|
2
2
|
import { storeToRefs } from "pinia";
|
|
3
|
-
import { n as nth, b as _curry2, d as _xfBase, l as _reduced, e as _dispatchable, m as commonjsGlobal, o as getDefaultExportFromCjs, u as useToken, p as propOr, g as _export_sfc, h as createViewerStore, q as propEq } from "./index-
|
|
3
|
+
import { n as nth, b as _curry2, d as _xfBase, l as _reduced, e as _dispatchable, m as commonjsGlobal, o as getDefaultExportFromCjs, u as useToken, p as propOr, g as _export_sfc, h as createViewerStore, q as propEq } from "./index-BsH36ax4.js";
|
|
4
4
|
var head = /* @__PURE__ */ nth(0), XFind = /* @__PURE__ */ (function() {
|
|
5
5
|
function f(c, v) {
|
|
6
6
|
this.xf = v, this.f = c, this.found = !1;
|
|
@@ -5216,7 +5216,7 @@ const _hoisted_1$1 = { class: "timeseries-plot-canvas" }, _hoisted_2$1 = ["width
|
|
|
5216
5216
|
],
|
|
5217
5217
|
setup(f, { expose: c, emit: v }) {
|
|
5218
5218
|
const l = defineAsyncComponent(
|
|
5219
|
-
() => import("./TSAnnotationCanvas-
|
|
5219
|
+
() => import("./TSAnnotationCanvas-DErBDH0Y.js")
|
|
5220
5220
|
), a = f, i = v, e = inject("viewerStore", () => createViewerStore("default"), !0), { viewerChannels: t, viewerAnnotations: r, viewerActiveTool: n, viewerSelectedChannels: d } = storeToRefs(e), s = ref(null), u = ref(null), o = ref(null), h = ref(null), m = ref(null), R = ref(null);
|
|
5221
5221
|
reactive({});
|
|
5222
5222
|
const y = ref(0), g = ref(0), S = ref(0), x = ref(1), _ = ref(!1), N = ref(!1), z = ref("pointer");
|