天天滚动:从零实现Dooring低代码印章组件
上一篇文章和大家分享了低代码平台组件间通信方案的几种实现:低代码平台组件间通信方案复盘今天继续和大家分享一下比较有意思的可视化印章组件
上一篇文章和大家分享了低代码平台组件间通信方案的几种实现:
低代码平台组件间通信方案复盘今天继续和大家分享一下比较有意思的可视化印章组件的实现.
你将收获低代码组件的基本设计模式印章组件的设计原理(canvas相关)如何快速将任意组件集成到低代码平台正文低代码组件的基本设计模式我们都知道任何低代码或者零代码搭建产品都非常注重底层搭建协议(schema), 这些产品通常会设计一套向上兼容且可扩展的 DSL结构, 来实现页面元件的标准化配置, 并支持元件的向上扩展:
(相关资料图)
在设计 H5-Dooring可视化搭建平台前, 我也参考了很多标准化软件数据协议, 给我启发最大的就是 ODATA规范, 具体设计细节可以参考我之前的文章:
Dooring无代码搭建平台技术演进之路之所以要介绍低代码的 schema设计, 是因为低代码组件的设计与开发需要依赖 schema的定义, 为了满足低代码组件能被用户实时编辑, 其基本的组成类似如下:
我们只需要在写普通组件的基础上加一个 schema文件即可, 这里以Dooring组件来举一个例子:
//组件代码tsximportstylesfrom"./index.less";importReact,{memo,useState}from"react";import{IHeaderConfig}from"./schema";constHeader=memo((props:IHeaderConfig)=>{const{cpName,bgColor,logo,height}=props;return(H5-dooring
在初步了解了低代码组件的设计模式之后, 我们接下来就来实现一下低代码印章组件的实现.
印章组件的设计原理我们由上图可以看出, 一个印章组件包含如下几个部分:
对于印章的绘制, 我们可以采用 canvas或者 svg来实现, 这里我采用 canvas来实现, 首先我们需要定义组件可以对外暴露的属性, 以便在低代码平台中可以让用户来自定义, 这里我直接列出基本的配置:
接下来我们就来实现一下吧!
1. 绘制印章边框letcanvas=dom;letcontext=canvas.getContext("2d")asany;//初始化canvas.width=w0;canvas.height=w0;//绘制印章边框letwidth=canvas.width/2;letheight=canvas.height/2;context.lineWidth=lineWidth;context.strokeStyle=color;context.beginPath();context.arc(width,height,width-lineWidth,0,Math.PI*2);context.stroke();
由上面代码可知我们用 canvas的 arc方法来创建一个圆形边框.
2. 绘制五角星创建一个五角星形状. 该五角星的中心坐标为(x0, y0),中心到顶点的距离为 radius, rotate=0时一个顶点在对称轴上
functioncreate5star(context:any,sx:number,sy:number,radius:number,color:string,rotato:number){context.save();context.fillStyle=color;//移动坐标原点context.translate(sx,sy);//旋转context.rotate(Math.PI+rotato);//创建路径context.beginPath();letx=Math.sin(0);lety=Math.cos(0);letdig=Math.PI/5*4;for(leti=0;i<5;i++){//画五角星的五条边letx=Math.sin(i*dig);lety=Math.cos(i*dig);context.lineTo(x*radius,y*radius);}context.closePath();context.stroke();context.fill();context.restore();}3. 绘制印章名称
context.font=`${fontSize}pxHelvetica`;//设置文本的垂直对齐方式context.textBaseline="middle";//设置文本的水平对对齐方式context.textAlign="center";context.lineWidth=1;context.fillStyle=color;context.fillText(name,width,height+60);4. 绘制环形印章单位
//平移到此位置context.translate(width,height);context.font=`${componySize}pxHelvetica`letcount=company.length;//字数letangle=4*Math.PI/(3*(count-1));//字间角度letchars=company.split("");letc;for(leti=0;i在基本的印章实现之后, 我们来接收属性配置:
对于低代码的 schema配置, 这里以 H5-Dooring的组件为例, 给大家分享一下:
import{IColorConfigType,IDataListConfigType,INumberConfigType,ISelectConfigType,TColorDefaultType,ISwitchConfigType,ITextConfigType,TNumberDefaultType,TTextDefaultType,}from"@/core/FormComponents/types";import{ICommonBaseType,baseConfig,baseDefault}from"../../common";importintlfrom"@/utils/intl";constt=intl();exporttypeTTextSelectKeyType="left"|"right"|"center";exporttypeTTextPosSelectKeyType="bottom"|"top";exporttypeTTextFormatSelectKeyType="CODE128"|"pharmacode"exporttypeTListEditData=Array快速将任意组件集成到低代码平台|ISelectConfigType |ISelectConfigType |ISwitchConfigType|ITextConfigType>;exportinterfaceIListConfigextendsICommonBaseType{width:TNumberDefaultType;compony:TTextDefaultType;componySize:TNumberDefaultType;text:TTextDefaultType;fontSize:TNumberDefaultType;color:TColorDefaultType;lineWidth:TNumberDefaultType;opacity:TNumberDefaultType;}exportinterfaceIListSchema{editData:TListEditData;config:IListConfig;}constList:IListSchema={editData:[...baseConfig,{key:"width",name:t("dr.attr.sealSize"),type:"Number",},{key:"compony",name:t("dr.attr.componyName"),type:"Text",},{key:"componySize",name:t("dr.attr.componySize"),type:"Number",},{key:"text",name:t("dr.attr.sealUnit"),type:"Text",},{key:"fontSize",name:t("dr.attr.fontSize"),type:"Number",},{key:"color",name:t("dr.attr.color"),type:"Color",},{key:"lineWidth",name:t("dr.attr.lineWidth"),type:"Number",},{key:"opacity",name:t("dr.attr.opacity"),type:"Number",},],config:{...baseDefault,cpName:"Seal",width:180,compony:"Dooring零代码搭建平台",componySize:18,text:"H5-Dooring",fontSize:14,color:"rgba(240,0,0,1)",lineWidth:6,opacity:100},};exportdefaultList; 在上面的分析实现中我们可以发现, 只需要把普通组件按照属性对外暴露出来, 并按照 Dooring的 schema定义模式来描述出来, 普通组件就可以立马变成低代码组件, 并自动生成组件配置面板:
具体的 schema描述我在文档中做了详细的介绍, 大家感兴趣可以参考一下:
总结后续我会继续和大家分享一下 H5-Dooring 低代码的更多实践和思考, 如果大家对可视化低代码感兴趣也可以参考我的低代码可视化专栏, 如果大家对图形学感兴趣, 也可以参考我的专栏100+前端几何学应用案例.
H5-dooring低代码
V6.Dooring可视化大屏搭建平台
关键词: 基本设计
[ 相关文章 ]
上一篇文章和大家分享了低代码平台组件间通信方案的几种实现:低代码平台组件间通信方案复盘今天继续和大家分享一下比较有意思的可视化印章组件
本文转自:IT之家作者:孤城据Cnet消息,戴尔在CES2023上发布了新款G16游戏本,配置升级到了13代酷睿处理器。据报道,戴尔G16配备了16英寸16:1
网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可
中国网是国务院新闻办公室领导,中国外文出版发行事业局管理的国家重点新闻网站。本网通过10个语种11个文版,24小时对外发布信息,是中国进行
汪小菲是真的不错,陪张颖颖一起到实体店买新衣服,并且还是情侣外套。1月5日,八卦媒体放出汪小菲和张颖颖一起逛街买衣服的视频,证实两人的
参考消息网1月6日报道(文 朱丽)1月4日,英国首相里希·苏纳克发表2023年的第一次演讲,而他选择在这一天宣布自己的一项&(@参考消息)
春运节前,全国铁路高峰日最高可开行旅客列车6077对,客座定员可达904万人;春运节后,高峰日最高可安排开行旅客列车6107对,客座定员可以达到
艾比森(SZ300389,收盘价:9 4元)1月5日晚间发布业绩预告,预计2022年归属于上市公司股东的净利润1 8亿元~2 3亿元,同比增长501 16%~668 15%;
☞开车前8天(含)以上退票的,不收取退票费;☞票面乘车站开车时间前48小时以上的按票价5%计,24小时以上、不足48小时的按票价10%计,不足24小时
天孚通信:关于董事股份减持计划的预披露公告
中新网1月5日电1月4日,国际足球历史和统计联合会(IFFHS)评选出了2022年世界最佳球员,阿根廷球星梅西高票当选。
今晚报讯(记者刘桂芳)田园治愈剧《去有风的地方》3日在湖南卫视金鹰独播剧场、芒果TV双平台播出。《去有风的地方》由刘亦菲、李现领衔主演,
国金证券杨晨近期对航宇科技进行研究并发布了研究报告《航发环锻件核心供应商,产能与需求共振步入新阶段》,本报告对航宇科技给出买入评级,
(记者陈杭)今年北京城市副中心将更大力度推进重大项目、重点区域建设。特色小镇多点开花,张家湾设计小镇北京国际设计周永久会址落成,北泡二
富途资讯1月4日|恒指收涨3 22%,恒生科技指数涨4 58%,国指涨3 39%。截至今日收盘,港股上涨1253只,下跌709只,收平1010只。具体行业表
在生日夜的那场比赛里,詹姆斯轰下47分10篮板9助攻的准三双数据;也才没过多久,詹皇在对阵黄蜂的比赛中轰下43分11篮板6助攻的数据,帮助湖人
同花顺数据中心显示,安道麦A1月3日获融资买入208 47万元,占当日买入金额的11 04%,当前融资余额4877 53万元,占流通市值的0 25%,超过历史90
中午吃饭的时候,一旁的同事感叹:“不得不说,王岳伦作为爸爸,还是挺合格的。”怎么突然这么说?原来,有英国网友拍到王岳伦和女儿在逛街的
三诺生物(SZ300298,收盘价:36 08元)1月3日晚间发布公告称,2022年第四季度,三诺转债因转股减少可转债票面金额100元人民币(1张),转股数量为
1、过夜青菜加热不可以吃。2、过夜的青菜中含有对人体致癌的物质亚硝酸盐,食用过多有致癌的风险,亚硝酸盐进入胃里可与胃酸反应产生亚硝胺,
[ 相关新闻 ]
Copyright 2015-2022 热讯医院网 版权所有 备案号:豫ICP备20005723号-6 联系邮箱:29 59 11 57 8@qq.com