@devtable/dashboard 13.29.2 → 13.29.3
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
|
@@ -9630,7 +9630,7 @@ class cc {
|
|
|
9630
9630
|
}), this.instanceRegistry.clear(), this.factoryRegistry.clear();
|
|
9631
9631
|
}
|
|
9632
9632
|
}
|
|
9633
|
-
const gf = "13.29.
|
|
9633
|
+
const gf = "13.29.3", c1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9634
9634
|
__proto__: null,
|
|
9635
9635
|
version: gf
|
|
9636
9636
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -16725,7 +16725,7 @@ function XT(e, t) {
|
|
|
16725
16725
|
return {
|
|
16726
16726
|
totalPages: T(() => {
|
|
16727
16727
|
const l = Object.keys(a).length;
|
|
16728
|
-
return t.pagination.page_size === 0 ? l : k.
|
|
16728
|
+
return t.pagination.page_size === 0 ? l : k.ceil(l / t.pagination.page_size);
|
|
16729
16729
|
}, [a, t.pagination.page_size]),
|
|
16730
16730
|
groupedFullData: a
|
|
16731
16731
|
};
|
package/dist/dashboard.umd.js
CHANGED
|
@@ -89,7 +89,7 @@ Check the top-level render call using <`+q+">.")}return A}}function Fg(C,A){{if(
|
|
|
89
89
|
${Object.entries(t).map(([s,i])=>`const ${s} = '${i}';`).join(`
|
|
90
90
|
`)}
|
|
91
91
|
return ${e};
|
|
92
|
-
`)(n)}catch(s){return console.error(s),console.log(e),e}}function Np(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=xc.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=Di(c,n),h=Rm({sql:p,pre_process:u}),f=xc.encode(h);T_(h,f);let m=await Kt.query(i)({type:a,key:l,query:f,...s},{params:{name:t}});return m=Qm(d,m,po(n)),m}async function M_({type:e,key:t,configString:n,name:s,additionals:i},a){try{return await Kt.httpDataSourceQuery(a)({type:e,key:t,query:n,...i},{params:{name:s}})}catch(l){if(Rt.isCancel(l))throw l;return console.error(l),l}}async function ho(){try{return(await Kt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function $p(){try{return(await Kt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class Fp{constructor(t){N(this,"rootRef");this.rootRef=ae.observable({current:t})}async deleteItem(t){ae.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?ae.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(v.isObject(n))ae.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else ae.runInAction(()=>{v.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,s){return ae.reaction(()=>this.getValueFromRoot(t),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:v.get(s,"fireImmediately",!1)})}}class I_{constructor(){N(this,"channels",new Map);N(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){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 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 I_,instanceData:new Fp(t.viz.conf)};return this.instances.set(t.id,s),s}}function Gp(e,t,n,s){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Fp({}),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={...Gp(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={...Gp(l,s,t,i)},u=a.configRender;return r.jsx(u,{context:c,instance:l,...v.omit(e,["panel","vizManager","data"])})},Wp=(e,t)=>{const n=Ut.bezier(e),s=Ut.bezier(t);return function(i){return i<50?n(i*2/100).hex():s((i-50)*2/100).hex()}},Js=e=>{const t=Ut.bezier(e);return function(n){return t(n/100).hex()}},P_={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Wp(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},O_={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Wp(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},L_={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:Js(["#fff7f1","darkred"]),name:"red",category:"sequential"},V_={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:Js(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},B_={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:Js(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},q_={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:Js(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class N_{constructor(t){N(this,"symbol");this.symbol=Symbol(t)}}function hn(e){return new N_(e)}class fo{constructor(){N(this,"parent");N(this,"factoryRegistry",new Map);N(this,"instanceRegistry",new Map)}createScoped(){const t=new fo;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 Rp="13.29.2",$_=Object.freeze(Object.defineProperty({__proto__:null,version:Rp},Symbol.toStringTag,{value:"Module"}));class F_{constructor(t){N(this,"staticColors",new Map);N(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(){N(this,"plugins",new Map);N(this,"vizComponents",new Map);N(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(){N(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 Me 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),qt=e=>Math.max(0,e-ut.top-ut.bottom),Jr=(e,t)=>({width:Bt(e),height:qt(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}),go={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,go),h=g.useMemo(()=>cs(n,a),[n,a]),{x:f,y:m,z:y}=g.useMemo(()=>({x:L(a),y:L(l),z:L(c)}),[a,l,c]),{min:_,max:k}=g.useMemo(()=>{const T=v.minBy(h,I=>I[y.columnKey]),z=v.maxBy(h,I=>I[y.columnKey]);return{min:v.get(T,y.columnKey),max:v.get(z,y.columnKey)}},[h,y]),S={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:_,max:k,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(T=>[T[f.columnKey],T[m.columnKey],T[y.columnKey]])}]};return t?r.jsx(dt,{width:s,height:i,children:r.jsx(Ke,{echarts:Ye,option:S,style:Jr(s,i),notMerge:!0,theme:"merico-light"})}):null}const U=D.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}=Je(),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,go),{control:i,handleSubmit:a,reset:l}=b.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(b.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(b.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(b.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(b.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(b.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(b.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(W.DeviceFloppy,{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 Me{constructor(){super(...arguments);N(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(go)}},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 nt(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
92
|
+
`)(n)}catch(s){return console.error(s),console.log(e),e}}function Np(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=xc.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=Di(c,n),h=Rm({sql:p,pre_process:u}),f=xc.encode(h);T_(h,f);let m=await Kt.query(i)({type:a,key:l,query:f,...s},{params:{name:t}});return m=Qm(d,m,po(n)),m}async function M_({type:e,key:t,configString:n,name:s,additionals:i},a){try{return await Kt.httpDataSourceQuery(a)({type:e,key:t,query:n,...i},{params:{name:s}})}catch(l){if(Rt.isCancel(l))throw l;return console.error(l),l}}async function ho(){try{return(await Kt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function $p(){try{return(await Kt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}class Fp{constructor(t){N(this,"rootRef");this.rootRef=ae.observable({current:t})}async deleteItem(t){ae.runInAction(()=>{v.unset(this.rootRef.current,[t])})}getItem(t){const n=this.getValueFromRoot(t);return Promise.resolve(n)}getValueFromRoot(t){return t===null?ae.toJS(this.rootRef.current):v.get(this.rootRef.current,[t])}setItem(t,n){if(t===null)if(v.isObject(n))ae.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else ae.runInAction(()=>{v.set(this.rootRef.current,[t],n)});return Promise.resolve(this.getItem(t))}watchItem(t,n,s){return ae.reaction(()=>this.getValueFromRoot(t),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:v.get(s,"fireImmediately",!1)})}}class I_{constructor(){N(this,"channels",new Map);N(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){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 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 I_,instanceData:new Fp(t.viz.conf)};return this.instances.set(t.id,s),s}}function Gp(e,t,n,s){return{vizManager:n,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Fp({}),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={...Gp(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={...Gp(l,s,t,i)},u=a.configRender;return r.jsx(u,{context:c,instance:l,...v.omit(e,["panel","vizManager","data"])})},Wp=(e,t)=>{const n=Ut.bezier(e),s=Ut.bezier(t);return function(i){return i<50?n(i*2/100).hex():s((i-50)*2/100).hex()}},Js=e=>{const t=Ut.bezier(e);return function(n){return t(n/100).hex()}},P_={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Wp(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},O_={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Wp(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},L_={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:Js(["#fff7f1","darkred"]),name:"red",category:"sequential"},V_={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:Js(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},B_={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:Js(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},q_={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:Js(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class N_{constructor(t){N(this,"symbol");this.symbol=Symbol(t)}}function hn(e){return new N_(e)}class fo{constructor(){N(this,"parent");N(this,"factoryRegistry",new Map);N(this,"instanceRegistry",new Map)}createScoped(){const t=new fo;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 Rp="13.29.3",$_=Object.freeze(Object.defineProperty({__proto__:null,version:Rp},Symbol.toStringTag,{value:"Module"}));class F_{constructor(t){N(this,"staticColors",new Map);N(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(){N(this,"plugins",new Map);N(this,"vizComponents",new Map);N(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(){N(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 Me 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),qt=e=>Math.max(0,e-ut.top-ut.bottom),Jr=(e,t)=>({width:Bt(e),height:qt(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}),go={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,go),h=g.useMemo(()=>cs(n,a),[n,a]),{x:f,y:m,z:y}=g.useMemo(()=>({x:L(a),y:L(l),z:L(c)}),[a,l,c]),{min:_,max:k}=g.useMemo(()=>{const T=v.minBy(h,I=>I[y.columnKey]),z=v.maxBy(h,I=>I[y.columnKey]);return{min:v.get(T,y.columnKey),max:v.get(z,y.columnKey)}},[h,y]),S={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:_,max:k,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(T=>[T[f.columnKey],T[m.columnKey],T[y.columnKey]])}]};return t?r.jsx(dt,{width:s,height:i,children:r.jsx(Ke,{echarts:Ye,option:S,style:Jr(s,i),notMerge:!0,theme:"merico-light"})}):null}const U=D.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}=Je(),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,go),{control:i,handleSubmit:a,reset:l}=b.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(b.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(b.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(b.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(b.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(b.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>r.jsx(U,{label:"Data Field",required:!0,...c})}),r.jsx(b.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(W.DeviceFloppy,{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 Me{constructor(){super(...arguments);N(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(go)}},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 nt(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
93
93
|
`)}}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=k=>{d({...u,enabled:k})},h=()=>{c();const{enabled:k,func_content:S}=u,T={enabled:k,func_content:S};d(T),t(T)},f=()=>{c(),d(e)},m=k=>{d(S=>({...S,func_content:k}))},y=()=>{m(nt().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(M.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:k=>p(k.currentTarget.checked)}),r.jsx(J_,{value:u.func_content,onChange:m,disabled:!u.enabled}),r.jsxs(o.Group,{position:"apart",children:[r.jsx(o.Button,{onClick:y,color:"red",leftIcon:r.jsx(W.Recycle,{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(M.IconDeviceFloppy,{size:16}),onClick:h,children:i("common.actions.save")})]})]})]})})]})}),$n={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1};function Qp(){return v.cloneDeep($n)}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:"点击箱体、散点或异常点"}}}}],Up={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 Zs=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})]})]})}),$t=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(Zs,{sectionTitle:s("chart.axis.overflow.section_title.on_axis"),value:e.on_axis,onChange:i}),r.jsx(Zs,{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`
|
|
94
94
|
max-width: ${t}px;
|
|
95
95
|
word-break: ${n};
|
|
@@ -198,7 +198,7 @@ Check the top-level render call using <`+q+">.")}return A}}function Fg(C,A){{if(
|
|
|
198
198
|
</thead>
|
|
199
199
|
<tbody>${f.join("")}</tbody>
|
|
200
200
|
</table>
|
|
201
|
-
`}})}function aS(e,t,n,s){const{overflow:i,rotate:a}=e.x_axis.axisLabel,l=Mt(i.on_axis);return me.getXAxis({id:"main-x-axis",type:"category",data:t,name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:a,...l,formatter:n},splitArea:{show:!1,areaStyle:{color:"#E7E7E9"}},splitLine:{show:s>0,interval:0,lineStyle:{type:"solid",color:"white"}},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:3})}function oS(e,t,n){const{nameAlignment:s,data_key:i,...a}=e.y_axis,{overflow:l,rotate:c}=e.y_axis.axisLabel,u=Mt(l.on_axis);return me.getYAxis({...a,type:"category",axisLabel:{rotate:c,...u,formatter:t},axisTick:{show:!0,alignWithLabel:!0},axisLine:{show:!0,lineStyle:{width:3}},splitArea:{show:!1,areaStyle:{color:"#E7E7E9"}},splitLine:{show:n>0,interval:0,lineStyle:{type:"solid",color:"white"}},nameTextStyle:{fontWeight:"bold",align:s},nameLocation:"end",nameGap:15,z:3})}const ri=({label:e,field:t})=>{const{t:n}=j.useTranslation();return r.jsx(o.ColorInput,{label:e,placeholder:n("chart.visual_map.skip_range.follow_visual_map"),size:"xs",withinPortal:!0,dropdownZIndex:340,rightSection:t.value?r.jsx(o.CloseButton,{onClick:()=>{t.onChange("")}}):null,...t})},lS=({form:e})=>{const{t}=j.useTranslation();return r.jsxs(o.Stack,{children:[r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.lt_min",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.lt_min")})}),r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.min",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.min")})}),r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.max",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.max")})}),r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.gt_max",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.gt_max")})})]})},cS=({form:e})=>{const{t,i18n:n}=j.useTranslation(),s=e.control,i=e.watch("visualMap"),{type:a,orient:l}=i,c=l==="horizontal",u=d=>p=>{p!==""&&d(p)};return a!=="continuous"?null:r.jsxs(o.Stack,{children:[r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.text.1",control:s,render:({field:d})=>r.jsx(o.TextInput,{label:t("chart.visual_map.min_text"),...d})}),r.jsx(b.Controller,{name:"visualMap.text.0",control:s,render:({field:d})=>r.jsx(o.TextInput,{label:t("chart.visual_map.max_text"),...d})})]}),r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.orient",control:s,render:({field:d})=>r.jsx(zn,{sx:{flex:1},...d})}),r.jsx(b.Controller,{name:"visualMap.calculable",control:s,render:({field:d})=>r.jsx(o.Checkbox,{label:t("chart.visual_map.calculable"),checked:d.value,onChange:p=>d.onChange(p.currentTarget.checked),styles:{root:{transform:"translateY(12px)"}}})})]}),r.jsxs(o.Group,{grow:!0,styles:{root:{flexDirection:c?"row-reverse":"row"}},children:[r.jsx(b.Controller,{name:"visualMap.itemWidth",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t(c?"chart.visual_map.bar_height":"chart.visual_map.bar_width"),...d,onChange:u(d.onChange)})}),r.jsx(b.Controller,{name:"visualMap.itemHeight",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t(c?"chart.visual_map.bar_width":"chart.visual_map.bar_height"),...d,onChange:u(d.onChange)})})]}),r.jsx(b.Controller,{name:"visualMap.inRange.color",control:s,render:({field:d})=>r.jsx(Ap,{...d})}),r.jsx(lS,{form:e})]})},uS=({visualMap:e})=>{const{orient:t,itemWidth:n,itemHeight:s}=e,a=t==="horizontal"?n:s,{panel:l}=Je(),c=Us(e,l.variableValueMap);return r.jsx(Re,{children:r.jsx(Ke,{echarts:Ye,option:{visualMap:c},style:{width:"100%",height:`${a+40}px`},notMerge:!0,theme:"merico-light"})})},oh={lower:[{label:"<",value:"gt"},{label:"≤",value:"gte"}],upper:[{label:">",value:"lt"},{label:"≥",value:"lte"}]},lh={gt:"(",gte:"[",lt:")",lte:"]"},ch=(e,t)=>e===""?t:Number.isNaN(Number(e))?"INVALID VALUE":e,dS=({form:e,index:t})=>{const{t:n}=j.useTranslation(),{control:s,watch:i}=e,a=i(`visualMap.pieces.${t}`),{lower:l,upper:c}=a,u=[lh[l.symbol],ch(l.value,n("chart.visual_map.min_value")),",",ch(c.value,n("chart.visual_map.max_value")),lh[c.symbol]].join(""),[d,p]=g.useState(!1);return r.jsx(o.Group,{noWrap:!0,children:r.jsxs(o.Popover,{width:400,position:"bottom",withArrow:!0,shadow:"md",opened:d,onChange:p,withinPortal:!0,zIndex:340,children:[r.jsx(o.Popover.Target,{children:r.jsx(o.Button,{variant:"subtle",compact:!0,px:0,onClick:()=>p(h=>!h),sx:{fontFamily:"monospace",fontWeight:"normal"},children:u})}),r.jsx(o.Popover.Dropdown,{children:r.jsxs(o.Group,{noWrap:!0,spacing:8,children:[r.jsx(b.Controller,{name:`visualMap.pieces.${t}.lower.value`,control:s,render:({field:h})=>r.jsx(o.TextInput,{...h,placeholder:n("chart.visual_map.min_value"),size:"xs",onChange:f=>h.onChange(f.currentTarget.value),error:h.value!==""&&Number.isNaN(Number(h.value))})}),r.jsx(b.Controller,{name:`visualMap.pieces.${t}.lower.symbol`,control:s,render:({field:h})=>r.jsx(o.Select,{size:"xs",data:oh.lower,...h,onChange:f=>h.onChange(f)})}),r.jsx(o.Text,{color:"dimmed",size:"sm",sx:{userSelect:"none",cursor:"default"},children:n("common.value").toLowerCase()}),r.jsx(b.Controller,{name:`visualMap.pieces.${t}.upper.symbol`,control:s,render:({field:h})=>r.jsx(o.Select,{size:"xs",data:oh.upper,...h,onChange:f=>h.onChange(f)})}),r.jsx(b.Controller,{name:`visualMap.pieces.${t}.upper.value`,control:s,render:({field:h})=>r.jsx(o.TextInput,{...h,size:"xs",placeholder:n("chart.visual_map.max_value"),onChange:f=>h.onChange(f.currentTarget.value),error:h.value!==""&&Number.isNaN(Number(h.value))})})]})})]})})},pS=({form:e,index:t,remove:n})=>{const{control:s}=e,{t:i}=j.useTranslation();return r.jsxs("tr",{children:[r.jsx("td",{children:(t+1).toString()}),r.jsx("td",{children:r.jsx(dS,{form:e,index:t})}),r.jsx("td",{children:r.jsx(b.Controller,{name:`visualMap.pieces.${t}.label`,control:s,render:({field:a})=>r.jsx(o.TextInput,{size:"xs",placeholder:"",...a,onChange:l=>a.onChange(l.currentTarget.value)})})}),r.jsx("td",{children:r.jsx(b.Controller,{name:`visualMap.pieces.${t}.color`,control:s,render:({field:a})=>r.jsx(o.ColorInput,{label:i(""),placeholder:i("chart.color.label"),size:"xs",withinPortal:!0,dropdownZIndex:340,rightSection:a.value?r.jsx(o.CloseButton,{onClick:()=>{a.onChange("")}}):null,...a})})}),r.jsx("td",{children:r.jsx(o.CloseButton,{onClick:()=>n(t)})})]})},hS=({form:e})=>{const{t,i18n:n}=j.useTranslation(),{fields:s,append:i,remove:a}=b.useFieldArray({control:e.control,name:"visualMap.pieces"}),l=e.watch("visualMap.pieces"),c=s.map((d,p)=>({...d,...l[p]})),u=()=>{i(Ep())};return r.jsx(o.Stack,{children:r.jsxs(o.Table,{children:[r.jsx("thead",{children:r.jsxs("tr",{children:[r.jsx("th",{style:{width:"40px"}}),r.jsx("th",{children:t("chart.visual_map.piecewise.interval")}),r.jsx("th",{children:t("chart.visual_map.piecewise.piece_label")}),r.jsx("th",{children:t("chart.color.label")}),r.jsx("th",{style:{width:"40px"}})]})}),r.jsx("tbody",{children:c.map((d,p)=>r.jsx(pS,{index:p,form:e,remove:a},d.id))}),r.jsx("tfoot",{children:r.jsxs("tr",{children:[r.jsx("td",{}),r.jsx("td",{colSpan:3,children:r.jsx(o.Button,{mt:10,size:"xs",color:"blue",leftIcon:r.jsx(M.IconPlaylistAdd,{size:20}),onClick:u,sx:{width:"50%"},mx:"auto",children:t("chart.visual_map.piecewise.add_a_piece")})}),r.jsx("td",{})]})})]})})},fS=({form:e})=>{const{t,i18n:n}=j.useTranslation(),s=e.control,i=e.watch("visualMap");g.useMemo(()=>[{label:t("chart.visual_map.piecewise.mode.pieces"),value:"pieces"},{label:t("chart.visual_map.piecewise.mode.categories"),value:"categories"}],[n.language]);const{type:a,orient:l,piecewise_mode:c}=i,u=d=>p=>{p!==""&&d(p)};return a!=="piecewise"?null:r.jsxs(o.Stack,{children:[r.jsx(b.Controller,{name:"visualMap.precision",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t("chart.visual_map.precision"),...d,onChange:u(d.onChange)})}),r.jsx(b.Controller,{name:"visualMap.orient",control:s,render:({field:d})=>r.jsx(zn,{sx:{flex:1},...d})}),r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.itemWidth",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t("chart.visual_map.item_width"),...d,onChange:u(d.onChange)})}),r.jsx(b.Controller,{name:"visualMap.itemHeight",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t("chart.visual_map.item_height"),...d,onChange:u(d.onChange)})})]}),c==="pieces"&&r.jsx(hS,{form:e})]})},Po=({form:e})=>{const{t,i18n:n}=j.useTranslation(),s=e.control,i=e.watch("visualMap"),a=g.useMemo(()=>[{label:t("chart.visual_map.continuous.label"),value:"continuous"},{label:t("chart.visual_map.piecewise.label"),value:"piecewise"}],[n.language]),l=c=>{switch(c){case"continuous":e.setValue("visualMap",zp());break;case"piecewise":e.setValue("visualMap",Jv());break}};return r.jsx(Re,{children:r.jsxs(o.Stack,{children:[r.jsx(uS,{visualMap:i}),r.jsx(b.Controller,{name:"visualMap.type",control:s,render:({field:c})=>r.jsx(o.SegmentedControl,{mt:-10,data:a,sx:{flex:1},...c,onChange:l})}),r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.min",control:s,render:({field:c})=>r.jsx(Mp,{label:t("chart.visual_map.min_value"),...c})}),r.jsx(b.Controller,{name:"visualMap.max",control:s,render:({field:c})=>r.jsx(Mp,{label:t("chart.visual_map.max_value"),...c})})]}),r.jsx(o.Divider,{variant:"dashed"}),r.jsx(cS,{form:e}),r.jsx(fS,{form:e})]})})};function gS(e,t,n,s){return n<e*10||s<t*10?0:n<e*20||s<t*20?1:2}function mS(e,t,n,s,i,a){if(!e.x_axis.data_key||!e.y_axis.data_key||!e.heat_block.data_key)return{};const l=s.reduce((z,I)=>{const E=nn(I,t);return z[I.name]=vt(I,E),z},{}),c=Us(e.visualMap,l),{min:u,max:d}=c,p=HC(e),h=eS(e),f=L(e.x_axis.data_key),m=L(e.y_axis.data_key),y=v.uniq(t[f.queryID].map(z=>z[f.columnKey])),_=v.uniq(t[f.queryID].map(z=>z[m.columnKey])),k=n.map(z=>{const I=v.clone(z),{followVisualMap:E,color:R}=oo(I.value[2],u,d,e.visualMap);return E||(I.visualMap=!1,I.itemStyle={color:R}),I}),S=gS(y.length,_.length,i,a);return{xAxis:aS(e,y,p.x_axis,S),yAxis:oS(e,p.y_axis,S),series:nS(e,k,S),tooltip:iS(e,t,p,h),grid:tS(e),visualMap:c}}function xS(e,t){const n=g.useMemo(()=>L(t.x_axis.data_key),[t.x_axis.data_key]),s=g.useMemo(()=>L(t.y_axis.data_key),[t.y_axis.data_key]),i=g.useMemo(()=>L(t.heat_block.data_key),[t.heat_block.data_key]),a=g.useMemo(()=>{const c=e[n.queryID];if(!c)return{};const u=c.map(d=>{const p=v.get(d,n.columnKey),h=v.get(d,s.columnKey),f=v.get(d,i.columnKey);return{value:[p,h,f]}});return v.groupBy(u,"value.1")},[e,n,s,i]);return{totalPages:g.useMemo(()=>{const c=Object.keys(a).length;return t.pagination.page_size===0?c:v.floor(c/t.pagination.page_size+1)},[a,t.pagination.page_size]),groupedFullData:a}}function yS(e,t,n){return g.useMemo(()=>{const i=Object.values(e);if(t.pagination.page_size===0)return i.flat();const a=(n-1)*t.pagination.page_size,l=n*t.pagination.page_size;return i.slice(a,l).flat()},[e,n,t.pagination.page_size])}function bS(e){return r.jsx(r.Fragment,{})}function vS(e){const{t}=j.useTranslation();return r.jsx(o.Text,{children:t("viz.merico_heatmap.click_heatmap.heatblock.label")})}const uh={id:"builtin:echarts:click-heatmap:heat-block",displayName:"viz.merico_heatmap.click_heatmap.heatblock.label",nameRender:vS,configRender:bS,payload:[{name:"seriesType",description:"'heatmap'",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"}]};function dh({page_size:e=20}){return{page_size:e}}const Oo={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:ht(),formatter:nt()}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:ht(),formatter:nt()}},heat_block:{name:"Value",data_key:"",value_formatter:We,label:{show:!1,fontSize:10}},tooltip:{metrics:[]},visualMap:pn(),pagination:dh({page_size:20})};function _S({conf:e,data:t,seriesData:n,width:s,height:i,interactionManager:a,variables:l}){const c=g.useMemo(()=>{const f=L(e.x_axis.data_key),m=L(e.y_axis.data_key);return v.keyBy(t[f.queryID],y=>`${y[f.columnKey]}---${y[m.columnKey]}`)},[t,e.x_axis.data_key,e.y_axis.data_key]),u=_t(a.triggerManager,uh.id),d=g.useCallback(f=>{const[m,y]=f.value,_=v.get(c,`${m}---${y}`,{error:"rowData is not found"});u.forEach(k=>{a.runInteraction(k.id,{...f,rowData:_})})},[c,u,a]),p=g.useMemo(()=>({click:d}),[d]),h=g.useMemo(()=>mS(e,t,n,l,s,i),[e,t,n,s,i]);return r.jsx(Ke,{echarts:Ye,option:h,style:{width:s,height:i},onEvents:p,notMerge:!0,theme:"merico-light"})}function jS({context:e,instance:t}){const n=jt({vizManager:e.vizManager,instance:t}),{value:s}=Q(e.instanceData,"config"),{variables:i}=e,a=g.useMemo(()=>v.defaults({},s,Oo),[s]),l=e.data,{width:c,height:u}=e.viewport,{totalPages:d,groupedFullData:p}=xS(l,a),[h,f]=g.useState(1),m=yS(p,a,h);return!c||!u?null:r.jsxs(dt,{width:c,height:u,children:[a.pagination.page_size>0&&r.jsx(ZC,{page:h,setPage:f,totalPages:d,width:c}),r.jsx(_S,{variables:i,width:Bt(c),height:qt(u),data:l,seriesData:m,conf:a,interactionManager:n})]})}function wS({control:e,watch:t}){const{t:n}=j.useTranslation();t(["heat_block"]);const s=t("heat_block.label.show");return r.jsxs(o.Stack,{children:[r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"heat_block.data_key",control:e,render:({field:i})=>r.jsx(U,{label:n("common.data_field"),sx:{flex:1},...i})}),r.jsx(b.Controller,{name:"heat_block.name",control:e,render:({field:i})=>r.jsx(o.TextInput,{label:n("common.name"),sx:{flex:1},...i})})]}),r.jsx(o.Divider,{mb:-15,variant:"dashed",label:n("numbro.format.label"),labelPosition:"center"}),r.jsx(b.Controller,{name:"heat_block.value_formatter",control:e,render:({field:i})=>r.jsx(It,{...i})}),r.jsx(o.Divider,{mb:-5,variant:"dashed",label:n("chart.label.label"),labelPosition:"center"}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"heat_block.label.show",control:e,render:({field:i})=>r.jsx(o.Switch,{label:n("chart.heatmap.heatblock.show_label"),checked:i.value,onChange:a=>i.onChange(a.currentTarget.checked),sx:{flexGrow:1}})}),r.jsx(b.Controller,{name:"heat_block.label.fontSize",control:e,render:({field:i})=>r.jsx(o.NumberInput,{size:"xs",icon:r.jsx(M.IconTextSize,{size:16}),disabled:!s,...i})})]})]})}const CS=({control:e,index:t})=>{const{t:n}=j.useTranslation();return r.jsx(o.Stack,{children:r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:s})=>r.jsx(o.TextInput,{label:n("common.name"),required:!0,sx:{flex:1},...s})}),r.jsx(b.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:s})=>r.jsx(U,{label:n("common.data_field"),required:!0,sx:{flex:1},...s})})]})})},SS=({control:e,watch:t})=>{const{t:n}=j.useTranslation(),s=()=>({id:Date.now().toString(),data_key:"",name:""}),i=(a,l)=>{const c=a.name.trim();return c||l+1};return r.jsxs(r.Fragment,{children:[r.jsxs(o.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[r.jsx(W.InfoCircle,{size:14,color:"#888"}),r.jsx(o.Text,{size:14,color:"#888",children:n("chart.tooltip.additional_metrics.description")})]}),r.jsx(o.Divider,{variant:"dashed",my:10}),r.jsx(Te,{control:e,watch:t,name:"tooltip.metrics",getItem:s,addButtonText:n("chart.tooltip.additional_metrics.add"),deleteButtonText:n("chart.tooltip.additional_metrics.delete"),renderTabName:i,children:({field:a,index:l})=>r.jsx(CS,{control:e,index:l})})]})};function kS({control:e,watch:t}){return r.jsx(SS,{control:e,watch:t})}function TS({control:e,watch:t}){const{t:n}=j.useTranslation();return t(["x_axis"]),r.jsxs(o.Stack,{children:[r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"x_axis.data_key",control:e,render:({field:s})=>r.jsx(U,{label:n("common.data_field"),sx:{flex:1},...s})}),r.jsx(b.Controller,{name:"x_axis.name",control:e,render:({field:s})=>r.jsx(o.TextInput,{label:n("common.name"),sx:{flex:1},...s})})]}),r.jsx(o.Divider,{mb:-15,variant:"dashed",label:n("chart.axis.tick_label"),labelPosition:"center"}),r.jsx(b.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:s})=>r.jsx($t,{...s})}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:s})=>r.jsx(fn,{sx:{width:"48%"},...s})}),r.jsx(b.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:s})=>r.jsx(Nt,{...s})})]})]})}function DS({control:e,watch:t}){const{t:n}=j.useTranslation();return t(["y_axis"]),r.jsxs(o.Stack,{my:0,p:"0",sx:{position:"relative"},children:[r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"y_axis.data_key",control:e,render:({field:s})=>r.jsx(U,{label:n("common.data_field"),sx:{flex:1},...s})}),r.jsx(b.Controller,{name:"y_axis.name",control:e,render:({field:s})=>r.jsx(o.TextInput,{label:n("common.name"),sx:{flex:1},...s})})]}),r.jsx(o.Group,{grow:!0,noWrap:!0,children:r.jsx(b.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:s})=>r.jsx(En,{sx:{flex:1},...s})})}),r.jsx(o.Divider,{mb:-15,variant:"dashed",label:n("chart.axis.tick_label"),labelPosition:"center"}),r.jsx(b.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:s})=>r.jsx($t,{...s})}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:s})=>r.jsx(fn,{sx:{width:"48%"},...s})}),r.jsx(b.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:s})=>r.jsx(Nt,{...s})})]})]})}function MS({control:e,watch:t}){const{t:n}=j.useTranslation();return t(["pagination"]),r.jsx(o.Stack,{children:r.jsx(b.Controller,{name:"pagination.page_size",control:e,render:({field:s})=>r.jsx(o.NumberInput,{label:n("common.pagination.page_size"),description:n("viz.heatmap.pagination.page_size_hint"),sx:{flex:1},...s,onChange:i=>{i!==""&&s.onChange(i)}})})})}function IS({context:e}){const{t}=j.useTranslation(),{value:n,set:s}=Q(e.instanceData,"config"),i=g.useMemo(()=>n?v.defaults({},n):Oo,[n]),a=g.useMemo(()=>v.cloneDeep(i),[i]);g.useEffect(()=>{!v.isEqual(i,a)&&(console.log("config malformed, resetting to defaults",i,a),s(a))},[i,a]);const l=b.useForm({defaultValues:a}),{control:c,handleSubmit:u,watch:d,getValues:p,reset:h}=l;g.useEffect(()=>{h(a)},[a]);const f=p(),m=g.useMemo(()=>!v.isEqual(f,i),[f,i]);return r.jsx("form",{onSubmit:u(s),style:{flexGrow:1},children:r.jsxs(o.Stack,{spacing:"xs",sx:{height:"100%"},children:[r.jsx($e,{canSubmit:m}),r.jsxs(o.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{root:{flexGrow:1},tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[r.jsxs(o.Tabs.List,{children:[r.jsx(o.Tabs.Tab,{value:"X Axis",children:t("chart.x_axis.label")}),r.jsx(o.Tabs.Tab,{value:"Y Axis",children:t("chart.y_axis.label")}),r.jsx(o.Tabs.Tab,{value:"Heat Block",children:t("chart.heatmap.heatblock.label")}),r.jsx(o.Tabs.Tab,{value:"Visual Map",children:t("chart.visual_map.label")}),r.jsx(o.Tabs.Tab,{value:"Tooltip",children:t("chart.tooltip.label")}),r.jsx(o.Tabs.Tab,{value:"Pagination",children:t("common.pagination.label")})]}),r.jsx(o.Tabs.Panel,{value:"X Axis",children:r.jsx(TS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Y Axis",children:r.jsx(DS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Heat Block",children:r.jsx(wS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Visual Map",children:r.jsx(Po,{form:l})}),r.jsx(o.Tabs.Panel,{value:"Tooltip",children:r.jsx(kS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Pagination",children:r.jsx(MS,{control:c,watch:d})})]})]})})}const zS=[{lang:"en",resources:{heatmap:{viz_name:"Heatmap",click_heatmap:{heatblock:{label:"Click heat block"}},pagination:{page_size_hint:"Set 0 to disable pagination"}}}},{lang:"zh",resources:{heatmap:{viz_name:"热力图",click_heatmap:{heatblock:{label:"点击热力块"}},pagination:{page_size_hint:"设为0以禁用分页"}}}}];function ES(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const s=d=>d&&`${n}.${d}`,{x_axis:i,y_axis:a,heat_block:l,tooltip:c,...u}=e;return{...u,x_axis:{...i,data_key:s(i.data_key)},y_axis:{...a,data_key:s(a.data_key)},heat_block:{...l,data_key:s(l.data_key)},tooltip:{...c,metrics:c.metrics.map(d=>({...d,data_key:s(d.data_key)}))}}}catch(n){throw console.error("[Migration failed]",n),n}}function AS(e){return v.defaultsDeep({},e,{heat_block:{label:{show:!1,fontSize:10}}})}function PS(e){const{heat_block:t}=e;let{min:n,max:s}=t;return typeof n!="number"&&(n=0),typeof s!="number"&&(s=100),{...e,heat_block:{...t,min:{type:"static",value:n},max:{type:"static",value:s}}}}function OS(e){const{visualMap:t=pn(),heat_block:{min:n,max:s,...i},...a}=e;return{...a,heat_block:i,visualMap:{...pn(),min:n,max:s}}}function LS(e){const{pagination:t=dh({page_size:20}),...n}=e;return{...n,pagination:t}}class VS extends Me{constructor(){super(...arguments);N(this,"VERSION",6)}configVersions(){this.version(1,n=>(console.log("🟥 unexpected calling"),{version:1,config:n})),this.version(2,(n,s)=>({...n,version:2,config:ES(n.config,s)})),this.version(3,n=>({...n,version:3,config:AS(n.config)})),this.version(4,n=>({...n,version:4,config:PS(n.config)})),this.version(5,n=>({...n,version:5,config:OS(n.config)})),this.version(6,n=>({...n,version:6,config:LS(n.config)}))}}const BS={displayName:"viz.heatmap.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new VS,name:"heatmap",viewRender:jS,configRender:IS,createConfig:()=>({version:6,config:Oo}),triggers:[uh],translation:zS},qS=[{lang:"en",resources:{pareto_chart:{viz_name:"Pareto Chart",line_80_20:{label:"80-20 Line",label_template:"Label Template",click_to_see_params:"Click to see params for Label Template",param_section_note_1:"80-20 line stuff",param_section_note_2:"chart configs"},click_series:{label:"Click chart series"}}}},{lang:"zh",resources:{pareto_chart:{viz_name:"帕累托图",line_80_20:{label:"80/20线",label_template:"线上文案模板",click_to_see_params:"点击查看线上文案模板的参数",param_section_note_1:"80-20线相关",param_section_note_2:"图表配置信息"},click_series:{label:"点击柱或线"}}}}],ph={id:"builtin:echarts:click-echart:series",displayName:"viz.pareto_chart.click_series.label",nameRender:$S,configRender:NS,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'line' | 'bar'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function NS(e){return r.jsx(r.Fragment,{})}function $S(e){const{t}=j.useTranslation();return r.jsx(o.Text,{children:t("viz.pareto_chart.click_series.label")})}const hh={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"#789AB4"},Lo={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:nt(),overflow:ht()}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:We},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:$n,markLine:hh,reference_lines:[]};function si(e){return se(e,{output:"percent",mantissa:0,absolute:!1})}function FS(e){const t=e.value[1];try{return si(t)}catch(n){return console.error(n),t}}function GS(e){function t(n){let s=n;if(typeof n=="object"&&(Array.isArray(n.value)&&n.value.length===2?s=n.value[1]:s=n.value),!e.bar.label_formatter)return s;try{return se(s,e.bar.label_formatter)}catch(i){return console.error(i),s}}return{bar:t,line:FS,lineValue:si}}function WS(e,t,n){const{label_template:s}=e.markLine;if(!s)return"";const i={...e,percentage:t,count:n},a=Object.keys(i),l=Object.values(i);return new Function(...a,`return \`${s}\`;`)(...l)}function RS(e,t){if(t.length===0)return{};const n=t.findIndex(c=>c[1]>=.8);if(n===-1)return{};const s=t[n],i={x:si((n+1)/t.length),y:si(s[1])},a={left:n+1,right:t.length-n-1},l=s[0];return l?{markLine:{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:l,lineStyle:{color:e.markLine.color},label:{formatter:WS(e,i,a)}}]},markArea:{name:"",silent:!0,itemStyle:{color:"rgba(47, 140, 192, 0.05)"},data:[[{coord:["min",0]},{xAxis:l}]]}}:{}}function QS(e,t,n){const{x_axis:s,data_key:i}=e;if(!s.data_key||!i)return[];const a=L(s.data_key),l=L(i);if(a.queryID!==l.queryID)throw new Error("Please use the same query for X & Y axis");const c=t[a.queryID].map(f=>[f[a.columnKey],Number(f[l.columnKey])]).sort((f,m)=>m[1]-f[1]),u=c.reduce((f,m)=>f+m[1],0),d=c.reduce((f,m,y)=>{const _=y===0?0:f[y-1][1];return f.push([m[0],_+m[1]]),f},[]).map(f=>[f[0],f[1]/u]),{markLine:p,markArea:h}=RS(e,d);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:n.bar},yAxisIndex:0,data:c},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1,shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:1},label:{show:!1,position:"top",formatter:n.line},yAxisIndex:1,data:d,markLine:p,markArea:h}]}const US=(e,t)=>n=>{const s=Array.isArray(n)?n:[n];if(s.length===0)return"";const i=s.map((c,u)=>{const d=c.seriesName,[p,h]=c.value;if(!d)return h;const f=u===0?t.bar:t.lineValue;return`
|
|
201
|
+
`}})}function aS(e,t,n,s){const{overflow:i,rotate:a}=e.x_axis.axisLabel,l=Mt(i.on_axis);return me.getXAxis({id:"main-x-axis",type:"category",data:t,name:e.x_axis.name??"",align:"center",axisTick:{show:!0,alignWithLabel:!0},axisLabel:{rotate:a,...l,formatter:n},splitArea:{show:!1,areaStyle:{color:"#E7E7E9"}},splitLine:{show:s>0,interval:0,lineStyle:{type:"solid",color:"white"}},nameLocation:"center",nameGap:25,nameTextStyle:{fontWeight:"bold",align:"center"},z:3})}function oS(e,t,n){const{nameAlignment:s,data_key:i,...a}=e.y_axis,{overflow:l,rotate:c}=e.y_axis.axisLabel,u=Mt(l.on_axis);return me.getYAxis({...a,type:"category",axisLabel:{rotate:c,...u,formatter:t},axisTick:{show:!0,alignWithLabel:!0},axisLine:{show:!0,lineStyle:{width:3}},splitArea:{show:!1,areaStyle:{color:"#E7E7E9"}},splitLine:{show:n>0,interval:0,lineStyle:{type:"solid",color:"white"}},nameTextStyle:{fontWeight:"bold",align:s},nameLocation:"end",nameGap:15,z:3})}const ri=({label:e,field:t})=>{const{t:n}=j.useTranslation();return r.jsx(o.ColorInput,{label:e,placeholder:n("chart.visual_map.skip_range.follow_visual_map"),size:"xs",withinPortal:!0,dropdownZIndex:340,rightSection:t.value?r.jsx(o.CloseButton,{onClick:()=>{t.onChange("")}}):null,...t})},lS=({form:e})=>{const{t}=j.useTranslation();return r.jsxs(o.Stack,{children:[r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.lt_min",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.lt_min")})}),r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.min",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.min")})}),r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.max",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.max")})}),r.jsx(b.Controller,{control:e.control,name:"visualMap.skipRange.gt_max",render:({field:n})=>r.jsx(ri,{field:n,label:t("chart.visual_map.skip_range.gt_max")})})]})},cS=({form:e})=>{const{t,i18n:n}=j.useTranslation(),s=e.control,i=e.watch("visualMap"),{type:a,orient:l}=i,c=l==="horizontal",u=d=>p=>{p!==""&&d(p)};return a!=="continuous"?null:r.jsxs(o.Stack,{children:[r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.text.1",control:s,render:({field:d})=>r.jsx(o.TextInput,{label:t("chart.visual_map.min_text"),...d})}),r.jsx(b.Controller,{name:"visualMap.text.0",control:s,render:({field:d})=>r.jsx(o.TextInput,{label:t("chart.visual_map.max_text"),...d})})]}),r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.orient",control:s,render:({field:d})=>r.jsx(zn,{sx:{flex:1},...d})}),r.jsx(b.Controller,{name:"visualMap.calculable",control:s,render:({field:d})=>r.jsx(o.Checkbox,{label:t("chart.visual_map.calculable"),checked:d.value,onChange:p=>d.onChange(p.currentTarget.checked),styles:{root:{transform:"translateY(12px)"}}})})]}),r.jsxs(o.Group,{grow:!0,styles:{root:{flexDirection:c?"row-reverse":"row"}},children:[r.jsx(b.Controller,{name:"visualMap.itemWidth",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t(c?"chart.visual_map.bar_height":"chart.visual_map.bar_width"),...d,onChange:u(d.onChange)})}),r.jsx(b.Controller,{name:"visualMap.itemHeight",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t(c?"chart.visual_map.bar_width":"chart.visual_map.bar_height"),...d,onChange:u(d.onChange)})})]}),r.jsx(b.Controller,{name:"visualMap.inRange.color",control:s,render:({field:d})=>r.jsx(Ap,{...d})}),r.jsx(lS,{form:e})]})},uS=({visualMap:e})=>{const{orient:t,itemWidth:n,itemHeight:s}=e,a=t==="horizontal"?n:s,{panel:l}=Je(),c=Us(e,l.variableValueMap);return r.jsx(Re,{children:r.jsx(Ke,{echarts:Ye,option:{visualMap:c},style:{width:"100%",height:`${a+40}px`},notMerge:!0,theme:"merico-light"})})},oh={lower:[{label:"<",value:"gt"},{label:"≤",value:"gte"}],upper:[{label:">",value:"lt"},{label:"≥",value:"lte"}]},lh={gt:"(",gte:"[",lt:")",lte:"]"},ch=(e,t)=>e===""?t:Number.isNaN(Number(e))?"INVALID VALUE":e,dS=({form:e,index:t})=>{const{t:n}=j.useTranslation(),{control:s,watch:i}=e,a=i(`visualMap.pieces.${t}`),{lower:l,upper:c}=a,u=[lh[l.symbol],ch(l.value,n("chart.visual_map.min_value")),",",ch(c.value,n("chart.visual_map.max_value")),lh[c.symbol]].join(""),[d,p]=g.useState(!1);return r.jsx(o.Group,{noWrap:!0,children:r.jsxs(o.Popover,{width:400,position:"bottom",withArrow:!0,shadow:"md",opened:d,onChange:p,withinPortal:!0,zIndex:340,children:[r.jsx(o.Popover.Target,{children:r.jsx(o.Button,{variant:"subtle",compact:!0,px:0,onClick:()=>p(h=>!h),sx:{fontFamily:"monospace",fontWeight:"normal"},children:u})}),r.jsx(o.Popover.Dropdown,{children:r.jsxs(o.Group,{noWrap:!0,spacing:8,children:[r.jsx(b.Controller,{name:`visualMap.pieces.${t}.lower.value`,control:s,render:({field:h})=>r.jsx(o.TextInput,{...h,placeholder:n("chart.visual_map.min_value"),size:"xs",onChange:f=>h.onChange(f.currentTarget.value),error:h.value!==""&&Number.isNaN(Number(h.value))})}),r.jsx(b.Controller,{name:`visualMap.pieces.${t}.lower.symbol`,control:s,render:({field:h})=>r.jsx(o.Select,{size:"xs",data:oh.lower,...h,onChange:f=>h.onChange(f)})}),r.jsx(o.Text,{color:"dimmed",size:"sm",sx:{userSelect:"none",cursor:"default"},children:n("common.value").toLowerCase()}),r.jsx(b.Controller,{name:`visualMap.pieces.${t}.upper.symbol`,control:s,render:({field:h})=>r.jsx(o.Select,{size:"xs",data:oh.upper,...h,onChange:f=>h.onChange(f)})}),r.jsx(b.Controller,{name:`visualMap.pieces.${t}.upper.value`,control:s,render:({field:h})=>r.jsx(o.TextInput,{...h,size:"xs",placeholder:n("chart.visual_map.max_value"),onChange:f=>h.onChange(f.currentTarget.value),error:h.value!==""&&Number.isNaN(Number(h.value))})})]})})]})})},pS=({form:e,index:t,remove:n})=>{const{control:s}=e,{t:i}=j.useTranslation();return r.jsxs("tr",{children:[r.jsx("td",{children:(t+1).toString()}),r.jsx("td",{children:r.jsx(dS,{form:e,index:t})}),r.jsx("td",{children:r.jsx(b.Controller,{name:`visualMap.pieces.${t}.label`,control:s,render:({field:a})=>r.jsx(o.TextInput,{size:"xs",placeholder:"",...a,onChange:l=>a.onChange(l.currentTarget.value)})})}),r.jsx("td",{children:r.jsx(b.Controller,{name:`visualMap.pieces.${t}.color`,control:s,render:({field:a})=>r.jsx(o.ColorInput,{label:i(""),placeholder:i("chart.color.label"),size:"xs",withinPortal:!0,dropdownZIndex:340,rightSection:a.value?r.jsx(o.CloseButton,{onClick:()=>{a.onChange("")}}):null,...a})})}),r.jsx("td",{children:r.jsx(o.CloseButton,{onClick:()=>n(t)})})]})},hS=({form:e})=>{const{t,i18n:n}=j.useTranslation(),{fields:s,append:i,remove:a}=b.useFieldArray({control:e.control,name:"visualMap.pieces"}),l=e.watch("visualMap.pieces"),c=s.map((d,p)=>({...d,...l[p]})),u=()=>{i(Ep())};return r.jsx(o.Stack,{children:r.jsxs(o.Table,{children:[r.jsx("thead",{children:r.jsxs("tr",{children:[r.jsx("th",{style:{width:"40px"}}),r.jsx("th",{children:t("chart.visual_map.piecewise.interval")}),r.jsx("th",{children:t("chart.visual_map.piecewise.piece_label")}),r.jsx("th",{children:t("chart.color.label")}),r.jsx("th",{style:{width:"40px"}})]})}),r.jsx("tbody",{children:c.map((d,p)=>r.jsx(pS,{index:p,form:e,remove:a},d.id))}),r.jsx("tfoot",{children:r.jsxs("tr",{children:[r.jsx("td",{}),r.jsx("td",{colSpan:3,children:r.jsx(o.Button,{mt:10,size:"xs",color:"blue",leftIcon:r.jsx(M.IconPlaylistAdd,{size:20}),onClick:u,sx:{width:"50%"},mx:"auto",children:t("chart.visual_map.piecewise.add_a_piece")})}),r.jsx("td",{})]})})]})})},fS=({form:e})=>{const{t,i18n:n}=j.useTranslation(),s=e.control,i=e.watch("visualMap");g.useMemo(()=>[{label:t("chart.visual_map.piecewise.mode.pieces"),value:"pieces"},{label:t("chart.visual_map.piecewise.mode.categories"),value:"categories"}],[n.language]);const{type:a,orient:l,piecewise_mode:c}=i,u=d=>p=>{p!==""&&d(p)};return a!=="piecewise"?null:r.jsxs(o.Stack,{children:[r.jsx(b.Controller,{name:"visualMap.precision",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t("chart.visual_map.precision"),...d,onChange:u(d.onChange)})}),r.jsx(b.Controller,{name:"visualMap.orient",control:s,render:({field:d})=>r.jsx(zn,{sx:{flex:1},...d})}),r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.itemWidth",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t("chart.visual_map.item_width"),...d,onChange:u(d.onChange)})}),r.jsx(b.Controller,{name:"visualMap.itemHeight",control:s,render:({field:d})=>r.jsx(o.NumberInput,{label:t("chart.visual_map.item_height"),...d,onChange:u(d.onChange)})})]}),c==="pieces"&&r.jsx(hS,{form:e})]})},Po=({form:e})=>{const{t,i18n:n}=j.useTranslation(),s=e.control,i=e.watch("visualMap"),a=g.useMemo(()=>[{label:t("chart.visual_map.continuous.label"),value:"continuous"},{label:t("chart.visual_map.piecewise.label"),value:"piecewise"}],[n.language]),l=c=>{switch(c){case"continuous":e.setValue("visualMap",zp());break;case"piecewise":e.setValue("visualMap",Jv());break}};return r.jsx(Re,{children:r.jsxs(o.Stack,{children:[r.jsx(uS,{visualMap:i}),r.jsx(b.Controller,{name:"visualMap.type",control:s,render:({field:c})=>r.jsx(o.SegmentedControl,{mt:-10,data:a,sx:{flex:1},...c,onChange:l})}),r.jsxs(o.Group,{grow:!0,children:[r.jsx(b.Controller,{name:"visualMap.min",control:s,render:({field:c})=>r.jsx(Mp,{label:t("chart.visual_map.min_value"),...c})}),r.jsx(b.Controller,{name:"visualMap.max",control:s,render:({field:c})=>r.jsx(Mp,{label:t("chart.visual_map.max_value"),...c})})]}),r.jsx(o.Divider,{variant:"dashed"}),r.jsx(cS,{form:e}),r.jsx(fS,{form:e})]})})};function gS(e,t,n,s){return n<e*10||s<t*10?0:n<e*20||s<t*20?1:2}function mS(e,t,n,s,i,a){if(!e.x_axis.data_key||!e.y_axis.data_key||!e.heat_block.data_key)return{};const l=s.reduce((z,I)=>{const E=nn(I,t);return z[I.name]=vt(I,E),z},{}),c=Us(e.visualMap,l),{min:u,max:d}=c,p=HC(e),h=eS(e),f=L(e.x_axis.data_key),m=L(e.y_axis.data_key),y=v.uniq(t[f.queryID].map(z=>z[f.columnKey])),_=v.uniq(t[f.queryID].map(z=>z[m.columnKey])),k=n.map(z=>{const I=v.clone(z),{followVisualMap:E,color:R}=oo(I.value[2],u,d,e.visualMap);return E||(I.visualMap=!1,I.itemStyle={color:R}),I}),S=gS(y.length,_.length,i,a);return{xAxis:aS(e,y,p.x_axis,S),yAxis:oS(e,p.y_axis,S),series:nS(e,k,S),tooltip:iS(e,t,p,h),grid:tS(e),visualMap:c}}function xS(e,t){const n=g.useMemo(()=>L(t.x_axis.data_key),[t.x_axis.data_key]),s=g.useMemo(()=>L(t.y_axis.data_key),[t.y_axis.data_key]),i=g.useMemo(()=>L(t.heat_block.data_key),[t.heat_block.data_key]),a=g.useMemo(()=>{const c=e[n.queryID];if(!c)return{};const u=c.map(d=>{const p=v.get(d,n.columnKey),h=v.get(d,s.columnKey),f=v.get(d,i.columnKey);return{value:[p,h,f]}});return v.groupBy(u,"value.1")},[e,n,s,i]);return{totalPages:g.useMemo(()=>{const c=Object.keys(a).length;return t.pagination.page_size===0?c:v.ceil(c/t.pagination.page_size)},[a,t.pagination.page_size]),groupedFullData:a}}function yS(e,t,n){return g.useMemo(()=>{const i=Object.values(e);if(t.pagination.page_size===0)return i.flat();const a=(n-1)*t.pagination.page_size,l=n*t.pagination.page_size;return i.slice(a,l).flat()},[e,n,t.pagination.page_size])}function bS(e){return r.jsx(r.Fragment,{})}function vS(e){const{t}=j.useTranslation();return r.jsx(o.Text,{children:t("viz.merico_heatmap.click_heatmap.heatblock.label")})}const uh={id:"builtin:echarts:click-heatmap:heat-block",displayName:"viz.merico_heatmap.click_heatmap.heatblock.label",nameRender:vS,configRender:bS,payload:[{name:"seriesType",description:"'heatmap'",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"}]};function dh({page_size:e=20}){return{page_size:e}}const Oo={x_axis:{name:"",data_key:"",axisLabel:{rotate:0,overflow:ht(),formatter:nt()}},y_axis:{name:"Y Axis",data_key:"",nameAlignment:"center",axisLabel:{rotate:0,overflow:ht(),formatter:nt()}},heat_block:{name:"Value",data_key:"",value_formatter:We,label:{show:!1,fontSize:10}},tooltip:{metrics:[]},visualMap:pn(),pagination:dh({page_size:20})};function _S({conf:e,data:t,seriesData:n,width:s,height:i,interactionManager:a,variables:l}){const c=g.useMemo(()=>{const f=L(e.x_axis.data_key),m=L(e.y_axis.data_key);return v.keyBy(t[f.queryID],y=>`${y[f.columnKey]}---${y[m.columnKey]}`)},[t,e.x_axis.data_key,e.y_axis.data_key]),u=_t(a.triggerManager,uh.id),d=g.useCallback(f=>{const[m,y]=f.value,_=v.get(c,`${m}---${y}`,{error:"rowData is not found"});u.forEach(k=>{a.runInteraction(k.id,{...f,rowData:_})})},[c,u,a]),p=g.useMemo(()=>({click:d}),[d]),h=g.useMemo(()=>mS(e,t,n,l,s,i),[e,t,n,s,i]);return r.jsx(Ke,{echarts:Ye,option:h,style:{width:s,height:i},onEvents:p,notMerge:!0,theme:"merico-light"})}function jS({context:e,instance:t}){const n=jt({vizManager:e.vizManager,instance:t}),{value:s}=Q(e.instanceData,"config"),{variables:i}=e,a=g.useMemo(()=>v.defaults({},s,Oo),[s]),l=e.data,{width:c,height:u}=e.viewport,{totalPages:d,groupedFullData:p}=xS(l,a),[h,f]=g.useState(1),m=yS(p,a,h);return!c||!u?null:r.jsxs(dt,{width:c,height:u,children:[a.pagination.page_size>0&&r.jsx(ZC,{page:h,setPage:f,totalPages:d,width:c}),r.jsx(_S,{variables:i,width:Bt(c),height:qt(u),data:l,seriesData:m,conf:a,interactionManager:n})]})}function wS({control:e,watch:t}){const{t:n}=j.useTranslation();t(["heat_block"]);const s=t("heat_block.label.show");return r.jsxs(o.Stack,{children:[r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"heat_block.data_key",control:e,render:({field:i})=>r.jsx(U,{label:n("common.data_field"),sx:{flex:1},...i})}),r.jsx(b.Controller,{name:"heat_block.name",control:e,render:({field:i})=>r.jsx(o.TextInput,{label:n("common.name"),sx:{flex:1},...i})})]}),r.jsx(o.Divider,{mb:-15,variant:"dashed",label:n("numbro.format.label"),labelPosition:"center"}),r.jsx(b.Controller,{name:"heat_block.value_formatter",control:e,render:({field:i})=>r.jsx(It,{...i})}),r.jsx(o.Divider,{mb:-5,variant:"dashed",label:n("chart.label.label"),labelPosition:"center"}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"heat_block.label.show",control:e,render:({field:i})=>r.jsx(o.Switch,{label:n("chart.heatmap.heatblock.show_label"),checked:i.value,onChange:a=>i.onChange(a.currentTarget.checked),sx:{flexGrow:1}})}),r.jsx(b.Controller,{name:"heat_block.label.fontSize",control:e,render:({field:i})=>r.jsx(o.NumberInput,{size:"xs",icon:r.jsx(M.IconTextSize,{size:16}),disabled:!s,...i})})]})]})}const CS=({control:e,index:t})=>{const{t:n}=j.useTranslation();return r.jsx(o.Stack,{children:r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:s})=>r.jsx(o.TextInput,{label:n("common.name"),required:!0,sx:{flex:1},...s})}),r.jsx(b.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:s})=>r.jsx(U,{label:n("common.data_field"),required:!0,sx:{flex:1},...s})})]})})},SS=({control:e,watch:t})=>{const{t:n}=j.useTranslation(),s=()=>({id:Date.now().toString(),data_key:"",name:""}),i=(a,l)=>{const c=a.name.trim();return c||l+1};return r.jsxs(r.Fragment,{children:[r.jsxs(o.Group,{spacing:2,sx:{cursor:"default",userSelect:"none"},children:[r.jsx(W.InfoCircle,{size:14,color:"#888"}),r.jsx(o.Text,{size:14,color:"#888",children:n("chart.tooltip.additional_metrics.description")})]}),r.jsx(o.Divider,{variant:"dashed",my:10}),r.jsx(Te,{control:e,watch:t,name:"tooltip.metrics",getItem:s,addButtonText:n("chart.tooltip.additional_metrics.add"),deleteButtonText:n("chart.tooltip.additional_metrics.delete"),renderTabName:i,children:({field:a,index:l})=>r.jsx(CS,{control:e,index:l})})]})};function kS({control:e,watch:t}){return r.jsx(SS,{control:e,watch:t})}function TS({control:e,watch:t}){const{t:n}=j.useTranslation();return t(["x_axis"]),r.jsxs(o.Stack,{children:[r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"x_axis.data_key",control:e,render:({field:s})=>r.jsx(U,{label:n("common.data_field"),sx:{flex:1},...s})}),r.jsx(b.Controller,{name:"x_axis.name",control:e,render:({field:s})=>r.jsx(o.TextInput,{label:n("common.name"),sx:{flex:1},...s})})]}),r.jsx(o.Divider,{mb:-15,variant:"dashed",label:n("chart.axis.tick_label"),labelPosition:"center"}),r.jsx(b.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:s})=>r.jsx($t,{...s})}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:s})=>r.jsx(fn,{sx:{width:"48%"},...s})}),r.jsx(b.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:s})=>r.jsx(Nt,{...s})})]})]})}function DS({control:e,watch:t}){const{t:n}=j.useTranslation();return t(["y_axis"]),r.jsxs(o.Stack,{my:0,p:"0",sx:{position:"relative"},children:[r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"y_axis.data_key",control:e,render:({field:s})=>r.jsx(U,{label:n("common.data_field"),sx:{flex:1},...s})}),r.jsx(b.Controller,{name:"y_axis.name",control:e,render:({field:s})=>r.jsx(o.TextInput,{label:n("common.name"),sx:{flex:1},...s})})]}),r.jsx(o.Group,{grow:!0,noWrap:!0,children:r.jsx(b.Controller,{name:"y_axis.nameAlignment",control:e,render:({field:s})=>r.jsx(En,{sx:{flex:1},...s})})}),r.jsx(o.Divider,{mb:-15,variant:"dashed",label:n("chart.axis.tick_label"),labelPosition:"center"}),r.jsx(b.Controller,{name:"y_axis.axisLabel.overflow",control:e,render:({field:s})=>r.jsx($t,{...s})}),r.jsxs(o.Group,{grow:!0,noWrap:!0,children:[r.jsx(b.Controller,{name:"y_axis.axisLabel.rotate",control:e,render:({field:s})=>r.jsx(fn,{sx:{width:"48%"},...s})}),r.jsx(b.Controller,{name:"y_axis.axisLabel.formatter",control:e,render:({field:s})=>r.jsx(Nt,{...s})})]})]})}function MS({control:e,watch:t}){const{t:n}=j.useTranslation();return t(["pagination"]),r.jsx(o.Stack,{children:r.jsx(b.Controller,{name:"pagination.page_size",control:e,render:({field:s})=>r.jsx(o.NumberInput,{label:n("common.pagination.page_size"),description:n("viz.heatmap.pagination.page_size_hint"),sx:{flex:1},...s,onChange:i=>{i!==""&&s.onChange(i)}})})})}function IS({context:e}){const{t}=j.useTranslation(),{value:n,set:s}=Q(e.instanceData,"config"),i=g.useMemo(()=>n?v.defaults({},n):Oo,[n]),a=g.useMemo(()=>v.cloneDeep(i),[i]);g.useEffect(()=>{!v.isEqual(i,a)&&(console.log("config malformed, resetting to defaults",i,a),s(a))},[i,a]);const l=b.useForm({defaultValues:a}),{control:c,handleSubmit:u,watch:d,getValues:p,reset:h}=l;g.useEffect(()=>{h(a)},[a]);const f=p(),m=g.useMemo(()=>!v.isEqual(f,i),[f,i]);return r.jsx("form",{onSubmit:u(s),style:{flexGrow:1},children:r.jsxs(o.Stack,{spacing:"xs",sx:{height:"100%"},children:[r.jsx($e,{canSubmit:m}),r.jsxs(o.Tabs,{defaultValue:"X Axis",orientation:"vertical",styles:{root:{flexGrow:1},tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[r.jsxs(o.Tabs.List,{children:[r.jsx(o.Tabs.Tab,{value:"X Axis",children:t("chart.x_axis.label")}),r.jsx(o.Tabs.Tab,{value:"Y Axis",children:t("chart.y_axis.label")}),r.jsx(o.Tabs.Tab,{value:"Heat Block",children:t("chart.heatmap.heatblock.label")}),r.jsx(o.Tabs.Tab,{value:"Visual Map",children:t("chart.visual_map.label")}),r.jsx(o.Tabs.Tab,{value:"Tooltip",children:t("chart.tooltip.label")}),r.jsx(o.Tabs.Tab,{value:"Pagination",children:t("common.pagination.label")})]}),r.jsx(o.Tabs.Panel,{value:"X Axis",children:r.jsx(TS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Y Axis",children:r.jsx(DS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Heat Block",children:r.jsx(wS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Visual Map",children:r.jsx(Po,{form:l})}),r.jsx(o.Tabs.Panel,{value:"Tooltip",children:r.jsx(kS,{control:c,watch:d})}),r.jsx(o.Tabs.Panel,{value:"Pagination",children:r.jsx(MS,{control:c,watch:d})})]})]})})}const zS=[{lang:"en",resources:{heatmap:{viz_name:"Heatmap",click_heatmap:{heatblock:{label:"Click heat block"}},pagination:{page_size_hint:"Set 0 to disable pagination"}}}},{lang:"zh",resources:{heatmap:{viz_name:"热力图",click_heatmap:{heatblock:{label:"点击热力块"}},pagination:{page_size_hint:"设为0以禁用分页"}}}}];function ES(e,{panelModel:t}){try{const n=t.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const s=d=>d&&`${n}.${d}`,{x_axis:i,y_axis:a,heat_block:l,tooltip:c,...u}=e;return{...u,x_axis:{...i,data_key:s(i.data_key)},y_axis:{...a,data_key:s(a.data_key)},heat_block:{...l,data_key:s(l.data_key)},tooltip:{...c,metrics:c.metrics.map(d=>({...d,data_key:s(d.data_key)}))}}}catch(n){throw console.error("[Migration failed]",n),n}}function AS(e){return v.defaultsDeep({},e,{heat_block:{label:{show:!1,fontSize:10}}})}function PS(e){const{heat_block:t}=e;let{min:n,max:s}=t;return typeof n!="number"&&(n=0),typeof s!="number"&&(s=100),{...e,heat_block:{...t,min:{type:"static",value:n},max:{type:"static",value:s}}}}function OS(e){const{visualMap:t=pn(),heat_block:{min:n,max:s,...i},...a}=e;return{...a,heat_block:i,visualMap:{...pn(),min:n,max:s}}}function LS(e){const{pagination:t=dh({page_size:20}),...n}=e;return{...n,pagination:t}}class VS extends Me{constructor(){super(...arguments);N(this,"VERSION",6)}configVersions(){this.version(1,n=>(console.log("🟥 unexpected calling"),{version:1,config:n})),this.version(2,(n,s)=>({...n,version:2,config:ES(n.config,s)})),this.version(3,n=>({...n,version:3,config:AS(n.config)})),this.version(4,n=>({...n,version:4,config:PS(n.config)})),this.version(5,n=>({...n,version:5,config:OS(n.config)})),this.version(6,n=>({...n,version:6,config:LS(n.config)}))}}const BS={displayName:"viz.heatmap.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new VS,name:"heatmap",viewRender:jS,configRender:IS,createConfig:()=>({version:6,config:Oo}),triggers:[uh],translation:zS},qS=[{lang:"en",resources:{pareto_chart:{viz_name:"Pareto Chart",line_80_20:{label:"80-20 Line",label_template:"Label Template",click_to_see_params:"Click to see params for Label Template",param_section_note_1:"80-20 line stuff",param_section_note_2:"chart configs"},click_series:{label:"Click chart series"}}}},{lang:"zh",resources:{pareto_chart:{viz_name:"帕累托图",line_80_20:{label:"80/20线",label_template:"线上文案模板",click_to_see_params:"点击查看线上文案模板的参数",param_section_note_1:"80-20线相关",param_section_note_2:"图表配置信息"},click_series:{label:"点击柱或线"}}}}],ph={id:"builtin:echarts:click-echart:series",displayName:"viz.pareto_chart.click_series.label",nameRender:$S,configRender:NS,payload:[{name:"type",description:"Always 'click'",valueType:"string"},{name:"seriesType",description:"'line' | 'bar'",valueType:"string"},{name:"name",description:"Name of the series clicked",valueType:"string"},{name:"color",description:"Color",valueType:"string"},{name:"rowData",description:"Data of the row",valueType:"object"}]};function NS(e){return r.jsx(r.Fragment,{})}function $S(e){const{t}=j.useTranslation();return r.jsx(o.Text,{children:t("viz.pareto_chart.click_series.label")})}const hh={label_template:"${percentage.x} of ${x_axis.name} causes ${percentage.y} of ${bar.name}",color:"#789AB4"},Lo={x_axis:{name:"X Axis",data_key:"",axisLabel:{rotate:0,formatter:nt(),overflow:ht()}},data_key:"value",bar:{name:"Value",nameAlignment:"left",color:"#228be6",label_formatter:We},line:{name:"Value",nameAlignment:"right",color:"red"},dataZoom:$n,markLine:hh,reference_lines:[]};function si(e){return se(e,{output:"percent",mantissa:0,absolute:!1})}function FS(e){const t=e.value[1];try{return si(t)}catch(n){return console.error(n),t}}function GS(e){function t(n){let s=n;if(typeof n=="object"&&(Array.isArray(n.value)&&n.value.length===2?s=n.value[1]:s=n.value),!e.bar.label_formatter)return s;try{return se(s,e.bar.label_formatter)}catch(i){return console.error(i),s}}return{bar:t,line:FS,lineValue:si}}function WS(e,t,n){const{label_template:s}=e.markLine;if(!s)return"";const i={...e,percentage:t,count:n},a=Object.keys(i),l=Object.values(i);return new Function(...a,`return \`${s}\`;`)(...l)}function RS(e,t){if(t.length===0)return{};const n=t.findIndex(c=>c[1]>=.8);if(n===-1)return{};const s=t[n],i={x:si((n+1)/t.length),y:si(s[1])},a={left:n+1,right:t.length-n-1},l=s[0];return l?{markLine:{name:"",silent:!0,symbol:"triangle",symbolRotate:180,symbolSize:[10,8],data:[{name:"",symbol:"none",xAxis:l,lineStyle:{color:e.markLine.color},label:{formatter:WS(e,i,a)}}]},markArea:{name:"",silent:!0,itemStyle:{color:"rgba(47, 140, 192, 0.05)"},data:[[{coord:["min",0]},{xAxis:l}]]}}:{}}function QS(e,t,n){const{x_axis:s,data_key:i}=e;if(!s.data_key||!i)return[];const a=L(s.data_key),l=L(i);if(a.queryID!==l.queryID)throw new Error("Please use the same query for X & Y axis");const c=t[a.queryID].map(f=>[f[a.columnKey],Number(f[l.columnKey])]).sort((f,m)=>m[1]-f[1]),u=c.reduce((f,m)=>f+m[1],0),d=c.reduce((f,m,y)=>{const _=y===0?0:f[y-1][1];return f.push([m[0],_+m[1]]),f},[]).map(f=>[f[0],f[1]/u]),{markLine:p,markArea:h}=RS(e,d);return[{name:e.bar.name,type:"bar",barMaxWidth:20,itemStyle:{color:e.bar.color},label:{show:!1,position:"top",formatter:n.bar},yAxisIndex:0,data:c},{name:e.line.name,type:"line",itemStyle:{color:e.line.color},symbolSize:2,lineStyle:{width:1,shadowColor:"rgba(255,255,255,1)",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:1},label:{show:!1,position:"top",formatter:n.line},yAxisIndex:1,data:d,markLine:p,markArea:h}]}const US=(e,t)=>n=>{const s=Array.isArray(n)?n:[n];if(s.length===0)return"";const i=s.map((c,u)=>{const d=c.seriesName,[p,h]=c.value;if(!d)return h;const f=u===0?t.bar:t.lineValue;return`
|
|
202
202
|
<tr>
|
|
203
203
|
<th style="text-align: right; padding: 0 1em;">${d}</th>
|
|
204
204
|
<td style="text-align: left; padding: 0 1em;">${f(h)}</td>
|