嵌入Table

工具JS

const twaver = require('twaver');
// 设置每个图元name的颜色
twaver.Styles.setStyle('label.color', '#ec6c00');
// 设置每个图元name2的颜色
twaver.Styles.setStyle('label2.color', '#57ab9a');
twaver.Styles.setStyle('select.color', '#ef8200');
//TWaver内部预定义六中告警级别
twaver.AlarmSeverity.CRITICAL = twaver.AlarmSeverity.add(500, 'Critical', 'C', "#FF0000");
twaver.AlarmSeverity.MAJOR = twaver.AlarmSeverity.add(400, 'Major', 'M', "#FFA000");
twaver.AlarmSeverity.MINOR = twaver.AlarmSeverity.add(300, 'Minor', 'm', "#FFFF00");
twaver.AlarmSeverity.WARNING = twaver.AlarmSeverity.add(200, 'Warning', 'W', "#00FFFF");
twaver.AlarmSeverity.INDETERMINATE = twaver.AlarmSeverity.add(100, 'Indeterminate', 'N', "#C800FF");
twaver.AlarmSeverity.CLEARED = twaver.AlarmSeverity.add(0, 'Cleared', 'R', "#00FF00");const { CRITICAL, MAJOR, WARNING, MINOR, INDETERMINATE, CLEARED } = twaver.AlarmSeverity
export const ALARM1 = CLEARED
export const ALARM2 = INDETERMINATE
export const ALARM3 = MINOR
export const ALARM4 = MAJOR
export const ALARM5 = CRITICAL/*** 创建一个dataBox容器* 容器中可以add图元*/
export const returnElementBoxFun = () => new twaver.ElementBox()/*** 创建一个画布 network对象* @param {ElementBox} box  创建一个画布 network对象*/
export const returnNetworkFun = (box) => new twaver.vector.Network(box)/*** 创建一个Group* 用于包裹图元*/
export const returnGroupFun = (box, obj = {}) => {let group = new twaver.Group(obj)box.add(group)return group
}/*** 创建一个容器dataBox和一个画布* 并将容器实例化画布* @returns [box,network] box network*/
export const returnElementBoxAndNetworkFun = () => {let box = returnElementBoxFun();let network = returnNetworkFun(box);return [box, network]
}/*** 用于创建一个节点* @param {ElementBox} box dataBox * @param {String} name 当前节点的name* @param {Number} x   当前节点的x坐标* @param {Number} y 当前节点的y坐标* @returns {Node} Node*/
export const returnNodeFun = (box, Obj = {}) => {let node = new twaver.Node(Obj);// node.setName(name);// node.setLocation(x, y);box.add(node);return node
}/*** * @param {Node} node1 节点1* @param {Node} node2 节点2*/
export const returnLineFun = (node1, node2) => new twaver.Link(node1, node2)/*** 注册图片 用于设置图元的img setImage* @param {String} url 图片 url* @param {NetWork} svg  NetWork对象*/
export function returnRegisterImage(url, svg) {var image = new Image();image.src = url;var views = arguments;image.onload = function () {// getImageName 获取到的图片name用做 node节点的显示imgtwaver.Util.registerImage(getImageName(url), image, image.width, image.height, svg === true);image.onload = null;for (var i = 1; i < views.length; i++) {var view = views[i];if (view.invalidateElementUIs) {view.invalidateElementUIs();}if (view.invalidateDisplay) {view.invalidateDisplay();}}};// getImageName 获取到的图片name用做 node节点的显示imgconst getImageName = (url) => {var index = url.lastIndexOf('/');var name = url;if (index >= 0) {name = url.substring(index + 1);}index = name.lastIndexOf('.');if (index >= 0) {name = name.substring(0, index);}return name;}
}/** @param {*} 告警的Id * @param {*} 告警网元的Id * @param {*} 告警级别 * @param {*} alarmBox 网元容器.getAlarmBox()*/
export const returnAlarmFun = (alarmID, elementID, alarmSeverity, alarmBox) => {var alarm = new twaver.Alarm(alarmID, elementID, alarmSeverity);alarmBox.add(alarm);
}/*** * @param {*} box 容器dataBox* @param {*} layer layer对象* @param {*} shape 图层的形状* @param {*} x node点的坐标* @param {*} y node点的坐标* @param {*} width 图层的宽高* @param {*} height 图层的宽高* @param {*} fillColor  图层填充颜色*/
/*** * shape * circle 圆形* diamond 菱形* rectangle 长方形*/
export const createNode = (box, layer, shape, x, y, width, height, fillColor, ) => {var node = new twaver.Node();node.setLayerId(layer.getId());node.setName('layer-' + layer.getId());node.setStyle('body.type', 'vector');node.setStyle('vector.fill.alpha', 0.7);node.setStyle('vector.shape', shape);node.setSize(width, height);node.setLocation(x, y);node.setStyle('vector.fill.color', fillColor);box.add(node); return node;
}
/*** * @param {*} table * @param {*} name * @param {*} propetyName * @param {*} propertyType * @param {*} valueType */
export const returnCreateColumn = (table, name, propetyName, propertyType, valueType) => {var column = new twaver.Column(name);column.setName(name);column.setPropertyName(propetyName);column.setPropertyType(propertyType);if (valueType) {column.setValueType(valueType);}table.getColumnBox().add(column);return column;
}export const returnRandomColor = () => {var r = randomInt(255);var g = randomInt(255);var b = randomInt(255);return '#' + formatNumber((r << 16) | (g << 8) | b);
}
function randomInt(n) {return Math.floor(Math.random() * n);
}function formatNumber(value) {var result = value.toString(16);while (result.length < 6) { result = '0' + result; } return result;
}

react页面

/** @Descripttion: * @version: * @Author: ZhangJunQing* @Date: 2022-04-18 14:44:05* @LastEditors: ZhangJunQing* @LastEditTime: 2022-04-19 09:46:22*/
import React, { useEffect, useState } from 'react'
import {returnElementBoxAndNetworkFun,returnCreateColumn,returnRandomColor,
} from './utils'
const twaver = require('twaver');
// const demo = require('demo');
const Demo = () => {const [network, setnetwork] = useState({})const init = () => {const [box, network] = returnElementBoxAndNetworkFun()setnetwork(_ => network)network.invalidateElementUIs();document.getElementById("testID").appendChild(network.getView());// 设置最初的大小network.adjustBounds({ x: 0, y: 0, width: 1000, height: 1000 });// 创建表格let table = new twaver.controls.Table(box);initDataBox()function initDataBox() {let node = new twaver.HTMLNode();node.setImage(null);var html = "";// 创建表头 和biaobodyhtml = `<div style='width:550px;'><div id='tableBoxTitle' style='width:550px;height:20px;text-align:center;background-color:#ccc;-moz-border-radius-topright: 10px;-moz-border-radius-topleft: 10px;-webkit-border-top-left-radius: 10px;-webkit-border-top-right-radius: 10px;'><span>表格标题栏</span></div><div id='tableBox' style='width:550px;'> </div> </div>`;node.setName(html);node.setLocation(300, 0);box.add(node);var i = 8;while (i-- > 0) {var data = new twaver.Node();data.setName("TWaver-" + i);data.setName2("TWaver-name2" + i);data.setLocation(Math.random() * 400+100, Math.random() * 400 + 300);data.s('inner.color', returnRandomColor());box.add(data);}}// 创建表格列returnCreateColumn(table, 'x坐标', `x`, 'accessor', 'string');returnCreateColumn(table, 'y坐标', `y`, 'accessor', 'string');returnCreateColumn(table, 'Name', 'name', 'accessor', 'string');returnCreateColumn(table, 'Name2', 'name2', 'accessor', 'string');returnCreateColumn(table, 'Id', 'id', 'accessor', 'string');returnCreateColumn(table, 'Icon', 'icon', 'accessor');returnCreateColumn(table, 'Inner Color', 'inner.color', 'style', 'color');// 表格增加数据network.addViewListener(function (e) {if (e.kind === 'validateEnd') {var tableBox = document.getElementById('tableBox');var tablePane = new twaver.controls.TablePane(table);var tableDom = tablePane.getView();tableDom.style.width = "550px";tableDom.style.height = "200px";tableBox.appendChild(tableDom);}});}useEffect(init, [])return (<><p style={{ fontSize: "20px", paddingLeft: "50px", poaddingTop: "50px" }}>tips: </p><ul style={{ fontSize: "20px", paddingLeft: "50px" }}><li>嵌入table</li></ul>{/* 画布元素需要开启定位 不然生成的图元坐标点会偏移 */}<div id="testID" style={{ width: "800px", height: "800px", border: "1px solid #ccc", position: "relative" }}></div></>)
}
export default Demo

学习参考:TWaver Documents

Twaver-HTML5基础学习(10)嵌入Table相关推荐

  1. HTML5基础学习——列表标签表单标签

    学习内容: 1.列表标签 表格是用来显示数据的,那么列表就是用来布局的. 列表最大的特点就是整齐.整洁.有序,它作为布局会更加自由和方便. 根据使用场景不同,列表可以分为三大类:无序列表.有序列表和自 ...

  2. 【html5基础学习速成】

    HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技术处理将其转换成为了可识别的信息.HTML5在从前HTML4.01的基础 ...

  3. 前端(HTML5基础学习笔记)

    以下学习路线都是基于自己看的黑马程序员视频总结而来 学习路线:HTML5 -> CSS3 -> H5C3 一.HTML简介 1. 网页 2. 常用游览器 3. Web标准(重点) 二.HT ...

  4. HTML5基础学习(7):登录表单制作、表单知识补充

    一.登录表单制作 有的时候用户需要填写信息,然后把填写完的信息交给服务器.把数据提交给服务器的动作就需要一个新的知识点:表单. (1)常见的表单控件 大部分的表单控件都是<input>编写 ...

  5. HTML5基础学习(5):百度云盘制作、简单表格制作

    一.百度云盘制作 (1)绝对地址与相对地址 绝对地址:在任何情况下,都可以找得到的地址.网页中下面图片所在的路径叫做绝对路径: <img src="http://1000phone.c ...

  6. HTML html5基础详细笔记 第一个模块

    第01章-前端核心技术-HTML5基础 学习目标 了解什么是HTML 掌握HTML标签.元素的概念 重点 掌握HTML常用头部元素的使用 重点 掌握HTML标题.段落.文本.图片等排版 重点 难点 掌 ...

  7. HTML5 在线学习网站

    HTML5 在线学习网站 摘要: HTML5的强大,让更多的人想要系统的学习它.但面对网上五花八门的搜索结果,是否无法抉择?文章作者以自己的实践经验,筛选出来11个在线学习HTML5开发的网站,让HT ...

  8. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日) 本周Silverlight学习资源更新 Silverlight + DomainServi ...

  9. html5代码_干货篇!零基础学习HTML5要用到的6款开发工具

    HTML5不是一种编程语言,而是一种标记语言,是程序员开发网页必用的一种开发工具.目前来说HTML5技术是非常火爆的,而且有专家预估在未来的10年HTML技术都不会过时.HTML5前景好,来学HTML ...

最新文章

  1. 玩JDK 12的Switch表达式
  2. 如何使用Spring Security和Basic身份验证保护Jersey REST服务
  3. java 构造器(constructor)
  4. Hibernate:More than one row with the given identifier was found解决办法
  5. html2canvas在不同设备生成图片大小不一致问题
  6. idea debug启动不了 模式下 报错 ‘Connected to the target VM,address:‘127.0.0.1:58337‘,transport:‘socket‘’
  7. NVIDIA/Apex安装时遇到 C++编译:unrecognized command line option ‘-std=c++14’ 错误解决
  8. H.264 AVC 编解码标准
  9. 工具系列——COMSOL Multiphysics 5.5安装教程
  10. 电子计算机出现的背景,世界第一台电子计算机产生的背景是什么
  11. 解决企业繁杂表单问题,还得看天翎表单引擎
  12. 【第二周】吴恩达团队AI for Medical Diagnosis大作业
  13. 网页版html怎么设置合适iPad,html – iPad缩放以适应在内容最少的网页上不起作用...
  14. Android 游戏引擎libgdx之Box2D Hello Box2D
  15. 一个有启发意义的故事
  16. 基于 HTML5 WebGL 的高炉炼铁厂可视化系统
  17. MVC4 jquery 样式 主题 用法(案例)
  18. 螺旋天线matlab仿真,螺旋天线矩量法matlab
  19. access下如何配置两个vlan_VLAN实验一:VLAN基础配置及Access接口
  20. Python之12306余票查询

热门文章

  1. 烽火18台系列之八——Webshell,隐藏在网站之下的潘多拉魔盒
  2. 计算机电子表格的相关试题,计算机考试电子表格模拟试题
  3. 如何使LinearLayout布局从右向左水平排列,而不是从左向右排列
  4. linux中运行c找不到conio.h,Linux 下没有conio.h 已解决(示例代码)
  5. 3.7V升5V2A兼容进口MP2359/AH6901
  6. LeetCode 例题精讲 | 08 排列组合问题:回溯法的候选集合
  7. linux的内核设计,Linux内核设计的艺术 清晰完整版PDF+配套源码
  8. 【python作品分享】密码锁3.0
  9. 硒鼓带不带芯片区别_硒鼓带芯片和不带芯片有什么区别
  10. C#实现的两个淘宝插件源码