public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, string marker, string itemFormatter, string numericFormatter, ref List <SerieParams> paramList, ref string title) { dataIndex = serie.context.pointerItemDataIndex; if (dataIndex < 0) { return; } var serieData = serie.GetSerieData(dataIndex); if (serieData == null) { return; } if (string.IsNullOrEmpty(category)) { var xAxis = chart.GetChartComponent <XAxis>(serie.xAxisIndex); if (xAxis != null) { category = xAxis.GetData((int)serieData.GetData(0)); } } title = serie.serieName; var param = serie.context.param; param.serieName = serie.serieName; param.serieIndex = serie.index; param.dimension = defaultDimension; param.dataCount = serie.dataCount; param.serieData = serieData; param.color = serieData.context.color; param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); param.columns.Clear(); param.columns.Add(param.marker); param.columns.Add(category); param.columns.Add(ChartCached.NumberToStr(serieData.GetData(defaultDimension), param.numericFormatter)); paramList.Add(param); }
public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, string marker, string itemFormatter, string numericFormatter, ref List <SerieParams> paramList, ref string title) { if (dataIndex < 0) { dataIndex = serie.context.pointerItemDataIndex; } if (dataIndex < 0) { return; } var serieData = serie.GetSerieData(dataIndex); if (serieData == null) { return; } var param = serie.context.param; param.serieName = serie.serieName; param.serieIndex = serie.index; param.category = category; param.dimension = defaultDimension; param.serieData = serieData; param.dataCount = serie.dataCount; param.value = serieData.GetData(0); param.total = serieData.GetData(1); param.color = SerieHelper.GetItemColor(serie, serieData, chart.theme, dataIndex, false); param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);; param.columns.Clear(); param.columns.Add(param.marker); param.columns.Add(serieData.name); param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); paramList.Add(param); }
public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, string marker, string itemFormatter, string numericFormatter, ref List <SerieParams> paramList, ref string title) { if (dataIndex < 0) { dataIndex = serie.context.pointerItemDataIndex; } if (dataIndex < 0) { return; } var serieData = serie.GetSerieData(dataIndex); if (serieData == null) { return; } title = category; var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false); var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker); var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); var param = serie.context.param; param.serieName = serie.serieName; param.serieIndex = serie.index; param.category = category; param.dimension = 1; param.serieData = serieData; param.dataCount = serie.dataCount; param.value = 0; param.total = 0; param.color = color; param.marker = newMarker; param.itemFormatter = newItemFormatter; param.numericFormatter = newNumericFormatter; param.columns.Clear(); param.columns.Add(param.marker); param.columns.Add(serie.serieName); param.columns.Add(string.Empty); paramList.Add(param); for (int i = 0; i < 4; i++) { param = new SerieParams(); param.serieName = serie.serieName; param.serieIndex = serie.index; param.dimension = i; param.serieData = serieData; param.dataCount = serie.dataCount; param.value = serieData.GetData(i); param.total = SerieHelper.GetMaxData(serie, i); param.color = color; param.marker = newMarker; param.itemFormatter = newItemFormatter; param.numericFormatter = newNumericFormatter; param.columns.Clear(); param.columns.Add(param.marker); param.columns.Add(XCSettings.lang.GetCandlestickDimensionName(i)); param.columns.Add(ChartCached.NumberToStr(param.value, param.numericFormatter)); paramList.Add(param); } }
/// <summary> /// 替换字符串中的通配符,支持的通配符有{.}、{a}、{b}、{c}、{d}、{e}、{f}、{g}。 /// </summary> /// <param name="content">要替换的字符串</param> /// <param name="dataIndex">选中的数据项serieData索引</param> /// <param name="numericFormatter">默认的数字格式化</param> /// <param name="serie">选中的serie</param> /// <param name="series">所有serie</param> /// <param name="theme">用来获取指定index的颜色</param> /// <param name="category">选中的类目,一般用在折线图和柱状图</param> /// <param name="dataZoom">dataZoom</param> /// <returns></returns> public static bool ReplaceContent(ref string content, int dataIndex, string numericFormatter, Serie serie, BaseChart chart, DataZoom dataZoom = null) { var foundDot = false; var mc = s_Regex.Matches(content); foreach (var m in mc) { var old = m.ToString(); var args = s_RegexSub.Matches(m.ToString()); var argsCount = args.Count; if (argsCount <= 0) { continue; } int targetIndex = 0; char p = GetSerieIndex(args[0].ToString(), ref targetIndex); if (targetIndex >= 0) { serie = chart.GetSerie(targetIndex); if (serie == null) { continue; } } else if (serie != null) { targetIndex = serie.index; } else { serie = chart.GetSerie(0); targetIndex = 0; } if (serie == null) { continue; } if (p == '.') { var bIndex = targetIndex; if (argsCount >= 2) { var args1Str = args[1].ToString(); if (s_RegexN.IsMatch(args1Str)) { bIndex = int.Parse(args1Str); } } content = content.Replace(old, ChartCached.ColorToDotStr(chart.theme.GetColor(bIndex))); foundDot = true; } else if (p == 'a' || p == 'A') { if (argsCount == 1) { content = content.Replace(old, serie.serieName); } } else if (p == 'b' || p == 'B' || p == 'e' || p == 'E') { var bIndex = dataIndex; if (argsCount >= 2) { var args1Str = args[1].ToString(); if (s_RegexN.IsMatch(args1Str)) { bIndex = int.Parse(args1Str); } } var needCategory = (p != 'e' && p != 'E') && (serie is Line || serie is Bar); if (needCategory) { var category = chart.GetTooltipCategory(dataIndex, serie, dataZoom); content = content.Replace(old, category); } else { var serieData = serie.GetSerieData(bIndex, dataZoom); content = content.Replace(old, serieData.name); } } else if (p == 'g' || p == 'G') { content = content.Replace(old, ChartCached.NumberToStr(serie.dataCount, "")); } else if (p == 'c' || p == 'C' || p == 'd' || p == 'D' || p == 'f' || p == 'f') { var isPercent = p == 'd' || p == 'D'; var isTotal = p == 'f' || p == 'f'; var bIndex = dataIndex; var dimensionIndex = -1; if (argsCount >= 2) { var args1Str = args[1].ToString(); if (s_RegexFn.IsMatch(args1Str)) { numericFormatter = args1Str; } else if (s_RegexN_N.IsMatch(args1Str)) { var temp = args1Str.Split('-'); bIndex = int.Parse(temp[0]); dimensionIndex = int.Parse(temp[1]); } else if (s_RegexN.IsMatch(args1Str)) { dimensionIndex = int.Parse(args1Str); } else { Debug.LogError("unmatch:" + args1Str); continue; } } if (argsCount >= 3) { numericFormatter = args[2].ToString(); } if (dimensionIndex == -1) { dimensionIndex = 1; } if (numericFormatter == string.Empty) { numericFormatter = SerieHelper.GetNumericFormatter(serie, serie.GetSerieData(bIndex), ""); } var value = serie.GetData(bIndex, dimensionIndex, dataZoom); if (isPercent) { var total = serie.GetDataTotal(dimensionIndex, serie.GetSerieData(bIndex)); var percent = total == 0 ? 0 : value / serie.yTotal * 100; content = content.Replace(old, ChartCached.FloatToStr(percent, numericFormatter)); } else if (isTotal) { var total = serie.GetDataTotal(dimensionIndex, serie.GetSerieData(bIndex)); content = content.Replace(old, ChartCached.FloatToStr(total, numericFormatter)); } else { content = content.Replace(old, ChartCached.FloatToStr(value, numericFormatter)); } } } content = s_RegexNewLine.Replace(content, PH_NN); return(foundDot); }
public override void UpdateTooltipSerieParams(int dataIndex, bool showCategory, string category, string marker, string itemFormatter, string numericFormatter, ref List <SerieParams> paramList, ref string title) { if (!serie.context.pointerEnter) { return; } dataIndex = serie.context.pointerItemDataIndex; if (dataIndex < 0) { return; } if (serie.radarType == RadarType.Single) { UpdateItemSerieParams(ref paramList, ref title, dataIndex, category, marker, itemFormatter, numericFormatter); return; } var radar = chart.GetChartComponent <RadarCoord>(serie.radarIndex); if (radar == null) { return; } var serieData = serie.GetSerieData(dataIndex); if (serieData == null) { return; } var color = SerieHelper.GetItemColor(serie, serieData, chart.theme, dataIndex, false);; title = serieData.name; for (int i = 0; i < serieData.data.Count; i++) { var indicator = radar.GetIndicator(i); if (indicator == null) { continue; } var param = new SerieParams(); param.serieName = serie.serieName; param.serieIndex = serie.index; param.dimension = i; param.serieData = serieData; param.dataCount = serie.dataCount; param.value = serieData.GetData(i); param.total = indicator.max; param.color = color; param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); param.columns.Clear(); param.columns.Add(param.marker); param.columns.Add(indicator.name); param.columns.Add(ChartCached.NumberToStr(serieData.GetData(i), param.numericFormatter)); paramList.Add(param); } }