上一篇我们讲到了怎么在OpenDataV中添加自己的组件,为了让大家更快的上手我们的平台,这一次针对自定义属性编辑,我们再来加一篇说明。我们先来看一下OpenDataV中的属性编辑功能。

当我们拖动一个组件到画布中以后,点击组件,在页面的右侧就出现了对应的属性编辑。在上一篇新增组件的文章中我们有一个配置文件config.ts,配置了组件的样式和属性修改,其中对于每一项配置我们设置了类型FormType,就像如下:

目前我们的FormType只支持几种固定的方式,这里所配置的类型就会反应到属性编辑框中,例如FormType.COLOR,就会是一个颜色选择框,FormType.SWITCH就是一个开关按钮,那如果需要用到的编辑方式在FormType里面不支持怎么办呢?我们提供了FormType.CUSTOM自定义属性编辑类型,这样就可以针对我们自己的组件来定制属性编辑框。下面我带大家一步步完成一个自定义的属性编辑框。我们以ScrollTable组件为例

增加文件

Table/ScrollTable目录下增加vue文件xxx.vue,名称可以随意定义,内容如下:

<template>
<n-form :model="formData" size="small" label-placement="left">
<n-form-item label="行高度">
<n-input-number v-model:value="formData.height" @keypress.enter.prevent="changeData" />
</n-form-item>
<n-form-item label="背景色">
<div class="backcolor">
<n-color-picker v-model:value="formData.oddRowBGC" @complete="changeData" />
<span class="title">奇数行</span>
</div>
<div class="backcolor">
<n-color-picker v-model:value="formData.evenRowBGC" @complete="changeData" />
<span class="title">偶数行</span>
</div>
</n-form-item>
</n-form>
</template> <script lang="ts" setup>
......
</script>

对于自定义属性编辑组件的书写要求有以下几个:

  • 组件需要接收一个value(必须)和args(可选)属性
  • 组件必须给父组件提供updateValue方法

组件处理

<script lang="ts" setup>
import { reactive } from 'vue'
import { NForm, NFormItem, NInputNumber, NColorPicker } from 'naive-ui'
import { RowType } from './type' const props = defineProps<{
value: RowType
args: any
}>() const emits = defineEmits<{
(e: 'change', value: RowType)
}>() const formData = reactive<RowType>({
height: props.value.height || 30,
oddRowBGC: props.value.oddRowBGC || '#003B51',
evenRowBGC: props.value.evenRowBGC || '#0A2732'
}) const changeData = () => {
emits('change', formData)
}
</script>

value属性接收的是自定义编辑框的值,和普通的属性一样,但是这里可以接收任意的数据,数组、对象或者基础类型数据,我们在渲染右侧属性编辑框的时候,会把属性框中的数值通过此属性传递给当前组件。

args是我们提供给组件的额外配置数据,可以根据需求来使用。

updateValue这个方法将会把自定义属性编辑框中的值通过我们的数据流传递到当前编辑的组件中。

使用自定义编辑框

ScrollTable目录下的config.ts中增加如下配置:

首先我们配置typeFormType.CUSTOMshowLabel的作用是是否显示表单中的label,这里主要是为了让我们的自定义编辑框拥有更大的渲染位置,在componentOptions中的componentType属性配置上组件对象,然后defaultValue就是ScrollTableForm组件中updateValue返回的值以及value所接收的值。

做完以上工作,我们就可以在右侧编辑框查看自定义属性编辑框的效果了。

因为样式和属性有所区别,因此增加自定义样式编辑需要有一些特殊处理,我们在下一篇在讲,在框架的设计之初我们就考虑到组件、属性编辑、工具栏等采用动态注册的方式来增加,一方面为了让框架更加简洁,另一方面也降低了组件自定义的难度。

更新日志

  • 增加动态数据接口处理。
  • 增加了脚本处理请求数据。
  • 优化了部分编辑器BUG。
  • 优化了使用体验。

Vue3拖拽式可视化低代码数据可视化平台

OpenDataV低代码平台新增组件流程

