UNPKG

@dfsj/echarts

Version:

专业的水文曲线组件或构造函数以及通用的echart二次封装图表

12 lines (10 loc) 4 kB
/** * * @dfsj/echarts: 专业的水文曲线组件或构造函数以及通用的echart二次封装图表 * 版本: v4.0.0-alpha.9 * 作者:yangbo <1747837358@qq.com> * 日期:2026-07-10 17:09:23 * * */ import{createLinearInterpolator as e}from"commons-math-interpolation";import{get as t}from"lodash-es";import{ref as o}from"vue";import"../../utils/index.js";import{buildLegend as n,createTabulationFeature as r}from"../../utils/assemble.js";import i,{TYPE_SYMBOL as s}from"../../config.js";import{toIndex as l,renderAltitudeMark as a}from"../../utils/render.js";import{to as u,min as c,max as m}from"../../utils/tools.js";import f from"./default.js";import{useECharts as v}from"../../hooks/useECharts.js";import{useToolTip as p}from"../../view/useToolTip.js";import{useTable as d}from"../../view/useTable.js";import{useEventListener as g}from"../../hooks/useEventListener.js";import{tryOnUnmounted as h}from"@vueuse/core";import b from"../../utils/assign.js";function j(j,y){var x=v(j),k=x.setOptions,w=x.echarts,E=x.getInstance,T=x.container,C=o(!1),I=p(T),D=I.offset,O=I.content,S=I.open,F=I.close,H=d(),L=(H.open,H.close,H.props),P=H.toggleTable;L.container=T;var W=o(null),X=o([]),Y=o([]),$=o(null),q=g({el:T,name:"click",listener:function(){},isDebounce:!1,wait:0}).removeEvent,z=g({el:T,name:"mouseout",listener:function(){C.value=!1,F()},isDebounce:!1,wait:0}).removeEvent,A=g({el:T,name:"mousemove",listener:function(e){var o=e,n=o.offsetX,r=o.offsetY,i=E(),s=W.value,l=X.value,a=Y.value,c=$.value;if(i&&s&&l.length&&c){var m=i.getWidth(),f=i.getHeight();if(C.value=n>=s.left&&n<=m-s.right&&r>=s.top&&r<=f-s.bottom,C.value){S(),D.x=n+10,D.y=r+10,D.x>m-180&&(D.x-=180),D.y>f-80&&(D.y-=80);var v=i.convertFromPixel({seriesIndex:0},[0,r]),p=a.map(function(e,o){var n=o&&t(c.series[o-1],"lineStyle.color");return'<li>\n <span class="mark" style="background: '.concat(n,'"></span>\n <i>').concat(e,"</i>\n <i>").concat(u(l[o](+v[1])),"</i>\n </li>")}).join("");O.value="<fieldset>".concat(p,"</fieldset>")}else F()}},isDebounce:!1,wait:30}).removeEvent;h(function(){q(),z(),A()});return{setOptions:k,createOptions:function(e){return{}},echarts:w,getInstance:E,container:T,assemble:function(t,o){var u=null!=y&&y.C?b({},f,y.C):f,v=b({},u,o),p=E();if(null!=t){var d;L.value=t,L.chart=p,v.dataset.source=t.source;var g=null===(d=t.indices)||void 0===d?void 0:d.map(function(e){return l(e)});g&&g.length&&g.forEach(function(e){return v.series.push(e)});var h=n(v.series);if(v.legend.data=h.data,v.legend.selected=h.selected,t.points){var j=c(t.source,1),x=m(t.source,1),k=m(t.source,0),w=c(t.source,0),T=(k-w)/1e3,C=(x-j)/1e3,I=(k-w)/3*2,D=t.points.find(function(e){return"current"===e.type});v.series.push(b({renderItem:function(e,t){return a(e,t,D&&D.altitude)},data:t.points.slice().sort(function(e,t){return t.altitude-e.altitude}).map(function(e){var t=e.symbol||s[e.type],o=t?j:x,n=e.altitude,r=o-60*C,i=w+(I-0*T*70);return{value:[o,n,r,i,r-20*C,i,e.label||e.name,t,e.level]}})},v.$mark))}v.toolbox.feature.myTabulation=r(P);try{var O=t.dimensions||["水位(m)","流量(m³/s)"];W.value=v.grid,X.value=O.map(function(o,n){return n?e(t.source.map(function(e){return e[0]}),t.source.map(function(e){return e[n]})):function(e){return e}}),Y.value=t.dimensions||["水位(m)","流量(m³/s)"],$.value=v,v.tooltip.formatter=function(e){var t,o,n=null==e||null===(t=e.value)||void 0===t?void 0:t[7],r=null==e||null===(o=e.value)||void 0===o?void 0:o[6];if("exception"===n)return'<article class="tooltip">\n <fieldset>\n <legend style="color: '.concat(i.markColor[4],'">').concat(r,"</legend> \n </fieldset>\n </article>")}}catch(e){console.error("[useStageflow] tooltip binding error:",e)}}return v},toggleTable:P}}export{j as useStageflow};