Fixed an issue where the Radar could not refresh itself after parameter changing #122

This commit is contained in:
monitor1394
2021-02-18 09:24:01 +08:00
parent 3a02f66d9e
commit 04efcf3959
6 changed files with 74 additions and 38 deletions

View File

@@ -31,6 +31,8 @@
## Latest
* (2021.02.18) Fixed an issue where the `Radar` could not refresh itself after parameter changing #122
## v2.0.0
* (2021.02.05) Release `v2.0.0` version

View File

@@ -31,6 +31,8 @@
## Latest
* (2021.02.18) 修复`Radar`参数变更后无法自刷新的问题
## 2.0.0
* (2021.02.05) 发布`v2.0.0`版本

View File

@@ -26,6 +26,17 @@ namespace XCharts
m_Radars.Clear();
}
/// <summary>
/// 移除指定Radar的所有Indicator。
/// </summary>
/// <param name="radarIndex"></param>
public void RemoveIndicator(int radarIndex)
{
var radar = GetRadar(radarIndex);
if (radar == null) return;
radar.indicatorList.Clear();
}
/// <summary>
/// 添加雷达坐标系组件。
/// </summary>
@@ -61,6 +72,14 @@ namespace XCharts
return radar;
}
public bool AddIndicator(int radarIndex, Radar.Indicator indicator)
{
var radar = GetRadar(radarIndex);
if (radar == null) return false;
radar.AddIndicator(indicator);
return true;
}
/// <summary>
/// 添加指示器。
/// </summary>

View File

@@ -340,6 +340,12 @@ namespace XCharts
return new Vector3(x, y);
}
public void AddIndicator(Radar.Indicator indicator)
{
indicatorList.Add(indicator);
SetAllDirty();
}
public Radar.Indicator AddIndicator(string name, float min, float max)
{
var indicator = new Radar.Indicator();

View File

@@ -249,16 +249,19 @@ namespace XCharts
m_Theme.ClearDirty();
}
CheckComponentDirty(tooltip);
foreach (var title in m_Titles) CheckComponentDirty(title);
foreach (var legend in m_Legends) CheckComponentDirty(legend);
foreach (var dataZoom in m_DataZooms) CheckComponentDirty(dataZoom);
foreach (var visualMap in m_VisualMaps) CheckComponentDirty(visualMap);
foreach (var grid in m_Grids) CheckComponentDirty(grid);
foreach (var axis in m_XAxes) CheckComponentDirty(axis);
foreach (var axis in m_YAxes) CheckComponentDirty(axis);
foreach (var polar in m_Polars) CheckComponentDirty(polar);
foreach (var axis in m_AngleAxes) CheckComponentDirty(axis);
foreach (var axis in m_RadiusAxes) CheckComponentDirty(axis);
foreach (var component in m_Titles) CheckComponentDirty(component);
foreach (var component in m_Legends) CheckComponentDirty(component);
foreach (var component in m_Tooltips) CheckComponentDirty(component);
foreach (var component in m_DataZooms) CheckComponentDirty(component);
foreach (var component in m_VisualMaps) CheckComponentDirty(component);
foreach (var component in m_Grids) CheckComponentDirty(component);
foreach (var component in m_XAxes) CheckComponentDirty(component);
foreach (var component in m_YAxes) CheckComponentDirty(component);
foreach (var component in m_Vessels) CheckComponentDirty(component);
foreach (var component in m_Polars) CheckComponentDirty(component);
foreach (var component in m_AngleAxes) CheckComponentDirty(component);
foreach (var component in m_RadiusAxes) CheckComponentDirty(component);
foreach (var component in m_Radars) CheckComponentDirty(component);
foreach (var drawSerie in m_DrawSeries) drawSerie.CheckComponent();
}
@@ -278,9 +281,19 @@ namespace XCharts
{
base.SetAllComponentDirty();
m_Theme.SetAllDirty();
foreach (var title in m_Titles) title.SetAllDirty();
foreach (var legend in m_Legends) legend.SetAllDirty();
tooltip.SetAllDirty();
foreach (var component in m_Titles) component.SetAllDirty();
foreach (var component in m_Legends) component.SetAllDirty();
foreach (var component in m_Tooltips) component.SetAllDirty();
foreach (var component in m_Grids) component.SetAllDirty();
foreach (var component in m_XAxes) component.SetAllDirty();
foreach (var component in m_YAxes) component.SetAllDirty();
foreach (var component in m_DataZooms) component.SetAllDirty();
foreach (var component in m_VisualMaps) component.SetAllDirty();
foreach (var component in m_Vessels) component.SetAllDirty();
foreach (var component in m_Polars) component.SetAllDirty();
foreach (var component in m_RadiusAxes) component.SetAllDirty();
foreach (var component in m_AngleAxes) component.SetAllDirty();
foreach (var component in m_Radars) component.SetAllDirty();
m_ReinitLabel = true;
m_ReinitTitle = true;
}

View File

@@ -18,7 +18,6 @@ namespace XCharts
public BaseChart chart;
private const string INDICATOR_TEXT = "indicator";
private bool m_IsEnterLegendButtom;
private bool m_RadarsDirty;
Dictionary<string, int> serieNameSet = new Dictionary<string, int>();
public DrawSerieRadar(BaseChart chart)
@@ -28,26 +27,11 @@ namespace XCharts
public void InitComponent()
{
InitIndicator();
InitRadars();
}
public void CheckComponent()
{
var anyDirty = IsAnyRadarDirty();
if (m_RadarsDirty || anyDirty)
{
InitIndicator();
chart.RefreshBasePainter();
chart.tooltip.UpdateToTop();
if (anyDirty)
{
foreach (var radar in chart.radars)
{
radar.ClearDirty();
}
}
m_RadarsDirty = false;
}
}
public void Update()
@@ -244,22 +228,31 @@ namespace XCharts
{
}
private void InitIndicator()
private void InitRadars()
{
ChartHelper.HideAllObject(chart.transform, INDICATOR_TEXT);
for (int n = 0; n < chart.radars.Count; n++)
{
Radar radar = chart.radars[n];
radar.index = n;
InitRadar(radar);
}
}
private void InitRadar(Radar radar)
{
float txtWid = 100;
float txtHig = 20;
radar.painter = chart.GetPainter(radar.index);
radar.refreshComponent = delegate ()
{
ChartHelper.HideAllObject(chart.transform, INDICATOR_TEXT + "_" + radar.index);
radar.UpdateRadarCenter(chart.chartPosition, chart.chartWidth, chart.chartHeight);
int indicatorNum = radar.indicatorList.Count;
float txtWid = 100;
float txtHig = 20;
for (int i = 0; i < indicatorNum; i++)
for (int i = 0; i < radar.indicatorList.Count; i++)
{
var indicator = radar.indicatorList[i];
var pos = radar.GetIndicatorPosition(i);
var textStyle = indicator.textStyle;
var objName = INDICATOR_TEXT + "_" + n + "_" + i;
var objName = INDICATOR_TEXT + "_" + radar.index + "_" + i;
var txt = ChartHelper.AddTextObject(objName, chart.transform, new Vector2(0.5f, 0.5f),
new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(txtWid, txtHig),
textStyle, chart.theme.radar);
@@ -270,7 +263,8 @@ namespace XCharts
var offset = new Vector3(textStyle.offset.x, textStyle.offset.y);
AxisHelper.AdjustCircleLabelPos(txt, pos, radar.runtimeCenterPos, txtHig, offset);
}
}
};
radar.refreshComponent?.Invoke();
}
private void DrawMutipleRadar(VertexHelper vh, Serie serie, int i)