You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
4.5 KiB
1 lines
4.5 KiB
import{i as ne,e as J}from"./index-Csvj-veb.js";import{d as p}from"./dayjs.min-tKPc2Ebd.js";import{t as ae,c as oe,g as U,a as se,x as re,s as le}from"./utils-BnHQDKCA.js";import{c as W}from"./cloneDeep-C6NKQlMO.js";import{d as ie,Y as ce,t as de,Q as me,v as pe,p as ue,o as fe,b as Fe,k as ge}from"./index-bVOhw2NF.js";import"./_initCloneObject-K-Y0ueWp.js";import"./_baseEach-BwxcRWC6.js";import"./_getTag-BJ2nhJXz.js";import"./get-BuNGRF3A.js";import"./toString-eibgRg41.js";import"./_baseFor-mOzdmxoL.js";const he=ie({name:"EsLinechartNormal",components:{},props:{options:{type:Object,default:()=>({})},datasets:{type:[Array,Object,String],default:()=>[]},eventData:{type:[String,Boolean,Number],default:""},element:{type:Object,default:()=>({})}},setup(u){const l=ce(null),A={day:{prev:"昨日",curr:"今日"},month:{prev:"上月",curr:"当月"},year:{prev:"去年",curr:"今年"}},z=(a,f)=>{const{grid:E,title:G,legend:K,tooltip:y,xAxis:x,yAxis:N,codeConfig:q,timeAxisFormatter:d,completeDatas:w,timeCompare:e,dataShowTypes:X,legendNameType:Z,renderMode:ee}=f,te=ae.bind({timeCompare:e,timeAxisFormatter:d}),I=document.querySelector(`.chart-${u.element.id}`);if(I){l.value||(l.value=ne(I,null,{renderer:ee}));const M=a.info,m=Array.isArray(a.values)?a.values:a,R=a.param;if(m&&M&&R){let v=[];w&&(v=oe(R,M,m));let i=[],F=[],t=[],S=null;if(m.length>0){const T=U(m,"thingCode");for(const B in T){const L=U(T[B],"attrKey"),Q=Object.keys(L).length;for(const Y in L){let o=L[Y];const k=se(M,B,Y,X,Z,o);if(F.push(k),!S){const c=o[0],s=o[o.length-1];c.ts>s.ts&&(o=o.reverse());const g=p(+c.ts),C=p(+s.ts),b=g.diff(C,"day"),D=g.diff(C,"month");S=re.bind({months:D,days:b,timeAxisFormatter:d,timeCompare:w&&e})}if(w&&v.length>0)if(e){const c=le(v,e),s={},g=c.prev.map((r,V)=>{let n=null;if(e==="day"?n=p(r).format(d||"HH:mm"):e==="month"?n=p(r).format(d||"DD"):e==="year"&&(n=p(r).format(d||"MM")),!t.includes(n)){t.push(n),s[V]=!0;const h=o.find(j=>+j.ts===r);return h&&h.val||0}return null}),C=c.curr.map((r,V)=>{if(t.length===0){let n=null;if(e==="day"?n=p(r).format(d||"HH:mm"):e==="month"?n=p(r).format(d||"DD"):e==="year"&&(n=p(r).format(d||"MM")),!t.includes(n)){t.push(n);const h=o.find(j=>+j.ts===r);return h&&h.val||0}}else{if(s[V]){const n=o.find(h=>+h.ts===r);return n&&n.val||0}return null}return null});let b="",D="";Q>1?(b=`${k}(${A[e].prev})`,D=`${k}(${A[e].curr})`):Q===1&&(b=`${A[e].prev}`,D=`${A[e].curr}`),F.push(b),F.push(D),i.push({name:b,type:"line",data:g.filter(Boolean)}),i.push({name:D,type:"line",data:C.filter(Boolean)})}else{const c=v.map(s=>{t.push(s);const g=o.find(C=>+C.ts===s);return g&&g.val||0});i.push({name:k,type:"line",data:c})}else{const c=o.map(s=>(t.push(+s.ts),s.val));i.push({name:k,type:"line",data:c})}}}}else F=["测试图例"],t=[1,2,3,4,5,6,7,8],i=[{type:"line",name:"测试图例",data:[100,80,60,40,20,10,5,0]}];t=[...new Set(t)].sort();const _={...K,data:F.filter(Boolean)},O={...x,axisLabel:{...x.axisLabel,formatter:w&&e?null:S},nameLocation:"end",nameGap:5,nameTextStyle:{color:x.nameColor,verticalAlign:"top",lineHeight:28},data:t},H={grid:E,title:G,tooltip:{...y,formatter:te,borderColor:y.backgroundColor,textStyle:{...y.textStyle,align:"left"}},legend:_,xAxis:O,yAxis:N,series:i};H.color=["#4992FFFF","#7CFFB2FF","#FDDD60FF","#FF6E76FF","#58D9F9FF","#05C091FF"];const $=new Function("option","datas","instance","echarts",q)(W(H),m,l.value,J);l.value.setOption($)}else{const v=u.element.dataSource.legendConfig||[{dataField:"data1",legend:"legend1"},{dataField:"data2",legend:"legend2"}],i=[],F=[...new Set(m.map($=>$.category))],t=[];for(const $ of v){const{dataField:T,legend:B}=$;i.push(B),t.push({name:B,type:"line",data:m.map(L=>L[T])})}const S={...x,axisLabel:{...x.axisLabel},nameLocation:"end",nameGap:5,nameTextStyle:{color:x.nameColor,verticalAlign:"top",lineHeight:28},data:F},_={...K,data:i.filter(Boolean)},O={grid:E,title:G,tooltip:{...y,borderColor:y.backgroundColor,textStyle:{...y.textStyle,align:"left"}},legend:_,xAxis:S,yAxis:N,series:t};O.color=["#4992FFFF","#7CFFB2FF","#FDDD60FF","#FF6E76FF","#58D9F9FF","#05C091FF"];const P=new Function("option","datas","instance","echarts",q)(W(O),m,l.value,J);l.value.setOption(P)}}};return de([()=>u.datasets,()=>u.options],([a,f])=>{a&&me(()=>{z(a,f)})},{immediate:!0,deep:!0}),pe(()=>{const a=new ResizeObserver(()=>{l.value.resize()}),f=document.querySelector(`.chart-${u.element.id}`);f&&a.observe(f)}),{myChart:l}}});function ye(u,l,A,z,a,f){return fe(),Fe("div",{class:ge(`chart-${u.element.id}`),width:"100%",height:"100%"},null,2)}const we=ue(he,[["render",ye]]);export{we as default};
|