hqchart 1.1.13711 → 1.1.13720
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.NetworkFilterTest.vue.js +1 -1
- package/lib/umychart.vue.js +19 -11
- package/package.json +1 -1
- package/src/jscommon/umychart.NetworkFilterTest.js +10 -1
- package/src/jscommon/umychart.PopKeyboard.js +9 -1
- package/src/jscommon/umychart.js +8 -0
- package/src/jscommon/umychart.keyboard.js +97 -10
- package/src/jscommon/umychart.resource/css/tools.css +2 -2
- package/src/jscommon/umychart.testdata.js +10 -1
- package/src/jscommon/umychart.uniapp.h5/umychart.uniapp.h5.js +106 -11
- package/src/jscommon/umychart.version.js +1 -1
- package/src/jscommon/umychart.vue/umychart.NetworkFilterTest.vue.js +10 -1
- package/src/jscommon/umychart.vue/umychart.vue.js +115 -12
|
@@ -113,4 +113,4 @@ extendData[0]="行业X";//地区
|
|
|
113
113
|
extendData[1]="地区X";//PE|PB
|
|
114
114
|
extendData[2]=Math.round(Math.random()*60)/100;extendData[3]=Math.round(Math.random()*60)/100;extendData[4]=Math.round(Math.random()*60)/100;extendData[5]=Math.round(Math.random()*60)/100;//周涨幅
|
|
115
115
|
extendData[6]=Math.round(Math.random()*60)/100;extendData[7]=Math.round(Math.random()*60)/100;extendData[8]=Math.round(Math.random()*60)/100;item.Data=newItem;}}var hqchartData={data:[],index:[],filedindex:column.index,sort:sortType,symbol:blockID};var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=(0,_getIterator3.default)(mapStock),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var mapItem=_step2.value;var item=mapItem[1];if(!item.Data)continue;hqchartData.data.push(item.Data);hqchartData.index.push(item.Index);}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}callback(hqchartData);};HQData.Keyboard_RequestSymbolList=function(data,callback){//加载数据
|
|
116
|
-
var recv={symbollist:SYMBOL_LIST};var arySymbol=[];for(var i=0;i<recv.symbollist.length;++i){var item=recv.symbollist[i];var shortSymbol=item[0];shortSymbol=shortSymbol.replace(".sh","");shortSymbol=shortSymbol.replace(".sz","");var symbolItem={Symbol:item[0],Name:item[1],ShortSymbol:shortSymbol,Spell:item[3],Type:item[2]};if(symbolItem.Type=="EQA"){symbolItem.TypeName="股票";}else if(symbolItem.Type=="IDX"){symbolItem.TypeName="指数";symbolItem.Color="rgb(30,144,255)";}arySymbol.push(symbolItem);}callback(arySymbol);};/*暴露外部用的方法*/exports.default={HQData:HQData};
|
|
116
|
+
var recv={symbollist:SYMBOL_LIST};var arySymbol=[];for(var i=0;i<recv.symbollist.length;++i){var item=recv.symbollist[i];var shortSymbol=item[0];shortSymbol=shortSymbol.replace(".sh","");shortSymbol=shortSymbol.replace(".sz","");var symbolItem={Symbol:item[0],Name:item[1],ShortSymbol:shortSymbol,Spell:item[3],Type:item[2],Data:{Symbol:item[0],Type:0}};if(symbolItem.Type=="EQA"){symbolItem.TypeName="股票";}else if(symbolItem.Type=="IDX"){symbolItem.TypeName="指数";symbolItem.Color="rgb(30,144,255)";}arySymbol.push(symbolItem);}arySymbol.push({Symbol:"01",Name:"分时成交明细",TypeName:"功能键",Priority:1,Color:"rgb(220,20,60)",Data:{PageName:"分时成交明细",Type:2}});arySymbol.push({Symbol:"02",Name:"分价表",TypeName:"功能键",Priority:1,Color:"rgb(220,20,60)",Data:{PageName:"分价表",Type:2}});arySymbol.push({Symbol:"06",Name:"自选股",TypeName:"功能键",Priority:1,Color:"rgb(220,20,60)",Data:{PageName:"自选股",Type:2}});arySymbol.push({Symbol:"MACD",Name:"平滑异同平均线",TypeName:"指标",Priority:2,Color:"rgb(0,0,255)",Data:{Index:"MACD",Type:1}});arySymbol.push({Symbol:"RSI",Name:"相对强弱指标",TypeName:"指标",Priority:2,Color:"rgb(0,0,255)",Data:{Index:"RSI",Type:1}});arySymbol.push({Symbol:"MA",Name:"均线",TypeName:"指标",Priority:2,Color:"rgb(0,0,255)",Data:{Index:"MA",Type:1}});arySymbol.push({Symbol:"BOLL",Name:"布林线",TypeName:"指标",Priority:2,Color:"rgb(0,0,255)",Data:{Index:"BOLL",Type:1}});callback(arySymbol);};/*暴露外部用的方法*/exports.default={HQData:HQData};
|
package/lib/umychart.vue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _promise=require('babel-runtime/core-js/promise');var _promise2=_interopRequireDefault(_promise);var _log=require('babel-runtime/core-js/math/log10');var _log2=_interopRequireDefault(_log);var _defineProperties=require('babel-runtime/core-js/object/define-properties');var _defineProperties2=_interopRequireDefault(_defineProperties);var _create=require('babel-runtime/core-js/object/create');var _create2=_interopRequireDefault(_create);var _from=require('babel-runtime/core-js/array/from');var _from2=_interopRequireDefault(_from);var _typeof2=require('babel-runtime/helpers/typeof');var _typeof3=_interopRequireDefault(_typeof2);var _set=require('babel-runtime/core-js/set');var _set2=_interopRequireDefault(_set);var _defineProperty2=require('babel-runtime/helpers/defineProperty');var _defineProperty3=_interopRequireDefault(_defineProperty2);var _stringify=require('babel-runtime/core-js/json/stringify');var _stringify2=_interopRequireDefault(_stringify);var _getIterator2=require('babel-runtime/core-js/get-iterator');var _getIterator3=_interopRequireDefault(_getIterator2);var _map=require('babel-runtime/core-js/map');var _map2=_interopRequireDefault(_map);var _jsChartInit$jsChartS;var _jquery=require('jquery');var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}//日志输出类
|
|
1
|
+
'use strict';Object.defineProperty(exports,"__esModule",{value:true});var _toConsumableArray2=require('babel-runtime/helpers/toConsumableArray');var _toConsumableArray3=_interopRequireDefault(_toConsumableArray2);var _promise=require('babel-runtime/core-js/promise');var _promise2=_interopRequireDefault(_promise);var _log=require('babel-runtime/core-js/math/log10');var _log2=_interopRequireDefault(_log);var _defineProperties=require('babel-runtime/core-js/object/define-properties');var _defineProperties2=_interopRequireDefault(_defineProperties);var _create=require('babel-runtime/core-js/object/create');var _create2=_interopRequireDefault(_create);var _from=require('babel-runtime/core-js/array/from');var _from2=_interopRequireDefault(_from);var _typeof2=require('babel-runtime/helpers/typeof');var _typeof3=_interopRequireDefault(_typeof2);var _set=require('babel-runtime/core-js/set');var _set2=_interopRequireDefault(_set);var _defineProperty2=require('babel-runtime/helpers/defineProperty');var _defineProperty3=_interopRequireDefault(_defineProperty2);var _stringify=require('babel-runtime/core-js/json/stringify');var _stringify2=_interopRequireDefault(_stringify);var _getIterator2=require('babel-runtime/core-js/get-iterator');var _getIterator3=_interopRequireDefault(_getIterator2);var _map=require('babel-runtime/core-js/map');var _map2=_interopRequireDefault(_map);var _jsChartInit$jsChartS;var _jquery=require('jquery');var _jquery2=_interopRequireDefault(_jquery);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}//日志输出类
|
|
2
2
|
var JSConsole={Chart:{Log:console.log,Warn:console.warn},//图形日志
|
|
3
3
|
Complier:{Log:console.log,Warn:console.warn},//编译器日志
|
|
4
4
|
JSTable:{Log:console.log,Warn:console.warn//表格日志
|
|
@@ -4079,9 +4079,11 @@ this.DrawBars(lineWidth,true);this.DrawBars(lineWidth,false);this.Canvas.lineWid
|
|
|
4079
4079
|
this.newMethod();delete this.newMethod;this.ClassName="ChartClipColorStick";this.UpColor=g_JSChartResource.UpBarColor;this.DownColor=g_JSChartResource.DownBarColor;this.LineWidth=1;//差值线
|
|
4080
4080
|
this.DownDiffColor=g_JSChartResource.DownBarColor;this.UpDiffColor=g_JSChartResource.UpBarColor;this.BaseLineColor;//基准线
|
|
4081
4081
|
this.BaseValue=0;this.Super_GetMaxMin=this.GetMaxMin;//父类的方法
|
|
4082
|
-
this.
|
|
4082
|
+
this.ValueRange;//{ Max:, Min: } //固定最大最小值
|
|
4083
|
+
this.SetOption=function(option){if(!option)return;if(option.UpColor)this.UpColor=option.UpColor;if(option.DownColor)this.DownColor=option.DownColor;if(option.DownDiffColor)this.DownDiffColor=option.DownDiffColor;if(option.UpDiffColor)this.UpDiffColor=option.UpDiffColor;if(option.BaseLineColor)this.BaseLineColor=option.BaseLineColor;if(IFrameSplitOperator.IsNumber(option.BaseValue))this.BaseValue=option.BaseValue;if(option.ValueRange)this.ValueRange=option.ValueRange;};this.Draw=function(){if(!this.IsShow||this.ChartFrame.IsMinSize||!this.IsVisible)return;if(this.IsShowIndexTitleOnly())return;if(this.IsHideScriptIndex())return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}this.Canvas.save();var dataWidth=this.ChartFrame.DataWidth;var lineWidth=this.LineWidth*GetDevicePixelRatio();if(this.LineWidth==50)lineWidth=dataWidth;else if(lineWidth>dataWidth)lineWidth=dataWidth;if(IFrameSplitOperator.IsNumber(this.BaseValue)&&this.BaseValue!=0){this.DrawBaseLine();if(this.BaseValue>0)this.DrawBars(lineWidth,true);else this.DrawBars(lineWidth,false);}else{//上下分开画
|
|
4083
4084
|
this.DrawBars(lineWidth,true);this.DrawBars(lineWidth,false);}this.Canvas.restore();};this.DrawBars=function(lineWidth,bUpBar){var isMinute=this.IsMinuteFrame();var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var xPointCount=this.ChartFrame.XPointCount;var isHSCreen=this.ChartFrame.IsHScreen===true;if(isHSCreen){var border=this.ChartBorder.GetHScreenBorder();var xOffset=border.TopEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.BottomEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Top;}else{var border=this.ChartBorder.GetBorder();var xOffset=border.LeftEx+distanceWidth/2.0+g_JSChartResource.FrameLeftMargin;var chartright=border.RightEx;var lockRect=this.GetLockRect();if(lockRect)chartright=lockRect.Left;}var yBottom=this.ChartFrame.GetYFromData(this.BaseValue);var aryBar=[],aryDiffBar=[];for(var i=this.Data.DataOffset,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j,xOffset+=dataWidth+distanceWidth){var value=this.Data.Data[i];if(value==null)continue;if(bUpBar){if(value<0)continue;}else{if(value>=0)continue;}if(isMinute){var x=this.ChartFrame.GetXFromIndex(j);}else{var left=xOffset;var right=xOffset+dataWidth;if(right>chartright)break;var x=left+(right-left)/2;}if(x>chartright)break;var bDiffBar=false;var diffValue=null;if(this.BaseValue>0){if(value<this.BaseValue){bDiffBar=true;diffValue=this.BaseValue-(this.BaseValue-value);}}else if(this.BaseValue<0){if(value>this.BaseValue){bDiffBar=true;diffValue=this.BaseValue+(value-this.BaseValue);}}if(!bDiffBar){var y=this.ChartFrame.GetYFromData(value);aryBar.push({X:x,Y:y});}else{var y=this.ChartFrame.GetYFromData(diffValue);aryDiffBar.push({X:x,Y:y});}}this.Canvas.lineWidth=lineWidth;if(bUpBar)this.Canvas.strokeStyle=this.UpColor;else this.Canvas.strokeStyle=this.DownColor;this.DrawStick(aryBar,lineWidth,yBottom);if(this.BaseValue>0){this.Canvas.strokeStyle=this.UpDiffColor;this.DrawStick(aryDiffBar,lineWidth,yBottom);}else if(this.BaseValue<0){this.Canvas.strokeStyle=this.DownDiffColor;this.DrawStick(aryDiffBar,lineWidth,yBottom);}};this.DrawStick=function(aryData,lineWidth,yBottom){if(!IFrameSplitOperator.IsNonEmptyArray(aryData))return;var isHSCreen=this.ChartFrame.IsHScreen===true;var drawCount=0;this.Canvas.beginPath();for(var i=0;i<aryData.length;++i){var item=aryData[i];var y=item.Y;var xFix=ToFixedPoint2(lineWidth,item.X);//毛边修正
|
|
4084
|
-
if(isHSCreen){this.Canvas.moveTo(yBottom,ToFixedPoint(x));this.Canvas.lineTo(y,ToFixedPoint(x));}else{this.Canvas.moveTo(xFix,yBottom);this.Canvas.lineTo(xFix,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();};this.DrawBaseLine=function(){if(!IFrameSplitOperator.IsNumber(this.BaseValue)||this.BaseValue==0)return;if(!this.BaseLineColor)return;var isHSCreen=this.ChartFrame.IsHScreen===true;var border=this.ChartFrame.GetBorder();var y=this.ChartFrame.GetYFromData(this.BaseValue);this.Canvas.strokeStyle=this.BaseLineColor;this.Canvas.lineWidth=1*GetDevicePixelRatio();if(isHSCreen){}else{var yFix=ToFixedPoint(y);this.Canvas.beginPath();this.Canvas.moveTo(border.Left,yFix);this.Canvas.lineTo(border.Right,yFix);this.Canvas.stroke();}};this.GetMaxMin=function(){if(!IFrameSplitOperator.IsNumber(this.BaseValue)||this.BaseValue==0)return this.Super_GetMaxMin();
|
|
4085
|
+
if(isHSCreen){this.Canvas.moveTo(yBottom,ToFixedPoint(x));this.Canvas.lineTo(y,ToFixedPoint(x));}else{this.Canvas.moveTo(xFix,yBottom);this.Canvas.lineTo(xFix,y);}++drawCount;}if(drawCount>0)this.Canvas.stroke();};this.DrawBaseLine=function(){if(!IFrameSplitOperator.IsNumber(this.BaseValue)||this.BaseValue==0)return;if(!this.BaseLineColor)return;var isHSCreen=this.ChartFrame.IsHScreen===true;var border=this.ChartFrame.GetBorder();var y=this.ChartFrame.GetYFromData(this.BaseValue);this.Canvas.strokeStyle=this.BaseLineColor;this.Canvas.lineWidth=1*GetDevicePixelRatio();if(isHSCreen){}else{var yFix=ToFixedPoint(y);this.Canvas.beginPath();this.Canvas.moveTo(border.Left,yFix);this.Canvas.lineTo(border.Right,yFix);this.Canvas.stroke();}};this.GetMaxMin=function(){if(!IFrameSplitOperator.IsNumber(this.BaseValue)||this.BaseValue==0)return this.Super_GetMaxMin();if(this.ValueRange)//固定最大最小
|
|
4086
|
+
{var range={Min:this.ValueRange.Min,Max:this.ValueRange.Max};return range;}var xPointCount=this.ChartFrame.XPointCount;var start=this.Data.DataOffset;if(this.ChartFrame.GlobalOption&&this.ChartFrame.GlobalOption.IsValueFullRange){start=0;xPointCount=this.Data.Data.length;}var range={Min:null,Max:null},maxDiffValue=null;//基准值的差值
|
|
4085
4087
|
if(!this.Data||!this.Data.Data)return range;if(this.BaseValue>0)range.Min=this.BaseValue;else range.Max=this.BaseValue;for(var i=start,j=0;i<this.Data.Data.length&&j<xPointCount;++i,++j){var value=this.Data.Data[i];if(value==null||isNaN(value))continue;if(this.BaseValue>0){if(value<0)continue;if(value<this.BaseValue){var diffValue=this.BaseValue-value;if(maxDiffValue==null||maxDiffValue<diffValue)maxDiffValue=diffValue;continue;}}else{if(value>0)continue;if(value>this.BaseValue){var diffValue=value-this.BaseValue;if(maxDiffValue==null||maxDiffValue<diffValue)maxDiffValue=diffValue;continue;}}if(range.Max==null)range.Max=value;if(range.Min==null)range.Min=value;if(range.Max<value)range.Max=value;if(range.Min>value)range.Min=value;}if(this.BaseValue>0){if(IFrameSplitOperator.IsNumber(maxDiffValue)&&IFrameSplitOperator.IsNumber(range.Min))range.Min-=maxDiffValue;}else{if(IFrameSplitOperator.IsNumber(maxDiffValue)&&IFrameSplitOperator.IsNumber(range.Max))range.Max+=maxDiffValue;}return range;};}//柱子
|
|
4086
4088
|
function ChartBar(){this.newMethod=IChartPainting;//派生
|
|
4087
4089
|
this.newMethod();delete this.newMethod;this.ClassName="ChartBar";this.UpBarColor=g_JSChartResource.UpBarColor;this.DownBarColor=g_JSChartResource.DownBarColor;this.Draw=function(){if(this.ChartFrame.IsMinSize)return;if(this.NotSupportMessage){this.DrawNotSupportmessage();return;}var dataWidth=this.ChartFrame.DataWidth;var distanceWidth=this.ChartFrame.DistanceWidth;var chartright=this.ChartBorder.GetRight();var xPointCount=this.ChartFrame.XPointCount;var xOffset=this.ChartBorder.GetLeft()+distanceWidth/2.0+2.0;var bFirstPoint=true;var drawCount=0;var yBottom=this.ChartFrame.GetYFromData(0);if(dataWidth>=4){yBottom=ToFixedRect(yBottom);//调整为整数
|
|
@@ -13351,17 +13353,22 @@ this.ChartPaint=[];//图形画法
|
|
|
13351
13353
|
this.Canvas=uielement.getContext("2d");//画布
|
|
13352
13354
|
this.ShowCanvas=null;this.NetworkFilter;//数据回调接口
|
|
13353
13355
|
this.Data={XOffset:0,YOffset:0,Data:[]};//股票列表
|
|
13354
|
-
this.MapSymbol=new _map2.default();this.SourceData={Data:[]//码表数据 Data:[ { Symbol:, Spell, Name:, Color:}]
|
|
13356
|
+
this.MapSymbol=new _map2.default();this.SourceData={Data:[]//码表数据 Data:[ { Symbol:, Spell, Name:, Color: TypeName:, TypeID } ]
|
|
13357
|
+
};this.FunctionKeyData=[];//功能键 { Priority:, Data:[ { Symbol:, Spell, Name:, Color:, TypeName:, TypeID } ]
|
|
13355
13358
|
//事件回调
|
|
13356
|
-
|
|
13359
|
+
this.mapEvent=new _map2.default();//通知外部调用 key:JSCHART_EVENT_ID value:{Callback:回调,}
|
|
13357
13360
|
this.UIElement=uielement;this.LastPoint=new Point();//鼠标位置
|
|
13358
13361
|
//拖拽滚动条
|
|
13359
13362
|
this.DragYScroll=null;//{Start:{x,y}, End:{x, y}}
|
|
13360
13363
|
this.IsDestroy=false;//是否已经销毁了
|
|
13361
13364
|
this.ChartDestory=function()//销毁
|
|
13362
|
-
{this.IsDestroy=true;};this.ClearSearch=function(option){this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0;if(option&&option.Redraw==true)this.Draw();};this.
|
|
13365
|
+
{this.IsDestroy=true;};this.ClearSearch=function(option){this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0;if(option&&option.Redraw==true)this.Draw();};this.SearchFunctionKeyData=function(strSearch){if(strSearch.length<=0)return null;if(!IFrameSplitOperator.IsNonEmptyArray(this.FunctionKeyData))return null;var aryData=[];for(var i=0;i<this.FunctionKeyData.length;++i){var groupData=this.FunctionKeyData[i];if(!groupData)continue;if(!IFrameSplitOperator.IsNonEmptyArray(groupData.Data))continue;var aryExactQuery=[];//精确查询
|
|
13366
|
+
var aryFuzzyQuery=[];//模糊查询
|
|
13367
|
+
var aryEqualQuery=[];//相等
|
|
13368
|
+
for(var j=0;j<groupData.Data.length;++j){var item=groupData.Data[j];if(this.SearchSymbol(item,strSearch,aryExactQuery,aryFuzzyQuery,aryEqualQuery))continue;}if(IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery))aryData.push.apply(aryData,aryEqualQuery);if(IFrameSplitOperator.IsNonEmptyArray(aryExactQuery))aryData.push.apply(aryData,aryExactQuery);if(IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery))aryData.push.apply(aryData,aryFuzzyQuery);}if(aryData.length>0)return aryData;return null;};this.Search=function(strText){var _Data$Data,_Data$Data2,_Data$Data3,_Data$Data4;var aryExactQuery=[];//精确查询
|
|
13363
13369
|
var aryFuzzyQuery=[];//模糊查询
|
|
13364
|
-
|
|
13370
|
+
var aryEqualQuery=[];//相等
|
|
13371
|
+
var aryFuncKeyQuery=null;this.MapSymbol.clear();this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0;var strSearch=strText.trim();if(strSearch.length>0){aryFuncKeyQuery=this.SearchFunctionKeyData(strSearch);for(var i=0;i<this.SourceData.Data.length;++i){var item=this.SourceData.Data[i];if(this.SearchSymbol(item,strSearch,aryExactQuery,aryFuzzyQuery,aryEqualQuery))continue;else if(this.SearchSpell(item,strSearch,aryExactQuery,aryFuzzyQuery))continue;}}if(IFrameSplitOperator.IsNonEmptyArray(aryFuncKeyQuery))(_Data$Data=this.Data.Data).push.apply(_Data$Data,(0,_toConsumableArray3.default)(aryFuncKeyQuery));if(IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery))(_Data$Data2=this.Data.Data).push.apply(_Data$Data2,aryEqualQuery);if(IFrameSplitOperator.IsNonEmptyArray(aryExactQuery))(_Data$Data3=this.Data.Data).push.apply(_Data$Data3,aryExactQuery);if(IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery))(_Data$Data4=this.Data.Data).push.apply(_Data$Data4,aryFuzzyQuery);this.ChartPaint[0].SelectedRow=0;this.ChartPaint[0].SizeChange=true;JSConsole.Chart.Log('[JSKeyboardChart:Search] search='+strSearch+', source='+this.SourceData.Data.length+' match='+this.Data.Data.length);this.Draw();};this.SearchSymbol=function(item,strText,aryExactQuery,aryFuzzyQuery,aryEqualQuery){var find=item.Symbol.indexOf(strText);if(find<0)return false;if(item.Symbol==strText)aryEqualQuery.push(item.Symbol);else if(find==0)aryExactQuery.push(item.Symbol);else aryFuzzyQuery.push(item.Symbol);this.MapSymbol.set(item.Symbol,item);return true;};this.SearchSpell=function(item,strText,aryExactQuery,aryFuzzyQuery){if(!IFrameSplitOperator.IsString(item.Spell))return false;var find=item.Spell.indexOf(strText);if(find!=0)return false;aryExactQuery.push(item.Symbol);this.MapSymbol.set(item.Symbol,item);return true;};this.SetSymbolData=function(arySymbol){this.SourceData.Data=[];for(var i=0;i<arySymbol.length;++i){var item=arySymbol[i];if(IFrameSplitOperator.IsNumber(item.Priority)){if(!this.FunctionKeyData[item.Priority])this.FunctionKeyData[item.Priority]={Priority:item.Priority,Data:[]};this.FunctionKeyData[item.Priority].Data.push(item);}else{this.SourceData.Data.push(item);}}/*
|
|
13365
13372
|
//测试
|
|
13366
13373
|
this.MapSymbol.clear();
|
|
13367
13374
|
for(var i=0;i<this.SourceData.Data.length && i<3050 ;++i)
|
|
@@ -13393,7 +13400,7 @@ var result=this.MoveSelectedRow(1);if(result){if(result.Redraw)this.Draw();}brea
|
|
|
13393
13400
|
if(this.MoveXOffset(-1))this.Draw();break;case 39://right
|
|
13394
13401
|
if(this.MoveXOffset(1))this.Draw();break;case 13://Enter
|
|
13395
13402
|
this.OnSelectedSymbol();break;}//不让滚动条滚动
|
|
13396
|
-
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnSelectedSymbol=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;var chart=this.ChartPaint[0];if(!chart)return false;var data=chart.GetSelectedSymbol();var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED);if(event&&event.Callback){event.Callback(event,{Data:data},this);}};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){if(chart.OnDblClick(x,y,e))this.OnSelectedSymbol();}};this.UIOnMouseDown=function(e){var _this70=this;this.DragYScroll=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
13403
|
+
if(e.preventDefault)e.preventDefault();else e.returnValue=false;};this.OnSelectedSymbol=function(){if(!this.Data||!IFrameSplitOperator.IsNonEmptyArray(this.Data.Data))return false;var chart=this.ChartPaint[0];if(!chart)return false;var data=chart.GetSelectedSymbol();var selItem=this.MapSymbol.get(data.Symbol);if(!selItem)return false;var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED);if(event&&event.Callback){event.Callback(event,{Data:data,RowData:selItem},this);}};this.UIOnDblClick=function(e){var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){if(chart.OnDblClick(x,y,e))this.OnSelectedSymbol();}};this.UIOnMouseDown=function(e){var _this70=this;this.DragYScroll=null;this.DragMove={Click:{X:e.clientX,Y:e.clientY},Move:{X:e.clientX,Y:e.clientY},PreMove:{X:e.clientX,Y:e.clientY}};var pixelTatio=GetDevicePixelRatio();var x=(e.clientX-this.UIElement.getBoundingClientRect().left)*pixelTatio;var y=(e.clientY-this.UIElement.getBoundingClientRect().top)*pixelTatio;var chart=this.ChartPaint[0];if(chart){var clickData=chart.OnMouseDown(x,y,e);if(!clickData)return;//if (e.button!=0) return;
|
|
13397
13404
|
if(clickData.Type==2&&(e.button==0||e.button==2))//点击行
|
|
13398
13405
|
{if(clickData.Redraw==true)this.Draw();}else if(clickData.Type==5&&e.button==0)//右侧滚动条
|
|
13399
13406
|
{var scroll=clickData.VScrollbar;if(scroll.Type==1)//顶部按钮
|
|
@@ -13453,7 +13460,7 @@ this.Column=//{ Type:列id, Title:标题, TextAlign:文字对齐方式, MaxText:
|
|
|
13453
13460
|
{Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID,Title:"类型",TextAlign:"right",Width:null,MaxText:"擎擎擎擎"}];this.RectClient={};this.ReloadResource=function(resource){this.BorderColor=g_JSChartResource.Keyboard.BorderColor;//边框线
|
|
13454
13461
|
this.SelectedColor=g_JSChartResource.Keyboard.SelectedColor;//选中行
|
|
13455
13462
|
this.TextColor=g_JSChartResource.Keyboard.TextColor;//文字颜色
|
|
13456
|
-
if(this.VScrollbar)this.VScrollbar.ReloadResource(resource);};this.SetColumn=function(aryColumn){if(!IFrameSplitOperator.IsNonEmptyArray(aryColumn))return;};this.Draw=function(){this.ShowSymbol=[];if(this.SizeChange)this.CalculateSize();else this.UpdateCacheData();var bShowVScrollbar=this.IsShowVScrollbar();this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(this.RectClient.Left,this.RectClient.Top+1,this.RectClient.Right-this.RectClient.Left,this.RectClient.Bottom-(this.RectClient.Top+1));//this.Canvas.stroke(); //调试用
|
|
13463
|
+
if(this.VScrollbar)this.VScrollbar.ReloadResource(resource);};this.SetColumn=function(aryColumn){if(!IFrameSplitOperator.IsNonEmptyArray(aryColumn))return;this.Column=[];for(var i=0;i<aryColumn.length;++i){var item=aryColumn[i];var colItem=this.GetDefaultColunm(item.Type);if(!colItem)continue;if(item.Title)colItem.Title=item.Title;if(item.TextAlign)colItem.TextAlign=item.TextAlign;if(item.MaxText)colItem.MaxText=item.MaxText;this.Column.push(colItem);}};this.GetDefaultColunm=function(id){var DEFAULT_COLUMN=[{Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID,Title:"代码",TextAlign:"left",Width:null,MaxText:"888888"},{Type:KEYBOARD_COLUMN_ID.NAME_ID,Title:"名称",TextAlign:"left",Width:null,MaxText:"擎擎擎擎擎擎"},{Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID,Title:"类型",TextAlign:"right",Width:null,MaxText:"擎擎擎擎"}];for(var i=0;i<DEFAULT_COLUMN.length;++i){var item=DEFAULT_COLUMN[i];if(item.Type==id)return item;}return null;};this.Draw=function(){this.ShowSymbol=[];if(this.SizeChange)this.CalculateSize();else this.UpdateCacheData();var bShowVScrollbar=this.IsShowVScrollbar();this.Canvas.save();this.Canvas.beginPath();this.Canvas.rect(this.RectClient.Left,this.RectClient.Top+1,this.RectClient.Right-this.RectClient.Left,this.RectClient.Bottom-(this.RectClient.Top+1));//this.Canvas.stroke(); //调试用
|
|
13457
13464
|
this.Canvas.clip();this.DrawBody();this.Canvas.restore();this.DrawBorder();if(this.VScrollbar&&bShowVScrollbar){var bottom=this.ChartBorder.GetBottom();this.VScrollbar.DrawScrollbar(this.RectClient.Left,this.RectClient.Top+2,this.RectClient.Right+this.VScrollbar.ButtonSize+2,bottom-2);}this.SizeChange=false;};//更新缓存变量
|
|
13458
13465
|
this.UpdateCacheData=function(){this.RectClient.Left=this.ChartBorder.GetLeft();this.RectClient.Right=this.ChartBorder.GetRight();this.RectClient.Top=this.ChartBorder.GetTop();this.RectClient.Bottom=this.ChartBorder.GetBottom();var bShowVScrollbar=this.IsShowVScrollbar();if(bShowVScrollbar&&this.VScrollbar&&this.VScrollbar.Enable){this.RectClient.Right-=this.VScrollbar.ButtonSize+2;}};this.GetPageSize=function(recalculate)//recalculate 是否重新计算
|
|
13459
13466
|
{if(recalculate)this.CalculateSize();var size=this.RowCount;return size;};this.GetCurrentPageStatus=function()//{ Start:起始索引, End:结束索引(数据), PageSize:页面可以显示几条记录, IsEnd:是否是最后一页, IsSinglePage:是否只有一页数据}
|
|
@@ -13735,7 +13742,8 @@ Border://边框
|
|
|
13735
13742
|
Right:1,//右边间距
|
|
13736
13743
|
Bottom:1,//底部间距
|
|
13737
13744
|
Top:1//顶部间距
|
|
13738
|
-
},BorderLine:1|2|4|8,EnableResize:true
|
|
13745
|
+
},BorderLine:1|2|4|8,EnableResize:true,//{ Type:列id, Title:标题, TextAlign:文字对齐方式, MaxText:文字最大宽度 , TextColor:文字颜色, Sort:0=不支持排序 1=本地排序 0=远程排序 }
|
|
13746
|
+
Column:[{Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID,Title:"代码",TextAlign:"left",Width:null,MaxText:"888888"},{Type:KEYBOARD_COLUMN_ID.NAME_ID,Title:"名称",TextAlign:"left",Width:null,MaxText:"擎擎擎擎擎擎擎擎"},{Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID,Title:"类型",TextAlign:"right",Width:null,MaxText:"擎擎擎擎擎"}]};return option;};///////////////////////////////////////////////////////////////////////////////////
|
|
13739
13747
|
// 工作线程计算指标示例
|
|
13740
13748
|
//
|
|
13741
13749
|
//
|
|
@@ -13747,7 +13755,7 @@ hisData.Symbol=message.symbol;}var stockObj={HQDataType:HQ_DATA_TYPE.KLINE_ID,St
|
|
|
13747
13755
|
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);};}/********************************************************************************
|
|
13748
13756
|
* 版本信息输出
|
|
13749
13757
|
*
|
|
13750
|
-
*/var HQCHART_VERSION="1.1.
|
|
13758
|
+
*/var HQCHART_VERSION="1.1.13719";function PrintHQChartVersion(){var logo='\n\n*************************************************************************************************************************************************************************** \n* \n* :%@@- \n* :@@@@- \n* =@@@@ :#@@@ .:+#@@@#=: :=*@@@@@@#+-. *@@@@. \n* :@@@@@ .@@@@@ .#@@@@@@@@@@@- +@@@@@@@@@@@@@+ @@@@@ -%@@* \n* +@@@@% #@@@@# *@@@@@@@@@@@@@@%. =@@@@@@@@@@@@@@@- @@@@@ -@@@@+ \n* %@@@@* @@@@@+ .%@@@@@@@@@@@@@@@@%: #@@@@@@@@@@@@@@@% @@@@# *@@@@= \n* @@@@@= @@@@@- .%@@@@@@@*++*%@@@@@@% .%@@@@@@@%*+==+**= -@@@@+ #@@@@- \n* @@@@@. @@@@@. #@@@@@%= =@@@@@@* %@@@@@@#: *@@@@- :::. .-+*###+: ::: .+##+: -%%@@@@@%%%% \n* .@@@@@ .@@@@@. +@@@@@% .@@@@@@ *@@@@@@: %@@@@: +@@@@@%. :%@@@@@@@@@@: *@@@ :@@@@@* @@@@@@@@@@@@ \n* :@@@@@ :@@@@@ @@@@@% :@@@@@+ @@@@@@: %@@@@-@@@@@@@@@. @@@@@@@@@@@@@. :@@@%-@@@@@@.:@@@@@@@@@@@# \n* -@@@@% -@@@@@ =@@@@@. %@@@@% %@@@@@- %@@@@@@@@@@@@@@* %@@@@@@@@@@@@+ -@@@@@@@@@@# -@@@@@@@@@@@. \n* +@@@@%=========#@@@@% @@@@@# :@@@@@ .@@@@@% @@@@@@@@%@@@@@@@ -%+:. .#@@@@* +@@@@@@@%%@. .::+@@@@#:: \n* #@@@@@@@@@@@@@@@@@@@# .@@@@@ .@@@@@ :@@@@@. @@@@@@#. #@@@@@. -@@@@* #@@@@@@: *@@@@+ \n* %@@@@@@@@@@@@@@@@@@@+ :@@@@@ .@@@@@ -@@@@@ @@@@@+ @@@@@. :@@@@* @@@@@% #@@@@- \n* @@@@@@@@@@@@@@@@@@@@: :@@@@% :@@@@@ +@@@@% -@@@@+ @@@@@ -@@@@+ @@@@@. @@@@@. \n* .@@@@@@@@@@@@@@@@@@@@ :@@@@% -@@@@% *@@@@% #@@@@. @@@@@ .=*#%%%@@@@@= :@@@@# @@@@@. \n* -@@@@@:::::::::=@@@@@ :@@@@@ @@@@@* +@@@@% @@@@@ @@@@% -#@@@@@@@@@@@@: -@@@@* @@@@@ \n* =@@@@% =@@@@% .@@@@@ :@@@@@. -@@@@% @@@@@ .@@@@* +@@@@@@@@@@@@@@. =@@@@+ .@@@@@ \n* +@@@@# +@@@@# @@@@@# %@@@@% :@@@@@ .@@@@% =@@@@= -@@@@@*-:..%@@@@ +@@@@= :@@@@# \n* *@@@@* *@@@@* +@@@@@: #@@@@@+ .@@@@@@ :@@@@% *@@@@- @@@@@. @@@@% #@@@@: =@@@@+ \n* %@@@@= %@@@@+ @@@@@@- .%@@@@@# #@@@@@# :@@@@% #@@@@: @@@@% @@@@* %@@@@. #@@@@- \n* @@@@@- @@@@@= =@@@@@@#=...-*@@@@@@@: @@@@@@%=. :+**. :@@@@* %@@@@. .@@@@* *@@@@= @@@@@ %@@@@+ \n* .@@@@@: .@@@@@: *@@@@@@@@@@@@@@@@@@@# =@@@@@@@@%%%@@@@@@ +@@@@- @@@@@ .@@@@@: :%@@@@@- .@@@@% %@@@@@*+- \n* :@@@@@ :@@@@@ +@@@@@@@@@@@@@@@@@@@# =@@@@@@@@@@@@@@@@% %@@@@ @@@@@ @@@@@@@@@@@@@@@: -@@@@* *@@@@@@@@- \n* =@@@@@ -@@@@@ :@@@@@@@@@@@@@@@@@@@# :@@@@@@@@@@@@@@@% @@@@@ %@@@% #@@@@@@@@@#@@@@. +@@@@- .@@@@@@@@# \n* *@@@@# =@@@@% :#@@@@@@@#: :@@@@@= =@@@@@@@@@@@+. @@@@@ :@@@+ *@@@@@@@- %@@@ *@@@= =@@@@@@@* \n* =++++- -++++= .:::. .=*+: :-=+++=:. ****= .=+. .-++=: :+++ -+=: .-=+=:. \n* \n* \n* HQChart \n* Ver: '+HQCHART_VERSION+' \n* License: Apache License 2.0 \n* Source: https://github.com/jones2000/HQChart\n*\n************************************************************************************************************************************************************************** \n ';console.log(logo);}PrintHQChartVersion();//把给外界调用的方法暴露出来
|
|
13751
13759
|
exports.default=(_jsChartInit$jsChartS={jsChartInit:JSChart.Init,jsChartStyle:JSChart.SetStyle,// IsIndexSymbol:IsIndexSymbol,
|
|
13752
13760
|
// BaseIndex:BaseIndex,
|
|
13753
13761
|
// ChartLine:ChartLine,
|
package/package.json
CHANGED
|
@@ -49702,7 +49702,7 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
|
|
|
49702
49702
|
var shortSymbol=item[0];
|
|
49703
49703
|
shortSymbol=shortSymbol.replace(".sh", "");
|
|
49704
49704
|
shortSymbol=shortSymbol.replace(".sz", "");
|
|
49705
|
-
var symbolItem={ Symbol:item[0], Name:item[1], ShortSymbol:shortSymbol, Spell:item[3], Type:item[2] };
|
|
49705
|
+
var symbolItem={ Symbol:item[0], Name:item[1], ShortSymbol:shortSymbol, Spell:item[3], Type:item[2], Data:{ Symbol:item[0], Type:0 } };
|
|
49706
49706
|
if (symbolItem.Type=="EQA")
|
|
49707
49707
|
{
|
|
49708
49708
|
symbolItem.TypeName="股票";
|
|
@@ -49716,6 +49716,15 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
|
|
|
49716
49716
|
arySymbol.push(symbolItem);
|
|
49717
49717
|
}
|
|
49718
49718
|
|
|
49719
|
+
arySymbol.push( { Symbol:"01", Name:"分时成交明细", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" , Data:{ PageName:"分时成交明细", Type:2 }} );
|
|
49720
|
+
arySymbol.push( { Symbol:"02", Name:"分价表", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" ,Data:{ PageName:"分价表", Type:2 }} );
|
|
49721
|
+
arySymbol.push( { Symbol:"06", Name:"自选股", TypeName:"功能键", Priority:1 , Color:"rgb(220,20,60)", Data:{ PageName:"自选股", Type:2 }} );
|
|
49722
|
+
|
|
49723
|
+
arySymbol.push( { Symbol:"MACD", Name:"平滑异同平均线", TypeName:"指标", Priority:2 , Color:"rgb(0,0,255)", Data:{ Index:"MACD", Type:1 }} );
|
|
49724
|
+
arySymbol.push( { Symbol:"RSI", Name:"相对强弱指标", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)",Data:{ Index:"RSI", Type:1 }} );
|
|
49725
|
+
arySymbol.push( { Symbol:"MA", Name:"均线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"MA", Type:1 } } );
|
|
49726
|
+
arySymbol.push( { Symbol:"BOLL", Name:"布林线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"BOLL", Type:1 } } );
|
|
49727
|
+
|
|
49719
49728
|
callback(arySymbol);
|
|
49720
49729
|
}
|
|
49721
49730
|
|
|
@@ -269,7 +269,15 @@ JSPopKeyboard.GetOption=function()
|
|
|
269
269
|
},
|
|
270
270
|
|
|
271
271
|
BorderLine:1|2|4|8,
|
|
272
|
-
EnableResize:true
|
|
272
|
+
EnableResize:true,
|
|
273
|
+
|
|
274
|
+
//{ Type:列id, Title:标题, TextAlign:文字对齐方式, MaxText:文字最大宽度 , TextColor:文字颜色, Sort:0=不支持排序 1=本地排序 0=远程排序 }
|
|
275
|
+
Column:
|
|
276
|
+
[
|
|
277
|
+
{ Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID, Title:"代码", TextAlign:"left", Width:null, MaxText:"888888" },
|
|
278
|
+
{ Type:KEYBOARD_COLUMN_ID.NAME_ID, Title:"名称", TextAlign:"left", Width:null, MaxText:"擎擎擎擎擎擎擎擎" },
|
|
279
|
+
{ Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID, Title:"类型", TextAlign:"right", Width:null, MaxText:"擎擎擎擎擎" },
|
|
280
|
+
]
|
|
273
281
|
};
|
|
274
282
|
|
|
275
283
|
return option;
|
package/src/jscommon/umychart.js
CHANGED
|
@@ -35988,6 +35988,7 @@ function ChartClipColorStick()
|
|
|
35988
35988
|
|
|
35989
35989
|
this.BaseValue=0;
|
|
35990
35990
|
this.Super_GetMaxMin=this.GetMaxMin; //父类的方法
|
|
35991
|
+
this.ValueRange; //{ Max:, Min: } //固定最大最小值
|
|
35991
35992
|
|
|
35992
35993
|
this.SetOption=function(option)
|
|
35993
35994
|
{
|
|
@@ -35999,6 +36000,7 @@ function ChartClipColorStick()
|
|
|
35999
36000
|
if (option.UpDiffColor) this.UpDiffColor=option.UpDiffColor;
|
|
36000
36001
|
if (option.BaseLineColor) this.BaseLineColor=option.BaseLineColor;
|
|
36001
36002
|
if (IFrameSplitOperator.IsNumber(option.BaseValue)) this.BaseValue=option.BaseValue;
|
|
36003
|
+
if (option.ValueRange) this.ValueRange=option.ValueRange;
|
|
36002
36004
|
}
|
|
36003
36005
|
|
|
36004
36006
|
this.Draw=function()
|
|
@@ -36202,6 +36204,12 @@ function ChartClipColorStick()
|
|
|
36202
36204
|
{
|
|
36203
36205
|
if (!IFrameSplitOperator.IsNumber(this.BaseValue) || this.BaseValue==0)
|
|
36204
36206
|
return this.Super_GetMaxMin();
|
|
36207
|
+
|
|
36208
|
+
if (this.ValueRange) //固定最大最小
|
|
36209
|
+
{
|
|
36210
|
+
var range={ Min:this.ValueRange.Min, Max:this.ValueRange.Max };
|
|
36211
|
+
return range;
|
|
36212
|
+
}
|
|
36205
36213
|
|
|
36206
36214
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
36207
36215
|
var start=this.Data.DataOffset;
|
|
@@ -247,7 +247,8 @@ function JSKeyboardChartContainer(uielement)
|
|
|
247
247
|
this.NetworkFilter; //数据回调接口
|
|
248
248
|
this.Data={ XOffset:0, YOffset:0, Data:[] }; //股票列表
|
|
249
249
|
this.MapSymbol=new Map();
|
|
250
|
-
this.SourceData={ Data:[] }
|
|
250
|
+
this.SourceData={ Data:[] } //码表数据 Data:[ { Symbol:, Spell, Name:, Color: TypeName:, TypeID } ]
|
|
251
|
+
this.FunctionKeyData=[]; //功能键 { Priority:, Data:[ { Symbol:, Spell, Name:, Color:, TypeName:, TypeID } ]
|
|
251
252
|
|
|
252
253
|
//事件回调
|
|
253
254
|
this.mapEvent=new Map(); //通知外部调用 key:JSCHART_EVENT_ID value:{Callback:回调,}
|
|
@@ -274,10 +275,44 @@ function JSKeyboardChartContainer(uielement)
|
|
|
274
275
|
if (option && option.Redraw==true) this.Draw();
|
|
275
276
|
}
|
|
276
277
|
|
|
278
|
+
this.SearchFunctionKeyData=function(strSearch)
|
|
279
|
+
{
|
|
280
|
+
if (strSearch.length<=0) return null;
|
|
281
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.FunctionKeyData)) return null;
|
|
282
|
+
|
|
283
|
+
var aryData=[];
|
|
284
|
+
for(var i=0; i<this.FunctionKeyData.length; ++i)
|
|
285
|
+
{
|
|
286
|
+
var groupData=this.FunctionKeyData[i];
|
|
287
|
+
if (!groupData) continue;
|
|
288
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(groupData.Data)) continue;
|
|
289
|
+
|
|
290
|
+
var aryExactQuery=[]; //精确查询
|
|
291
|
+
var aryFuzzyQuery=[]; //模糊查询
|
|
292
|
+
var aryEqualQuery=[]; //相等
|
|
293
|
+
|
|
294
|
+
for(var j=0;j<groupData.Data.length;++j)
|
|
295
|
+
{
|
|
296
|
+
var item=groupData.Data[j];
|
|
297
|
+
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery,aryEqualQuery)) continue;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery)) aryData.push(...aryEqualQuery);
|
|
301
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)) aryData.push(...aryExactQuery);
|
|
302
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery)) aryData.push(...aryFuzzyQuery);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (aryData.length>0) return aryData;
|
|
306
|
+
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
|
|
277
310
|
this.Search=function(strText)
|
|
278
311
|
{
|
|
279
312
|
var aryExactQuery=[]; //精确查询
|
|
280
313
|
var aryFuzzyQuery=[]; //模糊查询
|
|
314
|
+
var aryEqualQuery=[]; //相等
|
|
315
|
+
var aryFuncKeyQuery=null;
|
|
281
316
|
this.MapSymbol.clear();
|
|
282
317
|
this.Data.Data=[];
|
|
283
318
|
this.Data.XOffset=0;
|
|
@@ -286,17 +321,21 @@ function JSKeyboardChartContainer(uielement)
|
|
|
286
321
|
var strSearch=strText.trim();
|
|
287
322
|
if (strSearch.length>0)
|
|
288
323
|
{
|
|
324
|
+
aryFuncKeyQuery=this.SearchFunctionKeyData(strSearch);
|
|
325
|
+
|
|
289
326
|
for(var i=0;i<this.SourceData.Data.length;++i)
|
|
290
327
|
{
|
|
291
328
|
var item=this.SourceData.Data[i];
|
|
292
|
-
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery)) continue;
|
|
329
|
+
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery, aryEqualQuery)) continue;
|
|
293
330
|
else if (this.SearchSpell(item, strSearch, aryExactQuery, aryFuzzyQuery)) continue;
|
|
294
331
|
}
|
|
295
332
|
}
|
|
296
|
-
|
|
297
|
-
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery) || IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery))
|
|
298
|
-
this.Data.Data=aryExactQuery.concat(aryFuzzyQuery);
|
|
299
333
|
|
|
334
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuncKeyQuery)) this.Data.Data.push(...aryFuncKeyQuery);
|
|
335
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery)) this.Data.Data.push(...aryEqualQuery);
|
|
336
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)) this.Data.Data.push(...aryExactQuery);
|
|
337
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery)) this.Data.Data.push(...aryFuzzyQuery);
|
|
338
|
+
|
|
300
339
|
this.ChartPaint[0].SelectedRow=0;
|
|
301
340
|
this.ChartPaint[0].SizeChange=true;
|
|
302
341
|
|
|
@@ -305,12 +344,13 @@ function JSKeyboardChartContainer(uielement)
|
|
|
305
344
|
this.Draw();
|
|
306
345
|
}
|
|
307
346
|
|
|
308
|
-
this.SearchSymbol=function(item, strText, aryExactQuery, aryFuzzyQuery)
|
|
347
|
+
this.SearchSymbol=function(item, strText, aryExactQuery, aryFuzzyQuery, aryEqualQuery)
|
|
309
348
|
{
|
|
310
349
|
var find=item.Symbol.indexOf(strText);
|
|
311
350
|
if (find<0) return false;
|
|
312
351
|
|
|
313
|
-
if (
|
|
352
|
+
if (item.Symbol==strText) aryEqualQuery.push(item.Symbol);
|
|
353
|
+
else if (find==0) aryExactQuery.push(item.Symbol);
|
|
314
354
|
else aryFuzzyQuery.push(item.Symbol);
|
|
315
355
|
|
|
316
356
|
this.MapSymbol.set(item.Symbol, item);
|
|
@@ -335,8 +375,21 @@ function JSKeyboardChartContainer(uielement)
|
|
|
335
375
|
|
|
336
376
|
this.SetSymbolData=function(arySymbol)
|
|
337
377
|
{
|
|
338
|
-
this.SourceData.Data=
|
|
339
|
-
|
|
378
|
+
this.SourceData.Data=[];
|
|
379
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
380
|
+
{
|
|
381
|
+
var item=arySymbol[i];
|
|
382
|
+
if (IFrameSplitOperator.IsNumber(item.Priority))
|
|
383
|
+
{
|
|
384
|
+
if (!this.FunctionKeyData[item.Priority]) this.FunctionKeyData[item.Priority]={ Priority:item.Priority, Data:[] };
|
|
385
|
+
this.FunctionKeyData[item.Priority].Data.push(item);
|
|
386
|
+
}
|
|
387
|
+
else
|
|
388
|
+
{
|
|
389
|
+
this.SourceData.Data.push(item);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
340
393
|
/*
|
|
341
394
|
//测试
|
|
342
395
|
this.MapSymbol.clear();
|
|
@@ -609,11 +662,13 @@ function JSKeyboardChartContainer(uielement)
|
|
|
609
662
|
if (!chart) return false;
|
|
610
663
|
|
|
611
664
|
var data=chart.GetSelectedSymbol();
|
|
665
|
+
var selItem=this.MapSymbol.get(data.Symbol);
|
|
666
|
+
if (!selItem) return false;
|
|
612
667
|
|
|
613
668
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED)
|
|
614
669
|
if (event && event.Callback)
|
|
615
670
|
{
|
|
616
|
-
event.Callback(event, { Data:data }, this);
|
|
671
|
+
event.Callback(event, { Data:data, RowData:selItem }, this);
|
|
617
672
|
}
|
|
618
673
|
}
|
|
619
674
|
|
|
@@ -1223,6 +1278,38 @@ function ChartSymbolList()
|
|
|
1223
1278
|
this.SetColumn=function(aryColumn)
|
|
1224
1279
|
{
|
|
1225
1280
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryColumn)) return;
|
|
1281
|
+
|
|
1282
|
+
this.Column=[];
|
|
1283
|
+
for(var i=0;i<aryColumn.length;++i)
|
|
1284
|
+
{
|
|
1285
|
+
var item=aryColumn[i];
|
|
1286
|
+
var colItem=this.GetDefaultColunm(item.Type);
|
|
1287
|
+
if (!colItem) continue;
|
|
1288
|
+
|
|
1289
|
+
if (item.Title) colItem.Title=item.Title;
|
|
1290
|
+
if (item.TextAlign) colItem.TextAlign=item.TextAlign;
|
|
1291
|
+
if (item.MaxText) colItem.MaxText=item.MaxText;
|
|
1292
|
+
|
|
1293
|
+
this.Column.push(colItem);
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
this.GetDefaultColunm=function(id)
|
|
1298
|
+
{
|
|
1299
|
+
var DEFAULT_COLUMN=
|
|
1300
|
+
[
|
|
1301
|
+
{ Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID, Title:"代码", TextAlign:"left", Width:null, MaxText:"888888" },
|
|
1302
|
+
{ Type:KEYBOARD_COLUMN_ID.NAME_ID, Title:"名称", TextAlign:"left", Width:null, MaxText:"擎擎擎擎擎擎" },
|
|
1303
|
+
{ Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID, Title:"类型", TextAlign:"right", Width:null, MaxText:"擎擎擎擎" },
|
|
1304
|
+
];
|
|
1305
|
+
|
|
1306
|
+
for(var i=0;i<DEFAULT_COLUMN.length;++i)
|
|
1307
|
+
{
|
|
1308
|
+
var item=DEFAULT_COLUMN[i];
|
|
1309
|
+
if (item.Type==id) return item;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
return null;
|
|
1226
1313
|
}
|
|
1227
1314
|
|
|
1228
1315
|
this.Draw=function()
|
|
@@ -1027,7 +1027,7 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
|
|
|
1027
1027
|
var shortSymbol=item[0];
|
|
1028
1028
|
shortSymbol=shortSymbol.replace(".sh", "");
|
|
1029
1029
|
shortSymbol=shortSymbol.replace(".sz", "");
|
|
1030
|
-
var symbolItem={ Symbol:item[0], Name:item[1], ShortSymbol:shortSymbol, Spell:item[3], Type:item[2] };
|
|
1030
|
+
var symbolItem={ Symbol:item[0], Name:item[1], ShortSymbol:shortSymbol, Spell:item[3], Type:item[2], Data:{ Symbol:item[0], Type:0 } };
|
|
1031
1031
|
if (symbolItem.Type=="EQA")
|
|
1032
1032
|
{
|
|
1033
1033
|
symbolItem.TypeName="股票";
|
|
@@ -1041,6 +1041,15 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
|
|
|
1041
1041
|
arySymbol.push(symbolItem);
|
|
1042
1042
|
}
|
|
1043
1043
|
|
|
1044
|
+
arySymbol.push( { Symbol:"01", Name:"分时成交明细", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" , Data:{ PageName:"分时成交明细", Type:2 }} );
|
|
1045
|
+
arySymbol.push( { Symbol:"02", Name:"分价表", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" ,Data:{ PageName:"分价表", Type:2 }} );
|
|
1046
|
+
arySymbol.push( { Symbol:"06", Name:"自选股", TypeName:"功能键", Priority:1 , Color:"rgb(220,20,60)", Data:{ PageName:"自选股", Type:2 }} );
|
|
1047
|
+
|
|
1048
|
+
arySymbol.push( { Symbol:"MACD", Name:"平滑异同平均线", TypeName:"指标", Priority:2 , Color:"rgb(0,0,255)", Data:{ Index:"MACD", Type:1 }} );
|
|
1049
|
+
arySymbol.push( { Symbol:"RSI", Name:"相对强弱指标", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)",Data:{ Index:"RSI", Type:1 }} );
|
|
1050
|
+
arySymbol.push( { Symbol:"MA", Name:"均线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"MA", Type:1 } } );
|
|
1051
|
+
arySymbol.push( { Symbol:"BOLL", Name:"布林线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"BOLL", Type:1 } } );
|
|
1052
|
+
|
|
1044
1053
|
callback(arySymbol);
|
|
1045
1054
|
}
|
|
1046
1055
|
|
|
@@ -39913,6 +39913,7 @@ function ChartClipColorStick()
|
|
|
39913
39913
|
|
|
39914
39914
|
this.BaseValue=0;
|
|
39915
39915
|
this.Super_GetMaxMin=this.GetMaxMin; //父类的方法
|
|
39916
|
+
this.ValueRange; //{ Max:, Min: } //固定最大最小值
|
|
39916
39917
|
|
|
39917
39918
|
this.SetOption=function(option)
|
|
39918
39919
|
{
|
|
@@ -39924,6 +39925,7 @@ function ChartClipColorStick()
|
|
|
39924
39925
|
if (option.UpDiffColor) this.UpDiffColor=option.UpDiffColor;
|
|
39925
39926
|
if (option.BaseLineColor) this.BaseLineColor=option.BaseLineColor;
|
|
39926
39927
|
if (IFrameSplitOperator.IsNumber(option.BaseValue)) this.BaseValue=option.BaseValue;
|
|
39928
|
+
if (option.ValueRange) this.ValueRange=option.ValueRange;
|
|
39927
39929
|
}
|
|
39928
39930
|
|
|
39929
39931
|
this.Draw=function()
|
|
@@ -40127,6 +40129,12 @@ function ChartClipColorStick()
|
|
|
40127
40129
|
{
|
|
40128
40130
|
if (!IFrameSplitOperator.IsNumber(this.BaseValue) || this.BaseValue==0)
|
|
40129
40131
|
return this.Super_GetMaxMin();
|
|
40132
|
+
|
|
40133
|
+
if (this.ValueRange) //固定最大最小
|
|
40134
|
+
{
|
|
40135
|
+
var range={ Min:this.ValueRange.Min, Max:this.ValueRange.Max };
|
|
40136
|
+
return range;
|
|
40137
|
+
}
|
|
40130
40138
|
|
|
40131
40139
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
40132
40140
|
var start=this.Data.DataOffset;
|
|
@@ -135137,7 +135145,8 @@ function JSKeyboardChartContainer(uielement)
|
|
|
135137
135145
|
this.NetworkFilter; //数据回调接口
|
|
135138
135146
|
this.Data={ XOffset:0, YOffset:0, Data:[] }; //股票列表
|
|
135139
135147
|
this.MapSymbol=new Map();
|
|
135140
|
-
this.SourceData={ Data:[] }
|
|
135148
|
+
this.SourceData={ Data:[] } //码表数据 Data:[ { Symbol:, Spell, Name:, Color: TypeName:, TypeID } ]
|
|
135149
|
+
this.FunctionKeyData=[]; //功能键 { Priority:, Data:[ { Symbol:, Spell, Name:, Color:, TypeName:, TypeID } ]
|
|
135141
135150
|
|
|
135142
135151
|
//事件回调
|
|
135143
135152
|
this.mapEvent=new Map(); //通知外部调用 key:JSCHART_EVENT_ID value:{Callback:回调,}
|
|
@@ -135164,10 +135173,44 @@ function JSKeyboardChartContainer(uielement)
|
|
|
135164
135173
|
if (option && option.Redraw==true) this.Draw();
|
|
135165
135174
|
}
|
|
135166
135175
|
|
|
135176
|
+
this.SearchFunctionKeyData=function(strSearch)
|
|
135177
|
+
{
|
|
135178
|
+
if (strSearch.length<=0) return null;
|
|
135179
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.FunctionKeyData)) return null;
|
|
135180
|
+
|
|
135181
|
+
var aryData=[];
|
|
135182
|
+
for(var i=0; i<this.FunctionKeyData.length; ++i)
|
|
135183
|
+
{
|
|
135184
|
+
var groupData=this.FunctionKeyData[i];
|
|
135185
|
+
if (!groupData) continue;
|
|
135186
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(groupData.Data)) continue;
|
|
135187
|
+
|
|
135188
|
+
var aryExactQuery=[]; //精确查询
|
|
135189
|
+
var aryFuzzyQuery=[]; //模糊查询
|
|
135190
|
+
var aryEqualQuery=[]; //相等
|
|
135191
|
+
|
|
135192
|
+
for(var j=0;j<groupData.Data.length;++j)
|
|
135193
|
+
{
|
|
135194
|
+
var item=groupData.Data[j];
|
|
135195
|
+
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery,aryEqualQuery)) continue;
|
|
135196
|
+
}
|
|
135197
|
+
|
|
135198
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery)) aryData.push(...aryEqualQuery);
|
|
135199
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)) aryData.push(...aryExactQuery);
|
|
135200
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery)) aryData.push(...aryFuzzyQuery);
|
|
135201
|
+
}
|
|
135202
|
+
|
|
135203
|
+
if (aryData.length>0) return aryData;
|
|
135204
|
+
|
|
135205
|
+
return null;
|
|
135206
|
+
}
|
|
135207
|
+
|
|
135167
135208
|
this.Search=function(strText)
|
|
135168
135209
|
{
|
|
135169
135210
|
var aryExactQuery=[]; //精确查询
|
|
135170
135211
|
var aryFuzzyQuery=[]; //模糊查询
|
|
135212
|
+
var aryEqualQuery=[]; //相等
|
|
135213
|
+
var aryFuncKeyQuery=null;
|
|
135171
135214
|
this.MapSymbol.clear();
|
|
135172
135215
|
this.Data.Data=[];
|
|
135173
135216
|
this.Data.XOffset=0;
|
|
@@ -135176,17 +135219,21 @@ function JSKeyboardChartContainer(uielement)
|
|
|
135176
135219
|
var strSearch=strText.trim();
|
|
135177
135220
|
if (strSearch.length>0)
|
|
135178
135221
|
{
|
|
135222
|
+
aryFuncKeyQuery=this.SearchFunctionKeyData(strSearch);
|
|
135223
|
+
|
|
135179
135224
|
for(var i=0;i<this.SourceData.Data.length;++i)
|
|
135180
135225
|
{
|
|
135181
135226
|
var item=this.SourceData.Data[i];
|
|
135182
|
-
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery)) continue;
|
|
135227
|
+
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery, aryEqualQuery)) continue;
|
|
135183
135228
|
else if (this.SearchSpell(item, strSearch, aryExactQuery, aryFuzzyQuery)) continue;
|
|
135184
135229
|
}
|
|
135185
135230
|
}
|
|
135186
|
-
|
|
135187
|
-
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery) || IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery))
|
|
135188
|
-
this.Data.Data=aryExactQuery.concat(aryFuzzyQuery);
|
|
135189
135231
|
|
|
135232
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuncKeyQuery)) this.Data.Data.push(...aryFuncKeyQuery);
|
|
135233
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery)) this.Data.Data.push(...aryEqualQuery);
|
|
135234
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)) this.Data.Data.push(...aryExactQuery);
|
|
135235
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery)) this.Data.Data.push(...aryFuzzyQuery);
|
|
135236
|
+
|
|
135190
135237
|
this.ChartPaint[0].SelectedRow=0;
|
|
135191
135238
|
this.ChartPaint[0].SizeChange=true;
|
|
135192
135239
|
|
|
@@ -135195,12 +135242,13 @@ function JSKeyboardChartContainer(uielement)
|
|
|
135195
135242
|
this.Draw();
|
|
135196
135243
|
}
|
|
135197
135244
|
|
|
135198
|
-
this.SearchSymbol=function(item, strText, aryExactQuery, aryFuzzyQuery)
|
|
135245
|
+
this.SearchSymbol=function(item, strText, aryExactQuery, aryFuzzyQuery, aryEqualQuery)
|
|
135199
135246
|
{
|
|
135200
135247
|
var find=item.Symbol.indexOf(strText);
|
|
135201
135248
|
if (find<0) return false;
|
|
135202
135249
|
|
|
135203
|
-
if (
|
|
135250
|
+
if (item.Symbol==strText) aryEqualQuery.push(item.Symbol);
|
|
135251
|
+
else if (find==0) aryExactQuery.push(item.Symbol);
|
|
135204
135252
|
else aryFuzzyQuery.push(item.Symbol);
|
|
135205
135253
|
|
|
135206
135254
|
this.MapSymbol.set(item.Symbol, item);
|
|
@@ -135225,8 +135273,21 @@ function JSKeyboardChartContainer(uielement)
|
|
|
135225
135273
|
|
|
135226
135274
|
this.SetSymbolData=function(arySymbol)
|
|
135227
135275
|
{
|
|
135228
|
-
this.SourceData.Data=
|
|
135229
|
-
|
|
135276
|
+
this.SourceData.Data=[];
|
|
135277
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
135278
|
+
{
|
|
135279
|
+
var item=arySymbol[i];
|
|
135280
|
+
if (IFrameSplitOperator.IsNumber(item.Priority))
|
|
135281
|
+
{
|
|
135282
|
+
if (!this.FunctionKeyData[item.Priority]) this.FunctionKeyData[item.Priority]={ Priority:item.Priority, Data:[] };
|
|
135283
|
+
this.FunctionKeyData[item.Priority].Data.push(item);
|
|
135284
|
+
}
|
|
135285
|
+
else
|
|
135286
|
+
{
|
|
135287
|
+
this.SourceData.Data.push(item);
|
|
135288
|
+
}
|
|
135289
|
+
}
|
|
135290
|
+
|
|
135230
135291
|
/*
|
|
135231
135292
|
//测试
|
|
135232
135293
|
this.MapSymbol.clear();
|
|
@@ -135499,11 +135560,13 @@ function JSKeyboardChartContainer(uielement)
|
|
|
135499
135560
|
if (!chart) return false;
|
|
135500
135561
|
|
|
135501
135562
|
var data=chart.GetSelectedSymbol();
|
|
135563
|
+
var selItem=this.MapSymbol.get(data.Symbol);
|
|
135564
|
+
if (!selItem) return false;
|
|
135502
135565
|
|
|
135503
135566
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED)
|
|
135504
135567
|
if (event && event.Callback)
|
|
135505
135568
|
{
|
|
135506
|
-
event.Callback(event, { Data:data }, this);
|
|
135569
|
+
event.Callback(event, { Data:data, RowData:selItem }, this);
|
|
135507
135570
|
}
|
|
135508
135571
|
}
|
|
135509
135572
|
|
|
@@ -136113,6 +136176,38 @@ function ChartSymbolList()
|
|
|
136113
136176
|
this.SetColumn=function(aryColumn)
|
|
136114
136177
|
{
|
|
136115
136178
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryColumn)) return;
|
|
136179
|
+
|
|
136180
|
+
this.Column=[];
|
|
136181
|
+
for(var i=0;i<aryColumn.length;++i)
|
|
136182
|
+
{
|
|
136183
|
+
var item=aryColumn[i];
|
|
136184
|
+
var colItem=this.GetDefaultColunm(item.Type);
|
|
136185
|
+
if (!colItem) continue;
|
|
136186
|
+
|
|
136187
|
+
if (item.Title) colItem.Title=item.Title;
|
|
136188
|
+
if (item.TextAlign) colItem.TextAlign=item.TextAlign;
|
|
136189
|
+
if (item.MaxText) colItem.MaxText=item.MaxText;
|
|
136190
|
+
|
|
136191
|
+
this.Column.push(colItem);
|
|
136192
|
+
}
|
|
136193
|
+
}
|
|
136194
|
+
|
|
136195
|
+
this.GetDefaultColunm=function(id)
|
|
136196
|
+
{
|
|
136197
|
+
var DEFAULT_COLUMN=
|
|
136198
|
+
[
|
|
136199
|
+
{ Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID, Title:"代码", TextAlign:"left", Width:null, MaxText:"888888" },
|
|
136200
|
+
{ Type:KEYBOARD_COLUMN_ID.NAME_ID, Title:"名称", TextAlign:"left", Width:null, MaxText:"擎擎擎擎擎擎" },
|
|
136201
|
+
{ Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID, Title:"类型", TextAlign:"right", Width:null, MaxText:"擎擎擎擎" },
|
|
136202
|
+
];
|
|
136203
|
+
|
|
136204
|
+
for(var i=0;i<DEFAULT_COLUMN.length;++i)
|
|
136205
|
+
{
|
|
136206
|
+
var item=DEFAULT_COLUMN[i];
|
|
136207
|
+
if (item.Type==id) return item;
|
|
136208
|
+
}
|
|
136209
|
+
|
|
136210
|
+
return null;
|
|
136116
136211
|
}
|
|
136117
136212
|
|
|
136118
136213
|
this.Draw=function()
|
|
@@ -138138,7 +138233,7 @@ function ScrollBarBGChart()
|
|
|
138138
138233
|
|
|
138139
138234
|
|
|
138140
138235
|
|
|
138141
|
-
var HQCHART_VERSION="1.1.
|
|
138236
|
+
var HQCHART_VERSION="1.1.13719";
|
|
138142
138237
|
|
|
138143
138238
|
function PrintHQChartVersion()
|
|
138144
138239
|
{
|
|
@@ -49702,7 +49702,7 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
|
|
|
49702
49702
|
var shortSymbol=item[0];
|
|
49703
49703
|
shortSymbol=shortSymbol.replace(".sh", "");
|
|
49704
49704
|
shortSymbol=shortSymbol.replace(".sz", "");
|
|
49705
|
-
var symbolItem={ Symbol:item[0], Name:item[1], ShortSymbol:shortSymbol, Spell:item[3], Type:item[2] };
|
|
49705
|
+
var symbolItem={ Symbol:item[0], Name:item[1], ShortSymbol:shortSymbol, Spell:item[3], Type:item[2], Data:{ Symbol:item[0], Type:0 } };
|
|
49706
49706
|
if (symbolItem.Type=="EQA")
|
|
49707
49707
|
{
|
|
49708
49708
|
symbolItem.TypeName="股票";
|
|
@@ -49716,6 +49716,15 @@ HQData.Keyboard_RequestSymbolList=function(data, callback)
|
|
|
49716
49716
|
arySymbol.push(symbolItem);
|
|
49717
49717
|
}
|
|
49718
49718
|
|
|
49719
|
+
arySymbol.push( { Symbol:"01", Name:"分时成交明细", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" , Data:{ PageName:"分时成交明细", Type:2 }} );
|
|
49720
|
+
arySymbol.push( { Symbol:"02", Name:"分价表", TypeName:"功能键", Priority:1, Color:"rgb(220,20,60)" ,Data:{ PageName:"分价表", Type:2 }} );
|
|
49721
|
+
arySymbol.push( { Symbol:"06", Name:"自选股", TypeName:"功能键", Priority:1 , Color:"rgb(220,20,60)", Data:{ PageName:"自选股", Type:2 }} );
|
|
49722
|
+
|
|
49723
|
+
arySymbol.push( { Symbol:"MACD", Name:"平滑异同平均线", TypeName:"指标", Priority:2 , Color:"rgb(0,0,255)", Data:{ Index:"MACD", Type:1 }} );
|
|
49724
|
+
arySymbol.push( { Symbol:"RSI", Name:"相对强弱指标", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)",Data:{ Index:"RSI", Type:1 }} );
|
|
49725
|
+
arySymbol.push( { Symbol:"MA", Name:"均线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"MA", Type:1 } } );
|
|
49726
|
+
arySymbol.push( { Symbol:"BOLL", Name:"布林线", TypeName:"指标", Priority:2, Color:"rgb(0,0,255)" ,Data:{ Index:"BOLL", Type:1 } } );
|
|
49727
|
+
|
|
49719
49728
|
callback(arySymbol);
|
|
49720
49729
|
}
|
|
49721
49730
|
|
|
@@ -39957,6 +39957,7 @@ function ChartClipColorStick()
|
|
|
39957
39957
|
|
|
39958
39958
|
this.BaseValue=0;
|
|
39959
39959
|
this.Super_GetMaxMin=this.GetMaxMin; //父类的方法
|
|
39960
|
+
this.ValueRange; //{ Max:, Min: } //固定最大最小值
|
|
39960
39961
|
|
|
39961
39962
|
this.SetOption=function(option)
|
|
39962
39963
|
{
|
|
@@ -39968,6 +39969,7 @@ function ChartClipColorStick()
|
|
|
39968
39969
|
if (option.UpDiffColor) this.UpDiffColor=option.UpDiffColor;
|
|
39969
39970
|
if (option.BaseLineColor) this.BaseLineColor=option.BaseLineColor;
|
|
39970
39971
|
if (IFrameSplitOperator.IsNumber(option.BaseValue)) this.BaseValue=option.BaseValue;
|
|
39972
|
+
if (option.ValueRange) this.ValueRange=option.ValueRange;
|
|
39971
39973
|
}
|
|
39972
39974
|
|
|
39973
39975
|
this.Draw=function()
|
|
@@ -40171,6 +40173,12 @@ function ChartClipColorStick()
|
|
|
40171
40173
|
{
|
|
40172
40174
|
if (!IFrameSplitOperator.IsNumber(this.BaseValue) || this.BaseValue==0)
|
|
40173
40175
|
return this.Super_GetMaxMin();
|
|
40176
|
+
|
|
40177
|
+
if (this.ValueRange) //固定最大最小
|
|
40178
|
+
{
|
|
40179
|
+
var range={ Min:this.ValueRange.Min, Max:this.ValueRange.Max };
|
|
40180
|
+
return range;
|
|
40181
|
+
}
|
|
40174
40182
|
|
|
40175
40183
|
var xPointCount=this.ChartFrame.XPointCount;
|
|
40176
40184
|
var start=this.Data.DataOffset;
|
|
@@ -137587,7 +137595,8 @@ function JSKeyboardChartContainer(uielement)
|
|
|
137587
137595
|
this.NetworkFilter; //数据回调接口
|
|
137588
137596
|
this.Data={ XOffset:0, YOffset:0, Data:[] }; //股票列表
|
|
137589
137597
|
this.MapSymbol=new Map();
|
|
137590
|
-
this.SourceData={ Data:[] }
|
|
137598
|
+
this.SourceData={ Data:[] } //码表数据 Data:[ { Symbol:, Spell, Name:, Color: TypeName:, TypeID } ]
|
|
137599
|
+
this.FunctionKeyData=[]; //功能键 { Priority:, Data:[ { Symbol:, Spell, Name:, Color:, TypeName:, TypeID } ]
|
|
137591
137600
|
|
|
137592
137601
|
//事件回调
|
|
137593
137602
|
this.mapEvent=new Map(); //通知外部调用 key:JSCHART_EVENT_ID value:{Callback:回调,}
|
|
@@ -137614,10 +137623,44 @@ function JSKeyboardChartContainer(uielement)
|
|
|
137614
137623
|
if (option && option.Redraw==true) this.Draw();
|
|
137615
137624
|
}
|
|
137616
137625
|
|
|
137626
|
+
this.SearchFunctionKeyData=function(strSearch)
|
|
137627
|
+
{
|
|
137628
|
+
if (strSearch.length<=0) return null;
|
|
137629
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(this.FunctionKeyData)) return null;
|
|
137630
|
+
|
|
137631
|
+
var aryData=[];
|
|
137632
|
+
for(var i=0; i<this.FunctionKeyData.length; ++i)
|
|
137633
|
+
{
|
|
137634
|
+
var groupData=this.FunctionKeyData[i];
|
|
137635
|
+
if (!groupData) continue;
|
|
137636
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(groupData.Data)) continue;
|
|
137637
|
+
|
|
137638
|
+
var aryExactQuery=[]; //精确查询
|
|
137639
|
+
var aryFuzzyQuery=[]; //模糊查询
|
|
137640
|
+
var aryEqualQuery=[]; //相等
|
|
137641
|
+
|
|
137642
|
+
for(var j=0;j<groupData.Data.length;++j)
|
|
137643
|
+
{
|
|
137644
|
+
var item=groupData.Data[j];
|
|
137645
|
+
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery,aryEqualQuery)) continue;
|
|
137646
|
+
}
|
|
137647
|
+
|
|
137648
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery)) aryData.push(...aryEqualQuery);
|
|
137649
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)) aryData.push(...aryExactQuery);
|
|
137650
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery)) aryData.push(...aryFuzzyQuery);
|
|
137651
|
+
}
|
|
137652
|
+
|
|
137653
|
+
if (aryData.length>0) return aryData;
|
|
137654
|
+
|
|
137655
|
+
return null;
|
|
137656
|
+
}
|
|
137657
|
+
|
|
137617
137658
|
this.Search=function(strText)
|
|
137618
137659
|
{
|
|
137619
137660
|
var aryExactQuery=[]; //精确查询
|
|
137620
137661
|
var aryFuzzyQuery=[]; //模糊查询
|
|
137662
|
+
var aryEqualQuery=[]; //相等
|
|
137663
|
+
var aryFuncKeyQuery=null;
|
|
137621
137664
|
this.MapSymbol.clear();
|
|
137622
137665
|
this.Data.Data=[];
|
|
137623
137666
|
this.Data.XOffset=0;
|
|
@@ -137626,17 +137669,21 @@ function JSKeyboardChartContainer(uielement)
|
|
|
137626
137669
|
var strSearch=strText.trim();
|
|
137627
137670
|
if (strSearch.length>0)
|
|
137628
137671
|
{
|
|
137672
|
+
aryFuncKeyQuery=this.SearchFunctionKeyData(strSearch);
|
|
137673
|
+
|
|
137629
137674
|
for(var i=0;i<this.SourceData.Data.length;++i)
|
|
137630
137675
|
{
|
|
137631
137676
|
var item=this.SourceData.Data[i];
|
|
137632
|
-
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery)) continue;
|
|
137677
|
+
if (this.SearchSymbol(item, strSearch, aryExactQuery, aryFuzzyQuery, aryEqualQuery)) continue;
|
|
137633
137678
|
else if (this.SearchSpell(item, strSearch, aryExactQuery, aryFuzzyQuery)) continue;
|
|
137634
137679
|
}
|
|
137635
137680
|
}
|
|
137636
|
-
|
|
137637
|
-
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery) || IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery))
|
|
137638
|
-
this.Data.Data=aryExactQuery.concat(aryFuzzyQuery);
|
|
137639
137681
|
|
|
137682
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuncKeyQuery)) this.Data.Data.push(...aryFuncKeyQuery);
|
|
137683
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryEqualQuery)) this.Data.Data.push(...aryEqualQuery);
|
|
137684
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)) this.Data.Data.push(...aryExactQuery);
|
|
137685
|
+
if (IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery)) this.Data.Data.push(...aryFuzzyQuery);
|
|
137686
|
+
|
|
137640
137687
|
this.ChartPaint[0].SelectedRow=0;
|
|
137641
137688
|
this.ChartPaint[0].SizeChange=true;
|
|
137642
137689
|
|
|
@@ -137645,12 +137692,13 @@ function JSKeyboardChartContainer(uielement)
|
|
|
137645
137692
|
this.Draw();
|
|
137646
137693
|
}
|
|
137647
137694
|
|
|
137648
|
-
this.SearchSymbol=function(item, strText, aryExactQuery, aryFuzzyQuery)
|
|
137695
|
+
this.SearchSymbol=function(item, strText, aryExactQuery, aryFuzzyQuery, aryEqualQuery)
|
|
137649
137696
|
{
|
|
137650
137697
|
var find=item.Symbol.indexOf(strText);
|
|
137651
137698
|
if (find<0) return false;
|
|
137652
137699
|
|
|
137653
|
-
if (
|
|
137700
|
+
if (item.Symbol==strText) aryEqualQuery.push(item.Symbol);
|
|
137701
|
+
else if (find==0) aryExactQuery.push(item.Symbol);
|
|
137654
137702
|
else aryFuzzyQuery.push(item.Symbol);
|
|
137655
137703
|
|
|
137656
137704
|
this.MapSymbol.set(item.Symbol, item);
|
|
@@ -137675,8 +137723,21 @@ function JSKeyboardChartContainer(uielement)
|
|
|
137675
137723
|
|
|
137676
137724
|
this.SetSymbolData=function(arySymbol)
|
|
137677
137725
|
{
|
|
137678
|
-
this.SourceData.Data=
|
|
137679
|
-
|
|
137726
|
+
this.SourceData.Data=[];
|
|
137727
|
+
for(var i=0;i<arySymbol.length;++i)
|
|
137728
|
+
{
|
|
137729
|
+
var item=arySymbol[i];
|
|
137730
|
+
if (IFrameSplitOperator.IsNumber(item.Priority))
|
|
137731
|
+
{
|
|
137732
|
+
if (!this.FunctionKeyData[item.Priority]) this.FunctionKeyData[item.Priority]={ Priority:item.Priority, Data:[] };
|
|
137733
|
+
this.FunctionKeyData[item.Priority].Data.push(item);
|
|
137734
|
+
}
|
|
137735
|
+
else
|
|
137736
|
+
{
|
|
137737
|
+
this.SourceData.Data.push(item);
|
|
137738
|
+
}
|
|
137739
|
+
}
|
|
137740
|
+
|
|
137680
137741
|
/*
|
|
137681
137742
|
//测试
|
|
137682
137743
|
this.MapSymbol.clear();
|
|
@@ -137949,11 +138010,13 @@ function JSKeyboardChartContainer(uielement)
|
|
|
137949
138010
|
if (!chart) return false;
|
|
137950
138011
|
|
|
137951
138012
|
var data=chart.GetSelectedSymbol();
|
|
138013
|
+
var selItem=this.MapSymbol.get(data.Symbol);
|
|
138014
|
+
if (!selItem) return false;
|
|
137952
138015
|
|
|
137953
138016
|
var event=this.GetEventCallback(JSCHART_EVENT_ID.ON_KEYBOARD_SELECTED)
|
|
137954
138017
|
if (event && event.Callback)
|
|
137955
138018
|
{
|
|
137956
|
-
event.Callback(event, { Data:data }, this);
|
|
138019
|
+
event.Callback(event, { Data:data, RowData:selItem }, this);
|
|
137957
138020
|
}
|
|
137958
138021
|
}
|
|
137959
138022
|
|
|
@@ -138563,6 +138626,38 @@ function ChartSymbolList()
|
|
|
138563
138626
|
this.SetColumn=function(aryColumn)
|
|
138564
138627
|
{
|
|
138565
138628
|
if (!IFrameSplitOperator.IsNonEmptyArray(aryColumn)) return;
|
|
138629
|
+
|
|
138630
|
+
this.Column=[];
|
|
138631
|
+
for(var i=0;i<aryColumn.length;++i)
|
|
138632
|
+
{
|
|
138633
|
+
var item=aryColumn[i];
|
|
138634
|
+
var colItem=this.GetDefaultColunm(item.Type);
|
|
138635
|
+
if (!colItem) continue;
|
|
138636
|
+
|
|
138637
|
+
if (item.Title) colItem.Title=item.Title;
|
|
138638
|
+
if (item.TextAlign) colItem.TextAlign=item.TextAlign;
|
|
138639
|
+
if (item.MaxText) colItem.MaxText=item.MaxText;
|
|
138640
|
+
|
|
138641
|
+
this.Column.push(colItem);
|
|
138642
|
+
}
|
|
138643
|
+
}
|
|
138644
|
+
|
|
138645
|
+
this.GetDefaultColunm=function(id)
|
|
138646
|
+
{
|
|
138647
|
+
var DEFAULT_COLUMN=
|
|
138648
|
+
[
|
|
138649
|
+
{ Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID, Title:"代码", TextAlign:"left", Width:null, MaxText:"888888" },
|
|
138650
|
+
{ Type:KEYBOARD_COLUMN_ID.NAME_ID, Title:"名称", TextAlign:"left", Width:null, MaxText:"擎擎擎擎擎擎" },
|
|
138651
|
+
{ Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID, Title:"类型", TextAlign:"right", Width:null, MaxText:"擎擎擎擎" },
|
|
138652
|
+
];
|
|
138653
|
+
|
|
138654
|
+
for(var i=0;i<DEFAULT_COLUMN.length;++i)
|
|
138655
|
+
{
|
|
138656
|
+
var item=DEFAULT_COLUMN[i];
|
|
138657
|
+
if (item.Type==id) return item;
|
|
138658
|
+
}
|
|
138659
|
+
|
|
138660
|
+
return null;
|
|
138566
138661
|
}
|
|
138567
138662
|
|
|
138568
138663
|
this.Draw=function()
|
|
@@ -142525,7 +142620,15 @@ JSPopKeyboard.GetOption=function()
|
|
|
142525
142620
|
},
|
|
142526
142621
|
|
|
142527
142622
|
BorderLine:1|2|4|8,
|
|
142528
|
-
EnableResize:true
|
|
142623
|
+
EnableResize:true,
|
|
142624
|
+
|
|
142625
|
+
//{ Type:列id, Title:标题, TextAlign:文字对齐方式, MaxText:文字最大宽度 , TextColor:文字颜色, Sort:0=不支持排序 1=本地排序 0=远程排序 }
|
|
142626
|
+
Column:
|
|
142627
|
+
[
|
|
142628
|
+
{ Type:KEYBOARD_COLUMN_ID.SHORT_SYMBOL_ID, Title:"代码", TextAlign:"left", Width:null, MaxText:"888888" },
|
|
142629
|
+
{ Type:KEYBOARD_COLUMN_ID.NAME_ID, Title:"名称", TextAlign:"left", Width:null, MaxText:"擎擎擎擎擎擎擎擎" },
|
|
142630
|
+
{ Type:KEYBOARD_COLUMN_ID.TYPE_NAME_ID, Title:"类型", TextAlign:"right", Width:null, MaxText:"擎擎擎擎擎" },
|
|
142631
|
+
]
|
|
142529
142632
|
};
|
|
142530
142633
|
|
|
142531
142634
|
return option;
|
|
@@ -142654,7 +142757,7 @@ function HQChartScriptWorker()
|
|
|
142654
142757
|
|
|
142655
142758
|
|
|
142656
142759
|
|
|
142657
|
-
var HQCHART_VERSION="1.1.
|
|
142760
|
+
var HQCHART_VERSION="1.1.13719";
|
|
142658
142761
|
|
|
142659
142762
|
function PrintHQChartVersion()
|
|
142660
142763
|
{
|