bi-sdk-react 0.0.35 → 0.0.36
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/es/js/bi-sdk.es.js +4 -4
- package/dist/types/components/hooks/datasource.d.ts +7 -1
- package/dist/umd/js/bi-sdk.umd.min.js +4 -4
- package/package.json +1 -1
- package/src/components/hooks/datasource.ts +21 -19
- package/src/components/plugins/@antd/items/EchartsRender.tsx +6 -9
- package/src/components/plugins/@antd/items/HtmlRender.tsx +6 -5
- package/src/components/plugins/@antd/items/ListRender.tsx +4 -3
package/dist/es/js/bi-sdk.es.js
CHANGED
|
@@ -1008,7 +1008,7 @@ import*as e from"react";import t,{css as l}from"styled-components";import{AlignC
|
|
|
1008
1008
|
color: #999;
|
|
1009
1009
|
font-size: 12px;
|
|
1010
1010
|
}
|
|
1011
|
-
`,lu=
|
|
1011
|
+
`,lu=e=>{let{item:t,signal:l,consumer:n}=e,{fetch:r,getVars:a}=(0,eA.useContext)(eT);(0,eA.useEffect)(()=>{if(!(null==t?void 0:t.datasource))return void n(null);switch((null==t?void 0:t.datasource.source)||"custom"){case"custom":try{var e;n(JSON.parse((null==t||null==(e=t.datasource)?void 0:e.custom)||"[]"))}catch(e){n(null)}break;case"dataset":if(!(null==t?void 0:t.datasource.dataset)||!(null==r?void 0:r.dataset)){console.warn("dataset source detected but config or fetcher is missing",{datasetConfig:null==t?void 0:t.datasource.dataset,hasFetchDataset:!!(null==r?void 0:r.dataset)}),n(null);return}let l=a(t.id||"");r.dataset(null==t?void 0:t.datasource.dataset.id,l).then(e=>{n((null==e?void 0:e.data)||null)}).catch(e=>{console.error("dataset fetch error",e),n(null)});break;default:n(null)}},[null==t?void 0:t.datasource,l])},lp=t.div`
|
|
1012
1012
|
box-sizing: border-box;
|
|
1013
1013
|
margin: 0;
|
|
1014
1014
|
padding: 0;
|
|
@@ -1085,7 +1085,7 @@ import*as e from"react";import t,{css as l}from"styled-components";import{AlignC
|
|
|
1085
1085
|
const module = undefined;
|
|
1086
1086
|
const exports = undefined;
|
|
1087
1087
|
${e.customRender}
|
|
1088
|
-
`)(console,Math,Date,Array,Object,String,Number,Boolean,t,l,n):e.render})),m=()=>{console.log("callback table")};return(0,eA.useEffect)(()=>{u({id:l.id,callback:m})},[]),(0,eO.jsx)(ea,{id:t,dataSource:n,columns:x,pagination:p,bordered:i,size:o,showHeader:"boolean"!=typeof s||s,rowKey:(e,t)=>String(t),style:{padding:1,...d},className:c})},formComponent:e=>{let{model:t,onChange:l}=e,i=(e,n)=>l&&l({...t,[e]:n}),o=(e,l)=>{let n=[...t.columns||[]];n[e]={...n[e],...l},i("columns",n)},[s,d]=(0,eA.useState)(!1),[u,x]=(0,eA.useState)(null),m=null!=u&&t.columns[u]?t.columns[u]:{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1},h=[{title:"列名",dataIndex:"title"},{title:"数据索引",dataIndex:"dataIndex"},{title:"操作",width:80,align:"center",render:(e,l,n)=>(0,eO.jsxs)(en,{children:[(0,eO.jsx)("a",{onClick:()=>{x(n),d(!0)},children:(0,eO.jsx)(p,{})}),(0,eO.jsx)("a",{onClick:()=>{let e;(e=[...t.columns||[]]).splice(n,1),i("columns",e)},children:(0,eO.jsx)(c,{})})]})}];return(0,eO.jsxs)("div",{children:[(0,eO.jsxs)(K,{labelCol:{span:12},wrapperCol:{span:12},children:[(0,eO.jsx)(K.Item,{label:"大小",children:(0,eO.jsxs)(Z.Group,{size:"small",value:t.size,onChange:e=>i("size",e.target.value),children:[(0,eO.jsx)(Z.Button,{value:"small",children:"小"}),(0,eO.jsx)(Z.Button,{value:"middle",children:"中"}),(0,eO.jsx)(Z.Button,{value:"large",children:"大"})]})}),(0,eO.jsx)(K.Item,{label:"边框",children:(0,eO.jsx)(er,{size:"small",checked:!!t.bordered,onChange:e=>i("bordered",e)})}),(0,eO.jsx)(K.Item,{label:"显示表头",children:(0,eO.jsx)(er,{size:"small",checked:!!t.showHeader,onChange:e=>i("showHeader",e)})}),(0,eO.jsx)(K.Item,{label:"分页大小",children:(0,eO.jsx)(U,{size:"small",value:t.pageSize,onChange:e=>i("pageSize",e)})})]}),(0,eO.jsx)(H,{children:"表格列设置"}),(0,eO.jsx)(ea,{size:"small",dataSource:t.columns,rowKey:(e,t)=>String(t),columns:h,pagination:!1,bordered:!0}),(0,eO.jsx)(P,{size:"small",onClick:()=>{i("columns",[...t.columns||[],{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1}])},block:!0,children:"添加列"}),(0,eO.jsx)(q,{title:"编辑列",open:s,footer:null,width:400,onCancel:()=>d(!1),children:(0,eO.jsx)(K,{layout:"vertical",children:(0,eO.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,eO.jsx)(K.Item,{label:"列名",children:(0,eO.jsx)(W,{value:m.title,onChange:e=>o(u,{title:e.target.value})})}),(0,eO.jsx)(K.Item,{label:"数据索引",children:(0,eO.jsx)(W,{value:m.dataIndex,onChange:e=>o(u,{dataIndex:e.target.value})})}),(0,eO.jsx)(K.Item,{label:"宽度",children:(0,eO.jsx)(W,{value:m.width,onChange:e=>o(u,{width:e.target.value})})}),(0,eO.jsx)(K.Item,{label:"对齐",children:(0,eO.jsxs)(Z.Group,{value:m.align,onChange:e=>o(u,{align:e.target.value}),children:[(0,eO.jsx)(Z.Button,{value:"left",children:(0,eO.jsx)(r,{})}),(0,eO.jsx)(Z.Button,{value:"center",children:(0,eO.jsx)(n,{})}),(0,eO.jsx)(Z.Button,{value:"right",children:(0,eO.jsx)(a,{})})]})}),(0,eO.jsx)(K.Item,{label:"省略",children:(0,eO.jsx)(er,{checked:!!m.ellipsis,onChange:e=>o(u,{ellipsis:e})})})]})})})]})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:null},props:{size:"default",bordered:!0,showHeader:!0,pageSize:10,dataSource:[{name:"苹果",count:12},{name:"华为",count:803},{name:"OPPO",count:654},{name:"vivo",count:719}],columns:[{title:"品牌",dataIndex:"name"},{title:"日销量(件)",dataIndex:"count"}]}}},{group:"基础组件",key:"b-list",label:"列表",icon:"icon-unordered-list",component:e=>{let{id:t,pageSize:l=10,bordered:n=!0,size:r="default",itemLayout:a="horizontal",item:i,split:o=!0,style:s={},className:d}=e,{initCallback:c}=(0,eA.useContext)(eT),[u,p]=(0,eA.useState)(0),x=lu(i,u
|
|
1088
|
+
`)(console,Math,Date,Array,Object,String,Number,Boolean,t,l,n):e.render})),m=()=>{console.log("callback table")};return(0,eA.useEffect)(()=>{u({id:l.id,callback:m})},[]),(0,eO.jsx)(ea,{id:t,dataSource:n,columns:x,pagination:p,bordered:i,size:o,showHeader:"boolean"!=typeof s||s,rowKey:(e,t)=>String(t),style:{padding:1,...d},className:c})},formComponent:e=>{let{model:t,onChange:l}=e,i=(e,n)=>l&&l({...t,[e]:n}),o=(e,l)=>{let n=[...t.columns||[]];n[e]={...n[e],...l},i("columns",n)},[s,d]=(0,eA.useState)(!1),[u,x]=(0,eA.useState)(null),m=null!=u&&t.columns[u]?t.columns[u]:{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1},h=[{title:"列名",dataIndex:"title"},{title:"数据索引",dataIndex:"dataIndex"},{title:"操作",width:80,align:"center",render:(e,l,n)=>(0,eO.jsxs)(en,{children:[(0,eO.jsx)("a",{onClick:()=>{x(n),d(!0)},children:(0,eO.jsx)(p,{})}),(0,eO.jsx)("a",{onClick:()=>{let e;(e=[...t.columns||[]]).splice(n,1),i("columns",e)},children:(0,eO.jsx)(c,{})})]})}];return(0,eO.jsxs)("div",{children:[(0,eO.jsxs)(K,{labelCol:{span:12},wrapperCol:{span:12},children:[(0,eO.jsx)(K.Item,{label:"大小",children:(0,eO.jsxs)(Z.Group,{size:"small",value:t.size,onChange:e=>i("size",e.target.value),children:[(0,eO.jsx)(Z.Button,{value:"small",children:"小"}),(0,eO.jsx)(Z.Button,{value:"middle",children:"中"}),(0,eO.jsx)(Z.Button,{value:"large",children:"大"})]})}),(0,eO.jsx)(K.Item,{label:"边框",children:(0,eO.jsx)(er,{size:"small",checked:!!t.bordered,onChange:e=>i("bordered",e)})}),(0,eO.jsx)(K.Item,{label:"显示表头",children:(0,eO.jsx)(er,{size:"small",checked:!!t.showHeader,onChange:e=>i("showHeader",e)})}),(0,eO.jsx)(K.Item,{label:"分页大小",children:(0,eO.jsx)(U,{size:"small",value:t.pageSize,onChange:e=>i("pageSize",e)})})]}),(0,eO.jsx)(H,{children:"表格列设置"}),(0,eO.jsx)(ea,{size:"small",dataSource:t.columns,rowKey:(e,t)=>String(t),columns:h,pagination:!1,bordered:!0}),(0,eO.jsx)(P,{size:"small",onClick:()=>{i("columns",[...t.columns||[],{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1}])},block:!0,children:"添加列"}),(0,eO.jsx)(q,{title:"编辑列",open:s,footer:null,width:400,onCancel:()=>d(!1),children:(0,eO.jsx)(K,{layout:"vertical",children:(0,eO.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,eO.jsx)(K.Item,{label:"列名",children:(0,eO.jsx)(W,{value:m.title,onChange:e=>o(u,{title:e.target.value})})}),(0,eO.jsx)(K.Item,{label:"数据索引",children:(0,eO.jsx)(W,{value:m.dataIndex,onChange:e=>o(u,{dataIndex:e.target.value})})}),(0,eO.jsx)(K.Item,{label:"宽度",children:(0,eO.jsx)(W,{value:m.width,onChange:e=>o(u,{width:e.target.value})})}),(0,eO.jsx)(K.Item,{label:"对齐",children:(0,eO.jsxs)(Z.Group,{value:m.align,onChange:e=>o(u,{align:e.target.value}),children:[(0,eO.jsx)(Z.Button,{value:"left",children:(0,eO.jsx)(r,{})}),(0,eO.jsx)(Z.Button,{value:"center",children:(0,eO.jsx)(n,{})}),(0,eO.jsx)(Z.Button,{value:"right",children:(0,eO.jsx)(a,{})})]})}),(0,eO.jsx)(K.Item,{label:"省略",children:(0,eO.jsx)(er,{checked:!!m.ellipsis,onChange:e=>o(u,{ellipsis:e})})})]})})})]})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:null},props:{size:"default",bordered:!0,showHeader:!0,pageSize:10,dataSource:[{name:"苹果",count:12},{name:"华为",count:803},{name:"OPPO",count:654},{name:"vivo",count:719}],columns:[{title:"品牌",dataIndex:"name"},{title:"日销量(件)",dataIndex:"count"}]}}},{group:"基础组件",key:"b-list",label:"列表",icon:"icon-unordered-list",component:e=>{let{id:t,pageSize:l=10,bordered:n=!0,size:r="default",itemLayout:a="horizontal",item:i,split:o=!0,style:s={},className:d}=e,{initCallback:c}=(0,eA.useContext)(eT),[u,p]=(0,eA.useState)(0),[x,m]=(0,eA.useState)(null);lu({item:i,signal:u,consumer:m});let h=(0,eA.useMemo)(()=>x||[],[x]),f=(0,eA.useMemo)(()=>!!l&&!(l<=h.length)&&{total:h.length,pageSize:l,size:"default"===r?void 0:r,showSizeChanger:!0,showQuickJumper:!0,hideOnSinglePage:!0,pageSizeOptions:["10","20","30","40"],showTotal:(e,t)=>`共 ${e} 条记录,显示第 ${t[0]}-${t[1]} 条`},[l,h.length,r]),g=["p-list",a?`p-list--${a}`:void 0,r?`p-list--${r}`:void 0,o?"p-list--split":void 0,n?"p-list--bordered":void 0,d],v=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return e&&p(e=>e+1),{target:i,data:x}};return(0,eA.useEffect)(()=>{c({id:i.id,callback:v})},[]),(0,eO.jsxs)("div",{id:t,style:{display:"flex",flexDirection:"column",...s},className:g.filter(Boolean).join(" "),children:[(0,eO.jsx)(lb,{list:h,split:o,bordered:n,size:r,itemLayout:a}),f&&(0,eO.jsx)(X,{...f})]})},formComponent:e=>{let{model:t,onChange:l}=e,[n]=K.useForm();return(0,eA.useEffect)(()=>{n.setFieldsValue({size:t.size||"default",itemLayout:t.itemLayout||"horizontal",bordered:t.bordered??!1,split:t.split??!0,pageSize:t.pageSize||10})},[t,n]),(0,eO.jsxs)(K,{form:n,labelCol:{span:12},wrapperCol:{span:12},onValuesChange:e=>{null==l||l({...t,...e})},children:[(0,eO.jsx)(K.Item,{label:"大小",name:"size",children:(0,eO.jsxs)(Z.Group,{size:"small",buttonStyle:"solid",children:[(0,eO.jsx)(Z.Button,{value:"default",children:"默认"}),(0,eO.jsx)(Z.Button,{value:"small",children:"小"})]})}),(0,eO.jsx)(K.Item,{label:"布局",name:"itemLayout",children:(0,eO.jsxs)(Z.Group,{size:"small",buttonStyle:"solid",children:[(0,eO.jsx)(Z.Button,{value:"horizontal",children:"水平"}),(0,eO.jsx)(Z.Button,{value:"vertical",children:"垂直"})]})}),(0,eO.jsx)(K.Item,{label:"边框",name:"bordered",valuePropName:"checked",children:(0,eO.jsx)(er,{size:"small"})}),(0,eO.jsx)(K.Item,{label:"分割线",name:"split",valuePropName:"checked",children:(0,eO.jsx)(er,{size:"small"})}),(0,eO.jsx)(K.Item,{label:"分页大小",name:"pageSize",children:(0,eO.jsx)(U,{size:"small"})})]})},defaultOptions:{datasource:{source:"custom",custom:"[]"},props:{size:"default",itemLayout:"horizontal",bordered:!0,split:!0,pageSize:10}}},{group:"基础组件",key:"b-html",label:"HTML",icon:"icon-html",component:e=>{let{id:t,template:l="",item:n,style:r,className:a,classNames:i=[]}=e,{initCallback:o}=(0,eA.useContext)(eT),[s,d]=(0,eA.useState)(0),[c,u]=(0,eA.useState)(null);lu({item:n,signal:s,consumer:u});let p=(0,eA.useMemo)(()=>Object.keys(c||{}),[c]),x=(0,eA.useMemo)(()=>p.map(e=>null==c?void 0:c[e]),[p,c]),m=(0,eA.useMemo)(()=>(l||"").replace(/##\s*([^#]+)\s*##/g,(e,t)=>{try{return Function(...p,`
|
|
1089
1089
|
"use strict";
|
|
1090
1090
|
const window = undefined;
|
|
1091
1091
|
const document = undefined;
|
|
@@ -1095,7 +1095,7 @@ import*as e from"react";import t,{css as l}from"styled-components";import{AlignC
|
|
|
1095
1095
|
const module = undefined;
|
|
1096
1096
|
const exports = undefined;
|
|
1097
1097
|
return ${t};
|
|
1098
|
-
`)(...
|
|
1098
|
+
`)(...x)}catch{return""}}),[l,x]),h=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return e&&d(e=>e+1),{target:n,data:c}};return(0,eA.useEffect)(()=>{o({id:n.id,callback:h})},[]),(0,eO.jsx)("div",{id:t,style:r,className:(i||[]).join(" ")+" "+a,dangerouslySetInnerHTML:{__html:m}})},formComponent:e=>{let{model:t,onChange:l}=e,n=(0,eA.useRef)(null),r=(e,n)=>l&&l({...t,[e]:n});return(0,eO.jsx)("div",{children:(0,eO.jsxs)(K,{layout:"vertical",children:[(0,eO.jsx)(K.Item,{label:"类名",children:(0,eO.jsx)(et,{size:"small",value:t.classNames,mode:"tags",onChange:e=>r("classNames",e)})}),(0,eO.jsx)(K.Item,{label:(0,eO.jsxs)(eO.Fragment,{children:["模板",(0,eO.jsxs)("a",{onClick:()=>{var e,t;let l=null==(e=n.current)?void 0:e.editor;null==l||null==(t=l.getAction("editor.action.formatDocument"))||t.run()},children:[(0,eO.jsx)(th,{type:"icon-formate"})," 格式化"]})]}),className:"ant-form-item-label-space",children:(0,eO.jsx)("div",{style:{border:"1px solid #d9d9d9",borderRadius:4,textAlign:"left"},children:(0,eO.jsx)(em,{onMount:e=>{n.current={editor:e}},height:"300px",defaultLanguage:"html",value:t.template,onChange:e=>r("template",e||""),options:{minimap:{enabled:!1},scrollBeyondLastLine:!1,tabSize:2}})})})]})})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:'{"name": "Confucius"}'},props:{template:"<div>{{name}}, welcome to the world of programming.</div>"}}},{group:"基础组件",key:"b-echarts",label:"图表",icon:"icon-echarts",component:e=>{let{id:t,script:l="",item:n,height:r=400,style:a,className:i}=e,{initCallback:o}=(0,eA.useContext)(eT),s=(0,eA.useRef)(null),[d,c]=(0,eA.useState)(null),[u,p]=(0,eA.useState)(0),[x,m]=(0,eA.useState)(null);lu({item:n,signal:u,consumer:m});let h=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return arguments.length>1&&arguments[1],e&&p(e=>e+1),{target:n,data:x}};return(0,eA.useEffect)(()=>{let e=(e=>{try{return JSON.parse(e)}catch(t){try{return Function("echarts","console","Math","Date","Array","Object","String","Number","Boolean","data",`
|
|
1099
1099
|
"use strict";
|
|
1100
1100
|
const window = undefined;
|
|
1101
1101
|
const document = undefined;
|
|
@@ -1105,7 +1105,7 @@ import*as e from"react";import t,{css as l}from"styled-components";import{AlignC
|
|
|
1105
1105
|
const module = undefined;
|
|
1106
1106
|
const exports = undefined;
|
|
1107
1107
|
${e}
|
|
1108
|
-
`)(ev,console,Math,Date,Array,Object,String,Number,Boolean,x
|
|
1108
|
+
`)(ev,console,Math,Date,Array,Object,String,Number,Boolean,x)}catch(e){return null}}})(l);d&&e&&(d.setOption(e),setTimeout(()=>d.resize(),50))},[d,l,x]),(0,eA.useEffect)(()=>{if(!s.current)return;let e=ev.init(s.current);c(e);let t=()=>e.resize();return window.addEventListener("resize",t),o({id:n.id,callback:h}),()=>{window.removeEventListener("resize",t),e.dispose()}},[]),(0,eO.jsx)("div",{id:t,style:{width:"100%",height:r,...a},className:i,children:(0,eO.jsx)("div",{ref:s,style:{width:"100%",height:r,...a}})})},formComponent:e=>{let{model:t,onChange:l}=e,n=(0,eA.useRef)(null);return(0,eO.jsxs)(K,{children:[(0,eO.jsx)(K.Item,{label:"高度",labelCol:{span:6},wrapperCol:{span:18},children:(0,eO.jsx)(U,{value:t.height,size:"small",min:10,max:1e3,suffix:"px",onChange:e=>l&&l({...t,height:e})})}),(0,eO.jsx)(K.Item,{layout:"vertical",label:(0,eO.jsxs)(eO.Fragment,{children:["Echarts 渲染脚本"," ",(0,eO.jsxs)("a",{onClick:()=>{var e,t;let l=null==(e=n.current)?void 0:e.editor;null==l||null==(t=l.getAction("editor.action.formatDocument"))||t.run()},children:[(0,eO.jsx)(th,{type:"icon-formate"})," 格式化"]})]}),className:"ant-form-item-label-space",children:(0,eO.jsxs)("div",{style:{border:"1px solid #d9d9d9",borderRadius:4,textAlign:"left"},children:[(0,eO.jsxs)("div",{style:{color:"#0000ff",fontSize:14,padding:"0 50px"},children:["function getOptions(data) ","{"," "]}),(0,eO.jsx)(em,{onMount:e=>{n.current={editor:e}},height:"400px",defaultLanguage:"javascript",value:t.script,onChange:e=>{let n;return n=e||"",l&&l({...t,script:n||""})},options:{minimap:{enabled:!1},scrollBeyondLastLine:!1,tabSize:2}}),(0,eO.jsx)("div",{style:{color:"#0000ff",fontSize:14,padding:"0 50px"},children:"}"})]})})]})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:'[{"name":"Mon","value":150},{"name":"Tue","value":230},{"name":"Wed","value":224},{"name":"Thu","value":218},{"name":"Fri","value":135},{"name":"Sat","value":147},{"name":"Sun","value":260}]'},props:{script:`
|
|
1109
1109
|
return {
|
|
1110
1110
|
xAxis: { type: 'category', data: data.map(i => i.name) },
|
|
1111
1111
|
yAxis: { type: 'value' },
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { SchemaItemType } from "../typing";
|
|
2
2
|
export type Signal = string | number;
|
|
3
|
-
|
|
3
|
+
type Props = {
|
|
4
|
+
item: SchemaItemType;
|
|
5
|
+
signal?: Signal;
|
|
6
|
+
consumer: (data: any) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const useDatasource: ({ item, signal, consumer }: Props) => void;
|
|
9
|
+
export {};
|
|
@@ -1008,7 +1008,7 @@
|
|
|
1008
1008
|
color: #999;
|
|
1009
1009
|
font-size: 12px;
|
|
1010
1010
|
}
|
|
1011
|
-
`,tx=
|
|
1011
|
+
`,tx=e=>{let{item:t,signal:l,consumer:n}=e,{fetch:r,getVars:a}=(0,c.useContext)(f);(0,c.useEffect)(()=>{if(!(null==t?void 0:t.datasource))return void n(null);switch((null==t?void 0:t.datasource.source)||"custom"){case"custom":try{var e;n(JSON.parse((null==t||null==(e=t.datasource)?void 0:e.custom)||"[]"))}catch(e){n(null)}break;case"dataset":if(!(null==t?void 0:t.datasource.dataset)||!(null==r?void 0:r.dataset)){console.warn("dataset source detected but config or fetcher is missing",{datasetConfig:null==t?void 0:t.datasource.dataset,hasFetchDataset:!!(null==r?void 0:r.dataset)}),n(null);return}let l=a(t.id||"");r.dataset(null==t?void 0:t.datasource.dataset.id,l).then(e=>{n((null==e?void 0:e.data)||null)}).catch(e=>{console.error("dataset fetch error",e),n(null)});break;default:n(null)}},[null==t?void 0:t.datasource,l])},th=h().div`
|
|
1012
1012
|
box-sizing: border-box;
|
|
1013
1013
|
margin: 0;
|
|
1014
1014
|
padding: 0;
|
|
@@ -1085,7 +1085,7 @@
|
|
|
1085
1085
|
const module = undefined;
|
|
1086
1086
|
const exports = undefined;
|
|
1087
1087
|
${e.customRender}
|
|
1088
|
-
`)(console,Math,Date,Array,Object,String,Number,Boolean,t,l,n):e.render})),g=()=>{console.log("callback table")};return(0,c.useEffect)(()=>{m({id:l.id,callback:g})},[]),(0,d.jsx)(ep.Table,{id:t,dataSource:n,columns:h,pagination:x,bordered:i,size:o,showHeader:"boolean"!=typeof s||s,rowKey:(e,t)=>String(t),style:{padding:1,...u},className:p})},formComponent:e=>{let{model:t,onChange:l}=e,n=(e,n)=>l&&l({...t,[e]:n}),r=(e,l)=>{let r=[...t.columns||[]];r[e]={...r[e],...l},n("columns",r)},[a,i]=(0,c.useState)(!1),[o,s]=(0,c.useState)(null),u=null!=o&&t.columns[o]?t.columns[o]:{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1},p=[{title:"列名",dataIndex:"title"},{title:"数据索引",dataIndex:"dataIndex"},{title:"操作",width:80,align:"center",render:(e,l,r)=>(0,d.jsxs)(ep.Space,{children:[(0,d.jsx)("a",{onClick:()=>{s(r),i(!0)},children:(0,d.jsx)(ed.EditOutlined,{})}),(0,d.jsx)("a",{onClick:()=>{let e;(e=[...t.columns||[]]).splice(r,1),n("columns",e)},children:(0,d.jsx)(ed.DeleteOutlined,{})})]})}];return(0,d.jsxs)("div",{children:[(0,d.jsxs)(ep.Form,{labelCol:{span:12},wrapperCol:{span:12},children:[(0,d.jsx)(ep.Form.Item,{label:"大小",children:(0,d.jsxs)(ep.Radio.Group,{size:"small",value:t.size,onChange:e=>n("size",e.target.value),children:[(0,d.jsx)(ep.Radio.Button,{value:"small",children:"小"}),(0,d.jsx)(ep.Radio.Button,{value:"middle",children:"中"}),(0,d.jsx)(ep.Radio.Button,{value:"large",children:"大"})]})}),(0,d.jsx)(ep.Form.Item,{label:"边框",children:(0,d.jsx)(ep.Switch,{size:"small",checked:!!t.bordered,onChange:e=>n("bordered",e)})}),(0,d.jsx)(ep.Form.Item,{label:"显示表头",children:(0,d.jsx)(ep.Switch,{size:"small",checked:!!t.showHeader,onChange:e=>n("showHeader",e)})}),(0,d.jsx)(ep.Form.Item,{label:"分页大小",children:(0,d.jsx)(ep.InputNumber,{size:"small",value:t.pageSize,onChange:e=>n("pageSize",e)})})]}),(0,d.jsx)(ep.Divider,{children:"表格列设置"}),(0,d.jsx)(ep.Table,{size:"small",dataSource:t.columns,rowKey:(e,t)=>String(t),columns:p,pagination:!1,bordered:!0}),(0,d.jsx)(ep.Button,{size:"small",onClick:()=>{n("columns",[...t.columns||[],{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1}])},block:!0,children:"添加列"}),(0,d.jsx)(ep.Modal,{title:"编辑列",open:a,footer:null,width:400,onCancel:()=>i(!1),children:(0,d.jsx)(ep.Form,{layout:"vertical",children:(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,d.jsx)(ep.Form.Item,{label:"列名",children:(0,d.jsx)(ep.Input,{value:u.title,onChange:e=>r(o,{title:e.target.value})})}),(0,d.jsx)(ep.Form.Item,{label:"数据索引",children:(0,d.jsx)(ep.Input,{value:u.dataIndex,onChange:e=>r(o,{dataIndex:e.target.value})})}),(0,d.jsx)(ep.Form.Item,{label:"宽度",children:(0,d.jsx)(ep.Input,{value:u.width,onChange:e=>r(o,{width:e.target.value})})}),(0,d.jsx)(ep.Form.Item,{label:"对齐",children:(0,d.jsxs)(ep.Radio.Group,{value:u.align,onChange:e=>r(o,{align:e.target.value}),children:[(0,d.jsx)(ep.Radio.Button,{value:"left",children:(0,d.jsx)(ed.AlignLeftOutlined,{})}),(0,d.jsx)(ep.Radio.Button,{value:"center",children:(0,d.jsx)(ed.AlignCenterOutlined,{})}),(0,d.jsx)(ep.Radio.Button,{value:"right",children:(0,d.jsx)(ed.AlignRightOutlined,{})})]})}),(0,d.jsx)(ep.Form.Item,{label:"省略",children:(0,d.jsx)(ep.Switch,{checked:!!u.ellipsis,onChange:e=>r(o,{ellipsis:e})})})]})})})]})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:null},props:{size:"default",bordered:!0,showHeader:!0,pageSize:10,dataSource:[{name:"苹果",count:12},{name:"华为",count:803},{name:"OPPO",count:654},{name:"vivo",count:719}],columns:[{title:"品牌",dataIndex:"name"},{title:"日销量(件)",dataIndex:"count"}]}}},{group:"基础组件",key:"b-list",label:"列表",icon:"icon-unordered-list",component:e=>{let{id:t,pageSize:l=10,bordered:n=!0,size:r="default",itemLayout:a="horizontal",item:i,split:o=!0,style:s={},className:u}=e,{initCallback:p}=(0,c.useContext)(f),[m,x]=(0,c.useState)(0),h=tx(i,m
|
|
1088
|
+
`)(console,Math,Date,Array,Object,String,Number,Boolean,t,l,n):e.render})),g=()=>{console.log("callback table")};return(0,c.useEffect)(()=>{m({id:l.id,callback:g})},[]),(0,d.jsx)(ep.Table,{id:t,dataSource:n,columns:h,pagination:x,bordered:i,size:o,showHeader:"boolean"!=typeof s||s,rowKey:(e,t)=>String(t),style:{padding:1,...u},className:p})},formComponent:e=>{let{model:t,onChange:l}=e,n=(e,n)=>l&&l({...t,[e]:n}),r=(e,l)=>{let r=[...t.columns||[]];r[e]={...r[e],...l},n("columns",r)},[a,i]=(0,c.useState)(!1),[o,s]=(0,c.useState)(null),u=null!=o&&t.columns[o]?t.columns[o]:{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1},p=[{title:"列名",dataIndex:"title"},{title:"数据索引",dataIndex:"dataIndex"},{title:"操作",width:80,align:"center",render:(e,l,r)=>(0,d.jsxs)(ep.Space,{children:[(0,d.jsx)("a",{onClick:()=>{s(r),i(!0)},children:(0,d.jsx)(ed.EditOutlined,{})}),(0,d.jsx)("a",{onClick:()=>{let e;(e=[...t.columns||[]]).splice(r,1),n("columns",e)},children:(0,d.jsx)(ed.DeleteOutlined,{})})]})}];return(0,d.jsxs)("div",{children:[(0,d.jsxs)(ep.Form,{labelCol:{span:12},wrapperCol:{span:12},children:[(0,d.jsx)(ep.Form.Item,{label:"大小",children:(0,d.jsxs)(ep.Radio.Group,{size:"small",value:t.size,onChange:e=>n("size",e.target.value),children:[(0,d.jsx)(ep.Radio.Button,{value:"small",children:"小"}),(0,d.jsx)(ep.Radio.Button,{value:"middle",children:"中"}),(0,d.jsx)(ep.Radio.Button,{value:"large",children:"大"})]})}),(0,d.jsx)(ep.Form.Item,{label:"边框",children:(0,d.jsx)(ep.Switch,{size:"small",checked:!!t.bordered,onChange:e=>n("bordered",e)})}),(0,d.jsx)(ep.Form.Item,{label:"显示表头",children:(0,d.jsx)(ep.Switch,{size:"small",checked:!!t.showHeader,onChange:e=>n("showHeader",e)})}),(0,d.jsx)(ep.Form.Item,{label:"分页大小",children:(0,d.jsx)(ep.InputNumber,{size:"small",value:t.pageSize,onChange:e=>n("pageSize",e)})})]}),(0,d.jsx)(ep.Divider,{children:"表格列设置"}),(0,d.jsx)(ep.Table,{size:"small",dataSource:t.columns,rowKey:(e,t)=>String(t),columns:p,pagination:!1,bordered:!0}),(0,d.jsx)(ep.Button,{size:"small",onClick:()=>{n("columns",[...t.columns||[],{title:"",dataIndex:"",width:"",align:"left",ellipsis:!1}])},block:!0,children:"添加列"}),(0,d.jsx)(ep.Modal,{title:"编辑列",open:a,footer:null,width:400,onCancel:()=>i(!1),children:(0,d.jsx)(ep.Form,{layout:"vertical",children:(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,d.jsx)(ep.Form.Item,{label:"列名",children:(0,d.jsx)(ep.Input,{value:u.title,onChange:e=>r(o,{title:e.target.value})})}),(0,d.jsx)(ep.Form.Item,{label:"数据索引",children:(0,d.jsx)(ep.Input,{value:u.dataIndex,onChange:e=>r(o,{dataIndex:e.target.value})})}),(0,d.jsx)(ep.Form.Item,{label:"宽度",children:(0,d.jsx)(ep.Input,{value:u.width,onChange:e=>r(o,{width:e.target.value})})}),(0,d.jsx)(ep.Form.Item,{label:"对齐",children:(0,d.jsxs)(ep.Radio.Group,{value:u.align,onChange:e=>r(o,{align:e.target.value}),children:[(0,d.jsx)(ep.Radio.Button,{value:"left",children:(0,d.jsx)(ed.AlignLeftOutlined,{})}),(0,d.jsx)(ep.Radio.Button,{value:"center",children:(0,d.jsx)(ed.AlignCenterOutlined,{})}),(0,d.jsx)(ep.Radio.Button,{value:"right",children:(0,d.jsx)(ed.AlignRightOutlined,{})})]})}),(0,d.jsx)(ep.Form.Item,{label:"省略",children:(0,d.jsx)(ep.Switch,{checked:!!u.ellipsis,onChange:e=>r(o,{ellipsis:e})})})]})})})]})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:null},props:{size:"default",bordered:!0,showHeader:!0,pageSize:10,dataSource:[{name:"苹果",count:12},{name:"华为",count:803},{name:"OPPO",count:654},{name:"vivo",count:719}],columns:[{title:"品牌",dataIndex:"name"},{title:"日销量(件)",dataIndex:"count"}]}}},{group:"基础组件",key:"b-list",label:"列表",icon:"icon-unordered-list",component:e=>{let{id:t,pageSize:l=10,bordered:n=!0,size:r="default",itemLayout:a="horizontal",item:i,split:o=!0,style:s={},className:u}=e,{initCallback:p}=(0,c.useContext)(f),[m,x]=(0,c.useState)(0),[h,g]=(0,c.useState)(null);tx({item:i,signal:m,consumer:g});let v=(0,c.useMemo)(()=>h||[],[h]),j=(0,c.useMemo)(()=>!!l&&!(l<=v.length)&&{total:v.length,pageSize:l,size:"default"===r?void 0:r,showSizeChanger:!0,showQuickJumper:!0,hideOnSinglePage:!0,pageSizeOptions:["10","20","30","40"],showTotal:(e,t)=>`共 ${e} 条记录,显示第 ${t[0]}-${t[1]} 条`},[l,v.length,r]),b=["p-list",a?`p-list--${a}`:void 0,r?`p-list--${r}`:void 0,o?"p-list--split":void 0,n?"p-list--bordered":void 0,u],y=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return e&&x(e=>e+1),{target:i,data:h}};return(0,c.useEffect)(()=>{p({id:i.id,callback:y})},[]),(0,d.jsxs)("div",{id:t,style:{display:"flex",flexDirection:"column",...s},className:b.filter(Boolean).join(" "),children:[(0,d.jsx)(tC,{list:v,split:o,bordered:n,size:r,itemLayout:a}),j&&(0,d.jsx)(ep.Pagination,{...j})]})},formComponent:e=>{let{model:t,onChange:l}=e,[n]=ep.Form.useForm();return(0,c.useEffect)(()=>{n.setFieldsValue({size:t.size||"default",itemLayout:t.itemLayout||"horizontal",bordered:t.bordered??!1,split:t.split??!0,pageSize:t.pageSize||10})},[t,n]),(0,d.jsxs)(ep.Form,{form:n,labelCol:{span:12},wrapperCol:{span:12},onValuesChange:e=>{null==l||l({...t,...e})},children:[(0,d.jsx)(ep.Form.Item,{label:"大小",name:"size",children:(0,d.jsxs)(ep.Radio.Group,{size:"small",buttonStyle:"solid",children:[(0,d.jsx)(ep.Radio.Button,{value:"default",children:"默认"}),(0,d.jsx)(ep.Radio.Button,{value:"small",children:"小"})]})}),(0,d.jsx)(ep.Form.Item,{label:"布局",name:"itemLayout",children:(0,d.jsxs)(ep.Radio.Group,{size:"small",buttonStyle:"solid",children:[(0,d.jsx)(ep.Radio.Button,{value:"horizontal",children:"水平"}),(0,d.jsx)(ep.Radio.Button,{value:"vertical",children:"垂直"})]})}),(0,d.jsx)(ep.Form.Item,{label:"边框",name:"bordered",valuePropName:"checked",children:(0,d.jsx)(ep.Switch,{size:"small"})}),(0,d.jsx)(ep.Form.Item,{label:"分割线",name:"split",valuePropName:"checked",children:(0,d.jsx)(ep.Switch,{size:"small"})}),(0,d.jsx)(ep.Form.Item,{label:"分页大小",name:"pageSize",children:(0,d.jsx)(ep.InputNumber,{size:"small"})})]})},defaultOptions:{datasource:{source:"custom",custom:"[]"},props:{size:"default",itemLayout:"horizontal",bordered:!0,split:!0,pageSize:10}}},{group:"基础组件",key:"b-html",label:"HTML",icon:"icon-html",component:e=>{let{id:t,template:l="",item:n,style:r,className:a,classNames:i=[]}=e,{initCallback:o}=(0,c.useContext)(f),[s,u]=(0,c.useState)(0),[p,m]=(0,c.useState)(null);tx({item:n,signal:s,consumer:m});let x=(0,c.useMemo)(()=>Object.keys(p||{}),[p]),h=(0,c.useMemo)(()=>x.map(e=>null==p?void 0:p[e]),[x,p]),g=(0,c.useMemo)(()=>(l||"").replace(/##\s*([^#]+)\s*##/g,(e,t)=>{try{return Function(...x,`
|
|
1089
1089
|
"use strict";
|
|
1090
1090
|
const window = undefined;
|
|
1091
1091
|
const document = undefined;
|
|
@@ -1095,7 +1095,7 @@
|
|
|
1095
1095
|
const module = undefined;
|
|
1096
1096
|
const exports = undefined;
|
|
1097
1097
|
return ${t};
|
|
1098
|
-
`)(...
|
|
1098
|
+
`)(...h)}catch{return""}}),[l,h]),v=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return e&&u(e=>e+1),{target:n,data:p}};return(0,c.useEffect)(()=>{o({id:n.id,callback:v})},[]),(0,d.jsx)("div",{id:t,style:r,className:(i||[]).join(" ")+" "+a,dangerouslySetInnerHTML:{__html:g}})},formComponent:e=>{let{model:t,onChange:l}=e,n=(0,c.useRef)(null),r=(e,n)=>l&&l({...t,[e]:n});return(0,d.jsx)("div",{children:(0,d.jsxs)(ep.Form,{layout:"vertical",children:[(0,d.jsx)(ep.Form.Item,{label:"类名",children:(0,d.jsx)(ep.Select,{size:"small",value:t.classNames,mode:"tags",onChange:e=>r("classNames",e)})}),(0,d.jsx)(ep.Form.Item,{label:(0,d.jsxs)(d.Fragment,{children:["模板",(0,d.jsxs)("a",{onClick:()=>{var e,t;let l=null==(e=n.current)?void 0:e.editor;null==l||null==(t=l.getAction("editor.action.formatDocument"))||t.run()},children:[(0,d.jsx)(eu,{type:"icon-formate"})," 格式化"]})]}),className:"ant-form-item-label-space",children:(0,d.jsx)("div",{style:{border:"1px solid #d9d9d9",borderRadius:4,textAlign:"left"},children:(0,d.jsx)(ef(),{onMount:e=>{n.current={editor:e}},height:"300px",defaultLanguage:"html",value:t.template,onChange:e=>r("template",e||""),options:{minimap:{enabled:!1},scrollBeyondLastLine:!1,tabSize:2}})})})]})})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:'{"name": "Confucius"}'},props:{template:"<div>{{name}}, welcome to the world of programming.</div>"}}},{group:"基础组件",key:"b-echarts",label:"图表",icon:"icon-echarts",component:e=>{let{id:t,script:l="",item:n,height:r=400,style:a,className:i}=e,{initCallback:o}=(0,c.useContext)(f),s=(0,c.useRef)(null),[u,p]=(0,c.useState)(null),[m,x]=(0,c.useState)(0),[h,g]=(0,c.useState)(null);tx({item:n,signal:m,consumer:g});let v=function(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return arguments.length>1&&arguments[1],e&&x(e=>e+1),{target:n,data:h}};return(0,c.useEffect)(()=>{let e=(e=>{try{return JSON.parse(e)}catch(t){try{return Function("echarts","console","Math","Date","Array","Object","String","Number","Boolean","data",`
|
|
1099
1099
|
"use strict";
|
|
1100
1100
|
const window = undefined;
|
|
1101
1101
|
const document = undefined;
|
|
@@ -1105,7 +1105,7 @@
|
|
|
1105
1105
|
const module = undefined;
|
|
1106
1106
|
const exports = undefined;
|
|
1107
1107
|
${e}
|
|
1108
|
-
`)(tS,console,Math,Date,Array,Object,String,Number,Boolean,h
|
|
1108
|
+
`)(tS,console,Math,Date,Array,Object,String,Number,Boolean,h)}catch(e){return null}}})(l);u&&e&&(u.setOption(e),setTimeout(()=>u.resize(),50))},[u,l,h]),(0,c.useEffect)(()=>{if(!s.current)return;let e=tS.init(s.current);p(e);let t=()=>e.resize();return window.addEventListener("resize",t),o({id:n.id,callback:v}),()=>{window.removeEventListener("resize",t),e.dispose()}},[]),(0,d.jsx)("div",{id:t,style:{width:"100%",height:r,...a},className:i,children:(0,d.jsx)("div",{ref:s,style:{width:"100%",height:r,...a}})})},formComponent:e=>{let{model:t,onChange:l}=e,n=(0,c.useRef)(null);return(0,d.jsxs)(ep.Form,{children:[(0,d.jsx)(ep.Form.Item,{label:"高度",labelCol:{span:6},wrapperCol:{span:18},children:(0,d.jsx)(ep.InputNumber,{value:t.height,size:"small",min:10,max:1e3,suffix:"px",onChange:e=>l&&l({...t,height:e})})}),(0,d.jsx)(ep.Form.Item,{layout:"vertical",label:(0,d.jsxs)(d.Fragment,{children:["Echarts 渲染脚本"," ",(0,d.jsxs)("a",{onClick:()=>{var e,t;let l=null==(e=n.current)?void 0:e.editor;null==l||null==(t=l.getAction("editor.action.formatDocument"))||t.run()},children:[(0,d.jsx)(eu,{type:"icon-formate"})," 格式化"]})]}),className:"ant-form-item-label-space",children:(0,d.jsxs)("div",{style:{border:"1px solid #d9d9d9",borderRadius:4,textAlign:"left"},children:[(0,d.jsxs)("div",{style:{color:"#0000ff",fontSize:14,padding:"0 50px"},children:["function getOptions(data) ","{"," "]}),(0,d.jsx)(ef(),{onMount:e=>{n.current={editor:e}},height:"400px",defaultLanguage:"javascript",value:t.script,onChange:e=>{let n;return n=e||"",l&&l({...t,script:n||""})},options:{minimap:{enabled:!1},scrollBeyondLastLine:!1,tabSize:2}}),(0,d.jsx)("div",{style:{color:"#0000ff",fontSize:14,padding:"0 50px"},children:"}"})]})})]})},defaultOptions:{datasource:{source:"custom",datasourceId:null,scriptId:null,custom:'[{"name":"Mon","value":150},{"name":"Tue","value":230},{"name":"Wed","value":224},{"name":"Thu","value":218},{"name":"Fri","value":135},{"name":"Sat","value":147},{"name":"Sun","value":260}]'},props:{script:`
|
|
1109
1109
|
return {
|
|
1110
1110
|
xAxis: { type: 'category', data: data.map(i => i.name) },
|
|
1111
1111
|
yAxis: { type: 'value' },
|
package/package.json
CHANGED
|
@@ -4,52 +4,54 @@ import { SchemaItemType } from "../typing";
|
|
|
4
4
|
|
|
5
5
|
export type Signal = string | number;
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
item: SchemaItemType
|
|
9
|
-
signal?: Signal
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
type Props = {
|
|
8
|
+
item: SchemaItemType;
|
|
9
|
+
signal?: Signal;
|
|
10
|
+
consumer: (data: any) => void;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const useDatasource = ({ item, signal, consumer }: Props): void => {
|
|
12
14
|
const { fetch, getVars } = useContext(PageContext);
|
|
13
15
|
useEffect(() => {
|
|
14
16
|
if (!item?.datasource) {
|
|
15
|
-
|
|
17
|
+
consumer(null);
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
18
20
|
const source = item?.datasource.source || "custom";
|
|
19
21
|
switch (source) {
|
|
20
22
|
case "custom":
|
|
21
23
|
try {
|
|
22
|
-
|
|
24
|
+
consumer(JSON.parse(item?.datasource?.custom || "[]"));
|
|
23
25
|
} catch (e) {
|
|
24
|
-
|
|
26
|
+
consumer(null);
|
|
25
27
|
}
|
|
26
28
|
break;
|
|
27
29
|
case "dataset":
|
|
28
30
|
if (!item?.datasource.dataset || !fetch?.dataset) {
|
|
29
|
-
console.warn(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
console.warn(
|
|
32
|
+
"dataset source detected but config or fetcher is missing",
|
|
33
|
+
{
|
|
34
|
+
datasetConfig: item?.datasource.dataset,
|
|
35
|
+
hasFetchDataset: !!fetch?.dataset,
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
consumer(null);
|
|
34
39
|
return;
|
|
35
40
|
}
|
|
36
41
|
const vars = getVars(item.id || "");
|
|
37
42
|
fetch
|
|
38
43
|
.dataset(item?.datasource.dataset.id, vars)
|
|
39
44
|
.then((res) => {
|
|
40
|
-
|
|
41
|
-
ref.current = res?.data || null
|
|
45
|
+
consumer(res?.data || null);
|
|
42
46
|
})
|
|
43
47
|
.catch((err) => {
|
|
44
48
|
console.error("dataset fetch error", err);
|
|
45
|
-
|
|
49
|
+
consumer(null);
|
|
46
50
|
});
|
|
47
51
|
break;
|
|
48
52
|
default:
|
|
49
|
-
|
|
53
|
+
consumer(null);
|
|
50
54
|
break;
|
|
51
55
|
}
|
|
52
56
|
}, [item?.datasource, signal]);
|
|
53
|
-
|
|
54
|
-
return ref;
|
|
55
57
|
};
|
|
@@ -24,7 +24,8 @@ export const EchartsRender: React.FC<EchartsRenderProps> = ({
|
|
|
24
24
|
const chartRef = useRef<HTMLDivElement | null>(null);
|
|
25
25
|
const [chart, setChart] = useState<echarts.ECharts | null>(null);
|
|
26
26
|
const [signal, setSignal] = useState<number>(0);
|
|
27
|
-
const
|
|
27
|
+
const [datasource, setDatasource] = useState<any>(null);
|
|
28
|
+
useDatasource({ item, signal, consumer: setDatasource });
|
|
28
29
|
|
|
29
30
|
const parseConfig = (configStr: string): echarts.EChartsOption | null => {
|
|
30
31
|
try {
|
|
@@ -64,7 +65,7 @@ export const EchartsRender: React.FC<EchartsRenderProps> = ({
|
|
|
64
65
|
String,
|
|
65
66
|
Number,
|
|
66
67
|
Boolean,
|
|
67
|
-
|
|
68
|
+
datasource,
|
|
68
69
|
);
|
|
69
70
|
} catch (evalError) {
|
|
70
71
|
// console.error("ECharts 配置解析失败:", evalError);
|
|
@@ -76,17 +77,17 @@ export const EchartsRender: React.FC<EchartsRenderProps> = ({
|
|
|
76
77
|
if (refresh) setSignal((s) => s + 1);
|
|
77
78
|
return {
|
|
78
79
|
target: item,
|
|
79
|
-
data:
|
|
80
|
+
data: datasource,
|
|
80
81
|
};
|
|
81
82
|
};
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
useEffect(() => {
|
|
84
85
|
const opt = parseConfig(script);
|
|
85
86
|
if (chart && opt) {
|
|
86
87
|
chart.setOption(opt);
|
|
87
88
|
setTimeout(() => chart.resize(), 50);
|
|
88
89
|
}
|
|
89
|
-
};
|
|
90
|
+
}, [chart, script, datasource]);
|
|
90
91
|
|
|
91
92
|
useEffect(() => {
|
|
92
93
|
if (!chartRef.current) return;
|
|
@@ -101,10 +102,6 @@ export const EchartsRender: React.FC<EchartsRenderProps> = ({
|
|
|
101
102
|
};
|
|
102
103
|
}, []);
|
|
103
104
|
|
|
104
|
-
useEffect(() => {
|
|
105
|
-
initOption();
|
|
106
|
-
}, [chart, script, datasourceRef.current]);
|
|
107
|
-
|
|
108
105
|
return (
|
|
109
106
|
<div
|
|
110
107
|
id={id}
|
|
@@ -32,9 +32,10 @@ export const HtmlRender: React.FC<HtmlRenderProps> = ({
|
|
|
32
32
|
}) => {
|
|
33
33
|
const { initCallback } = useContext(PageContext);
|
|
34
34
|
const [signal, setSignal] = useState<number>(0);
|
|
35
|
-
const
|
|
35
|
+
const [datasource, setDatasource] = useState<any>(null);
|
|
36
|
+
useDatasource({ item, signal, consumer: setDatasource });
|
|
36
37
|
|
|
37
|
-
const keys = useMemo(() => Object.keys(
|
|
38
|
+
const keys = useMemo(() => Object.keys(datasource || {}), [datasource]);
|
|
38
39
|
const func = (path: string) =>
|
|
39
40
|
new Function(
|
|
40
41
|
...keys,
|
|
@@ -51,8 +52,8 @@ export const HtmlRender: React.FC<HtmlRenderProps> = ({
|
|
|
51
52
|
`,
|
|
52
53
|
);
|
|
53
54
|
const args = useMemo(
|
|
54
|
-
() => keys.map((k) => (
|
|
55
|
-
[keys,
|
|
55
|
+
() => keys.map((k) => (datasource as any)?.[k]),
|
|
56
|
+
[keys, datasource],
|
|
56
57
|
);
|
|
57
58
|
const html = useMemo(
|
|
58
59
|
() =>
|
|
@@ -73,7 +74,7 @@ export const HtmlRender: React.FC<HtmlRenderProps> = ({
|
|
|
73
74
|
if (refresh) setSignal((s) => s + 1);
|
|
74
75
|
return {
|
|
75
76
|
target: item,
|
|
76
|
-
data:
|
|
77
|
+
data: datasource,
|
|
77
78
|
};
|
|
78
79
|
};
|
|
79
80
|
|
|
@@ -187,9 +187,10 @@ export const ListRender: React.FC<ListRenderProps> = ({
|
|
|
187
187
|
}) => {
|
|
188
188
|
const { initCallback } = useContext(PageContext);
|
|
189
189
|
const [signal, setSignal] = useState<number>(0);
|
|
190
|
-
const
|
|
190
|
+
const [datasource, setDatasource] = useState<any>(null);
|
|
191
|
+
useDatasource({ item, signal, consumer: setDatasource });
|
|
191
192
|
|
|
192
|
-
const list = useMemo(() =>
|
|
193
|
+
const list = useMemo(() => datasource || [], [datasource]);
|
|
193
194
|
const pagination = useMemo(() => {
|
|
194
195
|
if (!pageSize || pageSize <= list.length) return false;
|
|
195
196
|
return {
|
|
@@ -217,7 +218,7 @@ export const ListRender: React.FC<ListRenderProps> = ({
|
|
|
217
218
|
if (refresh) setSignal((s) => s + 1);
|
|
218
219
|
return {
|
|
219
220
|
target: item,
|
|
220
|
-
data:
|
|
221
|
+
data: datasource,
|
|
221
222
|
};
|
|
222
223
|
};
|
|
223
224
|
|