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

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo