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.
@@ -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};
@@ -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.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;};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{//上下分开画
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();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
+ 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
- };this.mapEvent=new _map2.default();//通知外部调用 key:JSCHART_EVENT_ID value:{Callback:回调,}
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.Search=function(strText){var aryExactQuery=[];//精确查询
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
- this.MapSymbol.clear();this.Data.Data=[];this.Data.XOffset=0;this.Data.YOffset=0;var strSearch=strText.trim();if(strSearch.length>0){for(var i=0;i<this.SourceData.Data.length;++i){var item=this.SourceData.Data[i];if(this.SearchSymbol(item,strSearch,aryExactQuery,aryFuzzyQuery))continue;else if(this.SearchSpell(item,strSearch,aryExactQuery,aryFuzzyQuery))continue;}}if(IFrameSplitOperator.IsNonEmptyArray(aryExactQuery)||IFrameSplitOperator.IsNonEmptyArray(aryFuzzyQuery))this.Data.Data=aryExactQuery.concat(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){var find=item.Symbol.indexOf(strText);if(find<0)return false;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=arySymbol;/*
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};return option;};///////////////////////////////////////////////////////////////////////////////////
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.13710";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();//把给外界调用的方法暴露出来
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hqchart",
3
- "version": "1.1.13711",
3
+ "version": "1.1.13720",
4
4
  "description": "HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
@@ -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;
@@ -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:[] } //码表数据 Data:[ { Symbol:, Spell, Name:, Color:}]
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 (find==0) aryExactQuery.push(item.Symbol);
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=arySymbol;
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()
@@ -1553,8 +1553,8 @@ input[type="color"] {
1553
1553
  .jchart_pop_keyboard_dailog
1554
1554
  {
1555
1555
  position: absolute;
1556
- width: 230px;
1557
- height:360px;
1556
+ width: 300px;
1557
+ height:440px;
1558
1558
  left: 1px;
1559
1559
  top: 1px;
1560
1560
  z-index: 999;
@@ -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:[] } //码表数据 Data:[ { Symbol:, Spell, Name:, Color:}]
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 (find==0) aryExactQuery.push(item.Symbol);
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=arySymbol;
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.13710";
138236
+ var HQCHART_VERSION="1.1.13719";
138142
138237
 
138143
138238
  function PrintHQChartVersion()
138144
138239
  {
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var HQCHART_VERSION="1.1.13710";
8
+ var HQCHART_VERSION="1.1.13719";
9
9
 
10
10
  function PrintHQChartVersion()
11
11
  {
@@ -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:[] } //码表数据 Data:[ { Symbol:, Spell, Name:, Color:}]
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 (find==0) aryExactQuery.push(item.Symbol);
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=arySymbol;
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.13710";
142760
+ var HQCHART_VERSION="1.1.13719";
142658
142761
 
142659
142762
  function PrintHQChartVersion()
142660
142763
  {