This commit is contained in:
monitor1394
2022-05-31 08:17:54 +08:00
parent 5740882d1c
commit e370bedc09
9 changed files with 117 additions and 56 deletions

View File

@@ -13,6 +13,7 @@ namespace XCharts.Runtime
public virtual bool useDataNameForColor { get { return false; } } public virtual bool useDataNameForColor { get { return false; } }
public virtual bool titleJustForSerie { get { return false; } } public virtual bool titleJustForSerie { get { return false; } }
public virtual bool useSortData { get { return false; } } public virtual bool useSortData { get { return false; } }
public virtual bool multiDimensionLabel { get { return false; } }
public bool anyDirty { get { return vertsDirty || componentDirty; } } public bool anyDirty { get { return vertsDirty || componentDirty; } }
public Painter painter { get { return m_Painter; } set { m_Painter = value; } } public Painter painter { get { return m_Painter; } set { m_Painter = value; } }
public Action refreshComponent { get; set; } public Action refreshComponent { get; set; }

View File

@@ -14,8 +14,7 @@ namespace XCharts.Runtime
public XCResourcesImporter() { } public XCResourcesImporter() { }
public void OnDestroy() public void OnDestroy() { }
{ }
public void OnGUI() public void OnGUI()
{ {
@@ -38,7 +37,7 @@ namespace XCharts.Runtime
{ {
var sourPath = Path.Combine(packageFullPath, "Resources"); var sourPath = Path.Combine(packageFullPath, "Resources");
var destPath = Path.Combine(Application.dataPath, "XCharts/Resources"); var destPath = Path.Combine(Application.dataPath, "XCharts/Resources");
if (RuntimeUtil.CopyFolder(sourPath, destPath)) if (CopyFolder(sourPath, destPath))
{ {
AssetDatabase.SaveAssets(); AssetDatabase.SaveAssets();
AssetDatabase.Refresh(); AssetDatabase.Refresh();
@@ -54,6 +53,37 @@ namespace XCharts.Runtime
GUILayout.Space(5f); GUILayout.Space(5f);
} }
private static bool CopyFolder(string sourPath, string destPath)
{
try
{
if (!Directory.Exists(destPath))
{
Directory.CreateDirectory(destPath);
}
var files = Directory.GetFiles(sourPath);
foreach (var file in files)
{
var name = Path.GetFileName(file);
var path = Path.Combine(destPath, name);
File.Copy(file, path);
}
var folders = Directory.GetDirectories(sourPath);
foreach (var folder in folders)
{
var name = Path.GetFileName(folder);
var path = Path.Combine(destPath, name);
CopyFolder(folder, path);
}
return true;
}
catch (Exception e)
{
Debug.LogError("CopyFolder:" + e.Message);
return false;
}
}
internal void RegisterResourceImportCallback() internal void RegisterResourceImportCallback()
{ {
AssetDatabase.importPackageCompleted += ImportCallback; AssetDatabase.importPackageCompleted += ImportCallback;

View File

@@ -154,6 +154,7 @@ namespace XCharts.Runtime
} }
} }
#if UNITY_EDITOR
public static bool ExistAssetFile() public static bool ExistAssetFile()
{ {
return System.IO.File.Exists("Assets/XCharts/Resources/XCSettings.asset"); return System.IO.File.Exists("Assets/XCharts/Resources/XCSettings.asset");
@@ -184,6 +185,7 @@ namespace XCharts.Runtime
} }
return null; return null;
} }
#endif
public static bool AddCustomTheme(Theme theme) public static bool AddCustomTheme(Theme theme)
{ {

View File

@@ -126,6 +126,7 @@ namespace XCharts.Runtime
} }
} }
#if UNITY_EDITOR
public static string GetPackageFullPath() public static string GetPackageFullPath()
{ {
string packagePath = Path.GetFullPath("Packages/com.monitor1394.xcharts"); string packagePath = Path.GetFullPath("Packages/com.monitor1394.xcharts");
@@ -167,8 +168,6 @@ namespace XCharts.Runtime
return null; return null;
} }
#if UNITY_EDITOR
[UnityEditor.Callbacks.DidReloadScripts] [UnityEditor.Callbacks.DidReloadScripts]
static void OnEditorReload() static void OnEditorReload()
{ {

View File

@@ -14,6 +14,7 @@ namespace XCharts.Runtime
public int containerIndex { get; internal set; } public int containerIndex { get; internal set; }
public int containterInstanceId { get; internal set; } public int containterInstanceId { get; internal set; }
public override bool useDataNameForColor { get { return true; } } public override bool useDataNameForColor { get { return true; } }
public override bool multiDimensionLabel { get { return radarType == RadarType.Multiple; } }
public static Serie AddDefaultSerie(BaseChart chart, string serieName) public static Serie AddDefaultSerie(BaseChart chart, string serieName)
{ {

View File

@@ -458,6 +458,14 @@ namespace XCharts.Runtime
return temp; return temp;
} }
public double GetTotalData()
{
var total = 0d;
foreach (var value in m_Data)
total += value;
return total;
}
public bool UpdateData(int dimension, double value, bool updateAnimation, float animationDuration = 500f) public bool UpdateData(int dimension, double value, bool updateAnimation, float animationDuration = 500f)
{ {
if (dimension >= 0 && dimension < data.Count) if (dimension >= 0 && dimension < data.Count)

View File

@@ -34,6 +34,7 @@ namespace XCharts.Runtime
public float outsideRadius; public float outsideRadius;
public Vector3 position; public Vector3 position;
public List<Vector3> dataPoints = new List<Vector3>(); public List<Vector3> dataPoints = new List<Vector3>();
public List<ChartLabel> dataLabels = new List<ChartLabel>();
public List<SerieData> children = new List<SerieData>(); public List<SerieData> children = new List<SerieData>();
/// <summary> /// <summary>
/// 绘制区域。 /// 绘制区域。
@@ -77,6 +78,7 @@ namespace XCharts.Runtime
subRect = Rect.zero; subRect = Rect.zero;
children.Clear(); children.Clear();
dataPoints.Clear(); dataPoints.Clear();
dataLabels.Clear();
} }
} }
} }

