增加Custom类型的Serie的tooltip自定义

This commit is contained in:
monitor1394
2021-04-29 19:57:07 +08:00
parent 0d98a1db16
commit 852f93dec5
4 changed files with 22 additions and 15 deletions

View File

@@ -10,6 +10,7 @@ using System.Collections.Generic;
using System; using System;
using UnityEngine.UI; using UnityEngine.UI;
using UnityEngine.EventSystems; using UnityEngine.EventSystems;
using System.Text;
namespace XCharts namespace XCharts
{ {
@@ -738,5 +739,9 @@ namespace XCharts
{ {
return m_LegendRealShowName.IndexOf(name); return m_LegendRealShowName.IndexOf(name);
} }
public virtual void InitCustomSerieTooltip(ref StringBuilder stringBuilder, Serie serie, int index)
{
}
} }
} }

View File

@@ -586,7 +586,8 @@ namespace XCharts
} }
} }
internal List<string> GetDataList(){ internal List<string> GetDataList()
{
return m_Data.Count > 0 ? m_Data : m_RuntimeData; return m_Data.Count > 0 ? m_Data : m_RuntimeData;
} }

View File

@@ -4,9 +4,7 @@
/* https://github.com/monitor1394 */ /* https://github.com/monitor1394 */
/* */ /* */
/************************************************/ /************************************************/
using System.Text;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
namespace XCharts namespace XCharts
{ {
@@ -149,7 +147,6 @@ namespace XCharts
minValue = -minValue; minValue = -minValue;
maxValue = -maxValue; maxValue = -maxValue;
} }
if (forcePercent) return string.Format("{0}%", (int)value); if (forcePercent) return string.Format("{0}%", (int)value);
else return axis.axisLabel.GetFormatterContent(value, minValue, maxValue); else return axis.axisLabel.GetFormatterContent(value, minValue, maxValue);
} }

View File

@@ -189,13 +189,14 @@ namespace XCharts
} }
} }
private static void InitCoordinateTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, public static void InitCoordinateTooltip(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index,
ChartTheme theme, bool isCartesian, DataZoom dataZoom = null) ChartTheme theme, bool isCartesian, DataZoom dataZoom = null)
{ {
string key = serie.name; string key = serie.name;
float xValue, yValue; float xValue, yValue;
serie.GetXYData(index, dataZoom, out xValue, out yValue); serie.GetXYData(index, dataZoom, out xValue, out yValue);
var isIngore = serie.IsIgnorePoint(index); var isIngore = serie.IsIgnorePoint(index);
if(isIngore) return;
var serieData = serie.GetSerieData(index, dataZoom); var serieData = serie.GetSerieData(index, dataZoom);
var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData); var numericFormatter = GetItemNumericFormatter(tooltip, serie, serieData);
if (isCartesian) if (isCartesian)
@@ -242,7 +243,7 @@ namespace XCharts
} }
private static void InitDefaultContent(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index, private static void InitDefaultContent(ref StringBuilder sb, Tooltip tooltip, Serie serie, int index,
ChartTheme theme = null, DataZoom dataZoom = null, bool isCartesian = false, BaseChart chart, DataZoom dataZoom = null, bool isCartesian = false,
Radar radar = null) Radar radar = null)
{ {
switch (serie.type) switch (serie.type)
@@ -250,28 +251,31 @@ namespace XCharts
case SerieType.Line: case SerieType.Line:
case SerieType.Bar: case SerieType.Bar:
case SerieType.Candlestick: case SerieType.Candlestick:
InitCoordinateTooltip(ref sb, tooltip, serie, index, theme, isCartesian, dataZoom); InitCoordinateTooltip(ref sb, tooltip, serie, index, chart.theme, isCartesian, dataZoom);
break; break;
case SerieType.Scatter: case SerieType.Scatter:
case SerieType.EffectScatter: case SerieType.EffectScatter:
InitScatterTooltip(ref sb, tooltip, serie, index, theme); InitScatterTooltip(ref sb, tooltip, serie, index, chart.theme);
break; break;
case SerieType.Radar: case SerieType.Radar:
InitRadarTooltip(ref sb, tooltip, serie, radar, theme); InitRadarTooltip(ref sb, tooltip, serie, radar, chart.theme);
break; break;
case SerieType.Pie: case SerieType.Pie:
InitPieTooltip(ref sb, tooltip, serie, index, theme); InitPieTooltip(ref sb, tooltip, serie, index, chart.theme);
break; break;
case SerieType.Ring: case SerieType.Ring:
InitRingTooltip(ref sb, tooltip, serie, index, theme); InitRingTooltip(ref sb, tooltip, serie, index, chart.theme);
break; break;
case SerieType.Heatmap: case SerieType.Heatmap:
break; break;
case SerieType.Gauge: case SerieType.Gauge:
InitGaugeTooltip(ref sb, tooltip, serie, index, theme); InitGaugeTooltip(ref sb, tooltip, serie, index, chart.theme);
break; break;
case SerieType.Gantt: case SerieType.Gantt:
InitGanttTooltip(ref sb, tooltip, serie, index, theme); InitGanttTooltip(ref sb, tooltip, serie, index, chart.theme);
break;
case SerieType.Custom:
chart.InitCustomSerieTooltip(ref sb, serie, index);
break; break;
} }
} }
@@ -401,7 +405,7 @@ namespace XCharts
if (string.IsNullOrEmpty(itemFormatter)) if (string.IsNullOrEmpty(itemFormatter))
{ {
if (!first) sb.Append(FormatterHelper.PH_NN); if (!first) sb.Append(FormatterHelper.PH_NN);
InitDefaultContent(ref sb, tooltip, serie, dataIndex, chart.theme, dataZoom, isCartesian, radar); InitDefaultContent(ref sb, tooltip, serie, dataIndex, chart, dataZoom, isCartesian, radar);
first = false; first = false;
continue; continue;
} }
@@ -449,7 +453,7 @@ namespace XCharts
if (string.IsNullOrEmpty(itemFormatter) || serie.type == SerieType.Radar) if (string.IsNullOrEmpty(itemFormatter) || serie.type == SerieType.Radar)
{ {
if (!first) sb.Append(FormatterHelper.PH_NN); if (!first) sb.Append(FormatterHelper.PH_NN);
InitDefaultContent(ref sb, tooltip, serie, dataIndex, chart.theme, dataZoom, isCartesian, radar); InitDefaultContent(ref sb, tooltip, serie, dataIndex, chart, dataZoom, isCartesian, radar);
first = false; first = false;
continue; continue;
} }