HQChart使用教程101-创建内置键盘精灵
HQChart使用教程101-创建内置键盘精灵
- 键盘精灵
- 步骤
- 1. 创建键盘精灵实例
- 2. 设置事件回调
- 3. 初始化键盘精灵
- 4. 设置码表数据
- 5. 监听"keydown","mousedown"
- 交流QQ群
- HQChart代码地址
- 键盘精灵源码
- 完整实例
键盘精灵
键盘精灵是一种便捷操作软件的功能工具,通过按键实现快速功能操作。

目前内置1.0版本只支持切换股票, 后续会增加快捷键,切换指标等功能
测试页面地址:https://jones2000.github.io/HQChart/webhqchart.demo/samples/keyboard_demo.html
步骤
1. 创建键盘精灵实例
var hqKeyboard=new JSPopKeyboard();
2. 设置事件回调
设置键盘精灵选中事件
hqKeyboard.Keyboard.Option.EventCallback=
[{event:JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED, //切换股票callback:(event, data, obj)=>{ console.log("[JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED] data", data)hqKeyboard.Hide();if (data && data.Data && data.Data.Symbol){klineControl.Chart.Focus();klineControl.ChangeSymbol(data.Data.Symbol);} }},
]
3. 初始化键盘精灵
hqKeyboard.Inital();
hqKeyboard.Create();
4. 设置码表数据
....
//TODO 请求码表数据
hqKeyboard.SetSymbolData(data)
码表格式
[{ Symbol:完整的股票代码(带后缀的),Name:股票名称,ShortSymbol:股票代码(不后缀的),Spell:拼音缩写TypeName:类型名称,可以自己取如“股票“,”指数“Color:单行文字颜色(可选)},]
5. 监听"keydown",“mousedown”
“keydown” 用来处理键盘输入
“mousedown” 用来处理点击其他区域隐藏键盘精灵
document.addEventListener('keydown', (event) =>
{var div=document.getElementById('kline'); if (div.contains(event.target)) //在K线上才出来键盘精灵{hqKeyboard.OnGlobalKeydown(event) }
});document.addEventListener("mousedown", (event)=>{ hqKeyboard.OnGlobalMouseDown(event) })
交流QQ群
如果还有问题可以加交流QQ群, 群号在git首页可以找到。
HQChart代码地址
github.com/jones2000/HQChart
键盘精灵源码
- umychart.keyboard.js
- umychart.PopKeyboard.js
完整实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /><title>键盘精灵</title> <link rel="stylesheet" href="../jscommon/umychart.resource/css/tools.css" /><link rel="stylesheet" href="../jscommon/umychart.resource/font/iconfont.css" />
</head>
<body><div id="kline"></div><script src="../jscommon/umychart.resource/js/jquery.min.js"></script><script src="../jscommon/umychart.resource/js/webfont.js"></script><script src='../jscommon/umychart.console.js'></script> <!-- 日志输出 --><script src="../jscommon/umychart.network.js"></script> <!-- 网络请求分装 --><script src="../jscommon/umychart.js"></script> <!-- K线图形 --><script src="../jscommon/umychart.complier.js"></script> <!-- 麦语言解析执行器 --><script src="../jscommon/umychart.index.data.js"></script> <!-- 基础指标库 --><script src="../jscommon/umychart.style.js"></script> <!-- 白色风格和黑色风格配置信息 --><script src="../jscommon/umychart.popMenu.js"></script><script src="../jscommon/umychart.DialogDrawTool.js"></script><script src="../jscommon/umychart.PopMinuteChart.js"></script><script src="../jscommon/umychart.report.js"></script><script src="../jscommon/umychart.keyboard.js"></script><script src="../jscommon/umychart.PopKeyboard.js"></script><script src="../jscommon/umychart.version.js"></script><script src="../jscommon/umychart.NetworkFilterTest.js"></script><script src="../jscommon/umychart.testdata/symbollist_shsz.js"></script><script>//简单的把K线控件封装下function KLineChart(divKLine){this.DivKLine=divKLine;this.Chart=JSChart.Init(divKLine); //把K线图绑定到一个Div上//K线配置信息this.Option= {Type:'历史K线图', //创建图形类型Windows: //窗口指标[{Index:"MA"},{Index:"MACD"},{Index:"RSI"},], EnableYDrag:{Right:true,Left:true,},Symbol:"600000.sh",IsAutoUpdate:true, //是自动更新数据AutoUpdateFrequency:30000, //数据更新频率EnablePopMenuV2:true,IsShowRightMenu:true, //右键菜单CorssCursorInfo: { Right:2, DateFormatType:3, HPenType:1, VPenType:1 ,VLineType:0,RightButton:{ Enable:true }, IsShowCorss:true, PriceFormatType:0, DataFormatType:0 },EnableZoomIndexWindow:true,KLine: //K线设置{DragMode:1, //拖拽模式 0 禁止拖拽 1 数据拖拽 2 区间选择Right:0, //复权 0 不复权 1 前复权 2 后复权Period:0, //周期 0 日线 1 周线 2 月线 3 年线 MaxRequestDataCount:600, //数据个数MaxRequestMinuteDayCount:5, //分钟数据获取几天数据 默认取5天数据PageSize:50, //一屏显示多少数据IsShowTooltip:true, //是否显示K线提示信息DrawType:0, //K线类型 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图KLineDoubleClick:false, //禁止双击弹框RightSpaceCount:3,ZoomType:0,//DataWidth:5},EnableIndexChartDrag:true,KLineTitle: //标题设置{IsShowName:true, //不显示股票名称IsShowSettingInfo:true //不显示周期/复权},Border: //边框{Left:0, //左边间距Right:90, //右边间距Bottom:25, //底部间距Top:25, //顶部间距//AutoLeft:{ Blank:10, MinWidth:30 },AutoRight:{ Blank:5, MinWidth:60 },},Frame: //子框架设置[]};this.Create=function() //创建图形{var self=this;$(window).resize(function() { self.OnSize( ); }); //绑定窗口大小变化事件var blackStyle=HQChartStyle.GetStyleConfig(STYLE_TYPE_ID.BLACK_ID); //读取黑色风格配置blackStyle.DisableLogo=true;JSChart.SetStyle(blackStyle);this.DivKLine.style.backgroundColor=blackStyle.BGColor; //设置最外面的div背景JSChart.GetResource().ToolbarButtonStyle=1;this.OnSize(); //让K线全屏this.Option.NetworkFilter=(data, callback)=>{ HQData.NetworkFilter(data, callback); }this.Chart.SetOption(this.Option); //设置K线配置}this.OnSize=function(option) //自适应大小调整{var height= $(window).height();var width = $(window).width();//width=50000;this.DivKLine.style.top='0px';this.DivKLine.style.left='0px';this.DivKLine.style.width=width+'px';this.DivKLine.style.height=height+'px';this.Chart.OnSize(option);}this.ChangeSymbol=function(symbol){this.Chart.ChangeSymbol(symbol);}}$(function () {WebFont.load({ custom: { families: ['iconfont'] } }); //预加载下iconfont资源var klineControl=new KLineChart(document.getElementById('kline'));klineControl.Create();var hqKeyboard=new JSPopKeyboard();hqKeyboard.Keyboard.Option.EventCallback=[{event:JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED, //切换股票callback:(event, data, obj)=>{ console.log("[JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED] data", data)hqKeyboard.Hide();if (!data || !data.RowData) return;var selItem=data.RowData;if (selItem.Data.Type===0){klineControl.Chart.Focus();klineControl.ChangeSymbol(selItem.Data.Symbol);}else if (selItem.Data.Type===1){klineControl.Chart.Focus();klineControl.Chart.ChangeIndex(0,selItem.Data.Index);}else if (selItem.Data.Type===2){alert(`跳转'${selItem.Data.PageName}'页面`);}}},]hqKeyboard.Inital();hqKeyboard.Create();HQData.Keyboard_RequestSymbolList(null, (data)=>{ hqKeyboard.SetSymbolData(data); }); //请求码表数据document.addEventListener('keydown', (event) =>{var div=document.getElementById('kline'); if (div.contains(event.target)) //在K线上才出来键盘精灵{hqKeyboard.OnGlobalKeydown(event) }});document.addEventListener("mousedown", (event)=>{ hqKeyboard.OnGlobalMouseDown(event) })klineControl.Chart.Focus(); //设置焦点在K线上})</script>
</body>
</html><style>.kline
{position: relative
}</style>相关文章:
HQChart使用教程101-创建内置键盘精灵
HQChart使用教程101-创建内置键盘精灵 键盘精灵步骤1. 创建键盘精灵实例2. 设置事件回调3. 初始化键盘精灵4. 设置码表数据5. 监听"keydown","mousedown" 交流QQ群HQChart代码地址键盘精灵源码 完整实例 键盘精灵 键盘精灵是一种便捷操作软件的功能工具&a…...
nginx基础配置
1. https配置 首先在nginx.conf中配置https 2. 重定向 rewrite ^/(.*)$ https://www.sxl1.com/$1 permanent;3. 自动索引 autoindex on;4. 缓存 Nginx expire缓存配置: 缓存可以降低网站带宽,加速用户访问location ~ .*\.(gif|jpg|png)$ {expires 365d;roo…...
怿星科技与您相约——2024 Testing Expo
汽车测试及质量监控博览会(中国)Testing Expo China-Automotive 怿星科技展位路线 届时欢迎莅临2057号展台!...
mac本地搭建docker+k8s步骤
概览: * kubectl安装 * minikube安装 * dashboard安装 主机配置: * mac M2 (arm架构) 服务及版本概览: 服务名称版本 kubectl v1.29.2 Kubernetes v1.30.0 kicbase v0.0.44 dashboard v2.7.0 docker 26.…...
JS DOM、点击事件
JS DOM 加载事件onload js代码执行的时候,需要html&css的支持 onload在页面加载完之后执行 dom:用JS对html标签进行增删改查 元素节点获取 var name document.getElementById("userName"); var inputs document.getElementsByTagNam…...
长短期记忆网络(LSTM)预测模型及其Python和MATLAB实现
## 一、背景 长短期记忆(Long Short-Term Memory, LSTM)网络是由 Sepp Hochreiter 和 Jrgen Schmidhuber 在 1997 年提出的一种特殊的循环神经网络(RNN)结构。LSTM 旨在解决传统 RNN 在处理长序列数据时常见的梯度消失和梯度爆炸…...
C语言——操作符详解
目录 1.操作符的分类 2.原码、反码和补码 3.移位操作符 3.1 左移操作符 3.2 右移操作符 4.位操作符 4.1 按位与& 4.2 按位或| 4.3 按位异或^ 编辑 4.4 按位取反~ 4.5 应用题 4.5.1 题目:不能创建临时变量,实现两个整数的交换 4.5.2 …...
【Linux】内核全量函数添加日志打印摸索
1、操作系统在空载时要把函数调用次数非常多的注释掉,这里打印时不能带进程名称,高执行概率函数不同进程执行到的概率也很高,不然操作业务会增加卡死的概率; 2、卡死一般是调用次数太多导致,会卡住操作系统十多秒&…...
24/8/17算法笔记 CQL算法离线学习
离线学习:不需要更新数据 CQL(Conservative Q-Learning)算法是一种用于离线强化学习的方法,它通过学习一个保守的Q函数来解决标准离线RL方法可能由于数据集和学习到的策略之间的分布偏移而导致的过高估计问题 。CQL算法的核心思想…...
C++第十一弹 -- STL之List的剖析与使用
文章索引 前言1. list的介绍2 list的使用2.1 list的构造函数2.2 iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers 3. list的迭代器失效4. list与vector的对比总结 前言 本篇我们旨在探讨对于STL中list的使用, 下一篇我们将会对list进行底层剖析以及…...
物流快递外卖管理平台系统-计算机毕设Java|springboot实战项目
🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…...
开源BaaS 平台介绍
以下是几款常见的开源后端平台,它们提供了用户管理、权限验证、文件存储、API 管理等类似的后端功能。 1. Parse Server 简介: Parse 是一个非常流行的开源后端服务平台,它最初由 Facebook 开发,后来开源。它支持用户管理、数据存储、文件存…...
分享一个基于python爬虫的“今日头条”新闻数据分析可视化系统(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
QT自定义信号槽
1.自定义信号槽 使用connect()可以让我们连接系统提供的信号和槽,同时也可以自定义信号槽。 例如以学生和老师构建类同时当老师触发信号下课同学收到信号执行“吃饭”这一动作代码示例 #include "SignalAndSlot.h" //Teacher Student 总框架…...
one-shot 序列图像红外小目标分割
one-shot 序列图像红外小目标分割 IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING 代码还未开源 GitHub - D-IceIce/one-shot-IRSTS few-shot:利用少量标注样本进行学习 one-shot: 属于few-shot的特殊情况,只用一个样本进行学习 zero-shot&am…...
JavaScript 单线程防阻塞的原理
JavaScript 是一种单线程语言,这意味着它一次只能执行一个任务。这种设计可能会导致一些问题,比如当遇到耗时的操作时,整个程序可能会被阻塞。为了解决这个问题,JavaScript 使用了事件循环和回调函数的机制,实现了非阻塞式的异步操作。 事件循环 JavaScript 有一个事件队列,用…...
Shell脚本发送邮件的详细步骤与配置方法?
Shell脚本发送邮件的进阶技巧?怎么配置Shell脚本发信? 使用Shell脚本发送邮件是一种高效的自动化手段,特别是在需要定期发送报告、通知或警告信息时。AokSend将详细介绍Shell脚本发送邮件的步骤与配置方法,帮助您更好地掌握这一技…...
如何把Phalcon 集成到PhpStorm里面
一 背景 按照上一篇文章里面写的Phalcon 创建项目过程中的一些坑, 最终我们在终端可以基于Phalcon命令创建对应的开发项目。但在这个过程中,存在一个问题:那就是写代码的时候,发现Phalcon对应的依赖提示都没有,如下: 从上面这个截图来看,就能发现,Phalcon的啥…...
python从入门到精通:循环语句
目录 前言 1、while循环的基础语法 2、while循环的嵌套 3、for循环的基础语法 range语句: for循环临时变量作用域: 4、for循环的嵌套 5、循环中断:break和continue 前言 循环普遍存在于日常生活中,同样,在程序中…...
Codeforces Round 965 (Div. 2)
前言 有人在过七夕,我在打 cf ,还有某人独自一人在学校机房,凌晨一点骑上共享单车回宿舍欣赏沿途的秋风扫落叶。 Standings:2166 题目链接:Dashboard - Codeforces Round 965 (Div. 2) - Codeforces A. Find K Distin…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
