using UnityEngine; using System.Collections.Generic; namespace XCharts { public partial class BaseChart { public Title title { get { return m_Title; } } public Legend legend { get { return m_Legend; } } public Tooltip tooltip { get { return m_Tooltip; } } public Series series { get { return m_Series; } } public float chartWidth { get { return m_ChartWidth; } } public float chartHeight { get { return m_ChartHeight; } } /// /// The min number of data to show in chart. /// public int minShowDataNumber { get { return m_MinShowDataNumber; } set { m_MinShowDataNumber = value; if (m_MinShowDataNumber < 0) m_MinShowDataNumber = 0; } } /// /// The max number of data to show in chart. /// public int maxShowDataNumber { get { return m_MaxShowDataNumber; } set { m_MaxShowDataNumber = value; if (m_MaxShowDataNumber < 0) m_MaxShowDataNumber = 0; } } /// /// The max number of serie and axis data cache. /// The first data will be remove when the size of serie and axis data is larger then maxCacheDataNumber. /// default:0,unlimited. /// public int maxCacheDataNumber { get { return m_MaxCacheDataNumber; } set { m_MaxCacheDataNumber = value; if (m_MaxCacheDataNumber < 0) m_MaxCacheDataNumber = 0; } } /// /// Set the size of chart. /// /// width /// height public virtual void SetSize(float width, float height) { m_ChartWidth = width; m_ChartHeight = height; m_CheckWidth = width; m_CheckHeight = height; rectTransform.sizeDelta = new Vector2(m_ChartWidth, m_ChartHeight); OnSizeChanged(); } /// /// Remove all series and legend data. /// It just emptying all of serie's data without emptying the list of series. /// public virtual void ClearData() { m_Series.ClearData(); m_Legend.ClearData(); RefreshChart(); } /// /// Remove legend and serie by name. /// /// the name of serie public virtual void RemoveData(string serieName) { m_Series.Remove(serieName); m_Legend.RemoveData(serieName); RefreshChart(); } /// /// Remove all data from series and legend. /// The series list is also cleared. /// public virtual void RemoveData() { m_Legend.ClearData(); m_Series.RemoveAll(); RefreshChart(); } /// /// Add a serie to serie list. /// /// the name of serie /// the type of serie /// whether to show this serie /// the added serie public virtual Serie AddSerie(string serieName, SerieType type, bool show = true) { m_Legend.AddData(serieName); return m_Series.AddSerie(serieName, type); } /// /// Add a data to serie. /// If serieName doesn't exist in legend,will be add to legend. /// /// the name of serie /// the data to add /// the name of data /// Returns True on success public virtual bool AddData(string serieName, float data, string dataName = null) { m_Legend.AddData(serieName); var success = m_Series.AddData(serieName, data, dataName, m_MaxCacheDataNumber); if (success) RefreshChart(); return success; } /// /// Add a data to serie. /// /// the index of serie /// the data to add /// the name of data /// Returns True on success public virtual bool AddData(int serieIndex, float data, string dataName = null) { var success = m_Series.AddData(serieIndex, data, dataName, m_MaxCacheDataNumber); if (success) RefreshChart(); return success; } /// /// Add an arbitray dimension data to serie,such as (x,y,z,...). /// /// the name of serie /// the (x,y,z,...) data /// the name of data /// Returns True on success public virtual bool AddData(string serieName, List multidimensionalData, string dataName = null) { var success = m_Series.AddData(serieName, multidimensionalData, dataName, m_MaxCacheDataNumber); if (success) RefreshChart(); return success; } /// /// Add an arbitray dimension data to serie,such as (x,y,z,...). /// /// the index of serie,index starts at 0 /// the (x,y,z,...) data /// the name of data /// Returns True on success public virtual bool AddData(int serieIndex, List multidimensionalData, string dataName = null) { var success = m_Series.AddData(serieIndex, multidimensionalData, dataName, m_MaxCacheDataNumber); if (success) RefreshChart(); return success; } /// /// Add a (x,y) data to serie. /// /// the name of serie /// x data /// y data /// the name of data /// Returns True on success public virtual bool AddData(string serieName, float xValue, float yValue, string dataName) { var success = m_Series.AddXYData(serieName, xValue, yValue, dataName, m_MaxCacheDataNumber); if (success) RefreshChart(); return true; } /// /// Add a (x,y) data to serie. /// /// the index of serie /// x data /// y data /// the name of data /// Returns True on success public virtual bool AddData(int serieIndex, float xValue, float yValue, string dataName = null) { var success = m_Series.AddXYData(serieIndex, xValue, yValue, dataName, m_MaxCacheDataNumber); if (success) RefreshChart(); return success; } /// /// Update serie data by serie name. /// /// the name of serie /// the data will be update /// the index of data public virtual void UpdateData(string serieName, float value, int dataIndex = 0) { m_Series.UpdateData(serieName, value, dataIndex); RefreshChart(); } /// /// Update serie data by serie index. /// /// the index of serie /// the data will be update /// the index of data public virtual void UpdateData(int serieIndex, float value, int dataIndex = 0) { m_Series.UpdateData(serieIndex, value, dataIndex); RefreshChart(); } /// /// Whether to show serie and legend. /// /// the name of serie /// Active or not public virtual void SetActive(string serieName, bool active) { var serie = m_Series.GetSerie(serieName); if (serie != null) { SetActive(serie.index, active); } } /// /// Whether to show serie and legend. /// /// the index of serie /// Active or not public virtual void SetActive(int serieIndex, bool active) { m_Series.SetActive(serieIndex, active); var serie = m_Series.GetSerie(serieIndex); if (serie != null && !string.IsNullOrEmpty(serie.name)) { var bgColor1 = active ? m_ThemeInfo.GetColor(serie.index) : m_ThemeInfo.legendUnableColor; m_Legend.UpdateButtonColor(serie.name, bgColor1); } } /// /// Whether serie is activated. /// /// the name of serie /// True when activated public virtual bool IsActive(string serieName) { return m_Series.IsActive(serieName); } /// /// Whether serie is activated. /// /// the index of serie /// True when activated public virtual bool IsActive(int serieIndex) { return m_Series.IsActive(serieIndex); } public virtual bool IsLegendActive(string legendName) { return IsActive(legendName); } /// /// Redraw chart next frame. /// public void RefreshChart() { m_RefreshChart = true; } /// /// Update chart theme /// /// theme public void UpdateTheme(Theme theme) { m_ThemeInfo.theme = theme; OnThemeChanged(); RefreshChart(); } } }