uniapp使用HQChart的k线,用webSocket更新数据
项目:不借用HQChart的各种接口数据,即数据后端返回,但是数据格式要和原数据格式一样。
//k线图
CreateHQChartKLine(){var chartHeight=uni.upx2px(this.ChartHeight);let hqchartCtrl=this.$refs.HQChartCtrl;hqchartCtrl.KLine.Option.Type="历史K线图";hqchartCtrl.KLine.Option.Language = uni.getLocale() == 'zh-CN' ? 'CN' : uni.getLocale() == 'zh-HK' ? 'TC' : 'EN'//设置语言hqchartCtrl.KLine.Option.DragDownload = {Minute:{Enable:true}}hqchartCtrl.KLine.Option.IsApiPeriod=true;hqchartCtrl.KLine.Option.Border.Right=1;hqchartCtrl.KLine.Option.Border.Left=1;hqchartCtrl.KLine.Option.Border.Top=0;hqchartCtrl.KLine.Option.Border.Bottom=25;hqchartCtrl.KLine.Option.IsCorssOnlyDrawKLine = falsehqchartCtrl.KLine.Option.CorssCursorTouchEnd = truehqchartCtrl.KLine.Option.EnableScrollUpDown = true//手势上下允许滚动页面hqchartCtrl.KLine.Option.IsClickShowCorssCursor = falsehqchartCtrl.KLine.Option.IsFullDraw=true;hqchartCtrl.KLine.Option.Windows = [{Index: "MA",Modify: true,Change: true,IsMainIndex: true,},{Index: "VOL",Modify: false,Change: false}]hqchartCtrl.KLine.Option.Frame = [{SplitCount: 4, //最多输出3个分隔线IsShowLeftText: false, //不显示左边刻度文字IsShowRightText: true, //显示右边刻度文字},{SplitCount: 2, //最多输出3个分隔线IsShowLeftText: false, //不显示左边刻度文字IsShowRightText: true, //显示右边刻度文字}]hqchartCtrl.KLine.Option.KLine = {Right: 0, //复权 0 不复权 1 前复权 2 后复权Period: 6, //周期: 0 日线 1 周线 2 月线 3 年线PageSize: 50,IsShowTooltip: false,//是否显示K线的tooltip信息}hqchartCtrl.KLine.Option.ExtendChart = [{Name: 'KLineTooltip'}]hqchartCtrl.KLine.Option.SplashTitle = ' ';let coinPrecision = uni.getStorageSync('coinPrecision')//设置保留小数位数// #ifdef H5// h5在this.DrawMaxMinPrice(26741 - umychart.uniapp.h5.js 2个Number()中)// 深度图 FrameSplitXDepth 46569 umychart.uniapp.h5.js Number()//this.SplitDefault 44919 umychart.uniapp.h5.js Number()HQChart.MARKET_SUFFIX_NAME.GetDefaultDecimal=(symbol)=> { return coinPrecision[this.detailMsg.coin].precision }// #endif// #ifndef H5// app在this.DrawMaxMinPrice(1541 - umychart.chartpaint.wechat.js 2个Number()中)//this.SplitDefault 627 umychart.framesplit.wechat.jsJSCommon.MARKET_SUFFIX_NAME.GetDefaultDecimal=(symbol)=> { return coinPrecision[this.detailMsg.coin].precision }// #endifhqchartCtrl.NetworkFilter=this.NetworkFilterKLine;//不使用插件接口,数据由后端返回hqchartCtrl.SetSize(uni.upx2px(this.ChartWidth),chartHeight);hqchartCtrl.OnSize();hqchartCtrl.CreateHQChart()hqchartCtrl.ChangeKLineIndex(this.kSetList[this.kSetIndex].windowId, this.kSetList[this.kSetIndex].name) //设置主图、MA\BOLL\隐藏
},
NetworkFilterKLine(data, callback){data.PreventDefault=true;//阻止插件接口请求var hqChartData={code:0, data:[]};hqChartData.symbol=this.detailMsg.coin + this.detailMsg.quoteUnit //这边用币种名称代替hqChartData.name=this.detailMsg.coin + this.detailMsg.quoteUnit //这边用币种名称代替if(data.Name == 'KLineChartContainer::RequestDragMinuteData'){//拉到最左侧,获取下一页数据this.page++}let a = {maxTime:this.page == 1 ? 0 : this.kLinesList[0].time,quote_unit:this.detailMsg.quoteUnit,pageSize:100,interval:this.kList[this.kCurrent].key,page:this.page,coin:this.detailMsg.coin}if(data.Name == 'KLineChartContainer::ReqeustHistoryMinuteData' || data.Name == 'KLineChartContainer::RequestDragMinuteData'){getKLinesDetail(a).then(res=>{if(res.code == 1){if(res.data.length != 0){this.kLinesList = res.datalet arr = []res.data.forEach((item,index)=>{//时间、null、开、高、低、收、量 插件的数据格式,time已经被我改成uview时间格式化形式,如果不想该源代码,就跟着作者大佬的数据结构来let objArr = [Number(item.time),null,Number(item.open),Number(item.high),Number(item.low),Number(item.close),Number(item.volume)]arr.push(objArr)})this.kLinesArr = this.page == 1 ? arr : this.kLinesArr.concat(arr)hqChartData.data = this.kLinesArr.sort(this.geiSfun())//重新排序// #ifdef H5callback(hqChartData);// #endif// #ifndef H5callback({data:hqChartData});// #endif}}})}//webSocket - 更新K线uni.$on('webSocket', item => {if (!isJSON(item.data.msgContent)){return}if (item.data.msgType==3&&this.kLinesList&&this.kLinesArr){let kObj = JSON.parse(item.data.msgContent)if(kObj.coin == this.detailMsg.coin){// 时间、null、开、高、低、收、量let kArr = [Number(kObj.time),null,Number(kObj.open),Number(kObj.high),Number(kObj.low),Number(kObj.close),Number(kObj.volume)]let itemIndex = this.kLinesArr.findIndex(item => {return item[0] == Number(kObj.time);});//查询webSocket的数据是否存在kLinesArr数组中,存在替换,不存在添加//因为项目的webSocket有时候会推送时间相同但是其他不同的数据,要查询到该时间所在下标并且替换,不要问为什么,问就是k线就是这么搞的(我也不懂,鶸)if(itemIndex == -1){this.kLinesArr.push(kArr)}else{this.kLinesArr[itemIndex] = kArr}let d = {code:0, data:[],ver:2}d.data = this.kLinesArr.sort(this.geiSfun())//不加symbol和name会报错d.symbol = this.detailMsg.coin + this.detailMsg.quoteUnitd.name = this.detailMsg.coin + this.detailMsg.quoteUnitcallback(d)}}})
},
geiSfun(){return function (a, b) {return a[0] - b[0];}
},
相关文章:
uniapp使用HQChart的k线,用webSocket更新数据
项目:不借用HQChart的各种接口数据,即数据后端返回,但是数据格式要和原数据格式一样。 //k线图 CreateHQChartKLine(){var chartHeightuni.upx2px(this.ChartHeight);let hqchartCtrlthis.$refs.HQChartCtrl;hqchartCtrl.KLine.Option.Type&…...

