hqchart 1.1.13238 → 1.1.13245

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13238",
3
+ "version": "1.1.13245",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -0,0 +1,427 @@
1
+ /*
2
+ Copyright (c) 2018 jones
3
+
4
+ http://www.apache.org/licenses/LICENSE-2.0
5
+
6
+ 开源项目 https://github.com/jones2000/HQChart
7
+
8
+ jones_2000@163.com
9
+
10
+ 内置画图工具 设置框
11
+ */
12
+
13
+ JS_DRAWTOOL_MENU_ID=
14
+ {
15
+ CMD_SELECTED_ID:1,
16
+ CMD_CHANGE_LINE_COLOR_ID:2,
17
+ CMD_DELETE_ALL_RAW_CHART_ID:3
18
+ };
19
+
20
+ function JSDialogDrawTool()
21
+ {
22
+ this.AryChartGroup=
23
+ [
24
+ {
25
+ Title:"线段",
26
+ AryChart:
27
+ [
28
+ { Title: '线段', ClassName: 'hqchart_drawtool icon-draw_line', Type:0, Data:{ ID:"线段" } },
29
+ { Title: '射线', ClassName: 'hqchart_drawtool icon-draw_rays', Type:0, Data:{ ID:"射线" } },
30
+ { Title: '标价线', ClassName: 'hqchart_drawtool icon-price_line', Type:0, Data:{ ID:"标价线" } },
31
+ { Title: '垂直线', ClassName: 'hqchart_drawtool icon-vertical_line', Type:0, Data:{ ID:"垂直线" } },
32
+ { Title: '箭头', ClassName: 'hqchart_drawtool icon-draw_rays', Type:0, Data:{ ID:"箭头" } },
33
+ { Title: '趋势线', ClassName: 'hqchart_drawtool icon-draw_trendline', Type:0, Data:{ ID:"趋势线" } },
34
+ { Title: '水平线', ClassName: 'hqchart_drawtool icon-draw_hline', Type:0, Data:{ ID:"水平线" } },
35
+ { Title: '涂鸦线段', ClassName: 'hqchart_drawtool icon-draw_line', Type:0, Data:{ ID:"涂鸦线段" } },
36
+ ]
37
+ },
38
+ {
39
+ Title:"通道",
40
+ AryChart:
41
+ [
42
+ { Title: '平行线', ClassName: 'hqchart_drawtool icon-draw_parallel_lines', Type:0, Data:{ ID:"平行线" } },
43
+ { Title: '水平线段', ClassName: 'hqchart_drawtool icon-draw_hlinesegment', Type:0, Data:{ ID:"水平线段" } },
44
+ { Title: '平行射线', ClassName: 'hqchart_drawtool icon-draw_p_rays_lines', Type:0, Data:{ ID:"平行射线" } },
45
+ { Title: '平行通道', ClassName: 'hqchart_drawtool icon-draw_parallelchannel',Type:0, Data:{ ID:"平行通道" } },
46
+ { Title: '价格通道线', ClassName: 'hqchart_drawtool icon-draw_pricechannel', Type:0, Data:{ ID:"价格通道线" } },
47
+ { Title: '箱型线', ClassName: 'iconfont icon-draw_box', Type:0, Data:{ ID:"箱型线" } },
48
+ { Title:"不相交通道", ClassName:"hqchart_drawtool icon-buxiangjiaojiao", Type:0, Data:{ ID:"DisjointChannel"} },
49
+ { Title:"平滑顶/底", ClassName:"hqchart_drawtool icon-tubiao_buxiangjiaotongdao", Type:0, Data:{ ID:"FlatTop"}}
50
+ ]
51
+ },
52
+ {
53
+ Title:"多边形",
54
+ AryChart:
55
+ [
56
+ { Title: '圆弧线', ClassName: 'hqchart_drawtool icon-draw_arc', Type:0, Data:{ ID:"圆弧线" } },
57
+ { Title: '矩形', ClassName: 'hqchart_drawtool icon-rectangle', Type:0, Data:{ ID:"矩形" } },
58
+ { Title: '平行四边形', ClassName: 'hqchart_drawtool icon-draw_quadrangle', Type:0, Data:{ ID:"平行四边形" } },
59
+ { Title: '三角形', ClassName: 'hqchart_drawtool icon-draw_triangle', Type:0, Data:{ ID:"三角形" } },
60
+ { Title: '圆', ClassName: 'hqchart_drawtool icon-draw_circle', Type:0, Data:{ ID:"圆" } },
61
+ { Title: '对称角度', ClassName: 'hqchart_drawtool icon-draw_symangle', Type:0, Data:{ ID:"对称角度" } },
62
+ ]
63
+ },
64
+ {
65
+ Title:"波浪线",
66
+ AryChart:
67
+ [
68
+ { Title: 'M头W底', ClassName: 'hqchart_drawtool icon-draw_wavemw', Type:0, Data:{ ID:"M头W底" } },
69
+ { Title: '头肩型', ClassName: 'hqchart_drawtool icon-draw_head_shoulders_bt', Type:0, Data:{ ID:"头肩型" } },
70
+ { Title: '波浪尺', ClassName: 'hqchart_drawtool icon-waveruler', Type:0, Data:{ ID:"波浪尺" } },
71
+ { Title: 'AB波浪尺', ClassName: 'hqchart_drawtool icon-waveruler', Type:0, Data:{ ID:"AB波浪尺" } },
72
+ ]
73
+ },
74
+ {
75
+ Title:"测量工具",
76
+ AryChart:
77
+ [
78
+ { Title: '价格范围', ClassName: 'hqchart_drawtool icon-shijianfanwei', Type:0, Data:{ ID:"PriceRange" } },
79
+ { Title: '时间范围', ClassName: 'hqchart_drawtool icon-jiagefanwei', Type:0, Data:{ ID:"DateRange" } },
80
+ ]
81
+ },
82
+ {
83
+ Title:"文字",
84
+ AryChart:
85
+ [
86
+ { Title: '价格标签', ClassName: 'hqchart_drawtool icon-Tooltip', Type:0, Data:{ ID:"PriceLabel" } },
87
+ { Title: '价格注释', ClassName: 'hqchart_drawtool icon-tooltiptext', Type:0, Data:{ ID:"PriceNote" } },
88
+ { Title: '向上箭头', ClassName: 'iconfont icon-arrow_up', Type:0, Data:{ ID:"icon-arrow_up" } },
89
+ { Title: '向下箭头', ClassName: 'iconfont icon-arrow_down', Type:0, Data:{ ID:"icon-arrow_down" } },
90
+ { Title: '向左箭头', ClassName: 'iconfont icon-arrow_left', Type:0, Data:{ ID:"icon-arrow_left" }},
91
+ { Title: '向右箭头', ClassName: 'iconfont icon-arrow_right', Type:0, Data:{ ID:"icon-arrow_right" }},
92
+ ]
93
+ }
94
+
95
+ ];
96
+
97
+ this.ToolConfig=
98
+ {
99
+ Title:"工具",
100
+ AryTool:
101
+ [
102
+ { Title:"选中", ClassName:'hqchart_drawtool icon-arrow', Type:1, Data:{ID:JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID} },
103
+ { Title:'尺子', ClassName: 'hqchart_drawtool icon-ruler', Type:0, Data:{ ID:"尺子" } },
104
+ { Title:"点击切换颜色", ClassName: 'hqchart_drawtool icon-fangkuai', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID }},
105
+ { Title:"删除所有画线", ClassName: 'hqchart_drawtool icon-recycle_bin', Type:2, Data:{ ID:JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_RAW_CHART_ID }}
106
+ ]
107
+ };
108
+
109
+
110
+ this.DivDialog=null;
111
+ this.AryDivChart=[];
112
+ this.HQChart=null;
113
+ this.LineColor='rgb(255,140,0)';
114
+ this.LineColorIndex=0;
115
+ this.RandomLineColor=["rgb(255,69,0)", "rgb(0,191,255)", "rgb(255,0,255)", "rgb(255,105,180)"];
116
+ this.LineWidth=1*GetDevicePixelRatio();
117
+ this.ColumnCount=4;
118
+
119
+ this.DragTitle=null;
120
+
121
+ this.Inital=function(hqchart)
122
+ {
123
+ this.LineColor=g_JSChartResource.DrawPicture.LineColor[0];
124
+ this.RandomLineColor.splice(0,0,this.LineColor);
125
+ this.HQChart=hqchart;
126
+ }
127
+
128
+ this.Create=function()
129
+ {
130
+ var divDom=document.createElement("div");
131
+ divDom.className='UMyChart_DrawTool_Dialog_Div';
132
+
133
+ var divTitle=document.createElement("div");
134
+ divTitle.className='UMyChart_DrawTool_Title_Div';
135
+ divTitle.innerText="画图工具";
136
+ divTitle.onmousedown=(e)=>{ this.OnMouseDownTitle(e); }
137
+
138
+ var divClose=document.createElement("div");
139
+ divClose.className='UMyChart_DrawTool_Close_Div';
140
+ divClose.innerText="x";
141
+ divClose.onmousedown=(e)=>{ this.Close(e); }
142
+ divTitle.appendChild(divClose);
143
+
144
+ divDom.appendChild(divTitle);
145
+
146
+ var table=document.createElement("table");
147
+ table.className="UMyChart_DrawTool_Table";
148
+ divDom.appendChild(table);
149
+
150
+ var tbody=document.createElement("tbody");
151
+ tbody.className="UMyChart_DrawTool_Tbody";
152
+ table.appendChild(tbody);
153
+
154
+ for(var i=0;i<this.AryChartGroup.length;++i)
155
+ {
156
+ var item=this.AryChartGroup[i];
157
+ if (!IFrameSplitOperator.IsNonEmptyArray(item.AryChart)) continue;
158
+
159
+ this.CreateChartGroupItem(item, tbody);
160
+
161
+ var trDom=document.createElement("tr");
162
+ trDom.className='UMyChart_DrawTool_Group_End_Tr';
163
+ tbody.appendChild(trDom);
164
+ }
165
+
166
+ //工具栏
167
+ this.CreateToolGroup(tbody);
168
+
169
+ this.DivDialog=divDom;
170
+
171
+ document.body.appendChild(divDom);
172
+ }
173
+
174
+ this.Destroy=function()
175
+ {
176
+ this.AryDivChart=[];
177
+ document.body.remove(this.DivDialog);
178
+ this.DivDialog=null;
179
+ }
180
+
181
+ this.CreateChartGroupItem=function(groupItem, tbody)
182
+ {
183
+ var trDom=document.createElement("tr");
184
+ trDom.className='UMyChart_DrawTool_Group_Tr';
185
+ tbody.appendChild(trDom);
186
+
187
+ var tdDom=document.createElement("td");
188
+ tdDom.className="UMyChart_DrawTool_Group_Td";
189
+ tdDom.innerText=groupItem.Title;
190
+ tdDom.colSpan=this.ColumnCount;
191
+ trDom.appendChild(tdDom);
192
+
193
+ var chartCount=groupItem.AryChart.length;
194
+ for(var i=0,j=0;i<chartCount;)
195
+ {
196
+ var trDom=document.createElement("tr");
197
+ trDom.className='UMyChart_DrawTool_Tr';
198
+
199
+ for(j=0;j<this.ColumnCount && i<chartCount; ++j, ++i)
200
+ {
201
+ var item=groupItem.AryChart[i];
202
+ this.CreateChartItem(item, trDom);
203
+ }
204
+
205
+ tbody.appendChild(trDom);
206
+ }
207
+ }
208
+
209
+ this.CreateChartItem=function(item, trDom)
210
+ {
211
+ var tdDom=document.createElement("td");
212
+ tdDom.className="UMyChart_DrawTool_Td";
213
+ tdDom.title=item.Title;
214
+ trDom.appendChild(tdDom);
215
+
216
+ var spanDom=document.createElement("span");
217
+ spanDom.className=item.ClassName;
218
+ spanDom.classList.add("UMyChart_DrawTool_Span");
219
+ tdDom.appendChild(spanDom);
220
+
221
+ var data={ Item:item, TD:tdDom, Span:spanDom };
222
+ tdDom.onmousedown=(e)=> { this.OnClickItem(e, data); }; //点击
223
+
224
+ this.AryDivChart.push(data);
225
+ }
226
+
227
+ this.OnClickItem=function(e, data)
228
+ {
229
+ console.log('[JSDialogDrawTool::OnClickChartItem] ', data);
230
+ if (!data.Item || !data.Item.Data) return;
231
+
232
+ var type=data.Item.Type;
233
+ var id=data.Item.Data.ID;
234
+ if (type==2 && id==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID)
235
+ {
236
+ this.OnChangeLineColor(data);
237
+ }
238
+ else if (type==2 && id==JS_DRAWTOOL_MENU_ID.CMD_DELETE_ALL_RAW_CHART_ID)
239
+ {
240
+ this.DeleteAllChart();
241
+ }
242
+ else if (type==1 && id==JS_DRAWTOOL_MENU_ID.CMD_SELECTED_ID)
243
+ {
244
+ this.ClearAllSelectedChart();
245
+ this.ClearCurrnetDrawPicture();
246
+ }
247
+ else if (type==0)
248
+ {
249
+ this.ClearAllSelectedChart();
250
+ data.Span.classList.add("UMyChart_DrawTool_Span_Selected");
251
+ this.CreateDrawPicture(data);
252
+ }
253
+ }
254
+
255
+ //清空选中状态
256
+ this.ClearAllSelectedChart=function()
257
+ {
258
+ for(var i=0;i<this.AryDivChart.length;++i)
259
+ {
260
+ var item=this.AryDivChart[i];
261
+ item.Span.classList.remove("UMyChart_DrawTool_Span_Selected");
262
+ }
263
+ }
264
+
265
+ this.CreateToolGroup=function(tbody)
266
+ {
267
+ var trDom=document.createElement("tr");
268
+ trDom.className='UMyChart_DrawTool_Group_Tr';
269
+ tbody.appendChild(trDom);
270
+
271
+ var tdDom=document.createElement("td");
272
+ tdDom.className="UMyChart_DrawTool_Group_Td";
273
+ tdDom.innerText=this.ToolConfig.Title;
274
+ tdDom.colSpan=this.ColumnCount;
275
+ trDom.appendChild(tdDom);
276
+
277
+ var chartCount=this.ToolConfig.AryTool.length;
278
+ for(var i=0,j=0;i<chartCount;)
279
+ {
280
+ var trDom=document.createElement("tr");
281
+ trDom.className='UMyChart_DrawTool_Tr';
282
+
283
+ for(j=0;j<this.ColumnCount && i<chartCount; ++j, ++i)
284
+ {
285
+ var item=this.ToolConfig.AryTool[i];
286
+ this.CreateToolItem(item, trDom);
287
+ }
288
+
289
+ tbody.appendChild(trDom);
290
+ }
291
+ }
292
+
293
+ this.CreateToolItem=function(item, trDom)
294
+ {
295
+ var tdDom=document.createElement("td");
296
+ tdDom.className="UMyChart_DrawTool_Td";
297
+ tdDom.title=item.Title;
298
+ trDom.appendChild(tdDom);
299
+
300
+ var spanDom=document.createElement("span");
301
+ spanDom.className=item.ClassName;
302
+ spanDom.classList.add("UMyChart_DrawTool_Span");
303
+ tdDom.appendChild(spanDom);
304
+ var data={ Item:item, TD:tdDom, Span:spanDom };
305
+
306
+ if (item.Type==2 && item.Data.ID==JS_DRAWTOOL_MENU_ID.CMD_CHANGE_LINE_COLOR_ID) //颜色
307
+ {
308
+ spanDom.style['color']=this.LineColor;
309
+ }
310
+
311
+ tdDom.onmousedown=(e)=> { this.OnClickItem(e, data); }; //点击
312
+
313
+ this.AryDivChart.push(data);
314
+ }
315
+
316
+
317
+
318
+ this.OnChangeLineColor=function(data)
319
+ {
320
+ ++this.LineColorIndex;
321
+ var index=this.LineColorIndex%this.RandomLineColor.length;
322
+ this.LineColor=this.RandomLineColor[index];
323
+
324
+ data.Span.style['color']=this.LineColor;
325
+ }
326
+
327
+ //清空所有画图工具
328
+ this.DeleteAllChart=function()
329
+ {
330
+ if (!this.HQChart) return;
331
+
332
+ this.HQChart.ClearChartDrawPicture();
333
+ }
334
+
335
+ this.CreateDrawPicture=function(data)
336
+ {
337
+ if (!this.HQChart) return null;
338
+
339
+ var option=
340
+ {
341
+ LineColor:this.LineColor, //线段颜色
342
+ LineWidth:this.LineWidth, //线段宽度
343
+ //PointColor:'rgba(255,130,71,0.5)' //点颜色
344
+ };
345
+
346
+ var name=data.Item.Data.ID;
347
+ if (["icon-arrow_up","icon-arrow_down","icon-arrow_left", "icon-arrow_right"].includes(name)) option=null;
348
+
349
+ this.HQChart.CreateChartDrawPicture(name, option, (chart)=>{ this.OnFinishDrawPicture(chart, data); });
350
+ }
351
+
352
+ this.ClearCurrnetDrawPicture=function()
353
+ {
354
+ if (this.HQChart) this.HQChart.ClearCurrnetDrawPicture();
355
+ }
356
+
357
+ //画图工具绘制完成
358
+ this.OnFinishDrawPicture=function(chart, data)
359
+ {
360
+ data.Span.classList.remove("UMyChart_DrawTool_Span_Selected");
361
+ }
362
+
363
+ this.Show=function(x, y)
364
+ {
365
+ if (!this.DivDialog) return;
366
+
367
+ this.DivDialog.style.visibility='visible';
368
+ this.DivDialog.style.top = y + "px";
369
+ this.DivDialog.style.left = x + "px";
370
+ }
371
+
372
+ this.Close=function(e)
373
+ {
374
+ if (!this.DivDialog) return;
375
+
376
+ this.DivDialog.style.visibility='hidden';
377
+ }
378
+
379
+ this.IsShow=function()
380
+ {
381
+ if (!this.DivDialog) return false;
382
+
383
+ return this.DivDialog.style.visibility==='visible';
384
+ }
385
+
386
+ this.OnMouseDownTitle=function(e)
387
+ {
388
+ if (!this.DivDialog) return;
389
+
390
+ var dragData={ X:e.clientX, Y:e.clientY };
391
+ dragData.YOffset=e.clientX - this.DivDialog.offsetLeft;
392
+ dragData.XOffset=e.clientY - this.DivDialog.offsetTop;
393
+ this.DragTitle=dragData;
394
+
395
+ document.onmousemove=(e)=>{ this.DocOnMouseMoveTitle(e); }
396
+ document.onmouseup=(e)=>{ this.DocOnMouseUpTitle(e); }
397
+ }
398
+
399
+ this.DocOnMouseMoveTitle=function(e)
400
+ {
401
+ if (!this.DragTitle) return;
402
+
403
+ var left = e.clientX - this.DragTitle.YOffset;
404
+ var top = e.clientY - this.DragTitle.XOffset;
405
+
406
+ var right=left+this.DivDialog.offsetWidth;
407
+ var bottom=top+ this.DivDialog.offsetHeight;
408
+
409
+ if ((right+5)>=window.innerWidth) left=window.innerWidth-this.DivDialog.offsetWidth-5;
410
+ if ((bottom+5)>=window.innerHeight) top=window.innerHeight-this.DivDialog.offsetHeight-5;
411
+
412
+ this.DivDialog.style.left = left + 'px'
413
+ this.DivDialog.style.top = top + 'px'
414
+ }
415
+
416
+ this.DocOnMouseUpTitle=function(e)
417
+ {
418
+ this.DragTitle=null;
419
+ this.onmousemove = null;
420
+ this.onmouseup = null;
421
+ }
422
+ }
423
+
424
+
425
+
426
+
427
+
@@ -10991,7 +10991,7 @@ function JSDraw(errorHandler,symbolData)
10991
10991
  {
10992
10992
  for(var i in condition)
10993
10993
  {
10994
- drawData[i]=null;
10994
+ drawData.Data[i]=null;
10995
10995
  if (!condition[i]) continue;
10996
10996
 
10997
10997
  if (isNumber)
@@ -11016,7 +11016,7 @@ function JSDraw(errorHandler,symbolData)
11016
11016
  var count=this.SymbolData.Data.Data.length;
11017
11017
  for(var i=0; i<count; ++i)
11018
11018
  {
11019
- drawData[i]=null;
11019
+ drawData.Data[i]=null;
11020
11020
  if (isNumber)
11021
11021
  {
11022
11022
  drawData.Data[i]=data;