HTML5 network topology diagram application example explanation
This article mainly introduces relevant information on the rapid development of HTML5-based network topology map applications. The editor thinks it is quite good, so I will share it with you now and give it as a reference. Let’s follow the editor to take a look, I hope it can help everyone.
Starting today, we will analyze how to build an HTML5 Canvas topology graph application from the most basic level. HT internally encapsulates a topology graph component ht.graph.GraphView (hereinafter referred to as GraphView), which is the component with the richest 2D functions in the HT framework. , and its related class libraries are under the ht.graph package. GraphView has basic graphics presentation and editing functions, topological node connection and automatic layout functions, predefined objects in industries such as electric power and telecommunications, and special effects such as animation rendering. Therefore, it has a wide range of applications and can be used as a drawing tool and human resource in the monitoring field. It has a machine interface and can be used as a general graphical editing tool and can be expanded into enterprise applications such as workflow and organization charts. To put it simply: topology diagram is a generalized term. Network topology diagram of telecommunications network management, power grid topology diagram, industrial control monitoring diagram, work flow diagram, thinking brain map, etc. Simply put, it is composed of node connections. These are the topological diagrams referred to here.
It is very easy to develop a network topology diagram using HT. It only takes a few lines of code to complete a simple server and client topology diagram:
This example is very basic and almost completes all the topological functions of the server and client. Without further ado, guess how many lines of code it took to include all parts of the HTML tags in this example? There are only 50 lines minus the blank lines. I also did a lot of style design. After all, the example for everyone can’t be too ugly~
You can download the code by yourself at tuputu_jb51.rar, please note that there is json File, there will be cross-domain problems with images, and you need to use Firefox or a local server to run it.
Let us explain at the beginning that HT is a one-stop solution for enterprise application graphical interface based on the HTML5 standard. It includes a rich graphical interface development class library such as general components, topology components and 3D rendering engines. Users only need to introduce ht.js, and it does not conflict with anything else at all, because HT only declares a global variable ht, nothing more.
Next, analyze the code part. First, build the topology map scene:
dm = new ht.DataModel();//数据容器 gv = new ht.graph.GraphView(dm);//拓扑组件 参数为dm 绑定的数据模型 gv.addToDOM();//将拓扑图添加进body体中
The root of all components of HT is a p, through getView() Method acquisition, we used this method in the addToDOM method:
addToDOM = function(){ var self = this, view = self.getView(), //获取组件底层 p style = view.style; document.body.appendChild(view);//将底层 p 添加进 body 体中 style.left = '0';//HT 一般将组件都设置为 absolute 的绝对定位 style.right = '0'; style.top = '0'; style.bottom = '0'; window.addEventListener('resize', function () { self.iv(); }, false); //事件监听窗口大小变化,iv 为延时刷新组件 }
Then add the "server" and "client" nodes to the topology scene:
var server = new ht.Node(); server.setName('server');//设置节点名称,显示在节点下方 server.setImage('serverImage');//设置节点图片 server.setSize(20, 60);//设置节点大小 dm.add(server);//将节点添加进数据容器dm中 server.setPosition(100, 100);//设置节点坐标(x, y) var group = new ht.Group();//组,组中可以有多个节点 group.setImage('groupImage');//设置图片 dm.add(group); var client = new ht.Node();//这个节点是添加进组中的 client.setName('client'); client.setImage('clientImage'); dm.add(client); group.addChild(client);//组添加孩子 group.setExpanded(true);//设置组为展开模式 client.setPosition(200, 100);//设置节点位置 如果组中只有一个节点,那么这个节点的位置可以为组的位置
The connection between the server and the client? 2 lines of code done! In fact, the method of adding nodes in HT is very simple. It usually only requires 2 lines of code: first declare the instance variable, and then add the instance variable to the data container.
var edge = new ht.Edge(server, client); dm.add(edge);
We are curious about how the dotted line is made? The formation of the dotted line is built on the connection line. There are three steps:
Introduce the ht-dashflow.js file;
The style attribute edge.dash.flow of the connection is set to true;
Turn on the switch of dashed line flow in the scene component, here is gv.enableDashFlow(true);
Isn’t it very simple! Next, let’s take a look at how to set it up:
edge.s({//节点设置样式属性 'edge.dash': true,//显示虚线 'edge.dash.flow': true,//开启虚线流动 'edge.dash.color': 'yellow',//虚线颜色 'edge.dash.pattern': [8, 8],//虚线样式 'label': 'flow',//节点注释 'label.background': 'pink',//节点注释背景颜色 });
In this way, all the display parts have been introduced~Wait, it seems like there is something missing? By the way, I forgot to introduce the ht.Group class in HT. As the name suggests, it means "group". A group can contain many nodes. Double-click to display or hide all nodes in the group. It is written in the above code, but I also did a little trick, that is, the display part in the upper right corner of the group is actually a mark, used to prompt instructions:
##
group.s({ 'group.background': 'rgba(255, 255, 0, 0.1)',//设置组的背景颜色 'note': "Double click me!",//标注 显示的内容 'note.position': 13,//标注位置 'note.offset.y': 10,//标注位置y轴偏移 });We can change it through note.position The position of the annotation (for specific location information, please refer to the HT for Web Position Manual), you can also use note.offset.x and note.offset.y to change the position of the annotation. All codes have been parsed! I will update as soon as possible. If you feel that the progress is slow, you can go to our official website (HT for Web) to learn by yourself. I hope you can gain more. Learning is your own business. Quickly practice and transform the content of this article into Make it your own knowledge!
Related recommendations:
Introduction to task scheduling topology diagram of directed graph
Detailed explanation of HTML5 network topology diagram integrating OpenLayers to implement GIS map application (picture)
Detailed graphic explanation of HTML5 network topology diagram performance optimization
The above is the detailed content of HTML5 network topology diagram application example explanation. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











When using HTML5SSE, the methods to deal with reconnection and errors include: 1. Understand the default reconnection mechanism. EventSource retrys 3 seconds after the connection is interrupted by default. You can customize the interval through the retry field; 2. Listen to the error event to deal with connection failure or parsing errors, distinguish error types and execute corresponding logic, such as network problems relying on automatic reconnection, server errors manually delay reconnection, and authentication failure refresh token; 3. Actively control the reconnection logic, such as manually closing and rebuilding the connection, setting the maximum number of retry times, combining navigator.onLine to judge network status to optimize the retry strategy. These measures can improve application stability and user experience.

HTML5, CSS and JavaScript should be efficiently combined with semantic tags, reasonable loading order and decoupling design. 1. Use HTML5 semantic tags, such as improving structural clarity and maintainability, which is conducive to SEO and barrier-free access; 2. CSS should be placed in, use external files and split by module to avoid inline styles and delayed loading problems; 3. JavaScript is recommended to be introduced in front, and use defer or async to load asynchronously to avoid blocking rendering; 4. Reduce strong dependence between the three, drive behavior through data-* attributes and class name control status, and improve collaboration efficiency through unified naming specifications. These methods can effectively optimize page performance and collaborate with teams.

Doctype is a statement that tells the browser which HTML standard to use to parse the page. Modern web pages only need to be written at the beginning of the HTML file. Its function is to ensure that the browser renders the page in standard mode rather than weird mode, and must be located on the first line, with no spaces or comments in front of it; there is only one correct way to write it, and it is not recommended to use old versions or other variants; other such as charset, viewport, etc. should be placed in part.

Server-SentEvents (SSE) is a lightweight solution provided by HTML5 to push real-time updates to the browser. It realizes one-way communication through long HTTP connections, which is suitable for stock market, notifications and other scenarios. Create EventSource instance and listen for messages when using: consteventSource=newEventSource('/stream'); eventSource.onmessage=function(event){console.log('Received message:',event.data);}; The server needs to set Content-Type to text/event

Using HTML5 semantic tags and Microdata can improve SEO because it helps search engines better understand page structure and content meaning. 1. Use HTML5 semantic tags such as,,,, and to clarify the function of page blocks, which helps search engines establish a more accurate page model; 2. Add Microdata structured data to mark specific content, such as article author, release date, product price, etc., so that search engines can identify information types and use them for display of rich media summary; 3. Pay attention to the correct use of tags to avoid confusion, avoid duplicate tags, test the effectiveness of structured data, regularly update to adapt to changes in schema.org, and combine with other SEO means to optimize for long-term.

It is a block-level element, suitable for layout; it is an inline element, suitable for wrapping text content. 1. Exclusively occupy a line, width, height and margins can be set, which are often used in structural layout; 2. No line breaks, the size is determined by the content, and is suitable for local text styles or dynamic operations; 3. When choosing, it should be judged based on whether the content needs independent space; 4. It cannot be nested and is not suitable for layout; 5. Priority is given to the use of semantic labels to improve structural clarity and accessibility.

When using HTML5Geolocation API to obtain user location, you must first obtain user authorization, and request and explain the purpose at the right time; the basic method is navigator.geolocation.getCurrentPosition(), which contains successful callbacks, wrong callbacks and configuration parameters; common reasons for failure include permission denied, browser not supported, network problems, etc., alternative solutions and clear prompts should be provided. The specific suggestions are as follows: 1. Request permissions when the user operation is triggered, such as clicking the button; 2. Use enableHighAccuracy, timeout, maximumAge and other parameters to optimize the positioning effect; 3. Error handling should distinguish between different errors

MSE (MediaSourceExtensions) is part of the W3C standard, allowing JavaScript to dynamically build media streams, thus enabling advanced video playback capabilities. It manages media sources through MediaSource, stores data from SourceBuffer, and represents the buffering time range through TimeRanges, allowing the browser to dynamically load and decode video clips. The process of using MSE includes: ① Create a MediaSource instance; ② Bind it to an element; ③ Add SourceBuffer to receive data in a specific format; ④ Get segmented data through fetch() and append it to the buffer. Common precautions include: ① Format compatibility issues; ② Time stamp pair
