@devtable/dashboard 13.36.3 → 13.36.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,5 +4,5 @@ type Props = {
|
|
|
4
4
|
totalPages: number;
|
|
5
5
|
width: number;
|
|
6
6
|
};
|
|
7
|
-
export declare const HeatmapPagination: (props: Props) => import('./react/jsx-runtime').JSX.Element |
|
|
7
|
+
export declare const HeatmapPagination: (props: Props) => import('./react/jsx-runtime').JSX.Element | null;
|
|
8
8
|
export {};
|
package/dist/dashboard.es.js
CHANGED
|
@@ -9579,7 +9579,7 @@ class lc {
|
|
|
9579
9579
|
}), this.instanceRegistry.clear(), this.factoryRegistry.clear();
|
|
9580
9580
|
}
|
|
9581
9581
|
}
|
|
9582
|
-
const mf = "13.36.
|
|
9582
|
+
const mf = "13.36.4", JS = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9583
9583
|
__proto__: null,
|
|
9584
9584
|
version: mf
|
|
9585
9585
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -16115,15 +16115,12 @@ const vT = {
|
|
|
16115
16115
|
return /* @__PURE__ */ r.jsx(el, { size: "xs", value: e, onChange: (s) => {
|
|
16116
16116
|
t(Number(s.currentTarget.value));
|
|
16117
16117
|
}, data: i });
|
|
16118
|
-
}, wT = (e) => {
|
|
16119
|
-
|
|
16120
|
-
|
|
16121
|
-
|
|
16122
|
-
|
|
16123
|
-
|
|
16124
|
-
zIndex: 2
|
|
16125
|
-
}, children: e.width > 600 ? /* @__PURE__ */ r.jsx(_T, { ...e }) : /* @__PURE__ */ r.jsx(jT, { ...e }) });
|
|
16126
|
-
};
|
|
16118
|
+
}, wT = (e) => e.totalPages <= 1 ? null : /* @__PURE__ */ r.jsx(R, { sx: {
|
|
16119
|
+
position: "absolute",
|
|
16120
|
+
top: "calc(1rem + 5px)",
|
|
16121
|
+
right: "calc(1rem + 5px)",
|
|
16122
|
+
zIndex: 2
|
|
16123
|
+
}, children: e.width > 600 ? /* @__PURE__ */ r.jsx(_T, { ...e }) : /* @__PURE__ */ r.jsx(jT, { ...e }) });
|
|
16127
16124
|
function ST(e) {
|
|
16128
16125
|
const t = $t(e.x_axis.axisLabel.formatter), n = $t(e.y_axis.axisLabel.formatter);
|
|
16129
16126
|
return {
|
package/dist/dashboard.umd.js
CHANGED
|
@@ -88,7 +88,7 @@ Check the top-level render call using <`+N+">.")}return A}}function Rg(C,A){{if(
|
|
|
88
88
|
${Object.entries(t).map(([s,i])=>`const ${s} = '${i}';`).join(`
|
|
89
89
|
`)}
|
|
90
90
|
return ${e};
|
|
91
|
-
`)(n)}catch(s){return console.error(s),console.log(e),e}}function Ys(e,t,n,s){const i=C_(t,s);return e.replaceAll(/(\{\{([^{\}]+(?=}))\}\})/g,(...l)=>{const c=l[2];if(!c)return c;const u=i[c];if(u)return u;const d=S_(c);return k_(d,i,n)})}function T_(e,t){const n=bc.decode(t);n!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:n}),console.groupEnd())}async function D_({query:e,name:t,payload:n,additionals:s},i){if(!e.sql)return[];const{type:a,key:l,sql:c,pre_process:u,post_process:d}=e,p=Mi(c,n),h=Ym({sql:p,pre_process:u}),f=bc.encode(h);T_(h,f);let x=await Yt.query(i)({type:a,key:l,query:f,...s},{params:{name:t}});return x=Km(d,x,fo(n)),x}async function I_({type:e,key:t,configString:n,name:s,additionals:i},a){try{return await Yt.httpDataSourceQuery(a)({type:e,key:t,query:n,...i},{params:{name:s}})}catch(l){if(Wt.isCancel(l))throw l;return console.error(l),l}}async function go(){try{return(await Yt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function Vp(){try{return(await Yt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class Np{constructor(t){q(this,"rootRef");this.rootRef=re.observable({current:t})}async deleteItem(t){re.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?re.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(v.isObject(n))re.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else re.runInAction(()=>{v.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,s){return re.reaction(()=>this.getValueFromRoot(t),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:v.get(s,"fireImmediately",!1)})}}class M_{constructor(){q(this,"channels",new Map);q(this,"globalChannel",new yc)}getChannel(t){const n=this.channels.get(t);if(n)return n;const s=new yc;return this.channels.set(t,s),s}}class z_{constructor(t){q(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const n=this.instances.get(t.id);if(n)return n;const s={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new M_,instanceData:new Np(t.viz.conf)};return this.instances.set(t.id,s),s}}function qp(e,t,n,s){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Np({}),colorPalette:{getColor(){return()=>""}},data:t,variables:s}}const E_=e=>{const{panel:t,measure:n,vizManager:s,data:i,variables:a}=e,l=s.resolveComponent(t.viz.type),c=s.getOrCreateInstance(t),u={...qp(c,i,s,a),viewport:{width:n.w,height:n.h}},d=l.viewRender;return r.jsx(d,{context:u,instance:c,...v.omit(e,["panel","vizManager","data"])})},A_=e=>{const{vizManager:t,panel:n,data:s,variables:i}=e,a=t.resolveComponent(n.viz.type),l=t.getOrCreateInstance(n),c={...qp(l,s,t,i)},u=a.configRender;return r.jsx(u,{context:c,instance:l,...v.omit(e,["panel","vizManager","data"])})},$p=(e,t)=>{const n=Rt.bezier(e),s=Rt.bezier(t);return function(i){return i<50?n(i*2/100).hex():s((i-50)*2/100).hex()}},Ks=e=>{const t=Rt.bezier(e);return function(n){return t(n/100).hex()}},P_={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:$p(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},O_={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:$p(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},L_={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:Ks(["#fff7f1","darkred"]),name:"red",category:"sequential"},B_={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:Ks(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},V_={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:Ks(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},N_={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:Ks(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class q_{constructor(t){q(this,"symbol");this.symbol=Symbol(t)}}function hn(e){return new q_(e)}class mo{constructor(){q(this,"parent");q(this,"factoryRegistry",new Map);q(this,"instanceRegistry",new Map)}createScoped(){const t=new mo;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const n=this.factoryRegistry.get(t.symbol);if(n){const s=n(this);return this.instanceRegistry.set(t.symbol,s),s}if(this.parent)return this.parent.get(t)}provideFactory(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,n),this}provideValue(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(t=>{const n=v.get(t,"dispose");v.isFunction(n)&&n.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Fp="13.36.3",$_=Object.freeze(Object.defineProperty({__proto__:null,version:Fp},Symbol.toStringTag,{value:"Module"}));class F_{constructor(t){q(this,"staticColors",new Map);q(this,"interpolations",new Map);t.installedPlugins.forEach(n=>{n.manifest.color.forEach(s=>{this.register(s)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const n=this.encodeColor(t);t.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(n,t)):t.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(n,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class G_{constructor(){q(this,"plugins",new Map);q(this,"vizComponents",new Map);q(this,"factory",{viz:t=>{const n=this.vizComponents.get(t);if(n)return n;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const n of t.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class W_{constructor(){q(this,"migrations",[])}version(t,n){return this.migrations.push({version:t,handler:n}),this}run(t,n,s){var l;if(t.from===t.to)return n;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const i=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),a=v.orderBy(i,"version","asc");if(((l=v.last(a))==null?void 0:l.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return a.reduce((c,u)=>u.handler(c,s),n)}}class De extends W_{constructor(){super(),this.configVersions()}version(t,n){return super.version(t,(s,i)=>({version:t,...n(s,i)}))}async migrate({configData:t,panelModel:n}){const s=await t.getItem(null),i=v.get(s,"version",0),a=this.run({from:i,to:this.VERSION},s,{panelModel:n});await t.setItem(null,a)}async needMigration({configData:t}){const n=await t.getItem(null);return v.get(n,"version",0)<this.VERSION}}const Q=(e,t)=>{const[n,{setFalse:s}]=X.useBoolean(!0),[i,a]=g.useState();g.useEffect(()=>(e.getItem(t).then(c=>{a(c),s()}),e.watchItem(t,c=>{a(c)})));const l=g.useCallback(async c=>{await e.setItem(t,c),a(c)},[e,t]);return{loading:n,value:i,set:l}},ut={top:16,right:16,bottom:16,left:16},Bt=e=>Math.max(0,e-ut.left-ut.right),Vt=e=>Math.max(0,e-ut.top-ut.bottom),Zr=(e,t)=>({width:Bt(e),height:Vt(t)}),dt=({width:e,height:t,children:n})=>r.jsx(o.Box,{pt:ut.top,pr:ut.right,pb:ut.bottom,pl:ut.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:n}),xo={x_axis_data_key:"",y_axis_data_key:"",z_axis_data_key:"",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}};function R_({context:e}){const{value:t}=Q(e.instanceData,"config"),n=e.data,{width:s,height:i}=e.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=v.defaults({},t,xo),h=g.useMemo(()=>cs(n,a),[n,a]),{x:f,y:x,z:b}=g.useMemo(()=>({x:L(a),y:L(l),z:L(c)}),[a,l,c]),{min:_,max:T}=g.useMemo(()=>{const D=v.minBy(h,M=>M[b.columnKey]),z=v.maxBy(h,M=>M[b.columnKey]);return{min:v.get(D,b.columnKey),max:v.get(z,b.columnKey)}},[h,b]),k={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:_,max:T,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:u,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(D=>[D[f.columnKey],D[x.columnKey],D[b.columnKey]])}]};return t?r.jsx(dt,{width:s,height:i,children:r.jsx(Ye,{echarts:Ue,option:k,style:Zr(s,i),notMerge:!0,theme:"merico-light"})}):null}const U=I.observer(g.forwardRef(({label:e,required:t,description:n,value:s,onChange:i,queryID:a,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=rt(),h=g.useMemo(()=>p.dataFieldOptions(s,l,a),[s,l,a]);if(h.length===0){const f=p.explainDataKey(s);return r.jsxs(o.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[r.jsx(o.HoverCard.Target,{children:r.jsx(o.Box,{children:r.jsx(o.TextInput,{label:e,required:t,defaultValue:f.columnKey,readOnly:!0,disabled:!0})})}),r.jsx(o.HoverCard.Dropdown,{children:r.jsxs(o.Group,{position:"left",spacing:0,children:[r.jsx(o.Text,{size:"xs",color:f.queryName?"black":"red",sx:{fontFamily:"monospace"},children:f.queryName??f.queryID}),r.jsx(o.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),r.jsx(o.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:f.columnKey})]})})]})}return r.jsx(o.Select,{ref:d,label:e,description:n,data:h,value:s,onChange:i,required:t,sx:c,maxDropdownHeight:500,...u})}));function Q_({context:e}){const{value:t,set:n}=Q(e.instanceData,"config"),s=v.defaults({},t,xo),{control:i,handleSubmit:a,reset:l}=y.useForm({defaultValues:s});return g.useEffect(()=>{l(s)},[t]),t?r.jsx(o.Stack,{spacing:"xs",children:r.jsxs("form",{onSubmit:a(n),children:[r.jsx(o.Text,{children:"X Axis"}),r.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r.jsx(y.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(y.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>r.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),r.jsx(o.Text,{mt:"lg",children:"Y Axis"}),r.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r.jsx(y.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(y.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>r.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),r.jsx(o.Text,{mt:"lg",children:"Z Axis"}),r.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r.jsx(y.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(y.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>r.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),r.jsx(o.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:r.jsxs(o.Button,{color:"blue",type:"submit",children:[r.jsx(S.IconDeviceFloppy,{size:20}),r.jsx(o.Text,{ml:"md",children:"Save"})]})})]})}):null}const U_=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function Y_(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const s=u=>u&&`${n}.${u}`,{x_axis_data_key:i,y_axis_data_key:a,z_axis_data_key:l,...c}=e;return{...c,x_axis_data_key:s(i),y_axis_data_key:s(a),z_axis_data_key:s(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class K_ extends De{constructor(){super(...arguments);q(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,s)=>{const{config:i}=n;return{...n,version:2,config:Y_(i,s)}})}}const X_={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new K_,name:"bar-3d",viewRender:R_,configRender:Q_,createConfig(){return{version:2,config:v.cloneDeep(xo)}},translation:U_},J_=({disabled:e,value:t,onChange:n})=>{const s=i=>{i&&n(i)};return r.jsxs(o.Box,{sx:{position:"relative"},children:[e&&r.jsx(o.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),r.jsx(gt,{height:"500px",defaultLanguage:"javascript",value:t,onChange:s,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})};function pt({enabled:e,func_content:t}){return(n,s)=>{if(!e)return n;try{return new Function(`return ${t}`)()(n,s)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),n}}}function et(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
91
|
+
`)(n)}catch(s){return console.error(s),console.log(e),e}}function Ys(e,t,n,s){const i=C_(t,s);return e.replaceAll(/(\{\{([^{\}]+(?=}))\}\})/g,(...l)=>{const c=l[2];if(!c)return c;const u=i[c];if(u)return u;const d=S_(c);return k_(d,i,n)})}function T_(e,t){const n=bc.decode(t);n!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:n}),console.groupEnd())}async function D_({query:e,name:t,payload:n,additionals:s},i){if(!e.sql)return[];const{type:a,key:l,sql:c,pre_process:u,post_process:d}=e,p=Mi(c,n),h=Ym({sql:p,pre_process:u}),f=bc.encode(h);T_(h,f);let x=await Yt.query(i)({type:a,key:l,query:f,...s},{params:{name:t}});return x=Km(d,x,fo(n)),x}async function I_({type:e,key:t,configString:n,name:s,additionals:i},a){try{return await Yt.httpDataSourceQuery(a)({type:e,key:t,query:n,...i},{params:{name:s}})}catch(l){if(Wt.isCancel(l))throw l;return console.error(l),l}}async function go(){try{return(await Yt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function Vp(){try{return(await Yt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class Np{constructor(t){q(this,"rootRef");this.rootRef=re.observable({current:t})}async deleteItem(t){re.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?re.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(v.isObject(n))re.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else re.runInAction(()=>{v.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,s){return re.reaction(()=>this.getValueFromRoot(t),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:v.get(s,"fireImmediately",!1)})}}class M_{constructor(){q(this,"channels",new Map);q(this,"globalChannel",new yc)}getChannel(t){const n=this.channels.get(t);if(n)return n;const s=new yc;return this.channels.set(t,s),s}}class z_{constructor(t){q(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const n=this.instances.get(t.id);if(n)return n;const s={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new M_,instanceData:new Np(t.viz.conf)};return this.instances.set(t.id,s),s}}function qp(e,t,n,s){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Np({}),colorPalette:{getColor(){return()=>""}},data:t,variables:s}}const E_=e=>{const{panel:t,measure:n,vizManager:s,data:i,variables:a}=e,l=s.resolveComponent(t.viz.type),c=s.getOrCreateInstance(t),u={...qp(c,i,s,a),viewport:{width:n.w,height:n.h}},d=l.viewRender;return r.jsx(d,{context:u,instance:c,...v.omit(e,["panel","vizManager","data"])})},A_=e=>{const{vizManager:t,panel:n,data:s,variables:i}=e,a=t.resolveComponent(n.viz.type),l=t.getOrCreateInstance(n),c={...qp(l,s,t,i)},u=a.configRender;return r.jsx(u,{context:c,instance:l,...v.omit(e,["panel","vizManager","data"])})},$p=(e,t)=>{const n=Rt.bezier(e),s=Rt.bezier(t);return function(i){return i<50?n(i*2/100).hex():s((i-50)*2/100).hex()}},Ks=e=>{const t=Rt.bezier(e);return function(n){return t(n/100).hex()}},P_={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:$p(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},O_={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:$p(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},L_={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:Ks(["#fff7f1","darkred"]),name:"red",category:"sequential"},B_={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:Ks(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},V_={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:Ks(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},N_={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:Ks(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class q_{constructor(t){q(this,"symbol");this.symbol=Symbol(t)}}function hn(e){return new q_(e)}class mo{constructor(){q(this,"parent");q(this,"factoryRegistry",new Map);q(this,"instanceRegistry",new Map)}createScoped(){const t=new mo;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const n=this.factoryRegistry.get(t.symbol);if(n){const s=n(this);return this.instanceRegistry.set(t.symbol,s),s}if(this.parent)return this.parent.get(t)}provideFactory(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,n),this}provideValue(t,n){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(t=>{const n=v.get(t,"dispose");v.isFunction(n)&&n.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Fp="13.36.4",$_=Object.freeze(Object.defineProperty({__proto__:null,version:Fp},Symbol.toStringTag,{value:"Module"}));class F_{constructor(t){q(this,"staticColors",new Map);q(this,"interpolations",new Map);t.installedPlugins.forEach(n=>{n.manifest.color.forEach(s=>{this.register(s)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const n=this.encodeColor(t);t.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(n,t)):t.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(n,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class G_{constructor(){q(this,"plugins",new Map);q(this,"vizComponents",new Map);q(this,"factory",{viz:t=>{const n=this.vizComponents.get(t);if(n)return n;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const n of t.manifest.viz){if(this.vizComponents.has(n.name))throw new Error(`Viz Component (${n.name}) has been installed before`);this.vizComponents.set(n.name,n)}}get installedPlugins(){return Array.from(this.plugins.values())}}class W_{constructor(){q(this,"migrations",[])}version(t,n){return this.migrations.push({version:t,handler:n}),this}run(t,n,s){var l;if(t.from===t.to)return n;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const i=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),a=v.orderBy(i,"version","asc");if(((l=v.last(a))==null?void 0:l.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return a.reduce((c,u)=>u.handler(c,s),n)}}class De extends W_{constructor(){super(),this.configVersions()}version(t,n){return super.version(t,(s,i)=>({version:t,...n(s,i)}))}async migrate({configData:t,panelModel:n}){const s=await t.getItem(null),i=v.get(s,"version",0),a=this.run({from:i,to:this.VERSION},s,{panelModel:n});await t.setItem(null,a)}async needMigration({configData:t}){const n=await t.getItem(null);return v.get(n,"version",0)<this.VERSION}}const Q=(e,t)=>{const[n,{setFalse:s}]=X.useBoolean(!0),[i,a]=g.useState();g.useEffect(()=>(e.getItem(t).then(c=>{a(c),s()}),e.watchItem(t,c=>{a(c)})));const l=g.useCallback(async c=>{await e.setItem(t,c),a(c)},[e,t]);return{loading:n,value:i,set:l}},ut={top:16,right:16,bottom:16,left:16},Bt=e=>Math.max(0,e-ut.left-ut.right),Vt=e=>Math.max(0,e-ut.top-ut.bottom),Zr=(e,t)=>({width:Bt(e),height:Vt(t)}),dt=({width:e,height:t,children:n})=>r.jsx(o.Box,{pt:ut.top,pr:ut.right,pb:ut.bottom,pl:ut.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:n}),xo={x_axis_data_key:"",y_axis_data_key:"",z_axis_data_key:"",xAxis3D:{type:"value",name:"X Axis Name"},yAxis3D:{type:"value",name:"Y Axis Name"},zAxis3D:{type:"value",name:"Z Axis Name"}};function R_({context:e}){const{value:t}=Q(e.instanceData,"config"),n=e.data,{width:s,height:i}=e.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=v.defaults({},t,xo),h=g.useMemo(()=>cs(n,a),[n,a]),{x:f,y:x,z:b}=g.useMemo(()=>({x:L(a),y:L(l),z:L(c)}),[a,l,c]),{min:_,max:T}=g.useMemo(()=>{const D=v.minBy(h,M=>M[b.columnKey]),z=v.maxBy(h,M=>M[b.columnKey]);return{min:v.get(D,b.columnKey),max:v.get(z,b.columnKey)}},[h,b]),k={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:_,max:T,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:u,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(D=>[D[f.columnKey],D[x.columnKey],D[b.columnKey]])}]};return t?r.jsx(dt,{width:s,height:i,children:r.jsx(Ye,{echarts:Ue,option:k,style:Zr(s,i),notMerge:!0,theme:"merico-light"})}):null}const U=I.observer(g.forwardRef(({label:e,required:t,description:n,value:s,onChange:i,queryID:a,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=rt(),h=g.useMemo(()=>p.dataFieldOptions(s,l,a),[s,l,a]);if(h.length===0){const f=p.explainDataKey(s);return r.jsxs(o.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[r.jsx(o.HoverCard.Target,{children:r.jsx(o.Box,{children:r.jsx(o.TextInput,{label:e,required:t,defaultValue:f.columnKey,readOnly:!0,disabled:!0})})}),r.jsx(o.HoverCard.Dropdown,{children:r.jsxs(o.Group,{position:"left",spacing:0,children:[r.jsx(o.Text,{size:"xs",color:f.queryName?"black":"red",sx:{fontFamily:"monospace"},children:f.queryName??f.queryID}),r.jsx(o.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),r.jsx(o.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:f.columnKey})]})})]})}return r.jsx(o.Select,{ref:d,label:e,description:n,data:h,value:s,onChange:i,required:t,sx:c,maxDropdownHeight:500,...u})}));function Q_({context:e}){const{value:t,set:n}=Q(e.instanceData,"config"),s=v.defaults({},t,xo),{control:i,handleSubmit:a,reset:l}=y.useForm({defaultValues:s});return g.useEffect(()=>{l(s)},[t]),t?r.jsx(o.Stack,{spacing:"xs",children:r.jsxs("form",{onSubmit:a(n),children:[r.jsx(o.Text,{children:"X Axis"}),r.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r.jsx(y.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(y.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>r.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),r.jsx(o.Text,{mt:"lg",children:"Y Axis"}),r.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r.jsx(y.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(y.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>r.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),r.jsx(o.Text,{mt:"lg",children:"Z Axis"}),r.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[r.jsx(y.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(y.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>r.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),r.jsx(o.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:r.jsxs(o.Button,{color:"blue",type:"submit",children:[r.jsx(S.IconDeviceFloppy,{size:20}),r.jsx(o.Text,{ml:"md",children:"Save"})]})})]})}):null}const U_=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function Y_(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const s=u=>u&&`${n}.${u}`,{x_axis_data_key:i,y_axis_data_key:a,z_axis_data_key:l,...c}=e;return{...c,x_axis_data_key:s(i),y_axis_data_key:s(a),z_axis_data_key:s(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class K_ extends De{constructor(){super(...arguments);q(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,s)=>{const{config:i}=n;return{...n,version:2,config:Y_(i,s)}})}}const X_={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new K_,name:"bar-3d",viewRender:R_,configRender:Q_,createConfig(){return{version:2,config:v.cloneDeep(xo)}},translation:U_},J_=({disabled:e,value:t,onChange:n})=>{const s=i=>{i&&n(i)};return r.jsxs(o.Box,{sx:{position:"relative"},children:[e&&r.jsx(o.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),r.jsx(gt,{height:"500px",defaultLanguage:"javascript",value:t,onChange:s,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})};function pt({enabled:e,func_content:t}){return(n,s)=>{if(!e)return n;try{return new Function(`return ${t}`)()(n,s)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),n}}}function et(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
92
92
|
`)}}const Nt=g.forwardRef(({value:e,onChange:t,triggerButtonText:n},s)=>{const{t:i}=j.useTranslation(),[a,{setTrue:l,setFalse:c}]=X.useBoolean(),[u,d]=g.useState(e);g.useEffect(()=>{d(e)},[e]);const p=T=>{d({...u,enabled:T})},h=()=>{c();const{enabled:T,func_content:k}=u,D={enabled:T,func_content:k};d(D),t(D)},f=()=>{c(),d(e)},x=T=>{d(k=>({...k,func_content:T}))},b=()=>{x(et().func_content)},_=n??i("chart.axis.customize_label");return r.jsxs(r.Fragment,{children:[r.jsx(o.Button,{variant:"filled",color:"grape",leftIcon:r.jsx(S.IconMathFunction,{size:16}),mt:24,onClick:l,sx:{flexGrow:0},children:_}),r.jsx(o.Modal,{size:800,title:_,opened:a,onClose:c,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:a&&r.jsxs(o.Stack,{children:[r.jsx(o.Checkbox,{mt:10,label:i("common.enabled"),checked:u.enabled,onChange:T=>p(T.currentTarget.checked)}),r.jsx(J_,{value:u.func_content,onChange:x,disabled:!u.enabled}),r.jsxs(o.Group,{position:"apart",children:[r.jsx(o.Button,{onClick:b,color:"red",leftIcon:r.jsx(S.IconRecycle,{size:20}),children:i("common.actions.reset_to_default")}),r.jsxs(o.Group,{position:"right",children:[r.jsx(o.Button,{onClick:f,variant:"subtle",children:i("common.actions.cancel")}),r.jsx(o.Button,{color:"green",leftIcon:r.jsx(S.IconDeviceFloppy,{size:16}),onClick:h,children:i("common.actions.save")})]})]})]})})]})}),Fn={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1};function Gp(){return v.cloneDeep(Fn)}const Z_=[{lang:"en",resources:{boxplot:{viz_name:"Boxplot Chart",box:"Box",outlier:"Outlier",scatter:"Scatter",click_series:{label:"Click box, scatter or outlier"}}}},{lang:"zh",resources:{boxplot:{viz_name:"箱线图",box:"箱体",outlier:"异常点",scatter:"散点",click_series:{label:"点击箱体、散点或异常点"}}}}],Wp={id:"builtin:echarts:click-echart:series",displayName:"viz.boxplot.click_series.label",nameRender:ej,configRender:H_,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'boxplot'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"Record of 'name', 'min', 'q1', 'median', 'q3', 'max'",valueType:"object"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function H_(e){return r.jsx(r.Fragment,{})}function ej(e){const{t}=j.useTranslation();return r.jsx(o.Text,{children:t("viz.boxplot.click_series.label")})}const Xs=g.forwardRef(({sectionTitle:e,value:t,onChange:n},s)=>{const{t:i,i18n:a}=j.useTranslation(),l=u=>d=>{const p=v.cloneDeep(t);v.set(p,u,d),n(p)},c=g.useMemo(()=>[{label:i("chart.axis.overflow.truncate"),value:"truncate"},{label:i("chart.axis.overflow.break_line"),value:"break"},{label:i("chart.axis.overflow.break_word"),value:"breakAll"}],[a.language]);return r.jsxs(o.Stack,{spacing:0,children:[e&&r.jsx(o.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",labelProps:{color:"dimmed"}}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(o.NumberInput,{label:i("chart.axis.overflow.max_width"),hideControls:!0,value:t.width,onChange:l("width")}),r.jsx(o.Select,{label:i("chart.axis.overflow.label"),data:c,value:t.overflow,onChange:l("overflow")}),r.jsx(o.TextInput,{label:i("chart.axis.overflow.ellipsis"),value:t.ellipsis,disabled:!0})]})]})}),qt=g.forwardRef(({value:e,onChange:t},n)=>{const{t:s}=j.useTranslation(),i=l=>{t({...e,on_axis:l})},a=l=>{t({...e,in_tooltip:l})};return r.jsxs(o.Stack,{ref:n,spacing:0,children:[r.jsx(Xs,{sectionTitle:s("chart.axis.overflow.section_title.on_axis"),value:e.on_axis,onChange:i}),r.jsx(Xs,{sectionTitle:s("chart.axis.overflow.section_title.in_tooltip"),value:e.in_tooltip,onChange:a})]})});function ht(){return{on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}}}function Dt({overflow:e,width:t}){const n={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],s=e==="truncate"?"nowrap":"initial",i={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
|
|
93
93
|
max-width: ${t}px;
|
|
94
94
|
word-break: ${n};
|
|
@@ -176,7 +176,7 @@ Check the top-level render call using <`+N+">.")}return A}}function Rg(C,A){{if(
|
|
|
176
176
|
<table style="width: auto">
|
|
177
177
|
<tbody>${u.join("")}</tbody>
|
|
178
178
|
</table>
|
|
179
|
-
`}}function NC(e,t){return me.getTooltip({trigger:"item",formatter:VC(e,t)})}function qC(e,t){return{grid:{top:0,left:0,right:0,bottom:0},tooltip:NC(e,t),series:LC(e,t)}}function $C(e){return e||(e=Date.now().toString()),{id:e,name:e,level_name_data_key:"",level_value_data_key:"",min:{value:0,enable_value:!1,size:"0%"},max:{value:0,enable_value:!1,size:"100%"},gap:2,axisLabel:{show:!0,position:"inside",overflow:ht()},sort:"descending",orient:"vertical",funnelAlign:"center"}}const Po={series:[$C("Funnel")]};function FC({conf:e,data:t,width:n,height:s}){const i=g.useMemo(()=>qC(e,t),[e,t]);return r.jsx(Ye,{echarts:Ue,option:i,style:{width:n,height:s},notMerge:!0,theme:"merico-light"})}function GC({context:e}){const{value:t}=Q(e.instanceData,"config"),n=g.useMemo(()=>v.defaults({},t,Po),[t]),s=e.data,{width:i,height:a}=e.viewport;return!i||!a?null:r.jsx(dt,{width:i,height:a,children:r.jsx(FC,{width:Bt(i),height:Vt(a),data:s,conf:n})})}const WC=({item:e,control:t,index:n,remove:s})=>{const{t:i,i18n:a}=j.useTranslation(),l=e.min.enable_value,c=e.max.enable_value,{orient:u}=e,d=g.useMemo(()=>({horizontal:[{label:i("chart.label_position.top"),value:"top"},{label:i("chart.label_position.inside_center"),value:"inside"},{label:i("chart.label_position.bottom"),value:"bottom"}],vertical:[{label:i("chart.label_position.left"),value:"left"},{label:i("chart.label_position.inside_left"),value:"insideLeft"},{label:i("chart.label_position.inside_center"),value:"inside"},{label:i("chart.label_position.inside_right"),value:"insideRight"},{label:i("chart.label_position.right"),value:"right"}]}),[a.language]),p=g.useMemo(()=>[{label:i("viz.funnel_chart.sort.ascending"),value:"ascending"},{label:i("viz.funnel_chart.sort.descending"),value:"descending"},{label:i("viz.funnel_chart.sort.none"),value:"0"}],[a.language]);return r.jsxs(o.Stack,{children:[r.jsx(o.Group,{grow:!0,noWrap:!0,children:r.jsx(y.Controller,{name:`series.${n}.name`,control:t,render:({field:h})=>r.jsx(o.TextInput,{label:i("viz.funnel_chart.series_name"),...h})})}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.level_name_data_key`,control:t,render:({field:h})=>r.jsx(U,{label:i("viz.funnel_chart.level_name_field"),...h})}),r.jsx(y.Controller,{name:`series.${n}.level_value_data_key`,control:t,render:({field:h})=>r.jsx(U,{label:i("viz.funnel_chart.level_value_field"),...h})})]}),r.jsx(o.Divider,{mb:-10,mt:10,variant:"dashed",label:i("viz.funnel_chart.funnel_style"),labelPosition:"center"}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.min.value`,control:t,render:({field:h})=>r.jsx(o.NumberInput,{disabled:!l,labelProps:{display:"block"},label:r.jsxs(o.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[r.jsx(o.Text,{children:i("viz.funnel_chart.min_value")}),r.jsx(o.Tooltip,{label:i("viz.funnel_chart.min_value_checkbox_tip"),children:r.jsx(o.Box,{children:r.jsx(y.Controller,{name:`series.${n}.min.enable_value`,control:t,render:({field:f})=>r.jsx(o.Checkbox,{size:"xs",checked:f.value,onChange:x=>f.onChange(x.currentTarget.checked)})})})})]}),...h})}),r.jsx(y.Controller,{name:`series.${n}.min.size`,control:t,render:({field:h})=>r.jsx(o.TextInput,{placeholder:"0%",label:i("viz.funnel_chart.min_size"),...h})})]}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.max.value`,control:t,render:({field:h})=>r.jsx(o.NumberInput,{disabled:!c,labelProps:{display:"block"},label:r.jsxs(o.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[r.jsx(o.Text,{children:i("viz.funnel_chart.max_value")}),r.jsx(o.Tooltip,{label:i("viz.funnel_chart.max_value_checkbox_tip"),children:r.jsx(o.Box,{children:r.jsx(y.Controller,{name:`series.${n}.max.enable_value`,control:t,render:({field:f})=>r.jsx(o.Checkbox,{size:"xs",checked:f.value,onChange:x=>f.onChange(x.currentTarget.checked)})})})})]}),...h})}),r.jsx(y.Controller,{name:`series.${n}.max.size`,control:t,render:({field:h})=>r.jsx(o.TextInput,{placeholder:"100%",label:i("viz.funnel_chart.max_size"),...h})})]}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.orient`,control:t,render:({field:h})=>r.jsx(zn,{...h})}),r.jsx(y.Controller,{name:`series.${n}.sort`,control:t,render:({field:h})=>r.jsx(o.Select,{label:i("viz.funnel_chart.sort.label"),data:p,...h})})]}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.funnelAlign`,control:t,render:({field:h})=>r.jsx(En,{label:i("viz.funnel_chart.align"),disabled:u==="horizontal",...h})}),r.jsx(y.Controller,{name:`series.${n}.gap`,control:t,render:({field:h})=>r.jsx(o.NumberInput,{placeholder:"0, 5, 10...",label:i("viz.funnel_chart.gap"),...h})})]}),r.jsx(o.Divider,{mb:-10,mt:10,variant:"dashed",label:i("chart.label.label_style"),labelPosition:"center"}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.axisLabel.position`,control:t,render:({field:h})=>r.jsx(gr,{label:i("chart.label_position.label"),options:d[u],...h})}),r.jsx(o.Box,{})]}),r.jsx(o.Group,{grow:!0,noWrap:!0,children:r.jsx(y.Controller,{name:`series.${n}.axisLabel.overflow`,control:t,render:({field:h})=>r.jsx(qt,{...h})})})]})},RC=({control:e,watch:t})=>{const{fields:n,append:s,remove:i}=y.useFieldArray({control:e,name:"series"}),a=t("series"),l=n.map((p,h)=>({...p,...a[h]})),c=v.get(l,"0.id"),[u,d]=g.useState(c??null);return g.useEffect(()=>{c&&d(p=>p!==null?p:c)},[c]),r.jsxs(o.Tabs,{value:u,onTabChange:p=>d(p),styles:{panel:{padding:"0px",paddingTop:"6px"}},children:[r.jsxs(o.Tabs.List,{children:[l.map((p,h)=>r.jsx(o.Tabs.Tab,{value:p.id,children:p.name},p.id)),r.jsx(o.Tabs.Tab,{value:"add",disabled:!0,children:r.jsx(o.Tooltip,{label:"todo",children:r.jsx(o.Center,{children:r.jsx(S.IconPlus,{size:18,color:"#228be6"})})})})]}),l.map((p,h)=>r.jsx(o.Tabs.Panel,{value:p.id,children:r.jsx(WC,{item:p,control:e,index:h,remove:i})},p.id))]})};function QC({context:e}){const{value:t,set:n}=Q(e.instanceData,"config"),s=g.useMemo(()=>v.defaultsDeep({},t,Po),[t]),{control:i,handleSubmit:a,watch:l,formState:c,reset:u}=y.useForm({defaultValues:s});return g.useEffect(()=>{u(s)},[s]),r.jsx(o.Stack,{spacing:"xs",children:r.jsxs("form",{onSubmit:a(n),children:[r.jsx(qe,{canSubmit:c.isDirty}),r.jsx(RC,{control:i,watch:l})]})})}const UC=[{lang:"en",resources:{funnel_chart:{viz_name:"Funnel Chart",series_name:"Series Name",level_name_field:"Level Name Field",level_value_field:"Level Value Field",funnel_style:"Funnel Style",min_value:"Min Value",min_value_checkbox_tip:"Check to enable specific min value",max_value:"Max Value",max_value_checkbox_tip:"Check to enable specific max value",min_size:"Min Size",max_size:"Max Size",sort:{label:"Sort",ascending:"Ascending",descending:"Descending",none:"Use original data order"},gap:"Gap",align:"Align"}}},{lang:"zh",resources:{funnel_chart:{viz_name:"漏斗图",series_name:"系列名称",level_name_field:"层名字段",level_value_field:"层值字段",funnel_style:"漏斗样式",min_value:"最小值",min_value_checkbox_tip:"勾选以启用最小值设置",max_value:"最大值",max_value_checkbox_tip:"勾选以启用最大值设置",min_size:"最小尺寸",max_size:"最大尺寸",sort:{label:"排序",ascending:"升序",descending:"降序",none:"依原始数据的顺序"},gap:"间距",align:"对齐"}}}];function YC(e){return{series:e.series.map(t=>{const{min:n,minSize:s,max:i,maxSize:a,...l}=t;return{...l,min:{value:n,use_data_min:!1,size:s},max:{value:i,use_data_max:!1,size:a}}})}}function KC(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const s=l=>l&&`${n}.${l}`,{series:i,...a}=e;return{...a,series:i.map(l=>({...l,level_name_data_key:s(l.level_name_data_key),level_value_data_key:s(l.level_value_data_key)}))}}catch(n){throw console.error("[Migration failed]",n),n}}class XC extends De{constructor(){super(...arguments);q(this,"VERSION",3)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,n=>{const{config:s}=n;return{...n,version:2,config:YC(s)}}),this.version(3,(n,s)=>{const{config:i}=n;return{...n,version:3,config:KC(i,s)}})}}const JC={displayName:"viz.funnel_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new XC,name:"funnel",viewRender:GC,configRender:QC,createConfig:()=>({version:3,config:Po}),translation:UC},ZC=({page:e,setPage:t,totalPages:n})=>r.jsx(o.Pagination,{size:"xs",withControls:!1,siblings:1,color:"gray",value:e,onChange:t,total:n,position:"right"}),HC=({page:e,setPage:t,totalPages:n})=>{const s=g.useMemo(()=>Array.from(new Array(n),(i,a)=>({label:String(a+1),value:String(a+1)})),[n]);return r.jsx(o.NativeSelect,{size:"xs",value:e,onChange:i=>{t(Number(i.currentTarget.value))},data:s})},eS=e=>{if(!(e.totalPages<=1))return r.jsx(o.Box,{sx:{position:"absolute",top:"calc(1rem + 5px)",right:"calc(1rem + 5px)",zIndex:2},children:e.width>600?r.jsx(ZC,{...e}):r.jsx(HC,{...e})})};function tS(e){const t=pt(e.x_axis.axisLabel.formatter),n=pt(e.y_axis.axisLabel.formatter);return{x_axis:t,y_axis:n}}function nS(e){return{heat_block:function(s){if(!e.heat_block.value_formatter)return s;try{return ie(s,e.heat_block.value_formatter)}catch(i){return console.error(i),s}}}}function rS(e){let t=0;return e.x_axis.name&&(t+=20),{show:!0,top:45,left:5,right:5,bottom:t,containLabel:!0,borderColor:"none",backgroundColor:"#E7E7E9",z:1}}function sS(e,t,n){const{heat_block:s}=e;return{type:"heatmap",name:s.name,xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{borderColor:"white",borderWidth:n},data:t,label:s.label,labelLayout:{hideOverlap:!0},z:2}}const iS=e=>ie(e,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function aS({conf:e,labelFormatters:t,valueFormatters:n,dataDict:s,params:i}){const{value:a,dataIndex:l}=i,[c,u,d]=a,p={label:e.x_axis.name?e.x_axis.name:"X Axis",value:t.x_axis(c,l),style:{label:"",value:Dt(e.x_axis.axisLabel.overflow.in_tooltip)}},h={label:e.y_axis.name?e.y_axis.name:"Y Axis",value:t.y_axis(u,l),style:{label:"",value:Dt(e.y_axis.axisLabel.overflow.in_tooltip)}},f={label:e.heat_block.name,value:n.heat_block(d),style:{label:"",value:""}},x=[p,h,f],b=s[`${c}---${u}`];return b&&e.tooltip.metrics.forEach(_=>{const T=L(_.data_key);x.push({label:_.name,value:iS(v.get(b,T.columnKey,"")),style:{label:"",value:""}})}),x}function oS(e,t,n,s){const{x_axis:i,y_axis:a,heat_block:l}=e,c=L(i.data_key),u=L(a.data_key);L(l.data_key);const d=v.keyBy(t[c.queryID],p=>`${p[c.columnKey]}---${p[u.columnKey]}`);return me.getTooltip({formatter:function(p){const f=aS({conf:e,labelFormatters:n,valueFormatters:s,dataDict:d,params:p}).map(b=>`
|
|
179
|
+
`}}function NC(e,t){return me.getTooltip({trigger:"item",formatter:VC(e,t)})}function qC(e,t){return{grid:{top:0,left:0,right:0,bottom:0},tooltip:NC(e,t),series:LC(e,t)}}function $C(e){return e||(e=Date.now().toString()),{id:e,name:e,level_name_data_key:"",level_value_data_key:"",min:{value:0,enable_value:!1,size:"0%"},max:{value:0,enable_value:!1,size:"100%"},gap:2,axisLabel:{show:!0,position:"inside",overflow:ht()},sort:"descending",orient:"vertical",funnelAlign:"center"}}const Po={series:[$C("Funnel")]};function FC({conf:e,data:t,width:n,height:s}){const i=g.useMemo(()=>qC(e,t),[e,t]);return r.jsx(Ye,{echarts:Ue,option:i,style:{width:n,height:s},notMerge:!0,theme:"merico-light"})}function GC({context:e}){const{value:t}=Q(e.instanceData,"config"),n=g.useMemo(()=>v.defaults({},t,Po),[t]),s=e.data,{width:i,height:a}=e.viewport;return!i||!a?null:r.jsx(dt,{width:i,height:a,children:r.jsx(FC,{width:Bt(i),height:Vt(a),data:s,conf:n})})}const WC=({item:e,control:t,index:n,remove:s})=>{const{t:i,i18n:a}=j.useTranslation(),l=e.min.enable_value,c=e.max.enable_value,{orient:u}=e,d=g.useMemo(()=>({horizontal:[{label:i("chart.label_position.top"),value:"top"},{label:i("chart.label_position.inside_center"),value:"inside"},{label:i("chart.label_position.bottom"),value:"bottom"}],vertical:[{label:i("chart.label_position.left"),value:"left"},{label:i("chart.label_position.inside_left"),value:"insideLeft"},{label:i("chart.label_position.inside_center"),value:"inside"},{label:i("chart.label_position.inside_right"),value:"insideRight"},{label:i("chart.label_position.right"),value:"right"}]}),[a.language]),p=g.useMemo(()=>[{label:i("viz.funnel_chart.sort.ascending"),value:"ascending"},{label:i("viz.funnel_chart.sort.descending"),value:"descending"},{label:i("viz.funnel_chart.sort.none"),value:"0"}],[a.language]);return r.jsxs(o.Stack,{children:[r.jsx(o.Group,{grow:!0,noWrap:!0,children:r.jsx(y.Controller,{name:`series.${n}.name`,control:t,render:({field:h})=>r.jsx(o.TextInput,{label:i("viz.funnel_chart.series_name"),...h})})}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.level_name_data_key`,control:t,render:({field:h})=>r.jsx(U,{label:i("viz.funnel_chart.level_name_field"),...h})}),r.jsx(y.Controller,{name:`series.${n}.level_value_data_key`,control:t,render:({field:h})=>r.jsx(U,{label:i("viz.funnel_chart.level_value_field"),...h})})]}),r.jsx(o.Divider,{mb:-10,mt:10,variant:"dashed",label:i("viz.funnel_chart.funnel_style"),labelPosition:"center"}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.min.value`,control:t,render:({field:h})=>r.jsx(o.NumberInput,{disabled:!l,labelProps:{display:"block"},label:r.jsxs(o.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[r.jsx(o.Text,{children:i("viz.funnel_chart.min_value")}),r.jsx(o.Tooltip,{label:i("viz.funnel_chart.min_value_checkbox_tip"),children:r.jsx(o.Box,{children:r.jsx(y.Controller,{name:`series.${n}.min.enable_value`,control:t,render:({field:f})=>r.jsx(o.Checkbox,{size:"xs",checked:f.value,onChange:x=>f.onChange(x.currentTarget.checked)})})})})]}),...h})}),r.jsx(y.Controller,{name:`series.${n}.min.size`,control:t,render:({field:h})=>r.jsx(o.TextInput,{placeholder:"0%",label:i("viz.funnel_chart.min_size"),...h})})]}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.max.value`,control:t,render:({field:h})=>r.jsx(o.NumberInput,{disabled:!c,labelProps:{display:"block"},label:r.jsxs(o.Group,{position:"apart",pr:6,sx:{width:"100%"},children:[r.jsx(o.Text,{children:i("viz.funnel_chart.max_value")}),r.jsx(o.Tooltip,{label:i("viz.funnel_chart.max_value_checkbox_tip"),children:r.jsx(o.Box,{children:r.jsx(y.Controller,{name:`series.${n}.max.enable_value`,control:t,render:({field:f})=>r.jsx(o.Checkbox,{size:"xs",checked:f.value,onChange:x=>f.onChange(x.currentTarget.checked)})})})})]}),...h})}),r.jsx(y.Controller,{name:`series.${n}.max.size`,control:t,render:({field:h})=>r.jsx(o.TextInput,{placeholder:"100%",label:i("viz.funnel_chart.max_size"),...h})})]}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.orient`,control:t,render:({field:h})=>r.jsx(zn,{...h})}),r.jsx(y.Controller,{name:`series.${n}.sort`,control:t,render:({field:h})=>r.jsx(o.Select,{label:i("viz.funnel_chart.sort.label"),data:p,...h})})]}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.funnelAlign`,control:t,render:({field:h})=>r.jsx(En,{label:i("viz.funnel_chart.align"),disabled:u==="horizontal",...h})}),r.jsx(y.Controller,{name:`series.${n}.gap`,control:t,render:({field:h})=>r.jsx(o.NumberInput,{placeholder:"0, 5, 10...",label:i("viz.funnel_chart.gap"),...h})})]}),r.jsx(o.Divider,{mb:-10,mt:10,variant:"dashed",label:i("chart.label.label_style"),labelPosition:"center"}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(y.Controller,{name:`series.${n}.axisLabel.position`,control:t,render:({field:h})=>r.jsx(gr,{label:i("chart.label_position.label"),options:d[u],...h})}),r.jsx(o.Box,{})]}),r.jsx(o.Group,{grow:!0,noWrap:!0,children:r.jsx(y.Controller,{name:`series.${n}.axisLabel.overflow`,control:t,render:({field:h})=>r.jsx(qt,{...h})})})]})},RC=({control:e,watch:t})=>{const{fields:n,append:s,remove:i}=y.useFieldArray({control:e,name:"series"}),a=t("series"),l=n.map((p,h)=>({...p,...a[h]})),c=v.get(l,"0.id"),[u,d]=g.useState(c??null);return g.useEffect(()=>{c&&d(p=>p!==null?p:c)},[c]),r.jsxs(o.Tabs,{value:u,onTabChange:p=>d(p),styles:{panel:{padding:"0px",paddingTop:"6px"}},children:[r.jsxs(o.Tabs.List,{children:[l.map((p,h)=>r.jsx(o.Tabs.Tab,{value:p.id,children:p.name},p.id)),r.jsx(o.Tabs.Tab,{value:"add",disabled:!0,children:r.jsx(o.Tooltip,{label:"todo",children:r.jsx(o.Center,{children:r.jsx(S.IconPlus,{size:18,color:"#228be6"})})})})]}),l.map((p,h)=>r.jsx(o.Tabs.Panel,{value:p.id,children:r.jsx(WC,{item:p,control:e,index:h,remove:i})},p.id))]})};function QC({context:e}){const{value:t,set:n}=Q(e.instanceData,"config"),s=g.useMemo(()=>v.defaultsDeep({},t,Po),[t]),{control:i,handleSubmit:a,watch:l,formState:c,reset:u}=y.useForm({defaultValues:s});return g.useEffect(()=>{u(s)},[s]),r.jsx(o.Stack,{spacing:"xs",children:r.jsxs("form",{onSubmit:a(n),children:[r.jsx(qe,{canSubmit:c.isDirty}),r.jsx(RC,{control:i,watch:l})]})})}const UC=[{lang:"en",resources:{funnel_chart:{viz_name:"Funnel Chart",series_name:"Series Name",level_name_field:"Level Name Field",level_value_field:"Level Value Field",funnel_style:"Funnel Style",min_value:"Min Value",min_value_checkbox_tip:"Check to enable specific min value",max_value:"Max Value",max_value_checkbox_tip:"Check to enable specific max value",min_size:"Min Size",max_size:"Max Size",sort:{label:"Sort",ascending:"Ascending",descending:"Descending",none:"Use original data order"},gap:"Gap",align:"Align"}}},{lang:"zh",resources:{funnel_chart:{viz_name:"漏斗图",series_name:"系列名称",level_name_field:"层名字段",level_value_field:"层值字段",funnel_style:"漏斗样式",min_value:"最小值",min_value_checkbox_tip:"勾选以启用最小值设置",max_value:"最大值",max_value_checkbox_tip:"勾选以启用最大值设置",min_size:"最小尺寸",max_size:"最大尺寸",sort:{label:"排序",ascending:"升序",descending:"降序",none:"依原始数据的顺序"},gap:"间距",align:"对齐"}}}];function YC(e){return{series:e.series.map(t=>{const{min:n,minSize:s,max:i,maxSize:a,...l}=t;return{...l,min:{value:n,use_data_min:!1,size:s},max:{value:i,use_data_max:!1,size:a}}})}}function KC(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const s=l=>l&&`${n}.${l}`,{series:i,...a}=e;return{...a,series:i.map(l=>({...l,level_name_data_key:s(l.level_name_data_key),level_value_data_key:s(l.level_value_data_key)}))}}catch(n){throw console.error("[Migration failed]",n),n}}class XC extends De{constructor(){super(...arguments);q(this,"VERSION",3)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,n=>{const{config:s}=n;return{...n,version:2,config:YC(s)}}),this.version(3,(n,s)=>{const{config:i}=n;return{...n,version:3,config:KC(i,s)}})}}const JC={displayName:"viz.funnel_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new XC,name:"funnel",viewRender:GC,configRender:QC,createConfig:()=>({version:3,config:Po}),translation:UC},ZC=({page:e,setPage:t,totalPages:n})=>r.jsx(o.Pagination,{size:"xs",withControls:!1,siblings:1,color:"gray",value:e,onChange:t,total:n,position:"right"}),HC=({page:e,setPage:t,totalPages:n})=>{const s=g.useMemo(()=>Array.from(new Array(n),(i,a)=>({label:String(a+1),value:String(a+1)})),[n]);return r.jsx(o.NativeSelect,{size:"xs",value:e,onChange:i=>{t(Number(i.currentTarget.value))},data:s})},eS=e=>e.totalPages<=1?null:r.jsx(o.Box,{sx:{position:"absolute",top:"calc(1rem + 5px)",right:"calc(1rem + 5px)",zIndex:2},children:e.width>600?r.jsx(ZC,{...e}):r.jsx(HC,{...e})});function tS(e){const t=pt(e.x_axis.axisLabel.formatter),n=pt(e.y_axis.axisLabel.formatter);return{x_axis:t,y_axis:n}}function nS(e){return{heat_block:function(s){if(!e.heat_block.value_formatter)return s;try{return ie(s,e.heat_block.value_formatter)}catch(i){return console.error(i),s}}}}function rS(e){let t=0;return e.x_axis.name&&(t+=20),{show:!0,top:45,left:5,right:5,bottom:t,containLabel:!0,borderColor:"none",backgroundColor:"#E7E7E9",z:1}}function sS(e,t,n){const{heat_block:s}=e;return{type:"heatmap",name:s.name,xAxisId:"main-x-axis",yAxisIndex:0,datasetIndex:0,itemStyle:{borderColor:"white",borderWidth:n},data:t,label:s.label,labelLayout:{hideOverlap:!0},z:2}}const iS=e=>ie(e,{output:"number",trimMantissa:!0,mantissa:2,absolute:!1});function aS({conf:e,labelFormatters:t,valueFormatters:n,dataDict:s,params:i}){const{value:a,dataIndex:l}=i,[c,u,d]=a,p={label:e.x_axis.name?e.x_axis.name:"X Axis",value:t.x_axis(c,l),style:{label:"",value:Dt(e.x_axis.axisLabel.overflow.in_tooltip)}},h={label:e.y_axis.name?e.y_axis.name:"Y Axis",value:t.y_axis(u,l),style:{label:"",value:Dt(e.y_axis.axisLabel.overflow.in_tooltip)}},f={label:e.heat_block.name,value:n.heat_block(d),style:{label:"",value:""}},x=[p,h,f],b=s[`${c}---${u}`];return b&&e.tooltip.metrics.forEach(_=>{const T=L(_.data_key);x.push({label:_.name,value:iS(v.get(b,T.columnKey,"")),style:{label:"",value:""}})}),x}function oS(e,t,n,s){const{x_axis:i,y_axis:a,heat_block:l}=e,c=L(i.data_key),u=L(a.data_key);L(l.data_key);const d=v.keyBy(t[c.queryID],p=>`${p[c.columnKey]}---${p[u.columnKey]}`);return me.getTooltip({formatter:function(p){const f=aS({conf:e,labelFormatters:n,valueFormatters:s,dataDict:d,params:p}).map(b=>`
|
|
180
180
|
<tr>
|
|
181
181
|
<th style="text-align: right;">
|
|
182
182
|
<div style="${b.style.label}">${b.label}</div>
|