49 Star 388 Fork 84

quark-renderer/quark-renderer

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
BORect.js 2.65 KB
一键复制 编辑 原始数据 按行查看 历史
Felix 提交于 2021-05-14 23:17 +08:00 . refactor
/* eslint-disable no-unused-vars */
import Element from '../graphic/Element';
import Group from '../graphic/Group';
import Text from '../graphic/Text';
import * as dataUtil from '../utils/data_structure_util';
class BORect extends Group {
constructor(options = {}) {
super(
dataUtil.merge(
{
title: 'BO_Title',
fields: [], //[{name:"userName",type="String"}]
},
options,
true,
),
);
/**
* @property {String} type
*/
this.type = 'BORect';
this.createFieldComponents();
}
render() {
super.render();
this.createFieldComponents();
}
createFieldComponents() {
this.removeAll();
const text = new Text({
style: {
x: 0,
y: 0,
text: this.title,
textFont: '24px Microsoft Yahei',
textPadding: [10, 10],
textPosition: 'insideLeft',
textFill: '#393e46',
},
draggable: false,
});
this.add(text);
this.fields.forEach((field, index) => {
const text = new Text({
style: {
x: 0,
y: (18 + 10) * (index + 2), //这里的 18 是字号,注意:这里手动计算高度有风险
text: `${field.name} ${field.type}`,
textFont: '18px Microsoft Yahei',
textPadding: [10, 10],
textPosition: 'insideLeft',
textFill: '#393e46',
},
draggable: false,
});
this.add(text);
});
}
/**
* 添加一个字段,name 不能重复
* JSON like Array.
* [{name:"userName",type="String"}]
* @param {*} field
* @returns
*/
addField(field) {
let exists = false;
this.fields &&
this.fields.length &&
this.fields.forEach(item => {
if (item.name === field.name) {
console.error(`Field ${item.name} already exists, add failed.`);
exists = true;
}
});
if (exists) return;
this.fields.push(field);
}
/**
* 根据 name 删掉一个字段
* @param {*} name
* @returns
*/
removeField(name) {
let exist = false;
this.fields &&
this.fields.length &&
this.fields.forEach((item, index) => {
if (item.name === name) {
exist = true;
this.fields.splice(index, 1);
return;
}
});
if (!exist) {
console.warn(`Field ${name} does not exist.`);
return;
}
}
toJSONObject() {
let result = Element.prototype.toJSONObject.call(this);
result.linkable = this.linkable;
result.title = this.title;
result.fields = this.fields;
result.nodeData = { fields: [...this.fields] };
return result;
}
}
export default BORect;
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/quark-renderer/quark-renderer.git
git@gitee.com:quark-renderer/quark-renderer.git
quark-renderer
quark-renderer
quark-renderer
268297bd5c881e6296c34aacb88b786a44dd4c6c

搜索帮助