idea的Plugins中搜索不到插件
1、ctrlalts 打开设置 ; 2、搜索框输入plugins; 3、点击plugins; 4、点齿轮按钮,选择HTTP Proxy settings; 如下操作: 5、刷新DNS,ipconfig /flushdns 6、重新打开idea 的plugins 插件列表出来了...

flask 实现简单的登录系统demo
你提供的代码是一个基本的Flask应用程序,实现了一个简单的登录系统。以下是代码的详细解释: 1. 导入必要的模块:os 用于生成密钥,Flask 用于创建Web应用程序。 2. 创建Flask应用程序的实例,并为会话管理设置一个密钥。…...
Spring Security安全配置
使用Spring Boot与Spring MVC进行Web开发时,如果项目引入spring-boot- starter-security依赖启动器,MVC Security 安全管理功能就会自动生效,其默认的安全配置是在SecurityAutoConfiguration和UserDetailsServiceAutoConfiguration中实现的。…...
2023Java后端开发之100道常见经典面试题
目录 1.重载和重写的区别? 2.String 和 StringBuffer、StringBuilder 的区别是什么? 3. 与 equals 的区别? 4.抽象类和接口的区别是什么? 5. 面向对象的特点 6.Collection 和 Collections 有什么区别? 7.List、Set、Map 之…...
Redis详解,包括安装命令,应用场景,优缺点,案列分析,各个开发语言如何应用
目录 1、安装命令2、应用场景3、优缺点4、案例分析5、各个开发语言如何应用? Redis 是一个基于内存的开源数据库系统,被广泛应用于 Web 应用、消息队列、缓存、实时统计等领域。下面是 Redis 的详解,包括安装命令、应用场景和优缺点ÿ…...

AI数字人:金融数字化转型的“关键先生”
今年年初ChatGPT的火热,在全球掀起一阵生成式AI(AIGC)热潮。国外的OpenAI、国内的百度等企业,都在AIGC上强力布局。 各种应用场景中,AIGC助力的数字人引起了市场注意。 事实上,数字人不是个新鲜事。早在1…...