View File

@@ -249,11 +249,26 @@ namespace XCharts.Runtime
return false; return false;
var dataAutoColor = GetSerieDataAutoColor(serieData); var dataAutoColor = GetSerieDataAutoColor(serieData);
var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, serie.index, serieData.index); serieData.context.dataLabels.Clear();
var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common, if (serie.multiDimensionLabel)
"", dataAutoColor, TextAnchor.MiddleCenter); {
label.SetActive(serieLabel.show); for (int i = 0; i < serieData.data.Count; i++)
serieData.labelObject = label; {
var textName = string.Format("{0}_{1}_{2}_{3}", s_SerieLabelObjectName, serie.index, serieData.index, i);
var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common,
"", dataAutoColor, TextAnchor.MiddleCenter);
label.SetActive(serieLabel.show);
serieData.context.dataLabels.Add(label);
}
}
else
{
var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, serie.index, serieData.index);
var label = ChartHelper.AddChartLabel(textName, serieLabelRoot.transform, serieLabel, chart.theme.common,
"", dataAutoColor, TextAnchor.MiddleCenter);
label.SetActive(serieLabel.show);
serieData.labelObject = label;
}
if (serieData.context.children.Count > 0) if (serieData.context.children.Count > 0)
{ {
@@ -359,7 +374,7 @@ namespace XCharts.Runtime
var dataChangeDuration = serie.animation.GetUpdateAnimationDuration(); var dataChangeDuration = serie.animation.GetUpdateAnimationDuration();
foreach (var serieData in serie.data) foreach (var serieData in serie.data)
{ {
if (serieData.labelObject == null) if (serieData.labelObject == null && serieData.context.dataLabels.Count <= 0)
continue; continue;
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData); var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
var emphasisLabel = SerieHelper.GetSerieEmphasisLabel(serie, serieData); var emphasisLabel = SerieHelper.GetSerieEmphasisLabel(serie, serieData);
@@ -372,27 +387,59 @@ namespace XCharts.Runtime
serieData.context.canShowLabel && serieData.context.canShowLabel &&
!isIgnore) !isIgnore)
{ {
var value = serieData.GetCurrData(defaultDimension, dataChangeDuration); if (serie.multiDimensionLabel)
var total = serie.GetDataTotal(defaultDimension, serieData);
var color = chart.GetItemColor(serie, serieData);
var content = string.IsNullOrEmpty(currLabel.formatter) ?
ChartCached.NumberToStr(value, serieLabel.numericFormatter) :
SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
currLabel, color);
serieData.SetLabelActive(!isIgnore);
serieData.labelObject.SetText(content);
UpdateLabelPosition(serieData, currLabel);
if (currLabel.textStyle.autoColor)
{ {
var dataAutoColor = GetSerieDataAutoColor(serieData); var total = serieData.GetTotalData();
if (!ChartHelper.IsClearColor(dataAutoColor)) var color = chart.GetItemColor(serie, serieData);
serieData.labelObject.SetTextColor(dataAutoColor); for (int i = 0; i < serieData.context.dataLabels.Count; i++)
{
if (i >= serieData.context.dataPoints.Count) continue;
var labelObject = serieData.context.dataLabels[i];
var value = serieData.GetCurrData(i, dataChangeDuration);
var content = string.IsNullOrEmpty(currLabel.formatter) ?
ChartCached.NumberToStr(value, serieLabel.numericFormatter) :
SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
currLabel, color);
var offset = GetSerieDataLabelOffset(serieData, currLabel);
labelObject.SetActive(!isIgnore);
labelObject.SetText(content);
labelObject.SetPosition(serieData.context.dataPoints[i] + offset);
if (currLabel.textStyle.autoColor)
{
var dataAutoColor = GetSerieDataAutoColor(serieData);
if (!ChartHelper.IsClearColor(dataAutoColor))
labelObject.SetTextColor(dataAutoColor);
}
}
}
else
{
var value = serieData.GetCurrData(defaultDimension, dataChangeDuration);
var total = serie.GetDataTotal(defaultDimension, serieData);
var color = chart.GetItemColor(serie, serieData);
var content = string.IsNullOrEmpty(currLabel.formatter) ?
ChartCached.NumberToStr(value, serieLabel.numericFormatter) :
SerieLabelHelper.GetFormatterContent(serie, serieData, value, total,
currLabel, color);
serieData.SetLabelActive(!isIgnore);
serieData.labelObject.SetText(content);
UpdateLabelPosition(serieData, currLabel);
if (currLabel.textStyle.autoColor)
{
var dataAutoColor = GetSerieDataAutoColor(serieData);
if (!ChartHelper.IsClearColor(dataAutoColor))
serieData.labelObject.SetTextColor(dataAutoColor);
}
} }
} }
else else
{ {
serieData.SetLabelActive(false); serieData.SetLabelActive(false);
foreach (var labelObject in serieData.context.dataLabels)
{
labelObject.SetActive(false);
}
} }
} }
} }

View File

@@ -81,36 +81,7 @@ namespace XCharts.Runtime
} }
} }
public static bool CopyFolder(string sourPath, string destPath)
{
try
{
if (!Directory.Exists(destPath))
{
Directory.CreateDirectory(destPath);
}
var files = Directory.GetFiles(sourPath);
foreach (var file in files)
{
var name = Path.GetFileName(file);
var path = Path.Combine(destPath, name);
File.Copy(file, path);
}
var folders = Directory.GetDirectories(sourPath);
foreach (var folder in folders)
{
var name = Path.GetFileName(folder);
var path = Path.Combine(destPath, name);
CopyFolder(folder, path);
}
return true;
}
catch (Exception e)
{
Debug.LogError("CopyFolder:" + e.Message);
return false;
}
}
} }
} }