如何快速构建一个交互式的JavaScript UI仪表板?用DHTMLX很简单!
DHTMLX Suite包含了超过20个UI小部件可以帮助开发功能齐全的Web应用程序。例如开发者可以创建一个全面的仪表板来可视化和监控票务系统的性能。在本文这个JavaScript仪表板教程中我们将介绍如何在DHTMLX Suite UI小部件和Optimus微框架的帮助下构建和配置交互式仪表板。DevExpress新旧版本帮助文档下载可进QQ qun获取169725316Demo概述查看和下载UI仪表板演示通过DHTMLX创建的UI仪表板允许用户创建新的票证将其分配给不同的公司部门并监视其性能。该Demo是使用以下小部件创建的:Grid网格显示收到的通知列表Charts图表跟踪年度销售额评估销售、市场、质量保证和技术支持部门的业绩Window窗口创建新票证DataView数据视图可视化开放门票列表Pagination分页简化数据网格中的导航Toolbar工具栏提供跨UI仪表板的导航Layout布局用于附加和排列所有的UI组件创建JavaScript UI Dashboard首先您必须dashboard demo并在设备上运行它构建UI仪表板的DHTMLX小部件被划分为多个视图可以分别初始化或配置每个小部件也可以删除它们。让我们来概述一下基于Optimus框架的UI仪表板demo。从index.html文件开始在文件的头部可以找到suite.js和suite.css包括DHTMLX套件及其所有组件。同样可以看到app.js和app.css来配置webpack!DOCTYPE html html langen head ... titleDHTMLX - UI Dashboard/title ... !-- Suite -- script typetext/javascript src./lib/suite/suite.js/script link relstylesheet href./lib/suite/suite.css/ !-- App -- script typetext/javascript src./app.js/script link relstylesheet href./app.css/ /head所有这些文件都包含在demo包中在body部分我们可以看到一个容器来渲染demobody section classdemo--container idtop_layout/section /body应用程序的初始化是通过render()方法完成的script const app new uidashboard.UIDashboardApp(); app.render(#top_layout); /scriptdemo的下一个主文件是index.js它包含呈现应用程序的UIDashboardApp类在index.html中被用来初始化我们上面描述的演示export class UIDashboardApp extends App { init() { this.tickets getTickets(); this.store new Store(initialState); this.params.store this.store; this.state this.store.getState(); this.subscribe(); dhx.scrollViewConfig.enable true; this.show(, TopLayout, { tickets: this.tickets, schedulerData, ganttData }); // TopLayout view this.use(HistoryManager); } subscribe() { this.on(modeChanged, id { this.state.mode id || dashboard; }); this.on(addTicketClicked, obj { this.tickets.add( { title: obj.title, text: obj.comment, type: obj.type, icon: Avatar_01, name: ${obj.name} ${obj.lastName}, comments: 0, time: new Date().getTime(), }, 0 ); }); } }UIDashboardApp类继承自index.js文件中包含的所有类TopLayout类是UI仪表板演示的下一个重要部分import ./assets/styles/main.scss; import { App } from dhx-optimus; import Store from dhx-optimus-store; import { getLocationParams } from ./helpers/url; import TopLayout from ./views/TopLayout; // TopLayout view import HistoryManager from ./components/HistoryManager; import { getTickets } from ./services/dataService;总而言之index.html和index.js文件是UI仪表板演示的基础。仪表板演示的下一个组件是Views文件块可以在view文件夹中找到它们每个视图都是一个ViewName.js文件。让我们从“unites”演示的TopLayout.js视图开始。在这里您可以看到如何构建和初始化TopLayout类它包括布局和标签栏export default class TopLayout extends View { init() { this.ui new dhx.Layout(null, layoutConfig); this.navigationBar new dhx.Tabbar(this.ui.getCell(tabbar), { mode: top, tabAlign: center, tabWidth: 200, noContent: true, views: [ { id: dashboard, tab: Dashboard }, ], }); this.navigationBar.events.on(change, id { this.fire(modeChanged, [id]); }); this.show(this.ui.getCell(top), TopBar); return this.ui; } ready() { this.observe( state state.mode, mode { const cell this.navigationBar.getCell(this.app.state.mode); if (cell) { cell.show(); } this.changeView(mode); } ); } changeView(id) { switch (id) { case dashboard: this.show(this.ui.getCell(center), Dashboard, { tickets: this.params.tickets }); break; default: this.show(this.ui.getCell(center), NotReady); break; } } }然后可以通过将其划分为三个单元格来配置布局const layoutConfig { rows: [ { id: top, height: content, }, { id: tabbar, height: content, }, { css: cell_center, id: center, }, ], };在这里你可以看到一个输出TopLayout类继承自以下类import { View } from dhx-optimus; import TopBar from ./TopBar; import Dashboard from ./Dashboard; // Dashboard demo现在我们准备概述Dashboard视图它初始化UI仪表板demo打开Dashboard.js文件。在这里可以看到Dashboard的初始化以及Layout的配置export default class Dashboard extends View { init() { this.ui new dhx.Layout(null, { type: space, cols: [ { type: wide, rows: [ { height: 50%, cols: [ { id: left-top, }, { id: left-bottom, }, ], }, { id: center, }, ], }, { id: right, width: 30%, minWidth: 440, maxWidth: 440, }, ], }); this.show(this.ui.getCell(right), Notifications); this.show(this.ui.getCell(center), Tickets, { tickets: this.params.tickets }); this.show(this.ui.getCell(left-top), SalesChart); this.show(this.ui.getCell(left-bottom), NotificationsChart); return this.ui; } }因此我们将Layout的中心单元格划分为4个部分Dashboard类继承自以下类import { View } from dhx-optimus; import Notifications from ./Notifications; import Tickets from ./Tickets; import SalesChart from ./SalesChart; import NotificationsChart from ./NotificationsChart;这就是创建DHTMLX UI仪表板演示的方法您会发现视图的结构是完全相同的。每个视图都将构建仪表板演示的一部分并在必要时从底层类继承。您可以打开每个视图的文件探索它们的结构并根据需求对它们进行配置。

相关新闻

VCL组件DevExpress VCL图表控件中文指南 - 如何实现值标签自定义?

VCL组件DevExpress VCL图表控件中文指南 - 如何实现值标签自定义?

DevExpress VCL拥有230个VCL界面控件、40个自定义设计的VCL应用主题,它能帮助您创建优异的用户体验,提供高影响力的业务解决方案,并利用您现有的VCL技能为未来构建下一代应用程序。 在刚更新的DevExpress VCL v23.1组件库中,包含…

2026/10/18 14:22:27 阅读更多 →
SSH-tools:为技术团队节省70%SSH管理时间的智能工具集

SSH-tools:为技术团队节省70%SSH管理时间的智能工具集

SSH-tools:为技术团队节省70%SSH管理时间的智能工具集 【免费下载链接】ssh-tools Making SSH more convenient 项目地址: https://gitcode.com/gh_mirrors/ss/ssh-tools 在日常运维和开发工作中,SSH连接管理是每个技术团队无法回避的基础工作。然…

2026/10/18 5:55:12 阅读更多 →
什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

DHTMLX Chart是DHTMLX最新发布的JavaScript UI小部件库的核心内容之一,这个图表小部件收到了几个重要的更新,但其中最引人注目的是一个新的数据可视化选项——日历热图。 DHTMLX专注于JavaScript和HTML5 UI小部件和库,以帮助开发人员更快地构…

2026/10/15 3:51:42 阅读更多 →

最新新闻

MySQL 5.7.40离线安装包部署指南:glibc2.12兼容与生产级配置

MySQL 5.7.40离线安装包部署指南:glibc2.12兼容与生产级配置

简介:本资源为MySQL 5.7.40官方二进制离线安装包,专为x86_64架构、glibc 2.12及以上版本的Linux系统设计,面向数据库运维工程师、Linux系统管理员及后端开发人员,解决无外网环境下的MySQL快速部署与初始化问题。压缩包共379个文件…

2026/10/18 14:22:30 阅读更多 →
2024电赛H题自动行驶小车:MSPM0G3507+JY61P工程实现与避坑指南

2024电赛H题自动行驶小车:MSPM0G3507+JY61P工程实现与避坑指南

简介:针对2024年全国大学生电子设计竞赛H题开发的自动行驶小车完整工程源码,采用德州仪器MSPM0G3507作为主控,配合JY61P九轴姿态传感器与OLED显示模块,完整实现姿态解算、双电机差速转向和速度控制、运行状态实时显示等功能。资源…

2026/10/18 14:22:30 阅读更多 →
匿名管道实现Linux进程池:IPC并发任务分发实战

匿名管道实现Linux进程池:IPC并发任务分发实战

刚接触Linux系统编程那会儿,我被一道面试题卡了很久:如果只允许用进程,不引入额外依赖,你会怎么设计一个轻量级的并发任务分发机制?有人答共享内存加锁,有人答消息队列,其实在父子进程协同的场景…

2026/10/18 14:22:30 阅读更多 →
前端性能优化实战:从全局Loading到大数据渲染卡顿的治理方案

前端性能优化实战:从全局Loading到大数据渲染卡顿的治理方案

先别急着上虚拟列表,也别一股脑把loading都换成骨架屏。直接说结论:只要你的页面同时出现“一个全局loading转圈”和“一次性拉回几千行数据”这两件事,主线程卡顿几乎是必然的,而且根源往往不在你最先怀疑的那个环节。这不是我故…

2026/10/18 14:22:30 阅读更多 →
Vue+Node.js电子外设商城系统架构设计与实现

Vue+Node.js电子外设商城系统架构设计与实现

这个项目标题拿到手里,第一反应是"又一个商城系统",但真把它拆开看,"电子外设"这四个字才是关键。我前后做过几个商城类的项目,从图书到生鲜都碰过,电子外设这个品类在商品建模、订单流程、库存管…

2026/10/18 14:22:30 阅读更多 →
老旧ARM盒子部署可道云:Docker自建私有网盘的完整实战

老旧ARM盒子部署可道云:Docker自建私有网盘的完整实战

玩ARM盒子的人,迟早会走到“自建私有网盘”这一步。手头一台吃灰的ARM设备,刷上Armbian 5.77(Debian 9),跑在老旧内核上,想要一个能传大文件、能在线看文档、能挂到电脑上当网络硬盘的Web网盘,可…

2026/10/18 14:21:29 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →