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