@devtable/dashboard 14.57.4 → 14.57.5
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 +5 -5
- package/dist/dashboard.umd.js +2 -2
- package/dist/stats.html +1 -1
- package/dist/version.json +2 -2
- package/package.json +5 -2
package/dist/dashboard.es.js
CHANGED
|
@@ -2518,7 +2518,7 @@ class mi {
|
|
|
2518
2518
|
}), this.instanceRegistry.clear(), this.factoryRegistry.clear();
|
|
2519
2519
|
}
|
|
2520
2520
|
}
|
|
2521
|
-
const Ys = "14.57.
|
|
2521
|
+
const Ys = "14.57.5", Mg = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
2522
2522
|
__proto__: null,
|
|
2523
2523
|
version: Ys
|
|
2524
2524
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -29001,11 +29001,11 @@ function Iu(e, t, n, a) {
|
|
|
29001
29001
|
};
|
|
29002
29002
|
}
|
|
29003
29003
|
function VD(e, t) {
|
|
29004
|
-
const n =
|
|
29005
|
-
|
|
29004
|
+
const n = t.startsWith("t") && t.endsWith("b") ? t.slice(1, -1) : t, a = rg(n);
|
|
29005
|
+
a !== e && (console.error("Inconsistent sql"), console.groupCollapsed("Inconsistent sql"), console.table({
|
|
29006
29006
|
before: e,
|
|
29007
29007
|
after: t,
|
|
29008
|
-
v:
|
|
29008
|
+
v: a
|
|
29009
29009
|
}), console.groupEnd());
|
|
29010
29010
|
}
|
|
29011
29011
|
async function LD({
|
|
@@ -29025,7 +29025,7 @@ async function LD({
|
|
|
29025
29025
|
} = e, h = ki(s, n), p = Jf({
|
|
29026
29026
|
sql: h,
|
|
29027
29027
|
pre_process: c
|
|
29028
|
-
}), g = ng(p)
|
|
29028
|
+
}), g = `t${ng(p)}b`;
|
|
29029
29029
|
VD(p, g);
|
|
29030
29030
|
let b = await vt.query(i)({
|
|
29031
29031
|
type: o,
|
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_field:{selector:{options:{unset:"未设置",default:"默认"}}}},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:"其他"},unit:{title:"单位",text:{placeholder:"单位文案"},show_in_tooltip:"在提示框中显示单位",show_in_legend:"在图例中显示单位"},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 ln{constructor(t){V(this,"rootRef");this.rootRef=G.observable({current:t})}async deleteItem(t){G.runInAction(()=>{y.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?G.toJS(this.rootRef.current):y.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(y.isObject(r))G.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else G.runInAction(()=>{y.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return G.reaction(()=>this.getValueFromRoot(t),(o,l)=>{r(o,l)},{requiresObservable:!0,fireImmediately:y.get(a,"fireImmediately",!1)})}}class Gu{constructor(){V(this,"channels",new Map);V(this,"globalChannel",new ys)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new ys;return this.channels.set(t,a),a}}class Fu{constructor(t){V(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 Gu,instanceData:new ln(t.viz.conf)};return this.instances.set(t.id,a),a}}function Os(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new ln({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const Qu=e=>{const{panel:t,measure:r,vizManager:a,data:o,variables:l}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...Os(c,o,a,l),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...y.omit(e,["panel","vizManager","data"])})},ju=e=>{const{vizManager:t,panel:r,data:a,variables:o}=e,l=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...Os(i,a,t,o)},d=l.configRender;return n.jsx(d,{context:c,instance:i,...y.omit(e,["panel","vizManager","data"])})},Ns=(e,t)=>{const r=Ge.bezier(e),a=Ge.bezier(t);return function(o){return o<50?r(o*2/100).hex():a((o-50)*2/100).hex()}},cn=e=>{const t=Ge.bezier(e);return function(r){return t(r/100).hex()}},Wu={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Ns(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Uu={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Ns(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ku={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:cn(["#fff7f1","darkred"]),name:"red",category:"sequential"},Yu={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:cn(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Xu={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:cn(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Zu={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:cn(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Ju{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(o=>o.manifest.panelAddon).filter(o=>!!o).map(o=>h.createElement(o.addonRender,{...t,key:o.name}));return n.jsx(n.Fragment,{children:a})}}const Gs=h.createContext({addonSlotId:null});function Fs({children:e,addonSlotId:t}){const r=h.useId(),a=t||`panel-addon-slot-${r}`;return n.jsx(Gs.Provider,{value:{addonSlotId:a},children:e})}function Hu(){const{addonSlotId:e}=h.useContext(Gs);return e?document.getElementById(e):null}class Ru{constructor(t){V(this,"symbol");this.symbol=Symbol(t)}}function Je(e){return new Ru(e)}class Xn{constructor(){V(this,"parent");V(this,"factoryRegistry",new Map);V(this,"instanceRegistry",new Map)}createScoped(){const t=new Xn;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=y.get(t,"dispose");y.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Qs="14.57.4",ep=Object.freeze(Object.defineProperty({__proto__:null,version:Qs},Symbol.toStringTag,{value:"Module"}));class tp{constructor(t){V(this,"staticColors",new Map);V(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 np{constructor(){V(this,"plugins",new Map);V(this,"vizComponents",new Map);V(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 rp{constructor(){V(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 o=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),l=y.orderBy(o,"version","asc");if(((i=y.last(l))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return l.reduce((c,d)=>d.handler(c,a),r)}}class J extends rp{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,o)=>({version:t,...r(a,o)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),o=y.get(a,"version",0),l=this.run({from:o,to:this.VERSION},a,{panelModel:r});await t.setItem(null,l)}async needMigration({configData:t}){const r=await t.getItem(null);return y.get(r,"version",0)<this.VERSION}}const q=(e,t)=>{const[r,{setFalse:a}]=O.useBoolean(!0),[o,l]=h.useState();h.useEffect(()=>(e.getItem(t).then(c=>{l(c),a()}),e.watchItem(t,c=>{l(c)})));const i=h.useCallback(async c=>{await e.setItem(t,c),l(c)},[e,t]);return{loading:r,value:o,set:i}},js=h.createContext(null),Zn=js.Provider;function Wt(){const e=h.useContext(js);if(!e)throw new Error("Please use DashboardModelContextProvider");return e}const j=()=>Wt(),Ws=()=>Wt(),Us=h.createContext({}),Jn=Us.Provider;function Ks(){return h.useContext(Us)}const Hn=h.createContext(null),Rn=Hn.Provider;function er(){const e=h.useContext(Hn);if(!e)throw new Error("Please use ContentModelContextProvider");return e}const F=()=>er(),ap={inEditMode:!1},St=h.createContext(ap);function Ys(){const e=h.useContext(St);if(!e)throw new Error("Please use LayoutStateContext.Provider");return e}const Xs=h.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{},getEchartsOptions:()=>null,setEchartsOptions:()=>{}}),tr=Xs.Provider;function nr(){const e=h.useContext(Xs);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const re=()=>nr(),ae=()=>nr();function Zs(){try{return nr(),!0}catch{return!1}}const Js=()=>Zs(),Hs=()=>Zs(),sp={fullScreenPanelID:"",setFullScreenPanelID:y.noop},rr=h.createContext(sp);function Rs(){const e=h.useContext(rr);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const op={en:"en",zh:"zh-cn"};function ar({children:e}){const{i18n:t}=m.useTranslation(),r=h.useMemo(()=>{const a=t.language;return op[a]??"en"},[t.language]);return n.jsx(wt.DatesProvider,{settings:{locale:r,firstDayOfWeek:1},children:e})}const H=()=>er(),lp={items:[]},sr=h.createContext(lp),or=sr.Provider;function lr(){return h.useContext(sr)}h.forwardRef(function({value:t,onChange:r,...a},o){return n.jsx(s.TextInput,{ref:o,value:t,onChange:r,...a})});class ip{constructor({valueRange:t,colorRange:r}){V(this,"mapper");this.mapper=dt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function cp(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 ip(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const dp=cp;function $(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function eo(e){return!!e&&!!e.columnKey&&!!e.queryID}function up(e){return e.includes(".")?$(e):{queryID:"",columnKey:e}}function me(e,t){var o;const{queryID:r,columnKey:a}=$(t);return r?a?((o=e[r])==null?void 0:o.map(l=>l[a]))??[]:e[r]:[]}function dn(e,t){const{queryID:r}=$(t);return r?e[r]:[]}function pp(e){return Object.values(e)[0]}function un(e,t){const{queryID:r,columnKey:a}=$(t);return e[a]}const We={CryptoJS:_s,d3Array:Ls,dayjs:M,lodash:y,numbro:Ee,mathjs:je,faker:Kd.faker,popmotion:Bu},hp=[{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"}],gp=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_field:{selector:{options:{unset:"未设置",default:"默认"}}}},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:"其他"},unit:{title:"单位",text:{placeholder:"单位文案"},show_in_tooltip:"在提示框中显示单位",show_in_legend:"在图例中显示单位"},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 ln{constructor(t){V(this,"rootRef");this.rootRef=G.observable({current:t})}async deleteItem(t){G.runInAction(()=>{y.unset(this.rootRef.current,[t])})}getItem(t){const r=this.getValueFromRoot(t);return Promise.resolve(r)}getValueFromRoot(t){return t===null?G.toJS(this.rootRef.current):y.get(this.rootRef.current,[t])}setItem(t,r){if(t===null)if(y.isObject(r))G.runInAction(()=>{this.rootRef.current=r});else throw new Error("Cannot set root value to non-object");else G.runInAction(()=>{y.set(this.rootRef.current,[t],r)});return Promise.resolve(this.getItem(t))}watchItem(t,r,a){return G.reaction(()=>this.getValueFromRoot(t),(o,l)=>{r(o,l)},{requiresObservable:!0,fireImmediately:y.get(a,"fireImmediately",!1)})}}class Gu{constructor(){V(this,"channels",new Map);V(this,"globalChannel",new ys)}getChannel(t){const r=this.channels.get(t);if(r)return r;const a=new ys;return this.channels.set(t,a),a}}class Fu{constructor(t){V(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 Gu,instanceData:new ln(t.viz.conf)};return this.instances.set(t.id,a),a}}function Os(e,t,r,a){return{vizManager:r,locale:"zh",msgChannels:e.messageChannels,instanceData:e.instanceData,pluginData:new ln({}),colorPalette:{getColor(){return()=>""}},data:t,variables:a}}const Qu=e=>{const{panel:t,measure:r,vizManager:a,data:o,variables:l}=e,i=a.resolveComponent(t.viz.type),c=a.getOrCreateInstance(t),d={...Os(c,o,a,l),viewport:{width:r.w,height:r.h}},u=i.viewRender;return n.jsx(u,{context:d,instance:c,...y.omit(e,["panel","vizManager","data"])})},ju=e=>{const{vizManager:t,panel:r,data:a,variables:o}=e,l=t.resolveComponent(r.viz.type),i=t.getOrCreateInstance(r),c={...Os(i,a,t,o)},d=l.configRender;return n.jsx(d,{context:c,instance:i,...y.omit(e,["panel","vizManager","data"])})},Ns=(e,t)=>{const r=Ge.bezier(e),a=Ge.bezier(t);return function(o){return o<50?r(o*2/100).hex():a((o-50)*2/100).hex()}},cn=e=>{const t=Ge.bezier(e);return function(r){return t(r/100).hex()}},Wu={type:"interpolation",displayName:"style.color.interpolation.palette.red_green",getColor:Ns(["darkred","deeppink","lightyellow"],["lightyellow","lightgreen","teal"]),name:"red-green",category:"diverging"},Uu={type:"interpolation",displayName:"style.color.interpolation.palette.yellow_blue",getColor:Ns(["#8f531d","#ffd347","#e3efe3"],["#eefaee","#4ecbbf","#003f94"]),name:"yellow-blue",category:"diverging"},Ku={type:"interpolation",displayName:"style.color.interpolation.palette.red",getColor:cn(["#fff7f1","darkred"]),name:"red",category:"sequential"},Yu={type:"interpolation",displayName:"style.color.interpolation.palette.green",getColor:cn(["#f0ffed","darkgreen"]),name:"green",category:"sequential"},Xu={type:"interpolation",displayName:"style.color.interpolation.palette.blue",getColor:cn(["#f9fcff","#48b3e9","darkblue"]),name:"blue",category:"sequential"},Zu={type:"interpolation",displayName:"style.color.interpolation.palette.orange",getColor:cn(["#fff7f1","darkorange","#b60000"]),name:"orange",category:"sequential"};class Ju{constructor(t){this.pluginManager=t}createPanelAddonNode(t){const a=this.pluginManager.installedPlugins.flatMap(o=>o.manifest.panelAddon).filter(o=>!!o).map(o=>h.createElement(o.addonRender,{...t,key:o.name}));return n.jsx(n.Fragment,{children:a})}}const Gs=h.createContext({addonSlotId:null});function Fs({children:e,addonSlotId:t}){const r=h.useId(),a=t||`panel-addon-slot-${r}`;return n.jsx(Gs.Provider,{value:{addonSlotId:a},children:e})}function Hu(){const{addonSlotId:e}=h.useContext(Gs);return e?document.getElementById(e):null}class Ru{constructor(t){V(this,"symbol");this.symbol=Symbol(t)}}function Je(e){return new Ru(e)}class Xn{constructor(){V(this,"parent");V(this,"factoryRegistry",new Map);V(this,"instanceRegistry",new Map)}createScoped(){const t=new Xn;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=y.get(t,"dispose");y.isFunction(r)&&r.bind(t)()}),this.instanceRegistry.clear(),this.factoryRegistry.clear()}}const Qs="14.57.5",ep=Object.freeze(Object.defineProperty({__proto__:null,version:Qs},Symbol.toStringTag,{value:"Module"}));class tp{constructor(t){V(this,"staticColors",new Map);V(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 np{constructor(){V(this,"plugins",new Map);V(this,"vizComponents",new Map);V(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 rp{constructor(){V(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 o=this.migrations.filter(c=>c.version>t.from&&c.version<=t.to),l=y.orderBy(o,"version","asc");if(((i=y.last(l))==null?void 0:i.version)!==t.to)throw new Error(`Migration to version ${t.to} not found`);return l.reduce((c,d)=>d.handler(c,a),r)}}class J extends rp{constructor(){super(),this.configVersions()}version(t,r){return super.version(t,(a,o)=>({version:t,...r(a,o)}))}async migrate({configData:t,panelModel:r}){const a=await t.getItem(null),o=y.get(a,"version",0),l=this.run({from:o,to:this.VERSION},a,{panelModel:r});await t.setItem(null,l)}async needMigration({configData:t}){const r=await t.getItem(null);return y.get(r,"version",0)<this.VERSION}}const q=(e,t)=>{const[r,{setFalse:a}]=O.useBoolean(!0),[o,l]=h.useState();h.useEffect(()=>(e.getItem(t).then(c=>{l(c),a()}),e.watchItem(t,c=>{l(c)})));const i=h.useCallback(async c=>{await e.setItem(t,c),l(c)},[e,t]);return{loading:r,value:o,set:i}},js=h.createContext(null),Zn=js.Provider;function Wt(){const e=h.useContext(js);if(!e)throw new Error("Please use DashboardModelContextProvider");return e}const j=()=>Wt(),Ws=()=>Wt(),Us=h.createContext({}),Jn=Us.Provider;function Ks(){return h.useContext(Us)}const Hn=h.createContext(null),Rn=Hn.Provider;function er(){const e=h.useContext(Hn);if(!e)throw new Error("Please use ContentModelContextProvider");return e}const F=()=>er(),ap={inEditMode:!1},St=h.createContext(ap);function Ys(){const e=h.useContext(St);if(!e)throw new Error("Please use LayoutStateContext.Provider");return e}const Xs=h.createContext({panel:null,data:{},loading:!1,errors:[],downloadPanelScreenshot:()=>{},getEchartsOptions:()=>null,setEchartsOptions:()=>{}}),tr=Xs.Provider;function nr(){const e=h.useContext(Xs);if(!e.panel)throw new Error("Please use PanelContextProvider");return e}const re=()=>nr(),ae=()=>nr();function Zs(){try{return nr(),!0}catch{return!1}}const Js=()=>Zs(),Hs=()=>Zs(),sp={fullScreenPanelID:"",setFullScreenPanelID:y.noop},rr=h.createContext(sp);function Rs(){const e=h.useContext(rr);if(!e)throw new Error("Please use FullScreenPanelContext.Provider");return e}const op={en:"en",zh:"zh-cn"};function ar({children:e}){const{i18n:t}=m.useTranslation(),r=h.useMemo(()=>{const a=t.language;return op[a]??"en"},[t.language]);return n.jsx(wt.DatesProvider,{settings:{locale:r,firstDayOfWeek:1},children:e})}const H=()=>er(),lp={items:[]},sr=h.createContext(lp),or=sr.Provider;function lr(){return h.useContext(sr)}h.forwardRef(function({value:t,onChange:r,...a},o){return n.jsx(s.TextInput,{ref:o,value:t,onChange:r,...a})});class ip{constructor({valueRange:t,colorRange:r}){V(this,"mapper");this.mapper=dt.interpolate(t,r)}getColor(t){return this.mapper(t)}}function cp(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 ip(e).getColor(r)}catch(r){return console.error(r),"black"}return"black"}const dp=cp;function $(e){const[t,r]=e.split(".");return{queryID:t,columnKey:r}}function eo(e){return!!e&&!!e.columnKey&&!!e.queryID}function up(e){return e.includes(".")?$(e):{queryID:"",columnKey:e}}function me(e,t){var o;const{queryID:r,columnKey:a}=$(t);return r?a?((o=e[r])==null?void 0:o.map(l=>l[a]))??[]:e[r]:[]}function dn(e,t){const{queryID:r}=$(t);return r?e[r]:[]}function pp(e){return Object.values(e)[0]}function un(e,t){const{queryID:r,columnKey:a}=$(t);return e[a]}const We={CryptoJS:_s,d3Array:Ls,dayjs:M,lodash:y,numbro:Ee,mathjs:je,faker:Kd.faker,popmotion:Bu},hp=[{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"}],gp=e=>`
|
|
10
10
|
<tr>
|
|
11
11
|
<td><code>${e.name}</code></td>
|
|
12
12
|
<td>
|
|
@@ -539,7 +539,7 @@ Variable: {{ your_var }}`,tabs:{guide:"Guide",vars:"Dashboard state & Panel vari
|
|
|
539
539
|
}
|
|
540
540
|
`,Vi=()=>{const{t:e}=m.useTranslation(),[t,r]=h.useState(!1);return n.jsxs(n.Fragment,{children:[n.jsx(s.Button,{variant:"subtle",size:"compact-sm",onClick:()=>r(a=>!a),children:e(t?"common.actions.close":"filter.widget.common.see_data_structure")}),n.jsx(s.Collapse,{in:t,children:n.jsx(Qe.CodeHighlight,{language:"typescript",withCopyButton:!1,code:FT})})]})},QT={[P.Checkbox]:"true",[P.DateRange]:"[new Date('2023-01-01 00:00:00'), new Date('2024-01-01 00:00:00')]",[P.MericoDateRange]:"[new Date('2023-01-01 00:00:00'), new Date('2024-01-01 00:00:00')]",[P.MultiSelect]:"[]",[P.Select]:'""',[P.TreeSelect]:"[]",[P.TreeSingleSelect]:'""',[P.TextInput]:'""'},jT=e=>["function getDefaultValue(filter, utils, context) {",` return ${QT[e]};`,"}"].join(`
|
|
541
541
|
`),_t=k.observer(({filter:e})=>{const{t}=m.useTranslation();return n.jsx(fr,{label:"",title:t("filter.field.custom_default_value.title"),triggerLabel:t("filter.field.custom_default_value.trigger"),value:e.default_value_func,onChange:e.setDefaultValueFunc,defaultValue:jT(e.type),triggerButtonProps:{size:"xs",color:"grape",sx:{flexGrow:0,alignSelf:"flex-start"},leftSection:n.jsx(T.IconMathFunction,{size:16})},description:n.jsx(s.Alert,{title:t("filter.field.custom_default_value.tips"),color:"gray",mb:16,children:n.jsxs(s.List,{size:"xs",type:"ordered",children:[n.jsx(s.List.Item,{children:t("filter.field.custom_default_value.tip_1")}),n.jsx(s.List.Item,{children:t("filter.field.custom_default_value.tip_2")})]})})})}),$n=k.observer(({value:e,onChange:t})=>{const{t:r}=m.useTranslation(),a=j(),o=F(),l=h.useMemo(()=>o.queries.options,[o.queries.current]),i=l.length===0,c=d=>{a.editor.setPath(["_QUERIES_",d])};return n.jsx(s.Select,{label:n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Text,{fw:500,size:"sm",children:r("filter.widget.common.use_query_data_as_options")}),e&&n.jsx(s.Button,{size:"xs",leftSection:n.jsx(T.IconArrowCurveRight,{size:16}),variant:"subtle",color:"blue",onClick:()=>c(e),children:r("query.open")})]}),data:l,value:e,onChange:Z(t),allowDeselect:!1,clearable:!0,sx:{flexGrow:1},disabled:i,error:i?"You need to add a query in Data Settings":void 0,styles:{label:{display:"block"}}})}),Pi={stroke:1.5,color:"currentColor",opacity:1,size:18},$i={intersect:n.jsx(T.IconLayersIntersect,{...Pi}),reset:n.jsx(T.IconLayersSubtract,{...Pi})},WT=({option:e,checked:t})=>n.jsxs(s.Group,{flex:"1",gap:"xs",children:[$i[e.value],e.label]}),xa=k.observer(({config:e})=>{const{t,i18n:r}=m.useTranslation(),a=h.useMemo(()=>[{label:t("filter.widget.common.default_value_mode.intersect"),value:"intersect"},{label:t("filter.widget.common.default_value_mode.reset"),value:"reset"}],[r.language]),{default_value_mode:o}=e;return n.jsx(s.Select,{leftSection:$i[o]??null,label:t("filter.widget.common.default_value_mode.label"),data:a,value:o,onChange:e.setDefaultValueMode,renderOption:WT})}),UT=k.observer(function({filter:t}){const{t:r}=m.useTranslation(),a=t.config;return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Checkbox,{checked:a.required,onChange:o=>a.setRequired(o.currentTarget.checked),label:r("filter.widget.select.required")}),n.jsx(_t,{filter:t})]}),n.jsx(s.TextInput,{label:r("filter.widget.common.min_width"),value:a.min_width,onChange:o=>a.setMinWidth(o.currentTarget.value),placeholder:"200px"}),n.jsx(s.Divider,{label:r("filter.widget.common.fetch_options_from_datasource"),labelPosition:"center"}),n.jsx(s.Checkbox,{checked:a.treeCheckStrictly,onChange:o=>a.setTreeCheckStrictly(o.currentTarget.checked),label:r("filter.widget.tree_select.strictly")}),n.jsx($n,{value:a.options_query_id,onChange:a.setOptionsQueryID}),n.jsx(s.NumberInput,{value:a.default_selection_count,onChange:a.setDefaultSelectionCount,label:r("filter.widget.common.default_selection_count")}),n.jsx(xa,{config:a}),n.jsx(Vi,{})]})}),Ca=({errorMessage:e})=>{const{t}=m.useTranslation();return e?n.jsx(s.Text,{c:"red",size:"12px",children:e}):n.jsx(s.Text,{c:"dimmed",size:"12px",children:t("filter.widget.common.selector_option_empty")})},KT=({rotate:e,onClick:t})=>n.jsx("svg",{onClick:t,className:"caret-icon",viewBox:"0 0 1024 1024",focusable:"false","data-icon":"caret-down",width:"14px",height:"14px",fill:"currentColor","aria-hidden":"true",transform:`rotate(${e})`,children:n.jsx("path",{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"})}),Ai=({expanded:e,isLeaf:t,value:r,onClick:a,...o})=>t?n.jsx("span",{style:{width:"14px",display:"inline-block"}}):n.jsx(KT,{rotate:e?"0":"-90",onClick:a,...o}),YT=({onClick:e})=>n.jsxs("svg",{onClick:e,className:"checkbox-icon",width:"16",height:"16",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",children:[n.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),n.jsx("rect",{className:"border",x:"4",y:"4",width:"16",height:"16",rx:"2"}),n.jsx("rect",{className:"checkmark-indeterminate",x:"8",y:"8",width:"8",height:"8",rx:"2",stroke:"none"}),n.jsx("path",{className:"checkmark-checked",d:"M9 12l2 2l4 -4"})]}),Ei=({onClick:e,...t})=>n.jsx(YT,{onClick:e,...t}),XT=pt.createStyles((e,{radius:t=4,width:r,name:a})=>({root:{borderRadius:s.getRadius(t),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef","&.rc-tree-select.rc-tree-select-open":{borderColor:"#228be6 !important",".rc-tree-select-selection-overflow-item-rest":{display:"none"},".rc-tree-select-selection-overflow-item-suffix":{display:"block"}},".rc-tree-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"12px",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",flexGrow:1},".rc-tree-select-selection-search-mirror":{display:"none"},".rc-tree-select-selection-search":{flexGrow:1,width:"auto !important"},".rc-tree-select-selection-overflow":{display:"flex",minHeight:"34px",alignItems:"center",flexWrap:"nowrap",marginLeft:"calc(-10px / 2)",boxSizing:"border-box"},".rc-tree-select-selection-overflow-item":{display:"flex",alignItems:"center",backgroundColor:"#f1f3f5",color:"#495057",height:"24px",paddingLeft:"12px",paddingRight:"12px",fontWeight:500,fontSize:"12px",borderRadius:"4px",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",margin:"calc(10px / 2 - 2px) calc(10px / 2)"},".rc-tree-select-selection-overflow-item-rest":{cursor:"pointer"},".rc-tree-select-selection-overflow-item-suffix":{display:"none",backgroundColor:"transparent",width:"100%",maxWidth:"100%",height:"28px",margin:0,paddingLeft:0,paddingRight:0},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-tree-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-tree-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-tree-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:e.fontSizes.sm,fontWeight:500,color:"#212529"},required:{color:"#fa5252",paddingLeft:"3px"},dropdown:{fontSize:e.fontSizes.xs,zIndex:300,position:"absolute",width:`${r} !important`,backgroundColor:"#fff",border:"1px solid #e9ecef",boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px","&.rc-tree-select-dropdown-slide-up-leave-active":{display:"none"},".rc-tree-select-tree-list .rc-tree-select-tree-list-holder":{},".rc-tree-select-tree-list, .rc-tree-select-empty":{padding:0},".rc-tree-select-empty":{padding:"8px 12px"},".rc-tree-select-tree-treenode":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"0px 12px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden","&:hover":{backgroundColor:"#f1f3f5"},"&.rc-tree-select-tree-treenode-checkbox-checked":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-checked":{stroke:"rgb(64, 192, 87)",animation:"check 200ms linear forwards"}},"&.rc-tree-select-tree-treenode-checkbox-indeterminate":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-indeterminate":{fill:"rgb(64, 192, 87)"}},"&.rc-tree-select-tree-treenode-disabled":{color:"#aaa",".rc-tree-select-tree-title, .rc-tree-select-tree-iconEle":{cursor:"not-allowed"},".rc-tree-select-tree-iconEle":{"svg .border":{fill:"#ced4da"}}},".rc-tree-select-tree-switcher":{height:"16px",alignSelf:"center",paddingRight:"2px",transition:"color 200ms ease","&:hover":{color:"#228be6","svg.caret-icon":{color:"#228be6"}},"svg.caret-icon":{color:"#ced4da",transition:"all 200ms ease"}},".rc-tree-select-tree-node-content-wrapper":{display:"flex",flexWrap:"nowrap",overflow:"hidden",alignItems:"center",gap:"8px",width:"100%",padding:"8px 0",transition:"color 200ms ease","&:hover":{color:"#228be6"}},".rc-tree-select-tree-iconEle":{height:"16px","svg .border":{stroke:"#ced4da"},".checkbox-icon .checkmark-indeterminate":{fill:"transparent",transition:"fill 200ms ease"},".checkbox-icon .checkmark-checked":{transform:"scale(1.2)",transformOrigin:"center center",strokeDasharray:10,strokeDashoffset:-10},"@keyframes check":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}},".rc-tree-select-tree-title":{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",".rc-tree-select-tree-title-desc":{fontSize:"12px",maxWidth:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}},".rc-tree-select-tree-indent":{flexGrow:0,height:0,verticalAlign:"bottom"},".rc-tree-select-tree-indent-unit":{display:"inline-block",width:"1em"}}}})),ZT=(e,t,r,a)=>{const o=h.useMemo(()=>{if(!a)return y.cloneDeep(e.filter(g=>!g.disabled));const u=[],p=g=>{g.disabled||u.push(g),g.children.forEach(p)};return e.forEach(p),u},[e,a]),l=h.useMemo(()=>new Set(o.map(u=>u.value)),[o]),i=h.useMemo(()=>new Set(t.map(u=>u.value)),[t]),c=h.useMemo(()=>i.size!==l.size?!1:Array.from(l).every(u=>i.has(u)),[i,l]);return{allValueSet:l,selectedValueSet:i,toggleSelectAll:()=>{if(c){r([]);return}const u=Array.from(o);r(u)},allSelected:c}},JT={root:{cursor:"pointer",backgroundColor:"#FFF","&:hover":{backgroundColor:"var(--mantine-color-default-hover)"},"input, .mantine-Checkbox-labelWrapper":{cursor:"pointer",pointerEvents:"none"}}},HT=({disabled:e,radius:t,style:r,label:a,value:o,onChange:l,treeData:i,errorMessage:c,required:d,treeCheckStrictly:u})=>{const{t:p}=m.useTranslation(),{classes:g,cx:b}=XT({radius:t,width:r.width,name:"FilterTreeSelectWidget"}),[_,w]=h.useState(!1),x=A=>{w(A)},S=_&&(o==null?void 0:o.length)>0,D=ZT(i,o,l,u),[z,I]=h.useState("");return n.jsxs(s.Stack,{gap:3,children:[n.jsxs(s.Group,{justify:"space-between",children:[n.jsxs(s.Text,{className:g.label,size:"sm",children:[a,d&&n.jsx("span",{className:g.required,"aria-hidden":"true",children:"*"})]}),S&&n.jsx(s.Tooltip,{label:p("filter.widget.common.x_selected",{count:o.length}),children:n.jsx(s.Badge,{variant:"light",children:o.length})})]}),n.jsx(Yn,{disabled:e,allowClear:{clearIcon:n.jsx(s.CloseButton,{size:"sm"})},treeCheckStrictly:u,labelInValue:!0,className:b(g.root,"check-select"),dropdownClassName:b(g.dropdown,""),onDropdownVisibleChange:x,transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:r,listHeight:510,treeLine:!0,switcherIcon:Ai,treeIcon:Ei,maxTagTextLength:10,value:o,treeData:i,notFoundContent:n.jsx(Ca,{errorMessage:c}),treeNodeFilterProp:"filterBasis",treeCheckable:!0,showCheckedStrategy:Yn.SHOW_PARENT,onChange:l,onSelect:console.log,maxTagCount:0,maxTagPlaceholder:()=>p("filter.widget.common.x_selected",{count:o.length}),searchValue:z,onSearch:I,dropdownRender:A=>n.jsxs(n.Fragment,{children:[D.allValueSet.size>0&&!z&&n.jsx(s.Group,{px:"xs",pt:8,pb:8,onClick:D.toggleSelectAll,styles:JT,children:n.jsx(s.Checkbox,{size:"xs",checked:D.allSelected,onChange:y.noop,label:p("common.actions.select_all")})}),n.jsx(s.Divider,{}),A]})})]})},RT=k.observer(({label:e,config:t,value:r,onChange:a})=>{const{treeData:o,treeDataLoading:l,errorMessage:i}=t,c=b=>{const _=b.map(w=>w.value);a(_,!1)},d=h.useMemo(()=>t.initialSelection(r),[r,t.initialSelection,l]),u=t.min_width?t.min_width:"200px",g=!!t.options_query_id?l:!1;return n.jsx(HT,{disabled:g,style:{minWidth:"160px",width:u,maxWidth:g?u:"unset",borderColor:"#e9ecef"},value:[...d],onChange:c,treeData:o,errorMessage:i,label:e,required:t.required,treeCheckStrictly:t.treeCheckStrictly})}),e2=k.observer(({filter:e})=>{const{t}=m.useTranslation(),r=e.config;return n.jsxs(n.Fragment,{children:[n.jsxs(s.Group,{justify:"space-between",children:[n.jsx(s.Checkbox,{checked:r.required,onChange:a=>r.setRequired(a.currentTarget.checked),label:t("filter.widget.select.required")}),n.jsx(_t,{filter:e})]}),n.jsx(s.TextInput,{label:t("filter.widget.common.min_width"),value:r.min_width,onChange:a=>r.setMinWidth(a.currentTarget.value),placeholder:"200px"}),n.jsx(s.Divider,{label:t("filter.widget.common.fetch_options_from_datasource"),labelPosition:"center"}),n.jsx($n,{value:r.options_query_id,onChange:r.setOptionsQueryID}),n.jsx(s.Checkbox,{checked:r.default_selection_count===1,onChange:a=>r.setDefaultSelectionCount(a.currentTarget.checked?1:0),label:t("filter.widget.tree_single_select.select_first_option_by_default")}),n.jsx(xa,{config:r}),n.jsx(Vi,{})]})}),t2=pt.createStyles((e,{radius:t=4,width:r,name:a})=>({root:{borderRadius:s.getRadius(t),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef","&.rc-tree-select.rc-tree-select-open":{borderColor:"#228be6 !important",".rc-tree-select-selection-overflow-item-rest":{display:"none"},".rc-tree-select-selection-overflow-item-suffix":{display:"block"}},"&.rc-tree-select-focused":{".rc-tree-select-selection-item":{color:"#aaa"}},".rc-tree-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"calc(2.25rem / 3)",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",position:"relative"},".rc-tree-select-selection-search":{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:1,".rc-tree-select-selection-search-input":{height:"36px",paddingLeft:"calc(2.25rem / 3)",textOverflow:"ellipsis"}},".rc-tree-select-selection-item":{position:"absolute",top:0,bottom:0,left:0,paddingLeft:"calc(2.25rem / 3)",color:"#000",lineHeight:"36px",fontSize:"0.875rem",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",transition:"color 200ms ease"},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-tree-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-tree-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-tree-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:e.fontSizes.sm,fontWeight:500,color:"#212529"},required:{color:"#fa5252",paddingLeft:"3px"},dropdown:{fontSize:e.fontSizes.xs,zIndex:300,paddingTop:"6px",position:"absolute",width:`${r} !important`,"&.rc-tree-select-dropdown-slide-up-leave-active":{display:"none"},".rc-tree-select-tree-list .rc-tree-select-tree-list-holder":{},".rc-tree-select-tree-list, .rc-tree-select-empty":{backgroundColor:"#fff",border:"1px solid #e9ecef",padding:0,boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px"},".rc-tree-select-empty":{padding:"8px 12px"},".rc-tree-select-tree-treenode":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"0px 12px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden",transition:"background-color 200ms ease","&:hover":{backgroundColor:"#f1f3f5"},"&.rc-tree-select-tree-treenode-selected":{".rc-tree-select-tree-iconEle .checkbox-icon .checkmark-checked":{stroke:"rgb(64, 192, 87)",animation:"check 200ms linear forwards"}},"&.rc-tree-select-tree-treenode-disabled":{color:"#aaa",".rc-tree-select-tree-title, .rc-tree-select-tree-iconEle":{cursor:"not-allowed"},".rc-tree-select-tree-iconEle":{"svg .border":{fill:"#ced4da"}}},".rc-tree-select-tree-switcher":{height:"16px",alignSelf:"center",paddingRight:"2px",transition:"color 200ms ease","&:hover":{color:"#228be6","svg.caret-icon":{color:"#228be6"}},"svg.caret-icon":{color:"#ced4da",transition:"all 200ms ease"}},".rc-tree-select-tree-node-content-wrapper":{display:"flex",flexWrap:"nowrap",overflow:"hidden",alignItems:"center",gap:"8px",transition:"color 200ms ease",width:"100%",padding:"8px 0","&:hover":{color:"#228be6"}},".rc-tree-select-tree-iconEle":{height:"16px","svg .border":{stroke:"#ced4da"},".checkbox-icon .checkmark-indeterminate":{fill:"transparent",transition:"fill 200ms ease"},".checkbox-icon .checkmark-checked":{transform:"scale(1.2)",transformOrigin:"center center",strokeDasharray:10,strokeDashoffset:-10},"@keyframes check":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}},".rc-tree-select-tree-title":{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",".rc-tree-select-tree-title-desc":{fontSize:"12px",maxWidth:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}},".rc-tree-select-tree-indent":{flexGrow:0,height:0,verticalAlign:"bottom"},".rc-tree-select-tree-indent-unit":{display:"inline-block",width:"1em"}}}})),n2=({disabled:e,radius:t,style:r,label:a,value:o,onChange:l,treeData:i,errorMessage:c,required:d})=>{m.useTranslation();const{classes:u,cx:p}=t2({radius:t,width:r.width,name:"FilterTreeSelectWidget"});return n.jsxs(s.Stack,{gap:3,children:[n.jsx(s.Group,{justify:"space-between",children:n.jsxs(s.Text,{className:u.label,size:"sm",children:[a,d&&n.jsx("span",{className:u.required,"aria-hidden":"true",children:"*"})]})}),n.jsx(Yn,{disabled:e,allowClear:{clearIcon:n.jsx(s.CloseButton,{size:"sm"})},multiple:!1,labelInValue:!0,className:p(u.root,"check-select"),dropdownClassName:p(u.dropdown,""),transitionName:"rc-tree-select-dropdown-slide-up",choiceTransitionName:"rc-tree-select-selection__choice-zoom",style:r,listHeight:510,treeLine:!0,switcherIcon:Ai,treeIcon:Ei,value:o,treeData:i,notFoundContent:n.jsx(Ca,{errorMessage:c}),treeNodeFilterProp:"filterBasis",treeCheckable:!1,onChange:l,onSelect:console.log,showSearch:!0})]})},r2=k.observer(({label:e,config:t,value:r,onChange:a})=>{const{treeData:o,treeDataLoading:l,errorMessage:i}=t,c=b=>{a(b?b.value:null,!1)},d=h.useMemo(()=>t.initialSelection(r),[r,t.initialSelection,t.treeDataLoading]),u=t.min_width?t.min_width:"200px",g=!!t.options_query_id?l:!1;return n.jsx(n2,{disabled:g,style:{width:u,maxWidth:g?u:"unset",borderColor:"#e9ecef"},value:d,onChange:c,treeData:o,errorMessage:i,label:e,required:t.required})});function a2(e){return $u.arrayToTree(e,{id:"value",parentId:"parent_value",childrenField:"children",dataField:null})}function s2(e){return e.map(t=>{const{label:r,description:a,...o}=t,l={...o,filterBasis:`${r}___${a??""}`,description:a,label:r};return a&&(l.label=h.createElement("div",{},[h.createElement(s.Text,{key:0,title:t.label},t.label),h.createElement(s.Text,{key:1,className:"rc-tree-select-tree-title-desc",color:"dimmed",title:t.description},t.description)])),l})}const Bi=f.types.compose("FilterConfigModel_BaseTreeSelect",f.types.model({min_width:f.types.optional(f.types.string,""),default_value_mode:ga}),ya).views(e=>({get plainData(){const{data:t}=e.contentModel.getDataStuffByID(e.options_query_id);return t},get treeData(){const t=this.plainData,r=s2(t);return a2(r)},get errorMessage(){const{error:t}=e.contentModel.getDataStuffByID(e.options_query_id);return t},get treeDataLoading(){const{state:t}=e.contentModel.getDataStuffByID(e.options_query_id);return t==="loading"}})).actions(e=>({setMinWidth(t){e.min_width=t}})),Sa=f.types.compose("FilterTreeSelectConfigMeta",f.types.model({_name:f.types.literal("tree-select"),default_value:f.types.optional(f.types.array(f.types.string),[]),treeCheckStrictly:f.types.optional(f.types.boolean,!1)}),Bi).views(e=>({get json(){const{_name:t,default_value:r,default_value_mode:a,required:o,min_width:l,static_options:i,options_query_id:c,default_selection_count:d,treeCheckStrictly:u}=e;return{_name:t,required:!!o,min_width:l,default_value:r,static_options:i,options_query_id:c,treeCheckStrictly:u,default_value_mode:a,default_selection_count:d}},get defaultSelection(){const t=e.filter.formattedDefaultValue;if(Array.isArray(t)&&t.length>0)return t;const{default_selection_count:r}=e;return r?e.treeData.slice(0,r).map(o=>o.value):[]},optionsByValues(t){if(!Array.isArray(t)||t.length===0)return[];const r=new Set(t);return e.options.filter(a=>r.has(a.value))},valueObjects(t){const r=new Set(t);return e.plainData.filter(a=>r.has(a.value))},initialSelection(t){return t?this.valueObjects(t):this.valueObjects(this.defaultSelection)},truthy(t){return Array.isArray(t)&&t.length>0}})).actions(e=>({setDefaultValue(t){e.default_value=f.cast(t)},setDefaultValueMode(t){t!=="intersect"&&t!=="reset"||(e.default_value_mode=t)},setTreeCheckStrictly(t){e.treeCheckStrictly=t},applyDefaultSelection(){if(e.optionsLoading)return;if(e.default_value_mode==="reset"){e.filter.setValue(e.defaultSelection);return}const t=e.filter.value,r=new Set(e.plainData.map(o=>o.value)),a=(t??[]).filter(o=>r.has(o));a.length>0?e.filter.setValue(a):e.filter.setValue(e.defaultSelection)},afterCreate(){f.addDisposer(e,G.reaction(()=>JSON.stringify(e.defaultSelection),this.applyDefaultSelection,{fireImmediately:!1,delay:0}))}})),qi=()=>Sa.create({_name:"tree-select",default_value:[],static_options:[],options_query_id:"",default_selection_count:0}),Ta=f.types.compose("FilterTreeSingleSelectConfigMeta",f.types.model({_name:f.types.literal("tree-single-select"),default_value:f.types.optional(f.types.string,"")}),Bi).views(e=>({get json(){const{_name:t,default_value:r,default_value_mode:a,required:o,min_width:l,static_options:i,options_query_id:c,default_selection_count:d}=e;return{_name:t,required:!!o,min_width:l,default_value:r,static_options:i,options_query_id:c,default_value_mode:a,default_selection_count:d}},get selectFirstByDefault(){return e.default_selection_count===1},get defaultSelection(){if(e.treeDataLoading)return"";const t=e.filter.formattedDefaultValue;return t||(this.selectFirstByDefault&&e.treeData.length>0?e.treeData[0].value:"")},valueObject(t){if(t)return e.plainData.find(r=>r.value===t)},initialSelection(t){if(t)return this.valueObject(t)},truthy(t){return typeof t=="string"&&t!==""}})).actions(e=>({setDefaultValue(t){e.default_value=t},setDefaultValueMode(t){t!=="intersect"&&t!=="reset"||(e.default_value_mode=t)},applyDefaultSelection(){if(e.treeDataLoading)return;if(e.default_value_mode==="reset"){e.filter.setValue(e.defaultSelection);return}const t=e.filter.value;e.optionValuesSet.has(t)?e.filter.setValue(t):e.filter.setValue(e.defaultSelection)},afterCreate(){f.addDisposer(e,G.reaction(()=>G.toJS(e.defaultSelection),this.applyDefaultSelection,{fireImmediately:!1,delay:0}))}})),Li=()=>Ta.create({_name:"tree-single-select",default_value:"",static_options:[],options_query_id:"",default_selection_count:0});function o2(e,t){const r=e.startOf("week");let a=r.add(1,"week").endOf("week");for(;a.isBefore(t);)a=a.add(2,"week");return[r.toDate(),a.toDate()]}function Ht(e,t,r){return!e||!t?[e,t]:Xe(M(e),M(t),r)}function Xe(e,t,r){if(!e||!t)return[(e==null?void 0:e.toDate())??null,(t==null?void 0:t.toDate())??null];switch(r){case"day":return[e.startOf("day").toDate(),t.endOf("day").toDate()];case"week":return[e.startOf("week").toDate(),t.endOf("week").toDate()];case"bi-week":return o2(e,t);case"month":return[e.startOf("month").toDate(),t.endOf("month").toDate()];case"quarter":return[e.startOf("quarter").toDate(),t.endOf("quarter").toDate()];default:throw new Error(`[merico-date-range] unexpected date-range step: ${r}`)}}const l2={day:new Set(["m","m2","m3","m6","y","d30","d60","d90","d180","d365"]),week:new Set(["m","m2","m3","m6","y"]),"bi-week":new Set(["m","m2","m3","m6","y"]),month:new Set(["m","m2","m3","m6","y"]),quarter:new Set(["m","m2","m6","y"])};function tt(e,t){return!l2[e].has(t)}const Oi=e=>[{key:"m",value:"last month",group:"last",disabled:tt(e,"m"),getRange:t=>{const r=M();return{value:Xe(r.subtract(1,"month").startOf("month"),r.subtract(1,"month").endOf("month"),t),shortcut:"last month",step:t}}},{key:"m2",value:"last 2 months",group:"last",disabled:tt(e,"m2"),getRange:t=>{const r=M();return{value:Xe(r.subtract(2,"month").startOf("month"),r.subtract(1,"month").endOf("month"),t),shortcut:"last 2 months",step:t}}},{key:"m3",value:"last 3 months",group:"last",disabled:tt(e,"m3"),getRange:t=>{const r=M();return{value:Xe(r.subtract(3,"month").startOf("month"),r.subtract(1,"month").endOf("month"),t),shortcut:"last 3 months",step:t}}},{key:"m6",value:"last 6 months",group:"last",disabled:tt(e,"m6"),getRange:t=>{const r=M();return{value:Xe(r.subtract(6,"month").startOf("month"),r.subtract(1,"month").endOf("month"),t),shortcut:"last 6 months",step:t}}},{key:"y",value:"last year",group:"last",disabled:tt(e,"y"),getRange:t=>{const r=M();return{value:Xe(r.subtract(1,"year").startOf("year"),r.subtract(1,"year").endOf("year"),t),shortcut:"last year",step:t}}},{key:"d30",value:"recent 30 days",group:"recent",disabled:tt(e,"d30"),getRange:t=>{const r=M();return{value:Xe(r.subtract(30,"day").startOf("day"),r.subtract(1,"day").endOf("day"),t),shortcut:"recent 30 days",step:t}}},{key:"d60",value:"recent 60 days",group:"recent",disabled:tt(e,"d60"),getRange:t=>{const r=M();return{value:Xe(r.subtract(60,"day").startOf("day"),r.subtract(1,"day").endOf("day"),t),shortcut:"recent 60 days",step:t}}},{key:"d90",value:"recent 90 days",group:"recent",disabled:tt(e,"d90"),getRange:t=>{const r=M();return{value:Xe(r.subtract(90,"day").startOf("day"),r.subtract(1,"day").endOf("day"),t),shortcut:"recent 90 days",step:t}}},{key:"d180",value:"recent 180 days",group:"recent",disabled:tt(e,"d180"),getRange:t=>{const r=M();return{value:Xe(r.subtract(180,"day").startOf("day"),r.subtract(1,"day").endOf("day"),t),shortcut:"recent 180 days",step:t}}},{key:"d365",value:"recent 365 days",group:"recent",disabled:tt(e,"d365"),getRange:t=>{const r=M();return{value:Xe(r.subtract(365,"day").startOf("day"),r.subtract(1,"day").endOf("day"),t),shortcut:"recent 365 days",step:t}}}];function Rt(e,t){if(!e)return null;const a=Oi(t).find(o=>o.value===e);return a?a.getRange(t):null}function Ni(e){return y.groupBy(Oi(e),"group")}function Gi(e){try{if(e.default_shortcut){const r=Rt(e.default_shortcut,e.default_step);if(r)return{value:r.value.map(a=>M(a).toDate()),shortcut:e.default_shortcut,step:e.default_step}}const t=e.default_value.map(r=>r===null?r:M.tz(r,"UTC").toDate()??r);return{value:Ht(t[0],t[1],e.default_step),shortcut:null,step:e.default_step}}catch(t){return console.error(t),{value:[null,null],shortcut:null,step:e.default_step}}}function Fi(e,t){return e.map(r=>{try{return r?M.tz(r,"UTC").toISOString():null}catch{return console.log(`[date-range] failed parsing ${r}`),null}})}const i2=f.types.model("FilterMericoDateRangeConfigMeta",{_name:f.types.literal("merico-date-range"),required:f.types.boolean,inputFormat:f.types.enumeration("DateRangeInputFormat",["YYYY/MM/DD"]),default_value:f.types.optional(f.types.array(f.types.union(f.types.Date,f.types.null)),[null,null]),default_shortcut:f.types.optional(f.types.string,""),default_step:f.types.optional(f.types.string,"day")}).views(e=>({get json(){const{_name:t,required:r,inputFormat:a,default_step:o,default_value:l,default_shortcut:i}=e;return{_name:t,required:r,inputFormat:a,default_step:o,default_value:Fi(l),default_shortcut:i}},truthy(t){try{const{value:r}=t;return Array.isArray(r)&&r.length===2&&r.every(a=>!!a)}catch(r){return console.error(r),!1}},get filter(){return f.getParent(e)},get dateStringsValue(){try{const t=this.filter.value,[r,a]=t.value,o=r?M(r).format(e.inputFormat):"",l=a?M(a).format(e.inputFormat):"";return[o,l]}catch(t){return console.error(t),["",""]}}})).actions(e=>({setFilterValue(t){try{e.filter.setValue(t)}catch(r){console.error(r)}}})).actions(e=>({setRequired(t){e.required=t},setDefaultValue(t){e.default_value.length=0,e.default_value.push(...t.value),e.setFilterValue(t)},setDefaultShortcut(t){if(e.default_shortcut=t??"",!t)return;const r=Rt(e.default_shortcut,e.default_step);r&&e.setFilterValue(r)},setDefaultStep(t){e.default_step=t}})),ka=f.types.snapshotProcessor(i2,{preProcessor({default_value:e,...t}){return{...t,default_value:e.map(r=>r===null?null:M.tz(r,"UTC").toDate())}},postProcessor(e){const{default_value:t,...r}=e;return{...r,default_value:Fi(t,r.inputFormat)}}}),Qi=()=>ka.create({_name:"merico-date-range",required:!1,inputFormat:"YYYY/MM/DD",default_value:[null,null],default_shortcut:"",default_step:"day"}),An=f.types.model("FilterMeta",{id:f.types.identifier,key:f.types.string,label:f.types.string,order:f.types.number,visibleInViewsIDs:f.types.array(f.types.string),auto_submit:f.types.optional(f.types.boolean,!1),default_value_func:f.types.optional(f.types.string,""),type:f.types.enumeration("DashboardFilterType",[P.Select,P.MultiSelect,P.TreeSelect,P.TreeSingleSelect,P.TextInput,P.Checkbox,P.DateRange,P.MericoDateRange]),config:f.types.union(_a,va,Sa,Ta,ma,fa,ba,ka)}).views(e=>({get contentModel(){return f.getRoot(e).content},get filters(){return this.contentModel.filters},get value(){return this.filters.values[e.key]},get plainDefaultValue(){const t=e.config.default_value;return Array.isArray(t)?[...t]:t},get usingDefaultValue(){return e.type!==P.TreeSelect&&e.type!==P.TreeSingleSelect},get usingDefaultValueFunc(){return!!e.default_value_func},get formattedDefaultValue(){return this.filters.formattedDefaultValues[e.key]},get auto_submit_supported(){return[P.Select,P.Checkbox,P.DateRange].includes(e.type)}})).views(e=>({get json(){const{id:t,key:r,label:a,order:o,visibleInViewsIDs:l,default_value_func:i,auto_submit:c,type:d,config:u}=e;return{id:t,key:r,type:d,label:a,order:o,config:u.json,auto_submit:c,visibleInViewsIDs:G.toJS(l),default_value_func:i}},get visibleInViewsIDSet(){return new Set(e.visibleInViewsIDs)},get should_auto_submit(){return e.auto_submit_supported&&e.auto_submit},requiredAndPass(t){return y.get(e.config,"required",!1)?y.get(e.config,"truthy",()=>!0)(t):!1}})).actions(e=>({setKey(t){e.key=t},setValue(t){e.filters.setValueByKey(e.key,t)},setLabel(t){e.label=t},setOrder(t){const r=Number(t);Number.isFinite(r)&&(e.order=r)},setType(t){switch(t){case P.Select:e.config=Ii();break;case P.MultiSelect:e.config=Mi();break;case P.TreeSelect:e.config=qi();break;case P.TreeSingleSelect:e.config=Li();break;case P.TextInput:e.config=wa();break;case P.Checkbox:e.config=xi();break;case P.DateRange:e.config=Di();break;case P.MericoDateRange:e.config=Qi();break;default:return}e.type=t},setVisibleInViewsIDs(t){e.visibleInViewsIDs.length=0,e.visibleInViewsIDs.push(...t)},setAutoSubmit(t){e.auto_submit=e.auto_submit_supported&&t},setDefaultValueFunc(t){e.default_value_func=t}}));var B=(e=>(e.Division="div",e.Modal="modal",e.Tabs="tabs",e))(B||{});const Da=f.types.model("ViewDivisionConfig",{_name:f.types.literal(B.Division)}).views(e=>({get json(){const{_name:t}=e;return{_name:t}}})),ji=()=>Da.create({_name:B.Division}),c2=f.types.model("CustomModalTitleModel",{enabled:f.types.optional(f.types.boolean,!1),func_content:f.types.optional(f.types.string,"")}).views(e=>({get json(){const{enabled:t,func_content:r}=e;return{enabled:t,func_content:r}},get value(){const{enabled:t,func_content:r}=e,a=f.getParent(e,2),o=f.getRoot(e);if(!t)return a.name;try{const l={filters:o.content.filters.valuesForPayload,context:o.context.current};return new Function(`return ${r}`)()(l)}catch(l){return console.error(l),a.name}}})).actions(e=>({setEnabled(t){e.enabled=t},setFuncContent(t){e.func_content=t},replace({enabled:t,func_content:r}){e.enabled=t,e.func_content=r}})),En={enabled:!1,func_content:["function text({ filters, context}) {"," // your code goes here",' return "text"',"}"].join(`
|
|
542
|
-
`)},za=f.types.model("ViewModalConfig",{_name:f.types.literal(B.Modal),width:f.types.string,height:f.types.string,custom_modal_title:f.types.optional(c2,En)}).views(e=>({get json(){const{_name:t,width:r,height:a,custom_modal_title:o}=e;return{_name:t,width:r,height:a,custom_modal_title:o.json}}})).actions(e=>({setWidth(t){e.width=t},setHeight(t){e.height=t}})),Wi=()=>za.create({_name:B.Modal,width:"90vw",height:"90vh"}),d2=f.types.model("ViewTabsTabModel",{id:f.types.identifier,name:f.types.string,view_id:f.types.string,color:f.types.optional(f.types.string,""),order:f.types.optional(f.types.number,0)}).views(e=>({get json(){const{id:t,name:r,view_id:a,color:o,order:l}=e;return{id:t,name:r,color:o,order:l,view_id:a}}})).actions(e=>({setName(t){e.name=t},setViewID(t){t&&(e.view_id=t)},setColor(t){e.color=t},setOrder(t){typeof t!="string"&&(e.order=t)}})),Ma=f.types.model("ViewTabsConfig",{_name:f.types.literal(B.Modal),tabs:f.types.optional(f.types.array(d2),[]),variant:f.types.optional(f.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:f.types.optional(f.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:f.types.optional(f.types.boolean,!1)}).views(e=>({get json(){const{_name:t,variant:r,orientation:a,tabs:o,grow:l}=e;return{grow:l,tabs:o.map(i=>i.json),_name:t,variant:r,orientation:a}},get tabsInOrder(){return y.sortBy(e.tabs,"order")}})).actions(e=>({setVariant(t){t&&(e.variant=t)},setOrientation(t){t&&(e.orientation=t)},setGrow(t){e.grow=t},setTabs(t){e.tabs.length=0,e.tabs=f.cast(t)},addTab(){const t=te.randomId(),r={id:t,name:t,view_id:""};e.tabs.push(r)},removeTab(t){const r=e.tabs.find(a=>a.id===t);r&&e.tabs.remove(r)}})),Ui=()=>Ma.create({_name:B.Modal,tabs:[]}),Ki=f.types.model({id:f.types.identifier,name:f.types.string,type:f.types.enumeration("EViewComponentType",[B.Division,B.Modal,B.Tabs]),config:f.types.union(Da,za,Ma),panelIDs:f.types.optional(f.types.array(f.types.string),[])}).views(e=>({get json(){const{id:t,name:r,type:a,config:o}=e;return{id:t,name:r,type:a,config:o.json,panelIDs:e.panelIDs.map(l=>l)}}})).actions(e=>({setName(t){e.name=t},setType(t){if(e.type!==t){switch(t){case B.Division:e.config=ji();break;case B.Modal:e.config=Wi();break;case B.Tabs:e.config=Ui();break;default:return}e.type=t}},appendPanelID(t){e.panelIDs.push(t)},appendPanelIDs(t){e.panelIDs.push(...t)},removePanelID(t){const r=e.panelIDs.filter(a=>a!==t);e.panelIDs.length=0,e.panelIDs.push(...r)}})),lt="14.32.0",u2={definition:{sqlSnippets:[],queries:[],mock_context:{}},views:[{id:"Main",name:"Main",type:B.Division,config:{},panelIDs:[]}],panels:[],filters:[],version:lt,layouts:[{id:"basis",name:"basis",list:[],breakpoint:0}]},Ia=f.types.model("DataSourceMetaModel",{id:f.types.string,type:f.types.enumeration("DataSourceType",[W.HTTP,W.MySQL,W.Postgresql,W.MericoMetricSystem]),key:f.types.string,config:f.types.frozen()}),Yi=f.types.model("DataSourcesMetaModel",{list:f.types.optional(f.types.array(Ia),[])}).views(e=>({find({type:t,key:r}){return e.list.find(a=>a.key===r&&a.type===t)},get options(){return e.list.map(t=>({value:t.key,label:t.key}))}})).actions(e=>({replace(t){e.list.length=0,e.list.push(...t)}})),Xi=f.types.model({id:f.types.string,content:f.types.string,create_time:f.types.string,update_time:f.types.string,is_preset:f.types.boolean}),Va=f.types.model("GlobalSQLSnippetsMeta",{list:f.types.optional(f.types.array(Xi),[])}).views(e=>({find(t){return e.list.find(r=>r.id===t)},get options(){return e.list.map(t=>({value:t.id,label:t.id}))}})).actions(e=>({replace(t){e.list.length=0,e.list.push(...t)}})),Bn=f.types.model("ContextMeta",{current:f.types.optional(f.types.frozen(),{})}).views(e=>({get keys(){return Object.keys(e.current)},get entries(){return Object.entries(e.current)}})).actions(e=>({replace(t){e.current=t},get(t){return e.current[t]},set(t,r){e.current[t]=r}}));function Pa(e){return Bn.create({current:e})}const $a=f.types.compose("ViewRenderModel",Ki,f.types.model({tab:f.types.optional(f.types.string,"")})).views(e=>({get tabs(){return e.config.tabs},get tabInfo(){const t=this.tabs.find(r=>r.id===e.tab);return t?{id:t.id,name:t.name}:null},get tabView(){return e.type!==B.Tabs?null:this.tabs.find(t=>t.id===e.tab)},get tabViewID(){return this.tabView?this.tabView.view_id??"":""},get contentModel(){return f.getParent(e,3)},get panels(){if(e.type!==B.Tabs)return this.contentModel.panels.panelsByIDs(e.panelIDs);const t=this.tabViewID,r=this.contentModel.views.findByID(t);return(r==null?void 0:r.panels)??[]},get renderViewIDs(){const t=[e.id];return e.type===B.Tabs&&t.push(this.tabViewID),t},async downloadScreenshot(t,r){const a=t.offsetWidth*2+10,o=t.offsetHeight*2+10,l=new Es,i=new Date().getTime(),c=await As.toCanvas(t,{bgcolor:"white",width:a,height:o,style:{transformOrigin:"0 0",transform:"scale(2)"}}).then(d=>(r==null||r(d),new Promise(u=>{d.toBlob(p=>{u(p)})})));l.file(`${e.name}_${i}.png`,c),l.file(`dashboard_state_${i}.json`,JSON.stringify(this.contentModel.dashboardStateValues,null,4)),l.generateAsync({type:"blob"}).then(d=>{sn.saveAs(d,`${e.name}_${i}.zip`)}).catch(d=>{console.error(d),Fe.notifications.show({color:"red",title:"Failed to download screenshot with dashboard state",message:d.message})})}})).actions(e=>({setTab(t){e.tab=t??""},setTabByTabInfo(t){e.tab=t.id??""}})),Aa=f.types.model("ViewsRenderModel",{current:f.types.optional(f.types.array($a),[]),visibleViewIDs:f.types.array(f.types.string)}).views(e=>({get json(){return e.current.map(t=>at(t.json))},get idMap(){const t=new Map;return e.current.forEach(r=>{t.set(r.id,r)}),t},findByID(t){return e.current.find(r=>r.id===t)},get firstVisibleView(){const[t]=e.visibleViewIDs;return e.current.find(({id:r})=>r===t)},get visibleViews(){const t=new Set(e.visibleViewIDs);return e.current.filter(({id:r})=>t.has(r))},get firstVisibleTabsView(){return this.visibleViews.find(t=>t.type===B.Tabs)},get firstVisibleTabsViewActiveTab(){const t=this.firstVisibleTabsView;return t?t.tabInfo:null},get firstVisibleTabsViewActiveTabStr(){return JSON.stringify(this.firstVisibleTabsViewActiveTab)}})).actions(e=>({appendToVisibles(t){new Set(e.visibleViewIDs.map(a=>a)).has(t)||e.visibleViewIDs.push(t)},rmVisibleViewID(t){const r=e.visibleViewIDs.findIndex(a=>a===t);r!==-1&&e.visibleViewIDs.splice(r,1)},setFirstVisibleTabsViewActiveTab(t){if(!t)return;const r=e.firstVisibleTabsView;r==null||r.setTabByTabInfo(t)}}));function Zi(e,t){const r=e.length>0?[e[0].id]:[],a=e.map(o=>{const{_name:l=o.type}=o.config,i={...o,tab:"",config:{...o.config,_name:l},panelIDs:o.panelIDs};if(o.type===B.Tabs){let c=y.minBy(o.config.tabs,d=>d.order);!c&&o.config.tabs.length>0&&(c=o.config.tabs[0]),i.tab=(c==null?void 0:c.id)??""}return i});return t&&(a[0].tab=t.id),{current:a,visibleViewIDs:r}}const p2=new Pu.AsyncParser({withBOM:!0});async function Ji(e){return!Array.isArray(e)||e.length===0?"":await p2.parse(e).promise()}async function Hi(e,t){const r=await Ji(t),a=new Blob([r],{type:"text/csv"});sn.saveAs(a,`${e}.csv`)}function Ri(e,t){const r=new Es,a=t.map(async({id:o,data:l})=>{const i=await Ji(l);r.file(`${o}.csv`,i)});Promise.all(a).then(()=>{r.generateAsync({type:"blob"}).then(o=>{sn.saveAs(o,`${e}.zip`)})}).catch(o=>{console.error(o),Fe.notifications.show({color:"red",title:"Failed to download data",message:o.message})})}function Gt(e,t){const r=new Blob([t],{type:"application/json"});sn.saveAs(r,`${e}.json`)}const Ea=ui.views(e=>({get contentModel(){return f.getRoot(e).content}})).views(e=>({get queries(){return e.contentModel.queries.findByIDSet(e.queryIDSet)},get firstQuery(){return this.queries.length>0?this.queries[0]:null},get firstQueryData(){return this.firstQuery?this.firstQuery.data:[]},get usingGhostViz(){return e.viz.type===Rl.name},queryByID(t){return this.queries.find(r=>r.id===t)},get data(){return this.queries.reduce((t,r)=>(t[r.id]=r.data,t),{})},get variableStrings(){return Mo(e.variables,this.data)},get variableAggValueMap(){const t={},r=this.data;return e.variables.reduce((a,o)=>(a[o.name]=He(o,r),a),t),t},get variableValueMap(){const t={},r=this.variableAggValueMap;return e.variables.reduce((a,o)=>(a[o.name]=Be(o,r[o.name]),a),t),t},get variableStyleMap(){const t=this.variableValueMap,r={};return e.variables.reduce((a,o)=>{const l=dp(o.color,t[o.name]);return a[o.name]={color:l,"font-size":o.size,"font-weight":o.weight,variable:o},a},r),r},get dataLoading(){return this.queries.some(t=>t.isTransform?t.depQueryModelStates.some(r=>r==="loading"):t.state==="loading")},get queryStateMessages(){const t=this.queries.filter(l=>!l.runByConditionsMet);if(t.length===0)return"";const r=new Set,a=new Set;t.forEach(l=>{const i=l.conditionNames;i.context.forEach(c=>r.add(c)),i.filters.forEach(c=>a.add(c))});const o=[];return r.size>0&&o.push(`context: ${Array.from(r).join(", ")}`),a.size>0&&o.push(`filter${a.size>1?"s":""}: ${Array.from(a).join(", ")}`),o.length===2&&o.splice(1,0,"and"),o.unshift("Waiting for"),o.join(" ")},get queryErrors(){return this.queries.map(t=>t.error??t.metricQueryPayloadErrorString).filter(t=>!!t)},get canRenderViz(){return this.queryErrors.length===0&&this.queryStateMessages===""&&!this.dataLoading},get realDataFieldOptions(){return e.queryIDs.length===0?[]:this.queries.map(t=>{const r=t.data;return r.length===0?[]:Object.keys(r[0]).map(o=>({label:o,value:`${t.id}.${o}`,group:t.name,group_id:t.id,disabled:!1}))}).flat()},dataFieldOptions({selected:t,clearable:r,unsetKey:a,queryID:o,additional_options:l}){let i=[...this.realDataFieldOptions];if(o&&(i=i.filter(c=>c.group_id===o)),l==null||l.forEach(c=>{i.unshift({label:c.label,value:c.value,group:"",group_id:"",disabled:!1})}),t&&!i.find(c=>c.value===t)){const c=$(t),d=this.queryByID(c.queryID);i.unshift({label:c.columnKey,value:t,group:d?d.name:c.queryID,group_id:d?d.id:"",disabled:!0})}return r&&i.unshift({label:a,value:"",group:"",group_id:"",disabled:!1}),i},dataFieldOptionGroups({selected:t,clearable:r,unsetKey:a,queryID:o,additional_options:l}){const i=this.dataFieldOptions({selected:t,clearable:r,unsetKey:a,queryID:o,additional_options:l});return Object.entries(y.groupBy(i,"group")).map(([d,u])=>({group:d,items:u.map(p=>({label:p.label,value:p.value,group_id:p.group_id,disabled:p.disabled}))}))}})).actions(e=>({refreshData(){e.queries.forEach(t=>t.fetchData(!0))},downloadData(){e.contentModel.queries.downloadDataByQueryIDs(e.name,e.queryIDs)},getSchema(){const t=e.json;return t.viz.conf={...t.viz.conf,__INTERACTIONS:{},__OPERATIONS:{},__TRIGGERS:{}},{panel:t,queries:e.queries.map(r=>r.json),layouts:e.contentModel.layouts.jsonByPanelIDSet(new Set([e.id]))}},downloadSchema(){const{panel:t,queries:r,layouts:a}=this.getSchema(),l=JSON.stringify({panels:[t],definition:{queries:r},layouts:a,version:lt},null,2),i=e.name;Gt(i,l)}}));function ec(e){return{id:e,name:"Panel",title:{show:!0},description:"<p></p>",queryIDs:[],viz:{type:na.name,conf:na.createConfig()},style:{border:{enabled:!0}}}}const Ba=f.types.model("PanelsRenderModel",{list:f.types.optional(f.types.array(Ea),[])}).views(e=>({get json(){return e.list.map(t=>t.json)},findByID(t){return e.list.find(r=>r.id===t)},get idMap(){const t=new Map;return e.list.forEach(r=>{t.set(r.id,r)}),t}})).views(e=>({panelsByIDs(t){const r=[];return t.forEach(a=>{const o=e.idMap.get(a);o?r.push(o):console.warn(`Panel is not found, id:${a}`)}),r}}));function tc(e){const t=e.config,r=t==null?void 0:t.default_value;return r===void 0?r:t._name==="date-range"?Ti(t):t._name==="merico-date-range"?Gi(t):r}function h2(e,t){const r=e.default_value_func;try{const a=new Function(`return ${r}`)()(e,We,t);return e.config._name==="date-range"&&Array.isArray(a)?{value:a,shortcut:null}:e.config._name==="merico-date-range"&&Array.isArray(a)?{value:a,shortcut:null,step:e.config.step}:a}catch(a){return console.error(a),tc(e)}}function nc(e,t){var r;return(r=e.default_value_func)!=null&&r.trim()?h2(e,t):tc(e)}function rc(e,t){return e.reduce((r,a)=>(r[a.key]=nc(a,t),r),{})}function ac(e,t){const r={};return Object.entries(t).forEach(([a,o])=>{const l=e[a];if(typeof o!="object"||!("shortcut"in o)||!l)return r[a]=l??o,r;if(Array.isArray(l))return console.log("⚪️ adapting legacy date-range value: ",l),r[a]={value:l,shortcut:null},r;const i=l,{shortcut:c}=i;if(!c)return console.log("⚪️ skipping input date range when it has no shortcut",i),r[a]=i,r;if("step"in o){const d=i.step;r[a]=Rt(c,d)}else r[a]=Pn(c);return r}),r}const qa=f.types.model("FiltersRenderModel",{current:f.types.optional(f.types.array(An),[]),values:f.types.optional(f.types.frozen(),{})}).views(e=>({get json(){return e.current.map(t=>t.json)},get valuesString(){return JSON.stringify(e.values)},get filter(){return f.getParent(e)},get keysToTypes(){return e.current.reduce((t,r)=>(t[r.key]=r.type,t),{})},keyStateItemMap(t){return e.current.reduce((r,a)=>{const o=t[a.key];return r[a.key]={type:a.type,key:a.key,model:a,label:a.label??a.id,value:o},r},{})},get valuesForPayload(){const t={};return Object.entries(e.values).forEach(([r,a])=>{t[r]=a;const o=this.findByKey(r);o&&o.config._name===P.DateRange&&(t[r]=o.config.dateStringsValue),o&&o.config._name===P.MericoDateRange&&(t[r]={...a,value:o.config.dateStringsValue})}),t},get contentModel(){return f.getRoot(e).content},get context(){return this.contentModel.payloadForSQL.context},get initialValuesDep(){return JSON.stringify({filters:e.current.map(({default_value_func:t,config:r})=>({default_value_func:t,config:r})),context:this.contentModel.payloadForSQL.context})},get formattedDefaultValues(){return rc(this.json,this.contentModel.context)},get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},findByKey(t){return e.current.find(r=>r.key===t)},findByIDSet(t){return e.current.filter(r=>t.has(r.id))},get inOrder(){return y.sortBy(e.current,"order")},get empty(){return e.current.length===0},visibleInView(t){return y.sortBy(e.current.filter(r=>r.visibleInViewsIDSet.has(t)),"order")},get firstFilterValueKey(){return Object.keys(e.values)[0]??""},get keySet(){return new Set(e.current.map(t=>t.key))},get keyLabelMap(){return e.current.reduce((t,r)=>(t[r.key]=r.label,t),{})},get keyIDMap(){return e.current.reduce((t,r)=>(t[r.key]=r.id,t),{})},getSelectOption(t){const r=this.findByID(t);if(!r||!("getSelectOption"in r.config))return null;const a=e.values[r.key];return r.config.getSelectOption(a)}})).actions(e=>({setValues(t){console.debug("⚪️ setting filter values: ",JSON.stringify(t)),e.values=t},patchValues(t){console.debug("⚪️ patching filter values: ",JSON.stringify(t)),e.values=ac(t,e.values)},setValueByKey(t,r){console.debug(`⚪️ setting filter[${t}] to value: `,JSON.stringify(r)),e.values={...e.values,[t]:r}},applyValuesPatch(t){e.values={...e.values,...t}},getValueByKey(t){return e.values[t]},getSchema(t,r){return{filters:e.findByIDSet(new Set(t)).map(l=>({...l.json,visibleInViewsIDs:r?l.json.visibleInViewsIDs:[]})),version:lt}},downloadSchema(t){const r=JSON.stringify(this.getSchema(t,!1),null,2);Gt("Filters",r)}}));function La(e,t,r,a){const o={...r,...t},l=rc(e,o),i=ac(a,l);return console.groupCollapsed("⚪️ initialValues"),console.log("filters",e),console.log("defaultValues",l),console.log("filterValues ",a),console.log("initialValues ",i),console.groupEnd(),{current:e,values:i}}function g2(e,t){const r=Bs.decode(t);r!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:r}),console.groupEnd())}async function f2({query:e,name:t,payload:r,additionals:a},o){if(!e.sql)return[];const{type:l,key:i,sql:c,pre_process:d,post_process:u}=e,p=mr(c,r),g=fh({sql:p,pre_process:d}),b=Bs.encode(g);g2(g,b);let _=await $e.query(o)({type:l,key:i,query:b,...a},{params:{name:t}});return _=bh(u,_,_r(r)),_}async function b2({type:e,key:t,configString:r,name:a,additionals:o},l){try{return await $e.httpDataSourceQuery(l)({type:e,key:t,query:r,...o},{params:{name:a}})}catch(i){if(ke.isCancel(i))throw i;return console.error(i),i}}async function y2({key:e,configString:t,name:r,additionals:a},o){try{return await $e.mericoMetricQuery(o)({type:"merico_metric_system",key:e,query:t,...a},{params:{name:r}})}catch(l){throw l}}async function Oa(){try{return(await $e.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function sc(){try{return(await $e.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}function v2(e){var t;if("cols"in e){const{cols:r}=e,a=((t=r.find(o=>o.type==="trending_date_col"))==null?void 0:t.metricSourceCol)??null;return{variables:[],filters:r.filter(o=>o.type==="filter").map(o=>o.metricSourceCol),groupBys:r.filter(o=>o.type==="group_by").map(o=>o.metricSourceCol),trendingDateCol:a,supportTrending:!!a}}return"variables"in e?{variables:e.variables,filters:[],groupBys:[],trendingDateCol:null,supportTrending:e.variables.includes("date_range")}:{variables:[],filters:e.filters,groupBys:e.groupBys,trendingDateCol:null,supportTrending:e.supportTrending}}const oc={string:"维度列",number:"数值列",date:"数值列",boolean:"维度列",dimension:"扩展维度"};function lc(e){return y.groupBy(e,r=>{const{dataType:a}=r;return a?oc[a]:r.dimension!==null?oc.dimension:"ERROR"})}function _2(e){if(e.length===0)return[];const t=lc(e);return Object.entries(t).map(([a,o])=>({group:`${a}(${o.length})`,items:o.map(l=>{const{dataType:i,dimension:c}=l;return c?{group:l.name,description:l.description,items:c.fields.map(d=>typeof d=="string"?{label:d,value:`${l.name} -> ${d}`}:{label:d.field,value:`${l.name} -> ${d.field}`,...d})}:{label:l.name,value:l.name,...l}})}))}function m2(e){if(e.length===0)return[];const t=lc(e);return Object.entries(t).map(([a,o])=>({group:`${a}(${o.length})`,items:o.map(l=>({label:l.name,value:l.name,description:l.description,dataType:l.dataType??"dimension",dimension:l.dimension}))}))}const ic=new Map([["accumulate",{name:"累计计算",description:"按指定的聚合方式,依次计算指标值的累计值。",requireWindowConfig:!1,requireTrendingDateCol:!1}],["yoyRatio",{name:"年同比率(yoy)",description:"对比当前年份与上一个年份同期指标值的变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["stepRatio",{name:"环比率",description:"对比当前步长与上一个步长指标值的变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["stepSpansRatio",{name:"移动计算",description:"按设定的窗口沿时序对指标值进行滚动计算。",requireWindowConfig:!0,requireTrendingDateCol:!0}],["percentage",{name:"总占比",description:"总占比 = 当前值 / 总值。",requireWindowConfig:!1,requireTrendingDateCol:!1}],["percentage_accumulate",{name:"累计占比",description:"按聚合规则计算各项占比,再依次计算占比率的累计值,如帕累托的累计占比值。",requireWindowConfig:!1,requireTrendingDateCol:!1}],["accumulate_yoyRatio",{name:"累计年同比",description:"按聚合规则累加数据,再与上一年同期累计值对比得出变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["yoyRatio_accumulate",{name:"年同比累计",description:"先计算各步长指标相对上一年同期的同比率,再依次计算同比率的累计值。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["stepRatio_accumulate",{name:"环比累计",description:"先计算各步长指标相对上一步长的环比率,再依次计算环比率的累计值。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["percentage_yoyRatio",{name:"占比年同比",description:"按聚合规则计算各项占比,再与去年同期占比对比得出变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["yoyRatio_stepSpansRatio",{name:"年同比移动计算",description:"先计算各步长指标相对上一年同期的同比率,再按移动设置沿时序滚动计算。",requireWindowConfig:!0,requireTrendingDateCol:!0}],["stepRatio_stepSpansRatio",{name:"环比移动计算",description:"先计算各步长指标相对上一步长的环比率,再按移动设置沿时序滚动计算。",requireWindowConfig:!0,requireTrendingDateCol:!0}]]);function cc(e,t){if(t)return e;const r=Array.from(ic.entries()).filter(([a,o])=>o.requireTrendingDateCol).map(([a])=>a);return e.filter(a=>!r.includes(a))}function dc(e,t,r){return Array.isArray(e)&&e.length===2?{start:M(e[0]).tz(t).format(r),end:M(e[1]).tz(t).format(r)}:null}function uc(e,t,r,a,o="PRC",l="YYYY-MM-DD"){const i=t?y.get(a,t):void 0,c=e?y.get(a,e):void 0;let d=t?y.get(r,t,""):"";i===P.MericoDateRange&&t&&(d=y.get(r,`${t}.step`,""));const u={start:"",end:"",unitOfTime:d,unitNumber:1,timezone:o,stepKeyFormat:l};if(e)if(c===P.MericoDateRange){const p=y.get(r,`${e}.value`),g=dc(p,o,l);g&&(u.start=g.start,u.end=g.end)}else{const p=y.get(r,e),g=dc(p,o,l);g&&(u.start=g.start,u.end=g.end)}return u}const pc=vi.views(e=>({get rootModel(){return f.getRoot(e)},get contentModel(){return this.rootModel.content},get conditionOptions(){return this.contentModel.dashboardStateVariableOptions},getConditionOptionsWithInvalidValue(t){const{optionGroups:r,validValues:a}=this.conditionOptions;if(!t||a.has(t))return this.conditionOptions;const o={group:"common.invalid",items:[{label:t,value:t}]};return{optionGroups:[...r,o],validValues:a}},get conditionOptionsWithInvalidRunbys(){const{optionGroups:t,validValues:r}=this.conditionOptions,a={group:"common.invalid",items:[]};return e.run_by.forEach(o=>{r.has(o)||a.items.push({label:o,value:o})}),{optionGroups:[...t,a],validValues:r}},get unmetRunByConditions(){if(!f.isAlive(e))return[];const{run_by:t}=e;if(t.length===0)return[];const r=this.contentModel.payloadForSQL;return t.filter(a=>{const o=y.get(r,a);return Array.isArray(o)?o.length===0:typeof o=="number"?Number.isNaN(o):!o})}})).views(e=>({get payload(){return e.contentModel.payloadForSQL},get formattedSQL(){const t=y.get(e,"config.sql","");return wr(t,this.payload)},get httpConfigString(){const{context:t,filters:r}=this.payload,{name:a,pre_process:o}=e.json,l=gh(o,t,r);return console.groupCollapsed(`Request config for: ${a}`),console.log(l),console.groupEnd(),JSON.stringify(l)},get typedAsSQL(){return[W.Postgresql,W.MySQL].includes(e.type)},get typedAsHTTP(){return[W.HTTP].includes(e.type)},get isMericoMetricQuery(){return e.type===W.MericoMetricSystem},get isTransform(){return e.type===W.Transform},get reQueryKey(){const t=y.get(e,"config.react_to",[]);if(t.length===0)return"";const r=e.contentModel.payloadForSQL,a=[...t].reduce((o,l)=>(o[l]=y.get(r,l),o),{});return JSON.stringify(a)},get runByConditionsMet(){return e.unmetRunByConditions.length===0},get conditionNames(){if(e.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:t}=e.contentModel.filters,r=e.unmetRunByConditions.filter(o=>o.startsWith("context.")).map(o=>o.replace("context.","")),a=e.unmetRunByConditions.filter(o=>o.startsWith("filters.")).map(o=>y.get({filters:t},o,o.replace("filters.",""))).filter(o=>!!o);return{context:r,filters:a}},get queries(){return f.getParent(e,2)},get inUse(){return this.queries.isQueryInUse(e.id)},get dependencies(){if(!this.typedAsSQL)return[];const t=y.get(e,"config.sql","");if(!t)return[];const r=y.uniq(t.match(Et.sqlSnippet)),a=y.uniq(t.match(Et.filter)),o=y.uniq(t.match(Et.context)),l=[];return r.forEach(i=>{l.push({type:"sql_snippet",key:i,valid:e.contentModel.sqlSnippets.keySet.has(i)})}),a.forEach(i=>{l.push({type:"filter",key:i,valid:e.contentModel.filters.keySet.has(i)})}),o.forEach(i=>{l.push({type:"context",key:i,valid:e.contentModel.mock_context.keySet.has(i)})}),l},get usedFilterKeySet(){const t=new Set,r=i=>{t.add(i.replace(/^filters\./,""))};if(e.run_by.forEach(i=>r(i)),y.get(e.config,"react_to",[]).forEach(i=>r(i)),!this.typedAsSQL)return t;const o=y.get(e,"config.sql","");return o&&y.uniq(o.match(Et.filter)).forEach(i=>r(i)),t},get metricQueryPayload(){if(e.type!==W.MericoMetricSystem)return null;const t=this.payload,r={filters:e.contentModel.filters.keysToTypes},a=e.config,o=y.omit(Object.fromEntries(a.sqlVariables.map(p=>{const g=p.sqlVar,b=p.variable,_=y.get(t,b);return[g,_]})),["date_range","step"]);console.log("MMS var",o);const l=a.filters.reduce((p,g)=>{const b=y.get(t,g.variable),_=y.get(r,g.variable),w=g.dimension;if(_===P.DateRange){const S=b.every(D=>Number.isFinite(Number(D)))?b.map(D=>Number(D)):b;p[w]={between:S}}else if(_===P.MericoDateRange){const S=b.value.every(D=>Number.isFinite(Number(D)))?b.value.map(D=>Number(D)):b;p[w]={between:S}}else Array.isArray(b)?p[w]={in:b}:p[w]={eq:b};return p},{}),i={id:a.id,type:a.type,filters:l,groupBys:a.groupBys,variables:o,semanticKey:a.semanticKey},c=a.sqlVariables.find(p=>["date_range","step"].includes(p.sqlVar));if(c&&(i.timeQuery=uc(c.variable,c.variable,t,r)),a.extraCalculations&&a.extraCalculations.length>0&&(i.extraCalculations=cc(a.extraCalculations,a.timeQuery.enabled)),a.useDefaultValues&&(i.useDefaultValues=!0),!a.timeQuery.enabled)return i;const{range_variable:d,unit_variable:u}=a.timeQuery;return i.timeQuery=uc(d,u,t,r),i},get metricQueryPayloadString(){return this.metricQueryPayload?JSON.stringify(this.metricQueryPayload,null,2):""},get metricQueryPayloadError(){const t=[];if(!this.metricQueryPayload)return t;const r=e.config,{timeQuery:a}=this.metricQueryPayload;if(!a)return r.groupByValues.length>2&&t.push("分组聚合维度:最多支持两个维度的聚合计算"),t;r.groupByValues.length>1&&t.push("分组聚合维度:按时间序列展示时,仅可选择一个聚合维度");const{start:o,end:l,unitOfTime:i}=a;return(!o||!l)&&t.push("时间维度:时间范围不完整"),i||t.push("步长:必选"),t},get metricQueryPayloadErrorString(){return this.metricQueryPayloadError.join(`
|
|
542
|
+
`)},za=f.types.model("ViewModalConfig",{_name:f.types.literal(B.Modal),width:f.types.string,height:f.types.string,custom_modal_title:f.types.optional(c2,En)}).views(e=>({get json(){const{_name:t,width:r,height:a,custom_modal_title:o}=e;return{_name:t,width:r,height:a,custom_modal_title:o.json}}})).actions(e=>({setWidth(t){e.width=t},setHeight(t){e.height=t}})),Wi=()=>za.create({_name:B.Modal,width:"90vw",height:"90vh"}),d2=f.types.model("ViewTabsTabModel",{id:f.types.identifier,name:f.types.string,view_id:f.types.string,color:f.types.optional(f.types.string,""),order:f.types.optional(f.types.number,0)}).views(e=>({get json(){const{id:t,name:r,view_id:a,color:o,order:l}=e;return{id:t,name:r,color:o,order:l,view_id:a}}})).actions(e=>({setName(t){e.name=t},setViewID(t){t&&(e.view_id=t)},setColor(t){e.color=t},setOrder(t){typeof t!="string"&&(e.order=t)}})),Ma=f.types.model("ViewTabsConfig",{_name:f.types.literal(B.Modal),tabs:f.types.optional(f.types.array(d2),[]),variant:f.types.optional(f.types.enumeration("variant",["default","outline","pills"]),"default"),orientation:f.types.optional(f.types.enumeration("orientation",["horizontal","vertical"]),"horizontal"),grow:f.types.optional(f.types.boolean,!1)}).views(e=>({get json(){const{_name:t,variant:r,orientation:a,tabs:o,grow:l}=e;return{grow:l,tabs:o.map(i=>i.json),_name:t,variant:r,orientation:a}},get tabsInOrder(){return y.sortBy(e.tabs,"order")}})).actions(e=>({setVariant(t){t&&(e.variant=t)},setOrientation(t){t&&(e.orientation=t)},setGrow(t){e.grow=t},setTabs(t){e.tabs.length=0,e.tabs=f.cast(t)},addTab(){const t=te.randomId(),r={id:t,name:t,view_id:""};e.tabs.push(r)},removeTab(t){const r=e.tabs.find(a=>a.id===t);r&&e.tabs.remove(r)}})),Ui=()=>Ma.create({_name:B.Modal,tabs:[]}),Ki=f.types.model({id:f.types.identifier,name:f.types.string,type:f.types.enumeration("EViewComponentType",[B.Division,B.Modal,B.Tabs]),config:f.types.union(Da,za,Ma),panelIDs:f.types.optional(f.types.array(f.types.string),[])}).views(e=>({get json(){const{id:t,name:r,type:a,config:o}=e;return{id:t,name:r,type:a,config:o.json,panelIDs:e.panelIDs.map(l=>l)}}})).actions(e=>({setName(t){e.name=t},setType(t){if(e.type!==t){switch(t){case B.Division:e.config=ji();break;case B.Modal:e.config=Wi();break;case B.Tabs:e.config=Ui();break;default:return}e.type=t}},appendPanelID(t){e.panelIDs.push(t)},appendPanelIDs(t){e.panelIDs.push(...t)},removePanelID(t){const r=e.panelIDs.filter(a=>a!==t);e.panelIDs.length=0,e.panelIDs.push(...r)}})),lt="14.32.0",u2={definition:{sqlSnippets:[],queries:[],mock_context:{}},views:[{id:"Main",name:"Main",type:B.Division,config:{},panelIDs:[]}],panels:[],filters:[],version:lt,layouts:[{id:"basis",name:"basis",list:[],breakpoint:0}]},Ia=f.types.model("DataSourceMetaModel",{id:f.types.string,type:f.types.enumeration("DataSourceType",[W.HTTP,W.MySQL,W.Postgresql,W.MericoMetricSystem]),key:f.types.string,config:f.types.frozen()}),Yi=f.types.model("DataSourcesMetaModel",{list:f.types.optional(f.types.array(Ia),[])}).views(e=>({find({type:t,key:r}){return e.list.find(a=>a.key===r&&a.type===t)},get options(){return e.list.map(t=>({value:t.key,label:t.key}))}})).actions(e=>({replace(t){e.list.length=0,e.list.push(...t)}})),Xi=f.types.model({id:f.types.string,content:f.types.string,create_time:f.types.string,update_time:f.types.string,is_preset:f.types.boolean}),Va=f.types.model("GlobalSQLSnippetsMeta",{list:f.types.optional(f.types.array(Xi),[])}).views(e=>({find(t){return e.list.find(r=>r.id===t)},get options(){return e.list.map(t=>({value:t.id,label:t.id}))}})).actions(e=>({replace(t){e.list.length=0,e.list.push(...t)}})),Bn=f.types.model("ContextMeta",{current:f.types.optional(f.types.frozen(),{})}).views(e=>({get keys(){return Object.keys(e.current)},get entries(){return Object.entries(e.current)}})).actions(e=>({replace(t){e.current=t},get(t){return e.current[t]},set(t,r){e.current[t]=r}}));function Pa(e){return Bn.create({current:e})}const $a=f.types.compose("ViewRenderModel",Ki,f.types.model({tab:f.types.optional(f.types.string,"")})).views(e=>({get tabs(){return e.config.tabs},get tabInfo(){const t=this.tabs.find(r=>r.id===e.tab);return t?{id:t.id,name:t.name}:null},get tabView(){return e.type!==B.Tabs?null:this.tabs.find(t=>t.id===e.tab)},get tabViewID(){return this.tabView?this.tabView.view_id??"":""},get contentModel(){return f.getParent(e,3)},get panels(){if(e.type!==B.Tabs)return this.contentModel.panels.panelsByIDs(e.panelIDs);const t=this.tabViewID,r=this.contentModel.views.findByID(t);return(r==null?void 0:r.panels)??[]},get renderViewIDs(){const t=[e.id];return e.type===B.Tabs&&t.push(this.tabViewID),t},async downloadScreenshot(t,r){const a=t.offsetWidth*2+10,o=t.offsetHeight*2+10,l=new Es,i=new Date().getTime(),c=await As.toCanvas(t,{bgcolor:"white",width:a,height:o,style:{transformOrigin:"0 0",transform:"scale(2)"}}).then(d=>(r==null||r(d),new Promise(u=>{d.toBlob(p=>{u(p)})})));l.file(`${e.name}_${i}.png`,c),l.file(`dashboard_state_${i}.json`,JSON.stringify(this.contentModel.dashboardStateValues,null,4)),l.generateAsync({type:"blob"}).then(d=>{sn.saveAs(d,`${e.name}_${i}.zip`)}).catch(d=>{console.error(d),Fe.notifications.show({color:"red",title:"Failed to download screenshot with dashboard state",message:d.message})})}})).actions(e=>({setTab(t){e.tab=t??""},setTabByTabInfo(t){e.tab=t.id??""}})),Aa=f.types.model("ViewsRenderModel",{current:f.types.optional(f.types.array($a),[]),visibleViewIDs:f.types.array(f.types.string)}).views(e=>({get json(){return e.current.map(t=>at(t.json))},get idMap(){const t=new Map;return e.current.forEach(r=>{t.set(r.id,r)}),t},findByID(t){return e.current.find(r=>r.id===t)},get firstVisibleView(){const[t]=e.visibleViewIDs;return e.current.find(({id:r})=>r===t)},get visibleViews(){const t=new Set(e.visibleViewIDs);return e.current.filter(({id:r})=>t.has(r))},get firstVisibleTabsView(){return this.visibleViews.find(t=>t.type===B.Tabs)},get firstVisibleTabsViewActiveTab(){const t=this.firstVisibleTabsView;return t?t.tabInfo:null},get firstVisibleTabsViewActiveTabStr(){return JSON.stringify(this.firstVisibleTabsViewActiveTab)}})).actions(e=>({appendToVisibles(t){new Set(e.visibleViewIDs.map(a=>a)).has(t)||e.visibleViewIDs.push(t)},rmVisibleViewID(t){const r=e.visibleViewIDs.findIndex(a=>a===t);r!==-1&&e.visibleViewIDs.splice(r,1)},setFirstVisibleTabsViewActiveTab(t){if(!t)return;const r=e.firstVisibleTabsView;r==null||r.setTabByTabInfo(t)}}));function Zi(e,t){const r=e.length>0?[e[0].id]:[],a=e.map(o=>{const{_name:l=o.type}=o.config,i={...o,tab:"",config:{...o.config,_name:l},panelIDs:o.panelIDs};if(o.type===B.Tabs){let c=y.minBy(o.config.tabs,d=>d.order);!c&&o.config.tabs.length>0&&(c=o.config.tabs[0]),i.tab=(c==null?void 0:c.id)??""}return i});return t&&(a[0].tab=t.id),{current:a,visibleViewIDs:r}}const p2=new Pu.AsyncParser({withBOM:!0});async function Ji(e){return!Array.isArray(e)||e.length===0?"":await p2.parse(e).promise()}async function Hi(e,t){const r=await Ji(t),a=new Blob([r],{type:"text/csv"});sn.saveAs(a,`${e}.csv`)}function Ri(e,t){const r=new Es,a=t.map(async({id:o,data:l})=>{const i=await Ji(l);r.file(`${o}.csv`,i)});Promise.all(a).then(()=>{r.generateAsync({type:"blob"}).then(o=>{sn.saveAs(o,`${e}.zip`)})}).catch(o=>{console.error(o),Fe.notifications.show({color:"red",title:"Failed to download data",message:o.message})})}function Gt(e,t){const r=new Blob([t],{type:"application/json"});sn.saveAs(r,`${e}.json`)}const Ea=ui.views(e=>({get contentModel(){return f.getRoot(e).content}})).views(e=>({get queries(){return e.contentModel.queries.findByIDSet(e.queryIDSet)},get firstQuery(){return this.queries.length>0?this.queries[0]:null},get firstQueryData(){return this.firstQuery?this.firstQuery.data:[]},get usingGhostViz(){return e.viz.type===Rl.name},queryByID(t){return this.queries.find(r=>r.id===t)},get data(){return this.queries.reduce((t,r)=>(t[r.id]=r.data,t),{})},get variableStrings(){return Mo(e.variables,this.data)},get variableAggValueMap(){const t={},r=this.data;return e.variables.reduce((a,o)=>(a[o.name]=He(o,r),a),t),t},get variableValueMap(){const t={},r=this.variableAggValueMap;return e.variables.reduce((a,o)=>(a[o.name]=Be(o,r[o.name]),a),t),t},get variableStyleMap(){const t=this.variableValueMap,r={};return e.variables.reduce((a,o)=>{const l=dp(o.color,t[o.name]);return a[o.name]={color:l,"font-size":o.size,"font-weight":o.weight,variable:o},a},r),r},get dataLoading(){return this.queries.some(t=>t.isTransform?t.depQueryModelStates.some(r=>r==="loading"):t.state==="loading")},get queryStateMessages(){const t=this.queries.filter(l=>!l.runByConditionsMet);if(t.length===0)return"";const r=new Set,a=new Set;t.forEach(l=>{const i=l.conditionNames;i.context.forEach(c=>r.add(c)),i.filters.forEach(c=>a.add(c))});const o=[];return r.size>0&&o.push(`context: ${Array.from(r).join(", ")}`),a.size>0&&o.push(`filter${a.size>1?"s":""}: ${Array.from(a).join(", ")}`),o.length===2&&o.splice(1,0,"and"),o.unshift("Waiting for"),o.join(" ")},get queryErrors(){return this.queries.map(t=>t.error??t.metricQueryPayloadErrorString).filter(t=>!!t)},get canRenderViz(){return this.queryErrors.length===0&&this.queryStateMessages===""&&!this.dataLoading},get realDataFieldOptions(){return e.queryIDs.length===0?[]:this.queries.map(t=>{const r=t.data;return r.length===0?[]:Object.keys(r[0]).map(o=>({label:o,value:`${t.id}.${o}`,group:t.name,group_id:t.id,disabled:!1}))}).flat()},dataFieldOptions({selected:t,clearable:r,unsetKey:a,queryID:o,additional_options:l}){let i=[...this.realDataFieldOptions];if(o&&(i=i.filter(c=>c.group_id===o)),l==null||l.forEach(c=>{i.unshift({label:c.label,value:c.value,group:"",group_id:"",disabled:!1})}),t&&!i.find(c=>c.value===t)){const c=$(t),d=this.queryByID(c.queryID);i.unshift({label:c.columnKey,value:t,group:d?d.name:c.queryID,group_id:d?d.id:"",disabled:!0})}return r&&i.unshift({label:a,value:"",group:"",group_id:"",disabled:!1}),i},dataFieldOptionGroups({selected:t,clearable:r,unsetKey:a,queryID:o,additional_options:l}){const i=this.dataFieldOptions({selected:t,clearable:r,unsetKey:a,queryID:o,additional_options:l});return Object.entries(y.groupBy(i,"group")).map(([d,u])=>({group:d,items:u.map(p=>({label:p.label,value:p.value,group_id:p.group_id,disabled:p.disabled}))}))}})).actions(e=>({refreshData(){e.queries.forEach(t=>t.fetchData(!0))},downloadData(){e.contentModel.queries.downloadDataByQueryIDs(e.name,e.queryIDs)},getSchema(){const t=e.json;return t.viz.conf={...t.viz.conf,__INTERACTIONS:{},__OPERATIONS:{},__TRIGGERS:{}},{panel:t,queries:e.queries.map(r=>r.json),layouts:e.contentModel.layouts.jsonByPanelIDSet(new Set([e.id]))}},downloadSchema(){const{panel:t,queries:r,layouts:a}=this.getSchema(),l=JSON.stringify({panels:[t],definition:{queries:r},layouts:a,version:lt},null,2),i=e.name;Gt(i,l)}}));function ec(e){return{id:e,name:"Panel",title:{show:!0},description:"<p></p>",queryIDs:[],viz:{type:na.name,conf:na.createConfig()},style:{border:{enabled:!0}}}}const Ba=f.types.model("PanelsRenderModel",{list:f.types.optional(f.types.array(Ea),[])}).views(e=>({get json(){return e.list.map(t=>t.json)},findByID(t){return e.list.find(r=>r.id===t)},get idMap(){const t=new Map;return e.list.forEach(r=>{t.set(r.id,r)}),t}})).views(e=>({panelsByIDs(t){const r=[];return t.forEach(a=>{const o=e.idMap.get(a);o?r.push(o):console.warn(`Panel is not found, id:${a}`)}),r}}));function tc(e){const t=e.config,r=t==null?void 0:t.default_value;return r===void 0?r:t._name==="date-range"?Ti(t):t._name==="merico-date-range"?Gi(t):r}function h2(e,t){const r=e.default_value_func;try{const a=new Function(`return ${r}`)()(e,We,t);return e.config._name==="date-range"&&Array.isArray(a)?{value:a,shortcut:null}:e.config._name==="merico-date-range"&&Array.isArray(a)?{value:a,shortcut:null,step:e.config.step}:a}catch(a){return console.error(a),tc(e)}}function nc(e,t){var r;return(r=e.default_value_func)!=null&&r.trim()?h2(e,t):tc(e)}function rc(e,t){return e.reduce((r,a)=>(r[a.key]=nc(a,t),r),{})}function ac(e,t){const r={};return Object.entries(t).forEach(([a,o])=>{const l=e[a];if(typeof o!="object"||!("shortcut"in o)||!l)return r[a]=l??o,r;if(Array.isArray(l))return console.log("⚪️ adapting legacy date-range value: ",l),r[a]={value:l,shortcut:null},r;const i=l,{shortcut:c}=i;if(!c)return console.log("⚪️ skipping input date range when it has no shortcut",i),r[a]=i,r;if("step"in o){const d=i.step;r[a]=Rt(c,d)}else r[a]=Pn(c);return r}),r}const qa=f.types.model("FiltersRenderModel",{current:f.types.optional(f.types.array(An),[]),values:f.types.optional(f.types.frozen(),{})}).views(e=>({get json(){return e.current.map(t=>t.json)},get valuesString(){return JSON.stringify(e.values)},get filter(){return f.getParent(e)},get keysToTypes(){return e.current.reduce((t,r)=>(t[r.key]=r.type,t),{})},keyStateItemMap(t){return e.current.reduce((r,a)=>{const o=t[a.key];return r[a.key]={type:a.type,key:a.key,model:a,label:a.label??a.id,value:o},r},{})},get valuesForPayload(){const t={};return Object.entries(e.values).forEach(([r,a])=>{t[r]=a;const o=this.findByKey(r);o&&o.config._name===P.DateRange&&(t[r]=o.config.dateStringsValue),o&&o.config._name===P.MericoDateRange&&(t[r]={...a,value:o.config.dateStringsValue})}),t},get contentModel(){return f.getRoot(e).content},get context(){return this.contentModel.payloadForSQL.context},get initialValuesDep(){return JSON.stringify({filters:e.current.map(({default_value_func:t,config:r})=>({default_value_func:t,config:r})),context:this.contentModel.payloadForSQL.context})},get formattedDefaultValues(){return rc(this.json,this.contentModel.context)},get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},findByKey(t){return e.current.find(r=>r.key===t)},findByIDSet(t){return e.current.filter(r=>t.has(r.id))},get inOrder(){return y.sortBy(e.current,"order")},get empty(){return e.current.length===0},visibleInView(t){return y.sortBy(e.current.filter(r=>r.visibleInViewsIDSet.has(t)),"order")},get firstFilterValueKey(){return Object.keys(e.values)[0]??""},get keySet(){return new Set(e.current.map(t=>t.key))},get keyLabelMap(){return e.current.reduce((t,r)=>(t[r.key]=r.label,t),{})},get keyIDMap(){return e.current.reduce((t,r)=>(t[r.key]=r.id,t),{})},getSelectOption(t){const r=this.findByID(t);if(!r||!("getSelectOption"in r.config))return null;const a=e.values[r.key];return r.config.getSelectOption(a)}})).actions(e=>({setValues(t){console.debug("⚪️ setting filter values: ",JSON.stringify(t)),e.values=t},patchValues(t){console.debug("⚪️ patching filter values: ",JSON.stringify(t)),e.values=ac(t,e.values)},setValueByKey(t,r){console.debug(`⚪️ setting filter[${t}] to value: `,JSON.stringify(r)),e.values={...e.values,[t]:r}},applyValuesPatch(t){e.values={...e.values,...t}},getValueByKey(t){return e.values[t]},getSchema(t,r){return{filters:e.findByIDSet(new Set(t)).map(l=>({...l.json,visibleInViewsIDs:r?l.json.visibleInViewsIDs:[]})),version:lt}},downloadSchema(t){const r=JSON.stringify(this.getSchema(t,!1),null,2);Gt("Filters",r)}}));function La(e,t,r,a){const o={...r,...t},l=rc(e,o),i=ac(a,l);return console.groupCollapsed("⚪️ initialValues"),console.log("filters",e),console.log("defaultValues",l),console.log("filterValues ",a),console.log("initialValues ",i),console.groupEnd(),{current:e,values:i}}function g2(e,t){const r=t.startsWith("t")&&t.endsWith("b")?t.slice(1,-1):t,a=Bs.decode(r);a!==e&&(console.error("Inconsistent sql"),console.groupCollapsed("Inconsistent sql"),console.table({before:e,after:t,v:a}),console.groupEnd())}async function f2({query:e,name:t,payload:r,additionals:a},o){if(!e.sql)return[];const{type:l,key:i,sql:c,pre_process:d,post_process:u}=e,p=mr(c,r),g=fh({sql:p,pre_process:d}),b=`t${Bs.encode(g)}b`;g2(g,b);let _=await $e.query(o)({type:l,key:i,query:b,...a},{params:{name:t}});return _=bh(u,_,_r(r)),_}async function b2({type:e,key:t,configString:r,name:a,additionals:o},l){try{return await $e.httpDataSourceQuery(l)({type:e,key:t,query:r,...o},{params:{name:a}})}catch(i){if(ke.isCancel(i))throw i;return console.error(i),i}}async function y2({key:e,configString:t,name:r,additionals:a},o){try{return await $e.mericoMetricQuery(o)({type:"merico_metric_system",key:e,query:t,...a},{params:{name:r}})}catch(l){throw l}}async function Oa(){try{return(await $e.post()("/datasource/list",{filter:{},sort:[{field:"create_time",order:"ASC"}],pagination:{page:1,pagesize:100}},{})).data}catch(e){return console.error(e),[]}}async function sc(){try{return(await $e.post()("/sql_snippet/list",{filter:{},sort:[{field:"id",order:"ASC"}],pagination:{page:1,pagesize:1e3}},{})).data}catch(e){return console.error(e),[]}}function v2(e){var t;if("cols"in e){const{cols:r}=e,a=((t=r.find(o=>o.type==="trending_date_col"))==null?void 0:t.metricSourceCol)??null;return{variables:[],filters:r.filter(o=>o.type==="filter").map(o=>o.metricSourceCol),groupBys:r.filter(o=>o.type==="group_by").map(o=>o.metricSourceCol),trendingDateCol:a,supportTrending:!!a}}return"variables"in e?{variables:e.variables,filters:[],groupBys:[],trendingDateCol:null,supportTrending:e.variables.includes("date_range")}:{variables:[],filters:e.filters,groupBys:e.groupBys,trendingDateCol:null,supportTrending:e.supportTrending}}const oc={string:"维度列",number:"数值列",date:"数值列",boolean:"维度列",dimension:"扩展维度"};function lc(e){return y.groupBy(e,r=>{const{dataType:a}=r;return a?oc[a]:r.dimension!==null?oc.dimension:"ERROR"})}function _2(e){if(e.length===0)return[];const t=lc(e);return Object.entries(t).map(([a,o])=>({group:`${a}(${o.length})`,items:o.map(l=>{const{dataType:i,dimension:c}=l;return c?{group:l.name,description:l.description,items:c.fields.map(d=>typeof d=="string"?{label:d,value:`${l.name} -> ${d}`}:{label:d.field,value:`${l.name} -> ${d.field}`,...d})}:{label:l.name,value:l.name,...l}})}))}function m2(e){if(e.length===0)return[];const t=lc(e);return Object.entries(t).map(([a,o])=>({group:`${a}(${o.length})`,items:o.map(l=>({label:l.name,value:l.name,description:l.description,dataType:l.dataType??"dimension",dimension:l.dimension}))}))}const ic=new Map([["accumulate",{name:"累计计算",description:"按指定的聚合方式,依次计算指标值的累计值。",requireWindowConfig:!1,requireTrendingDateCol:!1}],["yoyRatio",{name:"年同比率(yoy)",description:"对比当前年份与上一个年份同期指标值的变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["stepRatio",{name:"环比率",description:"对比当前步长与上一个步长指标值的变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["stepSpansRatio",{name:"移动计算",description:"按设定的窗口沿时序对指标值进行滚动计算。",requireWindowConfig:!0,requireTrendingDateCol:!0}],["percentage",{name:"总占比",description:"总占比 = 当前值 / 总值。",requireWindowConfig:!1,requireTrendingDateCol:!1}],["percentage_accumulate",{name:"累计占比",description:"按聚合规则计算各项占比,再依次计算占比率的累计值,如帕累托的累计占比值。",requireWindowConfig:!1,requireTrendingDateCol:!1}],["accumulate_yoyRatio",{name:"累计年同比",description:"按聚合规则累加数据,再与上一年同期累计值对比得出变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["yoyRatio_accumulate",{name:"年同比累计",description:"先计算各步长指标相对上一年同期的同比率,再依次计算同比率的累计值。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["stepRatio_accumulate",{name:"环比累计",description:"先计算各步长指标相对上一步长的环比率,再依次计算环比率的累计值。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["percentage_yoyRatio",{name:"占比年同比",description:"按聚合规则计算各项占比,再与去年同期占比对比得出变化率。",requireWindowConfig:!1,requireTrendingDateCol:!0}],["yoyRatio_stepSpansRatio",{name:"年同比移动计算",description:"先计算各步长指标相对上一年同期的同比率,再按移动设置沿时序滚动计算。",requireWindowConfig:!0,requireTrendingDateCol:!0}],["stepRatio_stepSpansRatio",{name:"环比移动计算",description:"先计算各步长指标相对上一步长的环比率,再按移动设置沿时序滚动计算。",requireWindowConfig:!0,requireTrendingDateCol:!0}]]);function cc(e,t){if(t)return e;const r=Array.from(ic.entries()).filter(([a,o])=>o.requireTrendingDateCol).map(([a])=>a);return e.filter(a=>!r.includes(a))}function dc(e,t,r){return Array.isArray(e)&&e.length===2?{start:M(e[0]).tz(t).format(r),end:M(e[1]).tz(t).format(r)}:null}function uc(e,t,r,a,o="PRC",l="YYYY-MM-DD"){const i=t?y.get(a,t):void 0,c=e?y.get(a,e):void 0;let d=t?y.get(r,t,""):"";i===P.MericoDateRange&&t&&(d=y.get(r,`${t}.step`,""));const u={start:"",end:"",unitOfTime:d,unitNumber:1,timezone:o,stepKeyFormat:l};if(e)if(c===P.MericoDateRange){const p=y.get(r,`${e}.value`),g=dc(p,o,l);g&&(u.start=g.start,u.end=g.end)}else{const p=y.get(r,e),g=dc(p,o,l);g&&(u.start=g.start,u.end=g.end)}return u}const pc=vi.views(e=>({get rootModel(){return f.getRoot(e)},get contentModel(){return this.rootModel.content},get conditionOptions(){return this.contentModel.dashboardStateVariableOptions},getConditionOptionsWithInvalidValue(t){const{optionGroups:r,validValues:a}=this.conditionOptions;if(!t||a.has(t))return this.conditionOptions;const o={group:"common.invalid",items:[{label:t,value:t}]};return{optionGroups:[...r,o],validValues:a}},get conditionOptionsWithInvalidRunbys(){const{optionGroups:t,validValues:r}=this.conditionOptions,a={group:"common.invalid",items:[]};return e.run_by.forEach(o=>{r.has(o)||a.items.push({label:o,value:o})}),{optionGroups:[...t,a],validValues:r}},get unmetRunByConditions(){if(!f.isAlive(e))return[];const{run_by:t}=e;if(t.length===0)return[];const r=this.contentModel.payloadForSQL;return t.filter(a=>{const o=y.get(r,a);return Array.isArray(o)?o.length===0:typeof o=="number"?Number.isNaN(o):!o})}})).views(e=>({get payload(){return e.contentModel.payloadForSQL},get formattedSQL(){const t=y.get(e,"config.sql","");return wr(t,this.payload)},get httpConfigString(){const{context:t,filters:r}=this.payload,{name:a,pre_process:o}=e.json,l=gh(o,t,r);return console.groupCollapsed(`Request config for: ${a}`),console.log(l),console.groupEnd(),JSON.stringify(l)},get typedAsSQL(){return[W.Postgresql,W.MySQL].includes(e.type)},get typedAsHTTP(){return[W.HTTP].includes(e.type)},get isMericoMetricQuery(){return e.type===W.MericoMetricSystem},get isTransform(){return e.type===W.Transform},get reQueryKey(){const t=y.get(e,"config.react_to",[]);if(t.length===0)return"";const r=e.contentModel.payloadForSQL,a=[...t].reduce((o,l)=>(o[l]=y.get(r,l),o),{});return JSON.stringify(a)},get runByConditionsMet(){return e.unmetRunByConditions.length===0},get conditionNames(){if(e.unmetRunByConditions.length===0)return{context:[],filters:[]};const{keyLabelMap:t}=e.contentModel.filters,r=e.unmetRunByConditions.filter(o=>o.startsWith("context.")).map(o=>o.replace("context.","")),a=e.unmetRunByConditions.filter(o=>o.startsWith("filters.")).map(o=>y.get({filters:t},o,o.replace("filters.",""))).filter(o=>!!o);return{context:r,filters:a}},get queries(){return f.getParent(e,2)},get inUse(){return this.queries.isQueryInUse(e.id)},get dependencies(){if(!this.typedAsSQL)return[];const t=y.get(e,"config.sql","");if(!t)return[];const r=y.uniq(t.match(Et.sqlSnippet)),a=y.uniq(t.match(Et.filter)),o=y.uniq(t.match(Et.context)),l=[];return r.forEach(i=>{l.push({type:"sql_snippet",key:i,valid:e.contentModel.sqlSnippets.keySet.has(i)})}),a.forEach(i=>{l.push({type:"filter",key:i,valid:e.contentModel.filters.keySet.has(i)})}),o.forEach(i=>{l.push({type:"context",key:i,valid:e.contentModel.mock_context.keySet.has(i)})}),l},get usedFilterKeySet(){const t=new Set,r=i=>{t.add(i.replace(/^filters\./,""))};if(e.run_by.forEach(i=>r(i)),y.get(e.config,"react_to",[]).forEach(i=>r(i)),!this.typedAsSQL)return t;const o=y.get(e,"config.sql","");return o&&y.uniq(o.match(Et.filter)).forEach(i=>r(i)),t},get metricQueryPayload(){if(e.type!==W.MericoMetricSystem)return null;const t=this.payload,r={filters:e.contentModel.filters.keysToTypes},a=e.config,o=y.omit(Object.fromEntries(a.sqlVariables.map(p=>{const g=p.sqlVar,b=p.variable,_=y.get(t,b);return[g,_]})),["date_range","step"]);console.log("MMS var",o);const l=a.filters.reduce((p,g)=>{const b=y.get(t,g.variable),_=y.get(r,g.variable),w=g.dimension;if(_===P.DateRange){const S=b.every(D=>Number.isFinite(Number(D)))?b.map(D=>Number(D)):b;p[w]={between:S}}else if(_===P.MericoDateRange){const S=b.value.every(D=>Number.isFinite(Number(D)))?b.value.map(D=>Number(D)):b;p[w]={between:S}}else Array.isArray(b)?p[w]={in:b}:p[w]={eq:b};return p},{}),i={id:a.id,type:a.type,filters:l,groupBys:a.groupBys,variables:o,semanticKey:a.semanticKey},c=a.sqlVariables.find(p=>["date_range","step"].includes(p.sqlVar));if(c&&(i.timeQuery=uc(c.variable,c.variable,t,r)),a.extraCalculations&&a.extraCalculations.length>0&&(i.extraCalculations=cc(a.extraCalculations,a.timeQuery.enabled)),a.useDefaultValues&&(i.useDefaultValues=!0),!a.timeQuery.enabled)return i;const{range_variable:d,unit_variable:u}=a.timeQuery;return i.timeQuery=uc(d,u,t,r),i},get metricQueryPayloadString(){return this.metricQueryPayload?JSON.stringify(this.metricQueryPayload,null,2):""},get metricQueryPayloadError(){const t=[];if(!this.metricQueryPayload)return t;const r=e.config,{timeQuery:a}=this.metricQueryPayload;if(!a)return r.groupByValues.length>2&&t.push("分组聚合维度:最多支持两个维度的聚合计算"),t;r.groupByValues.length>1&&t.push("分组聚合维度:按时间序列展示时,仅可选择一个聚合维度");const{start:o,end:l,unitOfTime:i}=a;return(!o||!l)&&t.push("时间维度:时间范围不完整"),i||t.push("步长:必选"),t},get metricQueryPayloadErrorString(){return this.metricQueryPayloadError.join(`
|
|
543
543
|
`)},get metricQueryPayloadValid(){return this.metricQueryPayload?this.metricQueryPayloadError.length===0:!1}})),Na=f.types.compose("QueryRenderModel",pc,f.types.model({state:f.types.optional(f.types.enumeration(["idle","loading","error"]),"idle"),data:f.types.optional(f.types.frozen([]),[]),error:f.types.optional(f.types.frozen(),null)})).views(e=>({get datasource(){const{key:t,type:r}=e;return e.rootModel.datasources.find({type:r,key:t})},get additionalQueryInfo(){return e.contentModel.getAdditionalQueryInfo(e.id)},get depQueryModels(){const t=y.get(e,"config.dep_query_ids",[]);return e.contentModel.queries.findByIDSet(new Set(t))},get depQueryModelStates(){return this.depQueryModels.map(t=>t.state)},get depQueryModelStatesString(){return this.depQueryModelStates.toString()}})).views(e=>({get stateMessage(){if(e.state!=="idle")return"";if(!e.runByConditionsMet){const{context:t,filters:r}=e.conditionNames;if(t.length===0&&r.length===0)return"Waiting";const a=[];return t.length>0&&a.push(`context: ${t.join(", ")}`),r.length>0&&a.push(`filter${r.length>1?"s":""}: ${r.join(", ")}`),a.length===2&&a.splice(1,0,"and"),a.unshift("Waiting for"),a.join(" ")}return e.data.length>0?"":"data.empty_data"}})).volatile(()=>({controller:new AbortController})).actions(e=>({setData(t){e.data=t},setError(t){e.error=t}})).actions(e=>({runSQL:f.flow(function*(){var t;if(e.valid&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet)){e.controller=new AbortController,e.state="loading";try{const r=e.payload,a=e.config;e.data=yield*f.toGenerator(f2({payload:r,name:e.name,query:{type:e.type,key:e.key,sql:a.sql,pre_process:e.pre_process,post_process:e.post_process},additionals:e.additionalQueryInfo},e.controller.signal)),e.state="idle",e.error=null}catch(r){if(ke.isCancel(r))console.debug(`🟡 Query[${e.name}] is cancelled`),e.data=[],e.state="idle";else{e.data=[];const a=y.get(r,"message","unkown error");e.error=y.get(r,"response.data.detail.message",a),e.state="error"}}}}),runHTTP:f.flow(function*(){var t;if(!(!e.valid||!e.datasource)&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet)){e.controller=new AbortController,e.state="loading";try{const{type:r,key:a,post_process:o}=e.json;let l=JSON.parse(e.httpConfigString);l=fn(e.datasource,l);const i=yield*f.toGenerator(b2({type:r,key:a,configString:JSON.stringify(l),name:e.name,additionals:e.additionalQueryInfo},e.controller.signal)),c=bn(e.datasource,i),d=Vo(o,c,e.contentModel.dashboardStateValues);e.data=d,e.state="idle",e.error=null}catch(r){if(console.error(r),ke.isCancel(r))console.debug(`🟡 Query[${e.name}] is cancelled`),e.data=[],e.state="idle";else{e.data=[];const a=y.get(r,"message","unkown error");e.error=y.get(r,"response.data.detail.message",a),e.state="error"}}}}),runMericoMetricQuery:f.flow(function*(){var t;if(!(!e.valid||!e.datasource)&&((t=e.controller)==null||t.abort(),!!e.runByConditionsMet&&e.metricQueryPayloadValid)){e.controller=new AbortController,e.state="loading";try{const{type:r,key:a,post_process:o}=e.json;let l={url:"/api/metric_management/query",method:"POST",data:e.metricQueryPayload};l=fn(e.datasource,l);const i=yield*f.toGenerator(y2({key:a,configString:JSON.stringify(l),name:e.name,additionals:e.additionalQueryInfo},e.controller.signal)),c=bn(e.datasource,i),d=Vo(o,c,e.contentModel.dashboardStateValues);e.data=w2(d.data),e.state="idle",e.error=null}catch(r){if(console.error(r),ke.isCancel(r))console.debug(`🟡 Query[${e.name}] is cancelled`),e.data=[],e.state="idle";else{e.data=[];const a=y.get(r,"message","unkown error");e.error=y.get(r,"response.data.detail.message",a),e.state="error"}}}}),runTransformation(){e.state="loading";try{const t=e.depQueryModels.map(l=>({id:l.id,name:l.name,data:y.cloneDeep(l.data)})),r=e.contentModel.dashboardStateValues,a=e.pre_process,o=new Function(`return ${a}`)()(t,r,We);e.data=o,e.state="idle",e.error=null}catch(t){e.data=[],e.error=t.message,e.state="error"}}})).actions(e=>({fetchData:t=>{if(!e.inUse&&!t){console.debug(`🟡 Skipping query[${e.name}]`);return}return console.debug(`🔵 Running query[${e.name}]`),e.isTransform?e.runTransformation():e.typedAsHTTP?e.runHTTP():e.isMericoMetricQuery?e.runMericoMetricQuery():e.runSQL()},beforeDestroy(){var t;(t=e.controller)==null||t.abort()}})).actions(e=>({afterCreate(){f.addDisposer(e,G.reaction(()=>{var r,a;if(e.isTransform){const o=e.config;return[e.inUse,e.id,e.key,e.reQueryKey,o.dep_query_ids.toString(),e.pre_process,e.depQueryModelStatesString].join("--")}return e.typedAsHTTP?`${e.inUse}--${e.id}--${e.key}--${e.reQueryKey}--${(r=e.datasource)==null?void 0:r.id}`:e.isMericoMetricQuery?`${e.inUse}--${e.id}--${e.key}--${e.reQueryKey}--${e.metricQueryPayloadString}--${(a=e.datasource)==null?void 0:a.id}`:[e.inUse,e.id,e.key,e.formattedSQL,e.pre_process,e.post_process].join("--")},()=>e.fetchData(!1),{fireImmediately:!0,delay:0}))}}));function w2(e){if("sortedColumns"in e&&"result"in e){const t=new Set(e.sortedColumns);return y.map(e.result,r=>{const a={};for(const o of t)a[o]=r[o];for(const o in r)t.has(o)||(a[o]=r[o]);return a})}return e}const Ga=f.types.model("QueriesRenderModel",{current:f.types.optional(f.types.array(Na),[])}).views(e=>({get idSet(){return new Set(e.current.map(t=>t.id))},get firstID(){if(e.current.length!==0)return e.current[0].id},findByID(t){return e.current.find(r=>r.id===t)},findByIDSet(t){return e.current.filter(r=>t.has(r.id))},get json(){return e.current.filter(t=>t.id&&t.key).map(t=>t.json)},get root(){return f.getRoot(e)},get dashboardName(){return this.root.name},get contentModel(){return f.getParent(e,1)},get visibleQueryIDSet(){const{views:t,filters:r}=this.contentModel,a=[];t.visibleViews.forEach(i=>{i.panels.forEach(c=>{a.push(...c.queryIDs)})});const o=y.uniq(t.visibleViews.map(i=>i.renderViewIDs).flat());r.current.forEach(i=>{const c=y.get(i,"config.options_query_id");if(!c)return;o.some(u=>i.visibleInViewsIDSet.has(u))&&a.push(c)}),this.findByIDSet(new Set(a)).forEach(i=>{const c=i.config;!i.isTransform||c.dep_query_ids.length===0||a.push(...c.dep_query_ids)});const l=new Set(a);return console.debug("QueryIDs:",l),l},isQueryInUse(t){return this.visibleQueryIDSet.has(t)},addTransformDepQueryIDs(t,r){this.findByIDSet(t).forEach(a=>{const o=a.config;!a.isTransform||o.dep_query_ids.length===0||o.dep_query_ids.forEach(l=>{r!=null&&r.has(l)||t.add(l)})})},get querisToForceReload(){const t=new Set,r=new Set,{views:a,filters:o}=this.contentModel,l=y.uniq(a.visibleViews.map(i=>i.renderViewIDs).flat());return o.current.forEach(i=>{const c=y.get(i,"config.options_query_id");if(!c)return;l.some(u=>i.visibleInViewsIDSet.has(u))&&t.add(c)}),this.addTransformDepQueryIDs(t),a.visibleViews.forEach(i=>{i.panels.forEach(c=>{c.queryIDs.forEach(d=>{t.has(d)||r.add(d)})})}),this.addTransformDepQueryIDs(r,t),{filterQueries:this.findByIDSet(t),panelQueries:this.findByIDSet(r)}}})).actions(e=>({downloadAllData(){const t=e.current.map(({name:r,data:a})=>({id:r,data:a}));Ri(e.dashboardName,t)},downloadDataByQueryIDs(t,r){if(r.length===1)return this.downloadDataByQueryID(t,r[0]);const a=new Set(r),o=e.current.filter(l=>a.has(l.id)).map(({name:l,data:i})=>({id:l,data:i}));Ri(t,o)},downloadDataByQueryID(t,r){const a=e.findByID(r);if(!a){console.log("[downloadDataByQueryID] query not found");return}const{data:o}=a,l=t??a.name;Hi(l,o)},refetchDataByQueryID(t){const r=e.findByID(t);if(!r){console.error(new Error(`[downloadDataByQueryID] query by ID[${t}] not found`));return}return r.fetchData(!0)},getSchema(t){return{definition:{queries:e.findByIDSet(new Set(t)).map(o=>o.json)},version:lt}},downloadSchema(t){const r=JSON.stringify(this.getSchema(t),null,2);Gt("Queries",r)},forceReloadVisibleQueries:f.flow(function*(){const{filterQueries:t,panelQueries:r}=e.querisToForceReload;if(console.log("🟡 Force reloading queries"),t.length>0){const a=yield Promise.allSettled(t.map(o=>o.fetchData(!0)));console.log("🟡 Queries from filters reloaded",a)}else console.log("🟡 Found no query from visible filters, skipping");if(r.length>0){const a=yield Promise.allSettled(r.map(o=>o.fetchData(!0)));console.log("🟡 Queries from filters reloaded",a)}else console.log("🟡 Found no query from visible panels, skipping")})}));function hc(e){return{current:e}}function gc({min:e,max:t}){const r=`${e}px`,a=Number.isFinite(t)?`${t}px`:"∞";return`[${r}, ${a})`}const Fa=f.types.model("LayoutsRenderModel",{list:f.types.array(mi),currentBreakpoint:f.types.string}).views(e=>({get json(){return e.list.map(t=>t.json)},jsonByPanelIDSet(t){return e.list.map(r=>r.jsonByPanelIDSet(t))},get root(){return f.getRoot(e)},get contentModel(){return this.root.content},get basisLayoutSet(){return e.list.find(t=>t.id==="basis")},get currentLayoutSet(){return e.list.find(t=>t.id===e.currentBreakpoint)},get currentLayoutRange(){return this.breakpointRanges.find(t=>t.id===e.currentBreakpoint)},get currentRangeText(){const t=this.currentLayoutRange;return gc(t)},get cols(){const t={};return e.list.forEach(r=>{t[r.id]=36}),t},get breakpoints(){const t={};return e.list.forEach(r=>{t[r.id]=r.breakpoint}),t},get breakpointNameRecord(){const t={};return e.list.forEach(r=>{t[r.name]=r.breakpoint}),t},get breakpointRanges(){const t=e.list.map(r=>({id:r.id,name:r.name,min:r.breakpoint,max:1/0,text:""}));return t.sort((r,a)=>r.min-a.min).forEach((r,a)=>{a!==t.length-1&&(r.max=t[a+1].min)}),t.forEach(r=>{r.text=gc(r)}),t},get breakpointsInfo(){return e.list.map(t=>({id:t.id,name:t.name,breakpoint:t.breakpoint})).sort((t,r)=>t.breakpoint-r.breakpoint)},get currentBreakpointRange(){return this.breakpointRanges.find(t=>t.id===e.currentBreakpoint)},get currentLayoutPreviewWidth(){const t=this.currentBreakpointRange;if(t)return t.max===1/0?t.min===0?void 0:t.min+1:t.max},items(t){const r=new Set(t);return this.currentLayoutSet.list.filter(o=>r.has(o.panelID))},gridLayouts(t){const r=new Set(t),a={};return e.list.forEach(o=>{a[o.id]=o.list.filter(l=>r.has(l.panelID)).map(l=>l.layoutProperies)}),a},findItemByPanelID(t){return this.currentLayoutSet.findByPanelID(t)}})).actions(e=>({setCurrentBreakpoint(t){console.log("🔴 onBreakpointChange:",t),e.currentBreakpoint=t},afterCreate(){f.addDisposer(e,G.reaction(()=>e.currentBreakpoint,()=>{setTimeout(()=>{window.dispatchEvent(new Event("resize"))},32)},{fireImmediately:!1,delay:0}))}})),fc=wi.views(e=>({isADuplicatedKey(t){return!t||t===e.key?!1:!!f.getParent(e,2).findByKey(t)}})),Qa=f.types.model("SQLSnippetsRenderModel",{current:f.types.optional(f.types.array(fc),[])}).views(e=>({get json(){return e.current.map(t=>t.json)},get record(){return e.current.reduce((t,r)=>(t[r.key]=r.value,t),{})},get keySet(){return new Set(e.current.map(t=>t.key))},get firstKey(){if(e.current.length!==0)return e.current[0].key},findByKey(t){return e.current.find(r=>r.key===t)},findByKeySet(t){return e.current.filter(r=>t.has(r.key))}})).actions(e=>({getSchema(t){return{definition:{sqlSnippets:e.findByKeySet(new Set(t)).map(o=>o.json)},version:lt}},downloadSchema(t){const r=JSON.stringify(this.getSchema(t),null,2);Gt("SQL Snippets",r)}}));function bc(e){return{current:e}}function en(e,t,r,a){return e.reduce((o,l)=>{try{o[l[t]]=mr(l[r],a)}catch(i){o[l[t]]=i.message}return o},{})}class yc{constructor(t){V(this,"origin");V(this,"copy");this.origin=t,this.copy=f.clone(t),G.makeAutoObservable(this,{},{autoBind:!0,deep:!1})}get changed(){return!y.isEqual(f.getSnapshot(this.origin),f.getSnapshot(this.copy))}commit(){f.applySnapshot(this.origin,f.getSnapshot(this.copy))}reset(){f.applySnapshot(this.copy,f.getSnapshot(this.origin))}update(t){f.applySnapshot(this.copy,t)}}const vc=e=>new yc(e),x2=({description:e,isDescriptionEmpty:t})=>t?null:n.jsx(s.Tooltip,{color:"white",label:n.jsx($t,{value:e,styles:{root:{border:"none"},content:{padding:0}}}),styles:{tooltip:{border:"0.0625rem solid rgb(233, 236, 239)",boxShadow:"rgb(0 0 0 / 5%) 0px 0.0625rem 0.1875rem, rgb(0 0 0 / 5%) 0px 1.25rem 1.5625rem -0.3125rem, rgb(0 0 0 / 4%) 0px 0.625rem 0.625rem -0.3125rem"}},withArrow:!0,children:n.jsx(s.Box,{sx:{height:"16px",alignSelf:"center"},children:n.jsx(T.IconInfoCircle,{size:16,color:"gray"})})}),C2=k.observer(({label:e,config:{default_value:t,description:r,isDescriptionEmpty:a,...o},value:l,onChange:i})=>n.jsxs(s.Box,{children:[n.jsx(s.Text,{size:"sm",children:" "}),n.jsx(s.Checkbox,{label:n.jsxs(s.Group,{wrap:"nowrap",justify:"space-between",align:"middle",gap:6,children:[n.jsx(s.Box,{sx:{flexGrow:1},children:e}),n.jsx(x2,{description:r,isDescriptionEmpty:a})]}),checked:l||!1,onChange:c=>i(c.currentTarget.checked),...o,pt:".4em",styles:{input:{borderColor:"#e9ecef"}}})]})),S2=({value:e,onChange:t,onClose:r,max_days:a,allowSingleDateInRange:o})=>{const l=e.value,[i,c]=l,d=h.useMemo(()=>i||new Date,[i]),u=h.useMemo(()=>{if(i&&!c)return i},[i,c]),p=h.useMemo(()=>{if(i&&!c&&a>0)return M(i).add(a-1,"days").toDate()},[i,c,a]),g=b=>{const[_,w]=b;t({value:b,shortcut:null}),_&&w&&r()};return n.jsx(wt.DatePicker,{defaultDate:d,numberOfColumns:2,type:"range",value:l,onChange:g,onNextMonth:console.log,minDate:u,maxDate:p,allowSingleDateInRange:o})},T2=({begin:e,end:t})=>{const{t:r}=m.useTranslation(),a=h.useMemo(()=>!t&&!e?Number.NaN:M(t).diff(M(e),"days")+1,[e,t]);if(Number.isNaN(a))return n.jsx("span",{style:{userSelect:"none",opacity:0,visibility:"hidden"},children:"."});const o=a===1?r("filter.widget.date_range.one_day"):r("filter.widget.date_range.x_days",{count:a});return n.jsx(s.Tooltip,{label:o,children:n.jsx(s.Badge,{size:"sm",variant:"light",children:a})})},k2=({max_days:e})=>{const{t}=m.useTranslation();return e?n.jsxs(n.Fragment,{children:[n.jsx(s.Group,{justify:"flex-end",children:n.jsx(s.Badge,{size:"xs",variant:"light",children:t("filter.widget.date_range.x_max_days",{max_days:e})})}),n.jsx(s.Divider,{variant:"dashed",my:10})]}):null},D2=({onChange:e,onClose:t})=>{const{t:r,i18n:a}=m.useTranslation(),o=c=>()=>{const d=c();e(d),t()},l=h.useMemo(()=>Si(),[]),i=a.language==="zh";return n.jsxs(n.Fragment,{children:[n.jsx(s.Divider,{variant:"dashed",my:10}),n.jsx(s.Table,{withTableBorder:!1,sx:{"tbody > tr":{border:"none"},"tbody > tr > th, tbody > tr > td":{borderTop:"none",padding:"2px 6px"},"tbody > tr > th":{cursor:"default",userSelect:"none"},td:{paddingLeft:"1px"}},children:n.jsx(s.Table.Tbody,{children:Object.entries(l).map(([c,d])=>n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Th,{children:n.jsx(s.Text,{size:"xs",c:"#555",fw:500,sx:{textAlignLast:"justify"},children:r(`filter.widget.date_range.shortcut.${c}.label`)})}),d.map(({key:u,value:p,getRange:g})=>n.jsx(s.Table.Td,{children:n.jsx(s.Button,{size:"compact-xs",variant:"subtle",onClick:o(g),children:r(`filter.widget.date_range.shortcut.${c}.${i?"full.":""}${u}`)})},u))]},c))})})]})},_c=e=>({label:{display:"block",height:"21.7px"},input:{borderColor:e?"#228be6":"#e9ecef"}}),z2=({label:e,required:t,value:r,onChange:a,max_days:o,allowSingleDateInRange:l,inputFormat:i,disabled:c})=>{const{t:d}=m.useTranslation(),[u,{open:p,close:g}]=te.useDisclosure(!1),[b,_]=r.value,w=b?M(b).format(i):"",x=_?M(_).format(i):"";return n.jsxs(s.Popover,{opened:u,onClose:g,position:"bottom-start",shadow:"md",children:[n.jsxs(s.Group,{justify:"flex-start",grow:!0,wrap:"nowrap",gap:0,w:"288px",sx:{marginTop:"3px"},children:[n.jsx(s.Popover.Target,{children:n.jsx(s.TextInput,{label:e,labelProps:{title:e},required:t,leftSection:n.jsx(T.IconCalendar,{size:16}),placeholder:d("filter.widget.date_range.start_date"),readOnly:!0,disabled:c,value:w,onFocus:p,styles:_c(u),sx:{".mantine-TextInput-label":{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",width:"calc(240px)",position:"relative",zIndex:1},".mantine-Input-input":{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0},".mantine-Input-input[data-disabled]":{backgroundColor:"transparent",backgroundImage:"linear-gradient(to left, #fff 0%, #f1f3f5 30%)",opacity:1},".mantine-Input-input[data-disabled]::placeholder":{opacity:.6}}})}),n.jsx(s.TextInput,{label:n.jsx(s.Group,{justify:"flex-end",children:n.jsx(T2,{begin:b,end:_})}),leftSection:n.jsx(T.IconMinus,{size:16}),placeholder:d("filter.widget.date_range.end_date"),readOnly:!0,disabled:!b||c,value:x,onFocus:p,styles:_c(u),sx:{".mantine-Input-section":{transform:"translateX(-18px)"},".mantine-Input-input":{borderLeft:"none",borderTopLeftRadius:0,borderBottomLeftRadius:0},".mantine-Input-input[data-disabled]":{backgroundColor:"transparent",backgroundImage:"linear-gradient(to right, #fff 0%, #f1f3f5 30%)",opacity:1},".mantine-Input-input[data-disabled]::placeholder":{opacity:.6}}})]}),n.jsxs(s.Popover.Dropdown,{p:"sm",children:[n.jsx(k2,{max_days:o}),n.jsx(S2,{value:r,onChange:a,onClose:g,allowSingleDateInRange:l,max_days:o}),n.jsx(D2,{onChange:a,onClose:g})]})]})},mc={value:[null,null],shortcut:null},ja=e=>{const t=Pn(e.shortcut);return t||(Array.isArray(e.value)?e:mc)},M2=e=>h.useMemo(()=>ja(e),[e]),wc=k.observer(({label:e,config:t,value:r=mc,onChange:a,disabled:o})=>{const{inputFormat:l,required:i,max_days:c,allowSingleDateInRange:d}=t,u=M2(r);return n.jsx(z2,{label:e,value:u,onChange:a,inputFormat:l,allowSingleDateInRange:d,max_days:c,required:i,disabled:o})}),I2=pt.createStyles((e,{radius:t=4,name:r,...a})=>({root:{borderRadius:s.getRadius(t),display:"flex",flexWrap:"nowrap",border:"1px solid #ced4da",paddingLeft:"0px",paddingRight:"30px",backgroundColor:"#fff",transition:"border-color 100ms ease",borderColor:"#e9ecef",...a,"&.rc-select.rc-select-open":{borderColor:"#228be6 !important",".rc-select-selection-overflow-item-rest":{display:"none"},".rc-select-selection-overflow-item-suffix":{display:"block"}},".rc-select-selector":{height:"auto",lineHeight:1.55,paddingLeft:"12px",resize:"none",boxSizing:"border-box",fontSize:"14px",width:"100%",color:"#000",display:"block",textAlign:"left",minHeight:"36px",cursor:"pointer",flexGrow:1},".rc-select-selection-search-mirror":{display:"none"},".rc-select-selection-search":{flexGrow:1,width:"auto !important"},".rc-select-selection-overflow":{display:"flex",minHeight:"34px",alignItems:"center",flexWrap:"nowrap",marginLeft:"calc(-10px / 2)",boxSizing:"border-box"},".rc-select-selection-overflow-item":{display:"flex",alignItems:"center",backgroundColor:"#f1f3f5",color:"#495057",height:"24px",paddingLeft:"12px",paddingRight:"12px",fontWeight:500,fontSize:"12px",borderRadius:"4px",cursor:"default",userSelect:"none",maxWidth:"calc(100% - 20px)",margin:"calc(10px / 2 - 2px) calc(10px / 2)"},".rc-select-selection-overflow-item-rest":{cursor:"pointer"},".rc-select-selection-overflow-item-suffix":{display:"none",backgroundColor:"transparent",width:"100%",maxWidth:"100%",height:"28px",margin:0,paddingLeft:0,paddingRight:0},input:{flex:1,minWidth:"60px",backgroundColor:"transparent",border:0,outline:0,fontSize:"14px",padding:0,marginLeft:0,color:"inherit",height:"28px",lineHeight:"32px",cursor:"pointer",width:"100%","&::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{display:"none"}},".rc-select-clear":{marginRight:"-24px",alignSelf:"center",cursor:"pointer"},"&.rc-select-disabled":{backgroundColor:"rgb(241, 243, 245)",color:"rgb(144, 146, 150)",opacity:.6,"&, .rc-select-selector, input":{cursor:"not-allowed"}}},label:{fontSize:e.fontSizes.sm,fontWeight:500,color:"#212529"},required:{color:"#fa5252",paddingLeft:"3px"},dropdown:{fontSize:e.fontSizes.xs,zIndex:300,backgroundColor:"#fff",border:"1px solid #e9ecef",marginTop:6,padding:0,boxShadow:"0 1px 3px rgb(0 0 0 / 5%), rgb(0 0 0 / 5%) 0px 10px 15px -5px, rgb(0 0 0 / 4%) 0px 7px 7px -5px",borderRadius:"4px","&.rc-select-dropdown-slide-up-leave-active":{display:"none"},".rc-select-item-empty":{padding:"8px 12px"},".rc-select-item-option":{boxSizing:"border-box",textAlign:"left",width:"100%",padding:"8px 12px 8px 2px",cursor:"pointer",fontSize:"14px",color:"#000",borderRadius:"4px",display:"flex",flexWrap:"nowrap",overflow:"hidden","&:hover":{backgroundColor:"#f1f3f5"},flexDirection:"row-reverse",".rc-select-item-option-state":{flexGrow:0,flexShrink:0,width:"30px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},".rc-select-item-option-content":{width:"calc(100% - 30px)",overflow:"hidden",'div[data-role="label"]':{overflowWrap:"break-word"}},".rc-select-item-option-state-icon":{lineHeight:"20px"}},".rc-virtual-list-holder-inner":{alignItems:"flex-start"}}})),V2={root:{cursor:"pointer","&:hover":{backgroundColor:"var(--mantine-color-default-hover)"},"input, .mantine-Checkbox-labelWrapper":{cursor:"pointer",pointerEvents:"none"}}},P2=({disabled:e,radius:t,style:r,label:a,value:o,onChange:l,options:i,errorMessage:c,required:d})=>{const{t:u}=m.useTranslation(),{classes:p,cx:g}=I2({radius:t,name:"MultiSelectWidget"}),[b,_]=h.useState(!1),w=N=>{_(N)},x=b&&(o==null?void 0:o.length)>0,[S,D]=h.useState(""),z=h.useMemo(()=>{if(!S)return i;const N=S.toLowerCase(),oe=be=>{var ct;return((ct=be.description)==null?void 0:ct.toLowerCase().includes(N))||be.label.toLowerCase().includes(N)};return i.filter(oe)},[S,i]),I=h.useMemo(()=>new Set(i.map(N=>N.value)),[i]),A=h.useMemo(()=>new Set(o),[o]),E=h.useMemo(()=>A.size!==I.size?!1:Array.from(I).every(N=>A.has(N)),[A,I]),U=()=>{if(E){l([]);return}const N=Array.from(I);l(N)};return n.jsxs(s.Stack,{gap:3,children:[n.jsxs(s.Group,{justify:"space-between",children:[n.jsxs(s.Text,{className:p.label,size:"sm",children:[a,d&&n.jsx("span",{className:p.required,"aria-hidden":"true",children:"*"})]}),x&&n.jsx(s.Tooltip,{label:u("filter.widget.common.x_selected",{count:o.length}),children:n.jsx(s.Badge,{variant:"light",children:o.length})})]}),n.jsx(qs,{disabled:e,allowClear:!0,className:g(p.root,"check-select"),dropdownClassName:g(p.dropdown,""),onDropdownVisibleChange:w,transitionName:"rc-select-dropdown-slide-up",choiceTransitionName:"rc-select-selection__choice-zoom",style:r,clearIcon:()=>n.jsx(s.CloseButton,{size:"sm"}),value:o,onChange:l,onSelect:console.log,mode:"multiple",maxTagCount:0,notFoundContent:n.jsx(Ca,{errorMessage:c}),maxTagTextLength:10,maxTagPlaceholder:N=>u("filter.widget.common.x_selected",{count:N.length}),searchValue:S,onSearch:D,filterOption:!1,dropdownRender:N=>n.jsxs(n.Fragment,{children:[I.size>0&&!S&&n.jsx(s.Group,{px:"xs",py:"xs",onClick:U,styles:V2,children:n.jsx(s.Checkbox,{size:"xs",checked:E,onChange:y.noop,label:u("common.actions.select_all")})}),n.jsx(s.Divider,{}),N]}),children:z.map(N=>n.jsxs(qs.Option,{title:N.label,children:[n.jsx(s.Text,{size:"sm","data-role":"label",children:N.label}),N.description&&n.jsx(s.Text,{size:"xs",c:"dimmed","data-role":"description",children:N.description})]},N.value))})]})},$2=k.observer(({label:e,config:t,value:r,onChange:a})=>{const o=H(),l=!!t.options_query_id,{state:i,error:c}=o.getDataStuffByID(t.options_query_id),d=i==="loading",u=t.min_width?t.min_width:"200px",p=l?d:!1,g=h.useMemo(()=>t.initialSelection(r),[r,t.initialSelection]),b=_=>a(_,!1);return n.jsx(P2,{label:e,options:t.options,style:{minWidth:"160px",width:u,maxWidth:p?u:"unset",borderColor:"#e9ecef"},disabled:p,value:[...g],onChange:b,errorMessage:c,required:t.required})}),A2=({option:e,...t})=>{const{label:r,description:a}=e;return n.jsx("div",{...t,children:n.jsx(s.Group,{wrap:"nowrap",children:n.jsxs("div",{children:[n.jsx(s.Text,{size:"sm","data-role":"label",children:r}),n.jsx(s.Text,{size:"xs",c:"dimmed","data-role":"description",children:a})]})})})},E2=k.observer(({label:e,config:t,value:r,onChange:a})=>{const{t:o}=m.useTranslation(),l=H(),i=!!t.options_query_id,{state:c,error:d}=l.getDataStuffByID(t.options_query_id),u=c==="loading",p=h.useCallback((g,b)=>{g&&a(g,!1)},[a]);return n.jsx(s.Select,{label:e,data:t.options,disabled:i?u:!1,value:r,onChange:p,maxDropdownHeight:500,styles:{root:{width:t.width?t.width:"200px"},input:{borderColor:"#e9ecef"}},sx:{".mantine-Select-item[data-selected] .mantine-Text-root[data-role=description]":{color:"rgba(255,255,255,.7)"},".mantine-Select-nothingFound":{fontSize:"0.75rem",textAlign:"left",padding:"4px 10px"}},renderOption:A2,searchable:!d,nothingFoundMessage:d||o("filter.widget.common.selector_option_empty"),clearable:t.clearable})});function B2({label:e,config:t,value:r,onChange:a}){return n.jsx(s.TextInput,{label:e,value:r||"",onChange:o=>a(o.currentTarget.value),...t,styles:{input:{borderColor:"#e9ecef"}}})}const q2=({value:e,handleRangeChange:t})=>{const r=e.value,[a,o]=r,l=h.useMemo(()=>a||new Date,[a]),i=h.useMemo(()=>{if(a&&!o)return a},[a,o]),c=h.useMemo(()=>M().add(365,"days").toDate(),[]);return n.jsx(wt.DatePicker,{defaultDate:l,numberOfColumns:2,type:"range",value:r,onChange:t,onNextMonth:console.log,minDate:i,maxDate:c,allowSingleDateInRange:!0})};function Wa(e,t){if(!e)return null;const r=M(e);switch(t){case"day":case"week":case"month":case"quarter":return r.startOf(t);case"bi-week":return r.startOf("week").subtract(1,"week");default:throw new Error(`[merico-date-range] unexpected date-range step: ${t}`)}}function Ua(e,t){if(!e)return null;const r=M(e);switch(t){case"day":case"week":case"month":case"quarter":return r.endOf(t);case"bi-week":return r.endOf("week");default:throw new Error(`[merico-date-range] unexpected date-range step: ${t}`)}}function L2(e,t){if(!e)return null;const r=Wa(e,t),a=Ua(e,t);return{start:r,end:a}}function O2(e,t,r,a){if(!t)return!1;const[o]=r,l=Wa(t,a),i=Ua(t,a),c=M(e).isBefore(i);return o?M(e).isAfter(o)&&c:M(e).isAfter(l)&&c}function N2(e,t,r){if(!t)return!1;const[a]=r;return a?e.isSame(a,"day"):e.isSame(t,"day")}function G2(e,t){return t?e.isSame(t,"day"):!1}function F2(e,t){const[r,a]=t;if(!r||!a)return{inRange:!1,firstInRange:!1,lastInRange:!1,selected:!1};const o=e.isSame(r,"day"),l=e.isSame(a,"day");return{inRange:e.isBetween(r,a,"day","[]"),firstInRange:o,lastInRange:l,selected:o||l}}const Q2=(e,t,r)=>{const a=e.step,[o,l]=h.useState(null),[i,c]=h.useState(e.value),d=(_,w)=>{if(!_||!w)return;const[x,S]=i,D=_.toDate(),z=w.toDate();if(x===null){c([D,null]);return}const A=D.getTime()<x.getTime()?[D,S]:[x,z];c(A),t(A)};h.useEffect(()=>{c(e.value)},[e]),h.useEffect(()=>{c([null,null])},[r]);const u=h.useMemo(()=>r?null:i[0]?M(i[0]):null,[i,r]),p=h.useMemo(()=>r?null:i[0]?M(i[0]).add(365,"days"):null,[i,r]),g=h.useCallback(_=>{const w=M(_);return F2(w,e.value)},[r,e.value]),b=h.useCallback(_=>{const w=M(_),x=u&&p&&(w.isBefore(u)||w.isAfter(p)),S=!o&&i[0]?i[0]:o,D=L2(S,a);if(!D)return{onMouseEnter:()=>l(_),onMouseLeave:()=>l(null),inRange:!1,firstInRange:!1,lastInRange:!1,selected:!1,disabled:x};if(w.format("MM-DD"),x)return{onMouseEnter:y.noop,onMouseLeave:y.noop,inRange:!1,firstInRange:!1,lastInRange:!1,selected:!1,disabled:!0};const{start:z,end:I}=D,A=N2(w,z,i),E=G2(w,I),U=O2(_,S,i,a),N=U&&A,oe=U&&E,be=w.isBefore(u)||w.isAfter(p);return{onMouseEnter:()=>l(_),onMouseLeave:()=>l(null),inRange:U,firstInRange:N,lastInRange:oe,selected:A||E,onClick:()=>d(z,I),disabled:be}},[o,t,a,r,u,p,i]);return{getDayProps:r?g:b}},j2=({value:e,onChange:t,handleRangeChange:r})=>{const[a,o]=h.useState(!0),l=e.value,[i,c]=l,d=h.useMemo(()=>i||new Date,[i]),{getDayProps:u}=Q2(e,r,a),p=()=>{o(!1)},g=()=>{o(!!i&&!!c)};return n.jsx(wt.Calendar,{defaultDate:d,numberOfColumns:2,withCellSpacing:!1,getDayProps:u,onMouseEnter:p,onMouseLeave:g,hideOutsideDates:!0})},W2=({value:e,handleRangeChange:t})=>{const r=e.value,[a,o]=r,l=h.useMemo(()=>a||new Date,[a]),i=h.useMemo(()=>{if(a&&!o)return a},[a,o]),c=h.useMemo(()=>M().add(365,"days").toDate(),[]);return n.jsx(wt.MonthPicker,{defaultDate:l,numberOfColumns:2,type:"range",value:r,onChange:t,minDate:i,maxDate:c,allowSingleDateInRange:!0})},qn={calendar_header:"_calendar_header_xr0sl_1",months_list:"_months_list_xr0sl_5",months_list_row:"_months_list_row_xr0sl_12",months_list_control:"_months_list_control_xr0sl_25"},U2=({value:e,handleRangeChange:t})=>{const r=e.value,[a,o]=r,l=h.useMemo(()=>a||new Date,[a]),i=h.useMemo(()=>{if(a&&!o)return a},[a,o]),c=h.useMemo(()=>M(a).add(365,"days").subtract(1,"second").toDate(),[a]),d=h.useMemo(()=>o?M(o):null,[o]),u=h.useCallback(p=>d&&M(p).isSame(d,"quarter")?{lastInRange:!0,selected:!0}:{},[d]);return n.jsx(wt.MonthPicker,{classNames:{calendarHeader:qn.calendar_header,monthsList:qn.months_list,monthsListRow:qn.months_list_row,monthsListControl:qn.months_list_control},defaultDate:l,numberOfColumns:2,type:"range",value:r,onChange:t,minDate:i,maxDate:c,allowSingleDateInRange:!0,maxLevel:"year",monthsListFormat:"Q",getMonthControlProps:u})},K2=({value:e,onChange:t,onClose:r})=>{const a=l=>{const[i,c]=l,d=Wa(i,e.step),u=Ua(c,e.step);t([(d==null?void 0:d.toDate())??null,(u==null?void 0:u.toDate())??null]),i&&c&&r()},o=e.step;return o==="day"?n.jsx(q2,{value:e,handleRangeChange:a}):o==="week"||o==="bi-week"?n.jsx(j2,{value:e,onChange:t,handleRangeChange:a}):o==="month"?n.jsx(W2,{value:e,handleRangeChange:a}):o==="quarter"?n.jsx(U2,{value:e,handleRangeChange:a}):`错误的步长:${o}`},Y2=({begin:e,end:t})=>{const{t:r}=m.useTranslation(),a=h.useMemo(()=>!t&&!e?Number.NaN:M(t).diff(M(e),"days")+1,[e,t]);if(Number.isNaN(a))return n.jsx("span",{style:{userSelect:"none",opacity:0,visibility:"hidden"},children:"."});const o=a===1?r("filter.widget.date_range.one_day"):r("filter.widget.date_range.x_days",{count:a});return n.jsx(s.Tooltip,{label:o,children:n.jsx(s.Badge,{size:"sm",variant:"light",children:a})})},Ka={begin:"_begin_1cder_1",end:"_end_1cder_27",step:"_step_1cder_52"},xc=({label:e,value:t,onChange:r,className:a})=>{const{t:o,i18n:l}=m.useTranslation(),i=h.useMemo(()=>[{label:o("filter.widget.date_range.step.day"),value:"day"},{label:o("filter.widget.date_range.step.week"),value:"week"},{label:o("filter.widget.date_range.step.bi_week"),value:"bi-week"},{label:o("filter.widget.date_range.step.month"),value:"month"},{label:o("filter.widget.date_range.step.quarter"),value:"quarter"}],[o]),c=d=>{d&&r(d)};return n.jsx(s.Select,{className:a,label:e,data:i,value:t,onChange:c})},X2=({onChange:e,step:t,onClose:r})=>{const{t:a,i18n:o}=m.useTranslation(),l=d=>()=>{const u=d(t);e(u),r()},i=h.useMemo(()=>Ni(t),[t]),c=o.language==="zh";return n.jsxs(n.Fragment,{children:[n.jsx(s.Divider,{variant:"dashed",my:10}),n.jsx(s.Table,{withTableBorder:!1,sx:{"tbody > tr":{border:"none"},"tbody > tr > th, tbody > tr > td":{borderTop:"none",padding:"2px 6px"},"tbody > tr > th":{cursor:"default",userSelect:"none"},td:{paddingLeft:"1px"}},children:n.jsx(s.Table.Tbody,{children:Object.entries(i).map(([d,u])=>n.jsxs(s.Table.Tr,{children:[n.jsx(s.Table.Th,{w:80,children:n.jsx(s.Text,{size:"xs",c:"#555",fw:500,sx:{textAlignLast:"justify"},children:a(`filter.widget.date_range.shortcut.${d}.label`)})}),u.map(({key:p,value:g,getRange:b})=>n.jsx(s.Table.Td,{children:n.jsx(s.Button,{size:"compact-xs",variant:"subtle",onClick:l(b),children:a(`filter.widget.date_range.shortcut.${d}.${c?"full.":""}${p}`)})},p))]},d))})})]})},Cc=e=>({label:{display:"block",height:"21.7px"},input:{borderColor:e?"#228be6":"#e9ecef"}}),Z2=({label:e,required:t,value:r,onChange:a,inputFormat:o,disabled:l})=>{const{t:i}=m.useTranslation(),[c,{open:d,close:u}]=te.useDisclosure(!1),[p,g]=r.value,b=p?M(p).format(o):"",_=g?M(g).format(o):"",w=S=>{a({value:Ht(S[0],S[1],r.step),shortcut:null,step:r.step})},x=S=>{if(r.shortcut)return a(Rt(r.shortcut,S));a({value:Ht(r.value[0],r.value[1],S),shortcut:r.shortcut,step:S})};return n.jsxs(s.Popover,{opened:c,onClose:u,position:"bottom-start",shadow:"md",children:[n.jsxs(s.Group,{justify:"flex-start",align:"text-anchor",wrap:"nowrap",gap:0,sx:{marginTop:"3px"},children:[n.jsx(s.Popover.Target,{children:n.jsx(s.TextInput,{label:e,labelProps:{title:e},required:t,leftSection:n.jsx(T.IconCalendar,{size:16}),placeholder:i("filter.widget.date_range.start_date"),readOnly:!0,disabled:l,value:b,onFocus:d,styles:Cc(c),className:Ka.begin})}),n.jsx(s.TextInput,{label:n.jsx(s.Box,{children:" "}),leftSection:n.jsx(T.IconMinus,{size:16,onClick:d}),placeholder:i("filter.widget.date_range.end_date"),readOnly:!0,disabled:l,value:_,onFocus:d,styles:Cc(c),className:Ka.end}),n.jsx(xc,{className:Ka.step,value:r.step,onChange:x,label:n.jsx(s.Group,{justify:"flex-end",children:n.jsx(Y2,{begin:p,end:g})})})]}),n.jsxs(s.Popover.Dropdown,{p:"sm",children:[n.jsx(K2,{value:r,onChange:w,onClose:u}),n.jsx(X2,{onChange:a,step:r.step,onClose:u})]})]})},Sc={value:[null,null],shortcut:null,step:"day"},J2=e=>{const t=Rt(e.shortcut,e.step);return t||(Array.isArray(e.value)?e:Sc)},H2=e=>h.useMemo(()=>J2(e),[e]),R2=k.observer(({label:e,config:t,value:r=Sc,onChange:a,disabled:o})=>{const{inputFormat:l,required:i}=t,c=H2(r);return n.jsx(Z2,{label:e,value:c,onChange:a,inputFormat:l,required:i,disabled:o})}),ek=k.observer(({filter:{type:e,config:t,key:r,...a},formFieldProps:o})=>{switch(e){case P.Select:return n.jsx(E2,{...a,...o,config:t});case P.MultiSelect:return n.jsx($2,{...a,...o,config:t});case P.TreeSelect:return n.jsx(RT,{...a,...o,config:t});case P.TreeSingleSelect:return n.jsx(r2,{...a,...o,config:t});case P.TextInput:return n.jsx(B2,{...a,...o,config:t});case P.DateRange:return n.jsx(wc,{...a,...o,config:t});case P.MericoDateRange:return n.jsx(R2,{...a,...o,config:t});case P.Checkbox:return n.jsx(C2,{...a,...o,config:t});default:return null}}),tk=k.observer(h.forwardRef(({filter:e,...t},r)=>n.jsx("div",{className:"filter-root",ref:r,children:n.jsx(ne,{children:n.jsx(ek,{filter:e,formFieldProps:t})})}))),nk=({disabled:e,onSubmit:t,stale:r})=>{const{t:a}=m.useTranslation(),{renderSearchButton:o}=Ks();return o?o({disabled:e,onSubmit:t,stale:r}):n.jsxs(s.Button.Group,{children:[n.jsx(s.Button,{color:"blue",size:"sm",onClick:()=>t(),disabled:e,"data-stale":r||void 0,children:a("common.actions.search")}),n.jsxs(s.Menu,{trigger:"hover",disabled:e,position:"bottom-end",children:[n.jsx(s.Menu.Target,{children:n.jsx(s.Button,{disabled:e,color:"blue",px:"xs","data-stale":r||void 0,style:{borderLeft:`1px solid ${e?"white":"var(--mantine-color-gray-4)"}`},children:n.jsx(T.IconChevronDown,{size:16})})}),n.jsx(s.Menu.Dropdown,{children:n.jsx(s.Menu.Item,{leftSection:n.jsx(T.IconRefresh,{size:14}),disabled:e,onClick:()=>t({force:!0}),children:a("common.actions.reload")})})]})]})};function rk(e){const t=F();h.useEffect(()=>{var r,a;(a=(r=t.filters).updatePreviewValues)==null||a.call(r,e)},[e])}const Ya="N/A";function ak(){const e=Wt(),[t,r]=h.useState([]);return h.useEffect(()=>{const a=G.computed(()=>e.content.views.visibleViews.map(d=>{var u;return d.type===B.Tabs?(u=d.tabView)==null?void 0:u.view_id:d.id}).filter(Boolean).flatMap(d=>e.content.filters.visibleInView(d)).filter(Boolean).map(d=>sk(d)),{equals:G.comparer.structural}),o=G.autorun(()=>{r(a.get())});return()=>o()},[e]),t}function sk(e){switch(e.type){case P.Select:case P.MultiSelect:case P.TreeSelect:case P.TreeSingleSelect:return{label:e.label,value:ok(e.config,e.value)};case P.TextInput:return{label:e.label,value:e.value};case P.DateRange:return{label:e.label,value:lk(e.config,e.value)};case P.MericoDateRange:return{label:e.label,value:ik(e.config,e.value)};case P.Checkbox:return{label:e.label,value:ck(e.value)};default:return{label:e.label,value:e.value}}}function ok(e,t){const r=new Set;return Array.isArray(t)?t.forEach(a=>r.add(a)):r.add(t),r.size===0?Ya:e.options.filter(a=>r.has(a.value)).map(a=>a.label).join(", ")}function a6(e){return e}function lk(e,t){const a=ja(t).value.filter(o=>!!o).map(o=>M(o).format(e.inputFormat));return a.length===0?Ya:a.join(" - ")}function ik(e,t){const a=ja(t).value.filter(o=>!!o).map(o=>M(o).format(e.inputFormat));return a.length===0?Ya:a.join(" - ")}function ck(e){return e?"✔️":"❌"}const dk=({opened:e,toggle:t})=>{const{t:r}=m.useTranslation();return n.jsx(s.Group,{justify:"flex-end",ml:-4,mt:-4,mb:e?4:0,children:n.jsx(s.Button,{size:"compact-xs",variant:"subtle",color:e?"gray":"blue",leftSection:e?n.jsx(T.IconChevronsUp,{size:14}):n.jsx(T.IconChevronsDown,{size:14}),onClick:t,children:r(e?"filter.hide_filters":"filter.show_filters")})})},Tc=k.observer(function({view:t}){const[r,{toggle:a}]=te.useDisclosure(!0),o=H(),{control:l,handleSubmit:i,reset:c,formState:{isDirty:d}}=v.useForm({defaultValues:o.filters.values,reValidateMode:"onBlur"}),u=v.useWatch({control:l});h.useEffect(()=>{c(o.filters.values)},[o.filters.values,c]),rk(u);const p=o.filters.visibleInView(t.id),g=h.useMemo(()=>p.every(S=>S.should_auto_submit),[p]),b=h.useMemo(()=>p.filter(S=>y.get(S,"config.required",!1)),[p]),_=h.useMemo(()=>b.length===0?!1:b.some(S=>!S.requiredAndPass(u[S.key])),[u,b]),w=(S,D)=>(z,I)=>{D(z),(S.should_auto_submit||I)&&o.filters.setValueByKey(S.key,z)},x=h.useCallback(S=>{const D=y.get(S,"force",!1);i(o.filters.setValues)(),D&&o.queries.forceReloadVisibleQueries()},[i,o.filters.setValues]);return p.length===0?null:n.jsxs("form",{children:[n.jsx(dk,{opened:r,toggle:a}),n.jsx(s.Collapse,{in:r,children:n.jsxs(s.Group,{className:"dashboard-filters",justify:"space-between",wrap:"nowrap",sx:g?{}:{border:"1px solid #e9ecef",borderRadius:"4px",padding:"16px"},children:[n.jsx(s.Group,{align:"flex-start",children:p.map(S=>n.jsx(v.Controller,{name:S.key,control:l,render:({field:D})=>n.jsx(tk,{filter:S,value:D.value,onChange:w(S,D.onChange)})},S.id))}),!g&&n.jsx(s.Group,{sx:{alignSelf:"flex-end"},children:n.jsx(nk,{disabled:_,onSubmit:x,stale:d})})]})})]})}),kc={withInteraction:!0,withAddon:!0,withPanelTitle:!0},Dc=h.createContext(kc);function uk({children:e,...t}){const r=y.defaults({},t,kc);return n.jsx(Dc.Provider,{value:r,children:e})}function Ln(){return h.useContext(Dc)}function pk(e){return e?["<p><br></p>","<p></p>"].includes(e):!0}const hk=k.observer(()=>{const e=H(),{panel:t}=re(),r=h.useMemo(()=>ft(t.description,t.json.variables,e.payloadForViz,t.data),[t.data,t.description,t.json.variables,e.payloadForViz]);return n.jsx($t,{value:r,styles:{root:{border:"none"},content:{padding:0}},sx:{".mantine-RichTextEditor-content .ProseMirror":{padding:"0 !important"}},dashboardStateValues:e.dashboardStateValues,variableAggValueMap:t.variableAggValueMap})}),Xa=k.observer(()=>{const{t:e}=m.useTranslation(),[t,r]=h.useState(!1),{panel:a}=re();return pk(a.description)?null:n.jsxs(n.Fragment,{children:[n.jsx(s.Modal,{opened:t,onClose:()=>r(!1),title:a.title.show?a.name:"",withCloseButton:!1,withinPortal:!0,zIndex:310,children:n.jsx(hk,{})}),n.jsx(s.Tooltip,{label:e("panel.panel_description_click"),position:"top-start",withinPortal:!0,children:n.jsx(s.ActionIcon,{variant:"subtle",color:"blue",onClick:()=>r(o=>!o),sx:{verticalAlign:"baseline",cursor:"pointer"},children:n.jsx(T.IconInfoCircle,{size:20})})})]})}),s6="",gk=k.observer(function(){const{panel:t}=re(),{name:r,title:a}=t;return a.show?n.jsx(s.Group,{"data-testid":"panel-title-bar",grow:!0,justify:"center",className:"panel-title-wrapper",sx:{flexGrow:1},children:n.jsx(s.Text,{size:"sm",ta:"center",lineClamp:1,className:"panel-title-text",children:r})}):null}),Za=h.createContext({onScreenshot:y.noop});function fk(e){const t=h.useRef(null),{onScreenshot:r}=h.useContext(Za);return{ref:t,downloadPanelScreenshot:()=>{const o=t.current;if(!o)return;const l=o.offsetWidth*2,i=o.offsetHeight*2;As.toCanvas(t.current,{bgcolor:"white",width:l,height:i,style:{border:"none",borderRadius:0,transformOrigin:"0 0",transform:"scale(2)"}}).then(c=>(r(c),c)).then(c=>new Promise(d=>{c.toBlob(u=>{d(u)})})).then(c=>{window.saveAs(c,`${e.name?e.name:e.viz.type}.png`)})}}}var zc=(e=>(e.migrated="migrated",e.nothingToMigrate="nothingToMigrate",e.checkFailed="checkFailed",e.migrationFailed="migrationFailed",e))(zc||{}),On=(e=>(e.notStarted="notStarted",e.inProgress="inProgress",e.done="done",e))(On||{});class bk{constructor(t){V(this,"vizInstance");V(this,"operationManager");V(this,"triggerManager");V(this,"vizManager");V(this,"runningMigration");V(this,"panelModel");V(this,"status","notStarted");this.panelModel=t.getRequired(ee.instanceScope.panelModel),this.vizInstance=t.getRequired(ee.instanceScope.vizInstance),this.operationManager=t.getRequired(ee.instanceScope.operationManager),this.triggerManager=t.getRequired(ee.instanceScope.triggerManager),this.vizManager=t.getRequired(ee.vizManager)}async createMigrationTask(){const t=[];try{await this.instanceNeedMigration()&&t.push(()=>this.runInstanceMigration()),await this.interactionNeedMigration()&&t.push(()=>this.runInteractionMigration())}catch(r){return console.warn("check migration failed",r),"checkFailed"}if(t.length===0)return"nothingToMigrate";try{return await Promise.all(t.map(r=>r())),"migrated"}catch(r){return console.warn("migration failed",r),"migrationFailed"}}async runMigration(){return this.runningMigration||(this.status="inProgress",this.runningMigration=this.createMigrationTask().then(t=>(this.status="done",t))),this.runningMigration}async runInteractionMigration(){await this.operationManager.runMigration(),await this.triggerManager.runMigration()}async runInstanceMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),r={configData:this.vizInstance.instanceData,panelModel:this.panelModel};await t.migrator.migrate(r)}async instanceNeedMigration(){const t=this.vizManager.resolveComponent(this.vizInstance.type),r={configData:this.vizInstance.instanceData};return t.migrator.needMigration(r)}async interactionNeedMigration(){return await this.operationManager.needMigration()||await this.triggerManager.needMigration()}}class yk{getTriggerSchemaList(){return[]}getTriggerList(){return Promise.resolve([])}removeTrigger(){return Promise.resolve()}createOrGetTrigger(){return Promise.resolve(Mc)}retrieveTrigger(){return Promise.resolve(Mc)}watchTriggerSnapshotList(){return()=>{}}needMigration(){return Promise.resolve(!1)}runMigration(){return Promise.resolve()}}class vk{constructor(){V(this,"id","");V(this,"schemaRef","");V(this,"triggerData",new ln({}))}}const Mc=new vk;class _k{getOperationSchemaList(){return[]}getOperationList(){return Promise.resolve([])}removeOperation(){return Promise.resolve()}createOrGetOperation(){return Promise.resolve(Ic)}runOperation(){return Promise.resolve()}retrieveTrigger(){return Promise.resolve(Ic)}runMigration(){return Promise.resolve()}needMigration(){return Promise.resolve(!1)}}class mk{constructor(){V(this,"id","");V(this,"schemaRef","");V(this,"operationData",new ln({}))}}const Ic=new mk,Wn=class Wn{constructor(){V(this,"triggerManager",new yk);V(this,"operationManager",new _k)}getInteractionList(){return Promise.resolve([])}addInteraction(){return Promise.resolve()}removeInteraction(){return Promise.resolve()}runInteraction(){return Promise.resolve()}};V(Wn,"instance",new Wn);let Ja=Wn;function Vc(e,t=!0){const{panel:r}=re();return h.useCallback(a=>{const o=a.getRequired(ee.vizManager),l=o.resolveComponent(e.viz.type);return a.createScoped().provideFactory(ee.instanceScope.vizInstance,()=>o.getOrCreateInstance(e)).provideFactory(ee.instanceScope.interactionManager,i=>{const c=i.getRequired(ee.instanceScope.vizInstance);return t?new Oo(c,l,kr):new Ja}).provideFactory(ee.instanceScope.operationManager,i=>i.getRequired(ee.instanceScope.interactionManager).operationManager).provideFactory(ee.instanceScope.triggerManager,i=>i.getRequired(ee.instanceScope.interactionManager).triggerManager).provideValue(ee.instanceScope.panelModel,r).provideFactory(ee.instanceScope.migrator,i=>new bk(i))},[e.viz.type,e.viz.conf,t])}function Pc(e){const[t,r]=h.useState(!1),a=Xt().getRequired(ee.instanceScope.migrator);return O.useAsyncEffect(async()=>{const o=a.status===On.notStarted;r(a.status===On.done),a.status===On.notStarted&&a.runMigration().then(l=>{l===zc.migrated&&o&&(e==null||e())}).finally(()=>{r(!0)})},[a]),t}function $c(e,t){const r=Xt().getRequired(ee.instanceScope.vizInstance);return O.useAsyncEffect(async()=>{y.isEqual(await r.instanceData.getItem(null),t.viz.conf)||await r.instanceData.setItem(null,t.viz.conf)},[r,t.viz.conf]),h.useEffect(()=>r.instanceData.watchItem(null,a=>{e(a)}),[e,t.viz.type]),r}function wk({setVizConf:e,...t}){const{panel:r}=t,a=$c(e,r),o=Pc(()=>{Fe.showNotification({title:`${r.name} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})});return O.useAsyncEffect(async()=>{await a.instanceData.setItem(null,r.viz.conf)},[a,r.viz.type]),o?n.jsx(ju,{...t}):n.jsx(s.Text,{size:"sm",children:"Checking update..."})}function xk(e){const{panel:t,setVizConf:r}=e;$c(r,t);const{inEditMode:a}=h.useContext(St);return Pc(()=>{a&&Fe.showNotification({title:`${t.name} - Updated`,message:"Your plugin configuration has been migrated to the latest version"})})?n.jsx(Qu,{...e}):n.jsx(s.Text,{size:"sm",children:"Checking update"})}const o6="";function Ck(e,t){const{vizManager:r}=h.useContext(ot),{panel:{viz:a,title:o,id:l,name:i,description:c,queryIDs:d,variables:u}}=re(),p={id:l,name:i,title:o,description:c,queryIDs:d,viz:a},{withInteraction:g}=Ln(),b=Vc(p,g);try{return r.resolveComponent(a.type),n.jsxs(vn,{configure:b,children:[n.jsx(xk,{setVizConf:a.setConf,panel:p,measure:t,data:e,variables:u,vizManager:r}),n.jsx(Ec,{})]})}catch(_){return console.info(y.get(_,"message")),null}}const Ac=k.observer(function({data:t}){const{ref:r,width:a,height:o}=te.useElementSize(),l=Ck(t,{w:a,h:o}),i=a>0&&o>0;return n.jsx("div",{className:"viz-root",ref:r,children:n.jsx(s.Box,{sx:{width:a,height:o,overflow:"hidden"},children:i&&n.jsx(ne,{children:l})})})});function Sk(e){const{setEchartsOptions:t}=re();h.useEffect(()=>{const r=o=>{t(o)},a=e.messageChannels.getChannel("viz");return a.on("rendered",r),()=>{a.off("rendered",r)}},[e.messageChannels])}const Ec=()=>{const e=Xt(),t=e.getRequired(ee.instanceScope.vizInstance);Sk(t);const{inEditMode:r}=h.useContext(St),a=e.getRequired(ee.panelAddonManager),{withAddon:o}=Ln(),l=Hu();return!l||!o?null:Au.createPortal(n.jsx(n.Fragment,{children:a.createPanelAddonNode({viz:t,isInEditMode:r})}),l,"addon")},Bc=k.observer(({panel:e})=>n.jsxs(s.Stack,{children:[e.queryErrors.map((t,r)=>n.jsx(s.Text,{c:"red",size:"sm",ta:"center",ff:"monospace",children:t},`${r}-${t}`)),n.jsx(s.Text,{c:"gray",ta:"center",size:"sm",children:e.queryStateMessages})]})),Ha=k.observer(({panel:e})=>n.jsxs(s.Flex,{className:"panel-viz-section",direction:"column",sx:{position:"relative",width:"100%"},children:[n.jsx(s.LoadingOverlay,{visible:e.dataLoading,transitionProps:{exitDuration:0}}),!e.canRenderViz&&n.jsx(Bc,{panel:e}),e.canRenderViz&&n.jsx(Ac,{data:e.data})]}));function Tk(e){return!["richText","button","vizDashboardState"].includes(e)}const kk=k.observer(({children:e})=>n.jsx(n.Fragment,{children:n.jsxs(s.Menu,{withinPortal:!0,trigger:"hover",children:[n.jsx(s.Menu.Target,{children:n.jsx(s.ActionIcon,{variant:"subtle",color:"black",size:"md",style:{zIndex:410},children:n.jsx(T.IconDotsVertical,{size:14,style:{width:"70%",height:"70%"}})})}),n.jsx(s.Menu.Dropdown,{children:e})]})})),Dk=k.observer(({dropdownContent:e,showDropdownMenu:t,panelAddonSlotId:r})=>{const{withAddon:a,withPanelTitle:o}=Ln(),l=o&&t;return n.jsxs(s.Group,{className:"panel-top-right-actions",gap:"xs",wrap:"nowrap",justify:"flex-end",pos:"absolute",sx:{zIndex:410},children:[a&&r&&n.jsx("div",{id:r}),l&&e]})});function zk(e){const t=h.useRef(null),r=h.useCallback(a=>{t.current=a},[]);return h.useEffect(()=>{t.current=null},[e]),{getEchartsOptions:()=>t.current,setEchartsOptions:r}}const Mk={border:"1px solid #e9ecef"},Ra=k.observer(({panel:e,panelStyle:t,dropdownContent:r})=>{const{ref:a,downloadPanelScreenshot:o}=fk(e),{withAddon:l,withPanelTitle:i}=Ln(),c=l?`panel-addon-slot-${h.useId()}`:null,{getEchartsOptions:d,setEchartsOptions:u}=zk(e.viz.type),{inEditMode:p}=h.useContext(St),g=p||Tk(e.viz.type);return n.jsx(tr,{value:{panel:e,data:e.data,loading:e.dataLoading,errors:e.queryErrors,downloadPanelScreenshot:o,getEchartsOptions:d,setEchartsOptions:u},children:n.jsx(Fs,{addonSlotId:c||void 0,children:n.jsxs(s.Box,{id:e.id,"data-testid":"panel-root",className:`panel-root ${e.title.show?"panel-root--show-title":""}`,ref:a,p:0,sx:{...Mk,...t},children:[i&&n.jsxs(n.Fragment,{children:[n.jsx(s.Box,{className:"panel-description-popover-wrapper",children:n.jsx(Xa,{})}),n.jsx(gk,{})]}),n.jsx(Dk,{dropdownContent:n.jsx(kk,{children:r}),showDropdownMenu:g,panelAddonSlotId:c}),n.jsx(Ha,{panel:e})]})})})}),qc=k.observer(()=>{const{t:e}=m.useTranslation(),{panel:t}=re();return n.jsx(s.Menu.Item,{onClick:t.downloadData,leftSection:n.jsx(T.IconDownload,{size:14}),children:e("common.actions.download_data")})}),Lc=k.observer(()=>{const{t:e}=m.useTranslation(),{panel:t,downloadPanelScreenshot:r}=re();return n.jsx(s.Menu.Item,{onClick:r,leftSection:n.jsx(T.IconCamera,{size:14}),children:e("common.actions.download_screenshot")})}),Ik=k.observer(()=>{const{t:e}=m.useTranslation(),{panel:t}=re();return n.jsx(s.Menu.Item,{onClick:t.downloadSchema,leftSection:n.jsx(T.IconCode,{size:14}),children:e("common.actions.download_schema")})}),Vk={viewPanelInFullScreen:y.noop,inFullScreen:!1},es=h.createContext(Vk),Oc=k.observer(({view:e})=>{const{t}=m.useTranslation(),{panel:r}=re(),a=r.id,{viewPanelInFullScreen:o,inFullScreen:l}=h.useContext(es),i=h.useCallback(()=>{o(a)},[a,o]);return!l&&e.type!==B.Modal?n.jsx(s.Menu.Item,{onClick:i,leftSection:n.jsx(T.IconArrowsMaximize,{size:14}),disabled:!0,children:t("common.actions.enter_fullscreen")}):null}),Nc=k.observer(()=>{const{t:e}=m.useTranslation(),{panel:t}=re();return n.jsx(s.Menu.Item,{onClick:t.refreshData,leftSection:n.jsx(T.IconRefresh,{size:14}),children:e("common.actions.refresh")})}),Pk=e=>{const{items:t}=lr();return h.useMemo(()=>[{order:10,render:()=>n.jsx(Nc,{},"refresh")},{order:100,render:()=>n.jsx(qc,{},"download-data")},{order:300,render:()=>n.jsx(Lc,{},"download-screenshot")},{order:400,render:()=>n.jsx(Oc,{view:e},"enter-full-screen")},...t].sort((a,o)=>a.order-o.order),[t])},$k=k.observer(({view:e})=>{const{getEchartsOptions:t,panel:r}=re();return Pk(e).map(o=>o.render({getEchartsOptions:t,inEditMode:!1,panelID:r.id,viewID:e.id}))}),Ak=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=j(),o=()=>{a.editor.open(["_VIEWS_",t,"_PANELS_",e,"_TABS_","Panel"])};return n.jsx(s.Menu.Item,{onClick:o,leftSection:n.jsx(T.IconAppWindow,{size:14}),children:r("panel.label")})}),Ek=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=j(),o=()=>{a.editor.open(["_VIEWS_",t,"_PANELS_",e,"_TABS_","Variables"])};return n.jsx(s.Menu.Item,{onClick:o,leftSection:n.jsx(T.IconVariable,{size:14}),children:r("panel.variable.labels")})}),Bk=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=j(),o=()=>{a.editor.open(["_VIEWS_",t,"_PANELS_",e,"_TABS_","Visualization"])};return n.jsx(s.Menu.Item,{onClick:o,leftSection:n.jsx(T.IconChartHistogram,{size:14}),children:r("visualization.label")})}),qk=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=j(),o=()=>{a.editor.open(["_VIEWS_",t,"_PANELS_",e,"_TABS_","Interactions"])};return n.jsx(s.Menu.Item,{onClick:o,leftSection:n.jsx(T.IconRoute,{size:14}),children:r("interactions.label")})}),Lk=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=De.useModals(),o=F(),l=()=>a.openConfirmModal({title:`${r("panel.delete")}?`,labels:{confirm:r("common.actions.confirm"),cancel:r("common.actions.cancel")},onCancel:()=>console.log("Cancel"),onConfirm:()=>o.removePanelByID(e,t),confirmProps:{color:"red"},zIndex:320});return n.jsx(s.Menu.Item,{color:"red",onClick:l,leftSection:n.jsx(T.IconTrash,{size:14}),children:r("common.actions.delete")})}),Ok=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=F(),o=()=>{a.duplicatePanelByID(e,t)};return n.jsx(s.Menu.Item,{onClick:o,leftSection:n.jsx(T.IconCopy,{size:14}),children:r("common.actions.duplicate")})}),Nk=k.observer(({panelID:e,viewID:t})=>{const{t:r}=m.useTranslation(),a=j(),o=()=>{a.editor.open(["_VIEWS_",t,"_PANELS_",e,"_TABS_","Data"])};return n.jsx(s.Menu.Item,{onClick:o,leftSection:n.jsx(T.IconDatabase,{size:14}),children:r("data.label")})}),Gk=e=>{const{t}=m.useTranslation(),r=j(),{panel:a}=ae(),o=a.realQueryOptions,l=i=>{r.editor.open(["_QUERIES_",i])};return h.useMemo(()=>o.length===0?[]:[{order:500,render:()=>n.jsx(s.Divider,{label:t(o.length>1?"query.labels":"query.label"),labelPosition:"center"},"data-divider")},{order:501,render:()=>n.jsx(Nk,{panelID:a.id,viewID:e.id},"open-tab-data")},...o.map((i,c)=>({order:502+c,render:()=>n.jsx(s.Menu.Item,{onClick:()=>l(i.value),leftSection:n.jsx(T.IconDatabase,{size:14}),children:i.label},i.value)}))],[o])},Fk=e=>{const{t}=m.useTranslation(),{panel:r}=ae(),a=r.id,o=e.id,{items:l}=lr(),i=Gk(e);return h.useMemo(()=>[{order:10,render:()=>n.jsx(Nc,{},"refresh")},{order:100,render:()=>n.jsx(qc,{},"download-data")},{order:200,render:()=>n.jsx(Ik,{},"download-schema")},{order:300,render:()=>n.jsx(Lc,{},"download-screenshot")},{order:400,render:()=>n.jsx(Oc,{view:e},"enter-full-screen")},...i,{order:600,render:()=>n.jsx(s.Divider,{label:t("common.actions.edit"),labelPosition:"center"},"edit-divider")},{order:700,render:()=>n.jsx(Ak,{panelID:a,viewID:o},"open-tab-panel")},{order:800,render:()=>n.jsx(Ek,{panelID:a,viewID:o},"open-tab-variable")},{order:900,render:()=>n.jsx(Bk,{panelID:a,viewID:o},"open-tab-visualization")},{order:1e3,render:()=>n.jsx(qk,{panelID:a,viewID:o},"open-tab-interaction")},{order:1100,render:()=>n.jsx(s.Divider,{label:t("common.actions.actions"),labelPosition:"center"},"actions-divider")},{order:1200,render:()=>n.jsx(Ok,{panelID:a,viewID:o},"duplicate")},{order:1300,render:()=>n.jsx(Lk,{panelID:a,viewID:o},"delete-panel")},...l].sort((d,u)=>d.order-u.order),[i,l])},Qk=k.observer(({view:e})=>{const{getEchartsOptions:t,panel:r}=re();return Fk(e).map(o=>o.render({getEchartsOptions:t,inEditMode:!0,panelID:r.id,viewID:e.id}))}),jk={border:"1px dashed transparent",transition:"border-color 300ms ease","&:hover":{borderColor:"#e9ecef"}};function Wk(e){return e.style.border.enabled?{}:jk}const Gc=k.observer(function({panel:t,view:r}){const a=Wk(t);return n.jsx(Ra,{panel:t,panelStyle:a,dropdownContent:n.jsx(Qk,{view:r})})});function Uk(e){return e.style.border.enabled?{}:{border:"1px dashed transparent"}}const ts=k.observer(({panel:e,view:t})=>{const r=Uk(e);return n.jsx(Ra,{panel:e,panelStyle:r,dropdownContent:n.jsx($k,{view:t})})}),Kk={modal:{display:"flex",flexDirection:"column",flexWrap:"nowrap"},body:{display:"flex",height:"calc(100vh - 88px)"}},Fc=k.observer(function({view:t,panel:r,exitFullScreen:a}){return n.jsx(s.Modal,{opened:!0,fullScreen:!0,onClose:a,title:n.jsx(s.Button,{color:"blue",size:"xs",onClick:a,leftSection:n.jsx(T.IconArrowLeft,{size:20}),children:"Exit fullscreen"}),styles:Kk,children:n.jsx(s.Group,{grow:!0,sx:{flexGrow:1,flexShrink:0},children:n.jsx(ts,{view:t,panel:r})})})});function Qc(e,t,r){const{panels:a}=H(),o=e.id==="Main",[l,i]=h.useState(()=>o&&a.findByID(t)?t:null),c=h.useCallback(g=>{i(g),o&&r(g)},[o,r]),d=h.useCallback(()=>{i(null),o&&r("")},[o,r]),u=l?a.findByID(l):null;return{viewPanelInFullScreen:c,exitFullScreen:d,inFullScreen:!!u,fullScreenPanel:u}}function Yk(e){const t=Wt(),r=h.useMemo(()=>t.content.panels.findByID(e.panelId),[e.panelId]);return r?n.jsx(uk,{withAddon:!1,withPanelTitle:!1,withInteraction:!1,children:n.jsx(Ra,{panel:r,panelStyle:{}})}):null}const l6="",Xk=h.forwardRef(({title:e},t)=>n.jsx(s.Box,{ref:t,className:"react-grid-customDragHandle",title:e,children:n.jsx(s.ActionIcon,{variant:"transparent",color:"gray",children:n.jsx(T.IconMenu2,{size:16})})})),Zk=h.forwardRef(({handleAxis:e,...t},r)=>n.jsx(s.ActionIcon,{ref:r,className:"react-grid-customResizeHandle",sx:{userSelect:"none",cursor:"nwse-resize",position:"absolute",bottom:0,right:0,zIndex:400,"&:hover":{color:"#228be6"}},variant:"transparent",...t,children:n.jsx(T.IconChevronDownRight,{size:16})})),Jk=on.WidthProvider(on.Responsive),Hk=k.observer(({view:e,className:t="layout"})=>{const{t:r}=m.useTranslation(),o=F().layouts,l=o.items(e.panelIDs),i=o.gridLayouts(e.panelIDs),c=(p,g,b,_)=>{b.h<30&&(b.h=30,_.h=30),b.w<4&&(b.w=4,_.w=4)},d=(p,g,b)=>{console.log("🔴 onResizeStop",{layouts:p,oldItem:g,newItem:b}),o.updateCurrentLayoutItem(b)},u=(p,g,b)=>{console.log("🔴 onDragStop",{layouts:p,oldItem:g,newItem:b}),o.updateCurrentLayoutItems(p)};return n.jsx(Jk,{className:`dashboard-layout ${t}`,rowHeight:1,margin:[0,0],isBounded:!0,isDraggable:!0,isResizable:!0,cols:o.cols,layouts:i,draggableHandle:".react-grid-customDragHandle",resizeHandle:n.jsx(Zk,{}),onResize:c,breakpoints:o.breakpoints,onBreakpointChange:o.setCurrentBreakpoint,onResizeStop:d,onDragStop:u,width:o.currentLayoutPreviewWidth,children:l.map(p=>n.jsxs("div",{"data-grid":p.layoutProperies,className:"panel-grid-item",children:[n.jsx(Xk,{title:r("view.layout.drag_to_move")}),n.jsx(Gc,{view:e,panel:p.panel})]},p.id))})}),Rk=on.WidthProvider(on.Responsive),eD=k.observer(({view:e,className:t="layout"})=>{const r=H(),a=r.layouts.items(e.panelIDs),o=r.layouts.gridLayouts(e.panelIDs);return n.jsx(Rk,{className:`dashboard-layout ${t}`,rowHeight:1,margin:[0,0],isDraggable:!1,isResizable:!1,cols:r.layouts.cols,layouts:o,breakpoints:r.layouts.breakpoints,onBreakpointChange:r.layouts.setCurrentBreakpoint,children:a.map(l=>l.panel.usingGhostViz?null:n.jsx("div",{"data-grid":l.layoutProperies,className:"panel-grid-item",children:n.jsx(ts,{view:e,panel:l.panel})},l.id))})});function ns(e){const t=h.useRef(null),{onScreenshot:r}=h.useContext(Za);return{ref:t,downloadScreenshot:()=>{var l;const o=(l=t.current)==null?void 0:l.querySelector(".react-grid-layout");o&&e.downloadScreenshot(o,r)}}}const tD=k.observer(({downloadScreenshot:e})=>{const{t}=m.useTranslation(),[r,{setTrue:a,setFalse:o}]=O.useBoolean(!1),l=Ws(),i=H(),c=()=>{const d=JSON.stringify(i.contentJSON,null,2),u=`${l.name}__${i.name}`;Gt(u,d)};return n.jsxs(s.Menu,{shadow:"md",width:200,trigger:"hover",openDelay:200,closeDelay:400,withinPortal:!0,position:"bottom-end",children:[n.jsx(s.Menu.Target,{children:n.jsx(s.Affix,{position:{bottom:"20px",right:"10px"},zIndex:1,children:n.jsx(s.ActionIcon,{size:"md",variant:"gradient",gradient:{from:"indigo",to:"cyan"},onMouseEnter:a,onMouseLeave:o,sx:{opacity:r?1:.6,transform:`translateX(${r?0:"2px"})`,transition:"all ease 300ms",borderRadius:"50%"},children:n.jsx(T.IconShare3,{size:"1rem"})})})}),n.jsxs(s.Menu.Dropdown,{children:[n.jsx(s.Menu.Item,{leftSection:n.jsx(T.IconCamera,{size:14}),onClick:e,children:t("common.actions.download_screenshot")}),n.jsx(s.Menu.Divider,{}),n.jsx(s.Menu.Item,{leftSection:n.jsx(T.IconDownload,{size:14}),onClick:i.queries.downloadAllData,children:t("common.actions.download_data")}),n.jsx(s.Menu.Item,{leftSection:n.jsx(T.IconCode,{size:14}),onClick:c,children:t("common.actions.download_schema")})]})]})}),jc=k.observer(({children:e,view:t,sx:r={}})=>{const{ref:a,downloadScreenshot:o}=ns(t);return n.jsxs(n.Fragment,{children:[n.jsx(s.Box,{ref:a,pt:10,pb:10,sx:r,children:e}),n.jsx(tD,{downloadScreenshot:o})]})}),Wc=k.observer(({downloadScreenshot:e})=>n.jsx(s.ActionIcon,{className:"download-screenshot-button",color:"blue",variant:"subtle",onClick:e,children:n.jsx(T.IconCamera,{size:14})})),nD=k.observer(({children:e,view:t})=>{const r=H(),a=t.config,o=r.views.visibleViewIDs.includes(t.id),l=()=>r.views.rmVisibleViewID(t.id),{ref:i,downloadScreenshot:c}=ns(t);return n.jsx(s.Modal,{size:a.width,centered:!0,opened:o,onClose:l,withCloseButton:!1,title:n.jsxs(s.Group,{justify:"space-between",px:"1rem",h:"48px",children:[n.jsx(s.Box,{children:a.custom_modal_title.value}),n.jsx(Wc,{downloadScreenshot:c})]}),trapFocus:!0,onDragStart:d=>{d.stopPropagation()},styles:{root:{position:"fixed",zIndex:200,inset:0},overlay:{zIndex:"unset"},inner:{zIndex:"unset",padding:"0 !important"},content:{border:"1px solid #efefef",maxHeight:"unset !important",overflow:"hidden"},body:{maxHeight:a.height,overflow:"auto",position:"relative",paddingBottom:10},header:{padding:0},title:{flexGrow:1}},transitionProps:{duration:0},children:n.jsx(s.Box,{ref:i,children:e})})}),rD=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},aD=k.observer(({view:e})=>{const t=H(),r=e.config;return n.jsxs(s.Tabs,{className:"render-view-tabs",variant:r.variant,orientation:r.orientation,value:e.tab,onChange:e.setTab,styles:{root:{height:"100%",overflow:r.orientation==="horizontal"?"hidden":"auto"},panel:{padding:r.orientation==="horizontal"?"0px 0px 36px":"0",height:"100%",overflow:"auto"}},keepMounted:!1,children:[n.jsx(s.Tabs.List,{grow:r.grow,children:r.tabsInOrder.map(a=>n.jsx(s.Tabs.Tab,{value:a.id,sx:rD(a),disabled:!a.view_id,children:a.name??a.id},a.id))}),r.tabsInOrder.map(a=>{const o=t.views.findByID(a.view_id);return o?n.jsx(s.Tabs.Panel,{value:a.id,children:n.jsx(Nn,{view:o})},a.id):null})]})}),sD=k.observer(({view:e,children:t})=>{switch(e.type){case B.Modal:return n.jsx(nD,{view:e,children:t});case B.Tabs:return n.jsx(aD,{view:e});case B.Division:default:return n.jsx(jc,{view:e,children:t})}}),oD=k.observer(({children:e,view:t})=>{const a=F().layouts,[o,l]=te.useResizeObserver();return h.useEffect(()=>{a.setCurrentLayoutWrapperWidth(l.width)},[l.width]),n.jsx(s.Box,{sx:{height:"100%"},ref:o,children:n.jsx(s.Box,{sx:{paddingBottom:"100px",background:"white",margin:"0 auto",width:a.currentLayoutPreviewWidth??"100%",transform:`scale(${a.divisionPreviewScale})`,transformOrigin:"0 0"},children:n.jsx(jc,{view:t,sx:{paddingTop:"0px !important",".dashboard-sticky-area > form":{paddingBottom:"5px"},".dashboard-layout":{marginTop:0,marginBottom:0}},children:e})})})});function Uc(e){return e.replace(/(vw|vh)/,"%")}const lD=k.observer(({children:e,view:t})=>{const r=t.config,{width:a,height:o}=h.useMemo(()=>({width:Uc(r.width),height:Uc(r.height)}),[r.width,r.height]),{ref:l,downloadScreenshot:i}=ns(t);return n.jsx(s.Box,{sx:{height:"100%","> div:not(.mantine-Modal-root)":{height:"100%"}},children:n.jsx(s.Modal,{size:r.width,opened:!0,onClose:y.noop,withCloseButton:!1,title:n.jsxs(s.Group,{justify:"space-between",px:"1rem",h:"48px",children:[n.jsx(s.Box,{children:r.custom_modal_title.value}),n.jsx(Wc,{downloadScreenshot:i})]}),trapFocus:!0,onDragStart:c=>{c.stopPropagation()},styles:{root:{position:"relative",height:"100%"},overlay:{position:"absolute !important"},inner:{position:"relative",top:"50%",left:"50%",right:"unset",bottom:"unset",transform:"translate(-50%, -50%)",padding:"0 !important",width:a,height:o,maxHeight:o},content:{border:"1px solid #efefef",height:"100%"},body:{maxHeight:"calc(100% - 48px)",overflow:"auto"},header:{padding:0},title:{flexGrow:1}},withinPortal:!1,transitionProps:{duration:0},children:n.jsx(s.Box,{ref:l,children:e})})})}),iD=({variant:e,orientation:t})=>{const r={root:{height:"100%",overflow:"hidden"},list:{backgroundColor:"white"},tab:{},panel:{padding:"16px"}};return e==="pills"&&t==="horizontal"&&(r.tab.paddingTop="6px",r.tab.paddingBottom="6px"),t==="vertical"&&(r.tab["&.add-a-tab"]={paddingTop:"1px",paddingBottom:"1px"},r.tab["&.add-a-tab .mantine-Tabs-tabLabel"]={marginLeft:"auto",marginRight:"auto"}),r},cD=e=>e.color?{"&[data-active], &[data-active]:hover":{borderColor:e.color?e.color:"..."}}:{},dD=k.observer(({view:e})=>{const{t}=m.useTranslation(),r=De.useModals(),a=F(),o=h.useMemo(()=>a.views.options.filter(u=>u.type===B.Division),[e.id,a.views.options]),l=e.config,i=u=>r.openConfirmModal({title:`${t("view.component.tabs.tab.delete")}?`,labels:{confirm:t("common.actions.confirm"),cancel:t("common.actions.cancel")},onCancel:()=>console.log("Cancel"),onConfirm:()=>{l.removeTab(u),d&&e.setTab(d)},confirmProps:{color:"red"},zIndex:320}),c=l.tabs.length===0,d=l.tabsInOrder.length===0?void 0:l.tabsInOrder[0].id;return n.jsxs(s.Tabs,{className:"preview-view-tabs",variant:l.variant,orientation:l.orientation,value:e.tab||d,onChange:e.setTab,styles:iD(l),children:[n.jsxs(s.Tabs.List,{grow:l.grow,children:[l.tabsInOrder.map(u=>n.jsx(s.Tabs.Tab,{value:u.id,sx:cD(u),children:u.name??u.id},u.id)),n.jsx(s.Tabs.Tab,{onClick:l.addTab,value:"add",className:"add-a-tab",children:n.jsx(T.IconPlus,{size:18,color:"#228be6"})})]}),l.tabsInOrder.map((u,p)=>{const g=a.views.findByID(u.view_id);return n.jsxs(s.Tabs.Panel,{value:u.id,sx:{position:"relative"},children:[n.jsxs(s.Box,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:200},children:[n.jsx(s.Overlay,{backgroundOpacity:.8,color:"#FFF",blur:10,zIndex:100}),n.jsxs(s.Stack,{mx:"auto",mt:100,sx:{width:"300px",position:"relative",zIndex:200},children:[n.jsx(s.TextInput,{label:t("view.component.tabs.tab.name"),required:!0,value:u.name,onChange:b=>u.setName(b.currentTarget.value)}),n.jsx(s.Select,{label:t("view.label"),value:u.view_id,onChange:u.setViewID,data:o}),n.jsx(s.NumberInput,{label:t("view.component.tabs.tab.order"),required:!0,value:u.order,onChange:b=>u.setOrder(b||0),min:0,max:1e3,step:1}),n.jsx(s.ColorInput,{label:t("view.component.tabs.tab.color"),value:u.color,onChange:u.setColor,disabled:l.variant!=="default"}),g&&n.jsx(s.Button,{mt:20,variant:"gradient",leftSection:n.jsx(T.IconArrowsLeftRight,{size:18}),gradient:{from:"cyan",to:"indigo"},onClick:()=>a.views.setIDOfVIE(g.id),children:t("view.component.tabs.tab.switch_to_view",{name:g.name})}),n.jsx(s.Button,{mt:20,variant:"subtle",color:"red",onClick:()=>i(u.id),disabled:c,leftSection:n.jsx(T.IconTrash,{size:14}),children:t("view.component.tabs.tab.delete")})]})]}),g&&n.jsx(Nn,{view:g})]},u.id)})]})}),uD=k.observer(({view:e,children:t})=>{switch(e.type){case B.Modal:return n.jsx(lD,{view:e,children:t});case B.Tabs:return n.jsx(dD,{view:e});case B.Division:default:return n.jsx(oD,{view:e,children:t})}}),Kc=k.observer(function({view:t}){const a=F().layouts.divisionPreviewScale!==1;return n.jsx(es.Provider,{value:{viewPanelInFullScreen:y.noop,inFullScreen:!1},children:n.jsx(s.Box,{className:"dashboard-view","data-enable-scrollbar":!0,sx:{background:a?"transparent":"#efefef"},children:n.jsx(uD,{view:t,children:n.jsxs(s.Box,{sx:{position:"relative"},children:[n.jsx(s.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n.jsx(Tc,{view:t})}),n.jsx(Hk,{view:t})]})})})})}),Nn=k.observer(function({view:t}){const{fullScreenPanelID:r,setFullScreenPanelID:a}=Rs(),{viewPanelInFullScreen:o,exitFullScreen:l,inFullScreen:i,fullScreenPanel:c}=Qc(t,r,a);return n.jsx(es.Provider,{value:{viewPanelInFullScreen:o,inFullScreen:i},children:n.jsxs(s.Box,{className:"dashboard-view","data-enable-scrollbar":!0,sx:{height:t.type===B.Modal?"0 !important":"100%"},children:[i&&n.jsx(Fc,{view:t,panel:c,exitFullScreen:l}),n.jsx(sD,{view:t,children:n.jsxs(s.Box,{sx:{position:"relative"},children:[!i&&n.jsx(s.Box,{className:"dashboard-sticky-area",sx:{position:"sticky",top:"0px"},children:n.jsx(Tc,{view:t})}),!i&&n.jsx(eD,{view:t})]})})]})})});var Yc=(e=>(e.Use="use",e.Edit="edit",e))(Yc||{});const pD={[B.Division]:"Division",[B.Tabs]:"Tabs",[B.Modal]:"Modal"},Xc={[B.Division]:"rgba(255, 0, 0, 0.2)",[B.Modal]:"rgba(0, 0, 0, 0.2)",[B.Tabs]:"rgba(255, 200, 100, 0.4)"},hD={[B.Division]:"#ff4000",[B.Modal]:"#000",[B.Tabs]:"#ffad18"},Zc=An.views(e=>({get usages(){return e.contentModel.findFilterUsage(e.id)}})).actions(e=>({}));function gD(e,t,r){f.addDisposer(e,f.addMiddleware(e,(a,o)=>{o(a,()=>{f.getType(a.context)===t&&a.type==="action"&&r(a.name,a.context)})}))}const Jc=f.types.compose("FiltersModel",qa,f.types.model({current:f.types.optional(f.types.array(Zc),[]),previewValues:f.types.optional(f.types.frozen(),{})})).views(e=>({get idSet(){return new Set(e.current.map(t=>t.id))},get keySet(){return new Set(e.current.map(t=>t.key))},get options(){return e.current.map(t=>({label:t.label??t.id,value:t.id,_type:"filter"}))},get selects(){return e.current.filter(t=>t.type===P.Select).map(t=>({label:t.label??t.id,value:t.id}))},get keyLabelOptions(){return e.current.map(t=>({label:t.label??t.key,value:t.key,widget:t.type}))},get sortedList(){return y.sortBy(e.current,t=>t.label.toLowerCase())}})).actions(e=>({replace(t){e.current=f.cast(t)},append(t){e.current.push(t)},appendMultiple(t){if(t.length===0)return;const r=t.filter(a=>!e.idSet.has(a.id));e.current.push(...r)},remove(t){e.current.splice(t,1)},removeByID(t){const r=e.current.findIndex(a=>a.id===t);r>=0&&e.current.splice(r,1)},updatePreviewValues(t){e.previewValues=t}})).actions(e=>{function t(){gD(e.current,An,(r,a)=>{if(r==="setType"){const o=nc(a.config.default_value,a.config);e.setValueByKey(a.key,o),e.updatePreviewValues({...e.previewValues,[a.key]:o})}})}return{afterCreate(){t()}}}),Hc=Na.views(e=>({get canPreviewData(){return e.isTransform?e.config.dep_query_ids.length>0&&!!e.pre_process:!!e.datasource},get guideToPreviewData(){return e.isTransform?"Need to complete settings in Transform tab":"Need to pick a Data Source first"},get usage(){return e.contentModel.findQueryUsage(e.id)},get runBySet(){return new Set(e.run_by)},keyInRunBy(t){return this.runBySet.has(t)}})).actions(e=>({changeRunByRecord(t,r){const a=new Set(e.run_by);r?a.add(t):a.delete(t),e.run_by.length=0,e.run_by.push(...a)}})),Rc=f.types.compose("QueriesModel",Ga,f.types.model({current:f.types.optional(f.types.array(Hc),[])})).views(e=>({get options(){const t=e.current.map(r=>({value:r.id,label:r.name,_type:"query"}));return y.sortBy(t,r=>r.label.toLowerCase())},get optionsWithoutTransform(){const t=e.current.filter(r=>r.type!==W.Transform).map(r=>({value:r.id,label:r.name,_type:"query"}));return y.sortBy(t,r=>r.label.toLowerCase())},get sortedList(){return y.sortBy(e.current,t=>t.name.toLowerCase())}})).actions(e=>({replace(t){e.current=f.cast(t)},append(t){e.current.push(t)},appendMultiple(t){if(t.length===0)return;const r=t.filter(a=>!e.idSet.has(a.id));e.current.push(...r)},remove(t){e.current.splice(t,1)},replaceByIndex(t,r){e.current.splice(t,1,r)},removeQuery(t){const r=e.current.find(a=>a.id===t);r&&(f.detach(r),e.current.remove(r))},removeQueries(t){const r=new Set(t);e.current.forEach(o=>{r.has(o.id)&&f.detach(o)});const a=[...e.current];y.remove(a,o=>r.has(o.id)),e.current=f.cast(a)},duplicateByID(t){const r=e.current.find(o=>o.id===t);if(!r){console.error(new Error(`[duplicate query] Can't find a query by id[${t}]`));return}const a=Te.v4();return e.current.push({...r.json,name:`${r.name} (${a})`,id:a}),a}})),ed=Qa.views(e=>({get sortedList(){return y.sortBy(e.current,t=>t.key.toLowerCase())},get options(){const t=e.current.map(r=>({label:r.key,value:r.key,_type:"sql_snippet"}));return y.sortBy(t,r=>r.label.toLowerCase())},get usedFilterKeyMap(){const t=new Map;return e.current.forEach(r=>{const a=y.get(r,"value","");if(!a)return;const o=y.uniq(a.match(Et.filter)),l=new Set;o.forEach(i=>l.add(i)),t.set(r.key,l)}),t}})).actions(e=>({replace(t){e.current=f.cast(t)},append(t){e.current.push(t)},appendMultiple(t){if(t.length===0)return;const r=t.filter(a=>!e.keySet.has(a.key));e.current.push(...r)},remove(t){e.current.splice(t,1)},removeByKey(t){const r=e.current.findIndex(a=>a.key===t);r>=0&&e.current.splice(r,1)},removeByKeys(t){const r=new Set(t);e.current.forEach(o=>{r.has(o.key)&&f.detach(o)});const a=[...e.current];y.remove(a,o=>r.has(o.key)),e.current=f.cast(a)},replaceByIndex(t,r){e.current.splice(t,1,r)}})),fD=f.types.model({data:f.types.optional(f.types.frozen(),[]),state:f.types.optional(f.types.enumeration(["idle","loading","error"]),"idle"),error:f.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0}})),bD=f.types.model({data:f.types.optional(f.types.frozen(),[]),state:f.types.optional(f.types.enumeration(["idle","loading","error"]),"idle"),error:f.types.frozen()}).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0}})),yD=f.types.model({page:f.types.optional(f.types.number,1),limit:f.types.optional(f.types.number,20),data:f.types.optional(f.types.frozen(),[]),total:f.types.optional(f.types.number,0),state:f.types.optional(f.types.enumeration(["idle","loading","error"]),"idle"),error:f.types.frozen()}).views(e=>({get keywords(){return f.getParent(e,1)},get keywordString(){const{table_name:t,table_schema:r}=f.getParent(e,1);return`${r}||${t}`}})).views(e=>({get loading(){return e.state==="loading"},get empty(){return e.data.length===0},get maxPage(){return Math.ceil(e.total/e.limit)},get offset(){return(e.page-1)*e.limit},get countSql(){const{table_name:t,table_schema:r}=e.keywords;return`
|
|
544
544
|
SELECT count(*) AS total
|
|
545
545
|
FROM ${r}.${t}
|