@devtable/dashboard 13.8.0 → 13.8.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 +1 -1
- package/dist/dashboard.umd.js +1 -1
- package/dist/stats.html +1 -1
- package/dist/version.json +2 -2
- package/package.json +5 -1
package/dist/dashboard.es.js
CHANGED
|
@@ -1731,7 +1731,7 @@ class Pi {
|
|
|
1731
1731
|
}), this.instanceRegistry.clear(), this.factoryRegistry.clear();
|
|
1732
1732
|
}
|
|
1733
1733
|
}
|
|
1734
|
-
const cc = "13.8.
|
|
1734
|
+
const cc = "13.8.1", ng = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1735
1735
|
__proto__: null,
|
|
1736
1736
|
version: cc
|
|
1737
1737
|
}, Symbol.toStringTag, { value: "Module" }));
|
package/dist/dashboard.umd.js
CHANGED
|
@@ -53,7 +53,7 @@ Check the top-level render call using <`+A+">.")}return z}}function fu(C,z){{if(
|
|
|
53
53
|
</table>
|
|
54
54
|
`;function Cs(t,e){const n=Object.keys(e),r=Object.values(e);try{return new Function(...n,`return \`${t}\`;`)(...r)}catch(i){throw n.length===0&&t.includes("$")?new Error("[formatSQL] insufficient payload"):i}}function Ss(t,e){try{return Cs(t,e)}catch(n){return console.error(n),n.message}}function md({sql:t,pre_process:e}){if(!e.trim())return t;try{return new Function(`return ${e}`)()({sql:t},tt)}catch(n){return console.error(n),t}}function fd(t,e,n){if(!t.trim())return e;try{return new Function(`return ${t}`)()(e,tt,n)}catch(r){return console.error(r),e}}function gd(t){t=t||{};const e=Object.keys(t).sort(),n=[];for(let r=0;r<e.length;r++){const i=e[r];if(i!="authentication"&&t[i])n.push(e[r]+"="+(typeof t[i]=="object"?JSON.stringify(t[i]):t[i]));else{const a=Object.keys(t[i]).sort();for(let l=0;l<a.length;l++){const c=a[l];c!="sign"&&t[i][c]&&n.push(a[l]+"="+(typeof t[i][c]=="object"?JSON.stringify(t[i][c]):t[i][c]))}}}return n.sort().join("&")}function xd(t,e){let n=gd(t);return n+="&key="+e,od.MD5(n).toString().toUpperCase()}class da{constructor(){this.type="default_api_client",this.baseURL="http://localhost:31200",this.app_id="",this.app_secret=""}getAuthentication(e){if(!this.app_id||!this.app_secret)return;const n=new Date().getTime().toString();return{app_id:this.app_id,nonce_str:n,sign:xd({app_id:this.app_id,nonce_str:n,...e},this.app_secret)}}getRequest(e,n){return(r,i,a,l)=>{const c=this.buildHeader(a),u=this.buildAxiosConfig(e,r,i,a,c,n);return lt(u).then(d=>l?d:d.data).catch(d=>{const p=x.get(d,"response.data.detail.message",d.message);return Promise.reject(new Error(p))})}}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}buildAxiosConfig(e,n,r,i,a,l){const c={baseURL:this.baseURL,method:e,url:n,params:e==="GET"?r:i.params,headers:a,signal:l};return["POST","PUT"].includes(e)&&(c.data=i.string?JSON.stringify(r):r,c.data.authentication=this.getAuthentication(c.data)),c}buildHeader(e){const n=window.localStorage.getItem("token");return{"X-Requested-With":"XMLHttpRequest","Content-Type":e.string?"application/x-www-form-urlencoded":"application/json",authorization:n?`bearer ${n}`:"",...e.headers}}}class yd{constructor(e){this.implementation=e}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}class pa extends da{constructor(){super(...arguments);$(this,"makeQueryENV",null)}query(n){return async(r,i={})=>{var a;return r.env||(r.env=((a=this.makeQueryENV)==null?void 0:a.call(this))??{error:"failed to run makeQueryENV"}),this.post(n)("/query",r,i)}}httpDataSourceQuery(n){return async(r,i={})=>{var a;return r.env||(r.env=((a=this.makeQueryENV)==null?void 0:a.call(this))??{error:"failed to run makeQueryENV"}),this.getRequest("POST",n)("/query",r,i,!0)}}structure(n){return async(r,i={})=>this.post(n)("/query/structure",r,i)}}class ha{constructor(e){this.implementation=e}query(e){return this.implementation.query(e)}httpDataSourceQuery(e){return this.implementation.httpDataSourceQuery(e)}structure(e){return this.implementation.structure(e)}getRequest(e,n){return this.implementation.getRequest(e,n)}get(e){return this.getRequest("GET",e)}post(e){return this.getRequest("POST",e)}put(e){return this.getRequest("PUT",e)}}const Ot=new pa;function ks(t){Ot.baseURL!==t.apiBaseURL&&(Ot.baseURL=t.apiBaseURL),t.app_id&&(Ot.app_id=t.app_id),t.app_secret&&(Ot.app_secret=t.app_secret),t.makeQueryENV&&(Ot.makeQueryENV=t.makeQueryENV)}const ma=new ha(Ot),nt=ma,an=m.forwardRef(function({value:e,onChange:n,...r},i){return s.jsx(o.TextInput,{ref:i,value:e,onChange:n,...r})});function E(t){const[e,n]=t.split(".");return{queryID:e,columnKey:n}}function bd(t){return t.includes(".")?E(t):{queryID:"",columnKey:t}}function st(t,e){var i;const{queryID:n,columnKey:r}=E(e);return n?r?((i=t[n])==null?void 0:i.map(a=>a[r]))??[]:t[n]:[]}function kn(t,e){const{queryID:n}=E(e);return n?t[n]:[]}function vd(t){return Object.values(t)[0]}function Tn(t,e){const{queryID:n,columnKey:r}=E(e);return t[r]}const fa=["function aggregation({ queryData }, utils) {",' return "Aggregation Result";',"}"].join(`
|
|
55
55
|
`),Vt={type:"none",config:{},fallback:"0"};function _d(t){const e=Array.from(t).sort((r,i)=>r-i),n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}function jd(t,e){switch(e.type){case"sum":return x.sum(t);case"mean":return x.mean(t);case"median":return _d(t);case"max":return x.max(t);case"min":return x.min(t);case"quantile":return tn.quantile(t,e.config.p);case"CV":const n=qt.std(...t),r=qt.mean(...t);return r?n/r:Number.NaN;case"std":return qt.std(...t);default:return t}}function Ts(t,e){const n=t.map(Number),r=jd(n,e);return typeof r=="number"?Number.isFinite(r)?r:e.fallback:r??e.fallback}function wd(t,e,n){try{const r=kn(t,e);return new Function(`return ${n.config.func}`)()({queryData:r},tt)}catch(r){return console.error(r),r.message}}function Dn(t,e,n){try{return n.type==="custom"?wd(t,e,n):Ts(st(t,e),n)}catch(r){return console.error(r),null}}class Cd{constructor({valueRange:e,colorRange:n}){$(this,"mapper");this.mapper=kt.interpolate(e,n)}getColor(e){return this.mapper(e)}}const _e={mantissa:0,output:"number",trimMantissa:!1,average:!1,absolute:!1};function R(t,{absolute:e,...n}){if(t===null)return String(t);try{let r=wn(t).value();if(r===void 0||Number.isNaN(r))throw new Error(`[formatNumber]Not a number: ${t}`);return e&&(r=Math.abs(r)),wn(r).format(n)}catch(r){return console.debug(r),String(t)}}function Sd(t){return t===null?"null":t===void 0?"undefined":Array.isArray(t)?`Array(${t.length})`:t.toString()}function dt({data_field:t,aggregation:e},n){return Dn(n,t,e)}function Ne({formatter:t,aggregation:e},n){if(typeof n!="string"&&typeof n!="number")return Sd(n);if(e.type==="custom")return n;try{return R(n,t)}catch(r){return console.error(r),n}}function kd(t,e){if(t.type==="static")return t.staticColor;if(t.type==="continuous")try{if(typeof e!="number")throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${e}`);return new Cd(t).getColor(e)}catch(n){return console.error(n),"black"}return"black"}function Td(t,e){const{color:n,data_field:r,aggregation:i,size:a,weight:l}=t,c=Dn(e,r,i),u=Ne(t,c);return s.jsx(o.Text,{sx:{fontSize:a,display:"inline"},color:kd(n,c),weight:l,children:u})}function Dd(t,e){const n={};return t.forEach(r=>{const i=r.name;n[i]=Td(r,e)}),n}function zd(t){return t.split(" ").map((e,n)=>s.jsxs(m.Fragment,{children:[e," "]},n))}function Md(t){const n=t.replaceAll("<br />","<br/>").replaceAll(`
|
|
56
|
-
`,"<br/>").split("<br/>");return n.map((i,a)=>{const l=[zd(i)];return a!==n.length-1&&l.push(s.jsx("br",{},`br-${a}`)),l}).flat().filter(i=>i!==void 0)}function Ds(t){return Md(t)}function on(t,e,n){const r=Dd(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map((a,l)=>{const c=i.exec(a);if(!c)return Ds(a);const u=r[c[1]];if(!u)return Ds(a);const d=c[2]??"";return s.jsxs(m.Fragment,{children:[u,Ds(d)]},`${a}-${l}`)})}function Id(t,e){const{data_field:n,aggregation:r}=t,i=Dn(e,n,r);return Ne(t,i)}function ga(t,e){const n={};return t.forEach(r=>{n[r.name]=Id(r,e)}),n}function zn(t,e,n){const r=ga(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map(a=>{const l=i.exec(a);if(!l)return a;const c=r[l[1]];if(!c)return a;const u=l[2]??"";return`${c}${u}`}).join("")}const Tt={grid:{axis:"#97999D",scope:"rgba(47,140,192,0.1)",boundary:"#789AB4",reference:"#CFCFD8"},graphics:{compared:{blueDark:"#3E7CAB",blue:"#6398C7",blueLight:"#7CB0DF",blue10:"#6398C71a",redDark:"#AF5F6B",red:"#CD7C88",redLight:"#E794A0",red10:"#CD7C881a"},gradient:{distributed:"linear-gradient(90deg, #1babe6 0%, #2fc8c8 28.63%, #98d44b 48.86%, #ffd057 67.53%, #f5ae53 80.6%, #e76441 91.18%, #b90000 100%)",protrude:"linear-gradient(180deg, #ec73734d 0%, #ec737300 100%)"},level:{lv0:"#6398C7",lv1:"#61B5BF",lv2:"#54D4BB",lv3:"#F5D277",lv4:"#E8BB7F",lv5:"#DB9E84",lv6:"#CB8089"},depth:{dp0:"#FFF7F8",dp1:"#FFE1E1",dp2:"#FDBCBC",dp3:"#F39494",dp4:"#FA4242",dp5:"#E21212"},multiple:{c1:"#66B4DB",c2:"#E46464",c3:"#EEBA00",c4:"#33A678",c5:"#9D88CB",c6:"#939943",c7:"#E49792",c8:"#09A2B8",c9:"#AF5F6B",c10:"#6CA157",c11:"#3E7CAB",c12:"#6398C7",c13:"#E692BA",c14:"#97B566",c15:"#8CACE2",c16:"#CA79AC",c17:"#6DBC80",c18:"#B08F4B",c19:"#39BFA2",c20:"#826BAF"}}};function Ed(){we.registerTheme("merico-light",{color:Object.values(Tt.graphics.multiple),visualMap:{color:Object.values(Tt.graphics.depth).reverse()},axes:[{type:"all",name:"通用坐标轴",axisLineColor:"#97999D",axisTickColor:"#97999D",axisLabelShow:!0,axisLabelColor:"#818388",splitLineShow:!0,splitLineColor:["#E0E6F1"]}]})}function xa(){Ed()}function*Ad(t){const e=Tt.graphics[t];if(!e)throw new Error("Invalid palette key provided");const n=Object.values(e);let r=0;for(;;)yield n[r%n.length],r++}function ya(){return{filters:{},context:{}}}function zs(t){const e=ya();if(!t)return ya();const{filters:n=e.filters,context:r=e.context}=t;return{filters:n,context:r}}class Ce extends m.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(o.Box,{children:[s.jsx(o.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),s.jsx(o.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function Pd(t,e={handleError:!0}){return n=>s.jsx(Ce,{...e,children:s.jsx(t,{...n})})}function $d(t,e){return new Function(`return ${t}`)()(e,tt)}function Bd(t,e,n){return $d(t,{context:e,filters:n})}function Ld(t,e){try{return new Function(`return ${t.config.processing.pre}`)()(e,tt)}catch(n){return console.error(n),e}}function qd(t,e){return new Function(`return ${t.config.processing.post}`)()(e,tt)}function Od(t,e,n){return t?new Function(`return ${t}`)()(e,tt,n):e}function ba(){Ni.use([_u.CanvasRenderer,et.BarChart,et.BoxplotChart,et.CustomChart,et.FunnelChart,et.HeatmapChart,et.LineChart,et.PieChart,et.RadarChart,et.ScatterChart,et.SunburstChart,bt.CalendarComponent,bt.DataZoomComponent,bt.GridComponent,bt.LegendComponent,bt.TooltipComponent,bt.MarkLineComponent,bt.MarkAreaComponent,bt.VisualMapComponent])}const Nt=t=>x.cloneDeepWith(t,(e,n)=>{if(n!==void 0&&e)return K.toJS(e)}),Mn={sqlSnippet:new RegExp("(?<=sql_snippets\\.)([^\\?}.]+)","gm"),context:new RegExp("(?<=context\\.)([^\\?}.]+)","gm"),filter:new RegExp("(?<=filters\\.)([^\\?}.]+)","gm")};function Vd(t,e){const n=Gi.decode(e);n!==t&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:t,after:e,v:n}),console.groupEnd())}async function Nd({query:t,name:e,payload:n,additionals:r},i){if(!t.sql)return[];const{type:a,key:l,sql:c,pre_process:u,post_process:d}=t,p=Cs(c,n),h=md({sql:p,pre_process:u}),g=Gi.encode(h);Vd(h,g);let y=await nt.query(i)({type:a,key:l,query:g,...r},{params:{name:e}});return y=fd(d,y,zs(n)),y}async function Gd({type:t,key:e,configString:n,name:r,additionals:i},a){try{return await nt.httpDataSourceQuery(a)({type:t,key:e,query:n,...i},{params:{name:r}})}catch(l){if(lt.isCancel(l))throw l;return console.error(l),l}}async function Ms(){try{return(await nt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(t){return console.error(t),[]}}async function va(){try{return(await nt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(t){return console.error(t),[]}}class _a{constructor(e){$(this,"rootRef");this.rootRef=K.observable({current:e})}async deleteItem(e){K.runInAction(()=>{x.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?K.toJS(this.rootRef.current):x.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(x.isObject(n))K.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else K.runInAction(()=>{x.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return K.reaction(()=>this.getValueFromRoot(e),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class Fd{constructor(){$(this,"channels",new Map);$(this,"globalChannel",new Fi)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Fi;return this.channels.set(e,r),r}}class Wd{constructor(e){$(this,"instances",new Map);this.pluginManager=e}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(e=>e.manifest.viz)}resolveComponent(e){return this.pluginManager.factory.viz(e)}getOrCreateInstance(e){const n=this.instances.get(e.id);if(n)return n;const r={id:e.id,name:e.viz.type,type:e.viz.type,messageChannels:new Fd,instanceData:new _a(e.viz.conf)};return this.instances.set(e.id,r),r}}function ja(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new _a({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const Qd=t=>{const{panel:e,measure:n,vizManager:r,data:i,variables:a}=t,l=r.resolveComponent(e.viz.type),c=r.getOrCreateInstance(e),u={...ja(c,i,r,a),viewport:{width:n.w,height:n.h}},d=l.viewRender;return s.jsx(d,{context:u,instance:c,...x.omit(t,["panel","vizManager","data"])})},Rd=t=>{const{vizManager:e,panel:n,data:r,variables:i}=t,a=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),c={...ja(l,r,e,i)},u=a.configRender;return s.jsx(u,{context:c,instance:l,...x.omit(t,["panel","vizManager","data"])})},wa=(t,e)=>{const n=ct.bezier(t),r=ct.bezier(e);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},In=t=>{const e=ct.bezier(t);return function(n){return e(n/100).hex()}},Ud={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:wa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Yd={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:wa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Kd={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:In(["#fff7f1","darkred"]),name:"red",category:"sequential"},Jd={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:In(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Xd={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:In(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Zd={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:In(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Hd{constructor(e){$(this,"symbol");this.symbol=Symbol(e)}}function pt(t){return new Hd(t)}class Is{constructor(){$(this,"parent");$(this,"factoryRegistry",new Map);$(this,"instanceRegistry",new Map)}createScoped(){const e=new Is;return e.parent=this,e}getRequired(e){return this.get(e)}get(e){if(this.instanceRegistry.has(e.symbol))return this.instanceRegistry.get(e.symbol);const n=this.factoryRegistry.get(e.symbol);if(n){const r=n(this);return this.instanceRegistry.set(e.symbol,r),r}if(this.parent)return this.parent.get(e)}provideFactory(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,n),this}provideValue(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(e=>{const n=x.get(e,"dispose");x.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Ca="13.8.0",ep=Object.freeze(Object.defineProperty({__proto__:null,version:Ca},Symbol.toStringTag,{value:"Module"}));class tp{constructor(e){$(this,"staticColors",new Map);$(this,"interpolations",new Map);e.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(e){const n=this.encodeColor(e);e.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.staticColors.set(n,e)):e.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`,`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.interpolations.set(n,e))}decodeStaticColor(e){return this.staticColors.get(e)}encodeColor(e){return`\${${e.category}}.{${e.name}}`}decodeInterpolation(e){return this.interpolations.get(e)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class np{constructor(){$(this,"plugins",new Map);$(this,"vizComponents",new Map);$(this,"factory",{viz:e=>{const n=this.vizComponents.get(e);if(n)return n;throw new Error(`Viz Component (${e}) not found`)}})}install(e){if(this.plugins.has(e.id))throw new Error(`Plugin (${e.id}) has been installed before`);this.plugins.set(e.id,e);for(const n of e.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 sp{constructor(){$(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n,r){var l;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(c=>c.version>e.from&&c.version<=e.to),a=x.orderBy(i,"version","asc");if(((l=x.last(a))==null?void 0:l.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return a.reduce((c,u)=>u.handler(c,r),n)}}class oe extends sp{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,i)=>({version:e,...n(r,i)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),i=x.get(r,"version",0),a=this.run({from:i,to:this.VERSION},r,{panelModel:n});await e.setItem(null,a)}async needMigration({configData:e}){const n=await e.getItem(null);return x.get(n,"version",0)<this.VERSION}}const O=(t,e)=>{const[n,{setFalse:r}]=N.useBoolean(!0),[i,a]=m.useState();m.useEffect(()=>(t.getItem(e).then(c=>{a(c),r()}),t.watchItem(e,c=>{a(c)})));const l=m.useCallback(async c=>{await t.setItem(e,c),a(c)},[t,e]);return{loading:n,value:i,set:l}},Me={top:16,right:16,bottom:16,left:16},Je=t=>Math.max(0,t-Me.left-Me.right),Xe=t=>Math.max(0,t-Me.top-Me.bottom),ln=(t,e)=>({width:Je(t),height:Xe(e)}),Ie=({width:t,height:e,children:n})=>s.jsx(o.Box,{pt:Me.top,pr:Me.right,pb:Me.bottom,pl:Me.left,sx:{width:t,height:e,overflow:"hidden",position:"relative"},children:n}),Es={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 rp({context:t}){const{value:e}=O(t.instanceData,"config"),n=t.data,{width:r,height:i}=t.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=x.defaults({},e,Es),h=m.useMemo(()=>kn(n,a),[n,a]),{x:g,y,z:v}=m.useMemo(()=>({x:E(a),y:E(l),z:E(c)}),[a,l,c]),{min:w,max:T}=m.useMemo(()=>{const I=x.minBy(h,Q=>Q[v.columnKey]),P=x.maxBy(h,Q=>Q[v.columnKey]);return{min:x.get(I,v.columnKey),max:x.get(P,v.columnKey)}},[h,v]),D={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:w,max:T,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:u,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(I=>[I[g.columnKey],I[y.columnKey],I[v.columnKey]])}]};return e?s.jsx(Ie,{width:r,height:i,children:s.jsx(Te,{echarts:we,option:D,style:ln(r,i),notMerge:!0,theme:"merico-light"})}):null}const Sa=m.createContext(null),As=Sa.Provider;function Ps(){const t=m.useContext(Sa);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const Z=()=>Ps(),ka=()=>Ps(),Ta=m.createContext({searchButtonProps:{}}),$s=Ta.Provider;function Da(){return m.useContext(Ta)}const za=m.createContext(null),Bs=za.Provider;function Ma(){const t=m.useContext(za);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const U=()=>Ma(),pe=()=>Ma(),ip={inEditMode:!1},En=m.createContext(ip),Ia=m.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),Ls=Ia.Provider;function Ea(){const t=m.useContext(Ia);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const ht=()=>Ea(),Be=()=>Ea(),ap={fullScreenPanelID:"",setFullScreenPanelID:x.noop},qs=m.createContext(ap);function Aa(){const t=m.useContext(qs);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const op={en:"en",zh:"zh-cn"};function Os({children:t}){const{i18n:e}=_.useTranslation(),n=m.useMemo(()=>{const r=e.language;return op[r]??"en"},[e.language]);return s.jsx(Wi.DatesProvider,{settings:{locale:n,firstDayOfWeek:1},children:t})}const q=S.observer(m.forwardRef(({label:t,required:e,description:n,value:r,onChange:i,queryID:a,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=Be(),h=m.useMemo(()=>p.dataFieldOptions(r,l,a),[r,l,a]);if(h.length===0){const g=p.explainDataKey(r);return s.jsxs(o.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[s.jsx(o.HoverCard.Target,{children:s.jsx(o.Box,{children:s.jsx(o.TextInput,{label:t,required:e,defaultValue:g.columnKey,readOnly:!0,disabled:!0})})}),s.jsx(o.HoverCard.Dropdown,{children:s.jsxs(o.Group,{position:"left",spacing:0,children:[s.jsx(o.Text,{size:"xs",color:g.queryName?"black":"red",sx:{fontFamily:"monospace"},children:g.queryName??g.queryID}),s.jsx(o.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),s.jsx(o.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:g.columnKey})]})})]})}return s.jsx(o.Select,{ref:d,label:t,description:n,data:h,value:r,onChange:i,required:e,sx:c,maxDropdownHeight:500,...u})}));function lp({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=x.defaults({},e,Es),{control:i,handleSubmit:a,reset:l}=b.useForm({defaultValues:r});return m.useEffect(()=>{l(r)},[e]),e?s.jsx(o.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:a(n),children:[s.jsx(o.Text,{children:"X Axis"}),s.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>s.jsx(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>s.jsx(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>s.jsx(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(o.Button,{color:"blue",type:"submit",children:[s.jsx(B.DeviceFloppy,{size:20}),s.jsx(o.Text,{ml:"md",children:"Save"})]})})]})}):null}const cp=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function up(t,{panelModel:e}){try{const n=e.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=u=>u&&`${n}.${u}`,{x_axis_data_key:i,y_axis_data_key:a,z_axis_data_key:l,...c}=t;return{...c,x_axis_data_key:r(i),y_axis_data_key:r(a),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class dp extends oe{constructor(){super(...arguments);$(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:i}=n;return{...n,version:2,config:up(i,r)}})}}const pp={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new dp,name:"bar-3d",viewRender:rp,configRender:lp,createConfig(){return{version:2,config:x.cloneDeep(Es)}},translation:cp},hp=({disabled:t,value:e,onChange:n})=>{const r=i=>{i&&n(i)};return s.jsxs(o.Box,{sx:{position:"relative"},children:[t&&s.jsx(o.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),s.jsx($e,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:t}})]})};function Ee({enabled:t,func_content:e}){return(n,r)=>{if(!t)return n;try{return new Function(`return ${e}`)()(n,r)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),n}}}function Se(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
56
|
+
`,"<br/>").split("<br/>");return n.map((i,a)=>{const l=[zd(i)];return a!==n.length-1&&l.push(s.jsx("br",{},`br-${a}`)),l}).flat().filter(i=>i!==void 0)}function Ds(t){return Md(t)}function on(t,e,n){const r=Dd(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map((a,l)=>{const c=i.exec(a);if(!c)return Ds(a);const u=r[c[1]];if(!u)return Ds(a);const d=c[2]??"";return s.jsxs(m.Fragment,{children:[u,Ds(d)]},`${a}-${l}`)})}function Id(t,e){const{data_field:n,aggregation:r}=t,i=Dn(e,n,r);return Ne(t,i)}function ga(t,e){const n={};return t.forEach(r=>{n[r.name]=Id(r,e)}),n}function zn(t,e,n){const r=ga(e,n),i=/^\{(.+)\}(.*)$/;return t.split("$").map(a=>{const l=i.exec(a);if(!l)return a;const c=r[l[1]];if(!c)return a;const u=l[2]??"";return`${c}${u}`}).join("")}const Tt={grid:{axis:"#97999D",scope:"rgba(47,140,192,0.1)",boundary:"#789AB4",reference:"#CFCFD8"},graphics:{compared:{blueDark:"#3E7CAB",blue:"#6398C7",blueLight:"#7CB0DF",blue10:"#6398C71a",redDark:"#AF5F6B",red:"#CD7C88",redLight:"#E794A0",red10:"#CD7C881a"},gradient:{distributed:"linear-gradient(90deg, #1babe6 0%, #2fc8c8 28.63%, #98d44b 48.86%, #ffd057 67.53%, #f5ae53 80.6%, #e76441 91.18%, #b90000 100%)",protrude:"linear-gradient(180deg, #ec73734d 0%, #ec737300 100%)"},level:{lv0:"#6398C7",lv1:"#61B5BF",lv2:"#54D4BB",lv3:"#F5D277",lv4:"#E8BB7F",lv5:"#DB9E84",lv6:"#CB8089"},depth:{dp0:"#FFF7F8",dp1:"#FFE1E1",dp2:"#FDBCBC",dp3:"#F39494",dp4:"#FA4242",dp5:"#E21212"},multiple:{c1:"#66B4DB",c2:"#E46464",c3:"#EEBA00",c4:"#33A678",c5:"#9D88CB",c6:"#939943",c7:"#E49792",c8:"#09A2B8",c9:"#AF5F6B",c10:"#6CA157",c11:"#3E7CAB",c12:"#6398C7",c13:"#E692BA",c14:"#97B566",c15:"#8CACE2",c16:"#CA79AC",c17:"#6DBC80",c18:"#B08F4B",c19:"#39BFA2",c20:"#826BAF"}}};function Ed(){we.registerTheme("merico-light",{color:Object.values(Tt.graphics.multiple),visualMap:{color:Object.values(Tt.graphics.depth).reverse()},axes:[{type:"all",name:"通用坐标轴",axisLineColor:"#97999D",axisTickColor:"#97999D",axisLabelShow:!0,axisLabelColor:"#818388",splitLineShow:!0,splitLineColor:["#E0E6F1"]}]})}function xa(){Ed()}function*Ad(t){const e=Tt.graphics[t];if(!e)throw new Error("Invalid palette key provided");const n=Object.values(e);let r=0;for(;;)yield n[r%n.length],r++}function ya(){return{filters:{},context:{}}}function zs(t){const e=ya();if(!t)return ya();const{filters:n=e.filters,context:r=e.context}=t;return{filters:n,context:r}}class Ce extends m.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){this.setState({error:e})}render(){var e;if(this.state.error){const n=()=>{this.setState({error:null})};return s.jsxs(o.Box,{children:[s.jsx(o.Text,{size:"xs",children:(e=this.state.error)==null?void 0:e.message}),s.jsx(o.Button,{variant:"subtle",size:"xs",mx:"auto",compact:!0,sx:{display:"block"},onClick:n,children:"Retry"})]})}return this.props.children}}function Pd(t,e={handleError:!0}){return n=>s.jsx(Ce,{...e,children:s.jsx(t,{...n})})}function $d(t,e){return new Function(`return ${t}`)()(e,tt)}function Bd(t,e,n){return $d(t,{context:e,filters:n})}function Ld(t,e){try{return new Function(`return ${t.config.processing.pre}`)()(e,tt)}catch(n){return console.error(n),e}}function qd(t,e){return new Function(`return ${t.config.processing.post}`)()(e,tt)}function Od(t,e,n){return t?new Function(`return ${t}`)()(e,tt,n):e}function ba(){Ni.use([_u.CanvasRenderer,et.BarChart,et.BoxplotChart,et.CustomChart,et.FunnelChart,et.HeatmapChart,et.LineChart,et.PieChart,et.RadarChart,et.ScatterChart,et.SunburstChart,bt.CalendarComponent,bt.DataZoomComponent,bt.GridComponent,bt.LegendComponent,bt.TooltipComponent,bt.MarkLineComponent,bt.MarkAreaComponent,bt.VisualMapComponent])}const Nt=t=>x.cloneDeepWith(t,(e,n)=>{if(n!==void 0&&e)return K.toJS(e)}),Mn={sqlSnippet:new RegExp("(?<=sql_snippets\\.)([^\\?}.]+)","gm"),context:new RegExp("(?<=context\\.)([^\\?}.]+)","gm"),filter:new RegExp("(?<=filters\\.)([^\\?}.]+)","gm")};function Vd(t,e){const n=Gi.decode(e);n!==t&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:t,after:e,v:n}),console.groupEnd())}async function Nd({query:t,name:e,payload:n,additionals:r},i){if(!t.sql)return[];const{type:a,key:l,sql:c,pre_process:u,post_process:d}=t,p=Cs(c,n),h=md({sql:p,pre_process:u}),g=Gi.encode(h);Vd(h,g);let y=await nt.query(i)({type:a,key:l,query:g,...r},{params:{name:e}});return y=fd(d,y,zs(n)),y}async function Gd({type:t,key:e,configString:n,name:r,additionals:i},a){try{return await nt.httpDataSourceQuery(a)({type:t,key:e,query:n,...i},{params:{name:r}})}catch(l){if(lt.isCancel(l))throw l;return console.error(l),l}}async function Ms(){try{return(await nt.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(t){return console.error(t),[]}}async function va(){try{return(await nt.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(t){return console.error(t),[]}}class _a{constructor(e){$(this,"rootRef");this.rootRef=K.observable({current:e})}async deleteItem(e){K.runInAction(()=>{x.unset(this.rootRef.current,[e])})}getItem(e){const n=this.getValueFromRoot(e);return Promise.resolve(n)}getValueFromRoot(e){return e===null?K.toJS(this.rootRef.current):x.get(this.rootRef.current,[e])}setItem(e,n){if(e===null)if(x.isObject(n))K.runInAction(()=>{this.rootRef.current=n});else throw new Error("Cannot set root value to non-object");else K.runInAction(()=>{x.set(this.rootRef.current,[e],n)});return Promise.resolve(this.getItem(e))}watchItem(e,n,r){return K.reaction(()=>this.getValueFromRoot(e),(i,a)=>{n(i,a)},{requiresObservable:!0,fireImmediately:x.get(r,"fireImmediately",!1)})}}class Fd{constructor(){$(this,"channels",new Map);$(this,"globalChannel",new Fi)}getChannel(e){const n=this.channels.get(e);if(n)return n;const r=new Fi;return this.channels.set(e,r),r}}class Wd{constructor(e){$(this,"instances",new Map);this.pluginManager=e}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(e=>e.manifest.viz)}resolveComponent(e){return this.pluginManager.factory.viz(e)}getOrCreateInstance(e){const n=this.instances.get(e.id);if(n)return n;const r={id:e.id,name:e.viz.type,type:e.viz.type,messageChannels:new Fd,instanceData:new _a(e.viz.conf)};return this.instances.set(e.id,r),r}}function ja(t,e,n,r){return{vizManager:n,locale:"zh",msgChannels:t.messageChannels,instanceData:t.instanceData,pluginData:new _a({}),colorPalette:{getColor(){return()=>""}},data:e,variables:r}}const Qd=t=>{const{panel:e,measure:n,vizManager:r,data:i,variables:a}=t,l=r.resolveComponent(e.viz.type),c=r.getOrCreateInstance(e),u={...ja(c,i,r,a),viewport:{width:n.w,height:n.h}},d=l.viewRender;return s.jsx(d,{context:u,instance:c,...x.omit(t,["panel","vizManager","data"])})},Rd=t=>{const{vizManager:e,panel:n,data:r,variables:i}=t,a=e.resolveComponent(n.viz.type),l=e.getOrCreateInstance(n),c={...ja(l,r,e,i)},u=a.configRender;return s.jsx(u,{context:c,instance:l,...x.omit(t,["panel","vizManager","data"])})},wa=(t,e)=>{const n=ct.bezier(t),r=ct.bezier(e);return function(i){return i<50?n(i*2/100).hex():r((i-50)*2/100).hex()}},In=t=>{const e=ct.bezier(t);return function(n){return e(n/100).hex()}},Ud={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:wa(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Yd={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:wa(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Kd={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:In(["#fff7f1","darkred"]),name:"red",category:"sequential"},Jd={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:In(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Xd={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:In(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Zd={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:In(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Hd{constructor(e){$(this,"symbol");this.symbol=Symbol(e)}}function pt(t){return new Hd(t)}class Is{constructor(){$(this,"parent");$(this,"factoryRegistry",new Map);$(this,"instanceRegistry",new Map)}createScoped(){const e=new Is;return e.parent=this,e}getRequired(e){return this.get(e)}get(e){if(this.instanceRegistry.has(e.symbol))return this.instanceRegistry.get(e.symbol);const n=this.factoryRegistry.get(e.symbol);if(n){const r=n(this);return this.instanceRegistry.set(e.symbol,r),r}if(this.parent)return this.parent.get(e)}provideFactory(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,n),this}provideValue(e,n){return this.factoryRegistry.has(e.symbol)?console.warn(`Token ${e.symbol.toString()} is already registered`):this.factoryRegistry.set(e.symbol,()=>n),this}dispose(){this.instanceRegistry.forEach(e=>{const n=x.get(e,"dispose");x.isFunction(n)&&n.bind(e)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Ca="13.8.1",ep=Object.freeze(Object.defineProperty({__proto__:null,version:Ca},Symbol.toStringTag,{value:"Module"}));class tp{constructor(e){$(this,"staticColors",new Map);$(this,"interpolations",new Map);e.installedPlugins.forEach(n=>{n.manifest.color.forEach(r=>{this.register(r)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(e){const n=this.encodeColor(e);e.type==="single"?(this.staticColors.has(n)&&console.warn(`the color '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.staticColors.set(n,e)):e.type==="interpolation"&&(this.interpolations.has(n)&&console.warn(`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`,`the interpolation '${e.name}' has been registered under '${e.category}', previous registered value will be overridden`),this.interpolations.set(n,e))}decodeStaticColor(e){return this.staticColors.get(e)}encodeColor(e){return`\${${e.category}}.{${e.name}}`}decodeInterpolation(e){return this.interpolations.get(e)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class np{constructor(){$(this,"plugins",new Map);$(this,"vizComponents",new Map);$(this,"factory",{viz:e=>{const n=this.vizComponents.get(e);if(n)return n;throw new Error(`Viz Component (${e}) not found`)}})}install(e){if(this.plugins.has(e.id))throw new Error(`Plugin (${e.id}) has been installed before`);this.plugins.set(e.id,e);for(const n of e.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 sp{constructor(){$(this,"migrations",[])}version(e,n){return this.migrations.push({version:e,handler:n}),this}run(e,n,r){var l;if(e.from===e.to)return n;if(e.from>e.to)throw new Error(`Can not downgrade from version '${e.from}' to (${e.to})`);const i=this.migrations.filter(c=>c.version>e.from&&c.version<=e.to),a=x.orderBy(i,"version","asc");if(((l=x.last(a))==null?void 0:l.version)!==e.to)throw new Error(`Migration to version ${e.to} not found`);return a.reduce((c,u)=>u.handler(c,r),n)}}class oe extends sp{constructor(){super(),this.configVersions()}version(e,n){return super.version(e,(r,i)=>({version:e,...n(r,i)}))}async migrate({configData:e,panelModel:n}){const r=await e.getItem(null),i=x.get(r,"version",0),a=this.run({from:i,to:this.VERSION},r,{panelModel:n});await e.setItem(null,a)}async needMigration({configData:e}){const n=await e.getItem(null);return x.get(n,"version",0)<this.VERSION}}const O=(t,e)=>{const[n,{setFalse:r}]=N.useBoolean(!0),[i,a]=m.useState();m.useEffect(()=>(t.getItem(e).then(c=>{a(c),r()}),t.watchItem(e,c=>{a(c)})));const l=m.useCallback(async c=>{await t.setItem(e,c),a(c)},[t,e]);return{loading:n,value:i,set:l}},Me={top:16,right:16,bottom:16,left:16},Je=t=>Math.max(0,t-Me.left-Me.right),Xe=t=>Math.max(0,t-Me.top-Me.bottom),ln=(t,e)=>({width:Je(t),height:Xe(e)}),Ie=({width:t,height:e,children:n})=>s.jsx(o.Box,{pt:Me.top,pr:Me.right,pb:Me.bottom,pl:Me.left,sx:{width:t,height:e,overflow:"hidden",position:"relative"},children:n}),Es={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 rp({context:t}){const{value:e}=O(t.instanceData,"config"),n=t.data,{width:r,height:i}=t.viewport,{x_axis_data_key:a,y_axis_data_key:l,z_axis_data_key:c,xAxis3D:u,yAxis3D:d,zAxis3D:p}=x.defaults({},e,Es),h=m.useMemo(()=>kn(n,a),[n,a]),{x:g,y,z:v}=m.useMemo(()=>({x:E(a),y:E(l),z:E(c)}),[a,l,c]),{min:w,max:T}=m.useMemo(()=>{const I=x.minBy(h,Q=>Q[v.columnKey]),P=x.maxBy(h,Q=>Q[v.columnKey]);return{min:x.get(I,v.columnKey),max:x.get(P,v.columnKey)}},[h,v]),D={tooltip:{},backgroundColor:"#fff",visualMap:{show:!0,dimension:2,min:w,max:T,inRange:{color:["#313695","#4575b4","#74add1","#abd9e9","#e0f3f8","#ffffbf","#fee090","#fdae61","#f46d43","#d73027","#a50026"]}},xAxis3D:u,yAxis3D:d,zAxis3D:p,grid3D:{viewControl:{projection:"orthographic",autoRotate:!1},light:{main:{shadow:!0,quality:"ultra",intensity:1.5}}},series:[{type:"bar3D",wireframe:{},data:h.map(I=>[I[g.columnKey],I[y.columnKey],I[v.columnKey]])}]};return e?s.jsx(Ie,{width:r,height:i,children:s.jsx(Te,{echarts:we,option:D,style:ln(r,i),notMerge:!0,theme:"merico-light"})}):null}const Sa=m.createContext(null),As=Sa.Provider;function Ps(){const t=m.useContext(Sa);if(!t)throw new Error("Please use DashboardModelContextProvider");return t}const Z=()=>Ps(),ka=()=>Ps(),Ta=m.createContext({searchButtonProps:{}}),$s=Ta.Provider;function Da(){return m.useContext(Ta)}const za=m.createContext(null),Bs=za.Provider;function Ma(){const t=m.useContext(za);if(!t)throw new Error("Please use ContentModelContextProvider");return t}const U=()=>Ma(),pe=()=>Ma(),ip={inEditMode:!1},En=m.createContext(ip),Ia=m.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{}}),Ls=Ia.Provider;function Ea(){const t=m.useContext(Ia);if(!t.panel)throw new Error("Please use PanelContextProvider");return t}const ht=()=>Ea(),Be=()=>Ea(),ap={fullScreenPanelID:"",setFullScreenPanelID:x.noop},qs=m.createContext(ap);function Aa(){const t=m.useContext(qs);if(!t)throw new Error("Please use FullScreenPanelContext.Provider");return t}const op={en:"en",zh:"zh-cn"};function Os({children:t}){const{i18n:e}=_.useTranslation(),n=m.useMemo(()=>{const r=e.language;return op[r]??"en"},[e.language]);return s.jsx(Wi.DatesProvider,{settings:{locale:n,firstDayOfWeek:1},children:t})}const q=S.observer(m.forwardRef(({label:t,required:e,description:n,value:r,onChange:i,queryID:a,clearable:l=!1,sx:c,...u},d)=>{const{panel:p}=Be(),h=m.useMemo(()=>p.dataFieldOptions(r,l,a),[r,l,a]);if(h.length===0){const g=p.explainDataKey(r);return s.jsxs(o.HoverCard,{shadow:"md",position:"bottom-start",withinPortal:!0,zIndex:320,children:[s.jsx(o.HoverCard.Target,{children:s.jsx(o.Box,{children:s.jsx(o.TextInput,{label:t,required:e,defaultValue:g.columnKey,readOnly:!0,disabled:!0})})}),s.jsx(o.HoverCard.Dropdown,{children:s.jsxs(o.Group,{position:"left",spacing:0,children:[s.jsx(o.Text,{size:"xs",color:g.queryName?"black":"red",sx:{fontFamily:"monospace"},children:g.queryName??g.queryID}),s.jsx(o.Text,{size:"xs",color:"black",sx:{fontFamily:"monospace"},children:"."}),s.jsx(o.Text,{size:"xs",color:"red",sx:{fontFamily:"monospace"},children:g.columnKey})]})})]})}return s.jsx(o.Select,{ref:d,label:t,description:n,data:h,value:r,onChange:i,required:e,sx:c,maxDropdownHeight:500,...u})}));function lp({context:t}){const{value:e,set:n}=O(t.instanceData,"config"),r=x.defaults({},e,Es),{control:i,handleSubmit:a,reset:l}=b.useForm({defaultValues:r});return m.useEffect(()=>{l(r)},[e]),e?s.jsx(o.Stack,{spacing:"xs",children:s.jsxs("form",{onSubmit:a(n),children:[s.jsx(o.Text,{children:"X Axis"}),s.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"x_axis_data_key",control:i,render:({field:c})=>s.jsx(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"xAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Y Axis"}),s.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"y_axis_data_key",control:i,render:({field:c})=>s.jsx(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"yAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Text,{mt:"lg",children:"Z Axis"}),s.jsxs(o.Group,{position:"apart",grow:!0,p:"md",sx:{position:"relative",border:"1px solid #eee"},children:[s.jsx(b.Controller,{name:"z_axis_data_key",control:i,render:({field:c})=>s.jsx(q,{label:"Data Field",required:!0,...c})}),s.jsx(b.Controller,{name:"zAxis3D.name",control:i,render:({field:c})=>s.jsx(o.TextInput,{sx:{flexGrow:1},size:"md",label:"Name",...c})})]}),s.jsx(o.Group,{position:"center",mt:"xl",grow:!0,sx:{width:"60%"},mx:"auto",children:s.jsxs(o.Button,{color:"blue",type:"submit",children:[s.jsx(B.DeviceFloppy,{size:20}),s.jsx(o.Text,{ml:"md",children:"Save"})]})})]})}):null}const cp=[{lang:"en",resources:{bar_chart_3d:{viz_name:"Bar Chart(3D)"}}},{lang:"zh",resources:{bar_chart_3d:{viz_name:"柱图(3D)"}}}];function up(t,{panelModel:e}){try{const n=e.queryIDs[0];if(!n)throw new Error("cannot migrate when queryID is empty");const r=u=>u&&`${n}.${u}`,{x_axis_data_key:i,y_axis_data_key:a,z_axis_data_key:l,...c}=t;return{...c,x_axis_data_key:r(i),y_axis_data_key:r(a),z_axis_data_key:r(l)}}catch(n){throw console.error("[Migration failed]",n),n}}class dp extends oe{constructor(){super(...arguments);$(this,"VERSION",2)}configVersions(){this.version(1,n=>({version:1,config:n})),this.version(2,(n,r)=>{const{config:i}=n;return{...n,version:2,config:up(i,r)}})}}const pp={displayName:"viz.bar_chart_3d.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new dp,name:"bar-3d",viewRender:rp,configRender:lp,createConfig(){return{version:2,config:x.cloneDeep(Es)}},translation:cp},hp=({disabled:t,value:e,onChange:n})=>{const r=i=>{i&&n(i)};return s.jsxs(o.Box,{sx:{position:"relative"},children:[t&&s.jsx(o.Overlay,{opacity:.6,color:"#fff",zIndex:5,blur:2}),s.jsx($e,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1},readOnly:t}})]})};function Ee({enabled:t,func_content:e}){return(n,r)=>{if(!t)return n;try{return new Function(`return ${e}`)()(n,r)}catch(i){return console.error(`[getEchartsXAxisLabel] failed parsing custom function, error: ${i.message}`),n}}}function Se(){return{enabled:!1,func_content:["function label(value, index) {"," // your code goes here"," // return value","}"].join(`
|
|
57
57
|
`)}}const Ze=m.forwardRef(({value:t,onChange:e,triggerButtonText:n},r)=>{const{t:i}=_.useTranslation(),[a,{setTrue:l,setFalse:c}]=N.useBoolean(),[u,d]=m.useState(t);m.useEffect(()=>{d(t)},[t]);const p=T=>{d({...u,enabled:T})},h=()=>{c();const{enabled:T,func_content:D}=u,I={enabled:T,func_content:D};d(I),e(I)},g=()=>{c(),d(t)},y=T=>{d(D=>({...D,func_content:T}))},v=()=>{y(Se().func_content)},w=n??i("chart.axis.customize_label");return s.jsxs(s.Fragment,{children:[s.jsx(o.Button,{variant:"filled",color:"grape",leftIcon:s.jsx(k.IconMathFunction,{size:16}),mt:24,onClick:l,sx:{flexGrow:0},children:w}),s.jsx(o.Modal,{size:800,title:w,opened:a,onClose:c,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:a&&s.jsxs(o.Stack,{children:[s.jsx(o.Checkbox,{mt:10,label:i("common.enabled"),checked:u.enabled,onChange:T=>p(T.currentTarget.checked)}),s.jsx(hp,{value:u.func_content,onChange:y,disabled:!u.enabled}),s.jsxs(o.Group,{position:"apart",children:[s.jsx(o.Button,{onClick:v,color:"red",leftIcon:s.jsx(B.Recycle,{size:20}),children:i("common.actions.reset_to_default")}),s.jsxs(o.Group,{position:"right",children:[s.jsx(o.Button,{onClick:g,variant:"subtle",children:i("common.actions.cancel")}),s.jsx(o.Button,{color:"green",leftIcon:s.jsx(k.IconDeviceFloppy,{size:16}),onClick:h,children:i("common.actions.save")})]})]})]})})]})}),Dt={x_axis_scroll:!1,y_axis_scroll:!1,x_axis_slider:!1,y_axis_slider:!1};function Pa(){return x.cloneDeep(Dt)}const mp=[{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:"点击箱体、散点或异常点"}}}}],$a={id:"builtin:echarts:click-echart:series",displayName:"viz.boxplot.click_series.label",nameRender:gp,configRender:fp,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 fp(t){return s.jsx(s.Fragment,{})}function gp(t){const{t:e}=_.useTranslation();return s.jsx(o.Text,{children:e("viz.boxplot.click_series.label")})}const An=m.forwardRef(({sectionTitle:t,value:e,onChange:n},r)=>{const{t:i,i18n:a}=_.useTranslation(),l=u=>d=>{const p=x.cloneDeep(e);x.set(p,u,d),n(p)},c=m.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 s.jsxs(o.Stack,{spacing:0,children:[t&&s.jsx(o.Divider,{mb:-5,mt:5,variant:"dotted",label:t,labelPosition:"right",labelProps:{color:"dimmed"}}),s.jsxs(o.Group,{grow:!0,noWrap:!0,children:[s.jsx(o.NumberInput,{label:i("chart.axis.overflow.max_width"),hideControls:!0,value:e.width,onChange:l("width")}),s.jsx(o.Select,{label:i("chart.axis.overflow.label"),data:c,value:e.overflow,onChange:l("overflow")}),s.jsx(o.TextInput,{label:i("chart.axis.overflow.ellipsis"),value:e.ellipsis,disabled:!0})]})]})}),He=m.forwardRef(({value:t,onChange:e},n)=>{const{t:r}=_.useTranslation(),i=l=>{e({...t,on_axis:l})},a=l=>{e({...t,in_tooltip:l})};return s.jsxs(o.Stack,{ref:n,spacing:0,children:[s.jsx(An,{sectionTitle:r("chart.axis.overflow.section_title.on_axis"),value:t.on_axis,onChange:i}),s.jsx(An,{sectionTitle:r("chart.axis.overflow.section_title.in_tooltip"),value:t.in_tooltip,onChange:a})]})});function Ae(){return{on_axis:{width:80,overflow:"truncate",ellipsis:"..."},in_tooltip:{width:200,overflow:"break",ellipsis:"..."}}}function Ge({overflow:t,width:e}){const n={truncate:"initial",break:"break-all",breakAll:"break-word"}[t],r=t==="truncate"?"nowrap":"initial",i={truncate:"ellipsis",break:"clip",breakAll:"clip"}[t];return`
|
|
58
58
|
max-width: ${e}px;
|
|
59
59
|
word-break: ${n};
|