OpenDataV低代码平台增加自定义属性编辑的更多相关文章

  1. OpenDataV低代码平台新增组件流程

    OpenDataV计划采用子库的方式添加子组件,即每一个组件都当做一个子库,子库有自己的依赖,而项目本身的依赖只针对框架,因此每一个组件我们都当做一个子库来开发.下面我带着大家一步步详细的开发一个数字 ...

  2. 低代码平台--基于surging开发微服务编排流程引擎构思

    前言 微服务对于各位并不陌生,在互联网浪潮下不是在学习微服务的路上,就是在使用改造的路上,每个人对于微服务都有自己理解,有用k8s 就说自己是微服务,有用一些第三方框架spring cloud, du ...

  3. 使用WtmPlus低代码平台提高生产力

    低代码平台的概念很火爆,产品也是鱼龙混杂. 对于开发人员来说,在使用绝大部分低代码平台的时候都会遇到一个致命的问题:我在上面做的项目无法得到源码,完全黑盒.一旦我的需求平台满足不了,那就是无解.   ...

  4. 基于低代码平台(Low Code Platform)开发中小企业信息化项目

    前言:中小企业信息化需求强烈,对于开发中小企业信息化项目的软件工作和程序员来说,如何根据中小企业的特点,快速理解其信息化项目的需求并及时交付项目,是一个值得关注和研讨的话题. 最近几年来,随着全球经济 ...

  5. 干货!可以使用低代码平台代替Excel吗?

    低代码开发平台可以代替Excel?不用惊讶,答案是肯定的,而且,低代码开发平台可以完全代替Excel.例如Zoho Creator低代码平台,可以围绕数据存储.管理和创建工作流程.期间不需要IT人员介 ...

  6. 2021年哪个低代码平台更值得关注?T媒体盘点国内主流低代码厂商

    2020年圣诞前夜,国内知名创投科技媒体T媒体旗下的T研究发布了2020中国低代码平台指数测评报告.报告除了对国内低代码行业现状进行总结外,还对主流低代码厂商的市场渗透和曝光进行测评. 报告认为,低代 ...

  7. 分析师机构发布中国低代码平台现状分析报告,华为云AppCube为数字化转型加码

    摘要:Forrester指出,中国企业数字化转型过程中,有58%的决策者正在采用低代码工具进行软件构建,另有16%的决策者计划采用低代码. 华为消息,知名研究与分析机构Forrester Resear ...

  8. 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端

    前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...

  9. 微服务低代码Serverless平台(星链)的应用实践

    导读 星链是京东科技消金基础研发部研发的一款研发效能提升的工具平台,面向后端服务研发需求,尤其是集成性.场景化.定制化等难度不太高.但比较繁琐的需求,如服务前端的后端(BFF).服务流程编排.异步消息 ...

随机推荐

  1. 【新人福利】使用CSDN 官方插件,赠永久免站内广告特权 >>电脑端访问:https://t.csdnimg.cn/PVqS

    [新人福利]使用CSDN 官方插件,赠永久免站内广告特权 >>电脑端访问:CSDN开发助手 [新人福利]使用CSDN 官方插件,赠永久免站内广告特权 >>电脑端访问:https ...

  2. 牛牛与后缀表达式_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/B 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 262144K,其他语 ...

  3. [NOIP2015 提高组] 运输计划题解

    题目链接:P2680 [NOIP2015 提高组] 运输计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 看了好长时间题解才终于懂的,有关lca和二分答案的题解解释的不详细,一时 ...

  4. 闭包类型(Fn,FnMut,FnOnce)和move关键字

    move关键字是强制让环境变量的所有权转移到闭包中而不管是不是发生了所有权的转移 move关键字和匿名函数是否是FnOnce没有必然联系,之和匿名函数体有关 当匿名函数体里转移了环境变量的所有权的时候 ...

  5. 使用Properties集合存储数据,遍历取出Properties集合中的数据和Properties集合中的方法store和load

    package com.yang.Test.PropertiesStudy; import java.io.FileWriter; import java.io.IOException; import ...

  6. linux 学习 mysql安装到连接

    在Centos7.6 上安装mysql ps:一般mysql安装后会在/var/log/下面生成一个mysqld.log文件,如果遇到启动不了或者其他问题,基本都可以在这个log文件里面找到错误原因 ...

  7. ZJOI2016 小星星 题解

    我一生之敌是状压 本文发表于 洛谷博客:https://www.luogu.com.cn/blog/LoveMC/solution-p3349 Cnblogs:https://www.cnblogs. ...

  8. Luogu1868 饥饿的奶牛 (动态规划)

    开始以为是贪心,10分:想了个DP估计会超时,一翻题解各路初中神仙,背包都有. \(n^2\)很好想,考虑单调性用二分优化出log #include <iostream> #include ...

  9. [RootersCTF2019]I_<3_Flask-1|SSTI注入

    1.打开之后很明显的提示flask框架,但是未提供参数,在源代码中发现了一个git地址,打开之后也是没有啥用,结果如下: 2.这里我们首先需要爆破出来参数进行信息的传递,就需要使用Arjun这一款工具 ...

  10. 报错:selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: missing 'name'

    代码运行到这:driver.add_cookie(cookies),报错了 相信坑了不少人,接下来是解决办法 driver.add_cookie(cookies) cookies = { " ...