基于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 相关文章推荐
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
javascript如何实现暂停功能
Nov 06 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
Jun 12 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
Dec 06 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
vue实现路由懒加载的3种方法示例
Sep 01 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
浅谈PHP语法(1)
2006/10/09 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
pyqt和pyside开发图形化界面
2014/01/22 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
python浪漫表白源码
2019/04/05 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
创业计划书中包含的9个方面
2013/12/26 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
党员承诺书范文2015
2015/04/27 职场文书
机器人瓦力观后感
2015/06/12 职场文书
法人代表资格证明书
2015/06/18 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL