DDei在线设计器-自定义控件

自定义控件

  本示例演示了自定义分组、自定义控件、覆写属性以及配置控件属性的方法。

  本示例基于教程快速指南开发,如果您不清楚怎样引入DDei设计器,请查看教程快速指南

  本篇最后提供的示例可以在DDei文档直接预览。

一、自定义分组

demo.vue

<script setup lang="ts">
import DDeiEditorView from "ddei-editor";
import { DDeiCoreStandLayout } from "ddei-editor";

const options = {
  config: { 
    "grid": 0, //网格线 // [!code --]
    "background": { color: "blue", opacity: 0.1 }, //背景色 // [!code --]
    //配置分组以及分组中的控件 // [!code ++:21]
    groupDefines:[
      {
        id: '999',
        name: '自定义扩展',
        code: 'custom-group',
        desc: '自定义扩展分组',
        subject: 'custom',
        orderNo: 0,
        controls: [
          {
            'id': '100001',
            'name': '扩展1',
          },
          {
            'id': '100002',
            'name': '扩展2',
          }
        ]
      }
    ],
    initData: {
      controls: [
        {
          model: "102010",
          text: "初始化图形"
        },
      ]
    }
  },
  //配置扩展插件
  extensions: [
    //布局的配置
    DDeiCoreStandLayout.configuration({
      //配置插件
      'top': [],
      'middle': ['ddei-core-panel-canvasview', 'ddei-core-panel-quickcolorview'],
      'bottom': [],
      'left': [],   // [!code --]
      'right': []
    }),
  ],
}
</script>

<template>
  <div style="width:400px;height:400px;margin:100px auto;">
    <DDeiEditorView :options="options" id="ddei_editor_1"></DDeiEditorView>
  </div>
</template>

实时效果
在这里插入图片描述

二、自定义控件

customdemo.js

//控件定义
const controls: object[] = [
  {
    'id': '9999001',
    'name': '自定义1',
    'code': 'cust_1',
    'desc': '自定义节点1',
    'from': '302006',
    'define': {
      fill: {
        color: "#e1b348"
      }
    }
  },
  {
    'id': '9999002',
    'name': '自定义2',
    'code': 'cust_2',
    'desc': '自定义节点2',
    'from': '302006',
    'define': {
      fill: {
        color: "#ffc0be"
      }
    }
  },
  {
    'id': '9999003',
    'name': '自定义3',
    'code': 'cust_3',
    'desc': '自定义节点3',
    'from': '102010',
    'define': {
      fill: {
        color: "#b1c1b2"
      }
    }
  }
]

//分组定义
const groups: object[] = [
  {
    id: '999',
    name: '自定义扩展',
    code: 'custom-group',
    desc: '自定义扩展分组',
    subject: 'custom',
    orderNo: 0,
    controls: [
      {
        'id': '302002',
        'name': '扩展用例',
      },
      {
        'id': '9999001',
        'name': '自定义1'
      },
      {
        'id': '9999002',
        'name': '自定义2'
      },
      {
        'id': '9999003',
        'name': '自定义3'
      },
      {
        'id': '302007',
        'name': '扩展用例',
      }
    ]
  }
]

export { controls, groups }

demo.vue

<script setup lang="ts">
import DDeiEditorView from "ddei-editor";
import { DDeiCoreStandLayout } from "ddei-editor";
import { DDeiExtUML } from "ddei-editor"; // [!code ++]
import {controls as ControlDefinesDemo,groups as GroupDefinesDemo} from "customdemo"; // [!code ++]

const options = {
  config: { 
    "grid": 0, //网格线 // [!code --]
    "background": { color: "blue", opacity: 0.1 }, //背景色 // [!code --]
    // 自定义控件,接收一个object[]。由于定义内容较多,提取到外部,便于维护 // [!code ++:4]
    controlDefines: ControlDefinesDemo,
    // 自定义分组,接收一个object[]。由于定义内容较多,提取到外部,便于维护
    groupDefines: GroupDefinesDemo,
    initData: {
      controls: [
        {  // [!code --:4]
          model: "102010",
          text: "初始化图形"
        },
        { // [!code ++:8]
          model: "9999003",
          text: "初始化图形"
        },
        {
          model: "9999001",
          offsetY:100
        }
      ]
    }
  },
  //配置扩展插件
  extensions: [
    //布局的配置
    DDeiCoreStandLayout.configuration({
      //配置插件
      'top': [],
      'middle': ['ddei-core-panel-canvasview', 'ddei-core-panel-quickcolorview'],
      'bottom': [],
      'left': [],   // [!code --]
      'right': []
    }),
    DDeiExtUML // [!code ++]
  ],
}
</script>

<template>
  <div style="width:400px;height:400px;margin:100px auto;">
    <DDeiEditorView :options="options" id="ddei_editor_1"></DDeiEditorView>
  </div>
</template>

实时效果
在这里插入图片描述

三、覆写已有控件属性

