基于VUE的v-charts的曲线显示功能


Posted in Javascript onOctober 01, 2019

1. 应用背景

在做一个某路灯管理处的物联网项目时,需要统计8个电表的电能曲线(时间-电能),需求就是能生成日报(24个点,间隔1小时,实时),月报(30个点,间隔1天,取每天的凌晨1点数据),年报(每个月,1号凌晨1点数据开始间隔9天,每个月取3个点,总共36个点)。

2. 分析数据生产者生成

首先采集服务每隔一段时间会去采集电表的电能数据,模拟历史表会利用存储过程将实时数据写入his_aic表里。

3. 取出数据消费者

30天 aic数据4万条记录左右 日报,月报可以直接在历史数据表中取
日表,定时任务,每隔1小时存入整点数据(如果没有整点,排序之后取接近点数据),一天24个数据,一年8760条记录。
月表,定时

任务,每天凌晨1点取数据,按时间存入,一个月30条记录
年表,定时任务,1号,10号,19号,28号(每个月取4个数据,按时间记录,一年48条记录)
定时任务利用Coravel定时器完成,具体可参见Coravel定时器相关博客

4. 前端显示

前端曲线基于v-chart。

在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化、修改复杂的配置项,v-charts 的出现正是为了解决这个痛点。基于 Vue2.0 和 echarts 封装的 v-charts 图表组件,只需要统一提供一种对前后端都友好的数据格式设置简单的配置项,便可轻松生成常见的图表。

4.1 安装V-charts插件

npm i v-charts echarts -S

如果已经安装了echarts,则直接安装v-charts即可

npm i v-charts -S

4.2 引入veline曲线插件

import VeLine from 'v-charts/lib/line'

4.3 曲线标签 ve-line

4.3.1 方法一:直接使用html标签

<template>
 <div>
  <ve-line :data="chartData" :settings="chartSettings"></ve-line>
 </div>
</template>

4.3.2 方法二:pug编译

4.3.2.1 pug的安装

先安装node环境

安装支持pug依赖:npm install pug pug-loader pug-filters -D
安装支持jade依赖:npm install jade jade-loader -D

4.3.2.2 pug的使用

<template lang="pug">
     div
      ve-line(:data='chartData', :settings='chartSettings')
</template>

注意:使用pug空格数量要与上下文对应

4.4 前端写入调试模拟数据

export default {
 data(){  
  return {
   chartData: {
    columns: ['日期','电能1','电能2','电能3','电能4','电能5','电能6','电能7','电能8'],
    rows: [
     { '日期': '10月1日', '电能1': 0, '电能2': 1, '电能3': 0.5, '电能4': 0.63,'电能5': 0.8, '电能6': 2, '电能7': 2.1, '电能8': 1.7 },
     { '日期': '10月2日', '电能1': 1, '电能2': 2, '电能3': 4, '电能4': 0.9,'电能5': 1.1, '电能6': 2.1, '电能7': 4.3, '电能8': 2.6 },
     { '日期': '10月3日', '电能1': 1.6, '电能2': 2.6, '电能3': 4.5, '电能4': 1.9,'电能5': 2.3, '电能6': 3.5, '电能7': 5.3, '电能8': 3.2 },
     { '日期': '10月4日', '电能1': 2.3, '电能2': 5.2, '电能3': 5.4, '电能4': 2.7,'电能5': 3.2, '电能6': 4.3, '电能7': 6.8, '电能8': 3.5 },
     { '日期': '10月5日', '电能1': 3.8, '电能2': 6.2, '电能3': 6.4, '电能4': 4.5,'电能5': 4.5, '电能6': 6.5, '电能7': 7.1, '电能8': 5.5 },
     { '日期': '10月6日', '电能1': 5.3, '电能2': 6.8, '电能3': 8.4, '电能4': 5.6,'电能5': 6.3, '电能6': 7.8, '电能7': 7.5, '电能8': 7.3 }
    ]
   },
   chartSettings: {
     yAxisName: ['kWh']
   },
  }
 }
 components: { VeLine }
}

使用 data 属性表示图表的数据,使用 settings 用作图表的显示状态配置,settings 中所包含的是具体的图表配置,这里通过yAxisName设置电能单位为kWh

4.5 注册组件

4.4中已经加入了注册组件的代码。

components: { VeLine  }

5 总体效果

基于VUE的v-charts的曲线显示功能

这里只展示了月报里的7天,可以设置按钮同样道理依次展示日报年报数据。

Javascript 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
前端开发过程中浏览器版本的两种判定方法
Oct 30 Javascript
Javascript中this的用法详解
Sep 22 Javascript
javascript 闭包详解
Jul 02 Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 Javascript
JavaScript中的原型继承基础学习教程
May 06 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
d3绘制基本的柱形图的实现代码
Dec 12 Javascript
小程序转发探索示例
Feb 19 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
javascript数组的定义及操作实例
Nov 10 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 #Javascript
javascript实现摄像头拍照预览
Sep 30 #Javascript
java和js实现的洗牌小程序
Sep 30 #Javascript
JS使用H5实现图片预览功能
Sep 30 #Javascript
在vue中使用jsx语法的使用方法
Sep 30 #Javascript
微信小程序自定义tabBar在uni-app的适配详解
Sep 30 #Javascript
详解小程序云开发攻略(解决最棘手的问题)
Sep 30 #Javascript
You might like
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
使用PHP编写的SVN类
2013/07/18 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
jQuery技巧总结
2011/01/01 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
深入理解javascript中的this
2021/02/08 Javascript
python win32 简单操作方法
2017/05/25 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
python实现接口并发测试脚本
2019/06/25 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Django视图类型总结
2021/02/17 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
马智宇结婚主持词
2014/04/01 职场文书
设计顾问服务计划书
2014/05/04 职场文书
新文化运动的口号
2014/06/21 职场文书
小学优秀学生评语
2014/12/29 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
Python爬取某拍短视频
2021/06/11 Python