hqchart 1.1.15382 → 1.1.15390
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/lib/umychart.vue.js +36 -19
- package/package.json +1 -1
- package/src/jscommon/umychart.complier.js +97 -13
- package/src/jscommon/umychart.js +63 -12
- package/src/jscommon/umychart.report.js +84 -7
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +245 -33
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +245 -33
package/package.json
CHANGED
|
@@ -441,6 +441,24 @@ JSComplierHelper.GetConvertValueName=function(funcName)
|
|
|
441
441
|
|
|
442
442
|
return valueName;
|
|
443
443
|
}
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
//DYNAINFO() 转换
|
|
447
|
+
//["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
|
|
448
|
+
//["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
|
|
449
|
+
//["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
|
|
450
|
+
//["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
|
|
451
|
+
//["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
|
|
452
|
+
//["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
|
|
453
|
+
const MAP_DYNAINFO_SHORTCUT=new Map(
|
|
454
|
+
[
|
|
455
|
+
['DYNA_NOW', { Name:"DYNA_NOW", ID:7 } ],
|
|
456
|
+
['DYNA_LB', { Name:"DYNA_LB", ID:17 } ],
|
|
457
|
+
['DYNA_ZAS', { Name:"DYNA_ZAS", ID:24 } ],
|
|
458
|
+
['SELLVOL', { Name:"SELLVOL", ID:22 }],
|
|
459
|
+
['BUYVOL', { Name:"BUYVOL", ID:21 } ],
|
|
460
|
+
]
|
|
461
|
+
);
|
|
444
462
|
|
|
445
463
|
|
|
446
464
|
|
|
@@ -1380,6 +1398,14 @@ function Node(ErrorHandler)
|
|
|
1380
1398
|
return;
|
|
1381
1399
|
}
|
|
1382
1400
|
|
|
1401
|
+
if (MAP_DYNAINFO_SHORTCUT.has(varName))
|
|
1402
|
+
{
|
|
1403
|
+
var item=MAP_DYNAINFO_SHORTCUT.get(varName);
|
|
1404
|
+
var item={ ID:JS_EXECUTE_JOB_ID.JOB_DOWNLOAD_SYMBOL_LATEST_DATA, Args:[item.ID], FunctionName:varName };
|
|
1405
|
+
this.Dynainfo.push(item);
|
|
1406
|
+
return;
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1383
1409
|
if (varName.indexOf('#')>0)
|
|
1384
1410
|
{
|
|
1385
1411
|
var aryWrods = varName.split('#');
|
|
@@ -12135,8 +12161,10 @@ var DYNAINFO_ARGUMENT_ID=
|
|
|
12135
12161
|
CLOSE:7,
|
|
12136
12162
|
VOL:8,
|
|
12137
12163
|
AMOUNT:10,
|
|
12164
|
+
UPDOWN:12, //DYNAINFO(12) 日涨跌 即时行情数据
|
|
12138
12165
|
AMPLITUDE:13, //振幅
|
|
12139
12166
|
INCREASE:14, //涨幅
|
|
12167
|
+
|
|
12140
12168
|
EXCHANGERATE:37, //换手率
|
|
12141
12169
|
};
|
|
12142
12170
|
|
|
@@ -12315,16 +12343,18 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12315
12343
|
let stock=data.stock[0];
|
|
12316
12344
|
if (!stock) return;
|
|
12317
12345
|
|
|
12318
|
-
if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.YCLOSE,stock.yclose);
|
|
12319
|
-
if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.OPEN,stock.open);
|
|
12320
|
-
if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.HIGH,stock.high);
|
|
12321
|
-
if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.LOW,stock.low);
|
|
12322
|
-
if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.CLOSE,stock.price);
|
|
12323
|
-
if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.VOL,stock.vol);
|
|
12324
|
-
if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMOUNT,stock.amount);
|
|
12325
|
-
if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.INCREASE,stock.increase);
|
|
12326
|
-
if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.EXCHANGERATE,stock.exchangerate);
|
|
12327
|
-
if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(DYNAINFO_ARGUMENT_ID.AMPLITUDE,stock.amplitude);
|
|
12346
|
+
if (IFrameSplitOperator.IsNumber(stock.yclose)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.YCLOSE),stock.yclose);
|
|
12347
|
+
if (IFrameSplitOperator.IsNumber(stock.open)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.OPEN),stock.open);
|
|
12348
|
+
if (IFrameSplitOperator.IsNumber(stock.high)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.HIGH),stock.high);
|
|
12349
|
+
if (IFrameSplitOperator.IsNumber(stock.low)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.LOW),stock.low);
|
|
12350
|
+
if (IFrameSplitOperator.IsNumber(stock.price)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.CLOSE),stock.price);
|
|
12351
|
+
if (IFrameSplitOperator.IsNumber(stock.vol)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.VOL),stock.vol);
|
|
12352
|
+
if (IFrameSplitOperator.IsNumber(stock.amount)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMOUNT),stock.amount);
|
|
12353
|
+
if (IFrameSplitOperator.IsNumber(stock.increase)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.INCREASE),stock.increase);
|
|
12354
|
+
if (IFrameSplitOperator.IsNumber(stock.exchangerate)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.EXCHANGERATE),stock.exchangerate);
|
|
12355
|
+
if (IFrameSplitOperator.IsNumber(stock.amplitude)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.AMPLITUDE),stock.amplitude);
|
|
12356
|
+
if (IFrameSplitOperator.IsNumber(stock.updown)) this.LatestData.set(this.GetLatestDataKey(DYNAINFO_ARGUMENT_ID.UPDOWN),stock.updown);
|
|
12357
|
+
|
|
12328
12358
|
|
|
12329
12359
|
/*
|
|
12330
12360
|
this.LatestData={ Symbol:stock.symbol, Name:stock.name, Date:stock.date, Time:stock.time,
|
|
@@ -12349,7 +12379,7 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12349
12379
|
if (IFrameSplitOperator.IsNumber(item.value) || IFrameSplitOperator.IsString(item.value))
|
|
12350
12380
|
{
|
|
12351
12381
|
JSConsole.Complier.Log(`[JSSymbolData::RecvLatestDataVer2] symbol=${symbol} DYNAINFO(${item.id})=${item.value}.`);
|
|
12352
|
-
this.LatestData.set(item.id, item.value);
|
|
12382
|
+
this.LatestData.set(this.GetLatestDataKey(item.id), item.value);
|
|
12353
12383
|
}
|
|
12354
12384
|
|
|
12355
12385
|
}
|
|
@@ -12357,9 +12387,48 @@ function JSSymbolData(ast,option,jsExecute)
|
|
|
12357
12387
|
JSConsole.Complier.Log('[JSSymbolData::RecvLatestDataVer2]', this.LatestData);
|
|
12358
12388
|
}
|
|
12359
12389
|
|
|
12360
|
-
this.GetLatestCacheData=function(
|
|
12390
|
+
this.GetLatestCacheData=function(dataID)
|
|
12391
|
+
{
|
|
12392
|
+
var key=this.GetLatestDataKey(dataID);
|
|
12393
|
+
if (!this.LatestData.has(key)) return null;
|
|
12394
|
+
|
|
12395
|
+
var data=this.LatestData.get(key);
|
|
12396
|
+
|
|
12397
|
+
//DYNAINFO(36) 自由流通换手率(序列数据,每个周期的数据不同,使用最新的自由流通股本) 转换成幅度需要乘100 比如DYNAINFO(36)>0.25表示换手超过25%
|
|
12398
|
+
//DYNAINFO(37) 换手率(序列数据,每个周期的数据不同,使用的流通股本为最近数据) 转换成幅度需要乘100 比如DYNAINFO(37)>0.1表示换手超过10%
|
|
12399
|
+
if (dataID==37 || dataID==36)
|
|
12400
|
+
{
|
|
12401
|
+
var value=null;
|
|
12402
|
+
if (IFrameSplitOperator.IsNumber(data)) value=data;
|
|
12403
|
+
else if (IFrameSplitOperator.IsNonEmptyArray(data) && IFrameSplitOperator.IsNumber(data[0])) value=data[0];
|
|
12404
|
+
else return null;
|
|
12405
|
+
|
|
12406
|
+
if (!this.Data || !IFrameSplitOperator.IsNonEmptyArray(this.Data.Data)) return null;
|
|
12407
|
+
|
|
12408
|
+
var aryData=[];
|
|
12409
|
+
for(var i=0;i<this.Data.Data.length;++i)
|
|
12410
|
+
{
|
|
12411
|
+
var kItem=this.Data.Data[i];
|
|
12412
|
+
aryData[i]=null;
|
|
12413
|
+
if (!kItem || !IFrameSplitOperator.IsNumber(kItem.Vol)) continue;
|
|
12414
|
+
|
|
12415
|
+
aryData[i]=kItem.Vol/value*100.0;// 换手率
|
|
12416
|
+
}
|
|
12417
|
+
|
|
12418
|
+
return aryData;
|
|
12419
|
+
}
|
|
12420
|
+
|
|
12421
|
+
|
|
12422
|
+
return data;
|
|
12423
|
+
}
|
|
12424
|
+
|
|
12425
|
+
this.GetDynaCacheData=function(name)
|
|
12361
12426
|
{
|
|
12362
|
-
if (
|
|
12427
|
+
if (MAP_DYNAINFO_SHORTCUT.has(name))
|
|
12428
|
+
{
|
|
12429
|
+
var item=MAP_DYNAINFO_SHORTCUT.get(name);
|
|
12430
|
+
return this.GetLatestCacheData(item.ID);
|
|
12431
|
+
}
|
|
12363
12432
|
|
|
12364
12433
|
return null;
|
|
12365
12434
|
}
|
|
@@ -17346,6 +17415,13 @@ function JSExecute(ast,option)
|
|
|
17346
17415
|
["TR", null], //真实波幅
|
|
17347
17416
|
["AUTOFILTER", null],
|
|
17348
17417
|
|
|
17418
|
+
["DYNA_NOW",null], //DYNA_NOW 现价 DYNAINFO(7) 即时行情数据 没有现价时(比如在开盘前),返回昨收盘价
|
|
17419
|
+
["DYNA_ZAF",null], //DYNA_ZAF 涨幅 DYNAINFO(14) 即时行情数据(沪深京早盘竞价期间使用匹配价的涨幅) 转换成幅度需要乘100
|
|
17420
|
+
["DYNA_LB", null], //DYNA_LB DYNAINFO(17) 量比 即时行情数据
|
|
17421
|
+
["DYNA_ZAS",null], //DYNA_ZAS DYNAINFO(24) 返回涨速 报价界面行情数据 转换成幅度需要乘100
|
|
17422
|
+
["SELLVOL", null], //返回内盘,即DYNAINFO(22) 即时行情数据
|
|
17423
|
+
["BUYVOL", null], //返回外盘,即DYNAINFO(21) 即时行情数据
|
|
17424
|
+
|
|
17349
17425
|
['LARGEINTRDVOL', null], //逐笔买入大单成交量,相当于L2_VOL(0,0)+L2_VOL(1,0),沪深京品种的资金流向,仅日线以上周期,用于特定版本
|
|
17350
17426
|
['LARGEOUTTRDVOL', null], //逐笔卖出大单成交量,相当于L2_VOL(0,1)+L2_VOL(1,1),沪深京品种的资金流向,仅日线以上周期,用于特定版本
|
|
17351
17427
|
["TRADENUM", null], //逐笔成交总单数,沪深京品种的资金流向,仅日线以上周期,用于特定版本
|
|
@@ -17678,6 +17754,14 @@ function JSExecute(ast,option)
|
|
|
17678
17754
|
return this.SymbolData.WEEKOFYEAR();
|
|
17679
17755
|
case "DAYSTOTODAY":
|
|
17680
17756
|
return this.SymbolData.DAYSTOTODAY();
|
|
17757
|
+
|
|
17758
|
+
case "DYNA_NOW":
|
|
17759
|
+
case "DYNA_ZAF":
|
|
17760
|
+
case "DYNA_LB":
|
|
17761
|
+
case "DYNA_ZAS":
|
|
17762
|
+
case "SELLVOL":
|
|
17763
|
+
case "BUYVOL":
|
|
17764
|
+
return this.SymbolData.GetDynaCacheData(name);
|
|
17681
17765
|
}
|
|
17682
17766
|
|
|
17683
17767
|
this.ThrowUnexpectedNode(node, '变量'+name+'不存在', name);
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -8592,6 +8592,13 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8592
8592
|
return false;
|
|
8593
8593
|
}
|
|
8594
8594
|
|
|
8595
|
+
this.IsHScreenModel=function()
|
|
8596
|
+
{
|
|
8597
|
+
if (this.ClassName=="KLineChartHScreenContainer" || this.ClassName=="MinuteChartHScreenContainer") return true;
|
|
8598
|
+
|
|
8599
|
+
return false;
|
|
8600
|
+
}
|
|
8601
|
+
|
|
8595
8602
|
this.UpdatePointByCursorIndex=function(type) //type 1=根据十字光标更新 2=强制取消十字光标
|
|
8596
8603
|
{
|
|
8597
8604
|
if (type==1) //根据十字光标更新
|
|
@@ -8612,8 +8619,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8612
8619
|
pt.X=null;
|
|
8613
8620
|
}
|
|
8614
8621
|
}
|
|
8615
|
-
|
|
8616
|
-
this.
|
|
8622
|
+
|
|
8623
|
+
if (this.IsHScreenModel())
|
|
8624
|
+
{
|
|
8625
|
+
this.LastPoint.X=pt.Y;
|
|
8626
|
+
this.LastPoint.Y=pt.X;
|
|
8627
|
+
}
|
|
8628
|
+
else
|
|
8629
|
+
{
|
|
8630
|
+
this.LastPoint.X=pt.X;
|
|
8631
|
+
this.LastPoint.Y=pt.Y;
|
|
8632
|
+
}
|
|
8633
|
+
|
|
8617
8634
|
}
|
|
8618
8635
|
else if (type==2)
|
|
8619
8636
|
{
|
|
@@ -8633,8 +8650,18 @@ function JSChartContainer(uielement, OffscreenElement, cacheElement)
|
|
|
8633
8650
|
pt.Y=this.Frame.GetYFromData(close);
|
|
8634
8651
|
this.LastPoint.FrameID=0;
|
|
8635
8652
|
}
|
|
8636
|
-
|
|
8637
|
-
this.
|
|
8653
|
+
|
|
8654
|
+
if (this.IsHScreenModel())
|
|
8655
|
+
{
|
|
8656
|
+
this.LastPoint.X=pt.Y;
|
|
8657
|
+
this.LastPoint.Y=pt.X;
|
|
8658
|
+
}
|
|
8659
|
+
else
|
|
8660
|
+
{
|
|
8661
|
+
this.LastPoint.X=pt.X;
|
|
8662
|
+
this.LastPoint.Y=pt.Y;
|
|
8663
|
+
}
|
|
8664
|
+
|
|
8638
8665
|
}
|
|
8639
8666
|
}
|
|
8640
8667
|
|
|
@@ -79471,6 +79498,13 @@ function JSChartResource()
|
|
|
79471
79498
|
CloseColor:"rgb(30,144,255)",
|
|
79472
79499
|
YCloseColor:"rgba(105,105,105,0.5)", //昨收线
|
|
79473
79500
|
AreaColor:'rgba(0,191,255,0.2)',
|
|
79501
|
+
|
|
79502
|
+
UpColor:"rgb(255,0,0)",
|
|
79503
|
+
UpAreaColor:"rgba(255,0,0,0.5)",
|
|
79504
|
+
DownColor:"rgb(0,128,0)",
|
|
79505
|
+
DownAreaColor:"rgba(0,128,0,0.5)",
|
|
79506
|
+
UnchangeColor:'rgb(90,90,90)',
|
|
79507
|
+
UnchangeAreaColor:'rgba(90,90,90,0.5)',
|
|
79474
79508
|
},
|
|
79475
79509
|
|
|
79476
79510
|
KLine:
|
|
@@ -80869,6 +80903,13 @@ function JSChartResource()
|
|
|
80869
80903
|
if (closeLine.CloseColor) this.Report.CloseLine.CloseColor=closeLine.CloseColor;
|
|
80870
80904
|
if (closeLine.YCloseColor) this.Report.CloseLine.YCloseColor=closeLine.YCloseColor;
|
|
80871
80905
|
if (closeLine.AreaColor) this.Report.CloseLine.AreaColor=closeLine.AreaColor;
|
|
80906
|
+
|
|
80907
|
+
if (closeLine.UpColor) this.Report.CloseLine.UpColor=closeLine.UpColor;
|
|
80908
|
+
if (closeLine.UpAreaColor) this.Report.CloseLine.UpAreaColor=closeLine.UpAreaColor;
|
|
80909
|
+
if (closeLine.DownColor) this.Report.CloseLine.DownColor=closeLine.DownColor;
|
|
80910
|
+
if (closeLine.DownAreaColor) this.Report.CloseLine.DownAreaColor=closeLine.DownAreaColor;
|
|
80911
|
+
if (closeLine.UnchangeColor) this.Report.CloseLine.UnchangeColor=closeLine.UnchangeColor;
|
|
80912
|
+
if (closeLine.UnchangeAreaColor) this.Report.CloseLine.UnchangeAreaColor=closeLine.UnchangeAreaColor;
|
|
80872
80913
|
}
|
|
80873
80914
|
|
|
80874
80915
|
if (item.KLine)
|
|
@@ -93617,21 +93658,31 @@ function MinuteChartContainer(uielement,offscreenElement,cacheElement)
|
|
|
93617
93658
|
|
|
93618
93659
|
this.UpdatePointByCursorIndex=function()
|
|
93619
93660
|
{
|
|
93620
|
-
|
|
93661
|
+
var x=null, y=null;
|
|
93662
|
+
x=this.Frame.GetXFromIndex(this.CursorIndex);
|
|
93621
93663
|
|
|
93622
93664
|
var index=this.CursorIndex;
|
|
93623
93665
|
index=parseInt(index.toFixed(0));
|
|
93624
93666
|
var data=this.GetKData();
|
|
93625
|
-
if (data.DataOffset+index
|
|
93667
|
+
if (data.DataOffset+index<data.Data.length)
|
|
93626
93668
|
{
|
|
93627
|
-
|
|
93669
|
+
var item=data.Data[data.DataOffset+index];
|
|
93670
|
+
var close=null;
|
|
93671
|
+
if (item.Before) close=item.Before.Close;
|
|
93672
|
+
else close=item.Close;
|
|
93673
|
+
y=this.Frame.GetYFromData(close);
|
|
93628
93674
|
}
|
|
93629
|
-
var item=data.Data[data.DataOffset+index];
|
|
93630
|
-
var close=null;
|
|
93631
|
-
if (item.Before) close=item.Before.Close;
|
|
93632
|
-
else close=item.Close
|
|
93633
93675
|
|
|
93634
|
-
this.
|
|
93676
|
+
if (this.IsHScreenModel())
|
|
93677
|
+
{
|
|
93678
|
+
this.LastPoint.X=y;
|
|
93679
|
+
this.LastPoint.Y=x;
|
|
93680
|
+
}
|
|
93681
|
+
else
|
|
93682
|
+
{
|
|
93683
|
+
this.LastPoint.X=x;
|
|
93684
|
+
this.LastPoint.Y=y;
|
|
93685
|
+
}
|
|
93635
93686
|
this.LastPoint.FrameID=0;
|
|
93636
93687
|
}
|
|
93637
93688
|
|
|
@@ -5296,7 +5296,15 @@ function ChartReport()
|
|
|
5296
5296
|
{
|
|
5297
5297
|
CloseColor:g_JSChartResource.Report.CloseLine.CloseColor,
|
|
5298
5298
|
YCloseColor:g_JSChartResource.Report.CloseLine.YCloseColor,
|
|
5299
|
-
AreaColor:g_JSChartResource.Report.CloseLine.AreaColor
|
|
5299
|
+
AreaColor:g_JSChartResource.Report.CloseLine.AreaColor,
|
|
5300
|
+
|
|
5301
|
+
UpColor:g_JSChartResource.Report.CloseLine.UpColor,
|
|
5302
|
+
DownColor:g_JSChartResource.Report.CloseLine.DownColor,
|
|
5303
|
+
UnchangeColor:g_JSChartResource.Report.CloseLine.UnchangeColor,
|
|
5304
|
+
|
|
5305
|
+
UpAreaColor:g_JSChartResource.Report.CloseLine.UpAreaColor,
|
|
5306
|
+
DownAreaColor:g_JSChartResource.Report.CloseLine.DownAreaColor,
|
|
5307
|
+
UnchangeAreaColor:g_JSChartResource.Report.CloseLine.UnchangeAreaColor,
|
|
5300
5308
|
}
|
|
5301
5309
|
|
|
5302
5310
|
//K线配置
|
|
@@ -5607,6 +5615,7 @@ function ChartReport()
|
|
|
5607
5615
|
else if (item.Type==REPORT_COLUMN_ID.CLOSE_LINE_ID)
|
|
5608
5616
|
{
|
|
5609
5617
|
if (IFrameSplitOperator.IsBool(item.IsDrawArea)) colItem.IsDrawArea=item.IsDrawArea;
|
|
5618
|
+
if (IFrameSplitOperator.IsNumber(item.LineColorType)) colItem.LineColorType=item.LineColorType;
|
|
5610
5619
|
}
|
|
5611
5620
|
else if(item.Type==REPORT_COLUMN_ID.TIME_ID)
|
|
5612
5621
|
{
|
|
@@ -5735,7 +5744,7 @@ function ChartReport()
|
|
|
5735
5744
|
{ Type:REPORT_COLUMN_ID.VOL_IN_ID, Title:"内盘", TextAlign:"right", TextColor:g_JSChartResource.Report.DownTextColor, Width:null, MaxText:"8888.8擎" },
|
|
5736
5745
|
{ Type:REPORT_COLUMN_ID.VOL_OUT_ID, Title:"外盘", TextAlign:"right", TextColor:g_JSChartResource.Report.UpTextColor, Width:null, MaxText:"8888.8擎" },
|
|
5737
5746
|
|
|
5738
|
-
{ Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888" },
|
|
5747
|
+
{ Type:REPORT_COLUMN_ID.CLOSE_LINE_ID, Title:"走势", TextAlign:"center", TextColor:g_JSChartResource.Report.CloseLineColor, Width:null, MaxText:"88888.88888", LineColorType:0 },
|
|
5739
5748
|
|
|
5740
5749
|
|
|
5741
5750
|
{ Type:REPORT_COLUMN_ID.BUY_VOL_ID, Title:"买量", TextAlign:"right", TextColor:g_JSChartResource.Report.FieldColor.Vol, Width:null, MaxText:"8888.8擎" },
|
|
@@ -8774,8 +8783,7 @@ function ChartReport()
|
|
|
8774
8783
|
this.Canvas.setLineDash([]);
|
|
8775
8784
|
}
|
|
8776
8785
|
|
|
8777
|
-
|
|
8778
|
-
else this.Canvas.strokeStyle=this.CloseLineConfig.CloseColor;
|
|
8786
|
+
this.Canvas.strokeStyle=this.GetCloseLineColor(lineData, column);
|
|
8779
8787
|
|
|
8780
8788
|
var bFirstPoint=true;
|
|
8781
8789
|
var ptFirst={}; //第1个点
|
|
@@ -8813,8 +8821,7 @@ function ChartReport()
|
|
|
8813
8821
|
this.Canvas.lineTo(x,yCenter);
|
|
8814
8822
|
this.Canvas.lineTo(ptFirst.X,yCenter);
|
|
8815
8823
|
this.Canvas.closePath();
|
|
8816
|
-
var areaColor=this.
|
|
8817
|
-
if (lineData.AreaColor) areaColor=lineData.AreaColor;
|
|
8824
|
+
var areaColor=this.GetCloseAreaColor(lineData, column);
|
|
8818
8825
|
this.SetFillStyle(areaColor,left,top, left,bottom);
|
|
8819
8826
|
this.Canvas.fill();
|
|
8820
8827
|
}
|
|
@@ -8823,6 +8830,48 @@ function ChartReport()
|
|
|
8823
8830
|
this.Canvas.restore();
|
|
8824
8831
|
}
|
|
8825
8832
|
|
|
8833
|
+
this.GetCloseLineColor=function(lineData, column)
|
|
8834
|
+
{
|
|
8835
|
+
var color=this.CloseLineConfig.CloseColor;
|
|
8836
|
+
if (lineData.Color)
|
|
8837
|
+
{
|
|
8838
|
+
color=lineData.Color;
|
|
8839
|
+
}
|
|
8840
|
+
else if (column.LineColorType==1)
|
|
8841
|
+
{
|
|
8842
|
+
var color= this.CloseLineConfig.UnchangeColor;
|
|
8843
|
+
if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
|
|
8844
|
+
{
|
|
8845
|
+
var lastValue=lineData.Data[ lineData.Data.length -1 ];
|
|
8846
|
+
if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpColor;
|
|
8847
|
+
else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownColor;
|
|
8848
|
+
}
|
|
8849
|
+
}
|
|
8850
|
+
|
|
8851
|
+
return color;
|
|
8852
|
+
}
|
|
8853
|
+
|
|
8854
|
+
this.GetCloseAreaColor=function(lineData, column)
|
|
8855
|
+
{
|
|
8856
|
+
var color=this.CloseLineConfig.AreaColor;
|
|
8857
|
+
if (lineData.AreaColor)
|
|
8858
|
+
{
|
|
8859
|
+
color=lineData.AreaColor;
|
|
8860
|
+
}
|
|
8861
|
+
else if (column.LineColorType==1)
|
|
8862
|
+
{
|
|
8863
|
+
var color= this.CloseLineConfig.UnchangeAreaColor;
|
|
8864
|
+
if (IFrameSplitOperator.IsNumber(lineData.YClose) && IFrameSplitOperator.IsNonEmptyArray(lineData.Data) && IFrameSplitOperator.IsNumber(lineData.Data[ lineData.Data.length -1 ]))
|
|
8865
|
+
{
|
|
8866
|
+
var lastValue=lineData.Data[ lineData.Data.length -1 ];
|
|
8867
|
+
if (lastValue>lineData.YClose) color=this.CloseLineConfig.UpAreaColor;
|
|
8868
|
+
else if (lastValue<lineData.YClose) color=this.CloseLineConfig.DownAreaColor;
|
|
8869
|
+
}
|
|
8870
|
+
}
|
|
8871
|
+
|
|
8872
|
+
return color;
|
|
8873
|
+
}
|
|
8874
|
+
|
|
8826
8875
|
//klineData={ Data:[ open, high, low, close ] }
|
|
8827
8876
|
this.DrawKLine=function(klineData, column, rtItem, data)
|
|
8828
8877
|
{
|
|
@@ -8892,7 +8941,31 @@ function ChartReport()
|
|
|
8892
8941
|
var distanceWidth=this.KLineConfig.DistanceWidth;
|
|
8893
8942
|
var xOffset=left;
|
|
8894
8943
|
var x, xLeft, xRight;
|
|
8944
|
+
var drawCount=0;
|
|
8895
8945
|
for(var i=0;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
|
|
8946
|
+
{
|
|
8947
|
+
xLeft=xOffset;
|
|
8948
|
+
xRight=xOffset+dataWidth;
|
|
8949
|
+
x=xLeft+(xRight-xLeft)/2;
|
|
8950
|
+
if (xRight>right) break;
|
|
8951
|
+
drawCount++;
|
|
8952
|
+
}
|
|
8953
|
+
|
|
8954
|
+
var xOffset=left;
|
|
8955
|
+
var startIndex=0;
|
|
8956
|
+
if (aryKLine.length>drawCount)
|
|
8957
|
+
{
|
|
8958
|
+
high=null,low=null;
|
|
8959
|
+
startIndex=aryKLine.length-drawCount;
|
|
8960
|
+
for(var i=startIndex;i<aryKLine.length;++i)
|
|
8961
|
+
{
|
|
8962
|
+
var item=aryKLine[i];
|
|
8963
|
+
if (high==null || high<item.High) high=item.High;
|
|
8964
|
+
if (low==null || low>item.Low) low=item.Low;
|
|
8965
|
+
}
|
|
8966
|
+
}
|
|
8967
|
+
|
|
8968
|
+
for(var i=startIndex;i<aryKLine.length;++i,xOffset+=(dataWidth+distanceWidth))
|
|
8896
8969
|
{
|
|
8897
8970
|
var item=aryKLine[i];
|
|
8898
8971
|
xLeft=xOffset;
|
|
@@ -8980,7 +9053,11 @@ function ChartReport()
|
|
|
8980
9053
|
}
|
|
8981
9054
|
else
|
|
8982
9055
|
{
|
|
8983
|
-
|
|
9056
|
+
this.Canvas.beginPath();
|
|
9057
|
+
var xBar=x;
|
|
9058
|
+
this.Canvas.moveTo(ToFixedPoint(xBar),ToFixedPoint(yBarTop));
|
|
9059
|
+
this.Canvas.lineTo(ToFixedPoint(xBar),ToFixedPoint(yBarBottom));
|
|
9060
|
+
this.Canvas.stroke();
|
|
8984
9061
|
}
|
|
8985
9062
|
}
|
|
8986
9063
|
|