customdemo.js

//控件定义
const controls: object[] = [
  //复写已有的配置
  {
    'id': '100002',
    'define': {
      fill: {
        color: "#e1b348"
      },
      width:150,
      height:100
    }
  }
]

export { controls }

demo.vue

<script setup lang="ts">
import DDeiEditorView from "ddei-editor";
import { DDeiCoreStandLayout } from "ddei-editor";
import {controls as ControlDefinesDemo} from "customdemo"; // [!code ++]

const options = {
  config: { 
    "grid": 0, //网格线 // [!code --]
    "background": { color: "blue", opacity: 0.1 }, //背景色 // [!code --]
    // 自定义控件,接收一个object[]。由于定义内容较多,提取到外部,便于维护 // [!code ++:2]
    controlDefines: ControlDefinesDemo,
    initData: {
      controls: [
        {
          model: "102010",
          text: "覆写属性"  // [!code ++:2]
        }
      ]
    }
  },
  //配置扩展插件
  extensions: [
    //布局的配置
    DDeiCoreStandLayout.configuration({
      //配置插件
      'top': [],
      'middle': ['ddei-core-panel-canvasview', 'ddei-core-panel-quickcolorview'],
      'bottom': [],
      'left': [], 
      'right': []
    })
  ],
}
</script>

<template>
  <div style="width:400px;height:400px;margin:100px auto;">
    <DDeiEditorView :options="options" id="ddei_editor_1"></DDeiEditorView>
  </div>
</template>

实时效果
在这里插入图片描述

四、自定义属性

customdemo.js

//控件定义
const controls: object[] = [
  {
    'id': '9999001',
    'name': '自定义1',
    'code': 'cust_1',
    'desc': '自定义节点1',
    'from': '302006',
    'define': {
      fill: {
        color: "#e1b348"
      },
      //扩展属性与分组信息
      ext: {
        attrs: [
          {
            'code': 'text1',
            'name': '文本1',
            'desc': '控件的主体显示文本',
            'controlType': 'excheckbox',
            'dataType': 'integer',
            'dataSource': [{ 'text': '文本', 'value': 0 }, { 'text': '数字', 'value': 1 }, { 'text': '金额', 'value': 2 }, { 'text': '时间', 'value': 3 }],
            'itemStyle': { width: 80, height: 25, col: 2, row: 0, imgWidth: 20, imgHeight: 20 },
            'isArray': true,
            'defaultValue': [1, 2],
            'type': [1, 2], //类别,1图形,2业务,3事件
            'readonly': true,
          },
        ],
        groups: [
          {
            name: "数据",
            icon: 'icon-a-ziyuan409',
            subGroups: [
              {
                name: "分组1",
                attrs: ["code", "text1"]
              },
              {
                name: "分组2",
                attrs: ["text"]
              },

            ]
          },
        ]
      }
    }
  }
]

//分组定义
const groups: object[] = [
  {
    id: '999',
    name: '自定义扩展',
    code: 'custom-group',
    desc: '自定义扩展分组',
    subject: 'custom',
    orderNo: 0,
    controls: [
      {
        'id': '9999001',
        'name': '自定义1'
      }
    ]
  }
]

export { controls, groups }

demo.vue

<script setup lang="ts">
import DDeiEditorView from "ddei-editor";
import { DDeiCoreStandLayout } from "ddei-editor";
import { DDeiExtUML } from "ddei-editor"; // [!code ++]
import {controls as ControlDefinesDemo,groups as GroupDefinesDemo} from "customdemo"; // [!code ++]

const options = {
  config: { 
    "grid": 0, //网格线 // [!code --]
    "background": { color: "blue", opacity: 0.1 }, //背景色 // [!code --]
    // 自定义控件,接收一个object[]。由于定义内容较多,提取到外部,便于维护 // [!code ++:4]
    controlDefines: ControlDefinesDemo,
    // 自定义分组,接收一个object[]。由于定义内容较多,提取到外部,便于维护
    groupDefines: GroupDefinesDemo,
    initData: {
      controls: [
        { // [!code ++:3]
          model: "9999001",
        }
      ]
    }
  },
  //配置扩展插件
  extensions: [
    //布局的配置
    DDeiCoreStandLayout.configuration({
      //配置插件
      'top': [],
      'middle': ['ddei-core-panel-canvasview', 'ddei-core-panel-quickcolorview'],
      'bottom': [],
      'left': [],   
      'right': [] // [!code --]
    }),
    DDeiExtUML // [!code ++]
  ],
}
</script>

<template>
  <div style="width:400px;height:400px;margin:100px auto;">
    <DDeiEditorView :options="options" id="ddei_editor_1"></DDeiEditorView>
  </div>
</template>

实时效果
在这里插入图片描述

仓库信息

源码: https://gitee.com/hoslay/ddei-editor

文档: http://docs.ddei.top

在线体验: https://www.ddei.top

QQ:3697355039

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值