「实战应用」如何用图表控件LightningChart JS创建SQL仪表板应用(二)

LightningChart JS是Web上性能特高的图表库,具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用,从而实现高刷新率和流畅的动画,常用于贸易,工程,航空航天,医药和其他领域的应用。

在上文中(点击这里回顾>>),我们主要介绍了SQL仪表板应用程序、项目概述、技术要求等内容,本文将继续介绍SQL Server无API自动化、Angular开发、图表开发等内容,持续关注我们哦~

立即申请LightningChart JS新版下载

SQL Server No-API自动化

如果您有使用SQL Server的经验,理解表的实体关系是没有问题的。尽管这些查询看起来很难理解,但它们将作为您进行调整的基础。

如何在没有API的情况下自动化SQL Server流程?

  1. 使用CMD Shell命令将JSON文件保存到与Angular项目共享的路径中。
  2. 创建在特定日期时间执行存储过程的SQL Server JOB。

恢复备份时,必须使用恢复工具:

图表控件LightningChart JS使用教程

然后你必须选择[Device], [add]选项,找到.bak文件:

图表控件LightningChart JS使用教程

最后,确认并运行备份。

Angular开发

使用Visual Studio Code,您将需要打开SQL Dashboard项目,一旦打开,将看到以下结构:

图表控件LightningChart JS使用教程

在安装项目依赖项之前,node_modules文件夹将不可用。为此您必须打开一个新的终端并运行npm install命令。您需要在电脑上安装Angular才能执行它的命令,可以通过执行下面的命令来实现:

npm install -g @angular/cli.

全局属性(-g)会全局安装Angular,并允许您在本地计算机上使用包中的代码作为一组工具。一旦项目配置好了,就可以继续代码审查了。

App.component

组件是Angular应用中最基本的UI构建块,Angular组件是指令的一个子集,总是与模板相关联,App组件是Angular在从头生成项目时创建的。

我们将使用这个组件作为父组件,它将包含仪表板的内容。HTML文件将包含导航栏和主体,其他模板将在其上呈现。

<header class="navbar navbar-dark sticky-top shadow" style="background-color: #3F4858;">
<div class="container-fluid">
<a class="navbar-brand" href="#">LightningChart - Article Ranking Analysis</a>
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasDarkNavbar" aria-controls="offcanvasDarkNavbar" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>

值得一提的是,这些类属于Bootstrap v5,类的结构和名称必须保持相同,来利用Bootstrap的优点,包括响应性、外观和效果。在其声明中,模块文件将包含项目中的其余组件:

