Files

1 line
1.6 KiB
JavaScript

import{G as e,V as t,rt as n}from"./common.js";import{t as r}from"./geoCoordinate.js";import{createElementBlock as i,defineComponent as a,mergeProps as o,onMounted as s,openBlock as c,toHandlers as l,unref as u,useTemplateRef as d}from"vue";import{cloneDeep as f}from"lodash-es";var p=a({name:`MfMapLine`,__name:`index`,props:{chart:{type:Object,required:!0},chartContain:{type:Object,required:!0}},setup(a){let p=a,m=d(`mfMapLineRef`),{commonEvents:h}=n(p.chart),g=r;e(p.chart.options.geo,p.chart.options),s(()=>{t(m.value,p.chart,p.chartContain,void 0,v,{renderer:`canvas`})});let _=e=>{let t=[],n=[],r=new Set,i=0,a=e&&e.length>1&&e[1].length>2?e[1][2]:0,o=(e,n)=>{if(r.has(e)){let r=t.findIndex(t=>t.name===e);t[r].value[2]+=n,i<t[r].value[2]&&(i=t[r].value[2]),a>t[r].value[2]&&(a=t[r].value[2])}else t.push({name:e,value:[...g[e],n]}),i<n&&(i=n),a>n&&(a=n),r.add(e)};for(let[t,r]of e.entries())if(t>0){let e=g[r[0]],t=g[r[1]],i=Number.parseFloat(r[2])||0;n.push({fromName:r[0],toName:r[1],coords:[e,t],value:i}),o(r[1],i),o(r[0],0)}return{lineDataArray:n,rippleDataArray:t,max:i,min:a}};function v(e,t){let n={...f(p.chart.options),backgroundColor:`transparent`},r=_(t.source);n.series[0].data=r.lineDataArray,n.series[0].tooltip={trigger:`item`,formatter:e=>`${e.data.fromName} → ${e.data.toName}<br>值: ${e.data.value}`},n.series.length>1&&(n.series[1].data=r.rippleDataArray,n.series[1].tooltip={trigger:`item`,formatter:e=>`${e.name}<br>合计: ${e.value[2]}`}),n.visualMap.min=r.min,n.visualMap.max=r.max,e?.setOption(n,!0)}return(e,t)=>(c(),i(`div`,o({ref_key:`mfMapLineRef`,ref:m,style:{width:`100%`,height:`100%`}},l(u(h),!0)),null,16))}});export{p as default};