hqchart
Version:
HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接
872 lines (680 loc) • 30.2 kB
JavaScript
/*
Copyright (c) 2018 jones
http://www.apache.org/licenses/LICENSE-2.0
开源项目 https://github.com/jones2000/HQChart
jones_2000@163.com
内置区间统计框 设置框
*/
function JSDialogSelectRect()
{
this.DivDialog=null;
this.DragTitle=null;
this.HQChart=null;
this.UpColor=g_JSChartResource.UpTextColor;
this.DownColor=g_JSChartResource.DownTextColor;
this.UnchangeColor=g_JSChartResource.UnchagneTextColor;
this.TitleColor=g_JSChartResource.DialogSelectRect.TitleColor;
this.TitleBGColor=g_JSChartResource.DialogSelectRect.TitleBGColor;
this.BGColor=g_JSChartResource.DialogSelectRect.BGColor;
this.BorderColor=g_JSChartResource.DialogSelectRect.BorderColor;
this.TextColor=g_JSChartResource.DialogSelectRect.TextColor;
this.ValueColor=g_JSChartResource.DialogSelectRect.ValueColor;
this.VolColor=g_JSChartResource.DialogSelectRect.VolColor;
this.AmountColor=g_JSChartResource.DialogSelectRect.AmountColor;
this.TurnoverRateColor=g_JSChartResource.DialogSelectRect.TurnoverRateColor;
this.PositionColor=g_JSChartResource.DialogSelectRect.PositionColor;
this.MaxRowCount=10;
this.AryData=[];
this.DateTimeBox={ Start:{ SpanText:null, SpanValue:null }, End:{ SpanText:null, SpanValue:null } };
this.ShowData;
this.SelectData;
this.RestoreFocusDelay=800;
this.Inital=function(hqchart, option)
{
this.HQChart=hqchart;
if (option)
{
}
}
this.Destroy=function()
{
this.AryData=[];
this.ShowData=null;
this.DateTimeBox={ Start:{ SpanText:null, SpanValue:null }, End:{ SpanText:null, SpanValue:null } };
if (this.DivDialog)
{
if (document && document.body && document.body.removeChild) document.body.removeChild(this.DivDialog);
this.DivDialog=null;
}
}
this.Create=function()
{
var divDom=document.createElement("div");
divDom.className='UMyChart_SelectRect_Dialog_Div';
var divTitle=document.createElement("div");
divTitle.className='UMyChart_SelectRect_Title_Div';
divTitle.onmousedown=(e)=>{ this.OnMouseDownTitle(e);}
var divName=document.createElement("div");
divName.className='UMyChart_SelectRect_Name_Div';
divName.innerText="区间统计";
divTitle.appendChild(divName);
var divClose=document.createElement("div");
divClose.className='UMyChart_SelectRect_Close_Div';
divClose.innerText="x";
divClose.onmousedown=(e)=>{ this.Close(e); }
divTitle.appendChild(divClose);
divDom.appendChild(divTitle);
var divDateTime=document.createElement("div");
divDateTime.className='UMyChart_SelectRect_DateTime_Div';
//起始日期
var divStartDate=document.createElement("div");
divDateTime.append(divStartDate);
var spanText=document.createElement("span");
spanText.className="UMyChart_SelectRect_DateTitle_Span";
spanText.innerText="开始:";
divStartDate.appendChild(spanText);
this.DateTimeBox.Start.SpanText=spanText;
var spanDate=document.createElement("span");
spanDate.className="UMyChart_SelectRect_DateValue_Span";
spanDate.innerText="--/--";
divStartDate.appendChild(spanDate);
this.DateTimeBox.Start.SpanValue=spanDate;
var spanArrow=document.createElement("span");
spanArrow.className="UMyChart_SelectRect_ArrowButton_Span";
spanArrow.innerText="<";
spanArrow.onmousedown=(e)=>{ this.MoveStartDate(-1); }
divStartDate.appendChild(spanArrow);
var spanArrow=document.createElement("span");
spanArrow.className="UMyChart_SelectRect_ArrowButton_Span";
spanArrow.innerText=">";
spanArrow.onmousedown=(e)=>{ this.MoveStartDate(1); }
divStartDate.appendChild(spanArrow);
//结束日期
var divEndDate=document.createElement("div");
divDateTime.append(divEndDate);
var spanText=document.createElement("span");
spanText.className="UMyChart_SelectRect_DateTitle_Span";
spanText.innerText="结束:";
divEndDate.appendChild(spanText);
this.DateTimeBox.End.SpanText=spanText;
var spanDate=document.createElement("span");
spanDate.className="UMyChart_SelectRect_DateValue_Span";
spanDate.innerText="--/--";
divEndDate.appendChild(spanDate);
this.DateTimeBox.SpanEnd=spanDate;
this.DateTimeBox.End.SpanValue=spanDate;
var spanArrow=document.createElement("span");
spanArrow.className="UMyChart_SelectRect_ArrowButton_Span";
spanArrow.innerText="<";
spanArrow.onmousedown=(e)=>{ this.MoveEndDate(-1); }
divEndDate.appendChild(spanArrow);
var spanArrow=document.createElement("span");
spanArrow.className="UMyChart_SelectRect_ArrowButton_Span";
spanArrow.innerText=">";
spanArrow.onmousedown=(e)=>{ this.MoveEndDate(1); }
divEndDate.appendChild(spanArrow);
divDom.appendChild(divDateTime);
var table=document.createElement("table");
table.className="UMyChart_SelectRect_Table";
divDom.appendChild(table);
var tbody=document.createElement("tbody");
tbody.className="UMyChart_SelectRect_Tbody";
table.appendChild(tbody);
for(var i=0;i<this.MaxRowCount;++i)
{
var rowItem={ Tr:null, AryItem:[] };
var trDom=document.createElement("tr");
trDom.className='UMyChart_SelectRect_Tr';
tbody.appendChild(trDom);
rowItem.Tr=trDom;
for(var j=0;j<3;++j)
{
var item={ Td:null, LeftSpan:null, RightSpan:null };
var tdDom=document.createElement("td");
tdDom.className="UMyChart_SelectRect_Td"; //标题+数值
item.Td=tdDom;
trDom.appendChild(tdDom);
var spanDom=document.createElement("span");
spanDom.className='UMyChart_SelectRect_Item_Left_Span';
spanDom.innerText='数值';
item.LeftSpan=spanDom;
tdDom.appendChild(spanDom);
var spanDom=document.createElement("span");
spanDom.className='UMyChart_SelectRect_Item_Right_Span';
spanDom.innerText='--';
item.RightSpan=spanDom;
tdDom.appendChild(spanDom);
rowItem.AryItem.push(item);
}
this.AryData.push(rowItem);
}
document.body.appendChild(divDom);
this.DivDialog=divDom;
this.UpdateStyle();
}
this.Close=function(e)
{
if (!this.DivDialog) return;
this.DivDialog.style.visibility='hidden';
this.ShowData=null;
this.SelectData=null;
if (this.HQChart) this.HQChart.RestoreFocus(this.RestoreFocusDelay);
}
this.MoveStartDate=function(step)
{
if (!this.DivDialog || !this.HQChart) return;
if (step==0) return;
if (!this.SelectData) return;
var selectData=this.SelectData;
var bUpdate=false;
if (step>0)
{
var index=selectData.Start;
var endIndex=selectData.End;
for(i=0; i<step && index<endIndex; ++i)
{
++index;
}
if (selectData.Start!=index)
{
selectData.Start=index;
bUpdate=true;
}
}
else
{
step=Math.abs(step);
var index=selectData.Start
var endIndex=selectData.End;
for(var i=0;i<step && index>0;++i)
{
--index;
}
if (selectData.Start!=index)
{
selectData.Start=index;
bUpdate=true;
}
}
if (bUpdate) this.UpdateSelectRect(selectData);
}
this.MoveEndDate=function(step)
{
if (!this.DivDialog) return;
if (step==0) return;
if (!this.SelectData) return;
var selectData=this.SelectData;
var bUpdate=false;
if (step>0)
{
var index=selectData.End;
var startIndex=selectData.Start;
for(i=0; i<step && index<this.ShowData.DataCount; ++i)
{
++index;
}
if (selectData.End!=index)
{
selectData.End=index;
bUpdate=true;
}
}
else
{
step=Math.abs(step);
var index=selectData.End;
var startIndex=selectData.Start;
for(var i=0;i<step && index>startIndex;++i)
{
--index;
}
if (selectData.End!=index)
{
selectData.End=index;
bUpdate=true;
}
}
if (bUpdate) this.UpdateSelectRect(selectData);
}
this.Show=function(x,y)
{
if (!this.DivDialog) return;
if (!this.HQChart) return;
/*
if (!this.DivDialog.style.top || !this.DivDialog.style.left) //上一次显示的位置
{
var top=this.HQChart.Frame.ChartBorder.GetTop();
var left=this.HQChart.Frame.ChartBorder.GetLeft();
var x=left+rtClient.left+5;
var y=top+rtClient.top+10;
this.DivDialog.style.top = y + "px";
this.DivDialog.style.left = x + "px";
}
*/
if (this.HQChart) this.HQChart.ClearRestoreFocusTimer();
var top=this.HQChart.Frame.ChartBorder.GetTop();
var left=this.HQChart.Frame.ChartBorder.GetLeft();
var rtClient=this.HQChart.UIElement.getBoundingClientRect();
left=left+rtClient.left+5;
top=top+rtClient.top+10;
if (IFrameSplitOperator.IsNumber(x) && IFrameSplitOperator.IsNumber(y))
{
left=x;
top=y;
}
var right=x+this.DivDialog.offsetWidth;
var bottom=y+ this.DivDialog.offsetHeight;
if ((right+5)>=window.innerWidth) left=window.innerWidth-this.DivDialog.offsetWidth-5;
if ((bottom+5)>=window.innerHeight) top=window.innerHeight-this.DivDialog.offsetHeight-5;
this.DivDialog.style.top = top + "px";
this.DivDialog.style.left = left + "px";
this.DivDialog.style.visibility='visible';
}
this.IsShow=function()
{
if (!this.DivDialog) return false;
return this.DivDialog.style.visibility==='visible';
}
this.OnMouseDownTitle=function(e)
{
if (!this.DivDialog) return;
var dragData={ X:e.clientX, Y:e.clientY };
dragData.YOffset=e.clientX - this.DivDialog.offsetLeft;
dragData.XOffset=e.clientY - this.DivDialog.offsetTop;
this.DragTitle=dragData;
document.onmousemove=(e)=>{ this.DocOnMouseMoveTitle(e); }
document.onmouseup=(e)=>{ this.DocOnMouseUpTitle(e); }
}
this.DocOnMouseMoveTitle=function(e)
{
if (!this.DragTitle) return;
var left = e.clientX - this.DragTitle.YOffset;
var top = e.clientY - this.DragTitle.XOffset;
var right=left+this.DivDialog.offsetWidth;
var bottom=top+ this.DivDialog.offsetHeight;
if ((right+5)>=window.innerWidth) left=window.innerWidth-this.DivDialog.offsetWidth-5;
if ((bottom+5)>=window.innerHeight) top=window.innerHeight-this.DivDialog.offsetHeight-5;
this.DivDialog.style.left = left + 'px';
this.DivDialog.style.top = top + 'px';
if(e.preventDefault) e.preventDefault();
}
this.DocOnMouseUpTitle=function(e)
{
this.DragTitle=null;
document.onmousemove = null;
document.onmouseup = null;
}
//配色修改
this.ReloadResource=function(option)
{
this.UpColor=g_JSChartResource.UpTextColor;
this.DownColor=g_JSChartResource.DownTextColor;
this.UnchangeColor=g_JSChartResource.UnchagneTextColor;
this.TitleColor=g_JSChartResource.DialogSelectRect.TitleColor;
this.TitleBGColor=g_JSChartResource.DialogSelectRect.TitleBGColor;
this.BGColor=g_JSChartResource.DialogSelectRect.BGColor;
this.BorderColor=g_JSChartResource.DialogSelectRect.BorderColor;
this.TextColor=g_JSChartResource.DialogSelectRect.TextColor;
this.ValueColor=g_JSChartResource.DialogSelectRect.ValueColor;
this.VolColor=g_JSChartResource.DialogSelectRect.VolColor;
this.AmountColor=g_JSChartResource.DialogSelectRect.AmountColor;
this.TurnoverRateColor=g_JSChartResource.DialogSelectRect.TurnoverRateColor;
this.PositionColor=g_JSChartResource.DialogSelectRect.PositionColor;
if (!this.DivDialog) return;
this.UpdateStyle();
if (this.SelectData)
{
var selectData=this.SelectData;
this.HQChart.UpdateSelectRect(selectData.Start,selectData.End);
var showData=this.CalculateKLineData({ SelectData:selectData });
this.FormatKLineText(showData);
this.ShowData=showData;
this.UpdateTableDOM(showData);
}
}
this.UpdateStyle=function()
{
if (!this.DivDialog) return;
if (this.BGColor) this.DivDialog.style['background-color']=this.BGColor;
if (this.BorderColor) this.DivDialog.style['border-color']=this.BorderColor;
if (this.DateTimeBox.Start)
{
var item=this.DateTimeBox.Start;
item.SpanText.style["color"]=this.TextColor;
item.SpanValue.style["color"]=this.ValueColor;
}
if (this.DateTimeBox.End)
{
var item=this.DateTimeBox.End;
item.SpanText.style["color"]=this.TextColor;
item.SpanValue.style["color"]=this.ValueColor;
}
//if (this.TitleBGColor) this.TitleBox.DivTitle.style['background-color']=this.TitleBGColor;
}
this.UpdateTableDOM=function(showData)
{
var index=0;
for(var index=0,j=0, dataIndex=0;index<this.AryData.length && dataIndex<showData.AryText.length;++index)
{
var rowItem=this.AryData[index];
for(j=0;j<rowItem.AryItem.length;++j, ++dataIndex)
{
if (dataIndex>=showData.AryText.length) break;
var item=rowItem.AryItem[j]
var outItem=showData.AryText[dataIndex];
item.LeftSpan.innerText=outItem.Title;
item.LeftSpan.style.color=this.TextColor;
item.RightSpan.innerText=outItem.Text;
item.RightSpan.style.color=outItem.Color;
}
rowItem.Tr.style.display="";
}
for(; index<this.AryData.length;++index)
{
var rowItem=this.AryData[index];
rowItem.Tr.style.display="none";
}
if (this.DateTimeBox.Start.SpanValue) this.DateTimeBox.Start.SpanValue.innerText=showData.Date.Start.Text;
if (this.DateTimeBox.End.SpanValue) this.DateTimeBox.End.SpanValue.innerText=showData.Date.End.Text;
}
this.UpdateSelectRect=function(selectData)
{
this.HQChart.UpdateSelectRect(selectData.Start,selectData.End);
var showData=null;
if (this.HQChart.ClassName=='KLineChartContainer')
{
showData=this.CalculateKLineData({ SelectData:selectData });
this.FormatKLineText(showData);
}
else if (this.HQChart.ClassName=='MinuteChartContainer')
{
showData=this.CalculateMinuteData({ SelectData:selectData });
this.FormatMinuteText(showData);
}
if (showData)
{
this.ShowData=showData;
this.UpdateTableDOM(showData);
}
}
this.Update=function(data)
{
if (!this.DivDialog) return;
var showData;
if (this.HQChart.ClassName=='KLineChartContainer')
{
showData=this.CalculateKLineData(data);
this.FormatKLineText(showData);
}
else if (this.HQChart.ClassName=='MinuteChartContainer')
{
showData=this.CalculateMinuteData(data);
this.FormatMinuteText(showData);
}
if (!showData) return;
this.ShowData=showData;
this.SelectData=data.SelectData;
this.UpdateTableDOM(showData);
if (!this.IsShow()) this.Show(data.X, data.Y);
}
this.CreateEmptyShowData=function()
{
var showData=
{
Open:null,Close:null,High:null,Low:null, YClose:null,
Vol:0, Amount:0,
Date:
{
Start:{ Time:null, Date:null, Text:"" },
End:{ Time:null, Date:null, Text:"" }
},
Count:0,
KLine:{ Up:0,Down:0,Unchanged:0 }, //阳线|阴线|平线
AryText:[],
DataCount:0,
};
return showData;
}
this.CalculateKLineData=function(data)
{
var selectData=data.SelectData;
var hisData=selectData.Data;
var start=selectData.Start;
var end=selectData.End;
var showData=this.CreateEmptyShowData();
showData.DataCount=hisData.Data.length;
for(var i=start;i<hisData.Data.length && i<=end;++i)
{
var item=hisData.Data[i];
++showData.Count;
if (!IFrameSplitOperator.IsNumber(showData.Open) && IFrameSplitOperator.IsNumber(item.Open)) showData.Open=item.Open;
if (IFrameSplitOperator.IsNumber(item.Close)) showData.Close=item.Close;
if (IFrameSplitOperator.IsNumber(item.Vol)) showData.Vol+=item.Vol;
if (IFrameSplitOperator.IsNumber(item.Amount)) showData.Amount+=item.Amount;
if (IFrameSplitOperator.IsNumber(item.High))
{
if (!IFrameSplitOperator.IsNumber(showData.High) || showData.High<item.High)
showData.High=item.High;
}
if (IFrameSplitOperator.IsNumber(item.Low))
{
if (!IFrameSplitOperator.IsNumber(showData.Low) || showData.Low>item.Low)
showData.Low=item.Low;
}
if (IFrameSplitOperator.IsNumber(item.Open) && IFrameSplitOperator.IsNumber(item.Close))
{
if (item.Close>item.Open) ++showData.KLine.Up;
else if (item.Close<item.Open) ++showData.KLine.Down;
else ++showData.KLine.Unchanged;
}
if (IFrameSplitOperator.IsNumber(item.Date))
{
showData.Date.End.Date=item.Date;
if (!IFrameSplitOperator.IsNumber(showData.Date.Start.Date)) showData.Date.Start.Date=item.Date;
}
if (IFrameSplitOperator.IsNumber(item.Time))
{
showData.Date.End.Time=item.Time;
if (!IFrameSplitOperator.IsNumber(showData.Date.Start.Time)) showData.Date.Start.Time=item.Time;
}
}
return showData;
}
//格式化K线数据
this.FormatKLineText=function(showData)
{
if (!showData) return;
var defaultfloatPrecision=GetfloatPrecision(this.HQChart.Symbol);
if (ChartData.IsMinutePeriod(this.HQChart.Period,true))
{
showData.Date.Start.Text=`${IFrameSplitOperator.FormatDateString(showData.Date.Start.Date)} ${IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM")}`;
showData.Date.End.Text=`${IFrameSplitOperator.FormatDateString(showData.Date.End.Date)} ${IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM")}`;
}
else if (ChartData.IsSecondPeriod(this.HQChart.Period) || ChartData.IsTickPeriod(this.HQChart.Period))
{
showData.Date.Start.Text=`${IFrameSplitOperator.FormatDateString(showData.Date.Start.Date)} ${IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM:SS")}`;
showData.Date.End.Text=`${IFrameSplitOperator.FormatDateString(showData.Date.End.Date)} ${IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM:SS")}`;
}
else
{
showData.Date.Start.Text=IFrameSplitOperator.FormatDateString(showData.Date.Start.Date);
showData.Date.End.Text=IFrameSplitOperator.FormatDateString(showData.Date.End.Date);
}
showData.AryText.push(this.ForamtPrice(showData.Open, showData.Open,defaultfloatPrecision, 'DialogSelectRect-StartPrice'));
showData.AryText.push(this.ForamtPrice(showData.Close, showData.Open,defaultfloatPrecision, 'DialogSelectRect-EndPrice'));
showData.AryText.push(this.FormatIncrease(showData.Close, showData.Open, 'DialogSelectRect-Increase'));
showData.AryText.push(this.ForamtPrice(showData.High, showData.Open,defaultfloatPrecision, 'DialogSelectRect-High'));
showData.AryText.push(this.ForamtPrice(showData.Low, showData.Open,defaultfloatPrecision, 'DialogSelectRect-Low'));
showData.AryText.push(this.FormatAmplitude(showData.High, showData.Low, showData.Open, 'DialogSelectRect-Amplitude'));
showData.AryText.push(this.FormatVol(showData.Vol, 'DialogSelectRect-Vol'));
showData.AryText.push(this.FormatAmount(showData.Amount, 'DialogSelectRect-Amount'));
showData.AryText.push(this.FormatNumber(showData.Count, null, 0, "DialogSelectRect-DataCount"));
showData.AryText.push(this.FormatNumber(showData.KLine.Up, this.UpColor, 0, 'DialogSelectRect-Up'));
showData.AryText.push(this.FormatNumber(showData.KLine.Down, this.DownColor, 0, 'DialogSelectRect-Down'));
showData.AryText.push(this.FormatNumber(showData.KLine.Unchanged, this.UnchangeColor, 0, 'DialogSelectRect-Unchanged'));
}
this.CalculateMinuteData=function(data)
{
var selectData=data.SelectData;
var hisData=selectData.Data;
var start=selectData.Start;
var end=selectData.End;
var showData=this.CreateEmptyShowData();
showData.DataCount=hisData.Data.length;
for(var i=start;i<hisData.Data.length && i<=end;++i)
{
var item=hisData.Data[i];
++showData.Count;
if (!IFrameSplitOperator.IsNumber(showData.Open) && IFrameSplitOperator.IsNumber(item.Open)) showData.Open=item.Open;
if (IFrameSplitOperator.IsNumber(item.Close)) showData.Close=item.Close;
if (IFrameSplitOperator.IsNumber(item.Vol)) showData.Vol+=item.Vol;
if (IFrameSplitOperator.IsNumber(item.Amount)) showData.Amount+=item.Amount;
if (IFrameSplitOperator.IsNumber(item.High))
{
if (!IFrameSplitOperator.IsNumber(showData.High) || showData.High<item.High)
showData.High=item.High;
}
if (IFrameSplitOperator.IsNumber(item.Low))
{
if (!IFrameSplitOperator.IsNumber(showData.Low) || showData.Low>item.Low)
showData.Low=item.Low;
}
if (IFrameSplitOperator.IsNumber(item.Open) && IFrameSplitOperator.IsNumber(item.Close))
{
if (item.Close>item.Open) ++showData.KLine.Up;
else if (item.Close<item.Open) ++showData.KLine.Down;
else ++showData.KLine.Unchanged;
}
if (IFrameSplitOperator.IsNumber(item.Date))
{
showData.Date.End.Date=item.Date;
if (!IFrameSplitOperator.IsNumber(showData.Date.Start.Date)) showData.Date.Start.Date=item.Date;
}
if (IFrameSplitOperator.IsNumber(item.Time))
{
showData.Date.End.Time=item.Time;
if (!IFrameSplitOperator.IsNumber(showData.Date.Start.Time)) showData.Date.Start.Time=item.Time;
}
}
return showData;
}
this.FormatMinuteText=function(showData)
{
if (!showData) return;
var defaultfloatPrecision=GetfloatPrecision(this.HQChart.Symbol);
showData.Date.Start.Text=`${IFrameSplitOperator.FormatDateString(showData.Date.Start.Date)} ${IFrameSplitOperator.FormatTimeString(showData.Date.Start.Time,"HH:MM")}`;
showData.Date.End.Text=`${IFrameSplitOperator.FormatDateString(showData.Date.End.Date)} ${IFrameSplitOperator.FormatTimeString(showData.Date.End.Time,"HH:MM")}`;
showData.AryText.push(this.ForamtPrice(showData.Open, showData.Open,defaultfloatPrecision, 'DialogSelectRect-StartPrice'));
showData.AryText.push(this.ForamtPrice(showData.Close, showData.Open,defaultfloatPrecision, 'DialogSelectRect-EndPrice'));
showData.AryText.push(this.FormatIncrease(showData.Close, showData.Open, 'DialogSelectRect-Increase'));
showData.AryText.push(this.ForamtPrice(showData.High, showData.Open,defaultfloatPrecision, 'DialogSelectRect-High'));
showData.AryText.push(this.ForamtPrice(showData.Low, showData.Open,defaultfloatPrecision, 'DialogSelectRect-Low'));
showData.AryText.push(this.FormatAmplitude(showData.High, showData.Low, showData.Open, 'DialogSelectRect-Amplitude'));
showData.AryText.push(this.FormatVol(showData.Vol, 'DialogSelectRect-Vol'));
showData.AryText.push(this.FormatAmount(showData.Amount, 'DialogSelectRect-Amount'));
showData.AryText.push(this.FormatNumber(showData.Count, null, 0, "DialogSelectRect-DataCount"));
}
this.GetColor=function(price,yClose)
{
if(price>yClose) return this.UpColor;
else if (price<yClose) return this.DownColor;
else return this.UnchangeColor;
}
this.GetPriceColor=function(price, yClose)
{
var color=this.GetColor(price, yClose);
return color;
}
this.FormatEmpty=function()
{
var item=
{
Title:"",
Text:"",
Color:this.ValueColor
};
return item;
}
this.FormatNumber=function(value, color, defaultfloatPrecision, TitleID, format)
{
var item=
{
Title:g_JSChartLocalization.GetText(TitleID, this.LanguageID),
Text:"----",
Color:this.ValueColor
};
if (!IFrameSplitOperator.IsNumber(value)) return item;
item.Text=value.toFixed(defaultfloatPrecision);
if (color) item.Color=color;
return item;
}
this.ForamtPrice=function(price, yClose, defaultfloatPrecision, TitleID)
{
var item=
{
Title:g_JSChartLocalization.GetText(TitleID, this.LanguageID),
Text:"--.--",
Color:this.ValueColor
};
if (!IFrameSplitOperator.IsNumber(price)) return item;
item.Text=price.toFixed(defaultfloatPrecision);
item.Color=this.GetColor(price, yClose);
return item;
}
this.FormatIncrease=function(price, yClose, TitleID,)
{
//涨幅
var item=
{
Title:g_JSChartLocalization.GetText(TitleID,this.LanguageID),
Text:"--.--",
Color:this.ValueColor
};
if (!IFrameSplitOperator.IsNumber(price) || !IFrameSplitOperator.IsNumber(yClose)) return item;
var diffValue=price-yClose;
var value=(diffValue)/yClose;
item.Text=`${(value*100).toFixed(2)}%`;
item.Color=this.GetColor(value,0);
return item;
}
this.FormatAmplitude=function(high, low, yClose, TitleID)
{
//振幅
var item=
{
Title:g_JSChartLocalization.GetText(TitleID,this.LanguageID),
Text:"--.--",
Color:this.ValueColor
};
if (!IFrameSplitOperator.IsNumber(high) || !IFrameSplitOperator.IsNumber(low) || !IFrameSplitOperator.IsNumber(yClose)) return item;
var diffValue=high-low;
var value=(diffValue)/yClose;
item.Text=`${(value*100).toFixed(2)}%`;
item.Color=this.GetColor(value,0);
return item;
}
this.FormatVol=function(vol, TitleID)
{
var item=
{
Title:g_JSChartLocalization.GetText(TitleID,this.LanguageID),
Text:'--',
Color:this.VolColor
};
if (!IFrameSplitOperator.IsNumber(vol)) return item;
item.Text=IFrameSplitOperator.FormatValueStringV2(vol,0,2,this.LanguageID);
return item;
}
this.FormatAmount=function(amount, TitleID)
{
var item=
{
Title:g_JSChartLocalization.GetText(TitleID,this.LanguageID),
Text:'--',
Color:this.AmountColor
};
if (!IFrameSplitOperator.IsNumber(amount)) return item;
item.Text=IFrameSplitOperator.FormatValueString(amount,2,this.LanguageID);
return item;
}
}