@NgModule({
declarations: [
AppComponent,
RankingComponent,
DonutChartComponent,
StepSeriesChartComponent,
HorizontalBarChartComponent,
VerticalBarChartComponent,
],
路由

路由器通过将浏览器URL解释为改变视图的指令来实现导航,条形图中的每个菜单项都必须添加到路由器中:

const appRoutes:Routes=[
{ path:'rank', component:RankingComponent},
];

图表控件LightningChart JS使用教程

RankingComponent是我们的排名视图的组件,它将包含仪表板图表。

<li class="nav-item">
<a class="nav-link" href="/ranking">Ranking</a>
</li>
图表开发

在Charts文件夹中,我们将找到4-Dashboard图表的组件:

图表控件LightningChart JS使用教程

组件具有相同的结构:CSS、HTML、Typescript,在每个CSS文件中,我们将看到为HTML div元素指定了一个以像素为单位的高度:

div { height: 350px;}

由于图表组件将在其HTML结构中只使用一个DIV(将包含图表的DIV),因此将为图表分配一个最大高度,以防止图表过大或过小。在HTML文件中,我们将创建包含图表的div:

<div [id]="100"></div>

我们将为它分配一个ID,以帮助LightningChart JS查找并分配将显示图表的HTML对象。

Component.ts

这个文件将包含创建图表的逻辑,首先我们将看到帮助构建图表的模块,以及实现图表所需的Angular模块:

import { Component, Input, AfterViewInit, OnChanges, OnDestroy } from '@angular/core';
import { lightningChart, ChartXY, Point, PieChartTypes, UIElementBuilders, LegendBoxBuilders, Themes, SliceLabelFormatters, UIOrigins, UIDraggingModes, emptyFill, emptyLine, AxisTickStrategies, SolidFill, SolidLine, Animator, transparentFill, Chart, PieChart, ColorRGBA } from '@arction/lcjs';
import donutdata from "../../../assets/data/data.json";

有一个JSON文件导入,该文件将包含由SQL Server存储过程(getDashboardJSONData)生成的JSON。

let TOTAL_NUMBER_ARTICLES_CATEGORY = donutdata.TOTAL_NUMBER_ARTICLES_CATEGORY

JSON对象将被分配给一个变量,该变量稍后将用于映射和格式化数据。授权JSON对象将包含授权许可的字符串,并将分配给LightningChart JS库的授权许可属性:

const lc = lightningchart({license: licenseJson.license})
this.chart = lc
.BarChart({
type. BarChartTypes.Horizontal,
theme: Themes.lightningNature,
container: '200',
})

您可以获得一个免费的使用LightningChart JS授权(可联系“在线客服”获取),有了这个授权,您将能够访问完整的库并继续实施这个项目。要更新license,必须进入文件license,并替换它的值:

图表控件LightningChart JS使用教程

{"license":"xxx-xxxx"}

容器属性必须具有与HTML文件中创建的DIV元素相同的组件ID,包含JSON文件的变量将用于为图表提供所需的格式:

for (let i = 0; i < TOTAL_NUMBER_ARTICLES_CATEGORY.length; i++) {
totalVisitor += TOTAL_NUMBER_ARTICLES_CATEGORY[i].ARTICLES_COUNT;
processedData.push({ name: `${TOTAL_NUMBER_ARTICLES_CATEGORY[i].CATEGORY}`, value: TOTAL_NUMBER_ARTICLES_CATEGORY[i].ARTICLES_COUNT })
}

JSON映射和格式化代码将根据图表而更改,视觉属性也会有所不同,但是每个属性都可以在官方的LightningChart JS文档中查阅,所有图表组件的导入模块和授权设置将保持不变。

@Component({
selector: 'app-donut-chart',
templateUrl: './donut-chart.component.html',
styleUrls: ['./donut-chart.component.css']
})

上面的代码显示了三个属性,每个属性引用一个HTML模板和一个样式文件。

  • selector属性告诉Angular,只要在HTML模板中找到相应的标签,就创建一个该组件的实例。
  • 选择器值很重要,因为我们将通过它将每个图表组件加载到Ranking组件中。

篇幅有限,更多精彩内容我们下期再见......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/704578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最新大屏幕互动系统PHP源码 附动态背景图和配乐素材

本文来自&#xff1a;最新大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程 - 源码1688 应用介绍 简介&#xff1a; 最新大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程 测试环境&#xff1a;NginxPHP7.0MySQL5.6 前端图片&#xff1a; 后台图片&#x…

使用 Elasticsearch 设计大规模向量搜索

作者&#xff1a;Jim Ferenczi 第 1 部分&#xff1a;高保真密集向量搜索 简介 在设计向量搜索体验时&#xff0c;可用选项的数量之多可能会让人感到不知所措。最初&#xff0c;管理少量向量很简单&#xff0c;但随着应用程序的扩展&#xff0c;这很快就会成为瓶颈。 在本系列…

深度学习长文|使用 JAX 进行 AI 模型训练

引言 在人工智能模型的开发旅程中&#xff0c;选择正确的机器学习开发框架是一项至关重要的决策。历史上&#xff0c;众多库都曾竞相争夺“人工智能开发者首选框架”这一令人垂涎的称号。&#xff08;你是否还记得 Caffe 和 Theano&#xff1f;&#xff09;在过去的几年里&…

负压式水帘风机和一体式水帘风机的特点

负压式水帘风机和一体式水帘风机各有其独特的特点&#xff0c;以下是它们的特点归纳&#xff1a; 负压式水帘风机特点&#xff1a; 高效节能&#xff1a; 通过水帘与负压风机的配合&#xff0c;模拟自然界的蒸发降温过程&#xff0c;耗电量仅为传统空调的十分之一&#xff0c…

写个代码扫描插件,再也不怕 log4j 等问题

引言 关于静态代码扫描&#xff0c;大家想必都非常熟悉了&#xff0c;比如 lint、detekt 等&#xff0c;这些也都是常用的扫描工具。但随着隐私合规在国内越来越趋于常态&#xff0c;我们经常需要考虑某些危险api的调用排查等等&#xff0c;此时上述的工具往往不容易实现现有的…

Python内存管理与垃圾回收机制

目录 一、引言 二、Python内存管理概述 三、引用计数机制 四、垃圾回收机制 标记-清除&#xff08;Mark-and-Sweep&#xff09; 分代收集&#xff08;Generational Collection&#xff09; 五、内存泄漏与优化 六、总结 一、引言 Python作为一门高级编程语言&#xff…

MySQL查询优化最佳实践15条(建议收藏)

目录 1 优化方法&#xff08;15条&#xff09; 2 总结 MySQL的数据库常规查询的过程中性能的优化非常重要&#xff0c;其中很多点是和开发习惯有关&#xff0c;能熟练掌握不只能提高工作的效率&#xff0c;同时也能提高个人的技能。有一些优化的技巧同样也适合于其他的数据库…

2024中国通信技术产业博览会:JUNO光缆与WaveLogic 6技术,海洋深处的数字脉搏

在数字化时代&#xff0c;通信技术是连接世界的桥梁。NTT DATA主导的JUNO海底光缆计划&#xff0c;通过部署Ciena的WaveLogic 6技术&#xff0c;标志着全球通信网络容量的一次重大飞跃。这一进步不仅加强了亚洲与北美之间的数据连接&#xff0c;更为即将到来的“2024中国军民两…

华为云EI生态

1、人工智能技术趋势 2、华为AI发展思路 3、华为云EI&#xff1a;让企业更智能 4、华为云服务全景图 5、基础平台类服务 6、MLS:解决特性到模型应用的完整过程 7.DLS 8.GES超大规模一体化图分析与查询 9、EI视觉认知 10、EI语音语义 11、OCR&#xff1a;提供高精度光学文字自动…

OpenCV特征匹配

1、OpenCV Brute-Force匹配器 Brute-Force匹配器的匹配方法非常简单&#xff0c;输入两张图像所分别对应的特征&#xff08;特征点坐标与特征点域对应的描述子&#xff09;&#xff0c;循环遍历两幅图像中的特征&#xff0c;计算第一幅图像与第二幅图像之间每个特征点之间的距…

49.Python-web框架-Django解决多语言redirect时把post改为get的问题

目录 1.背景 2.思路 3.寻找 Find and Replace 4.再次运行程序&#xff0c;POST来了 5.小结 1.背景 昨天在练习一个Django功能时&#xff0c;把form的method设置为POST&#xff0c;但是实际提交时&#xff0c;一直是GET方法。最后发现这是与多语言相关&#xff0c;django前面…

Linux - 复盘一次句柄数引发的故障

文章目录 Pre&#xff08;内核、用户、进程&#xff09;句柄数设置问题 shell修复 Pre Linux - 深入理解/proc虚拟文件系统&#xff1a;从基础到高级 &#xff08;内核、用户、进程&#xff09;句柄数设置 在Linux系统中&#xff0c;进程打开的最大句柄数可以通过多种方式配置…

计算机组成原理 期末复习笔记整理(上)(个人复习笔记/侵删/有不足之处欢迎斧正)

零、计算机的发展 冯.诺依曼计算机的特点: 1.计算机由五大部件组成 2.指令和数据以同等地位存于存储器&#xff0c;可按地址寻访 3.指令和数据用二进制表示 4.指令由操作码和地址码组成 5.存储程序&#xff08;首次提出存储结构&#xff09; 6.以运算器为中心&#xff08;现代…

大众点评全国美食POI采集780万家-2024年5月底

大众点评全国美食POI采集780万家-2024年5月底 店铺POI点位示例&#xff1a; 店铺id H8kTSRz3kLUQ2WtU 店铺名称 幸福西饼生日蛋糕(布心店) 十分制服务评分 8.2 十分制环境评分 8.4 十分制划算评分 8.3 人均价格 75 评价数量 119033 店铺地址 金稻田路1068号边防布心住…

Python文件操作与IO:从基础到高级技巧的完整指南

目录 一、引言 二、基础文件操作 打开文件 写入文件 读取和写入二进制文件 四、文件路径处理 五、文件操作的高级技巧 上下文管理器&#xff08;with 语句&#xff09; 文件锁 文件编码 使用内置模块处理文件 文件压缩与解压缩 六、案例&#xff1a;处理日志文件 …

支付卡产业最新发布PCI DSS v4.0.1

自2022年3月PCI DSS v4.0发布以来&#xff0c;受到全球支付产业高度关注&#xff0c;为了解决来自所有产业相关者的反馈和问题&#xff0c;PCI安全标准委员会&#xff08;PCI SSC&#xff09;发布了该标准的修订版PCI DSS v4.0.1。其中包括对格式和印刷错误的更正&#xff0c;也…

顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH) 一、最大通话时间 1、配置拨号方案 1、点击拨号方案 ->2、在框中输入通话最大时长->3、点击添加->4、根据图中配置->5、勾选continue。修改拨号方案需要等待一分钟即可生效 action"sched…

基于Pytorch实现AI写藏头诗

网上你找了一圈发现开源的代码不是付费订阅就是代码有问题,基于Pytorch实现AI写藏头诗看我这篇就够了。 用到的工具:华为云ModelArts平台的notebook/Pycharm/Vscode都行。 镜像:pytorch1.8-cuda10.2-cudnn7-ubuntu18.04,有GPU优先使用GPU资源。 实验背景 在短时测试使用场…

变电站SF6-O2在线监控报警系统在电力行业的创新应用

一、六氟化硫是什么&#xff1f; 六氟化硫又称为SF6&#xff0c;这种气体在常温常压下为无色无臭无毒的气体。不燃烧。对热稳定&#xff0c;没有腐蚀性&#xff0c;可以作为通用材料。电绝缘性能和消弧性能好&#xff0c;绝缘性能为空气的2&#xff5e;3倍&#xff0c;而且气体…

外网如何访问公司内网服务器?

在现代商业环境中&#xff0c;随着信息技术的快速发展&#xff0c;越来越多的公司有需求让远程用户在外网环境下访问公司内网服务器。这在很大程度上提高了远程办公的灵活性和效率。由于安全和网络限制等问题&#xff0c;实现这一目标并不是一件容易的事情。 在处理这个问题时…