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.6 KiB
1 lines
4.6 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 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:"EsBarchartNormal",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:"今年"}},z=(n,u)=>{const{grid:E,title:G,legend:K,tooltip:y,xAxis:x,yAxis:N,codeConfig:q,timeAxisFormatter:m,completeDatas:w,timeCompare:e,dataShowTypes:X,legendNameType:Z,renderMode:ee}=u,te=oe.bind({timeCompare:e,timeAxisFormatter:m}),I=document.querySelector(`.chart-${o.element.id}`);if(I){i.value||(i.value=ae(I,null,{renderer:ee}));const M=n.info,p=Array.isArray(n.values)?n.values:n,R=n.param;if(p&&M&&R){let v=[];w&&(v=ne(R,M,p));let c=[],F=[],t=[],A=null;if(p.length>0){const T=U(p,"thingCode");for(const B in T){const $=U(T[B],"attrKey"),Q=Object.keys($).length;for(const Y in $){let s=$[Y];const L=se(M,B,Y,X,Z,s);if(F.push(L),!A){const d=s[0],r=s[s.length-1];d.ts>r.ts&&(s=s.reverse());const g=f(+d.ts),b=f(+r.ts),C=g.diff(b,"day"),D=g.diff(b,"month");A=re.bind({months:D,days:C,timeAxisFormatter:m,timeCompare:w&&e})}if(w&&v.length>0)if(e){const d=le(v,e),r={},g=d.prev.map((l,V)=>{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[V]=!0;const h=s.find(j=>+j.ts===l);return h&&h.val||0}}),b=d.curr.map((l,V)=>{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 h=s.find(j=>+j.ts===l);return h&&h.val||0}}else if(r[V]){const a=s.find(h=>+h.ts===l);return a&&a.val||0}});let C="",D="";Q>1?(C=`${L}(${k[e].prev})`,D=`${L}(${k[e].curr})`):Q===1&&(C=`${k[e].prev}`,D=`${k[e].curr}`),F.push(C),F.push(D),c.push({name:C,type:"bar",stack:o.options.stack?"total":!1,data:g.filter(Boolean)}),c.push({name:D,type:"bar",stack:o.options.stack?"total":!1,data:b.filter(Boolean)})}else{const d=v.map(r=>{t.push(r);const g=s.find(b=>+b.ts===r);return g&&g.val||0});c.push({name:L,type:"bar",stack:o.options.stack?"total":!1,data:d})}else{const d=s.map(r=>(t.push(+r.ts),r.val));c.push({name:L,type:"bar",stack:o.options.stack?"total":!1,data:d})}}}}else F=["测试图例"],t=[1,2,3,4,5,6,7,8],c=[{type:"bar",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:A},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:c};H.color=["#4992FFFF","#7CFFB2FF","#FDDD60FF","#FF6E76FF","#58D9F9FF","#05C091FF"];const S=new Function("option","datas","instance","echarts",q)(W(H),p,i.value,J);i.value.setOption(S)}else{const v=o.element.dataSource.legendConfig||[{dataField:"data1",legend:"legend1"},{dataField:"data2",legend:"legend2"}],c=[],F=[...new Set(p.map(S=>S.category))],t=[];for(const S of v){const{dataField:T,legend:B}=S;c.push(B),t.push({name:B,type:"bar",stack:o.options.stack?"total":!1,data:p.map($=>$[T])})}const A={...x,axisLabel:{...x.axisLabel},nameLocation:"end",nameGap:5,nameTextStyle:{color:x.nameColor,verticalAlign:"top",lineHeight:28},data:F},_={...K,data:c.filter(Boolean)},O={grid:E,title:G,tooltip:{...y,borderColor:y.backgroundColor,textStyle:{...y.textStyle,align:"left"}},legend:_,xAxis:A,yAxis:N,series:t};O.color=["#4992FFFF","#7CFFB2FF","#FDDD60FF","#FF6E76FF","#58D9F9FF","#05C091FF"];const P=new Function("option","datas","instance","echarts",q)(W(O),p,i.value,J);i.value.setOption(P)}}};return de([()=>o.datasets,()=>o.options],([n,u])=>{n&&me(()=>{z(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 ye(o,i,k,z,n,u){return ue(),Fe("div",{class:ge(`chart-${o.element.id}`),width:"100%",height:"100%"},null,2)}const we=fe(he,[["render",ye]]);export{we as default};
|