@devtable/dashboard 14.25.1 → 14.26.0
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 +252 -247
- 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.umd.js
CHANGED
|
@@ -6,7 +6,7 @@ Variable: {{ your_var }}`,tabs:{guide:"Guide",vars:"Dashboard state & Panel vari
|
|
|
6
6
|
-- 在富文本中,要使用双重花括号来包裹代码。
|
|
7
7
|
项目ID:{{ context.project_id }}
|
|
8
8
|
搜索关键字:{{ filters.keyword }}
|
|
9
|
-
我的卡片变量: {{ your_var }}`,tabs:{guide:"使用指南",vars:"看板信息与卡片的变量"}}}},style:{label:"样式",font_size:{label:"字号",placeholder:"10px, 1em, 1rem, 100%..."},font_weight:{label:"字重"},size:{xs:"特小",sm:"小",md:"中",lg:"大",xl:"特大"},flex:{justify_content:{label:"内容分布",left:"从左起",center:"居中",right:"从右起",space_between:"均匀分布,首尾顶格",space_around:"均匀分布,首尾留空一半",space_evenly:"均匀分布,首尾留空"},align_items:{label:"对齐位置",start:"起点对齐",center:"居中对齐",end:"末端对齐",stretch:"拉伸对齐"}},color:{type:{label:"颜色类型",static:"单色",interpolation:"插值取色",none:"无"},interpolation:{setup:"设置取色方案",palette:{label:"色板",category:{sequential:"单色渐变",diverging:"双色渐变"},red_green:"红 / 绿",yellow_blue:"黄 / 蓝",red:"红",green:"绿",blue:"蓝",orange:"橙",mapping:{value_input_label:"映射一个值到此颜色"}}}}},query:{label:"查询",labels:"查询",add:"新增查询",delete:"删除这个查询",cant_delete:"此查询在使用中,不能删除。请查看“使用情况”标签页以了解详情",delete_unused:"删除未用到的查询",name:"名称",name_description:"唯一名称",manage:"管理查询",open:"打开此查询",configurations:"配置",basics:"基本信息",conditions:"条件",run_by_condition:{label:"以下条件为真时,才运行本查询",description:"为假的情况: 空数组 / NaN / false / 空字符串 / undefined / null",unset:"留空则在看板加载时便运行本查询"},re_run_condition:{label:"当以下条件改变时,重新运行此查询",unset:"留空则永不重新运行此查询"},dependency:{label:"依赖",has_none:"此查询无依赖"},edit_sql:"编辑SQL",preview_sql:"预览SQL",request:"请求",build_request:"构造请求",process_request:"加工请求",process_result:"加工结果",usage:{label:"使用情况",in_views:"所在视图",unused_description:"此查询未被任何筛选器或卡片用到"},transform:{label:"查询变形",full_label:"查询变形",data_source:"基于其他查询的数据,加工出新数据",guide:{pick_queries:"选择一至多个查询作为数据输入",write_function:"编写函数,返回新数据"}}},data:{label:"数据",preview_data:"预览数据",empty_data:"无数据",requires_data:"请先关联查询"},data_source:{label:"数据源",explore:"查看数据源",explorer:"数据源查看器",table_structure:"数据表结构",table_structure_short:"表结构",see_table_structure:"查看数据表结构"},visualization:{label:"可视化",component:"可视化组件",label_short:"可视化"},numbro:{format:{label:"格式",absolute:"绝对值",absolute_description:"非负",abbreviation:"缩写",abbreviation_description:"如1.23k、1.23m",mantissa:"小数",trim_mantissa:"抹零",trim_mantissa_description:"省略末尾的零",preview:{open:"展开预览",close:"收起预览",input:"输入",output:"输出"}}},import:{label:"导入...",title:"自描述文件导入看板内容",json_file:"描述文件(JSON格式)",this_dashboard:"此看板",this_file:"此文件"},function_utils:{trigger_text:"关于utils参数",modal_title:"关于utils参数",description:"参数 <code>utils</code> 是 <code>FunctionUtils</code>,包含以下内容:",document:"文档"},aggregation:{option:{none:"无",sum:"和",mean:"平均值",median:"中位数",min:"最小值",max:"最大值",cov:"变异系数",std:"标准差",quantile:{label:"分位",label_with_hint:"分位(99%, 95%, ...)"},custom:{label:"自定义",label_trigger:"编写函数",title:"自定义聚合方式"},pick_record:{label:"直接选择数据",method:{label:"数据记录",first:"第一条",last:"最后一条"}}}},rich_text:{label:"富文本",content:{label:"内容"},dynamic_color:{label:"动态颜色",edit:"编辑动态颜色",clear:"清除动态颜色"},color_mapping:{label:"颜色映射",edit:"编辑颜色映射",clear:"清除颜色映射",choose_value_var:"选择用于映射颜色的变量",min:{val:"固定最小值",var:"动态最小值(优先)"},max:{val:"固定最大值",var:"动态最大值(优先)"}}},chart:{chart_config:"图表设置",data_field:"数据字段",groups:{merico_suite:"思码逸套件",echarts_based_charts:"基于ECharts的图表",others:"其他"},series_order:{label:"排序依据",name:"名称",value:"值",raw:"不排序,保持数据本身的顺序",asc:"升序",desc:"降序"},label:{label:"文案",label_full:"标签文案",label_style:"标签文案样式",label_format:"标签文案格式"},label_position:{label:"文案位置",off:"不显示文案",top:"上",left:"左",right:"右",bottom:"下",inside:"内",inside_top:"内-上",inside_left:"内-左",inside_center:"内-中",inside_right:"内-右",inside_bottom:"内-下",inside_top_left:"内-上-左",inside_top_right:"内-上-右",inside_bottom_left:"内-下-左",inside_bottom_right:"内-下-右",outside:"外"},visual_map:{label:"视觉映射",continuous:{label:"连续型"},piecewise:{label:"分段型",mode:{pieces:"连续数据",categories:"离散数据"},add_a_piece:"加一个分段",interval:"值区间",piece_label:"文案"},bar_width:"长条的宽度",bar_height:"长条的高度",item_width:"小块的宽度",item_height:"小块的高度",calculable:"显示拖拽手柄",min_value:"最小值",max_value:"最大值",min_text:"最小值文案",max_text:"最大值文案",use_palette_x:'使用配色方案"{{x}}"',built_in_palettes:"内置配色方案",precision:"数据精度",skip_range:{lt_min:"小于最小值时的颜色",min:"最小值的颜色",max:"最大值的颜色",gt_max:"大于最大值时的颜色",follow_visual_map:"颜色跟随渐变规则"}},number_or_dynamic_value:{type:{static:"具体值",dynamic:"动态值"},dynamic:{setup:"设置",setup_title:"设置动态值",guide:"由函数确定动态值"}},orientation:{label:"朝向",horizontal:"水平",vertical:"垂直"},symbol_size:{label:"标记点大小",static:"固定值",dynamic:"动态值",setup:{label:"设置",title:"设置动态值",description:"由函数确定动态值"}},series:{label:"系列",name:"名称",y_axis:"Y轴",data_field:"数据字段",add:"增加一个系列",delete:"删除这个系列",line:{label:"线",line_settings:"线段设置",line_style:"线条样式",type:{label:"类型",solid:"实线",dashed:"方虚线",dotted:"圆点虚线"},line_width:"线宽",step:{label:"阶梯状",off:"不启用",start:"在当前点拐弯",middle:"在当前点与下个点中间拐弯",end:"在下个点拐弯"},smooth_line:"平滑曲线",show_name_on_line:"显示标签文案",show_symbol_on_line:"显示标记点",area_style:{label:"区域填充样式",enabled:"启用区域填充",color:"填充颜色",use_series_color:"沿用系列本色",origin:{label:"图形区域的起始位置",auto:{label:"自动",description:"填充坐标轴线到数据间的区域(默认)"},start:{label:"自下而上",description:"填充坐标轴底部到数据间的区域"},end:{label:"自上而下",description:"填充坐标轴顶部到数据间的区域"}},shadow_blur:"图形阴影的模糊大小",shadow_color:"图形阴影的颜色",shadow_offset_x:"阴影水平方向上的偏移距离",shadow_offset_y:"阴影垂直方向上的偏移距离",opacity:"图形透明度"}},bar:{label:"柱",stack:"堆放",stack_hint:"此值相同的柱系列会堆叠在一起",bar_gap:{label:"柱间隔",no_gap:"柱子之间无间隔",overlap:"柱子可互相重叠"},bar_width:{min:"最小柱宽",exact:"柱宽",max:"最大柱宽"}},scatter:{label:"散点"},group_by:{label:"按此字段拆分为多个系列",label_line:"按此字段拆分为多条线"}},axis:{tick_label:"刻度文案",customize_label:"自定义文案",overflow:{label:"溢出",max_width:"最大宽度",truncate:"截断",break_line:"换行",break_word:"断词换行",ellipsis:"省略符",section_title:{on_axis:"轴刻度上文案的溢出",in_tooltip:"提示框中的文案溢出"}},section_title:{label_format:"文案格式"},type:{value:"数值轴",category:"类目轴",time:"时间轴",log:"对数轴",click_to_learn_more:"点击 <1>这里</1> 以进一步了解这些选项"}},name_text:{align:{label:"名称贴靠侧",left:"左",center:"中",right:"右"}},rotate:"旋转",degree:"度",padding:"内间距",content_template:{label:"内容模板",hint:"均值: ${avg}"},x_axis:{label:"X轴",labels:"X轴",label_format:"刻度文案格式",add:"增加一条X轴",delete:"删除这条X轴",x_axis_name:"X轴名称",x_axis_data_field:"X轴数据字段",x_axis_type:"X轴类型",layout:"布局",position:{label:"位置",top:"上",bottom:"下"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见"},y_axis:{label:"Y轴",labels:"Y轴",label_format:"刻度文案格式",add:"增加一条Y轴",delete:"删除这条Y轴",y_axis_name:"Y轴名称",y_axis_name_anchor:"名称贴靠侧",y_axis_data_field:"Y轴数据字段",inverse:"反向坐标轴",layout:"布局",position:{label:"位置",left:"左",right:"右"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见",mirror:{label:"上下镜像"}},stats:{label:"统计内容",template:{above_chart:"统计内容(图表上方)",under_chart:"统计内容(图表下方)"}},legend:{label:"图例",show_legend:"显示图例",show_in_legend:"显示在图例中",hide_in_legend:"不显示在图例中",orientation:{label:"布局朝向",horizontal:"横向",vertical:"纵向"}},tooltip:{label:"提示框",additional_metrics:{description:"在此设置更多指标,来展示在散点的提示框",add:"增加一个指标",delete:"删除这个指标"},trigger:{label:"触发者",scatter_point:"散点",x_axis:"X轴"}},style:{label:"样式"},color:{label:"颜色",background_color:"背景色",text_color:"文字颜色",click_to_add_a_color:"点击增加一个颜色",color_gradient:"颜色渐变",not_set:"未设置"},behavior:{label:"表现",invisible:"隐藏不可见"},heatmap:{heatblock:{label:"热力块",show_label:"展示值文案"}},reference_line:{label:"参考线",labels:"参考线",add:"增加一条参考线",name_placeholder:"均值参考线",delete:"删除这条参考线",orientation:{vertical_hint:"仅当X轴值为数字时可绘制"}},regression_line:{label:"回归线",labels:"回归线",add:"增加一条回归线",delete:"删除这条回归线",method:{label:"方法",linear:"线性回归",exponential:"指数回归",logistic:"指数回归",polynomial:"多项式回归",polynomial_order:"次"}},reference_area:{label:"参考区域",labels:"参考区域",add:"增加一面参考区域",delete:"删除这面参考区域",type:{label:"形状",rectangle:"矩形"},direction:{label:"方向",horizontal:"水平"},boundary:{upper:"上边界",lower:"下边界"},content:{label:"内容",content_text:"内容文字",text_position:"文字位置"},endpoint:{labels:"端点",left_bottom_point:"左下点",right_top_point:"右上点"}},zooming:{label:"缩放",scroll:{label:"滚轮缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用"},slider:{label:"滚动条缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用",y_axis_disabled:"暂不可用,会与Y轴刻度文字重叠"}}},viz:{viz_config_banner:"可视化参数配置"},validation:{number:{require_a_number:"请填写一个数字"}},spotlight:{trigger_text:"搜索",main_group:"主要项",placeholder:"打开…",not_found:"无匹配项"}}};class Ft{constructor(t){P(this,"rootRef");this.rootRef=j.observable({current:t})}async deleteItem(t){j.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?j.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(b.isObject(r))j.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else j.runInAction(()=>{b.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return j.reaction(()=>this.getValueFromRoot(t),(l,o)=>{r(l,o)},{requiresObservable:!0,fireImmediately:b.get(a,"fireImmediately",!1)})}}class Pd{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new Na)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new Na;return this.channels.set(t,a),a}}class Vd{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const a={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Pd,instanceData:new Ft(t.viz.conf)};return this.instances.set(t.id,a),a}}function ds(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Ft({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const $d=e=>{const{panel:t,measure:r,vizManager:a,data:l,variables:o}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...ds(c,l,a,o),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...b.omit(e,["panel","vizManager","data"])})},Ed=e=>{const{vizManager:t,panel:r,data:a,variables:l}=e,o=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...ds(i,a,t,l)},d=o.configRender;return n.jsx(d,{context:c,instance:i,...b.omit(e,["panel","vizManager","data"])})},us=(e,t)=>{const r=Ee.bezier(e),a=Ee.bezier(t);return function(l){return l<50?r(l*2/100).hex():a((l-50)*2/100).hex()}},jt=e=>{const t=Ee.bezier(e);return function(r){return t(r/100).hex()}},Bd={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:us(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Ld={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:us(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},qd={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:jt(["#fff7f1","darkred"]),name:"red",category:"sequential"},Od={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:jt(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Nd={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:jt(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Gd={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:jt(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Fd{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function Ue(e){return new Fd(e)}class An{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new An;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const r=this.factoryRegistry.get(t.symbol);if(r){const a=r(this);return this.instanceRegistry.set(t.symbol,a),a}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=b.get(t,"dispose");b.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}class jd{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(l=>l.manifest.panelAddon).filter(l=>!!l).map(l=>h.createElement(l.addonRender,{...t,key:l.name}));return n.jsx(n.Fragment,{children:a})}}const ps=h.createContext({addonSlotId:null});function hs({children:e}){const t=`panel-addon-slot-${h.useId()}`;return n.jsxs(ps.Provider,{value:{addonSlotId:t},children:[n.jsx("div",{style:{position:"static",top:0,left:0},id:t}),e]})}function Qd(){const{addonSlotId:e}=h.useContext(ps);return e?document.getElementById(e):null}const gs="14.25.1",Wd=Object.freeze(Object.defineProperty({__proto__:null,version:gs},Symbol.toStringTag,{value:"Module"}));class Ud{constructor(t){P(this,"staticColors",new Map);P(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(a=>{this.register(a)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(r,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Yd{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Kd{constructor(){P(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,a){var i;if(t.from===t.to)return r;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const l=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),o=b.orderBy(l,"version","asc");if(((i=b.last(o))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,d)=>d.handler(c,a),r)}}class R extends Kd{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,l)=>({version:t,...r(a,l)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),l=b.get(a,"version",0),o=this.run({from:l,to:this.VERSION},a,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return b.get(r,"version",0)<this.VERSION}}const B=(e,t)=>{const[r,{setFalse:a}]=O.useBoolean(!0),[l,o]=h.useState();h.useEffect(()=>(e.getItem(t).then(c=>{o(c),a()}),e.watchItem(t,c=>{o(c)})));const i=h.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:r,value:l,set:i}},ve={top:16,right:16,bottom:16,left:16},Le=e=>Math.max(0,e-ve.left-ve.right),qe=e=>Math.max(0,e-ve.top-ve.bottom),Mt=(e,t)=>({width:Le(e),height:qe(t)}),_e=({width:e,height:t,children:r})=>n.jsx(s.Box,{pt:ve.top,pr:ve.right,pb:ve.bottom,pl:ve.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:r});h.forwardRef(function({value:t,onChange:r,...a},l){return n.jsx(s.TextInput,{ref:l,value:t,onChange:r,...a})});class Xd{constructor({valueRange:t,colorRange:r}){P(this,"mapper");this.mapper=tt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function Zd(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{const r=Number(t);if(Number.isNaN(r))throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}, parsed: ${r}`);return new Xd(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const Jd=Zd;function A(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function Hd(e){return e.includes(".")?A(e):{queryID:"",columnKey:e}}function Me(e,t){var l;const{queryID:r,columnKey:a}=A(t);return r?a?((l=e[r])==null?void 0:l.map(o=>o[a]))??[]:e[r]:[]}function Qt(e,t){const{queryID:r}=A(t);return r?e[r]:[]}function Rd(e){return Object.values(e)[0]}function Wt(e,t){const{queryID:r,columnKey:a}=A(t);return e[a]}const Oe={CryptoJS:Fa,d3Array:cs,dayjs:I,lodash:b,numbro:ct,mathjs:vt,faker:Oc.faker,popmotion:zd},eu=[{name:"CryptoJS",url:"https://github.com/brix/crypto-js",version:"4.1.1"},{name:"d3Array",url:"https://github.com/d3/d3-array",version:"3.2.4"},{name:"dayjs",url:"https://day.js.org/",version:"1.11.6"},{name:"lodash",url:"https://lodash.com/docs/4.17.15",version:"4.17.21"},{name:"mathjs",url:"https://mathjs.org/",version:"11.12.0"},{name:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"faker",url:"https://fakerjs.dev/",version:"7.6.0"},{name:"popmotion",url:"https://popmotion.io/",version:"11.0.3"}],tu=e=>`
|
|
9
|
+
我的卡片变量: {{ your_var }}`,tabs:{guide:"使用指南",vars:"看板信息与卡片的变量"}}}},style:{label:"样式",font_size:{label:"字号",placeholder:"10px, 1em, 1rem, 100%..."},font_weight:{label:"字重"},size:{xs:"特小",sm:"小",md:"中",lg:"大",xl:"特大"},flex:{justify_content:{label:"内容分布",left:"从左起",center:"居中",right:"从右起",space_between:"均匀分布,首尾顶格",space_around:"均匀分布,首尾留空一半",space_evenly:"均匀分布,首尾留空"},align_items:{label:"对齐位置",start:"起点对齐",center:"居中对齐",end:"末端对齐",stretch:"拉伸对齐"}},color:{type:{label:"颜色类型",static:"单色",interpolation:"插值取色",none:"无"},interpolation:{setup:"设置取色方案",palette:{label:"色板",category:{sequential:"单色渐变",diverging:"双色渐变"},red_green:"红 / 绿",yellow_blue:"黄 / 蓝",red:"红",green:"绿",blue:"蓝",orange:"橙",mapping:{value_input_label:"映射一个值到此颜色"}}}}},query:{label:"查询",labels:"查询",add:"新增查询",delete:"删除这个查询",cant_delete:"此查询在使用中,不能删除。请查看“使用情况”标签页以了解详情",delete_unused:"删除未用到的查询",name:"名称",name_description:"唯一名称",manage:"管理查询",open:"打开此查询",configurations:"配置",basics:"基本信息",conditions:"条件",run_by_condition:{label:"以下条件为真时,才运行本查询",description:"为假的情况: 空数组 / NaN / false / 空字符串 / undefined / null",unset:"留空则在看板加载时便运行本查询"},re_run_condition:{label:"当以下条件改变时,重新运行此查询",unset:"留空则永不重新运行此查询"},dependency:{label:"依赖",has_none:"此查询无依赖"},edit_sql:"编辑SQL",preview_sql:"预览SQL",request:"请求",build_request:"构造请求",process_request:"加工请求",process_result:"加工结果",usage:{label:"使用情况",in_views:"所在视图",unused_description:"此查询未被任何筛选器或卡片用到"},transform:{label:"查询变形",full_label:"查询变形",data_source:"基于其他查询的数据,加工出新数据",guide:{pick_queries:"选择一至多个查询作为数据输入",write_function:"编写函数,返回新数据"}}},data:{label:"数据",preview_data:"预览数据",empty_data:"无数据",requires_data:"请先关联查询"},data_source:{label:"数据源",explore:"查看数据源",explorer:"数据源查看器",table_structure:"数据表结构",table_structure_short:"表结构",see_table_structure:"查看数据表结构"},visualization:{label:"可视化",component:"可视化组件",label_short:"可视化"},numbro:{format:{label:"格式",absolute:"绝对值",absolute_description:"非负",abbreviation:"缩写",abbreviation_description:"如1.23k、1.23m",mantissa:"小数",trim_mantissa:"抹零",trim_mantissa_description:"省略末尾的零",preview:{open:"展开预览",close:"收起预览",input:"输入",output:"输出"}}},import:{label:"导入...",title:"自描述文件导入看板内容",json_file:"描述文件(JSON格式)",this_dashboard:"此看板",this_file:"此文件"},function_utils:{trigger_text:"关于utils参数",modal_title:"关于utils参数",description:"参数 <code>utils</code> 是 <code>FunctionUtils</code>,包含以下内容:",document:"文档"},aggregation:{option:{none:"无",sum:"和",mean:"平均值",median:"中位数",min:"最小值",max:"最大值",cov:"变异系数",std:"标准差",quantile:{label:"分位",label_with_hint:"分位(99%, 95%, ...)"},custom:{label:"自定义",label_trigger:"编写函数",title:"自定义聚合方式"},pick_record:{label:"直接选择数据",method:{label:"数据记录",first:"第一条",last:"最后一条"}}}},rich_text:{label:"富文本",content:{label:"内容"},dynamic_color:{label:"动态颜色",edit:"编辑动态颜色",clear:"清除动态颜色"},color_mapping:{label:"颜色映射",edit:"编辑颜色映射",clear:"清除颜色映射",choose_value_var:"选择用于映射颜色的变量",min:{val:"固定最小值",var:"动态最小值(优先)"},max:{val:"固定最大值",var:"动态最大值(优先)"}}},chart:{chart_config:"图表设置",data_field:"数据字段",groups:{merico_suite:"思码逸套件",echarts_based_charts:"基于ECharts的图表",others:"其他"},series_order:{label:"排序依据",name:"名称",value:"值",raw:"不排序,保持数据本身的顺序",asc:"升序",desc:"降序"},label:{label:"文案",label_full:"标签文案",label_style:"标签文案样式",label_format:"标签文案格式"},label_position:{label:"文案位置",off:"不显示文案",top:"上",left:"左",right:"右",bottom:"下",inside:"内",inside_top:"内-上",inside_left:"内-左",inside_center:"内-中",inside_right:"内-右",inside_bottom:"内-下",inside_top_left:"内-上-左",inside_top_right:"内-上-右",inside_bottom_left:"内-下-左",inside_bottom_right:"内-下-右",outside:"外"},visual_map:{label:"视觉映射",continuous:{label:"连续型"},piecewise:{label:"分段型",mode:{pieces:"连续数据",categories:"离散数据"},add_a_piece:"加一个分段",interval:"值区间",piece_label:"文案"},bar_width:"长条的宽度",bar_height:"长条的高度",item_width:"小块的宽度",item_height:"小块的高度",calculable:"显示拖拽手柄",min_value:"最小值",max_value:"最大值",min_text:"最小值文案",max_text:"最大值文案",use_palette_x:'使用配色方案"{{x}}"',built_in_palettes:"内置配色方案",precision:"数据精度",skip_range:{lt_min:"小于最小值时的颜色",min:"最小值的颜色",max:"最大值的颜色",gt_max:"大于最大值时的颜色",follow_visual_map:"颜色跟随渐变规则"}},number_or_dynamic_value:{type:{static:"具体值",dynamic:"动态值"},dynamic:{setup:"设置",setup_title:"设置动态值",guide:"由函数确定动态值"}},orientation:{label:"朝向",horizontal:"水平",vertical:"垂直"},symbol_size:{label:"标记点大小",static:"固定值",dynamic:"动态值",setup:{label:"设置",title:"设置动态值",description:"由函数确定动态值"}},series:{label:"系列",name:"名称",y_axis:"Y轴",data_field:"数据字段",add:"增加一个系列",delete:"删除这个系列",line:{label:"线",line_settings:"线段设置",line_style:"线条样式",type:{label:"类型",solid:"实线",dashed:"方虚线",dotted:"圆点虚线"},line_width:"线宽",step:{label:"阶梯状",off:"不启用",start:"在当前点拐弯",middle:"在当前点与下个点中间拐弯",end:"在下个点拐弯"},smooth_line:"平滑曲线",show_name_on_line:"显示标签文案",show_symbol_on_line:"显示标记点",area_style:{label:"区域填充样式",enabled:"启用区域填充",color:"填充颜色",use_series_color:"沿用系列本色",origin:{label:"图形区域的起始位置",auto:{label:"自动",description:"填充坐标轴线到数据间的区域(默认)"},start:{label:"自下而上",description:"填充坐标轴底部到数据间的区域"},end:{label:"自上而下",description:"填充坐标轴顶部到数据间的区域"}},shadow_blur:"图形阴影的模糊大小",shadow_color:"图形阴影的颜色",shadow_offset_x:"阴影水平方向上的偏移距离",shadow_offset_y:"阴影垂直方向上的偏移距离",opacity:"图形透明度"}},bar:{label:"柱",stack:"堆放",stack_hint:"此值相同的柱系列会堆叠在一起",bar_gap:{label:"柱间隔",no_gap:"柱子之间无间隔",overlap:"柱子可互相重叠"},bar_width:{min:"最小柱宽",exact:"柱宽",max:"最大柱宽"}},scatter:{label:"散点"},group_by:{label:"按此字段拆分为多个系列",label_line:"按此字段拆分为多条线"}},axis:{tick_label:"刻度文案",customize_label:"自定义文案",overflow:{label:"溢出",max_width:"最大宽度",truncate:"截断",break_line:"换行",break_word:"断词换行",ellipsis:"省略符",section_title:{on_axis:"轴刻度上文案的溢出",in_tooltip:"提示框中的文案溢出"}},section_title:{label_format:"文案格式"},type:{value:"数值轴",category:"类目轴",time:"时间轴",log:"对数轴",click_to_learn_more:"点击 <1>这里</1> 以进一步了解这些选项"}},name_text:{align:{label:"名称贴靠侧",left:"左",center:"中",right:"右"}},rotate:"旋转",degree:"度",padding:"内间距",content_template:{label:"内容模板",hint:"均值: ${avg}"},x_axis:{label:"X轴",labels:"X轴",label_format:"刻度文案格式",add:"增加一条X轴",delete:"删除这条X轴",x_axis_name:"X轴名称",x_axis_data_field:"X轴数据字段",x_axis_type:"X轴类型",layout:"布局",position:{label:"位置",top:"上",bottom:"下"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见"},y_axis:{label:"Y轴",labels:"Y轴",label_format:"刻度文案格式",add:"增加一条Y轴",delete:"删除这条Y轴",y_axis_name:"Y轴名称",y_axis_name_anchor:"名称贴靠侧",y_axis_data_field:"Y轴数据字段",inverse:"反向坐标轴",layout:"布局",position:{label:"位置",left:"左",right:"右"},value_range:"值范围",value_min:"最小值",value_max:"最大值",behavior:"表现",visible:"可见",mirror:{label:"上下镜像"}},stats:{label:"统计内容",template:{above_chart:"统计内容(图表上方)",under_chart:"统计内容(图表下方)"}},legend:{label:"图例",show_legend:"显示图例",show_in_legend:"显示在图例中",hide_in_legend:"不显示在图例中",orientation:{label:"布局朝向",horizontal:"横向",vertical:"纵向"}},tooltip:{label:"提示框",additional_metrics:{description:"在此设置更多指标,来展示在散点的提示框",add:"增加一个指标",delete:"删除这个指标"},trigger:{label:"触发者",scatter_point:"散点",x_axis:"X轴"}},style:{label:"样式"},color:{label:"颜色",background_color:"背景色",text_color:"文字颜色",click_to_add_a_color:"点击增加一个颜色",color_gradient:"颜色渐变",not_set:"未设置"},behavior:{label:"表现",invisible:"隐藏不可见"},heatmap:{heatblock:{label:"热力块",show_label:"展示值文案"}},reference_line:{label:"参考线",labels:"参考线",add:"增加一条参考线",name_placeholder:"均值参考线",delete:"删除这条参考线",orientation:{vertical_hint:"仅当X轴值为数字时可绘制"}},regression_line:{label:"回归线",labels:"回归线",add:"增加一条回归线",delete:"删除这条回归线",method:{label:"方法",linear:"线性回归",exponential:"指数回归",logistic:"指数回归",polynomial:"多项式回归",polynomial_order:"次"}},reference_area:{label:"参考区域",labels:"参考区域",add:"增加一面参考区域",delete:"删除这面参考区域",type:{label:"形状",rectangle:"矩形"},direction:{label:"方向",horizontal:"水平"},boundary:{upper:"上边界",lower:"下边界"},content:{label:"内容",content_text:"内容文字",text_position:"文字位置"},endpoint:{labels:"端点",left_bottom_point:"左下点",right_top_point:"右上点"}},zooming:{label:"缩放",scroll:{label:"滚轮缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用"},slider:{label:"滚动条缩放",x_axis:"对X轴启用",y_axis:"对Y轴启用",y_axis_disabled:"暂不可用,会与Y轴刻度文字重叠"}}},viz:{viz_config_banner:"可视化参数配置"},validation:{number:{require_a_number:"请填写一个数字"}},spotlight:{trigger_text:"搜索",main_group:"主要项",placeholder:"打开…",not_found:"无匹配项"}}};class Ft{constructor(t){P(this,"rootRef");this.rootRef=j.observable({current:t})}async deleteItem(t){j.runInAction(()=>{b.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?j.toJS(this.rootRef.current):b.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(b.isObject(r))j.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else j.runInAction(()=>{b.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return j.reaction(()=>this.getValueFromRoot(t),(l,o)=>{r(l,o)},{requiresObservable:!0,fireImmediately:b.get(a,"fireImmediately",!1)})}}class Pd{constructor(){P(this,"channels",new Map);P(this,"globalChannel",new Na)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new Na;return this.channels.set(t,a),a}}class Vd{constructor(t){P(this,"instances",new Map);this.pluginManager=t}get availableVizList(){return this.pluginManager.installedPlugins.flatMap(t=>t.manifest.viz)}resolveComponent(t){return this.pluginManager.factory.viz(t)}getOrCreateInstance(t){const r=this.instances.get(t.id);if(r)return r;const a={id:t.id,name:t.viz.type,type:t.viz.type,messageChannels:new Pd,instanceData:new Ft(t.viz.conf)};return this.instances.set(t.id,a),a}}function ds(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new Ft({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const $d=e=>{const{panel:t,measure:r,vizManager:a,data:l,variables:o}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...ds(c,l,a,o),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...b.omit(e,["panel","vizManager","data"])})},Ed=e=>{const{vizManager:t,panel:r,data:a,variables:l}=e,o=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...ds(i,a,t,l)},d=o.configRender;return n.jsx(d,{context:c,instance:i,...b.omit(e,["panel","vizManager","data"])})},us=(e,t)=>{const r=Ee.bezier(e),a=Ee.bezier(t);return function(l){return l<50?r(l*2/100).hex():a((l-50)*2/100).hex()}},jt=e=>{const t=Ee.bezier(e);return function(r){return t(r/100).hex()}},Bd={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:us(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Ld={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:us(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},qd={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:jt(["#fff7f1","darkred"]),name:"red",category:"sequential"},Od={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:jt(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Nd={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:jt(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Gd={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:jt(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Fd{constructor(t){P(this,"symbol");this.symbol=Symbol(t)}}function Ue(e){return new Fd(e)}class An{constructor(){P(this,"parent");P(this,"factoryRegistry",new Map);P(this,"instanceRegistry",new Map)}createScoped(){const t=new An;return t.parent=this,t}getRequired(t){return this.get(t)}get(t){if(this.instanceRegistry.has(t.symbol))return this.instanceRegistry.get(t.symbol);const r=this.factoryRegistry.get(t.symbol);if(r){const a=r(this);return this.instanceRegistry.set(t.symbol,a),a}if(this.parent)return this.parent.get(t)}provideFactory(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,r),this}provideValue(t,r){return this.factoryRegistry.has(t.symbol)?console.warn(`Token ${t.symbol.toString()} is already registered`):this.factoryRegistry.set(t.symbol,()=>r),this}dispose(){this.instanceRegistry.forEach(t=>{const r=b.get(t,"dispose");b.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}class jd{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(l=>l.manifest.panelAddon).filter(l=>!!l).map(l=>h.createElement(l.addonRender,{...t,key:l.name}));return n.jsx(n.Fragment,{children:a})}}const ps=h.createContext({addonSlotId:null});function hs({children:e}){const t=`panel-addon-slot-${h.useId()}`;return n.jsxs(ps.Provider,{value:{addonSlotId:t},children:[n.jsx("div",{style:{position:"static",top:0,left:0},id:t}),e]})}function Qd(){const{addonSlotId:e}=h.useContext(ps);return e?document.getElementById(e):null}const gs="14.26.0",Wd=Object.freeze(Object.defineProperty({__proto__:null,version:gs},Symbol.toStringTag,{value:"Module"}));class Ud{constructor(t){P(this,"staticColors",new Map);P(this,"interpolations",new Map);t.installedPlugins.forEach(r=>{r.manifest.color.forEach(a=>{this.register(a)})})}getStaticColors(){return Array.from(this.staticColors.values())}register(t){const r=this.encodeColor(t);t.type==="single"?(this.staticColors.has(r)&&console.warn(`the color '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.staticColors.set(r,t)):t.type==="interpolation"&&(this.interpolations.has(r)&&console.warn(`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`,`the interpolation '${t.name}' has been registered under '${t.category}', previous registered value will be overridden`),this.interpolations.set(r,t))}decodeStaticColor(t){return this.staticColors.get(t)}encodeColor(t){return`\${${t.category}}.{${t.name}}`}decodeInterpolation(t){return this.interpolations.get(t)}getColorInterpolations(){return Array.from(this.interpolations.values())}}class Yd{constructor(){P(this,"plugins",new Map);P(this,"vizComponents",new Map);P(this,"factory",{viz:t=>{const r=this.vizComponents.get(t);if(r)return r;throw new Error(`Viz Component (${t}) not found`)}})}install(t){if(this.plugins.has(t.id))throw new Error(`Plugin (${t.id}) has been installed before`);this.plugins.set(t.id,t);for(const r of t.manifest.viz){if(this.vizComponents.has(r.name))throw new Error(`Viz Component (${r.name}) has been installed before`);this.vizComponents.set(r.name,r)}}get installedPlugins(){return Array.from(this.plugins.values())}}class Kd{constructor(){P(this,"migrations",[])}version(t,r){return this.migrations.push({version:t,handler:r}),this}run(t,r,a){var i;if(t.from===t.to)return r;if(t.from>t.to)throw new Error(`Can not downgrade from version '${t.from}' to (${t.to})`);const l=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),o=b.orderBy(l,"version","asc");if(((i=b.last(o))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return o.reduce((c,d)=>d.handler(c,a),r)}}class R extends Kd{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,l)=>({version:t,...r(a,l)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),l=b.get(a,"version",0),o=this.run({from:l,to:this.VERSION},a,{panelModel:r});await t.setItem(null,o)}async needMigration({configData:t}){const r=await t.getItem(null);return b.get(r,"version",0)<this.VERSION}}const B=(e,t)=>{const[r,{setFalse:a}]=O.useBoolean(!0),[l,o]=h.useState();h.useEffect(()=>(e.getItem(t).then(c=>{o(c),a()}),e.watchItem(t,c=>{o(c)})));const i=h.useCallback(async c=>{await e.setItem(t,c),o(c)},[e,t]);return{loading:r,value:l,set:i}},ve={top:16,right:16,bottom:16,left:16},Le=e=>Math.max(0,e-ve.left-ve.right),qe=e=>Math.max(0,e-ve.top-ve.bottom),Mt=(e,t)=>({width:Le(e),height:qe(t)}),_e=({width:e,height:t,children:r})=>n.jsx(s.Box,{pt:ve.top,pr:ve.right,pb:ve.bottom,pl:ve.left,sx:{width:e,height:t,overflow:"hidden",position:"relative"},children:r});h.forwardRef(function({value:t,onChange:r,...a},l){return n.jsx(s.TextInput,{ref:l,value:t,onChange:r,...a})});class Xd{constructor({valueRange:t,colorRange:r}){P(this,"mapper");this.mapper=tt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function Zd(e,t){if(e.type==="static")return e.staticColor;if(e.type==="continuous")try{const r=Number(t);if(Number.isNaN(r))throw new Error(`[getColorByColorConf] Invalid type of aggregated value: ${t}, parsed: ${r}`);return new Xd(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const Jd=Zd;function A(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function Hd(e){return e.includes(".")?A(e):{queryID:"",columnKey:e}}function Me(e,t){var l;const{queryID:r,columnKey:a}=A(t);return r?a?((l=e[r])==null?void 0:l.map(o=>o[a]))??[]:e[r]:[]}function Qt(e,t){const{queryID:r}=A(t);return r?e[r]:[]}function Rd(e){return Object.values(e)[0]}function Wt(e,t){const{queryID:r,columnKey:a}=A(t);return e[a]}const Oe={CryptoJS:Fa,d3Array:cs,dayjs:I,lodash:b,numbro:ct,mathjs:vt,faker:Oc.faker,popmotion:zd},eu=[{name:"CryptoJS",url:"https://github.com/brix/crypto-js",version:"4.1.1"},{name:"d3Array",url:"https://github.com/d3/d3-array",version:"3.2.4"},{name:"dayjs",url:"https://day.js.org/",version:"1.11.6"},{name:"lodash",url:"https://lodash.com/docs/4.17.15",version:"4.17.21"},{name:"mathjs",url:"https://mathjs.org/",version:"11.12.0"},{name:"numbro",url:"https://numbrojs.com/",version:"2.3.6"},{name:"faker",url:"https://fakerjs.dev/",version:"7.6.0"},{name:"popmotion",url:"https://popmotion.io/",version:"11.0.3"}],tu=e=>`
|
|
10
10
|
<tr>
|
|
11
11
|
<td><code>${e.name}</code></td>
|
|
12
12
|
<td>
|
|
@@ -131,7 +131,7 @@ Variable: {{ your_var }}`,tabs:{guide:"Guide",vars:"Dashboard state & Panel vari
|
|
|
131
131
|
</tbody>
|
|
132
132
|
</table>
|
|
133
133
|
`}})}function Cf(e){return e.y_axes.reduce((r,{label_formatter:a},l)=>(r[l]=function(i){let c=i;if(typeof i=="object"&&(Array.isArray(i.value)&&i.value.length===2?c=i.value[1]:c=i.value),!a)return c;try{return U(c,a)}catch(d){return console.error(d),c}},r),{default:({value:r})=>r})}function gr(e,t){const r={};return t.map(a=>{const l=Ke(a,e);r[a.name]=Ae(a,l)}),r}function Tf(e,t){const{overflow:r,...a}=e.x_axis.axisLabel,l=Ve(r.on_axis),o=t.length===0;return[K.getXAxis({data:t,name:e.x_axis_name??"",nameGap:o?5:void 0,id:"main-x-axis",type:e.x_axis.type,axisLabel:{...a,...l,formatter:xe(a.formatter)}})]}function Sf(e){var t;if(!e)return[];try{return Array.isArray(e[0])&&((t=e[0])==null?void 0:t.length)>=2?e.map(a=>Number(a[1])):[...e]}catch(r){return console.error(r),[...e]}}function kf(e){if(e.length===0)return{};const t={},r={};return e.forEach(a=>{const l=Sf(a.data);if(!r[a.yAxisIndex]){r[a.yAxisIndex]=l;return}r[a.yAxisIndex]=r[a.yAxisIndex].concat(l)}),Object.entries(r).forEach(([a,l])=>{const o=b.minBy(l)??0,i=b.maxBy(l)??0;o==0&&i==0&&(t[a]=1)}),t}function vl(e,t,r,a,l){return a?o=>{const i=t&&Number.isFinite(Number(t))?Math.abs(Number(t)):Math.abs(o.min),c=r&&Number.isFinite(Number(r))?Math.abs(Number(r)):Math.abs(o.max),d=Math.max(i,c,0);return l*d}:e||void 0}function zf(e,t,r){const a=kf(r);return e.y_axes.map(({nameAlignment:l,min:o,max:i,show:c,mirror:d,...u},p)=>{let f=u.position;return f||(f=p>0?"right":"left"),K.getYAxis({...u,minInterval:a[p]??0,show:c,alignTicks:d,min:vl(o,o,i,d,-1),max:vl(i,o,i,d,1),position:f,axisLabel:{show:c,formatter:t[p]??t.default},nameTextStyle:{align:l},nameLocation:"end",nameGap:c?15:0,splitLine:{show:p===0}})})}const Df={xAxis:[{type:"category",nameGap:25,nameLocation:"center",nameTextStyle:{fontWeight:"bold"},splitLine:{show:!1},axisTick:{show:!0,alignWithLabel:!0}}]};function If(e,t,r){const a=gr(t,r),l=Cf(e),o=b.uniq(Me(t,e.x_axis_data_key)),i=_f(e,o,t,l,r,a),c=cf(e,t),d={xAxis:Tf(e,o),yAxis:zf(e,l,i),series:[...i,...c],tooltip:wf(e,t,i,l),grid:rf(e),legend:lf(i),dataZoom:en(e.dataZoom)};return b.defaultsDeep({},d,Df)}function _l(e){const t=e.getModel(),r=t.getSeries().map(a=>{if(!a.option.custom)return a.option;const l=t.getColorFromPalette(a.option.custom.targetSeries,null);return a.option.color=l,a.option});e.setOption({...e.getOption(),series:r})}function Mf({conf:e,data:t,width:r,height:a,interactionManager:l,variables:o,onChartRenderFinished:i}){const c=gt(t,e.x_axis_data_key),d=ze(l.triggerManager,pr.id),u=h.useCallback(k=>{const z=b.get(c,k.name,{error:"rowData is not found"});d.forEach(D=>{l.runInteraction(D.id,{...k,rowData:z})})},[c,d,l]),p=h.useMemo(()=>If(e,t,o),[e,t]),f=h.useRef(),v=O.useLatest(i),m=h.useCallback(()=>{var k;v.current((k=f.current)==null?void 0:k.getOption())},[]),_=h.useMemo(()=>({click:u,finished:m}),[u]),w=k=>{f.current=k,_l(k)};return h.useEffect(()=>{f.current&&_l(f.current)},[p]),!r||!a?null:n.jsx(pe,{echarts:ce,option:p,style:{width:r,height:a},onEvents:_,onChartReady:w,notMerge:!0,theme:"merico-light"})}const Af=S.observer(({context:e,instance:t})=>{const r=De({vizManager:e.vizManager,instance:t}),{value:a}=B(e.instanceData,"config"),{variables:l}=e,o=h.useMemo(()=>b.defaults({},a,yl),[a]),i=e.data,{width:c,height:d}=e.viewport,[u,p]=h.useState(0),[f,v]=h.useState(0),m=Math.max(0,qe(d)-u-f),_=Le(c);function w(k){ge(t,k)}return n.jsxs(_e,{width:c,height:d,children:[n.jsx(rn,{onHeightChange:p,value:o.stats.top,context:e}),n.jsx(Mf,{onChartRenderFinished:w,variables:l,width:_,height:m,data:i,conf:o,interactionManager:r}),n.jsx(rn,{onHeightChange:v,value:o.stats.bottom,context:e})]})});function Pf({control:e,index:t,variableOptions:r}){const{t:a,i18n:l}=x.useTranslation(),o=h.useMemo(()=>[{label:a("chart.reference_area.type.rectangle"),value:"rectangle"}],[l.language]),i=h.useMemo(()=>[{label:a("chart.reference_area.direction.horizontal"),value:"horizontal"}],[l.language]);return n.jsxs(s.Stack,{my:0,p:0,sx:{position:"relative"},children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_areas.${t}.name`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.reference_area.label"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`reference_areas.${t}.color`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.color.label"),required:!0,sx:{flex:1},...c})})]}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_areas.${t}.type`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.reference_area.type.label"),required:!0,data:o,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`reference_areas.${t}.direction`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.reference_area.direction.label"),required:!0,data:i,sx:{flex:1},...c})})]}),n.jsx(s.Divider,{variant:"dashed",label:a("data.label"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_areas.${t}.y_keys.upper`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.reference_area.boundary.upper"),required:!0,data:r,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`reference_areas.${t}.y_keys.lower`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.reference_area.boundary.lower"),required:!0,data:r,sx:{flex:1},...c})})]})]})}function Vf({control:e,watch:t,variables:r}){const{t:a}=x.useTranslation(),l=()=>({name:"",color:"rgba(0,0,0,0.1)",type:"rectangle",direction:"horizontal",y_keys:{upper:"",lower:""}}),o=(c,d)=>{const u=c.name.trim();return u||d+1},i=h.useMemo(()=>r.map(c=>({label:c.name,value:c.name})),[r]);return n.jsx(X,{control:e,watch:t,name:"reference_areas",getItem:l,addButtonText:a("chart.reference_area.add"),deleteButtonText:a("chart.reference_area.delete"),renderTabName:o,children:({field:c,index:d})=>n.jsx(Pf,{control:e,index:d,variableOptions:i})})}const Tt=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=h.useMemo(()=>[{label:o("chart.series.line.type.solid"),value:"solid"},{label:o("chart.series.line.type.dashed"),value:"dashed"},{label:o("chart.series.line.type.dotted"),value:"dotted"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("chart.series.line.type.label"),data:c,value:t,onChange:J(r),sx:a})});function $f({control:e,index:t,watch:r,variableOptions:a,yAxisOptions:l}){const{t:o}=x.useTranslation(),i=r(`reference_lines.${t}.orientation`);return n.jsxs(s.Stack,{my:0,p:0,sx:{position:"relative"},children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`reference_lines.${t}.name`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:o("common.name"),placeholder:o("chart.reference_line.name_placeholder"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`reference_lines.${t}.variable_key`,control:e,render:({field:c})=>n.jsx(s.Select,{label:o("common.data_field"),required:!0,data:a,sx:{flex:1},...c})})]}),n.jsx(y.Controller,{name:`reference_lines.${t}.template`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:o("chart.content_template.label"),placeholder:o("chart.content_template.hint"),sx:{flex:1},...c})}),n.jsxs(s.Group,{grow:!0,children:[n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:`reference_lines.${t}.orientation`,control:e,render:({field:c})=>n.jsx(lt,{label:o("chart.orientation.label"),sx:{flex:1},...c})}),i==="vertical"&&n.jsx(s.Text,{mt:-10,c:"dimmed",size:"12px",children:o("chart.reference_line.orientation.vertical_hint")})]}),i==="horizontal"&&n.jsx(y.Controller,{name:`reference_lines.${t}.yAxisIndex`,control:e,render:({field:{value:c,onChange:d,...u}})=>n.jsx(s.Select,{label:o("chart.y_axis.label"),data:l,disabled:l.length===0,...u,value:(c==null?void 0:c.toString())??"",onChange:p=>{if(!p){d(0);return}d(Number(p))},sx:{flex:1}})})]}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:o("chart.style.label"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`reference_lines.${t}.lineStyle.type`,control:e,render:({field:c})=>n.jsx(Tt,{sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`reference_lines.${t}.lineStyle.width`,control:e,render:({field:c})=>n.jsx(s.NumberInput,{label:o("chart.series.line.line_width"),min:1,max:10,sx:{flexGrow:1},...c})})]}),n.jsx(s.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:`reference_lines.${t}.lineStyle.color`,control:e,render:({field:c})=>n.jsx(ye,{label:o("chart.color.label"),...c})})}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:o("chart.behavior.label"),labelPosition:"center"}),n.jsx(y.Controller,{name:`reference_lines.${t}.show_in_legend`,control:e,render:({field:c})=>n.jsx(s.Checkbox,{label:o("chart.legend.show_in_legend"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})]})}function Ef({control:e,watch:t,variables:r}){const{t:a}=x.useTranslation(),l=()=>({name:"",template:"",variable_key:"",orientation:"horizontal",lineStyle:{type:"dashed",width:1,color:"#868E96"},show_in_legend:!1,yAxisIndex:0}),o=(u,p)=>{const f=u.name.trim();return f||p+1},i=h.useMemo(()=>r.map(u=>({label:u.name,value:u.name})),[r]),c=t("y_axes"),d=h.useMemo(()=>c.map(({name:u},p)=>({label:u,value:p.toString()})),[c]);return n.jsx(X,{control:e,watch:t,name:"reference_lines",getItem:l,addButtonText:a("chart.reference_line.add"),deleteButtonText:a("chart.reference_line.delete"),renderTabName:o,children:({field:u,index:p})=>n.jsx($f,{control:e,index:p,watch:t,variableOptions:i,yAxisOptions:d})})}function Bf({control:e,regressionItem:t,index:r,yAxisOptions:a}){const{t:l,i18n:o}=x.useTranslation(),i=h.useMemo(()=>[{label:l("chart.regression_line.method.linear"),value:"linear"},{label:l("chart.regression_line.method.exponential"),value:"exponential"},{label:l("chart.regression_line.method.logistic"),value:"logistic"},{label:l("chart.regression_line.method.polynomial"),value:"polynomial"}],[o.language]),c=t.transform.config.method;return n.jsxs(s.Stack,{my:0,p:0,sx:{position:"relative"},children:[n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`regressions.${r}.name`,control:e,render:({field:d})=>n.jsx(s.TextInput,{label:l("common.name"),required:!0,sx:{flex:1},...d})}),n.jsx(y.Controller,{name:`regressions.${r}.group_by_key`,control:e,render:({field:d})=>n.jsx(L,{label:l("chart.series.group_by.label_line"),clearable:!0,sx:{flex:1},...d})})]}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`regressions.${r}.y_axis_data_key`,control:e,render:({field:d})=>n.jsx(L,{label:l("common.data_field"),required:!0,sx:{flex:1},...d})}),n.jsx(y.Controller,{name:`regressions.${r}.plot.yAxisIndex`,control:e,render:({field:{value:d,onChange:u,...p}})=>n.jsx(s.Select,{label:l("chart.y_axis.label"),data:a,disabled:a.length===0,...p,value:(d==null?void 0:d.toString())??"",onChange:f=>{if(!f){u(0);return}u(Number(f))},sx:{flex:1}})})]}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`regressions.${r}.transform.config.method`,control:e,render:({field:d})=>n.jsx(s.Select,{label:l("chart.regression_line.method.label"),data:i,sx:{flex:1},...d})}),c==="polynomial"&&n.jsx(y.Controller,{name:`regressions.${r}.transform.config.order`,control:e,render:({field:d})=>n.jsx(s.NumberInput,{label:l("chart.regression_line.method.polynomial_order"),sx:{flex:1},...d})})]}),n.jsx(s.Divider,{mb:-15,variant:"dashed",label:l("chart.series.line.line_style"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`regressions.${r}.plot.lineStyle.type`,control:e,render:({field:d})=>n.jsx(Tt,{sx:{flexGrow:1},...d})}),n.jsx(y.Controller,{name:`regressions.${r}.plot.lineStyle.width`,control:e,render:({field:d})=>n.jsx(s.NumberInput,{label:l("chart.series.line.line_width"),min:1,max:10,sx:{flexGrow:1},...d})})]}),n.jsx(s.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:`regressions.${r}.plot.color`,control:e,render:({field:d})=>n.jsx(ye,{label:l("chart.color.label"),...d})})})]})}function Lf({control:e,watch:t}){const{t:r}=x.useTranslation(),a=t("y_axes"),l=h.useMemo(()=>a.map(({name:c},d)=>({label:c,value:d.toString()})),[a]),o=()=>({transform:{type:"ecStat:regression",config:{method:"linear",order:1,formulaOn:"end"}},group_by_key:"",name:"",y_axis_data_key:"",plot:{type:"line",yAxisIndex:0,color:"#666666",lineStyle:{type:"solid",width:1}}}),i=(c,d)=>{const u=c.name.trim();return u||d+1};return n.jsx(X,{control:e,watch:t,name:"regressions",getItem:o,addButtonText:r("chart.regression_line.add"),deleteButtonText:r("chart.regression_line.delete"),renderTabName:i,children:({field:c,index:d})=>n.jsx(Bf,{regressionItem:c,control:e,index:d,yAxisOptions:l})})}const qf=({value:e,onChange:t})=>{const r=a=>{a&&t(a)};return n.jsx(s.Box,{children:n.jsx(Ce,{height:"500px",defaultLanguage:"javascript",value:e,onChange:r,theme:"vs-dark",options:{minimap:{enabled:!1}}})})},fr={static:{type:"static",size:10},dynamic:{type:"dynamic",func_content:["function getSize({ rowData, params, variables }, { lodash, interpolate }) {"," // your code goes here"," // return 10","}"].join(`
|
|
134
|
-
`)}},Of=({value:e,onChange:t})=>{const{t:r}=x.useTranslation(),[a,{setTrue:l,setFalse:o}]=O.useBoolean(),[i,c]=h.useState(e),d=()=>{o();const{type:v,func_content:m}=i,_={type:v,func_content:m};c(_),t(_)},u=()=>{o(),c(e)},p=v=>{c(m=>({...m,func_content:v}))},f=()=>{p(fr.dynamic.func_content)};return n.jsxs(n.Fragment,{children:[n.jsx(s.Box,{sx:{width:"50%"},children:n.jsx(s.Button,{color:"grape",variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},leftSection:n.jsx(T.IconMathFunction,{size:16}),children:r("chart.symbol_size.setup.label")})}),n.jsx(s.Modal,{size:800,title:r("chart.symbol_size.setup.title"),opened:a,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:a&&n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mt:10,mb:-10,label:r("chart.symbol_size.setup.description"),labelPosition:"center",variant:"dashed"}),n.jsx(qf,{value:i.func_content,onChange:p}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{onClick:f,color:"red",leftSection:n.jsx(T.IconRecycle,{size:20}),children:r("common.actions.reset_to_default")}),n.jsxs(s.Group,{justify:"right",children:[n.jsx(s.Button,{onClick:u,variant:"subtle",children:r("common.actions.cancel")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(T.IconDeviceFloppy,{size:16}),onClick:d,children:r("common.actions.save")})]})]})]})})]})},Nf=({value:e,onChange:t})=>e.type!=="dynamic"?null:n.jsx(Of,{value:e,onChange:t}),Gf=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=a=>{typeof a!="string"&&t({...e,size:a})};return n.jsx(n.Fragment,{children:n.jsx(s.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:r})})},br=h.forwardRef(({label:e,value:t,onChange:r},a)=>{const{t:l,i18n:o}=x.useTranslation(),i=h.useMemo(()=>[{label:l("chart.symbol_size.static"),value:"static"},{label:l("chart.symbol_size.dynamic"),value:"dynamic"}],[o.language]),c=d=>{d!=="static"&&d!=="dynamic"||r({...fr[d]})};return n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(s.Select,{ref:a,label:e??l("chart.symbol_size.label"),data:i,value:t.type,onChange:c,sx:{flexGrow:1}}),n.jsx(Gf,{value:t,onChange:r}),n.jsx(Nf,{value:t,onChange:r})]})});function Ff({label:e,value:t,onChange:r,pt:a="sm",withFallback:l},o){const{t:i,i18n:c}=x.useTranslation();h.useEffect(()=>{typeof t=="string"&&r({type:t,config:{},fallback:"0"})},[t,r]);const d=_=>{if(_===null)return;const w=_;switch(w){case"quantile":return r({type:"quantile",config:{p:.99},fallback:t.fallback});case"custom":return r({type:"custom",config:{func:fs},fallback:t.fallback});case"pick_record":return r({type:"pick_record",config:{method:"first"},fallback:t.fallback});default:return r({type:w,config:{},fallback:t.fallback})}},u=_=>{const w=Number(_);Number.isNaN(w)||r({type:"quantile",config:{p:w},fallback:t.fallback})},p=_=>{r({type:"custom",config:{func:_},fallback:t.fallback})},f=_=>{_!=="first"&&_!=="last"||r({type:"pick_record",config:{method:_},fallback:t.fallback})},v=_=>{r({...t,fallback:_.currentTarget.value})},m=h.useMemo(()=>[{label:i("aggregation.option.none"),value:"none"},{label:i("aggregation.option.sum"),value:"sum"},{label:i("aggregation.option.min"),value:"min"},{label:i("aggregation.option.mean"),value:"mean"},{label:i("aggregation.option.median"),value:"median"},{label:i("aggregation.option.max"),value:"max"},{label:i("aggregation.option.cov"),value:"CV"},{label:i("aggregation.option.std"),value:"std"},{label:i("aggregation.option.quantile.label_with_hint"),value:"quantile"},{label:i("aggregation.option.pick_record.label"),value:"pick_record"},{label:i("aggregation.option.custom.label"),value:"custom"}],[c.language]);return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",pt:a,children:[n.jsx(s.Select,{ref:o,label:e,data:m,value:t.type,onChange:d,maxDropdownHeight:600}),t.type==="quantile"&&n.jsx(s.NumberInput,{label:"p",value:t.config.p,onChange:u,decimalScale:2,min:.05,step:.05,max:1}),t.type==="pick_record"&&n.jsx(s.Select,{label:i("aggregation.option.pick_record.method.label"),value:t.config.method,onChange:f,data:[{label:i("aggregation.option.pick_record.method.first"),value:"first"},{label:i("aggregation.option.pick_record.method.last"),value:"last"}]}),t.type==="custom"&&n.jsx(Kn,{title:i("aggregation.option.custom.title"),label:"",triggerLabel:i("aggregation.option.custom.label_trigger"),value:t.config.func,onChange:p,defaultValue:fs,triggerButtonProps:{size:"xs",sx:{flexGrow:0,alignSelf:"center",marginTop:"22px"},leftSection:n.jsx(T.IconMathFunction,{size:16}),color:"grape"}})]}),l&&n.jsx(s.TextInput,{label:i("panel.variable.aggregation.fallback_value"),description:i("panel.variable.aggregation.fallback_value_description"),value:t.fallback,onChange:v})]})}const yr=h.forwardRef(Ff),St=h.forwardRef(({label:e,value:t,onChange:r,options:a,withOffOption:l=!1},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=h.useMemo(()=>{if(a)return a;const u=[{label:i("chart.label_position.top"),value:"top"},{label:i("chart.label_position.left"),value:"left"},{label:i("chart.label_position.right"),value:"right"},{label:i("chart.label_position.bottom"),value:"bottom"},{label:i("chart.label_position.outside"),value:"outside"},{label:i("chart.label_position.inside"),value:"inside"},{label:i("chart.label_position.inside_left"),value:"insideLeft"},{label:i("chart.label_position.inside_right"),value:"insideRight"},{label:i("chart.label_position.inside_top"),value:"insideTop"},{label:i("chart.label_position.inside_bottom"),value:"insideBottom"},{label:i("chart.label_position.inside_top_left"),value:"insideTopLeft"},{label:i("chart.label_position.inside_bottom_left"),value:"insideBottomLeft"},{label:i("chart.label_position.inside_top_right"),value:"insideTopRight"},{label:i("chart.label_position.inside_bottom_right"),value:"insideBottomRight"}];return l&&u.unshift({label:i("chart.label_position.off"),value:""}),u},[c.language,a,l]);return n.jsx(s.Select,{ref:o,label:e,data:d,value:t,onChange:r})});function jf({control:e,index:t,seriesItem:r}){const{t:a,i18n:l}=x.useTranslation(),o=!!r.barWidth.trim(),i=h.useMemo(()=>[{label:a("chart.series.bar.bar_gap.no_gap"),value:"0%"},{label:a("chart.series.bar.bar_gap.overlap"),value:"-100%"}],[l.language]);return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`series.${t}.stack`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.stack"),placeholder:a("chart.series.bar.stack_hint"),sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.barGap`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.series.bar.bar_gap.label"),data:i,sx:{flexGrow:1},...c})})]}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.bar_width.min"),disabled:o,sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.bar_width.exact"),sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.bar_width.max"),disabled:o,sx:{flexGrow:1},...c})})]})]})}function Qf({control:e,index:t,seriesItem:r}){const{t:a,i18n:l}=x.useTranslation(),o=r.showSymbol,i=h.useMemo(()=>[{label:a("chart.series.line.step.off"),value:"false"},{label:a("chart.series.line.step.start"),value:"start"},{label:a("chart.series.line.step.middle"),value:"middle"},{label:a("chart.series.line.step.end"),value:"end"}],[l.language]);return n.jsxs(n.Fragment,{children:[n.jsx(s.Divider,{mb:-15,variant:"dashed",label:a("chart.series.line.line_settings"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:c})=>n.jsx(Tt,{sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:c})=>n.jsx(s.NumberInput,{label:a("chart.series.line.line_width"),min:1,max:10,sx:{flexGrow:1},...c})})]}),n.jsxs(s.Group,{grow:!0,align:"center",children:[n.jsx(y.Controller,{name:`series.${t}.step`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.series.line.step.label"),data:i,sx:{flexGrow:1,maxWidth:"48%"},...c,value:String(c.value),onChange:J(d=>{const u=d==="false"?!1:d;c.onChange(u)})})}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:`series.${t}.smooth`,control:e,render:({field:c})=>n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.series.line.smooth_line"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})}),n.jsx(y.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:c})=>n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.series.line.show_name_on_line"),checked:c.value??!1,onChange:d=>c.onChange(d.currentTarget.checked)})})})]})]}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:`series.${t}.showSymbol`,control:e,render:({field:c})=>n.jsx(s.Box,{mt:10,mb:-10,sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.series.line.show_symbol_on_line"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})}),o&&n.jsx(y.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:c})=>n.jsx(br,{...c})})]}),n.jsx(y.Controller,{name:`series.${t}.areaStyle`,control:e,render:({field:c})=>n.jsx(Ag,{...c})})]})}function Wf({control:e,index:t}){return n.jsx(y.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:r})=>n.jsx(br,{label:"Size",...r})})}function Uf({control:e,index:t,seriesItem:r,yAxisOptions:a}){const{t:l}=x.useTranslation(),o=r.type,i=r.group_by_key;return n.jsxs(s.Stack,{my:0,p:0,sx:{position:"relative"},children:[n.jsx(s.Stack,{children:n.jsx(y.Controller,{name:`series.${t}.type`,control:e,render:({field:c})=>n.jsx(s.SegmentedControl,{data:[{label:l("chart.series.line.label"),value:"line"},{label:l("chart.series.bar.label"),value:"bar"},{label:l("chart.series.scatter.label"),value:"scatter"}],...c})})}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`series.${t}.name`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:l("chart.series.name"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:c,onChange:d,...u}})=>n.jsx(s.Select,{label:l("chart.series.y_axis"),data:a,disabled:a.length===0,...u,value:(c==null?void 0:c.toString())??"",onChange:p=>{if(!p){d(0);return}d(Number(p))},sx:{flex:1}})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:c})=>n.jsx(L,{label:l("chart.series.data_field"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:c})=>n.jsx(yr,{label:l("viz.cartesian_chart.series.aggregation.label"),value:c.value??_t,onChange:c.onChange,pt:0,withFallback:!1})})]}),n.jsx(s.Group,{grow:!0,children:n.jsx(y.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:c})=>n.jsx(L,{label:l("chart.series.group_by.label"),clearable:!0,sx:{flex:1},...c})})}),!!i&&n.jsx(y.Controller,{name:`series.${t}.order_in_group`,control:e,render:({field:c})=>n.jsx(bl,{label:l("chart.series_order.label"),hiddenKeys:["value"],...c})}),o==="line"&&n.jsx(Qf,{index:t,control:e,seriesItem:r}),o==="bar"&&n.jsx(jf,{index:t,control:e,seriesItem:r}),o==="scatter"&&n.jsx(Wf,{index:t,control:e}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:l("chart.style.label"),labelPosition:"center"}),n.jsx(y.Controller,{name:`series.${t}.label_position`,control:e,render:({field:c})=>n.jsx(St,{label:l("chart.label_position.label"),withOffOption:!0,...c})}),n.jsx(s.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:`series.${t}.color`,control:e,render:({field:c})=>n.jsx(ye,{label:l("chart.color.label"),...c})})}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:l("chart.behavior.label"),labelPosition:"center"}),n.jsx(y.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:c})=>n.jsx(s.Checkbox,{label:l("chart.legend.hide_in_legend"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})]})}function Yf({control:e,watch:t}){const{t:r}=x.useTranslation(),a=()=>({type:"bar",name:te.randomId(),showSymbol:!1,symbolSize:fr.static,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",display_name_on_line:!1,stack:"",color:"#000",step:!1,smooth:!1,barMinWidth:"1",barWidth:"10%",barMaxWidth:"10",barGap:"0%",lineStyle:{type:"solid",width:1},hide_in_legend:!1,group_by_key:"",order_in_group:nn(),areaStyle:fl()}),l=(c,d)=>{const u=c.name.trim();return u||d+1},o=t("y_axes"),i=h.useMemo(()=>o.map(({name:c},d)=>({label:c,value:d.toString()})),[o]);return n.jsx(X,{control:e,watch:t,name:"series",getItem:a,addButtonText:r("chart.series.add"),deleteButtonText:r("chart.series.delete"),renderTabName:l,children:({field:c,index:d})=>n.jsx(Uf,{control:e,index:d,seriesItem:c,yAxisOptions:i})})}const Kf=S.observer(({control:e,watch:t})=>{const{panel:r}=re(),{t:a}=x.useTranslation();return n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:"stats.top",control:e,render:({field:l})=>n.jsx(st,{label:a("chart.stats.template.above_chart"),styles:{root:{flexGrow:1,minHeight:"240px"}},autoSubmit:!0,...l},`${r.id}.stats.top`)}),n.jsx(y.Controller,{name:"stats.bottom",control:e,render:({field:l})=>n.jsx(st,{label:a("chart.stats.template.under_chart"),styles:{root:{flexGrow:1,minHeight:"240px"}},autoSubmit:!0,...l},`${r.id}.stats.bottom`)})]})}),Xf=({control:e,index:t})=>{const{t:r}=x.useTranslation();return n.jsx(s.Stack,{children:n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("common.name"),required:!0,sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:a})=>n.jsx(L,{label:r("common.data_field"),required:!0,sx:{flex:1},...a})})]})})},Zf=({control:e,watch:t})=>{const{t:r}=x.useTranslation(),a=()=>({id:Date.now().toString(),data_key:"",name:""}),l=(o,i)=>{const c=o.name.trim();return c||i+1};return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{gap:2,sx:{cursor:"default",userSelect:"none"},children:[n.jsx(T.IconInfoCircle,{size:14,color:"#888"}),n.jsx(s.Text,{size:"14px",c:"#888",children:r("chart.tooltip.additional_metrics.description")})]}),n.jsx(X,{control:e,watch:t,name:"tooltip.metrics",getItem:a,addButtonText:r("chart.tooltip.additional_metrics.add"),deleteButtonText:r("chart.tooltip.additional_metrics.delete"),renderTabName:l,children:({field:o,index:i})=>n.jsx(Xf,{control:e,index:i})})]})};function Jf({control:e,watch:t}){return n.jsx(s.Stack,{children:n.jsx(Zf,{control:e,watch:t})})}const Hf=()=>{const{t:e}=x.useTranslation();return n.jsxs(s.Group,{sx:{display:"inline-flex"},gap:6,mr:14,children:[n.jsx(s.Text,{size:"sm",children:e("chart.x_axis.x_axis_type")}),n.jsxs(s.HoverCard,{width:340,shadow:"md",position:"top",children:[n.jsx(s.HoverCard.Target,{children:n.jsx(s.ActionIcon,{size:"xs",variant:"subtle",sx:{transform:"none !important"},children:n.jsx(T.IconInfoCircle,{})})}),n.jsx(s.HoverCard.Dropdown,{children:n.jsx(s.Text,{size:"sm",children:n.jsxs(x.Trans,{i18nKey:"chart.axis.type.click_to_learn_more",children:["Click",n.jsx(s.Anchor,{href:"https://echarts.apache.org/en/option.html#xAxis.type",target:"_blank",mx:3,children:"here"}),"to learn more about these options"]})})})]})]})};function Rf({control:e,watch:t}){const{t:r,i18n:a}=x.useTranslation();t(["x_axis_data_key","x_axis_name","x_axis"]);const l=h.useMemo(()=>[{label:r("chart.axis.type.value"),value:"value"},{label:r("chart.axis.type.category"),value:"category"},{label:r("chart.axis.type.time"),value:"time"},{label:r("chart.axis.type.log"),value:"log"}],[a.language]);return n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:"x_axis_name",control:e,render:({field:o})=>n.jsx(s.TextInput,{label:r("chart.x_axis.x_axis_name"),sx:{flex:1},...o})}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis_data_key",control:e,render:({field:o})=>n.jsx(L,{label:r("chart.x_axis.x_axis_data_field"),required:!0,sx:{flex:1},...o})}),n.jsx(y.Controller,{name:"x_axis.type",control:e,render:({field:o})=>n.jsx(s.Select,{label:n.jsx(Hf,{}),required:!0,data:l,sx:{flex:1},...o})})]}),n.jsx(s.Divider,{mb:-15,label:r("chart.axis.tick_label"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:o})=>n.jsx(Je,{sx:{width:"48%"},...o})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:o})=>n.jsx(Ne,{...o})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:o})=>n.jsx(Ge,{...o})})]})}const ot=h.forwardRef(({label:e,value:t,onChange:r,sx:a={},disabled:l},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=h.useMemo(()=>[{label:i("chart.name_text.align.left"),value:"left"},{label:i("chart.name_text.align.center"),value:"center"},{label:i("chart.name_text.align.right"),value:"right"}],[c.language]);return n.jsx(s.Select,{ref:o,label:e??i("chart.name_text.align.label"),data:d,value:t,onChange:J(r),sx:a,disabled:l})}),xl=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=h.useMemo(()=>[{label:o("chart.y_axis.position.left"),value:"left"},{label:o("chart.y_axis.position.right"),value:"right"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("chart.y_axis.position.label"),data:c,value:t,onChange:J(r),sx:a})});function eb({control:e,index:t}){const{t:r}=x.useTranslation();return n.jsxs(s.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n.jsx(s.Divider,{mb:-15,mt:15,variant:"dashed",label:r("common.name"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.y_axis_name"),required:!0,sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:a})=>n.jsx(ot,{sx:{flex:1},...a})})]}),n.jsx(s.Divider,{mb:-15,variant:"dashed",label:r("chart.y_axis.layout"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:a})=>n.jsx(xl,{sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`y_axes.${t}.mirror`,control:e,render:({field:a})=>n.jsx(s.Checkbox,{pt:20,label:r("chart.y_axis.mirror.label"),checked:a.value,onChange:l=>a.onChange(l.currentTarget.checked)})})]}),n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mb:-15,variant:"dashed",label:r("chart.y_axis.label_format"),labelPosition:"center"}),n.jsx(y.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:a})=>n.jsx($e,{...a})})]}),n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mb:-15,variant:"dashed",label:r("chart.y_axis.value_range"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.value_min"),...a})}),n.jsx(y.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.value_max"),...a})})]})]}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:r("chart.y_axis.behavior"),labelPosition:"center"}),n.jsx(y.Controller,{name:`y_axes.${t}.show`,control:e,render:({field:a})=>n.jsx(s.Checkbox,{label:r("chart.y_axis.visible"),checked:a.value,onChange:l=>a.onChange(l.currentTarget.checked)})})]})}function tb({control:e,watch:t}){const{t:r}=x.useTranslation(),a=()=>({name:"",position:"left",nameAlignment:"left",label_formatter:oe,min:"",max:"",show:!0,mirror:!1}),l=(i,c)=>{const d=i.name.trim();return d||c+1},o=({field:i,index:c,fields:d})=>d.length<=1;return n.jsx(X,{control:e,watch:t,name:"y_axes",getItem:a,addButtonText:r("chart.y_axis.add"),deleteButtonText:r("chart.y_axis.delete"),renderTabName:l,deleteDisalbed:o,children:({field:i,index:c})=>n.jsx(eb,{control:e,index:c})})}function nb({conf:e,setConf:t,context:r}){const{t:a}=x.useTranslation(),{variables:l}=r,o=h.useMemo(()=>b.defaults({},e),[e]),{control:i,handleSubmit:c,watch:d,reset:u,formState:p}=y.useForm({defaultValues:o});return h.useEffect(()=>{u(o)},[o]),d(["dataZoom"]),n.jsx(s.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:c(t),children:[n.jsx(le,{canSubmit:p.isDirty}),n.jsxs(s.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[n.jsxs(s.Tabs.List,{children:[n.jsx(s.Tabs.Tab,{value:"X Axis",children:a("chart.x_axis.label")}),n.jsx(s.Tabs.Tab,{value:"Y Axes",children:a("chart.y_axis.labels")}),n.jsx(s.Tabs.Tab,{value:"Series",children:a("chart.series.label")}),n.jsx(s.Tabs.Tab,{value:"Regression Lines",children:a("chart.regression_line.labels")}),n.jsx(s.Tabs.Tab,{value:"Tooltip",children:a("chart.tooltip.label")}),n.jsx(s.Tabs.Tab,{value:"Stats",children:a("chart.stats.label")}),n.jsx(s.Tabs.Tab,{value:"Reference Lines",children:a("chart.reference_line.labels")}),n.jsx(s.Tabs.Tab,{value:"Reference Areas",children:a("chart.reference_area.labels")}),n.jsx(s.Tabs.Tab,{value:"Zooming",children:a("chart.zooming.label")})]}),n.jsx(s.Tabs.Panel,{value:"X Axis",children:n.jsx(Rf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Y Axes",children:n.jsx(tb,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Series",children:n.jsx(Yf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Regression Lines",children:n.jsx(Lf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Tooltip",children:n.jsx(Jf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Stats",children:n.jsx(Kf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Reference Lines",children:n.jsx(Ef,{variables:l,control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Reference Areas",children:n.jsx(Vf,{variables:l,control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Zooming",children:n.jsx(y.Controller,{name:"dataZoom",control:i,render:({field:f})=>n.jsx(tn,{...f})})})]})]})})}function rb(e){const{value:t,set:r}=B(e.context.instanceData,"config");return t?n.jsx(nb,{conf:t,setConf:r,...e}):null}const ab={displayName:"viz.cartesian_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new Rg,name:"cartesian",viewRender:Af,configRender:rb,createConfig(){return{version:21,config:b.cloneDeep(yl)}},triggers:[pr],translation:ef};function sb(e){if(e.enable_value)return e.value}function lb(e){if(e.enable_value)return e.value}function ob(e){const t=e.axisLabel.overflow.on_axis.width,r=e.axisLabel.position,a={top:5,left:5,right:5,bottom:5};return e.orient==="vertical"&&b.get(a,r)&&r===e.funnelAlign&&b.set(a,r,t),a}function ib(e,t){return e.series.map(r=>{const{level_name_data_key:a,level_value_data_key:l,axisLabel:o,min:i,max:c,funnelAlign:d,orient:u,...p}=r;if(!a||!l)return{};const f=A(a),v=A(l),m=t[f.queryID].map(w=>({name:w[f.columnKey],value:w[v.columnKey]})),_=Ve(o.overflow.on_axis);return{type:"funnel",...ob(r),min:sb(i),max:lb(c),minSize:i.size,maxSize:c.size,...p,label:{show:!0,position:o.position,..._},orient:u,funnelAlign:u==="horizontal"?"center":d,data:m}})}function cb({conf:e,params:t,max:r}){const{name:a,value:l}=t.data,o=U(l/r,{output:"percent",mantissa:2,trimMantissa:!0,absolute:!1});return[{label:`${t.marker} ${a}`,value:`${l} (${o})`,style:{label:"",value:""}}]}function db(e,t){var o;const r=A(e.series[0].level_name_data_key),a=A(e.series[0].level_value_data_key),l=(o=b.maxBy(t[r.queryID],a.columnKey))==null?void 0:o[a.columnKey];return i=>{const d=cb({conf:e,params:i,max:l}).map(p=>`
|
|
134
|
+
`)}},Of=({value:e,onChange:t})=>{const{t:r}=x.useTranslation(),[a,{setTrue:l,setFalse:o}]=O.useBoolean(),[i,c]=h.useState(e),d=()=>{o();const{type:v,func_content:m}=i,_={type:v,func_content:m};c(_),t(_)},u=()=>{o(),c(e)},p=v=>{c(m=>({...m,func_content:v}))},f=()=>{p(fr.dynamic.func_content)};return n.jsxs(n.Fragment,{children:[n.jsx(s.Box,{sx:{width:"50%"},children:n.jsx(s.Button,{color:"grape",variant:"filled",mt:24,onClick:l,sx:{flexGrow:0},leftSection:n.jsx(T.IconMathFunction,{size:16}),children:r("chart.symbol_size.setup.label")})}),n.jsx(s.Modal,{size:800,title:r("chart.symbol_size.setup.title"),opened:a,onClose:o,closeOnClickOutside:!1,withCloseButton:!1,zIndex:320,children:a&&n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mt:10,mb:-10,label:r("chart.symbol_size.setup.description"),labelPosition:"center",variant:"dashed"}),n.jsx(qf,{value:i.func_content,onChange:p}),n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Button,{onClick:f,color:"red",leftSection:n.jsx(T.IconRecycle,{size:20}),children:r("common.actions.reset_to_default")}),n.jsxs(s.Group,{justify:"right",children:[n.jsx(s.Button,{onClick:u,variant:"subtle",children:r("common.actions.cancel")}),n.jsx(s.Button,{color:"green",leftSection:n.jsx(T.IconDeviceFloppy,{size:16}),onClick:d,children:r("common.actions.save")})]})]})]})})]})},Nf=({value:e,onChange:t})=>e.type!=="dynamic"?null:n.jsx(Of,{value:e,onChange:t}),Gf=({value:e,onChange:t})=>{if(e.type!=="static")return null;const r=a=>{typeof a!="string"&&t({...e,size:a})};return n.jsx(n.Fragment,{children:n.jsx(s.NumberInput,{defaultValue:18,placeholder:"1 ~ 100",label:" ",hideControls:!0,value:e.size,onChange:r})})},br=h.forwardRef(({label:e,value:t,onChange:r},a)=>{const{t:l,i18n:o}=x.useTranslation(),i=h.useMemo(()=>[{label:l("chart.symbol_size.static"),value:"static"},{label:l("chart.symbol_size.dynamic"),value:"dynamic"}],[o.language]),c=d=>{d!=="static"&&d!=="dynamic"||r({...fr[d]})};return n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(s.Select,{ref:a,label:e??l("chart.symbol_size.label"),data:i,value:t.type,onChange:c,sx:{flexGrow:1}}),n.jsx(Gf,{value:t,onChange:r}),n.jsx(Nf,{value:t,onChange:r})]})});function Ff({label:e,value:t,onChange:r,pt:a="sm",withFallback:l},o){const{t:i,i18n:c}=x.useTranslation();h.useEffect(()=>{typeof t=="string"&&r({type:t,config:{},fallback:"0"})},[t,r]);const d=_=>{if(_===null)return;const w=_;switch(w){case"quantile":return r({type:"quantile",config:{p:.99},fallback:t.fallback});case"custom":return r({type:"custom",config:{func:fs},fallback:t.fallback});case"pick_record":return r({type:"pick_record",config:{method:"first"},fallback:t.fallback});default:return r({type:w,config:{},fallback:t.fallback})}},u=_=>{const w=Number(_);Number.isNaN(w)||r({type:"quantile",config:{p:w},fallback:t.fallback})},p=_=>{r({type:"custom",config:{func:_},fallback:t.fallback})},f=_=>{_!=="first"&&_!=="last"||r({type:"pick_record",config:{method:_},fallback:t.fallback})},v=_=>{r({...t,fallback:_.currentTarget.value})},m=h.useMemo(()=>[{label:i("aggregation.option.none"),value:"none"},{label:i("aggregation.option.sum"),value:"sum"},{label:i("aggregation.option.min"),value:"min"},{label:i("aggregation.option.mean"),value:"mean"},{label:i("aggregation.option.median"),value:"median"},{label:i("aggregation.option.max"),value:"max"},{label:i("aggregation.option.cov"),value:"CV"},{label:i("aggregation.option.std"),value:"std"},{label:i("aggregation.option.quantile.label_with_hint"),value:"quantile"},{label:i("aggregation.option.pick_record.label"),value:"pick_record"},{label:i("aggregation.option.custom.label"),value:"custom"}],[c.language]);return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",pt:a,children:[n.jsx(s.Select,{ref:o,label:e,data:m,value:t.type,onChange:d,maxDropdownHeight:600}),t.type==="quantile"&&n.jsx(s.NumberInput,{label:"p",value:t.config.p,onChange:u,decimalScale:2,min:.05,step:.05,max:1}),t.type==="pick_record"&&n.jsx(s.Select,{label:i("aggregation.option.pick_record.method.label"),value:t.config.method,onChange:f,data:[{label:i("aggregation.option.pick_record.method.first"),value:"first"},{label:i("aggregation.option.pick_record.method.last"),value:"last"}]}),t.type==="custom"&&n.jsx(Kn,{title:i("aggregation.option.custom.title"),label:"",triggerLabel:i("aggregation.option.custom.label_trigger"),value:t.config.func,onChange:p,defaultValue:fs,triggerButtonProps:{size:"xs",sx:{flexGrow:0,alignSelf:"center",marginTop:"22px"},leftSection:n.jsx(T.IconMathFunction,{size:16}),color:"grape"}})]}),l&&n.jsx(s.TextInput,{label:i("panel.variable.aggregation.fallback_value"),description:i("panel.variable.aggregation.fallback_value_description"),value:t.fallback,onChange:v})]})}const yr=h.forwardRef(Ff),St=h.forwardRef(({label:e,value:t,onChange:r,options:a,withOffOption:l=!1},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=h.useMemo(()=>{if(a)return a;const u=[{label:i("chart.label_position.top"),value:"top"},{label:i("chart.label_position.left"),value:"left"},{label:i("chart.label_position.right"),value:"right"},{label:i("chart.label_position.bottom"),value:"bottom"},{label:i("chart.label_position.outside"),value:"outside"},{label:i("chart.label_position.inside"),value:"inside"},{label:i("chart.label_position.inside_left"),value:"insideLeft"},{label:i("chart.label_position.inside_right"),value:"insideRight"},{label:i("chart.label_position.inside_top"),value:"insideTop"},{label:i("chart.label_position.inside_bottom"),value:"insideBottom"},{label:i("chart.label_position.inside_top_left"),value:"insideTopLeft"},{label:i("chart.label_position.inside_bottom_left"),value:"insideBottomLeft"},{label:i("chart.label_position.inside_top_right"),value:"insideTopRight"},{label:i("chart.label_position.inside_bottom_right"),value:"insideBottomRight"}];return l&&u.unshift({label:i("chart.label_position.off"),value:""}),u},[c.language,a,l]);return n.jsx(s.Select,{ref:o,label:e,data:d,value:t,onChange:r})});function jf({control:e,index:t,seriesItem:r}){const{t:a,i18n:l}=x.useTranslation(),o=!!r.barWidth.trim(),i=h.useMemo(()=>[{label:a("chart.series.bar.bar_gap.no_gap"),value:"0%"},{label:a("chart.series.bar.bar_gap.overlap"),value:"-100%"}],[l.language]);return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`series.${t}.stack`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.stack"),placeholder:a("chart.series.bar.stack_hint"),sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.barGap`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.series.bar.bar_gap.label"),data:i,sx:{flexGrow:1},...c})})]}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`series.${t}.barMinWidth`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.bar_width.min"),disabled:o,sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.barWidth`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.bar_width.exact"),sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.barMaxWidth`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.bar_width.max"),disabled:o,sx:{flexGrow:1},...c})})]})]})}function Qf({control:e,index:t,seriesItem:r}){const{t:a,i18n:l}=x.useTranslation(),o=r.showSymbol,i=h.useMemo(()=>[{label:a("chart.series.line.step.off"),value:"false"},{label:a("chart.series.line.step.start"),value:"start"},{label:a("chart.series.line.step.middle"),value:"middle"},{label:a("chart.series.line.step.end"),value:"end"}],[l.language]);return n.jsxs(n.Fragment,{children:[n.jsx(y.Controller,{name:`series.${t}.stack`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:a("chart.series.bar.stack"),placeholder:a("chart.series.bar.stack_hint"),sx:{flexGrow:1},...c})}),n.jsx(s.Divider,{mb:-15,variant:"dashed",label:a("chart.series.line.line_settings"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`series.${t}.lineStyle.type`,control:e,render:({field:c})=>n.jsx(Tt,{sx:{flexGrow:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.lineStyle.width`,control:e,render:({field:c})=>n.jsx(s.NumberInput,{label:a("chart.series.line.line_width"),min:1,max:10,sx:{flexGrow:1},...c})})]}),n.jsxs(s.Group,{grow:!0,align:"center",children:[n.jsx(y.Controller,{name:`series.${t}.step`,control:e,render:({field:c})=>n.jsx(s.Select,{label:a("chart.series.line.step.label"),data:i,sx:{flexGrow:1,maxWidth:"48%"},...c,value:String(c.value),onChange:J(d=>{const u=d==="false"?!1:d;c.onChange(u)})})}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:`series.${t}.smooth`,control:e,render:({field:c})=>n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.series.line.smooth_line"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})}),n.jsx(y.Controller,{name:`series.${t}.display_name_on_line`,control:e,render:({field:c})=>n.jsx(s.Box,{sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.series.line.show_name_on_line"),checked:c.value??!1,onChange:d=>c.onChange(d.currentTarget.checked)})})})]})]}),n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:`series.${t}.showSymbol`,control:e,render:({field:c})=>n.jsx(s.Box,{mt:10,mb:-10,sx:{flexGrow:1},children:n.jsx(s.Switch,{label:a("chart.series.line.show_symbol_on_line"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})}),o&&n.jsx(y.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:c})=>n.jsx(br,{...c})})]}),n.jsx(y.Controller,{name:`series.${t}.areaStyle`,control:e,render:({field:c})=>n.jsx(Ag,{...c})})]})}function Wf({control:e,index:t}){return n.jsx(y.Controller,{name:`series.${t}.symbolSize`,control:e,render:({field:r})=>n.jsx(br,{label:"Size",...r})})}function Uf({control:e,index:t,seriesItem:r,yAxisOptions:a}){const{t:l}=x.useTranslation(),o=r.type,i=r.group_by_key;return n.jsxs(s.Stack,{my:0,p:0,sx:{position:"relative"},children:[n.jsx(s.Stack,{children:n.jsx(y.Controller,{name:`series.${t}.type`,control:e,render:({field:c})=>n.jsx(s.SegmentedControl,{data:[{label:l("chart.series.line.label"),value:"line"},{label:l("chart.series.bar.label"),value:"bar"},{label:l("chart.series.scatter.label"),value:"scatter"}],...c})})}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`series.${t}.name`,control:e,render:({field:c})=>n.jsx(s.TextInput,{label:l("chart.series.name"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.yAxisIndex`,control:e,render:({field:{value:c,onChange:d,...u}})=>n.jsx(s.Select,{label:l("chart.series.y_axis"),data:a,disabled:a.length===0,...u,value:(c==null?void 0:c.toString())??"",onChange:p=>{if(!p){d(0);return}d(Number(p))},sx:{flex:1}})})]}),n.jsxs(s.SimpleGrid,{cols:2,children:[n.jsx(y.Controller,{name:`series.${t}.y_axis_data_key`,control:e,render:({field:c})=>n.jsx(L,{label:l("chart.series.data_field"),required:!0,sx:{flex:1},...c})}),n.jsx(y.Controller,{name:`series.${t}.aggregation_on_value`,control:e,render:({field:c})=>n.jsx(yr,{label:l("viz.cartesian_chart.series.aggregation.label"),value:c.value??_t,onChange:c.onChange,pt:0,withFallback:!1})})]}),n.jsx(s.Group,{grow:!0,children:n.jsx(y.Controller,{name:`series.${t}.group_by_key`,control:e,render:({field:c})=>n.jsx(L,{label:l("chart.series.group_by.label"),clearable:!0,sx:{flex:1},...c})})}),!!i&&n.jsx(y.Controller,{name:`series.${t}.order_in_group`,control:e,render:({field:c})=>n.jsx(bl,{label:l("chart.series_order.label"),hiddenKeys:["value"],...c})}),o==="line"&&n.jsx(Qf,{index:t,control:e,seriesItem:r}),o==="bar"&&n.jsx(jf,{index:t,control:e,seriesItem:r}),o==="scatter"&&n.jsx(Wf,{index:t,control:e}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:l("chart.style.label"),labelPosition:"center"}),n.jsx(y.Controller,{name:`series.${t}.label_position`,control:e,render:({field:c})=>n.jsx(St,{label:l("chart.label_position.label"),withOffOption:!0,...c})}),n.jsx(s.SimpleGrid,{cols:2,children:n.jsx(y.Controller,{name:`series.${t}.color`,control:e,render:({field:c})=>n.jsx(ye,{label:l("chart.color.label"),...c})})}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:l("chart.behavior.label"),labelPosition:"center"}),n.jsx(y.Controller,{name:`series.${t}.hide_in_legend`,control:e,render:({field:c})=>n.jsx(s.Checkbox,{label:l("chart.legend.hide_in_legend"),checked:c.value,onChange:d=>c.onChange(d.currentTarget.checked)})})]})}function Yf({control:e,watch:t}){const{t:r}=x.useTranslation(),a=()=>({type:"bar",name:te.randomId(),showSymbol:!1,symbolSize:fr.static,y_axis_data_key:"value",yAxisIndex:0,label_position:"top",display_name_on_line:!1,stack:"",color:"#000",step:!1,smooth:!1,barMinWidth:"1",barWidth:"10%",barMaxWidth:"10",barGap:"0%",lineStyle:{type:"solid",width:1},hide_in_legend:!1,group_by_key:"",order_in_group:nn(),areaStyle:fl()}),l=(c,d)=>{const u=c.name.trim();return u||d+1},o=t("y_axes"),i=h.useMemo(()=>o.map(({name:c},d)=>({label:c,value:d.toString()})),[o]);return n.jsx(X,{control:e,watch:t,name:"series",getItem:a,addButtonText:r("chart.series.add"),deleteButtonText:r("chart.series.delete"),renderTabName:l,children:({field:c,index:d})=>n.jsx(Uf,{control:e,index:d,seriesItem:c,yAxisOptions:i})})}const Kf=S.observer(({control:e,watch:t})=>{const{panel:r}=re(),{t:a}=x.useTranslation();return n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:"stats.top",control:e,render:({field:l})=>n.jsx(st,{label:a("chart.stats.template.above_chart"),styles:{root:{flexGrow:1,minHeight:"240px"}},autoSubmit:!0,...l},`${r.id}.stats.top`)}),n.jsx(y.Controller,{name:"stats.bottom",control:e,render:({field:l})=>n.jsx(st,{label:a("chart.stats.template.under_chart"),styles:{root:{flexGrow:1,minHeight:"240px"}},autoSubmit:!0,...l},`${r.id}.stats.bottom`)})]})}),Xf=({control:e,index:t})=>{const{t:r}=x.useTranslation();return n.jsx(s.Stack,{children:n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`tooltip.metrics.${t}.name`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("common.name"),required:!0,sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`tooltip.metrics.${t}.data_key`,control:e,render:({field:a})=>n.jsx(L,{label:r("common.data_field"),required:!0,sx:{flex:1},...a})})]})})},Zf=({control:e,watch:t})=>{const{t:r}=x.useTranslation(),a=()=>({id:Date.now().toString(),data_key:"",name:""}),l=(o,i)=>{const c=o.name.trim();return c||i+1};return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{gap:2,sx:{cursor:"default",userSelect:"none"},children:[n.jsx(T.IconInfoCircle,{size:14,color:"#888"}),n.jsx(s.Text,{size:"14px",c:"#888",children:r("chart.tooltip.additional_metrics.description")})]}),n.jsx(X,{control:e,watch:t,name:"tooltip.metrics",getItem:a,addButtonText:r("chart.tooltip.additional_metrics.add"),deleteButtonText:r("chart.tooltip.additional_metrics.delete"),renderTabName:l,children:({field:o,index:i})=>n.jsx(Xf,{control:e,index:i})})]})};function Jf({control:e,watch:t}){return n.jsx(s.Stack,{children:n.jsx(Zf,{control:e,watch:t})})}const Hf=()=>{const{t:e}=x.useTranslation();return n.jsxs(s.Group,{sx:{display:"inline-flex"},gap:6,mr:14,children:[n.jsx(s.Text,{size:"sm",children:e("chart.x_axis.x_axis_type")}),n.jsxs(s.HoverCard,{width:340,shadow:"md",position:"top",children:[n.jsx(s.HoverCard.Target,{children:n.jsx(s.ActionIcon,{size:"xs",variant:"subtle",sx:{transform:"none !important"},children:n.jsx(T.IconInfoCircle,{})})}),n.jsx(s.HoverCard.Dropdown,{children:n.jsx(s.Text,{size:"sm",children:n.jsxs(x.Trans,{i18nKey:"chart.axis.type.click_to_learn_more",children:["Click",n.jsx(s.Anchor,{href:"https://echarts.apache.org/en/option.html#xAxis.type",target:"_blank",mx:3,children:"here"}),"to learn more about these options"]})})})]})]})};function Rf({control:e,watch:t}){const{t:r,i18n:a}=x.useTranslation();t(["x_axis_data_key","x_axis_name","x_axis"]);const l=h.useMemo(()=>[{label:r("chart.axis.type.value"),value:"value"},{label:r("chart.axis.type.category"),value:"category"},{label:r("chart.axis.type.time"),value:"time"},{label:r("chart.axis.type.log"),value:"log"}],[a.language]);return n.jsxs(s.Stack,{children:[n.jsx(y.Controller,{name:"x_axis_name",control:e,render:({field:o})=>n.jsx(s.TextInput,{label:r("chart.x_axis.x_axis_name"),sx:{flex:1},...o})}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis_data_key",control:e,render:({field:o})=>n.jsx(L,{label:r("chart.x_axis.x_axis_data_field"),required:!0,sx:{flex:1},...o})}),n.jsx(y.Controller,{name:"x_axis.type",control:e,render:({field:o})=>n.jsx(s.Select,{label:n.jsx(Hf,{}),required:!0,data:l,sx:{flex:1},...o})})]}),n.jsx(s.Divider,{mb:-15,label:r("chart.axis.tick_label"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:"x_axis.axisLabel.rotate",control:e,render:({field:o})=>n.jsx(Je,{sx:{width:"48%"},...o})}),n.jsx(y.Controller,{name:"x_axis.axisLabel.formatter",control:e,render:({field:o})=>n.jsx(Ne,{...o})})]}),n.jsx(y.Controller,{name:"x_axis.axisLabel.overflow",control:e,render:({field:o})=>n.jsx(Ge,{...o})})]})}const ot=h.forwardRef(({label:e,value:t,onChange:r,sx:a={},disabled:l},o)=>{const{t:i,i18n:c}=x.useTranslation(),d=h.useMemo(()=>[{label:i("chart.name_text.align.left"),value:"left"},{label:i("chart.name_text.align.center"),value:"center"},{label:i("chart.name_text.align.right"),value:"right"}],[c.language]);return n.jsx(s.Select,{ref:o,label:e??i("chart.name_text.align.label"),data:d,value:t,onChange:J(r),sx:a,disabled:l})}),xl=h.forwardRef(({label:e,value:t,onChange:r,sx:a={}},l)=>{const{t:o,i18n:i}=x.useTranslation(),c=h.useMemo(()=>[{label:o("chart.y_axis.position.left"),value:"left"},{label:o("chart.y_axis.position.right"),value:"right"}],[i.language]);return n.jsx(s.Select,{ref:l,label:e??o("chart.y_axis.position.label"),data:c,value:t,onChange:J(r),sx:a})});function eb({control:e,index:t}){const{t:r}=x.useTranslation();return n.jsxs(s.Stack,{my:0,p:"0",sx:{position:"relative"},children:[n.jsx(s.Divider,{mb:-15,mt:15,variant:"dashed",label:r("common.name"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`y_axes.${t}.name`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.y_axis_name"),required:!0,sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`y_axes.${t}.nameAlignment`,control:e,render:({field:a})=>n.jsx(ot,{sx:{flex:1},...a})})]}),n.jsx(s.Divider,{mb:-15,variant:"dashed",label:r("chart.y_axis.layout"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,wrap:"nowrap",children:[n.jsx(y.Controller,{name:`y_axes.${t}.position`,control:e,render:({field:a})=>n.jsx(xl,{sx:{flex:1},...a})}),n.jsx(y.Controller,{name:`y_axes.${t}.mirror`,control:e,render:({field:a})=>n.jsx(s.Checkbox,{pt:20,label:r("chart.y_axis.mirror.label"),checked:a.value,onChange:l=>a.onChange(l.currentTarget.checked)})})]}),n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mb:-15,variant:"dashed",label:r("chart.y_axis.label_format"),labelPosition:"center"}),n.jsx(y.Controller,{name:`y_axes.${t}.label_formatter`,control:e,render:({field:a})=>n.jsx($e,{...a})})]}),n.jsxs(s.Stack,{children:[n.jsx(s.Divider,{mb:-15,variant:"dashed",label:r("chart.y_axis.value_range"),labelPosition:"center"}),n.jsxs(s.Group,{grow:!0,children:[n.jsx(y.Controller,{name:`y_axes.${t}.min`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.value_min"),...a})}),n.jsx(y.Controller,{name:`y_axes.${t}.max`,control:e,render:({field:a})=>n.jsx(s.TextInput,{label:r("chart.y_axis.value_max"),...a})})]})]}),n.jsx(s.Divider,{mb:-10,mt:10,variant:"dashed",label:r("chart.y_axis.behavior"),labelPosition:"center"}),n.jsx(y.Controller,{name:`y_axes.${t}.show`,control:e,render:({field:a})=>n.jsx(s.Checkbox,{label:r("chart.y_axis.visible"),checked:a.value,onChange:l=>a.onChange(l.currentTarget.checked)})})]})}function tb({control:e,watch:t}){const{t:r}=x.useTranslation(),a=()=>({name:"",position:"left",nameAlignment:"left",label_formatter:oe,min:"",max:"",show:!0,mirror:!1}),l=(i,c)=>{const d=i.name.trim();return d||c+1},o=({field:i,index:c,fields:d})=>d.length<=1;return n.jsx(X,{control:e,watch:t,name:"y_axes",getItem:a,addButtonText:r("chart.y_axis.add"),deleteButtonText:r("chart.y_axis.delete"),renderTabName:l,deleteDisalbed:o,children:({field:i,index:c})=>n.jsx(eb,{control:e,index:c})})}function nb({conf:e,setConf:t,context:r}){const{t:a}=x.useTranslation(),{variables:l}=r,o=h.useMemo(()=>b.defaults({},e),[e]),{control:i,handleSubmit:c,watch:d,reset:u,formState:p}=y.useForm({defaultValues:o});return h.useEffect(()=>{u(o)},[o]),d(["dataZoom"]),n.jsx(s.Stack,{gap:"xs",children:n.jsxs("form",{onSubmit:c(t),children:[n.jsx(le,{canSubmit:p.isDirty}),n.jsxs(s.Tabs,{defaultValue:"Series",orientation:"vertical",styles:{tab:{paddingLeft:"6px",paddingRight:"6px"},panel:{paddingTop:"6px",paddingLeft:"12px"}},children:[n.jsxs(s.Tabs.List,{children:[n.jsx(s.Tabs.Tab,{value:"X Axis",children:a("chart.x_axis.label")}),n.jsx(s.Tabs.Tab,{value:"Y Axes",children:a("chart.y_axis.labels")}),n.jsx(s.Tabs.Tab,{value:"Series",children:a("chart.series.label")}),n.jsx(s.Tabs.Tab,{value:"Regression Lines",children:a("chart.regression_line.labels")}),n.jsx(s.Tabs.Tab,{value:"Tooltip",children:a("chart.tooltip.label")}),n.jsx(s.Tabs.Tab,{value:"Stats",children:a("chart.stats.label")}),n.jsx(s.Tabs.Tab,{value:"Reference Lines",children:a("chart.reference_line.labels")}),n.jsx(s.Tabs.Tab,{value:"Reference Areas",children:a("chart.reference_area.labels")}),n.jsx(s.Tabs.Tab,{value:"Zooming",children:a("chart.zooming.label")})]}),n.jsx(s.Tabs.Panel,{value:"X Axis",children:n.jsx(Rf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Y Axes",children:n.jsx(tb,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Series",children:n.jsx(Yf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Regression Lines",children:n.jsx(Lf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Tooltip",children:n.jsx(Jf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Stats",children:n.jsx(Kf,{control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Reference Lines",children:n.jsx(Ef,{variables:l,control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Reference Areas",children:n.jsx(Vf,{variables:l,control:i,watch:d})}),n.jsx(s.Tabs.Panel,{value:"Zooming",children:n.jsx(y.Controller,{name:"dataZoom",control:i,render:({field:f})=>n.jsx(tn,{...f})})})]})]})})}function rb(e){const{value:t,set:r}=B(e.context.instanceData,"config");return t?n.jsx(nb,{conf:t,setConf:r,...e}):null}const ab={displayName:"viz.cartesian_chart.viz_name",displayGroup:"chart.groups.echarts_based_charts",migrator:new Rg,name:"cartesian",viewRender:Af,configRender:rb,createConfig(){return{version:21,config:b.cloneDeep(yl)}},triggers:[pr],translation:ef};function sb(e){if(e.enable_value)return e.value}function lb(e){if(e.enable_value)return e.value}function ob(e){const t=e.axisLabel.overflow.on_axis.width,r=e.axisLabel.position,a={top:5,left:5,right:5,bottom:5};return e.orient==="vertical"&&b.get(a,r)&&r===e.funnelAlign&&b.set(a,r,t),a}function ib(e,t){return e.series.map(r=>{const{level_name_data_key:a,level_value_data_key:l,axisLabel:o,min:i,max:c,funnelAlign:d,orient:u,...p}=r;if(!a||!l)return{};const f=A(a),v=A(l),m=t[f.queryID].map(w=>({name:w[f.columnKey],value:w[v.columnKey]})),_=Ve(o.overflow.on_axis);return{type:"funnel",...ob(r),min:sb(i),max:lb(c),minSize:i.size,maxSize:c.size,...p,label:{show:!0,position:o.position,..._},orient:u,funnelAlign:u==="horizontal"?"center":d,data:m}})}function cb({conf:e,params:t,max:r}){const{name:a,value:l}=t.data,o=U(l/r,{output:"percent",mantissa:2,trimMantissa:!0,absolute:!1});return[{label:`${t.marker} ${a}`,value:`${l} (${o})`,style:{label:"",value:""}}]}function db(e,t){var o;const r=A(e.series[0].level_name_data_key),a=A(e.series[0].level_value_data_key),l=(o=b.maxBy(t[r.queryID],a.columnKey))==null?void 0:o[a.columnKey];return i=>{const d=cb({conf:e,params:i,max:l}).map(p=>`
|
|
135
135
|
<tr>
|
|
136
136
|
<th style="text-align: right;">
|
|
137
137
|
<div style="${p.style.label}">${p.label}</div>
|