Slash后台管理系统源码阅读笔记 后面面板中的折线图统计卡片是怎么实现的?

本文主要是介绍Slash后台管理系统源码阅读笔记 后面面板中的折线图统计卡片是怎么实现的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前的笔记发表在博客和公众号以后,得到了一部分同学的喜爱的认可,所以今天继续。

目前这个管理系统的代码已经处理了一小部分:
在这里插入图片描述

接下来,我们看看第二栏那三个折线图统计卡片是怎么实现的。

这三个卡片还是使用的 antd 一行三列的布局方式,具体代码如下:

{/*折线图统计卡片*/}
<Row gutter={[16, 16]} className="mt-4" justify="center"><Col span={24} md={8}><TotalCardtitle="Total Active Users"increasecount="18,765"percent="2.6%"chartData={[22, 8, 35, 50, 82, 84, 77, 12, 87, 43]}/></Col><Col span={24} md={8}><TotalCardtitle="Total Installed"increasecount="4,876"percent="0.2%"chartData={[45, 52, 38, 24, 33, 26, 21, 20, 6]}/></Col><Col span={24} md={8}><TotalCardtitle="Total Downloads"increase={false}count="678"percent="0.1%"chartData={[35, 41, 62, 42, 13, 18, 29, 37, 36]}/></Col>
</Row>

首先,我们将标题改一下:

<Row gutter={[16, 16]} className="mt-4" justify="center"><Col span={24} md={8}><TotalCardtitle="活跃用户"increasecount="18,765"percent="2.6%"chartData={[22, 8, 35, 50, 82, 84, 77, 12, 87, 43]}/></Col><Col span={24} md={8}><TotalCardtitle="安装数量"increasecount="4,876"percent="0.2%"chartData={[45, 52, 38, 24, 33, 26, 21, 20, 6]}/></Col><Col span={24} md={8}><TotalCardtitle="下载数量"increase={false}count="678"percent="0.1%"chartData={[35, 41, 62, 42, 13, 18, 29, 37, 36]}/></Col>
</Row>

此时,页面渲染效果如下:
在这里插入图片描述

接着,我们看看统计卡片是怎么实现的:

import Card from '@/components/card';
import Chart from '@/components/chart/chart';
import useChart from '@/components/chart/useChart';
import { SvgIcon } from '@/components/icon';// 属性
type Props = {title: string; // 标题increase: boolean; //  是否增长percent: string; // 百分比count: string; // 数量chartData: number[]; // 图表数据
};// 统计卡片组件
export default function TotalCard({ title, increase, count, percent, chartData }: Props) {return (<Card><div className="flex-grow">{/*标题*/}<h6 className="text-sm font-medium">{title}</h6>{/*根据是否增长,动态显示icon图标*/}<div className="mb-2 mt-4 flex flex-row">{increase ? (<SvgIcon icon="ic_rise" size={24} color="rgb(34, 197, 94)" />) : (<SvgIcon icon="ic_decline" size={24} color="rgb(255, 86, 48)" />)}<div className="ml-2"><span>{increase ? '+' : '-'}</span><span>{percent}</span></div></div>{/*数量*/}<h3 className="text-2xl font-bold">{count}</h3></div>{/*折线图*/}<ChartLine data={chartData} /></Card>);
}// 折线图组件
function ChartLine({ data }: { data: number[] }) {const series = [{name: '',data,},];// 折线图选项const chartOptions = useChart({tooltip: {x: {show: false,},},xaxis: {labels: {show: false,showDuplicates: false,},tooltip: {enabled: false,},crosshairs: {show: false,},},yaxis: {labels: {show: false,},tooltip: {enabled: false,},crosshairs: {show: false,},},grid: {show: false,},});// 渲染图表return <Chart type="line" series={series} options={chartOptions} width={120} />;
}

在 ChartLine这个组件中,我们最终使用了Chart这个组件进行图表渲染,所以我们进一步看看Chart这个组件是怎么实现的。

import { memo } from 'react';
import ApexChart from 'react-apexcharts';import { useSettings } from '@/store/settingStore';
import { useThemeToken } from '@/theme/hooks';import { StyledApexChart } from './styles';import type { Props as ApexChartProps } from 'react-apexcharts';// 通用图表组件
function Chart(props: ApexChartProps) {const { themeMode } = useSettings();const theme = useThemeToken();return (// 使用CSS样式组件<StyledApexChart $thememode={themeMode} $theme={theme}>{/*最终使用ApexChart进行渲染*/}<ApexChart {...props} /></StyledApexChart>);
}export default memo(Chart);

我们可以看到,最终,使用的是 apex chart 这个库进行渲染的。

这个图表库的官网如下:https://apexcharts.com/
在这里插入图片描述

这个图标库同时支持JS,Angular,Vue,React进行使用,相关的DEMO地址如下:https://apexcharts.com/react-chart-demos/

在这里插入图片描述

如果大家感兴趣,可以给我点个赞,然后留言评论,留言的人多的话我可以给大家仔细的出一个这个库的使用说明以及一套视频教程,当然也可以报名跟我学习直播课或者私教课。

好了,这个笔记暂时写到这里。

在这个笔记中,我们主要讲解了 Slash 后台管理系统这个项目中,折线图统计卡片具体是如何实现的,追踪了一下具体的实现代码。

具体代码的实现细节,我在之前的笔记中有一些中文注释辅助大家查看。

创作不易,麻烦给个打赏,或者给个点赞和收藏,谢谢!

这篇关于Slash后台管理系统源码阅读笔记 后面面板中的折线图统计卡片是怎么实现的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004322

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja