import { createVisualConfig, ElementType } from './ReactVisualEditor.utils'; import { Button, Input, Select } from 'antd'; import React from 'react'; import { createColorProp, createSelectProp, createTableProp, createTextProp, createTextareaProp, } from './ReactVisualEditor.props'; import { NumberRange } from './NumberRange/NumberRange'; import { ActiveRingChart, ScrollRankingBoard, BorderBox1, BorderBox3, BorderBox11, Decoration2, Decoration5, Decoration8, Decoration9, } from '@jiaminghi/data-view-react'; import { EchartsRadar, EchartsBar, EchartsLine, EchartsPie, EchartsGauge, } from './Echarts'; import { optionLine, optionPie, optionRadar, optionBar, optionGauge, option, } from './defaultOption'; import deepcopy from 'deepcopy'; import { ScrollBoardPost ,AlignType} from './ScrollTable'; export const visualConfig = createVisualConfig(); const styleClass = { fontSize: '20px', backgroundColor: '#f2f2f2', color: '#ccc', display: 'inline-flex', width: '150px', height: '160px', alignItems: 'center', justifyContent: 'center', }; const previewStyle = { width: '150px', height: '100px', }; const baseSize={ heigth:'200px', width:'200px' } visualConfig.registryComponent('text', { name: '文本', type: ElementType.BASE_ELEMENT, preview: () => 预览文本, render: ({ props }) => ( {props.text || '渲染文本'} ), props: { text: createTextProp('显示文本'), color: createColorProp('字体颜色'), size: createSelectProp('字体大小', [ { label: '14px', value: '14px' }, { label: '18px', value: '18px' }, { label: '24px', value: '24px' }, { label: '36px', value: '36px' }, ]), }, }); visualConfig.registryComponent('button', { name: '按钮', type: ElementType.BASE_ELEMENT, preview: () => , render: ({ size, props, custom }) => ( ), resize: { width: true, height: true, }, props: { label: createTextProp('按钮文本'), type: createSelectProp('按钮类型', [ { label: '默认', value: 'default' }, { label: '基础', value: 'primary' }, { label: '线框', value: 'ghost' }, { label: '虚线', value: 'dashed' }, { label: '链接', value: 'link' }, { label: '文本', value: 'text' }, ]), size: createSelectProp('按钮大小', [ { label: '大', value: 'large' }, { label: '中', value: 'middle' }, { label: '小', value: 'small' }, ]), }, }); // visualConfig.registryComponent('input', { // name: '输入框', // type: ElementType.BASE_ELEMENT, // preview: () => , // render: ({ size, model, custom }) => ( // // ), // resize: { // width: true, // }, // model: { // default: '绑定字段', // }, // }); // visualConfig.registryComponent('select', { // name: '下拉框', // type: ElementType.BASE_ELEMENT, // preview: () => ( // // ), // render: ({ props, size, model, custom }) => ( // // ), // resize: { // width: true, // }, // props: { // options: createTableProp('下拉选项', 'label', [ // { name: '选项显示值', field: 'label' }, // { name: '选项值', field: 'val' }, // { name: '备注', field: 'comments' }, // ]), // }, // model: { // default: '绑定字段', // }, // }); // visualConfig.registryComponent('number-range', { // name: '绑定多个字段', // type: ElementType.BASE_ELEMENT, // resize: { // width: true, // }, // render: ({ model, size, block }) => { // return ( // { // const model = block.model || {}; // return (model.start || '@@start') + (model.end || '@@end'); // })()} // width={size.width} // {...{ // start: model.start.value, // onStartChange: model.start.onChange, // end: model.end.value, // onEndChange: model.end.onChange, // }} // /> // ); // }, // preview: () => ( //
// //
// ), // model: { // start: '起始输入框绑定字段', // end: '结尾输入框绑定字段', // }, // }); /* visualConfig.registryComponent('image', { name: '图片', resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => (
), props: { url: createTextProp('地址'), }, }); */ // visualConfig.registryComponent('ActiveRingChart', { // name: '环形图', // type: ElementType.ECHARTS_ELEMENT, // resize: { // width: true, // height: true, // }, // render: ({ model, size, block }) => { // const config = { // data: [ // { // name: '周口', // value: 55, // }, // { // name: '南阳', // value: 120, // }, // { // name: '西峡', // value: 78, // }, // { // name: '驻马店', // value: 66, // }, // { // name: '新乡', // value: 80, // }, // ], // digitalFlopStyle: { // // fontSize: height > width ? width / 10 : height / 10, // fill: '#aaa', // }, // }; // return ( //
// //
// ); // }, // preview: () => { // const config = { // data: [ // { // name: '周口', // value: 55, // }, // { // name: '南阳', // value: 120, // }, // { // name: '西峡', // value: 78, // }, // { // name: '驻马店', // value: 66, // }, // { // name: '新乡', // value: 80, // }, // ], // digitalFlopStyle: { // fontSize: 25, // fill: '#aaa', // }, // }; // return ( //
// //
// ); // }, // model: { // config: '配置config', // }, // }); visualConfig.registryComponent('ScrollRankingBoard', { name: '排名轮播表', type: ElementType.TABLE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size, block }) => { const config = { unit:props.unit||'个', rowNum:props.rowNum||4, data: [ { name: '周口', value: 55, }, { name: '南阳', value: 120, }, { name: '西峡', value: 78, }, { name: '驻马店', value: 66, }, { name: '新乡', value: 80, }, { name: '信阳', value: 45, }, { name: '漯河', value: 29, }, ], }; return (
); }, preview: () => { const config = { data: [ { name: '周口', value: 55, }, { name: '南阳', value: 120, }, ], }; return (
); }, props:{ dataUrl:createTextProp('数据连接'), unit:createTextProp('单位'), rowNum:createTextProp('显示行数'), jumpUrl:createTextProp('跳转地址'), } }); visualConfig.registryComponent('ScrollBoard', { name: '轮播表', type: ElementType.TABLE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size, block }) => { return (
); }, preview: () => { return (
); }, props: { dataUrl: createTextProp('配置数据地址'), jumpUrl: createTextProp('跳转到其他页面数据地址'), align: createSelectProp('对齐方式',function():{label:string,value:string}[]{ let list:{label:string,value:string}[]=[] for(let key in AlignType){ list.push({ label:key, value: key }) } return list; }() ), //对齐方式 header: createTableProp('表头名称','点击查看',[{name:'列名称',field:'value'},{name:'列宽(px)',field:'widthValue'}]), //横向表头 }, }); visualConfig.registryComponent('BorderBox1', { name: '边框1', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('BorderBox3', { name: '边框3', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('BorderBox11', { name: '边框11', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('lineEcharts', { name: 'lineEcharts', type: ElementType.ECHARTS_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { dataUrl: createTextProp('配置dataUrl(https)'), title: createTextProp('标题(title)'), titleColor: createColorProp('标题颜色)'), titleFontSize:createTextProp('标题字体大小'), jumpUrl: createTextProp('跳转到其他页面数据地址'), }, }); visualConfig.registryComponent('pieEcharts', { name: 'pieEcharts', type: ElementType.ECHARTS_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { dataUrl: createTextProp('配置dataUrl(https)'), title: createTextProp('标题(title)'), themeColor: createTextProp('color'), params: createTextProp('请求参数(params)'), option: createTextareaProp('配置option'), jumpUrl: createTextProp('跳转到其他页面数据地址'), }, }); visualConfig.registryComponent('radarEcharts', { name: 'radarEcharts', type: ElementType.ECHARTS_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { dataUrl: createTextProp('配置dataUrl(https)'), title: createTextProp('标题(title)'), params: createTextProp('请求参数(params)'), jumpUrl: createTextProp('跳转到其他页面数据地址'), }, }); visualConfig.registryComponent('barEcharts', { name: 'barEcharts', type: ElementType.ECHARTS_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { dataUrl: createTextProp('配置dataUrl(https)'), title: createTextProp('标题(title)'), params: createTextProp('请求参数(params)'), jumpUrl: createTextProp('跳转到其他页面数据地址'), }, }); visualConfig.registryComponent('gaugeEcharts', { name: 'gaugeEcharts', type: ElementType.ECHARTS_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { dataUrl: createTextProp('配置dataUrl(https)'), title: createTextProp('标题(title)'), params: createTextProp('请求参数(params)'), themeColor: createTextProp('themeColor'), jumpUrl: createTextProp('跳转到其他页面数据地址'), }, }); visualConfig.registryComponent('Decoration2', { name: '水平线条', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('Decoration2-rev', { name: '竖直线条', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('Decoration5', { name: '装饰5', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('Decoration9', { name: '装饰9', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('Decoration8', { name: '装饰8', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, }); visualConfig.registryComponent('Decoration8-right', { name: '装饰8右', type: ElementType.DECORATE_ELEMENT, resize: { width: true, height: true, }, render: ({ props, size }) => { return (
); }, preview: () => { return (
); }, props: { title: createTextProp('标题'), }, });