Twaver-HTML5基础学习(28)工具条(添加自定义按钮_自定义事件)

简介: 这篇文章介绍了如何在Twaver-HTML5中创建工具条,添加自定义按钮,并绑定自定义事件,包括放大、缩小、占满屏幕和重置画布大小的功能。

工具条(添加自定义按钮_自定义事件)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

react代码

/*
 * @Descripttion: 
 * @version: 
 * @Author: ZhangJunQing
 * @Date: 2022-04-18 14:44:05
 * @LastEditors: ZhangJunQing
 * @LastEditTime: 2022-04-29 15:27:48
 */
import React, {
    useEffect, useState } from 'react'
import {
   
    returnElementBoxAndNetworkFun,
    returnNodeFun,
    returnLineFun,
    returnRegisterImage,
    returnGroupFun
} 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: 800, height: 800 });
        // network.getView().style.backgroundColor = "#fff"
        network.getView().style.border = "2px solid #ccc"
        var toolbar = document.createElement('div');

        const initNetwork=() =>{
   
            var networkPane = new twaver.controls.BorderPane(network, toolbar);
            networkPane.setTopHeight(50);
            var view = networkPane.getView();
            view.style.left = '0px';
            view.style.top = '0px';
            view.style.right = '0px';
            view.style.bottom = '0px';

            document.getElementById("testID").appendChild(view);
            window.onresize = function () {
   
                networkPane.invalidate();
                };
        }

        const   initToolbar=()=> {
   
            //自定义事件
            addButton(toolbar, '自定义事件', function () {
   
                alert('哈哈哈')
            });
                    //zoom in放大 
            addButton(toolbar, '放大', function () {
   
                    network.zoomIn();
            });
            // zoom out缩小
                addButton(toolbar, '缩小',  function () {
   
                    network.zoomOut();
            });
            // 沾满当前视图
                addButton(toolbar, '占满屏幕',  function () {
   
                    network.zoomOverview();
            });
            // 重置到默认大小
                addButton(toolbar, '重置',  function () {
   
                    network.zoomReset();
            });
}

        function addButton(toolbar, label,  handler) {
   
            var button = document.createElement('input');
            button.value = label;
            button.onclick = handler;
            // button.setAttribute('type', src ? 'image' : 'button');
            button.setAttribute('type', 'button');
            button.setAttribute('style', 'padding-left:20px;line-height:50px;cursor:pointer;');
            button.value = label; 
            toolbar.appendChild(button); 
        } 
        function initBox() {
   
            var from = new twaver.Node(); 
            from.setName('From');
            from.setLocation(100, 100); 
            box.add(from); 
            var to = new twaver.Node(); 
            to.setName('To'); 
            to.setLocation(300, 300); 
            box.add(to); 
            var link = new twaver.Link(from, to); 
            link.setName('Link');
            box.add(link);
            }
        init()
                function init() {
   
                initToolbar();
                initNetwork();
                initBox();
        }

    }
    useEffect(init, [])
    return (
        <>
            <p style={
   {
    fontSize: "20px", paddingLeft: "50px", poaddingTop: "50px" }}>tips: </p>
            <ul style={
   {
    fontSize: "20px", paddingLeft: "50px" }}>
                <li>过滤器</li>
            </ul>
            {
   /* 画布元素需要开启定位 不然生成的图元坐标点会偏移 */}
            <div id="testID" style={
   {
    width: "800px", height: "800px", border: "1px solid #ccc", position: "relative", margin: "0 auto" }}></div>
        </>
    )
}
export default Demo

1.创建BorderPane
2.定位
3.var toolbar = document.createElement(‘div’);中添加按钮元素,添加click事件

network.zoomIn();放大
network.zoomOut();缩小
network.zoomOverview();占满屏幕
network.zoomReset();重置画布大小

学习参考:TWaver Documents

目录
相关文章
|
1天前
|
前端开发 容器
Twaver-HTML5基础学习(24)快速查找(QuickFinder)
文章介绍了Twaver中的快速查找工具QuickFinder,用于根据属性值快速查找网络图中的元素,并提供了使用步骤和React代码示例。
11 2
Twaver-HTML5基础学习(24)快速查找(QuickFinder)
|
1天前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(23)页管理容器(TabBox)、选中模型(SelectionModel)
本文介绍了Twaver HTML5中的页管理容器(TabBox)和选中模型(SelectionModel)。文章解释了如何使用TabBox来管理Tab页,并通过示例代码展示了SelectionModel的多种功能,包括追加选中元素、设置选中元素、选中所有元素、移除元素选中状态、清除所有选中状态等。此外,还介绍了如何监听选中状态的变化事件以及如何设置不同的选中模式,如多选、单选和不可选。
13 2
Twaver-HTML5基础学习(23)页管理容器(TabBox)、选中模型(SelectionModel)
|
1天前
Twaver-HTML5基础学习(29)界面交互
这篇文章介绍了Twaver-HTML5中界面交互的多种模式,包括默认模式、编辑模式、创建网元模式、创建连线模式、创建形状连线模式、创建形状网元模式、触屏模式和放大镜模式,并提供了相应的代码示例。
22 10
Twaver-HTML5基础学习(29)界面交互
|
1天前
|
移动开发 数据管理 HTML5
Twaver-HTML5基础学习(22)层管理容器(LayerBox)、告警管理容器(AlarmBox)、列管理容器(ColumnBox)、属性管理容器(PropertyBox)
本文介绍了Twaver HTML5中的多种管理容器:层管理容器(LayerBox)、告警管理容器(AlarmBox)、列管理容器(ColumnBox)和属性管理容器(PropertyBox)。文章解释了这些容器的作用、如何获取它们,并提供了一些基本的操作方法。这些容器分别用于管理图层、告警、表格列和属性对象,是TWaver中数据管理和组织的重要部分。
9 1
|
1天前
Twaver-HTML5基础学习(27)过滤器
这篇文章介绍了Twaver-HTML5中过滤器的使用,包括可见过滤器、可移动过滤器和可编辑过滤器,并通过代码示例展示了如何通过设置过滤器实现不同用户权限或网元类型的交互和视图。
15 8
Twaver-HTML5基础学习(27)过滤器
|
1天前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(26)背景
这篇文章介绍了如何在Twaver-HTML5中设置背景,包括栅格图片、颜色、颜色渐变、基本形状以及图片与形状结合的背景类型,并提供了代码示例。
13 6
Twaver-HTML5基础学习(26)背景
|
1天前
|
数据可视化 前端开发
Twaver-HTML5基础学习(25)网元可视化视图组件(Network)
这篇文章介绍了Twaver-HTML5中的网元可视化视图组件(Network)的层次结构,包括view、rootCanvas和topCanvas的使用方法和示例。
16 6
|
移动开发 前端开发 HTML5
|
移动开发 JavaScript HTML5
|
16天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)