[code] refactor the code

This commit is contained in:
monitor1394
2022-07-03 21:09:49 +08:00
parent 33fd4aa9f3
commit 197402dcb7
12 changed files with 60 additions and 67 deletions

View File

@@ -20,13 +20,18 @@ namespace XCharts.Editor
var canvasObject = new GameObject(); var canvasObject = new GameObject();
canvasObject.name = "Canvas"; canvasObject.name = "Canvas";
canvas = canvasObject.AddComponent<Canvas>(); canvas = canvasObject.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvas.renderMode = RenderMode.ScreenSpaceCamera;
var mainCamera = GameObject.FindGameObjectWithTag("MainCamera");
canvas.worldCamera = mainCamera == null? null : mainCamera.GetComponent<Camera>();
canvasObject.AddComponent<CanvasScaler>(); canvasObject.AddComponent<CanvasScaler>();
canvasObject.AddComponent<GraphicRaycaster>(); canvasObject.AddComponent<GraphicRaycaster>();
var eventSystem = new GameObject(); if (GameObject.Find("EventSystem") == null)
eventSystem.name = "EventSystem"; {
eventSystem.AddComponent<EventSystem>(); var eventSystem = new GameObject();
eventSystem.AddComponent<StandaloneInputModule>(); eventSystem.name = "EventSystem";
eventSystem.AddComponent<EventSystem>();
eventSystem.AddComponent<StandaloneInputModule>();
}
return canvas.transform; return canvas.transform;
} }
} }

View File

@@ -145,22 +145,18 @@ namespace XCharts.Runtime
public string GetFormatterContent(int labelIndex, string category) public string GetFormatterContent(int labelIndex, string category)
{ {
if (m_FormatterFunction != null)
{
return m_FormatterFunction(labelIndex, 0, category);
}
if (string.IsNullOrEmpty(category)) if (string.IsNullOrEmpty(category))
return category; return GetFormatterFunctionContent(labelIndex, category, category);
if (string.IsNullOrEmpty(m_Formatter)) if (string.IsNullOrEmpty(m_Formatter))
{ {
return m_TextLimit.GetLimitContent(category); return GetFormatterFunctionContent(labelIndex, category, m_TextLimit.GetLimitContent(category));
} }
else else
{ {
var content = m_Formatter; var content = m_Formatter;
FormatterHelper.ReplaceAxisLabelContent(ref content, category); FormatterHelper.ReplaceAxisLabelContent(ref content, category);
return m_TextLimit.GetLimitContent(content); return GetFormatterFunctionContent(labelIndex, category, m_TextLimit.GetLimitContent(content));
} }
} }
@@ -170,15 +166,11 @@ namespace XCharts.Runtime
{ {
value = Math.Abs(value); value = Math.Abs(value);
} }
if (m_FormatterFunction != null)
{
return m_FormatterFunction(labelIndex, value, null);
}
if (string.IsNullOrEmpty(m_Formatter)) if (string.IsNullOrEmpty(m_Formatter))
{ {
if (isLog) if (isLog)
{ {
return ChartCached.NumberToStr(value, numericFormatter); return GetFormatterFunctionContent(labelIndex, value, ChartCached.NumberToStr(value, numericFormatter));
} }
if (minValue >= -1 && minValue <= 1 && maxValue >= -1 && maxValue <= 1) if (minValue >= -1 && minValue <= 1 && maxValue >= -1 && maxValue <= 1)
{ {
@@ -186,24 +178,20 @@ namespace XCharts.Runtime
int maxAcc = ChartHelper.GetFloatAccuracy(maxValue); int maxAcc = ChartHelper.GetFloatAccuracy(maxValue);
int curAcc = ChartHelper.GetFloatAccuracy(value); int curAcc = ChartHelper.GetFloatAccuracy(value);
int acc = Mathf.Max(Mathf.Max(minAcc, maxAcc), curAcc); int acc = Mathf.Max(Mathf.Max(minAcc, maxAcc), curAcc);
return ChartCached.FloatToStr(value, numericFormatter, acc); return GetFormatterFunctionContent(labelIndex, value, ChartCached.FloatToStr(value, numericFormatter, acc));
} }
return ChartCached.NumberToStr(value, numericFormatter); return GetFormatterFunctionContent(labelIndex, value, ChartCached.NumberToStr(value, numericFormatter));
} }
else else
{ {
var content = m_Formatter; var content = m_Formatter;
FormatterHelper.ReplaceAxisLabelContent(ref content, numericFormatter, value); FormatterHelper.ReplaceAxisLabelContent(ref content, numericFormatter, value);
return content; return GetFormatterFunctionContent(labelIndex, value, content);
} }
} }
public string GetFormatterDateTime(int labelIndex, double value, double minValue, double maxValue) public string GetFormatterDateTime(int labelIndex, double value, double minValue, double maxValue)
{ {
if (m_FormatterFunction != null)
{
return m_FormatterFunction(labelIndex, value, null);
}
var timestamp = (int) value; var timestamp = (int) value;
var dateTime = DateTimeUtil.GetDateTime(timestamp); var dateTime = DateTimeUtil.GetDateTime(timestamp);
var dateString = string.Empty; var dateString = string.Empty;
@@ -219,12 +207,24 @@ namespace XCharts.Runtime
{ {
var content = m_Formatter; var content = m_Formatter;
FormatterHelper.ReplaceAxisLabelContent(ref content, dateString); FormatterHelper.ReplaceAxisLabelContent(ref content, dateString);
return m_TextLimit.GetLimitContent(content); return GetFormatterFunctionContent(labelIndex, value, m_TextLimit.GetLimitContent(content));
} }
else else
{ {
return m_TextLimit.GetLimitContent(dateString); return GetFormatterFunctionContent(labelIndex, value, m_TextLimit.GetLimitContent(dateString));
} }
} }
private string GetFormatterFunctionContent(int labelIndex, string category, string currentContent)
{
return m_FormatterFunction == null ? currentContent :
m_FormatterFunction(labelIndex, labelIndex, category, currentContent);
}
private string GetFormatterFunctionContent(int labelIndex, double value, string currentContent)
{
return m_FormatterFunction == null ? currentContent :
m_FormatterFunction(labelIndex, labelIndex, null, currentContent);
}
} }
} }

