private static void InitPieTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, ChartTheme theme) { if (tooltip.runtimeDataIndex[serie.index] < 0) { return; } string key = serie.data[index].name; var serieData = serie.GetSerieData(index); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); float value = serieData.GetData(1); sb.Length = 0; if (!string.IsNullOrEmpty(serie.name)) { sb.Append(serie.name).Append(FormatterHelper.PH_NN); } sb.Append("<color=#").Append(theme.GetColorStr(index)).Append(">● </color>"); if (!string.IsNullOrEmpty(key)) { sb.Append(key).Append(": "); } sb.Append(ChartCached.FloatToStr(value, numericFormatter)); }
private static void InitScatterTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, ChartTheme theme) { if (!tooltip.runtimeSerieIndex.ContainsKey(serie.index)) { return; } var dataIndexList = tooltip.runtimeSerieIndex[serie.index]; if (!string.IsNullOrEmpty(serie.name)) { sb.Append(serie.name).Append(FormatterHelper.PH_NN); } for (int i = 0; i < dataIndexList.Count; i++) { var dataIndex = dataIndexList[i]; var serieData = serie.GetSerieData(dataIndex); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); float xValue, yValue; serie.GetXYData(dataIndex, null, out xValue, out yValue); sb.Append("<color=#").Append(theme.GetColorStr(serie.index)).Append(">● </color>"); if (!string.IsNullOrEmpty(serieData.name)) { sb.Append(serieData.name).Append(": "); } sb.AppendFormat("({0},{1})", ChartCached.FloatToStr(xValue, numericFormatter), ChartCached.FloatToStr(yValue, numericFormatter)); if (i != dataIndexList.Count - 1) { sb.Append("\n"); } } }
private static void InitCoordinateTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, ChartTheme theme, bool isCartesian, DataZoom dataZoom = null) { string key = serie.name; float xValue, yValue; serie.GetXYData(index, dataZoom, out xValue, out yValue); var isIngore = serie.IsIgnorePoint(index); var serieData = serie.GetSerieData(index, dataZoom); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); if (isCartesian) { if (serieData != null && serieData.highlighted) { sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : ""); sb.Append("[").Append(ChartCached.FloatToStr(xValue, numericFormatter)).Append(",") .Append(ChartCached.FloatToStr(yValue, numericFormatter)).Append("]"); } } else { var valueTxt = isIngore ? tooltip.ignoreDataDefaultContent : ChartCached.FloatToStr(yValue, numericFormatter); sb.Append("<color=#").Append(theme.GetColorStr(serie.index)).Append(">● </color>") .Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : "") .Append(valueTxt); } }
public static void InitCoordinateTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, ChartTheme theme, bool isCartesian, DataZoom dataZoom = null) { string key = serie.name; double xValue, yValue; serie.GetXYData(index, dataZoom, out xValue, out yValue); var isIngore = serie.IsIgnorePoint(index); if (isIngore) { return; } var serieData = serie.GetSerieData(index, dataZoom); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); if (isCartesian) { if (serieData != null && serieData.highlighted) { sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : ""); sb.Append("[").Append(ChartCached.FloatToStr(xValue, numericFormatter)).Append(",") .Append(ChartCached.FloatToStr(yValue, numericFormatter)).Append("]"); } } else if (!isIngore || (isIngore && tooltip.ignoreDataShow)) { var valueTxt = isIngore ? tooltip.ignoreDataDefaultContent : ChartCached.FloatToStr(yValue, numericFormatter); sb.Append("<color=#").Append(theme.GetColorStr(serie.index)).Append(">● </color>"); if (serie.type == SerieType.Candlestick) { sb.Append(key).Append(FormatterHelper.PH_NN); var data = serieData.data; var open = ChartCached.FloatToStr(data[0], numericFormatter); var close = ChartCached.FloatToStr(data[1], numericFormatter); var lowest = ChartCached.FloatToStr(data[2], numericFormatter); var heighest = ChartCached.FloatToStr(data[3], numericFormatter); sb.Append(" open: ").Append(open).Append(FormatterHelper.PH_NN); sb.Append(" close: ").Append(close).Append(FormatterHelper.PH_NN); sb.Append(" lowest: ").Append(lowest).Append(FormatterHelper.PH_NN); sb.Append(" heighest: ").Append(heighest); } else { sb.Append(key).Append(!string.IsNullOrEmpty(key) ? " : " : ""); sb.Append(valueTxt); } } }
private static void InitRingTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, ChartTheme theme) { var serieData = serie.GetSerieData(index); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); float value = serieData.GetFirstData(); sb.Length = 0; if (!string.IsNullOrEmpty(serieData.name)) { sb.Append("<color=#").Append(theme.GetColorStr(index)).Append(">● </color>") .Append(serieData.name).Append(": ").Append(ChartCached.FloatToStr(value, numericFormatter)); } else { sb.Append(ChartCached.FloatToStr(value, numericFormatter)); } }
public static void InitRadarTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, Radar radar, ChartTheme theme) { if (radar == null) { return; } if (!serie.show) { return; } if (tooltip.runtimeGridIndex >= 0) { return; } if (serie.radarIndex != radar.index) { return; } var dataIndex = tooltip.runtimeDataIndex[1]; var serieData = serie.GetSerieData(dataIndex); if (!serieData.show) { return; } var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); switch (serie.radarType) { case RadarType.Multiple: if (radar.isAxisTooltip) { var dimension = tooltip.runtimeDataIndex[2]; if (!string.IsNullOrEmpty(serie.name)) { sb.Append(serie.name).Append("\n"); } var total = serie.GetDataTotal(dimension); var first = true; for (int i = 0; i < serie.dataCount; i++) { var sd = serie.GetSerieData(i); if (!sd.show) { continue; } var key = sd.name; var value = sd.GetData(dimension); var itemFormatter = GetItemFormatter(tooltip, serie, sd); numericFormatter = GetItemNumericFormatter(tooltip, serie, sd); if (!first) { sb.Append("\n"); } first = false; sb.Append("<color=#").Append(theme.GetColorStr(i)).Append(">● </color>"); if (string.IsNullOrEmpty(itemFormatter)) { if (string.IsNullOrEmpty(key)) { key = radar.indicatorList[dataIndex].name; } if (string.IsNullOrEmpty(key)) { sb.AppendFormat("{0}\n", ChartCached.FloatToStr(value, numericFormatter)); } else { sb.AppendFormat("{0}: {1}\n", key, ChartCached.FloatToStr(value, numericFormatter)); } } else { string content = itemFormatter; FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, value, total, serie.name, sd.name); sb.Append(content); } } } else { if (serie.index != tooltip.runtimeDataIndex[0]) { return; } sb.Append(serieData.name); for (int i = 0; i < radar.indicatorList.Count; i++) { string key = radar.indicatorList[i].name; float value = serieData.GetData(i); if ((i == 0 && !string.IsNullOrEmpty(serieData.name)) || i > 0) { sb.Append(FormatterHelper.PH_NN); } sb.AppendFormat("{0}: {1}", key, ChartCached.FloatToStr(value, numericFormatter)); } } break; case RadarType.Single: var key2 = serieData.name; var value2 = serieData.GetData(1); var total2 = serie.GetDataTotal(1); var itemFormatter2 = GetItemFormatter(tooltip, serie, serieData); if (string.IsNullOrEmpty(itemFormatter2)) { if (string.IsNullOrEmpty(key2)) { key2 = radar.indicatorList[dataIndex].name; } sb.AppendFormat("{0}: {1}", key2, ChartCached.FloatToStr(value2, numericFormatter)); } else { string content = itemFormatter2; FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, value2, total2, serie.name, serieData.name); sb.Append(content); } break; } }
public static string GetPolarFormatterContent(Tooltip tooltip, Series series, ChartTheme theme, AngleAxis angleAxis) { if (string.IsNullOrEmpty(tooltip.formatter)) { var sb = ChartHelper.sb; sb.Length = 0; var title = tooltip.titleFormatter; var formatTitle = !string.IsNullOrEmpty(title); if ("{i}".Equals(tooltip.titleFormatter)) { title = string.Empty; formatTitle = false; } else if (string.IsNullOrEmpty(title)) { var angle = angleAxis.clockwise ? tooltip.runtimeAngle : 360 - tooltip.runtimeAngle; title = ChartCached.FloatToStr(angle); } foreach (var serie in series.list) { if (serie.show && IsSelectedSerie(tooltip, serie.index)) { if (formatTitle) { FormatterHelper.ReplaceContent(ref title, 0, tooltip.numericFormatter, serie, series, theme, null, null); } var dataIndexList = tooltip.runtimeSerieIndex[serie.index]; for (int i = 0; i < dataIndexList.Count; i++) { var dataIndex = dataIndexList[i]; var serieData = serie.GetSerieData(dataIndex); var itemFormatter = GetItemFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); float xValue, yValue; serie.GetXYData(dataIndex, null, out xValue, out yValue); if (string.IsNullOrEmpty(itemFormatter)) { sb.Append("<color=#").Append(theme.GetColorStr(serie.index)).Append(">● </color>"); if (!string.IsNullOrEmpty(serie.name)) { sb.Append(serie.name).Append(": "); } sb.AppendFormat("{0}", ChartCached.FloatToStr(xValue, numericFormatter)); if (i != dataIndexList.Count - 1) { sb.Append(FormatterHelper.PH_NN); } } else { string content = itemFormatter; FormatterHelper.ReplaceContent(ref content, dataIndex, tooltip.numericFormatter, serie, series, theme, null, null); var dotColorIndex = serie.type == SerieType.Pie || serie.type == SerieType.Radar || serie.type == SerieType.Ring ? dataIndex : serie.index; sb.Append(ChartCached.ColorToDotStr(theme.GetColor(dotColorIndex))); sb.Append(content); } } sb.Append(FormatterHelper.PH_NN); } } if (string.IsNullOrEmpty(title)) { return(FormatterHelper.TrimAndReplaceLine(sb)); } else { title = FormatterHelper.TrimAndReplaceLine(title); return(title + FormatterHelper.PH_NN + FormatterHelper.TrimAndReplaceLine(sb)); } } else { string content = tooltip.formatter; FormatterHelper.ReplaceContent(ref content, 0, tooltip.numericFormatter, null, series, theme, null, null); return(content); } }