@devtable/dashboard 14.3.0 → 14.3.1
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.
- package/dist/dashboard.es.js +2 -2
- package/dist/dashboard.umd.js +2 -2
- package/dist/stats.html +1 -1
- package/dist/version.json +2 -2
- package/package.json +1 -1
package/dist/dashboard.es.js
CHANGED
|
@@ -6545,7 +6545,7 @@ class Sl {
|
|
|
6545
6545
|
}), this.instanceRegistry.clear(), this.factoryRegistry.clear();
|
|
6546
6546
|
}
|
|
6547
6547
|
}
|
|
6548
|
-
const pm = "14.3.
|
|
6548
|
+
const pm = "14.3.1", k0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6549
6549
|
__proto__: null,
|
|
6550
6550
|
version: pm
|
|
6551
6551
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -15499,7 +15499,7 @@ const q2 = ({
|
|
|
15499
15499
|
});
|
|
15500
15500
|
t(o);
|
|
15501
15501
|
};
|
|
15502
|
-
return /* @__PURE__ */ n.jsxs(te, { withArrow: !0, shadow: "md", width: 400,
|
|
15502
|
+
return /* @__PURE__ */ n.jsxs(te, { withArrow: !0, shadow: "md", width: 400, styles: {
|
|
15503
15503
|
item: {
|
|
15504
15504
|
overflowX: "hidden"
|
|
15505
15505
|
}
|
package/dist/dashboard.umd.js
CHANGED
|
@@ -89,7 +89,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
89
89
|
${Object.entries(t).map(([s,i])=>`const ${s} = '${i}';`).join(`
|
|
90
90
|
`)}
|
|
91
91
|
return ${e};
|
|
92
|
-
`)(r)}catch(s){return console.error(s),console.log(e),e}}function fs(e,t,r,s){const i=dy(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=py(c);return hy(d,i,r)})}function gy(e,t){const r=Sl.decode(t);r!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:r}),console.groupEnd())}async function fy({query:e,name:t,payload:r,additionals:s},i){if(!e.sql)return[];const{type:o,key:l,sql:c,pre_process:u,post_process:d}=e,p=Xs(c,r),h=tx({sql:p,pre_process:u}),x=Sl.encode(h);gy(h,x);let b=await gt.query(i)({type:o,key:l,query:x,...s},{params:{name:t}});return b=nx(d,b,ba(r)),b}async function xy({type:e,key:t,configString:r,name:s,additionals:i},o){try{return await gt.httpDataSourceQuery(o)({type:e,key:t,query:r,...i},{params:{name:s}})}catch(l){if(pt.isCancel(l))throw l;return console.error(l),l}}async function my({key:e,configString:t,name:r,additionals:s},i){try{return await gt.mericoMetricQuery(i)({type:"merico_metric_system",key:e,query:t,...s},{params:{name:r}})}catch(o){throw o}}async function ya(){try{return(await gt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function vd(){try{return(await gt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class _d{constructor(t){N(this,"rootRef");this.rootRef=te.observable({current:t})}async deleteItem(t){te.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?te.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(v.isObject(r))te.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else te.runInAction(()=>{v.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,s){return te.reaction(()=>this.getValueFromRoot(t),(i,o)=>{r(i,o)},{requiresObservable:!0,fireImmediately:v.get(s,"fireImmediately",!1)})}}class by{constructor(){N(this,"channels",new Map);N(this,"globalChannel",new Tl)}getChannel(t){const r=this.channels.get(t);if(r)return r;const s=new Tl;return this.channels.set(t,s),s}}class yy{constructor(t){N(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 r=this.instances.get(t.id);if(r)return r;const s={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new by,instanceData:new _d(t.viz.conf)};return this.instances.set(t.id,s),s}}function jd(e,t,r,s){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new _d({}),colorPalette:{getColor(){return()=>""}},data:t,variables:s}}const vy=e=>{const{panel:t,measure:r,vizManager:s,data:i,variables:o}=e,l=s.resolveComponent(t.viz.type),c=s.getOrCreateInstance(t),u={...jd(c,i,s,o),viewport:{width:r.w,height:r.h}},d=l.viewRender;return n.jsx(d,{context:u,instance:c,...v.omit(e,["panel","vizManager","data"])})},_y=e=>{const{vizManager:t,panel:r,data:s,variables:i}=e,o=t.resolveComponent(r.viz.type),l=t.getOrCreateInstance(r),c={...jd(l,s,t,i)},u=o.configRender;return n.jsx(u,{context:c,instance:l,...v.omit(e,["panel","vizManager","data"])})},wd=(e,t)=>{const r=Dt.bezier(e),s=Dt.bezier(t);return function(i){return i<50?r(i*2/100).hex():s((i-50)*2/100).hex()}},xs=e=>{const t=Dt.bezier(e);return function(r){return t(r/100).hex()}},jy={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:wd(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},wy={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:wd(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Cy={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:xs(["#fff7f1","darkred"]),name:"red",category:"sequential"},Sy={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:xs(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ty={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:xs(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},ky={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:xs(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Dy{constructor(t){N(this,"symbol");this.symbol=Symbol(t)}}function Jt(e){return new Dy(e)}class va{constructor(){N(this,"parent");N(this,"factoryRegistry",new Map);N(this,"instanceRegistry",new Map)}createScoped(){const t=new va;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 r=this.factoryRegistry.get(t.symbol);if(r){const s=r(this);return this.instanceRegistry.set(t.symbol,s),s}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=v.get(t,"dispose");v.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Cd="14.3.0",zy=Object.freeze(Object.defineProperty({__proto__:null,version:Cd},Symbol.toStringTag,{value:"Module"}));class Iy{constructor(t){N(this,"staticColors",new Map);N(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(s=>{this.register(s)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&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(r,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 My{constructor(){N(this,"plugins",new Map);N(this,"vizComponents",new Map);N(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;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 r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Ey{constructor(){N(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,s){var l;if(t.from===t.to)return r;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),o=v.orderBy(i,"version","asc");if(((l=v.last(o))==null?void 0:l.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,u)=>u.handler(c,s),r)}}class ke extends Ey{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(s,i)=>({version:t,...r(s,i)}))}async migrate({configData:t,panelModel:r}){const s=await t.getItem(null),i=v.get(s,"version",0),o=this.run({from:i,to:this.VERSION},s,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return v.get(r,"version",0)<this.VERSION}}const W=(e,t)=>{const[r,{setFalse:s}]=U.useBoolean(!0),[i,o]=f.useState();f.useEffect(()=>(e.getItem(t).then(c=>{o(c),s()}),e.watchItem(t,c=>{o(c)})));const l=f.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:r,value:i,set:l}},st={top:16,right:16,bottom:16,left:16},Et=e=>Math.max(0,e-st.left-st.right),Pt=e=>Math.max(0,e-st.top-st.bottom),zr=(e,t)=>({width:Et(e),height:Pt(t)}),at=({width:e,height:t,children:r})=>n.jsx(a.Box,{pt:st.top,pr:st.right,pb:st.bottom,pl:st.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:r}),_a={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 Py({context:e}){const{value:t}=W(e.instanceData,"config"),r=e.data,{width:s,height:i}=e.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=v.defaults({},t,_a),h=f.useMemo(()=>qr(r,o),[r,o]),{x,y:b,z:m}=f.useMemo(()=>({x:O(o),y:O(l),z:O(c)}),[o,l,c]),{min:j,max:D}=f.useMemo(()=>{const z=v.minBy(h,M=>M[m.columnKey]),I=v.maxBy(h,M=>M[m.columnKey]);return{min:v.get(z,m.columnKey),max:v.get(I,m.columnKey)}},[h,m]),T={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:j,max:D,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(z=>[z[x.columnKey],z[b.columnKey],z[m.columnKey]])}]};return t?n.jsx(at,{width:s,height:i,children:n.jsx(Qe,{echarts:Fe,option:T,style:zr(s,i),notMerge:!0,theme:"merico-light"})}):null}const R=k.observer(f.forwardRef(({label:e,required:t,description:r,value:s,onChange:i,queryID:o,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=Pe(),h=f.useMemo(()=>p.dataFieldOptionGroups(s,l,o),[s,l,o]);if(h.length===0){const x=p.explainDataKey(s);return n.jsxs(a.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[n.jsx(a.HoverCard.Target,{children:n.jsx(a.Box,{children:n.jsx(a.TextInput,{label:e,required:t,defaultValue:x.columnKey,readOnly:!0,disabled:!0})})}),n.jsx(a.HoverCard.Dropdown,{children:n.jsxs(a.Group,{justify:"flex-start",gap:0,children:[n.jsx(a.Text,{size:"xs",c:x.queryName?"black":"red",ff:"monospace",children:x.queryName??x.queryID}),n.jsx(a.Text,{size:"xs",c:"black",ff:"monospace",children:"."}),n.jsx(a.Text,{size:"xs",c:"red",ff:"monospace",children:x.columnKey})]})})]})}return n.jsx(a.Select,{ref:d,label:e,description:r,data:h,value:s,onChange:Se(i),required:t,sx:c,maxDropdownHeight:500,...u})}));function Ay({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),s=v.defaults({},t,_a),{control:i,handleSubmit:o,reset:l}=y.useForm({defaultValues:s});return f.useEffect(()=>{l(s)},[t]),t?n.jsx(a.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:o(r),children:[n.jsx(a.Text,{size:"sm",children:"X Axis"}),n.jsxs(a.Group,{justify:"space-between",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n.jsx(y.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>n.jsx(R,{label:"Data Field",required:!0,...c})}),n.jsx(y.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>n.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n.jsx(a.Text,{mt:"lg",size:"sm",children:"Y Axis"}),n.jsxs(a.Group,{justify:"space-between",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n.jsx(y.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>n.jsx(R,{label:"Data Field",required:!0,...c})}),n.jsx(y.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>n.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n.jsx(a.Text,{mt:"lg",size:"sm",children:"Z Axis"}),n.jsxs(a.Group,{justify:"space-between",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n.jsx(y.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>n.jsx(R,{label:"Data Field",required:!0,...c})}),n.jsx(y.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>n.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n.jsx(a.Group,{justify:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:n.jsxs(a.Button,{color:"blue",type:"submit",children:[n.jsx(C.IconDeviceFloppy,{size:20}),n.jsx(a.Text,{ml:"md",size:"sm",children:"Save"})]})})]})}):null}const Ly=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function Oy(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const s=u=>u&&`${r}.${u}`,{x_axis_data_key:i,y_axis_data_key:o,z_axis_data_key:l,...c}=e;return{...c,x_axis_data_key:s(i),y_axis_data_key:s(o),z_axis_data_key:s(l)}}catch(r){throw console.error("[Migration failed]",r),r}}class Vy extends ke{constructor(){super(...arguments);N(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,s)=>{const{config:i}=r;return{...r,version:2,config:Oy(i,s)}})}}const By={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new Vy,name:"bar-3d",viewRender:Py,configRender:Ay,createConfig(){return{version:2,config:v.cloneDeep(_a)}},translation:Ly},qy=({disabled:e,value:t,onChange:r})=>{const s=i=>{i&&r(i)};return n.jsxs(a.Box,{sx:{position:"relative"},children:[e&&n.jsx(a.Overlay,{backgroundOpacity:.6,color:"#fff",zIndex:5,blur:2}),n.jsx(ht,{height:"500px",defaultLanguage:"javascript",value:t,onChange:s,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})};function ot({enabled:e,func_content:t}){return(r,s)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,s)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),r}}}function Xe(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
92
|
+
`)(r)}catch(s){return console.error(s),console.log(e),e}}function fs(e,t,r,s){const i=dy(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=py(c);return hy(d,i,r)})}function gy(e,t){const r=Sl.decode(t);r!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:r}),console.groupEnd())}async function fy({query:e,name:t,payload:r,additionals:s},i){if(!e.sql)return[];const{type:o,key:l,sql:c,pre_process:u,post_process:d}=e,p=Xs(c,r),h=tx({sql:p,pre_process:u}),x=Sl.encode(h);gy(h,x);let b=await gt.query(i)({type:o,key:l,query:x,...s},{params:{name:t}});return b=nx(d,b,ba(r)),b}async function xy({type:e,key:t,configString:r,name:s,additionals:i},o){try{return await gt.httpDataSourceQuery(o)({type:e,key:t,query:r,...i},{params:{name:s}})}catch(l){if(pt.isCancel(l))throw l;return console.error(l),l}}async function my({key:e,configString:t,name:r,additionals:s},i){try{return await gt.mericoMetricQuery(i)({type:"merico_metric_system",key:e,query:t,...s},{params:{name:r}})}catch(o){throw o}}async function ya(){try{return(await gt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function vd(){try{return(await gt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class _d{constructor(t){N(this,"rootRef");this.rootRef=te.observable({current:t})}async deleteItem(t){te.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?te.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(v.isObject(r))te.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else te.runInAction(()=>{v.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,s){return te.reaction(()=>this.getValueFromRoot(t),(i,o)=>{r(i,o)},{requiresObservable:!0,fireImmediately:v.get(s,"fireImmediately",!1)})}}class by{constructor(){N(this,"channels",new Map);N(this,"globalChannel",new Tl)}getChannel(t){const r=this.channels.get(t);if(r)return r;const s=new Tl;return this.channels.set(t,s),s}}class yy{constructor(t){N(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 r=this.instances.get(t.id);if(r)return r;const s={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new by,instanceData:new _d(t.viz.conf)};return this.instances.set(t.id,s),s}}function jd(e,t,r,s){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new _d({}),colorPalette:{getColor(){return()=>""}},data:t,variables:s}}const vy=e=>{const{panel:t,measure:r,vizManager:s,data:i,variables:o}=e,l=s.resolveComponent(t.viz.type),c=s.getOrCreateInstance(t),u={...jd(c,i,s,o),viewport:{width:r.w,height:r.h}},d=l.viewRender;return n.jsx(d,{context:u,instance:c,...v.omit(e,["panel","vizManager","data"])})},_y=e=>{const{vizManager:t,panel:r,data:s,variables:i}=e,o=t.resolveComponent(r.viz.type),l=t.getOrCreateInstance(r),c={...jd(l,s,t,i)},u=o.configRender;return n.jsx(u,{context:c,instance:l,...v.omit(e,["panel","vizManager","data"])})},wd=(e,t)=>{const r=Dt.bezier(e),s=Dt.bezier(t);return function(i){return i<50?r(i*2/100).hex():s((i-50)*2/100).hex()}},xs=e=>{const t=Dt.bezier(e);return function(r){return t(r/100).hex()}},jy={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:wd(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},wy={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:wd(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Cy={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:xs(["#fff7f1","darkred"]),name:"red",category:"sequential"},Sy={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:xs(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Ty={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:xs(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},ky={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:xs(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Dy{constructor(t){N(this,"symbol");this.symbol=Symbol(t)}}function Jt(e){return new Dy(e)}class va{constructor(){N(this,"parent");N(this,"factoryRegistry",new Map);N(this,"instanceRegistry",new Map)}createScoped(){const t=new va;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 r=this.factoryRegistry.get(t.symbol);if(r){const s=r(this);return this.instanceRegistry.set(t.symbol,s),s}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=v.get(t,"dispose");v.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Cd="14.3.1",zy=Object.freeze(Object.defineProperty({__proto__:null,version:Cd},Symbol.toStringTag,{value:"Module"}));class Iy{constructor(t){N(this,"staticColors",new Map);N(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(s=>{this.register(s)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&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(r,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 My{constructor(){N(this,"plugins",new Map);N(this,"vizComponents",new Map);N(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;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 r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Ey{constructor(){N(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,s){var l;if(t.from===t.to)return r;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),o=v.orderBy(i,"version","asc");if(((l=v.last(o))==null?void 0:l.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,u)=>u.handler(c,s),r)}}class ke extends Ey{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(s,i)=>({version:t,...r(s,i)}))}async migrate({configData:t,panelModel:r}){const s=await t.getItem(null),i=v.get(s,"version",0),o=this.run({from:i,to:this.VERSION},s,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return v.get(r,"version",0)<this.VERSION}}const W=(e,t)=>{const[r,{setFalse:s}]=U.useBoolean(!0),[i,o]=f.useState();f.useEffect(()=>(e.getItem(t).then(c=>{o(c),s()}),e.watchItem(t,c=>{o(c)})));const l=f.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:r,value:i,set:l}},st={top:16,right:16,bottom:16,left:16},Et=e=>Math.max(0,e-st.left-st.right),Pt=e=>Math.max(0,e-st.top-st.bottom),zr=(e,t)=>({width:Et(e),height:Pt(t)}),at=({width:e,height:t,children:r})=>n.jsx(a.Box,{pt:st.top,pr:st.right,pb:st.bottom,pl:st.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:r}),_a={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 Py({context:e}){const{value:t}=W(e.instanceData,"config"),r=e.data,{width:s,height:i}=e.viewport,{x_axis_data_key:o,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=v.defaults({},t,_a),h=f.useMemo(()=>qr(r,o),[r,o]),{x,y:b,z:m}=f.useMemo(()=>({x:O(o),y:O(l),z:O(c)}),[o,l,c]),{min:j,max:D}=f.useMemo(()=>{const z=v.minBy(h,M=>M[m.columnKey]),I=v.maxBy(h,M=>M[m.columnKey]);return{min:v.get(z,m.columnKey),max:v.get(I,m.columnKey)}},[h,m]),T={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:j,max:D,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(z=>[z[x.columnKey],z[b.columnKey],z[m.columnKey]])}]};return t?n.jsx(at,{width:s,height:i,children:n.jsx(Qe,{echarts:Fe,option:T,style:zr(s,i),notMerge:!0,theme:"merico-light"})}):null}const R=k.observer(f.forwardRef(({label:e,required:t,description:r,value:s,onChange:i,queryID:o,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=Pe(),h=f.useMemo(()=>p.dataFieldOptionGroups(s,l,o),[s,l,o]);if(h.length===0){const x=p.explainDataKey(s);return n.jsxs(a.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[n.jsx(a.HoverCard.Target,{children:n.jsx(a.Box,{children:n.jsx(a.TextInput,{label:e,required:t,defaultValue:x.columnKey,readOnly:!0,disabled:!0})})}),n.jsx(a.HoverCard.Dropdown,{children:n.jsxs(a.Group,{justify:"flex-start",gap:0,children:[n.jsx(a.Text,{size:"xs",c:x.queryName?"black":"red",ff:"monospace",children:x.queryName??x.queryID}),n.jsx(a.Text,{size:"xs",c:"black",ff:"monospace",children:"."}),n.jsx(a.Text,{size:"xs",c:"red",ff:"monospace",children:x.columnKey})]})})]})}return n.jsx(a.Select,{ref:d,label:e,description:r,data:h,value:s,onChange:Se(i),required:t,sx:c,maxDropdownHeight:500,...u})}));function Ay({context:e}){const{value:t,set:r}=W(e.instanceData,"config"),s=v.defaults({},t,_a),{control:i,handleSubmit:o,reset:l}=y.useForm({defaultValues:s});return f.useEffect(()=>{l(s)},[t]),t?n.jsx(a.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:o(r),children:[n.jsx(a.Text,{size:"sm",children:"X Axis"}),n.jsxs(a.Group,{justify:"space-between",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n.jsx(y.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>n.jsx(R,{label:"Data Field",required:!0,...c})}),n.jsx(y.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>n.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n.jsx(a.Text,{mt:"lg",size:"sm",children:"Y Axis"}),n.jsxs(a.Group,{justify:"space-between",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n.jsx(y.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>n.jsx(R,{label:"Data Field",required:!0,...c})}),n.jsx(y.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>n.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n.jsx(a.Text,{mt:"lg",size:"sm",children:"Z Axis"}),n.jsxs(a.Group,{justify:"space-between",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[n.jsx(y.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>n.jsx(R,{label:"Data Field",required:!0,...c})}),n.jsx(y.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>n.jsx(a.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),n.jsx(a.Group,{justify:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:n.jsxs(a.Button,{color:"blue",type:"submit",children:[n.jsx(C.IconDeviceFloppy,{size:20}),n.jsx(a.Text,{ml:"md",size:"sm",children:"Save"})]})})]})}):null}const Ly=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function Oy(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const s=u=>u&&`${r}.${u}`,{x_axis_data_key:i,y_axis_data_key:o,z_axis_data_key:l,...c}=e;return{...c,x_axis_data_key:s(i),y_axis_data_key:s(o),z_axis_data_key:s(l)}}catch(r){throw console.error("[Migration failed]",r),r}}class Vy extends ke{constructor(){super(...arguments);N(this,"VERSION",2)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,(r,s)=>{const{config:i}=r;return{...r,version:2,config:Oy(i,s)}})}}const By={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new Vy,name:"bar-3d",viewRender:Py,configRender:Ay,createConfig(){return{version:2,config:v.cloneDeep(_a)}},translation:Ly},qy=({disabled:e,value:t,onChange:r})=>{const s=i=>{i&&r(i)};return n.jsxs(a.Box,{sx:{position:"relative"},children:[e&&n.jsx(a.Overlay,{backgroundOpacity:.6,color:"#fff",zIndex:5,blur:2}),n.jsx(ht,{height:"500px",defaultLanguage:"javascript",value:t,onChange:s,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:e}})]})};function ot({enabled:e,func_content:t}){return(r,s)=>{if(!e)return r;try{return new Function(`return ${t}`)()(r,s)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),r}}}function Xe(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
93
93
|
`)}}const At=f.forwardRef(({value:e,onChange:t,triggerButtonText:r},s)=>{const{t:i}=_.useTranslation(),[o,{setTrue:l,setFalse:c}]=U.useBoolean(),[u,d]=f.useState(e);f.useEffect(()=>{d(e)},[e]);const p=D=>{d({...u,enabled:D})},h=()=>{c();const{enabled:D,func_content:T}=u,z={enabled:D,func_content:T};d(z),t(z)},x=()=>{c(),d(e)},b=D=>{d(T=>({...T,func_content:D}))},m=()=>{b(Xe().func_content)},j=r??i("chart.axis.customize_label");return n.jsxs(n.Fragment,{children:[n.jsx(a.Button,{variant:"filled",color:"grape",leftSection:n.jsx(C.IconMathFunction,{size:16}),mt:24,onClick:l,sx:{flexGrow:0},children:j}),n.jsx(a.Modal,{size:800,title:j,opened:o,onClose:c,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:o&&n.jsxs(a.Stack,{children:[n.jsx(a.Checkbox,{mt:10,label:i("common.enabled"),checked:u.enabled,onChange:D=>p(D.currentTarget.checked)}),n.jsx(qy,{value:u.func_content,onChange:b,disabled:!u.enabled}),n.jsxs(a.Group,{justify:"space-between",children:[n.jsx(a.Button,{onClick:m,color:"red",leftSection:n.jsx(C.IconRecycle,{size:20}),children:i("common.actions.reset_to_default")}),n.jsxs(a.Group,{justify:"flex-end",children:[n.jsx(a.Button,{onClick:x,variant:"subtle",children:i("common.actions.cancel")}),n.jsx(a.Button,{color:"green",leftSection:n.jsx(C.IconDeviceFloppy,{size:16}),onClick:h,children:i("common.actions.save")})]})]})]})})]})}),Tn={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1};function Sd(){return v.cloneDeep(Tn)}const Ny=[{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:"点击箱体、散点或异常点"}}}}],Td={id:"builtin:echarts:click-echart:series",displayName:"viz.boxplot.click_series.label",nameRender:Gy,configRender:$y,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 $y(e){return n.jsx(n.Fragment,{})}function Gy(e){const{t}=_.useTranslation();return n.jsx(a.Text,{size:"sm",children:t("viz.boxplot.click_series.label")})}const ms=f.forwardRef(({sectionTitle:e,value:t,onChange:r},s)=>{const{t:i,i18n:o}=_.useTranslation(),l=u=>d=>{const p=v.cloneDeep(t);v.set(p,u,d),r(p)},c=f.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"}],[o.language]);return n.jsxs(a.Stack,{gap:0,children:[e&&n.jsx(a.Divider,{mb:-5,mt:5,variant:"dotted",label:e,labelPosition:"right",styles:{label:{color:"dimmed"}}}),n.jsxs(a.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(a.NumberInput,{label:i("chart.axis.overflow.max_width"),hideControls:!0,value:t.width,onChange:l("width")}),n.jsx(a.Select,{label:i("chart.axis.overflow.label"),data:c,value:t.overflow,onChange:l("overflow")}),n.jsx(a.TextInput,{label:i("chart.axis.overflow.ellipsis"),value:t.ellipsis,disabled:!0})]})]})}),Lt=f.forwardRef(({value:e,onChange:t},r)=>{const{t:s}=_.useTranslation(),i=l=>{t({...e,on_axis:l})},o=l=>{t({...e,in_tooltip:l})};return n.jsxs(a.Stack,{ref:r,gap:0,children:[n.jsx(ms,{sectionTitle:s("chart.axis.overflow.section_title.on_axis"),value:e.on_axis,onChange:i}),n.jsx(ms,{sectionTitle:s("chart.axis.overflow.section_title.in_tooltip"),value:e.in_tooltip,onChange:o})]})});function lt(){return{on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}}}function Ct({overflow:e,width:t}){const r={truncate:"initial",break:"break-all",breakAll:"break-word"}[e],s=e==="truncate"?"nowrap":"initial",i={truncate:"ellipsis",break:"clip",breakAll:"clip"}[e];return`
|
|
94
94
|
max-width: ${t}px;
|
|
95
95
|
word-break: ${r};
|
|
@@ -236,7 +236,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
236
236
|
};
|
|
237
237
|
}
|
|
238
238
|
`,Z0=()=>{const{t:e,i18n:t}=_.useTranslation(),[r,s]=f.useState(!1),i=f.useMemo(()=>H0(e("viz.pareto_chart.line_80_20.param_section_note_1"),e("viz.pareto_chart.line_80_20.param_section_note_2")),[t.language]);return n.jsxs(n.Fragment,{children:[n.jsx(a.Button,{variant:"subtle",size:"compact-sm",onClick:()=>s(o=>!o),children:e(r?"common.actions.close":"viz.pareto_chart.line_80_20.click_to_see_params")}),n.jsx(a.Collapse,{in:r,children:n.jsx(zt.CodeHighlight,{language:"typescript",withCopyButton:!1,code:i})})]})};function J0({control:e,watch:t}){const{t:r}=_.useTranslation();return t(["markLine"]),n.jsxs(a.Stack,{children:[n.jsx(a.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:"markLine.color",control:e,render:({field:s})=>n.jsx(Ze,{label:r("chart.color.label"),...s})})}),n.jsxs(a.Stack,{gap:4,children:[n.jsx(y.Controller,{name:"markLine.label_template",control:e,render:({field:s})=>n.jsx(a.Textarea,{autosize:!0,minRows:2,maxRows:4,label:r("viz.pareto_chart.line_80_20.label_template"),sx:{flex:1},...s})}),n.jsx(Z0,{})]})]})}function e1({control:e,index:t,watch:r,variableOptions:s,yAxisOptions:i}){const{t:o}=_.useTranslation(),l=r(`reference_lines.${t}.orientation`);return n.jsxs(a.Stack,{my:0,p:0,sx:{position:"relative"},children:[n.jsxs(a.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:c})=>n.jsx(a.TextInput,{label:o("common.name"),placeholder:o("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:c})=>n.jsx(a.Select,{label:o("common.data_field"),required:!0,data:s,sx:{flex:1},...c})})]}),n.jsx(y.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:c})=>n.jsx(a.TextInput,{label:o("chart.content_template.label"),placeholder:o("chart.content_template.hint"),sx:{flex:1},...c})}),n.jsxs(a.Group,{grow:!0,children:[n.jsx(a.Stack,{children:n.jsx(y.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:c})=>n.jsx(yn,{label:o("chart.orientation.label"),sx:{flex:1},...c})})}),l==="horizontal"&&n.jsx(y.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:c,onChange:u,...d}})=>n.jsx(a.Select,{label:o("chart.y_axis.label"),data:i,disabled:i.length===0,...d,value:(c==null?void 0:c.toString())??"",onChange:p=>{if(!p){u(0);return}u(Number(p))},sx:{flex:1}})})]}),n.jsx(a.Divider,{mb:-10,mt:10,variant:"dashed",label:o("chart.style.label"),labelPosition:"center"}),n.jsxs(a.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:c})=>n.jsx(Hn,{sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:c})=>n.jsx(a.NumberInput,{label:o("chart.series.line.line_width"),min:1,max:10,sx:{flexGrow:1},...c})})]}),n.jsx(a.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:c})=>n.jsx(Ze,{label:o("chart.color.label"),...c})})})]})}function t1({control:e,watch:t,variables:r}){const{t:s}=_.useTranslation(),i=()=>({name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,yAxisIndex:0}),o=(d,p)=>{const h=d.name.trim();return h||p+1},l=f.useMemo(()=>r.map(d=>({label:d.name,value:d.name})),[r]),c=t(["bar.name","line.name"]),u=f.useMemo(()=>c.map((d,p)=>({label:d,value:p.toString()})),[c]);return n.jsx(we,{control:e,watch:t,name:"reference_lines",getItem:i,addButtonText:s("chart.reference_line.add"),deleteButtonText:s("chart.reference_line.delete"),renderTabName:o,children:({field:d,index:p})=>n.jsx(e1,{control:e,index:p,watch:t,variableOptions:l,yAxisOptions:u})})}function n1({control:e,watch:t}){const{t:r}=_.useTranslation();return t(["x_axis"]),n.jsxs(a.Stack,{children:[n.jsxs(a.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.name",control:e,render:({field:s})=>n.jsx(a.TextInput,{label:r("common.name"),sx:{flex:1},...s})}),n.jsx(y.Controller,{name:"x_axis.data_key",control:e,render:({field:s})=>n.jsx(R,{label:r("common.data_field"),required:!0,sx:{flex:1},...s})})]}),n.jsx(a.Divider,{mb:-15,label:r("chart.axis.tick_label"),labelPosition:"center"}),n.jsxs(a.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:s})=>n.jsx(en,{sx:{width:"48%"},...s})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:s})=>n.jsx(At,{...s})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:s})=>n.jsx(Lt,{...s})})]})}function r1({control:e,watch:t}){const{t:r}=_.useTranslation();return t(["data_key"]),n.jsx(a.Stack,{children:n.jsx(y.Controller,{name:"data_key",control:e,render:({field:s})=>n.jsx(R,{label:r("chart.y_axis.y_axis_data_field"),required:!0,sx:{flex:1},...s})})})}function s1({context:e}){const{t}=_.useTranslation(),{value:r,set:s}=W(e.instanceData,"config"),{variables:i}=e,o=f.useMemo(()=>v.defaults({},r,$a),[r]),{control:l,handleSubmit:c,watch:u,formState:d,reset:p}=y.useForm({defaultValues:o});return f.useEffect(()=>{p(o)},[o]),u(["x_axis","data_key","bar","line","dataZoom"]),n.jsxs("form",{onSubmit:c(s),children:[n.jsx(Be,{canSubmit:d.isDirty}),n.jsxs(a.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[n.jsxs(a.Tabs.List,{children:[n.jsx(a.Tabs.Tab,{value:"X Axis",children:t("chart.x_axis.label")}),n.jsx(a.Tabs.Tab,{value:"Y Axis",children:t("chart.y_axis.label")}),n.jsx(a.Tabs.Tab,{value:"Bar",children:t("chart.series.bar.label")}),n.jsx(a.Tabs.Tab,{value:"Line",children:t("chart.series.line.label")}),n.jsx(a.Tabs.Tab,{value:"80-20 Line",children:t("viz.pareto_chart.line_80_20.label")}),n.jsx(a.Tabs.Tab,{value:"Reference Lines",children:t("chart.reference_line.labels")}),n.jsx(a.Tabs.Tab,{value:"Zooming",children:t("chart.zooming.label")})]}),n.jsx(a.Tabs.Panel,{value:"X Axis",children:n.jsx(n1,{control:l,watch:u})}),n.jsx(a.Tabs.Panel,{value:"Y Axis",children:n.jsx(r1,{control:l,watch:u})}),n.jsx(a.Tabs.Panel,{value:"Bar",children:n.jsx(K0,{control:l,watch:u})}),n.jsx(a.Tabs.Panel,{value:"Line",children:n.jsx(X0,{control:l,watch:u})}),n.jsx(a.Tabs.Panel,{value:"80-20 Line",children:n.jsx(J0,{control:l,watch:u})}),n.jsx(a.Tabs.Panel,{value:"Reference Lines",children:n.jsx(t1,{variables:i,control:l,watch:u})}),n.jsx(a.Tabs.Panel,{value:"Zooming",children:n.jsx(y.Controller,{name:"dataZoom",control:l,render:({field:h})=>n.jsx(vs,{...h})})})]})]})}function i1(e){const{dataZoom:t=Tn,...r}=e;return{...r,dataZoom:t}}function a1(e){const{markLine:t=Yd,...r}=e;return{...r,markLine:t}}function o1(e){const t=v.defaultsDeep({},e.x_axis.axisLabel,{rotate:0,formatter:Xe()});return{...e,x_axis:{...e.x_axis,axisLabel:t}}}function l1(e){const{label_formatter:t=Ne}=e.bar;return{...e,bar:{...e.bar,label_formatter:t}}}function c1(e){const t={x_axis:{axisLabel:{overflow:{x_axis:{width:80,overflow:"truncate",ellipsis:"..."},tooltip:{width:200,overflow:"break",ellipsis:"..."}}}}};return v.defaultsDeep(t,e)}function u1(e){const t={bar:{nameAlignment:"left"},line:{nameAlignment:"right"}};return v.defaultsDeep(t,e)}function d1(e){console.log(e);const{x_axis:t,tooltip:r}=e.x_axis.axisLabel.overflow,s={x_axis:{axisLabel:{overflow:{on_axis:t,in_tooltip:r}}}};return v.defaultsDeep(s,e)}function p1(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const s=c=>c&&`${r}.${c}`,{x_axis:i,data_key:o,...l}=e;return{...l,x_axis:{...i,data_key:s(i.data_key)},data_key:s(o)}}catch(r){throw console.error("[Migration failed]",r),r}}class h1 extends ke{constructor(){super(...arguments);N(this,"VERSION",9)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:i1(r.config)})),this.version(3,r=>({...r,version:3,config:a1(r.config)})),this.version(4,r=>({...r,version:4,config:o1(r.config)})),this.version(5,r=>({...r,version:5,config:l1(r.config)})),this.version(6,r=>({...r,version:6,config:c1(r.config)})),this.version(7,r=>({...r,version:7,config:u1(r.config)})),this.version(8,r=>({...r,version:8,config:d1(r.config)})),this.version(9,(r,s)=>({...r,version:9,config:p1(r.config,s)}))}}const g1={displayName:"viz.pareto_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new h1,name:"paretoChart",viewRender:Y0,configRender:s1,createConfig(){return{version:9,config:v.cloneDeep($a)}},triggers:[Ud],translation:P0};function f1(e,t,r,s){const i=s[r];return i||(t?e[t]:void 0)}function x1(e,t,r){const{label_field:s,value_field:i,color_field:o,color:l}=e;if(!s||!i)return{};const c=O(s),u=O(i),d=O(o),p=l.map.reduce((b,m)=>{const{name:j,color:D}=m;return!j||!D||(b[j]=D),b},{}),h=t[c.queryID].map(b=>{const m=b[c.columnKey];return{name:m,value:Number(b[u.columnKey]),color:f1(b,d.columnKey,m,p)}}),x=ly("multiple");return{type:"pie",name:"pie",radius:e.radius,itemStyle:{color:({data:b})=>b.color?b.color:x.next().value},label:{position:"outer",alignTo:"edge",formatter:`{name|{b}}
|
|
239
|
-
{percentage|{d}%}`,minMargin:5,edgeDistance:10,lineHeight:15,rich:{percentage:{color:"#999"}},margin:20},labelLine:{length:15,length2:0,maxSurfaceAngle:80,showAbove:!0},labelLayout:function(b){const m=b.labelRect.x<r/2,j=b.labelLinePoints;return v.set(j,[2,0],m?b.labelRect.x:b.labelRect.x+b.labelRect.width),{labelLinePoints:j}},data:h,top:10,bottom:10,left:10,right:10}}function m1(e,t,r){return{tooltip:xe.getTooltip({}),series:x1(e,t,r)}}const Kd={id:"builtin:echarts:click-pie-chart:series",displayName:"viz.pie_chart.click_series.label",nameRender:y1,configRender:b1,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"Value of the series clicked",valueType:"number"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function b1(e){return n.jsx(n.Fragment,{})}function y1(e){const{t}=_.useTranslation();return n.jsx(a.Text,{size:"sm",children:t("viz.pie_chart.click_series.label")})}const Xd={label_field:"",value_field:"",color_field:"",radius:["50%","80%"],color:{map:[]}};function v1({conf:e,data:t,width:r,height:s,interactionManager:i}){const o=kn(t,e.label_field),l=mt(i.triggerManager,Kd.id),c=f.useCallback(p=>{const h=v.get(o,p.name,{error:"rowData is not found"});l.forEach(x=>{i.runInteraction(x.id,{...p,rowData:h})})},[o,l,i]),u=f.useMemo(()=>m1(e,t,r),[e,t,r]),d=f.useMemo(()=>({click:c}),[c]);return!r||!s||!u.series.name?null:n.jsx(Qe,{echarts:Fe,option:u,style:{width:r,height:s},onEvents:d,notMerge:!0,theme:"merico-light"})}function _1({context:e,instance:t}){const r=bt({vizManager:e.vizManager,instance:t}),{value:s}=W(e.instanceData,"config"),i=f.useMemo(()=>v.defaults({},s,Xd),[s]),o=e.data,{width:l,height:c}=e.viewport;return!l||!c?null:n.jsx(at,{width:l,height:c,children:n.jsx(v1,{conf:i,width:Et(l),height:Pt(c),data:o,interactionManager:r})})}function j1(e){const[t,r]=e;return[Number(t.replace("%","")),Number(r.replace("%",""))]}function w1(e){const[t,r]=e;return[Number.isFinite(t)?`${t}%`:"",Number.isFinite(r)?`${r}%`:""]}const C1=f.forwardRef(({label:e,value:t,onChange:r},s)=>{const[i,o]=f.useState(j1(t)),l=f.useCallback(c=>{r(w1(c))},[r]);return n.jsxs(a.Stack,{gap:4,mt:2,mb:"1rem",children:[n.jsx("label",{className:"form-field-label required",children:e}),n.jsx(a.RangeSlider,{value:i,onChange:o,onChangeEnd:l,label:c=>`${c}%`})]})}),S1=({row:e,index:t,handleChange:r,handleRemove:s,names:i})=>{const{t:o}=_.useTranslation(),[l,{setTrue:c}]=U.useBoolean(!1),[u,{setTrue:d,setFalse:p}]=U.useBoolean(!1),{ref:h,handleRef:x}=da({id:e.id,index:t}),b=j=>{r({...e,name:j})},m=j=>{r({...e,color:j})};return n.jsxs(a.Flex,{ref:h,gap:"sm",justify:"flex-start",align:"center",direction:"row",wrap:"nowrap",onMouseEnter:d,onMouseLeave:p,children:[n.jsx(a.Center,{style:{minWidth:"30px",maxWidth:"30px",flex:0},children:u?n.jsx(a.ActionIcon,{size:"xs",ref:x,variant:"subtle",children:n.jsx(C.IconGripVertical,{})}):n.jsx(a.Badge,{size:"sm",variant:"light",children:t+1})}),n.jsxs(a.Group,{grow:!0,wrap:"nowrap",style:{flex:1},children:[n.jsx(a.Autocomplete,{size:"xs",value:e.name,placeholder:o("viz.pie_chart.color.map.name"),onChange:b,onClick:c,error:l&&!e.name,data:i,maxDropdownHeight:500}),n.jsx(a.ColorInput,{styles:{root:{flexGrow:1}},popoverProps:{withinPortal:!0,zIndex:340},size:"xs",value:e.color,onChange:m,onClick:c,error:l&&!e.color})]}),n.jsx("div",{style:{minWidth:"40px",maxWidth:"40px",flex:0},children:n.jsx(a.CloseButton,{onClick:s,size:"sm"})})]})},T1=({append:e})=>{const{t}=_.useTranslation(),r=()=>{e({name:"",color:""})};return n.jsxs(a.Flex,{gap:"sm",justify:"flex-start",align:"center",direction:"row",wrap:"nowrap",children:[n.jsx("div",{style:{minWidth:"30px",maxWidth:"30px",flex:0}}),n.jsx(a.Group,{wrap:"nowrap",style:{flex:1},children:n.jsx(a.Button,{size:"xs",variant:"subtle",onClick:r,leftSection:n.jsx(C.IconPlus,{size:14}),children:t("viz.pie_chart.color.map.add_a_row")})}),n.jsx("div",{style:{minWidth:"40px",maxWidth:"40px",flex:0}})]})},k1=Object.entries(v.pick(Gt.graphics,["compared","level","depth","multiple"])).map(([e,t])=>({name:e,colors:Object.values(t)}));function D1(e){const t=e.length;if(t===0)return"";const r={output:"percent",mantissa:4,trimMantissa:!0},s=v.divide(1,t),i=[];e.forEach((l,c)=>{i.push(`${l} ${Mn(c*s).format(r)}`),i.push(`${l} ${Mn((c+1)*s).format(r)}`)});const o=`linear-gradient(90deg, ${i.join(",")})`;return console.log(o),o}const z1=({value:e,onChange:t})=>{const{t:r,i18n:s}=_.useTranslation(),i=o=>{const l=e.map((c,u)=>({name:c.name,color:o[u]}));for(let c=l.length-1;c<o.length;c++)l.push({name:"",color:o[c]});t(l)};return n.jsxs(a.Menu,{withArrow:!0,shadow:"md",width:400,defaultOpened:!0,styles:{item:{overflowX:"hidden"}},children:[n.jsx(a.Menu.Target,{children:n.jsx(a.Button,{size:"compact-xs",variant:"subtle",rightSection:n.jsx(a.Combobox.Chevron,{size:"xs"}),children:r("viz.pie_chart.color.map.use_a_palette")})}),n.jsxs(a.Menu.Dropdown,{children:[n.jsx(a.Menu.Label,{children:r("viz.pie_chart.color.map.click_to_apply_palette")}),n.jsx(a.Menu.Divider,{}),k1.map(o=>n.jsx(a.Menu.Item,{onClick:()=>i(o.colors),children:n.jsx(a.Box,{h:28,style:{backgroundImage:D1(o.colors)}})},o.name))]})]})},I1=f.forwardRef(({value:e,onChange:t,zIndex:r=340,names:s},i)=>{const{t:o}=_.useTranslation(),l=f.useMemo(()=>e.map(h=>({id:qt.v4(),...h})),[e]),c=h=>{t([...e,h])},u=h=>{const x=[...e];x.splice(h,1),t(x)},d=h=>x=>{const b=[...e];b[h]=x,t(b)},p=h=>{const{source:x,target:b}=h.operation,m=Cl.move(l,x,b);t(m.map(j=>v.omit(j,"id")))};return n.jsxs(a.Stack,{ref:i,pt:4,children:[n.jsxs(a.Group,{justify:"space-between",children:[n.jsx(a.Text,{size:"sm",fw:"500",mb:-4,children:o("viz.pie_chart.color.map.label")}),n.jsx(z1,{value:e,onChange:t})]}),n.jsx(sr.DragDropProvider,{onDragEnd:p,children:l.map((h,x)=>n.jsx(S1,{row:h,handleChange:d(x),handleRemove:()=>u(x),index:x,names:s},h.id))}),n.jsx(T1,{append:c})]})});function M1({conf:e,setConf:t,context:r}){const{t:s}=_.useTranslation(),i=f.useMemo(()=>v.defaults({},e),[e]),{control:o,handleSubmit:l,watch:c,formState:u,reset:d}=y.useForm({defaultValues:i});f.useEffect(()=>{d(i)},[i]);const[p]=c(["label_field","value_field","color_field","color"]),{panel:h}=Pe(),x=f.useMemo(()=>{if(!p)return[];const b=yt(h.data,p);return v.uniq(b)},[p,h.data]);return n.jsx(a.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:l(t),children:[n.jsx(Be,{canSubmit:u.isDirty}),n.jsxs(a.Stack,{mt:"md",gap:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[n.jsx(y.Controller,{control:o,name:"label_field",render:({field:b})=>n.jsx(R,{label:s("common.name_data_field"),required:!0,...b})}),n.jsx(y.Controller,{control:o,name:"value_field",render:({field:b})=>n.jsx(R,{label:s("common.value_data_field"),required:!0,...b})}),n.jsx(y.Controller,{control:o,name:"radius",render:({field:b})=>n.jsx(C1,{label:s("viz.pie_chart.radius.label"),...b})}),n.jsx(a.Divider,{label:s("chart.color.label"),labelPosition:"center",variant:"dashed"}),n.jsx(y.Controller,{control:o,name:"color_field",render:({field:b})=>n.jsx(R,{label:s("common.color_data_field"),clearable:!0,...b})}),n.jsx(y.Controller,{control:o,name:"color.map",render:({field:b})=>n.jsx(I1,{names:x,...b})})]})]})})}function E1(e){const{value:t,set:r}=W(e.context.instanceData,"config");return t?n.jsx(M1,{conf:t,setConf:r,...e}):null}const P1=[{lang:"en",resources:{pie_chart:{viz_name:"Pie Chart",click_series:{label:"Click pie series"},radius:{label:"Radius",inner:"Inner",outer:"Outer"},color:{map:{label:"Color Map",name:"Record name",add_a_row:"Add a mapping rule",use_a_palette:"Use a palette",click_to_apply_palette:"Click to apply palette"}}}}},{lang:"zh",resources:{pie_chart:{viz_name:"饼图",click_series:{label:"点击饼瓣"},radius:{label:"内外半径",inner:"内",outer:"外"},color:{map:{label:"颜色映射表",name:"数据名称",add_a_row:"增加一条映射规则",use_a_palette:"使用预设配色方案",click_to_apply_palette:"点击应用配色方案"}}}}}];function A1(e){const{color_field:t="",...r}=e;return{...r,color_field:t}}function L1(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const s=c=>c&&`${r}.${c}`,{label_field:i,value_field:o,color_field:l}=e;return{label_field:s(i),value_field:s(o),color_field:s(l)}}catch(r){throw console.error("[Migration failed]",r),r}}function O1(e){const{radius:t=["50%","80%"],...r}=e;return{...r,radius:t}}function V1(e){const{color:t={map:[]},...r}=e;return{...r,color:{...t,map:t.map??[]}}}class B1 extends ke{constructor(){super(...arguments);N(this,"VERSION",5)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:A1(r.config)})),this.version(3,(r,s)=>({...r,version:3,config:L1(r.config,s)})),this.version(4,r=>({...r,version:4,config:O1(r.config)})),this.version(5,r=>({...r,version:5,config:V1(r.config)}))}}const q1={displayName:"viz.pie_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new B1,name:"pie",viewRender:_1,configRender:E1,createConfig(){return{version:5,config:v.cloneDeep(Xd)}},triggers:[Kd],translation:P1};function N1(e){return n.jsx(n.Fragment,{})}function $1(e){const{t}=_.useTranslation();return n.jsx(a.Text,{size:"sm",children:t("viz.radar_chart.click_series.label")})}const Hd={id:"builtin:echarts:click-radar-chart:series",displayName:"viz.radar_chart.click_series.label",nameRender:$1,configRender:N1,payload:[{name:"seriesType",description:"'radar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Ss={series_name_key:"",additional_series:[],background:{enabled:!0},label:{enabled:!0},dimensions:[]};function Zd(e){return e?t=>{try{return ie(t,e)}catch(r){return console.error(r),t}}:t=>t}function Jd(e){return{show:e.label.enabled,formatter:({dimensionIndex:t,value:r})=>Zd(e.dimensions[t].formatter)(r)}}function ep(e,t){return t.map(({data_key:r})=>{const s=O(r);return e[s.columnKey]})}function G1(e,t,r){const s=O(t);return e[s.queryID].map(i=>({value:ep(i,r),name:i[s.columnKey]}))}function F1(e,t){const{series_name_key:r,dimensions:s}=t;return[{type:"radar",name:"main-radar",data:G1(e,r,s),symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:t.background.enabled?{opacity:.4}:void 0,label:Jd(t)}]}function Q1(e,t){const{additional_series:r,dimensions:s}=t;return r.map(o=>{const l=O(o.name_key),c=O(o.color_key);return{type:"radar",colorBy:"data",data:e[l.queryID].map(p=>{const h=p[l.columnKey],x=p[c.columnKey];return{name:h,value:ep(p,s),itemStyle:{color:x}}}),symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:t.background.enabled?{opacity:.4}:void 0,label:Jd(t)}}).flat()}function W1(e,t){return[...F1(e,t),...Q1(e,t)]}function R1(e){return({name:t,marker:r,value:s})=>{if(s.length===0)return"";const i=s.map((o,l)=>{const c=e.dimensions[l],u=Zd(c.formatter);return`
|
|
239
|
+
{percentage|{d}%}`,minMargin:5,edgeDistance:10,lineHeight:15,rich:{percentage:{color:"#999"}},margin:20},labelLine:{length:15,length2:0,maxSurfaceAngle:80,showAbove:!0},labelLayout:function(b){const m=b.labelRect.x<r/2,j=b.labelLinePoints;return v.set(j,[2,0],m?b.labelRect.x:b.labelRect.x+b.labelRect.width),{labelLinePoints:j}},data:h,top:10,bottom:10,left:10,right:10}}function m1(e,t,r){return{tooltip:xe.getTooltip({}),series:x1(e,t,r)}}const Kd={id:"builtin:echarts:click-pie-chart:series",displayName:"viz.pie_chart.click_series.label",nameRender:y1,configRender:b1,payload:[{name:"seriesType",description:"'line' | 'scatter' | 'bar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"Value of the series clicked",valueType:"number"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function b1(e){return n.jsx(n.Fragment,{})}function y1(e){const{t}=_.useTranslation();return n.jsx(a.Text,{size:"sm",children:t("viz.pie_chart.click_series.label")})}const Xd={label_field:"",value_field:"",color_field:"",radius:["50%","80%"],color:{map:[]}};function v1({conf:e,data:t,width:r,height:s,interactionManager:i}){const o=kn(t,e.label_field),l=mt(i.triggerManager,Kd.id),c=f.useCallback(p=>{const h=v.get(o,p.name,{error:"rowData is not found"});l.forEach(x=>{i.runInteraction(x.id,{...p,rowData:h})})},[o,l,i]),u=f.useMemo(()=>m1(e,t,r),[e,t,r]),d=f.useMemo(()=>({click:c}),[c]);return!r||!s||!u.series.name?null:n.jsx(Qe,{echarts:Fe,option:u,style:{width:r,height:s},onEvents:d,notMerge:!0,theme:"merico-light"})}function _1({context:e,instance:t}){const r=bt({vizManager:e.vizManager,instance:t}),{value:s}=W(e.instanceData,"config"),i=f.useMemo(()=>v.defaults({},s,Xd),[s]),o=e.data,{width:l,height:c}=e.viewport;return!l||!c?null:n.jsx(at,{width:l,height:c,children:n.jsx(v1,{conf:i,width:Et(l),height:Pt(c),data:o,interactionManager:r})})}function j1(e){const[t,r]=e;return[Number(t.replace("%","")),Number(r.replace("%",""))]}function w1(e){const[t,r]=e;return[Number.isFinite(t)?`${t}%`:"",Number.isFinite(r)?`${r}%`:""]}const C1=f.forwardRef(({label:e,value:t,onChange:r},s)=>{const[i,o]=f.useState(j1(t)),l=f.useCallback(c=>{r(w1(c))},[r]);return n.jsxs(a.Stack,{gap:4,mt:2,mb:"1rem",children:[n.jsx("label",{className:"form-field-label required",children:e}),n.jsx(a.RangeSlider,{value:i,onChange:o,onChangeEnd:l,label:c=>`${c}%`})]})}),S1=({row:e,index:t,handleChange:r,handleRemove:s,names:i})=>{const{t:o}=_.useTranslation(),[l,{setTrue:c}]=U.useBoolean(!1),[u,{setTrue:d,setFalse:p}]=U.useBoolean(!1),{ref:h,handleRef:x}=da({id:e.id,index:t}),b=j=>{r({...e,name:j})},m=j=>{r({...e,color:j})};return n.jsxs(a.Flex,{ref:h,gap:"sm",justify:"flex-start",align:"center",direction:"row",wrap:"nowrap",onMouseEnter:d,onMouseLeave:p,children:[n.jsx(a.Center,{style:{minWidth:"30px",maxWidth:"30px",flex:0},children:u?n.jsx(a.ActionIcon,{size:"xs",ref:x,variant:"subtle",children:n.jsx(C.IconGripVertical,{})}):n.jsx(a.Badge,{size:"sm",variant:"light",children:t+1})}),n.jsxs(a.Group,{grow:!0,wrap:"nowrap",style:{flex:1},children:[n.jsx(a.Autocomplete,{size:"xs",value:e.name,placeholder:o("viz.pie_chart.color.map.name"),onChange:b,onClick:c,error:l&&!e.name,data:i,maxDropdownHeight:500}),n.jsx(a.ColorInput,{styles:{root:{flexGrow:1}},popoverProps:{withinPortal:!0,zIndex:340},size:"xs",value:e.color,onChange:m,onClick:c,error:l&&!e.color})]}),n.jsx("div",{style:{minWidth:"40px",maxWidth:"40px",flex:0},children:n.jsx(a.CloseButton,{onClick:s,size:"sm"})})]})},T1=({append:e})=>{const{t}=_.useTranslation(),r=()=>{e({name:"",color:""})};return n.jsxs(a.Flex,{gap:"sm",justify:"flex-start",align:"center",direction:"row",wrap:"nowrap",children:[n.jsx("div",{style:{minWidth:"30px",maxWidth:"30px",flex:0}}),n.jsx(a.Group,{wrap:"nowrap",style:{flex:1},children:n.jsx(a.Button,{size:"xs",variant:"subtle",onClick:r,leftSection:n.jsx(C.IconPlus,{size:14}),children:t("viz.pie_chart.color.map.add_a_row")})}),n.jsx("div",{style:{minWidth:"40px",maxWidth:"40px",flex:0}})]})},k1=Object.entries(v.pick(Gt.graphics,["compared","level","depth","multiple"])).map(([e,t])=>({name:e,colors:Object.values(t)}));function D1(e){const t=e.length;if(t===0)return"";const r={output:"percent",mantissa:4,trimMantissa:!0},s=v.divide(1,t),i=[];e.forEach((l,c)=>{i.push(`${l} ${Mn(c*s).format(r)}`),i.push(`${l} ${Mn((c+1)*s).format(r)}`)});const o=`linear-gradient(90deg, ${i.join(",")})`;return console.log(o),o}const z1=({value:e,onChange:t})=>{const{t:r,i18n:s}=_.useTranslation(),i=o=>{const l=e.map((c,u)=>({name:c.name,color:o[u]}));for(let c=l.length-1;c<o.length;c++)l.push({name:"",color:o[c]});t(l)};return n.jsxs(a.Menu,{withArrow:!0,shadow:"md",width:400,styles:{item:{overflowX:"hidden"}},children:[n.jsx(a.Menu.Target,{children:n.jsx(a.Button,{size:"compact-xs",variant:"subtle",rightSection:n.jsx(a.Combobox.Chevron,{size:"xs"}),children:r("viz.pie_chart.color.map.use_a_palette")})}),n.jsxs(a.Menu.Dropdown,{children:[n.jsx(a.Menu.Label,{children:r("viz.pie_chart.color.map.click_to_apply_palette")}),n.jsx(a.Menu.Divider,{}),k1.map(o=>n.jsx(a.Menu.Item,{onClick:()=>i(o.colors),children:n.jsx(a.Box,{h:28,style:{backgroundImage:D1(o.colors)}})},o.name))]})]})},I1=f.forwardRef(({value:e,onChange:t,zIndex:r=340,names:s},i)=>{const{t:o}=_.useTranslation(),l=f.useMemo(()=>e.map(h=>({id:qt.v4(),...h})),[e]),c=h=>{t([...e,h])},u=h=>{const x=[...e];x.splice(h,1),t(x)},d=h=>x=>{const b=[...e];b[h]=x,t(b)},p=h=>{const{source:x,target:b}=h.operation,m=Cl.move(l,x,b);t(m.map(j=>v.omit(j,"id")))};return n.jsxs(a.Stack,{ref:i,pt:4,children:[n.jsxs(a.Group,{justify:"space-between",children:[n.jsx(a.Text,{size:"sm",fw:"500",mb:-4,children:o("viz.pie_chart.color.map.label")}),n.jsx(z1,{value:e,onChange:t})]}),n.jsx(sr.DragDropProvider,{onDragEnd:p,children:l.map((h,x)=>n.jsx(S1,{row:h,handleChange:d(x),handleRemove:()=>u(x),index:x,names:s},h.id))}),n.jsx(T1,{append:c})]})});function M1({conf:e,setConf:t,context:r}){const{t:s}=_.useTranslation(),i=f.useMemo(()=>v.defaults({},e),[e]),{control:o,handleSubmit:l,watch:c,formState:u,reset:d}=y.useForm({defaultValues:i});f.useEffect(()=>{d(i)},[i]);const[p]=c(["label_field","value_field","color_field","color"]),{panel:h}=Pe(),x=f.useMemo(()=>{if(!p)return[];const b=yt(h.data,p);return v.uniq(b)},[p,h.data]);return n.jsx(a.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:l(t),children:[n.jsx(Be,{canSubmit:u.isDirty}),n.jsxs(a.Stack,{mt:"md",gap:"xs",p:"md",mb:"sm",sx:{border:"1px solid #eee",borderRadius:"5px"},children:[n.jsx(y.Controller,{control:o,name:"label_field",render:({field:b})=>n.jsx(R,{label:s("common.name_data_field"),required:!0,...b})}),n.jsx(y.Controller,{control:o,name:"value_field",render:({field:b})=>n.jsx(R,{label:s("common.value_data_field"),required:!0,...b})}),n.jsx(y.Controller,{control:o,name:"radius",render:({field:b})=>n.jsx(C1,{label:s("viz.pie_chart.radius.label"),...b})}),n.jsx(a.Divider,{label:s("chart.color.label"),labelPosition:"center",variant:"dashed"}),n.jsx(y.Controller,{control:o,name:"color_field",render:({field:b})=>n.jsx(R,{label:s("common.color_data_field"),clearable:!0,...b})}),n.jsx(y.Controller,{control:o,name:"color.map",render:({field:b})=>n.jsx(I1,{names:x,...b})})]})]})})}function E1(e){const{value:t,set:r}=W(e.context.instanceData,"config");return t?n.jsx(M1,{conf:t,setConf:r,...e}):null}const P1=[{lang:"en",resources:{pie_chart:{viz_name:"Pie Chart",click_series:{label:"Click pie series"},radius:{label:"Radius",inner:"Inner",outer:"Outer"},color:{map:{label:"Color Map",name:"Record name",add_a_row:"Add a mapping rule",use_a_palette:"Use a palette",click_to_apply_palette:"Click to apply palette"}}}}},{lang:"zh",resources:{pie_chart:{viz_name:"饼图",click_series:{label:"点击饼瓣"},radius:{label:"内外半径",inner:"内",outer:"外"},color:{map:{label:"颜色映射表",name:"数据名称",add_a_row:"增加一条映射规则",use_a_palette:"使用预设配色方案",click_to_apply_palette:"点击应用配色方案"}}}}}];function A1(e){const{color_field:t="",...r}=e;return{...r,color_field:t}}function L1(e,{panelModel:t}){try{const r=t.queryIDs[0];if(!r)throw new Error("cannot migrate when queryID is empty");const s=c=>c&&`${r}.${c}`,{label_field:i,value_field:o,color_field:l}=e;return{label_field:s(i),value_field:s(o),color_field:s(l)}}catch(r){throw console.error("[Migration failed]",r),r}}function O1(e){const{radius:t=["50%","80%"],...r}=e;return{...r,radius:t}}function V1(e){const{color:t={map:[]},...r}=e;return{...r,color:{...t,map:t.map??[]}}}class B1 extends ke{constructor(){super(...arguments);N(this,"VERSION",5)}configVersions(){this.version(1,r=>({version:1,config:r})),this.version(2,r=>({...r,version:2,config:A1(r.config)})),this.version(3,(r,s)=>({...r,version:3,config:L1(r.config,s)})),this.version(4,r=>({...r,version:4,config:O1(r.config)})),this.version(5,r=>({...r,version:5,config:V1(r.config)}))}}const q1={displayName:"viz.pie_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new B1,name:"pie",viewRender:_1,configRender:E1,createConfig(){return{version:5,config:v.cloneDeep(Xd)}},triggers:[Kd],translation:P1};function N1(e){return n.jsx(n.Fragment,{})}function $1(e){const{t}=_.useTranslation();return n.jsx(a.Text,{size:"sm",children:t("viz.radar_chart.click_series.label")})}const Hd={id:"builtin:echarts:click-radar-chart:series",displayName:"viz.radar_chart.click_series.label",nameRender:$1,configRender:N1,payload:[{name:"seriesType",description:"'radar'",valueType:"string"},{name:"componentType",description:"'series'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"value",description:"String-typed number, or series' actual value",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]},Ss={series_name_key:"",additional_series:[],background:{enabled:!0},label:{enabled:!0},dimensions:[]};function Zd(e){return e?t=>{try{return ie(t,e)}catch(r){return console.error(r),t}}:t=>t}function Jd(e){return{show:e.label.enabled,formatter:({dimensionIndex:t,value:r})=>Zd(e.dimensions[t].formatter)(r)}}function ep(e,t){return t.map(({data_key:r})=>{const s=O(r);return e[s.columnKey]})}function G1(e,t,r){const s=O(t);return e[s.queryID].map(i=>({value:ep(i,r),name:i[s.columnKey]}))}function F1(e,t){const{series_name_key:r,dimensions:s}=t;return[{type:"radar",name:"main-radar",data:G1(e,r,s),symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:t.background.enabled?{opacity:.4}:void 0,label:Jd(t)}]}function Q1(e,t){const{additional_series:r,dimensions:s}=t;return r.map(o=>{const l=O(o.name_key),c=O(o.color_key);return{type:"radar",colorBy:"data",data:e[l.queryID].map(p=>{const h=p[l.columnKey],x=p[c.columnKey];return{name:h,value:ep(p,s),itemStyle:{color:x}}}),symbolSize:4,lineStyle:{width:1},emphasis:{lineStyle:{width:4}},areaStyle:t.background.enabled?{opacity:.4}:void 0,label:Jd(t)}}).flat()}function W1(e,t){return[...F1(e,t),...Q1(e,t)]}function R1(e){return({name:t,marker:r,value:s})=>{if(s.length===0)return"";const i=s.map((o,l)=>{const c=e.dimensions[l],u=Zd(c.formatter);return`
|
|
240
240
|
<tr>
|
|
241
241
|
<td style="padding-left: 18px;">${c.name}</td>
|
|
242
242
|
<td style="text-align: right; "><strong>${u(o)}</strong></td>
|