mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-14 20:00:09 +00:00
3.0
This commit is contained in:
@@ -19,12 +19,14 @@ namespace XCharts.Editor
|
||||
internal List<HeaderMenuInfo> menus = new List<HeaderMenuInfo>();
|
||||
protected Dictionary<string, Type> m_CoordOptionsDic;
|
||||
protected List<string> m_CoordOptionsNames;
|
||||
private string m_DisplayName;
|
||||
|
||||
internal void Init(BaseChart chart, Serie target, SerializedProperty property, UnityEditor.Editor inspector)
|
||||
{
|
||||
this.chart = chart;
|
||||
this.serie = target;
|
||||
this.baseProperty = property;
|
||||
m_DisplayName = string.Format("serie {0}: {1}", serie.index, serie.GetType().Name);
|
||||
//m_Inspector = inspector;
|
||||
showProperty = baseProperty.FindPropertyRelative("m_Show");
|
||||
if (showProperty == null)
|
||||
@@ -83,8 +85,9 @@ namespace XCharts.Editor
|
||||
|
||||
public virtual string GetDisplayTitle()
|
||||
{
|
||||
var title = string.Format("serie {0}: {1}", serie.index, serie.GetType().Name);
|
||||
return ObjectNames.NicifyVariableName(title);
|
||||
// var title = string.Format("serie {0}: {1}", serie.index, serie.GetType().Name);
|
||||
// return ObjectNames.NicifyVariableName(title);
|
||||
return m_DisplayName;
|
||||
}
|
||||
|
||||
internal SerializedProperty FindProperty(string path)
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace XCharts.Editor
|
||||
title,
|
||||
editor.baseProperty,
|
||||
editor.showProperty,
|
||||
editor.menus.ToArray());
|
||||
editor.menus);
|
||||
if (displayContent)
|
||||
{
|
||||
editor.OnInternalInspectorGUI();
|
||||
|
||||
@@ -540,7 +540,54 @@ namespace XCharts.Editor
|
||||
Action<Rect> drawCallback, params HeaderMenuInfo[] menus)
|
||||
{
|
||||
var rect = GUILayoutUtility.GetRect(1f, HEADER_HEIGHT);
|
||||
var labelRect = DrawHeaderInternal(rect, title, state, drawBackground, activeField);
|
||||
DrawMenu(rect, menus);
|
||||
if (drawCallback != null)
|
||||
{
|
||||
drawCallback(rect);
|
||||
}
|
||||
var e = Event.current;
|
||||
if (e.type == EventType.MouseDown)
|
||||
{
|
||||
if (labelRect.Contains(e.mousePosition))
|
||||
{
|
||||
if (e.button == 0)
|
||||
{
|
||||
state = !state;
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
internal static bool DrawHeader(string title, bool state, bool drawBackground, SerializedProperty activeField,
|
||||
Action<Rect> drawCallback, List<HeaderMenuInfo> menus)
|
||||
{
|
||||
var rect = GUILayoutUtility.GetRect(1f, HEADER_HEIGHT);
|
||||
var labelRect = DrawHeaderInternal(rect, title, state, drawBackground, activeField);
|
||||
DrawMenu(rect, menus);
|
||||
if (drawCallback != null)
|
||||
{
|
||||
drawCallback(rect);
|
||||
}
|
||||
var e = Event.current;
|
||||
if (e.type == EventType.MouseDown)
|
||||
{
|
||||
if (labelRect.Contains(e.mousePosition))
|
||||
{
|
||||
if (e.button == 0)
|
||||
{
|
||||
state = !state;
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
private static Rect DrawHeaderInternal(Rect rect, string title, bool state, bool drawBackground, SerializedProperty activeField)
|
||||
{
|
||||
var splitRect = rect;
|
||||
splitRect.x = EditorGUI.indentLevel * INDENT_WIDTH + 4;
|
||||
splitRect.xMax = rect.xMax;
|
||||
@@ -576,24 +623,7 @@ namespace XCharts.Editor
|
||||
toggleRect.height = 13f;
|
||||
activeField.boolValue = GUI.Toggle(toggleRect, activeField.boolValue, GUIContent.none);
|
||||
}
|
||||
DrawMenu(rect, menus);
|
||||
if (drawCallback != null)
|
||||
{
|
||||
drawCallback(rect);
|
||||
}
|
||||
var e = Event.current;
|
||||
if (e.type == EventType.MouseDown)
|
||||
{
|
||||
if (labelRect.Contains(e.mousePosition))
|
||||
{
|
||||
if (e.button == 0)
|
||||
{
|
||||
state = !state;
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
}
|
||||
return state;
|
||||
return labelRect;
|
||||
}
|
||||
|
||||
internal static bool DrawHeader(string title, SerializedProperty group, SerializedProperty activeField,
|
||||
@@ -612,6 +642,13 @@ namespace XCharts.Editor
|
||||
return group.isExpanded;
|
||||
}
|
||||
|
||||
internal static bool DrawHeader(string title, SerializedProperty group, SerializedProperty activeField,
|
||||
List<HeaderMenuInfo> menus)
|
||||
{
|
||||
group.isExpanded = DrawHeader(title, group.isExpanded, false, activeField, null, menus);
|
||||
return group.isExpanded;
|
||||
}
|
||||
|
||||
internal static void DrawMenu(Rect parentRect, params HeaderMenuInfo[] menus)
|
||||
{
|
||||
if (menus == null || menus.Length <= 0) return;
|
||||
@@ -638,6 +675,32 @@ namespace XCharts.Editor
|
||||
}
|
||||
}
|
||||
|
||||
internal static void DrawMenu(Rect parentRect, List<HeaderMenuInfo> menus)
|
||||
{
|
||||
if (menus == null || menus.Count <= 0) return;
|
||||
var menuIcon = EditorCustomStyles.paneOptionsIcon;
|
||||
var menuRect = new Rect(parentRect.xMax - menuIcon.width, parentRect.y + 2f,
|
||||
menuIcon.width, menuIcon.height);
|
||||
GUI.DrawTexture(menuRect, menuIcon);
|
||||
var e = Event.current;
|
||||
if (e.type == EventType.MouseDown)
|
||||
{
|
||||
if (menuRect.Contains(e.mousePosition))
|
||||
{
|
||||
ShowHeaderContextMenu(new Vector2(menuRect.x, menuRect.yMax), menus);
|
||||
e.Use();
|
||||
}
|
||||
else if (parentRect.Contains(e.mousePosition))
|
||||
{
|
||||
if (e.button != 0)
|
||||
{
|
||||
ShowHeaderContextMenu(e.mousePosition, menus);
|
||||
e.Use();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ShowHeaderContextMenu(Vector2 position, params HeaderMenuInfo[] menus)
|
||||
{
|
||||
if (menus == null || menus.Length <= 0) return;
|
||||
@@ -651,5 +714,18 @@ namespace XCharts.Editor
|
||||
}
|
||||
menu.DropDown(new Rect(position, Vector2.zero));
|
||||
}
|
||||
static void ShowHeaderContextMenu(Vector2 position, List<HeaderMenuInfo> menus)
|
||||
{
|
||||
if (menus == null || menus.Count <= 0) return;
|
||||
var menu = new GenericMenu();
|
||||
foreach (var info in menus)
|
||||
{
|
||||
if (info.enable)
|
||||
menu.AddItem(GetContent(info.name), false, () => info.action());
|
||||
else
|
||||
menu.AddDisabledItem(GetContent(info.name));
|
||||
}
|
||||
menu.DropDown(new Rect(position, Vector2.zero));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -553,8 +553,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
while (m_Data.Count >= maxCache)
|
||||
{
|
||||
context.isNeedUpdateFilterData = true;
|
||||
m_Data.RemoveAt(m_InsertDataToHead ? m_Data.Count - 1 : 0);
|
||||
RemoveData(m_InsertDataToHead ? m_Data.Count - 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -566,6 +565,12 @@ namespace XCharts.Runtime
|
||||
SetAllDirty();
|
||||
}
|
||||
|
||||
public void RemoveData(int dataIndex)
|
||||
{
|
||||
context.isNeedUpdateFilterData = true;
|
||||
m_Data.RemoveAt(dataIndex);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新类目数据
|
||||
/// </summary>
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace XCharts
|
||||
return;
|
||||
if (!grid.context.isPointerEnter)
|
||||
{
|
||||
axis.context.pointerValue = double.PositiveInfinity;
|
||||
axis.context.pointerValue = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -44,11 +44,11 @@ namespace XCharts
|
||||
var dataZoom = chart.GetDataZoomOfAxis(axis);
|
||||
var dataCount = chart.series.Count > 0 ? chart.series[0].GetDataList(dataZoom).Count : 0;
|
||||
var local = chart.pointerPos;
|
||||
for (int j = 0; j < axis.GetDataCount(dataZoom); j++)
|
||||
if (axis is YAxis)
|
||||
{
|
||||
if (axis is YAxis)
|
||||
float splitWid = AxisHelper.GetDataWidth(axis, grid.context.height, dataCount, dataZoom);
|
||||
for (int j = 0; j < axis.GetDataCount(dataZoom); j++)
|
||||
{
|
||||
float splitWid = AxisHelper.GetDataWidth(axis, grid.context.height, dataCount, dataZoom);
|
||||
float pY = grid.context.y + j * splitWid;
|
||||
if ((axis.boundaryGap && (local.y > pY && local.y <= pY + splitWid))
|
||||
|| (!axis.boundaryGap && (local.y > pY - splitWid / 2 && local.y <= pY + splitWid / 2)))
|
||||
@@ -63,9 +63,12 @@ namespace XCharts
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
float splitWid = AxisHelper.GetDataWidth(axis, grid.context.width, dataCount, dataZoom);
|
||||
for (int j = 0; j < axis.GetDataCount(dataZoom); j++)
|
||||
{
|
||||
float splitWid = AxisHelper.GetDataWidth(axis, grid.context.width, dataCount, dataZoom);
|
||||
float pX = grid.context.x + j * splitWid;
|
||||
if ((axis.boundaryGap && (local.x > pX && local.x <= pX + splitWid))
|
||||
|| (!axis.boundaryGap && (local.x > pX - splitWid / 2 && local.x <= pX + splitWid / 2)))
|
||||
@@ -87,7 +90,6 @@ namespace XCharts
|
||||
if (axis is YAxis)
|
||||
{
|
||||
var yRate = axis.context.minMaxRange / grid.context.height;
|
||||
|
||||
var yValue = yRate * (chart.pointerPos.y - grid.context.y - axis.context.offset);
|
||||
if (axis.context.minValue > 0)
|
||||
yValue += axis.context.minValue;
|
||||
@@ -104,7 +106,6 @@ namespace XCharts
|
||||
else
|
||||
{
|
||||
var xRate = axis.context.minMaxRange / grid.context.width;
|
||||
|
||||
var xValue = xRate * (chart.pointerPos.x - grid.context.x - axis.context.offset);
|
||||
if (axis.context.minValue > 0)
|
||||
xValue += axis.context.minValue;
|
||||
|
||||
@@ -74,7 +74,6 @@ namespace XCharts.Runtime
|
||||
return Vector3.zero;
|
||||
|
||||
var yAxis = chart.GetChartComponent<YAxis>(component.index);
|
||||
|
||||
return GetLabelPosition(i, Orient.Horizonal, component, yAxis,
|
||||
chart.theme.axis,
|
||||
scaleWid,
|
||||
|
||||
@@ -431,6 +431,7 @@ namespace XCharts.Runtime
|
||||
if (m_PointerContainer is GridCoord)
|
||||
{
|
||||
var grid = m_PointerContainer as GridCoord;
|
||||
if (!grid.context.isPointerEnter) return;
|
||||
if (IsYCategoryOfGrid(grid.index))
|
||||
DrawYAxisIndicator(vh, tooltip, grid);
|
||||
else
|
||||
|
||||
@@ -6,12 +6,12 @@ namespace XCharts.Runtime
|
||||
{
|
||||
public class ChartLabel : Image
|
||||
{
|
||||
[SerializeField] private ChartText m_LabelText;
|
||||
|
||||
private bool m_AutoHideIconWhenLabelEmpty = false;
|
||||
private bool m_LabelAutoSize = true;
|
||||
private float m_LabelPaddingLeftRight = 3f;
|
||||
private float m_LabelPaddingTopBottom = 3f;
|
||||
|
||||
private ChartText m_LabelText;
|
||||
private RectTransform m_LabelRect;
|
||||
private RectTransform m_LabelBackgroundRect;
|
||||
private RectTransform m_IconRect;
|
||||
|
||||
@@ -7,6 +7,7 @@ using TMPro;
|
||||
|
||||
namespace XCharts.Runtime
|
||||
{
|
||||
[System.Serializable]
|
||||
public class ChartText
|
||||
{
|
||||
private float m_ExtraWidth;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
|
||||
namespace XCharts.Runtime
|
||||
{
|
||||
internal static class XAxisPool
|
||||
{
|
||||
private static readonly ObjectPool<XAxis> s_ListPool = new ObjectPool<XAxis>(null, null);
|
||||
|
||||
public static XAxis Get()
|
||||
{
|
||||
return s_ListPool.Get();
|
||||
}
|
||||
|
||||
public static void Release(XAxis toRelease)
|
||||
{
|
||||
s_ListPool.Release(toRelease);
|
||||
}
|
||||
}
|
||||
|
||||
internal static class YAxisPool
|
||||
{
|
||||
private static readonly ObjectPool<YAxis> s_ListPool = new ObjectPool<YAxis>(null, null);
|
||||
|
||||
public static YAxis Get()
|
||||
{
|
||||
return s_ListPool.Get();
|
||||
}
|
||||
|
||||
public static void Release(YAxis toRelease)
|
||||
{
|
||||
s_ListPool.Release(toRelease);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a709ca44e9a445bd86bde1bbfae80de
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -7,6 +7,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
internal class ObjectPool<T> where T : new()
|
||||
{
|
||||
private readonly bool m_NewIfEmpty = true;
|
||||
private readonly Stack<T> m_Stack = new Stack<T>();
|
||||
private readonly UnityAction<T> m_ActionOnGet;
|
||||
private readonly UnityAction<T> m_ActionOnRelease;
|
||||
@@ -15,8 +16,9 @@ namespace XCharts.Runtime
|
||||
public int countActive { get { return countAll - countInactive; } }
|
||||
public int countInactive { get { return m_Stack.Count; } }
|
||||
|
||||
public ObjectPool(UnityAction<T> actionOnGet, UnityAction<T> actionOnRelease)
|
||||
public ObjectPool(UnityAction<T> actionOnGet, UnityAction<T> actionOnRelease, bool newIfEmpty = true)
|
||||
{
|
||||
m_NewIfEmpty = newIfEmpty;
|
||||
m_ActionOnGet = actionOnGet;
|
||||
m_ActionOnRelease = actionOnRelease;
|
||||
}
|
||||
@@ -26,6 +28,7 @@ namespace XCharts.Runtime
|
||||
T element;
|
||||
if (m_Stack.Count == 0)
|
||||
{
|
||||
if (!m_NewIfEmpty) return default(T);
|
||||
element = new T();
|
||||
countAll++;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace XCharts.Runtime
|
||||
{
|
||||
@@ -37,15 +36,6 @@ namespace XCharts.Runtime
|
||||
return element;
|
||||
}
|
||||
|
||||
private static GameObject CreateSerieLabel(string name, Transform parent, LabelStyle label, Color color,
|
||||
float iconWidth, float iconHeight, ThemeStyle theme)
|
||||
{
|
||||
var element = ChartHelper.AddSerieLabel(name, parent, label.backgroundWidth, label.backgroundHeight,
|
||||
color, label.textStyle, theme);
|
||||
ChartHelper.AddIcon("Icon", element.transform, iconWidth, iconHeight);
|
||||
return element;
|
||||
}
|
||||
|
||||
public static void Release(GameObject element)
|
||||
{
|
||||
if (element == null) return;
|
||||
@@ -72,5 +62,14 @@ namespace XCharts.Runtime
|
||||
m_Stack.Clear();
|
||||
m_ReleaseDic.Clear();
|
||||
}
|
||||
|
||||
private static GameObject CreateSerieLabel(string name, Transform parent, LabelStyle label, Color color,
|
||||
float iconWidth, float iconHeight, ThemeStyle theme)
|
||||
{
|
||||
var element = ChartHelper.AddSerieLabel(name, parent, label.backgroundWidth, label.backgroundHeight,
|
||||
color, label.textStyle, theme);
|
||||
ChartHelper.AddIcon("Icon", element.transform, iconWidth, iconHeight);
|
||||
return element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,11 +233,12 @@ namespace XCharts.Runtime
|
||||
}
|
||||
|
||||
public static ChartText AddTextObject(string name, Transform parent, Vector2 anchorMin, Vector2 anchorMax,
|
||||
Vector2 pivot, Vector2 sizeDelta, TextStyle textStyle, ComponentTheme theme)
|
||||
Vector2 pivot, Vector2 sizeDelta, TextStyle textStyle, ComponentTheme theme, ChartText chartText = null)
|
||||
{
|
||||
GameObject txtObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
|
||||
txtObj.transform.localEulerAngles = new Vector3(0, 0, textStyle.rotate);
|
||||
var chartText = new ChartText();
|
||||
if(chartText == null)
|
||||
chartText = new ChartText();
|
||||
#if dUI_TextMeshPro
|
||||
RemoveComponent<Text>(txtObj);
|
||||
chartText.tmpText = GetOrAddComponent<TextMeshProUGUI>(txtObj);
|
||||
@@ -377,9 +378,11 @@ namespace XCharts.Runtime
|
||||
var sizeDelta = new Vector2(width, height);
|
||||
GameObject iconObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
|
||||
var img = GetOrAddComponent<Image>(iconObj);
|
||||
img.raycastTarget = false;
|
||||
img.type = type;
|
||||
if (sprite != null)
|
||||
if (img.raycastTarget != false)
|
||||
img.raycastTarget = false;
|
||||
if (img.type != type)
|
||||
img.type = type;
|
||||
if (sprite != null && img.sprite != sprite)
|
||||
{
|
||||
img.sprite = sprite;
|
||||
if (width == 0 || height == 0)
|
||||
@@ -398,15 +401,14 @@ namespace XCharts.Runtime
|
||||
var iconStyle = axis.iconStyle;
|
||||
var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
|
||||
var label = GetOrAddComponent<ChartLabel>(labelObj);
|
||||
|
||||
var labelShow = axis.axisLabel.show && (axis.axisLabel.interval == 0 || index % (axis.axisLabel.interval + 1) == 0);
|
||||
if (labelShow)
|
||||
{
|
||||
if (!axis.axisLabel.showStartLabel && index == 0) labelShow = false;
|
||||
else if (!axis.axisLabel.showEndLabel && index == total - 1) labelShow = false;
|
||||
}
|
||||
label.label = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme);
|
||||
label.icon = ChartHelper.AddIcon("Icon", label.gameObject.transform, iconStyle.width, iconStyle.height);
|
||||
label.label = AddTextObject("Text", label.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme, label.label);
|
||||
label.icon = ChartHelper.AddIcon("Icon", label.transform, iconStyle.width, iconStyle.height);
|
||||
label.SetAutoSize(false);
|
||||
label.UpdateIcon(iconStyle, axis.GetIcon(index));
|
||||
label.label.SetActive(labelShow);
|
||||
@@ -421,7 +423,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
|
||||
var label = GetOrAddComponent<ChartLabel>(labelObj);
|
||||
label.label = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme);
|
||||
label.label = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme, label.label);
|
||||
label.icon = ChartHelper.AddIcon("Icon", label.gameObject.transform, 0, 0);
|
||||
label.SetAutoSize(true);
|
||||
label.label.SetActive(true);
|
||||
@@ -468,7 +470,7 @@ namespace XCharts.Runtime
|
||||
var label = GetOrAddComponent<ChartLabel>(labelGameObject);
|
||||
label.labelBackground = ChartHelper.AddIcon("Background", label.gameObject.transform, 50, 20);
|
||||
label.labelBackground.color = Color.black;
|
||||
label.label = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme.tooltip);
|
||||
label.label = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot, sizeDelta, textStyle, theme.tooltip, label.label);
|
||||
label.SetAutoSize(true);
|
||||
label.SetText("");
|
||||
label.color = textStyle.color;
|
||||
|
||||
@@ -14,20 +14,19 @@ namespace XCharts.Runtime
|
||||
{
|
||||
List<List<SerieData>> m_StackSerieData = new List<List<SerieData>>();
|
||||
private GridCoord m_SerieGrid;
|
||||
private float m_LastLineWidth = 0f;
|
||||
|
||||
private void UpdateSerieGridContext()
|
||||
{
|
||||
if (m_SerieGrid == null)
|
||||
return;
|
||||
|
||||
var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter;
|
||||
var lineWidth = 0f;
|
||||
var lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth);
|
||||
var needCheck = (chart.isPointerInChart && m_SerieGrid.IsPointerEnter()) || m_LegendEnter || m_LastLineWidth != lineWidth;
|
||||
if (!needCheck)
|
||||
{
|
||||
if (m_LastCheckContextFlag != needCheck)
|
||||
{
|
||||
var needAnimation1 = false;
|
||||
lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth);
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
@@ -49,11 +48,10 @@ namespace XCharts.Runtime
|
||||
}
|
||||
return;
|
||||
}
|
||||
m_LastLineWidth = lineWidth;
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
var themeSymbolSize = chart.theme.serie.lineSymbolSize;
|
||||
var themeSymbolSelectedSize = chart.theme.serie.lineSymbolSelectedSize;
|
||||
lineWidth = serie.lineStyle.GetWidth(chart.theme.serie.lineWidth);
|
||||
|
||||
var needInteract = false;
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
|
||||
@@ -998,11 +998,22 @@ namespace XCharts.Runtime
|
||||
get
|
||||
{
|
||||
double total = 0;
|
||||
var duration = animation.GetUpdateAnimationDuration();
|
||||
foreach (var sdata in data)
|
||||
if (IsPerformanceMode())
|
||||
{
|
||||
if (sdata.show && !IsIgnoreValue(sdata.data[1]))
|
||||
total += sdata.GetCurrData(1, duration);
|
||||
foreach (var sdata in data)
|
||||
{
|
||||
if (sdata.show && !IsIgnoreValue(sdata.data[1]))
|
||||
total += sdata.data[1];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var duration = animation.GetUpdateAnimationDuration();
|
||||
foreach (var sdata in data)
|
||||
{
|
||||
if (sdata.show && !IsIgnoreValue(sdata.data[1]))
|
||||
total += sdata.GetCurrData(1, duration);
|
||||
}
|
||||
}
|
||||
return total;
|
||||
}
|
||||
@@ -1590,14 +1601,11 @@ namespace XCharts.Runtime
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否为性能模式。只有折线图和柱状图才有性能模式。性能模式下不绘制Symbol,不刷新Label,不单独设置数据项配置。
|
||||
/// 是否为性能模式。性能模式下不绘制Symbol,不刷新Label,不单独设置数据项配置。
|
||||
/// </summary>
|
||||
public bool IsPerformanceMode()
|
||||
{
|
||||
if (IsSerie<Line>() || IsSerie<Bar>())
|
||||
return m_Large && m_Data.Count > m_LargeThreshold;
|
||||
else
|
||||
return false;
|
||||
return m_Large && m_Data.Count > m_LargeThreshold;
|
||||
}
|
||||
|
||||
public bool IsLegendName(string legendName)
|
||||
|
||||
Reference in New Issue
Block a user