-
Notifications
You must be signed in to change notification settings - Fork 764
/
Copy pathumychart.worker.js
114 lines (93 loc) · 3.74 KB
/
umychart.worker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
///////////////////////////////////////////////////////////////////////////////////
// 工作线程计算指标示例
//
//
//////////////////////////////////////////////////////////////////////////////////
function HQChartScriptWorker()
{
this.Status=0; //0=空闲 1=运行
this.Create=function()
{
addEventListener('message', (obj)=>{ this.OnRecvMessage(obj); });
}
this.NetworkFilter=function(data, callback, indexInfo)
{
JSConsole.Complier.Log(`[HQChartScriptWorker::NetworkFilter] [${data.Name}][${data.Explain}] data=`, data);
//数据下载
}
this.ExecuteScript=function(indexData, message)
{
var scriptObj={ };
if (indexData.Script)
{
scriptObj.Name=indexData.Name;
scriptObj.ID=indexData.Index;
scriptObj.Script=indexData.Script;
}
else
{
if (!indexData.Index) return false;
var scriptData = new JSIndexScript();
var finder = scriptData.Get(indexData.Index);
if (!finder) return false;
scriptObj.ID=indexData.Index;
scriptObj.Name=finder.Name;
scriptObj.Script=finder.Script;
scriptObj.Args=finder.Args;
}
if (indexData.Args) scriptObj.Args=indexData.Args;
if (IFrameSplitOperator.IsBool(message.IsApiPeriod)) scriptObj.IsApiPeriod=message.IsApiPeriod;
var indexInfo={ Name:scriptObj.Name, ID:scriptObj.ID, Script:scriptObj.Script, Args:scriptObj.Args, Guid:message.Guid };
scriptObj.ErrorCallback=(error)=>{ this.OnExecuteError(error, indexInfo, message); };
scriptObj.FinishCallback=(data, jsExectute)=>{ this.OnExecuteFinish(data, indexInfo, jsExectute, message); };
scriptObj.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback, indexInfo, message); };
JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);
var indexConsole=new ScriptIndexConsole(scriptObj);
var hisData=null;
if (message && message.Data)
{
hisData=new ChartData();
hisData.Data=message.Data;
hisData.Right=message.Right;
hisData.Period=message.Period;
hisData.DataType=message.DataType; //0=日线 1=分钟
hisData.Symbol=message.symbol;
}
var stockObj=
{
HQDataType:HQ_DATA_TYPE.KLINE_ID,
Stock: { Symbol:message.Symbol },
Request: { MaxDataCount: 500, MaxMinuteDayCount:5 },
Period:message.Period , Right:message.Right,
Data:hisData
};
if (IFrameSplitOperator.IsNumber(message.HQDataType)) stockObj.HQDataType=message.HQDataType;
indexConsole.ExecuteScript(stockObj);
}
this.OnRecvMessage=function(message)
{
var data=message.data;
if (!data) return;
if (data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT)
{
if (!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex)) return;
for(var i=0;i<data.AryIndex.length;++i)
{
var item=data.AryIndex[i];
this.Status=1; //执行状态
this.ExecuteScript(item,data);
}
this.Status=0;
}
}
this.OnExecuteFinish=function(data, indexInfo, jsExectute, jobInfo)
{
var message={ Data:data, IndexInfo:indexInfo , ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT, JobInfo:jobInfo };
postMessage(message);
}
this.OnExecuteError=function(error, indexInfo, jobData)
{
var message={ IndexInfo:indexInfo, ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT, Error:error };
postMessage(message);
}
}