View File

@@ -18,16 +18,6 @@ namespace XCharts.Runtime
} }
} }
public static void ResetLabel(ChartText labelObject, LabelStyle label, ThemeStyle theme,
Color textColor, float rotate)
{
if (labelObject == null) return;
labelObject.SetColor(textColor);
labelObject.SetLocalEulerAngles(new Vector3(0, 0, rotate));
labelObject.SetFontSize(label.textStyle.GetFontSize(theme.common));
labelObject.SetFontStyle(label.textStyle.fontStyle);
}
public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion) public static bool CanShowLabel(Serie serie, SerieData serieData, LabelStyle label, int dimesion)
{ {
return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion); return serie.show && serieData.context.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
@@ -43,18 +33,23 @@ namespace XCharts.Runtime
var numericFormatter = serieLabel == null ? "" : serieLabel.numericFormatter; var numericFormatter = serieLabel == null ? "" : serieLabel.numericFormatter;
var serieName = serie.serieName; var serieName = serie.serieName;
var dataName = serieData != null ? serieData.name : null; var dataName = serieData != null ? serieData.name : null;
if (serieLabel.formatterFunction != null)
{
return serieLabel.formatterFunction(serieData.index, dataValue, null);
}
if (string.IsNullOrEmpty(serieLabel.formatter)) if (string.IsNullOrEmpty(serieLabel.formatter))
return ChartCached.NumberToStr(dataValue, numericFormatter); {
var currentContent = ChartCached.NumberToStr(dataValue, numericFormatter);
if (serieLabel.formatterFunction == null)
return currentContent;
else
return serieLabel.formatterFunction(serieData.index, dataValue, null, currentContent);
}
else else
{ {
var content = serieLabel.formatter; var content = serieLabel.formatter;
FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, dataValue, FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, dataValue,
dataTotal, serieName, dataName, dataName, color, serieData); dataTotal, serieName, dataName, dataName, color, serieData);
return content; if (serieLabel.formatterFunction == null)
return content;
else
return serieLabel.formatterFunction(serieData.index, dataValue, null, content);
} }
} }
@@ -192,11 +187,11 @@ namespace XCharts.Runtime
var angle = ChartHelper.GetAngle360(Vector2.up, newPos - serie.context.center); var angle = ChartHelper.GetAngle360(Vector2.up, newPos - serie.context.center);
if (angle >= 180 && angle <= 270) if (angle >= 180 && angle <= 270)
{ {
serieData.context.labelPosition = new Vector3(isLeft?(++lastX):(--lastX), y1); serieData.context.labelPosition = new Vector3(isLeft?(++lastX): (--lastX), y1);
} }
else if (angle < 180 && angle >= 90) else if (angle < 180 && angle >= 90)
{ {
serieData.context.labelPosition = new Vector3(isLeft?(++lastX):(--lastX), y1); serieData.context.labelPosition = new Vector3(isLeft?(++lastX): (--lastX), y1);
} }
else else
{ {

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 0b81cddd3452545748563f9c6ea9be69 guid: 654a13ef33a064e4fbf078742f397b20
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2

View File

@@ -8,18 +8,19 @@ namespace XCharts.Runtime
{ {
var serieLabel = data.label; var serieLabel = data.label;
var numericFormatter = serieLabel.numericFormatter; var numericFormatter = serieLabel.numericFormatter;
if (serieLabel.formatterFunction != null)
{
return serieLabel.formatterFunction(data.index, data.runtimeValue, null);
}
if (string.IsNullOrEmpty(serieLabel.formatter)) if (string.IsNullOrEmpty(serieLabel.formatter))
return ChartCached.NumberToStr(data.runtimeValue, numericFormatter); {
var content = ChartCached.NumberToStr(data.runtimeValue, numericFormatter);
return serieLabel.formatterFunction == null? content:
serieLabel.formatterFunction(data.index, data.runtimeValue, null, content);
}
else else
{ {
var content = serieLabel.formatter; var content = serieLabel.formatter;
FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, data.runtimeValue, FormatterHelper.ReplaceSerieLabelContent(ref content, numericFormatter, serie.dataCount, data.runtimeValue,
0, serie.serieName, data.name, data.name, Color.clear, null); 0, serie.serieName, data.name, data.name, Color.clear, null);
return content; return serieLabel.formatterFunction == null? content:
serieLabel.formatterFunction(data.index, data.runtimeValue, null, content);
} }
} }

View File

@@ -41,7 +41,6 @@ namespace XCharts.Runtime
{ {
var foundDot = false; var foundDot = false;
var mc = s_Regex.Matches(content); var mc = s_Regex.Matches(content);
Debug.LogError("context:" + content);
foreach (var m in mc) foreach (var m in mc)
{ {
var old = m.ToString(); var old = m.ToString();

View File

@@ -9,8 +9,10 @@ namespace XCharts.Runtime
/// </summary> /// </summary>
/// <param name="dataIndex">数据索引</param> /// <param name="dataIndex">数据索引</param>
/// <param name="value">数值</param> /// <param name="value">数值</param>
/// <param name="category">类目</param>
/// <param name="content">当前内容</param>
/// <returns>最终显示的文本内容</returns> /// <returns>最终显示的文本内容</returns>
public delegate string LabelFormatterFunction(int dataIndex, double value, string category); public delegate string LabelFormatterFunction(int dataIndex, double value, string category, string content);
public delegate float AnimationDelayFunction(int dataIndex); public delegate float AnimationDelayFunction(int dataIndex);
public delegate float AnimationDurationFunction(int dataIndex); public delegate float AnimationDurationFunction(int dataIndex);
/// <summary> /// <summary>

View File

@@ -212,7 +212,7 @@ namespace XCharts.Runtime
[SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.48f }; [SerializeField] private float[] m_Center = new float[2] { 0.5f, 0.48f };
[SerializeField] private float[] m_Radius = new float[2] { 0, 0.28f }; [SerializeField] private float[] m_Radius = new float[2] { 0, 0.28f };
[SerializeField][Range(1, 10)] private int m_ShowDataDimension; [SerializeField][Range(2, 10)] private int m_ShowDataDimension;
[SerializeField] private bool m_ShowDataName; [SerializeField] private bool m_ShowDataName;
[SerializeField] private bool m_Clip = false; [SerializeField] private bool m_Clip = false;
[SerializeField] private bool m_Ignore = false; [SerializeField] private bool m_Ignore = false;
@@ -686,7 +686,7 @@ namespace XCharts.Runtime
/// <summary> /// <summary>
/// 数据项里的数据维数。 /// 数据项里的数据维数。
/// </summary> /// </summary>
public int showDataDimension { get { return m_ShowDataDimension; } set { m_ShowDataDimension = value; } } public int showDataDimension { get { return m_ShowDataDimension; } set { m_ShowDataDimension = Mathf.Clamp(2, 10, value); } }
/// <summary> /// <summary>
/// 在Editor的inpsector上是否显示name参数 /// 在Editor的inpsector上是否显示name参数
/// </summary> /// </summary>
@@ -1132,7 +1132,7 @@ namespace XCharts.Runtime
serieData.index = xValue; serieData.index = xValue;
serieData.id = dataId; serieData.id = dataId;
AddSerieData(serieData); AddSerieData(serieData);
m_ShowDataDimension = 1; m_ShowDataDimension = 2;
SetVerticesDirty(); SetVerticesDirty();
CheckDataName(dataName); CheckDataName(dataName);
labelDirty = true; labelDirty = true;

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 8c031417514104eebb5bbd60dd1f90fd guid: 73512c276f5c34fb4a28cf61b2a0c4f1
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2

View File

@@ -138,15 +138,6 @@ namespace XCharts.Runtime
return null; return null;
} }
public static Serie GetSerieByVesselIndex(List<Serie> series, int vesselIndex)
{
foreach (var serie in series)
{
if (serie.vesselIndex == vesselIndex) return serie;
}
return null;
}
private static HashSet<string> _setForStack = new HashSet<string>(); private static HashSet<string> _setForStack = new HashSet<string>();
/// <summary> /// <summary>
/// 是否由数据堆叠 /// 是否由数据堆叠

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 96a06a5949772464da15c44ae2ad400d guid: 0a1c1086d9f88497d9e0ac89d719ff48
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2