UNPKG

@dfsj/echarts

Version:

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

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