mac关闭VPN之后,浏览器就不能够正常上网了(图解)
可能打开谷歌浏览器会显示无法正常连接网络等信息,这个时候可以按照以下步骤: 点击"检查代理服务器地址" 会显示以下这段话,按照这个步骤来操作就可以了。 打开系统偏好设置,点击网络 点击高级 取消掉所有已勾选代…...

YOLOv5改进系列(17)——更换IoU之MPDIoU(ELSEVIER 2023|超越WIoU、EIoU等|实测涨点)
【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制...

基于WSL2、Ubuntu和VS Code的CUDA平台运行C语言程序
一、CUDA程序执行方法 执行步骤为: 安装Visual Studio Code。在Visual Studio Code中安装插件WSL与电脑的WSL2进行连接。点击左下角,然后再选择连接到WSL。 在WSL中创建以 .cu 为后缀的文件。 rootDESKTOP-HR6VO5J:~# mkdir CUDA /…...

构建外卖系统小程序,订单管理功能实现步骤详解
外卖系统小程序是近年来越来越受欢迎的一种订餐方式,方便快捷,并且可以减少人与人之间的接触,更加卫生安全。为了搭建一个完善的外卖系统小程序,订单管理功能是必不可少的一部分。在本文中,我们将详细介绍如何实现订单…...

用asp.net开发h5网页版视频播放网站,类似优酷,jellyfin,emby
之前用jellyfin开源软件搞了一个视频播放服务器,用来共享给家里人看电影和电视剧,jellyfin虽然各方面功能都很强大,但是界面和使用习惯都很不适合,于是就想着利用下班休息时间做一套自己喜欢的视频网站出来. 本来是打算直接用jellyfin的源码进行修改,源码是用C# netcore 写的服…...

Redis—相关背景
Redis—相关背景 🔎Redis—特性In-memory data structures—在内存中存储数据Programmability—可编程性Extensibility—可扩展性Persistence—持久化Clustering—集群High availability—高可用 🔎Redis 为什么快🔎Redis 的使用场景Real-tim…...

SSL 证书过期巡检脚本
哈喽大家好,我是咸鱼 我们知道 SSL 证书是会过期的,一旦过期之后需要重新申请。如果没有及时更换证书的话,就有可能导致网站出问题,给公司业务带来一定的影响 所以说我们要每隔一定时间去检查网站上的 SSL 证书是否过期 如果公…...

leetcode 面试题 01.03. URL化
⭐️ 题目描述 🌟 leetcode链接:面试题 01.03. URL化 思路: 计算出空格的个数,我们可以知道最后一个字符的位置 endPos,再从后 end 向前遍历若不是空格正常拷贝,是空格则替换成 %20,最终当空格…...

uni-app在小米手机上运行【步骤细节】
注意细节重点: 1.手机使用数据线与电脑连接,手机连接模式必须是传输文件模式 2.手机必须打开开发者模式 3.打开开发者模式后,仔细浏览并调整USB调试权限,重点打开USB是否允许安装按钮!!! 操作步…...

微信小程序实现日历功能、日历转换插件、calendar
文章目录 演示htmlJavaScript 演示 效果图 微信小程序实现交互 html <view wx:if"{{calendarArr.length}}"><view class"height_786 df_fdc_aic"><view class"grid_c7_104"><view class"font_weight_800 text_align…...

【浩鲸科技】济南Java后端面经
本文目录 写在前面试题总览题目解析1.说一下SpringBoot中常用的注解2.Redis中的基本数据类型3.TCP的网络协议4.java中常见的锁5.Hashmap的底层数据结构、底层源码、扩容机制源码6.java面向对象的特点 写在前面 关于这个专栏: 本专栏记录一些互联网大厂、小厂的面试实…...

VMware搭建Hadoop集群 for Windows(完整详细,实测可用)
目录 一、VMware 虚拟机安装 (1)虚拟机创建及配置 (2)创建工作文件夹 二、克隆虚拟机 三、配置虚拟机的网络 (1)虚拟网络配置 (2)配置虚拟机 主机名 (3…...
【Rust 基础篇】Rust关联类型:灵活的泛型抽象
导言 Rust是一种以安全性和高效性著称的系统级编程语言,其设计哲学是在不损失性能的前提下,保障代码的内存安全和线程安全。为了实现这一目标,Rust引入了"所有权系统"、"借用检查器"等特性,有效地避免了常见…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...

门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...

leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...