diff --git a/Scripts/Editor/PropertyDrawers/AxisDrawer.cs b/Scripts/Editor/PropertyDrawers/AxisDrawer.cs index 023067cf..377bc7df 100644 --- a/Scripts/Editor/PropertyDrawers/AxisDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/AxisDrawer.cs @@ -113,7 +113,7 @@ namespace XCharts { drawRect.width = EditorGUIUtility.labelWidth + 10; m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data"); - ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop); + ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width); drawRect.width = pos.width; if (m_DataFoldout[index]) { diff --git a/Scripts/Editor/PropertyDrawers/LegendDrawer.cs b/Scripts/Editor/PropertyDrawers/LegendDrawer.cs index 7b58a7ad..2f173002 100644 --- a/Scripts/Editor/PropertyDrawers/LegendDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/LegendDrawer.cs @@ -44,7 +44,7 @@ namespace XCharts drawRect.y += EditorGUI.GetPropertyHeight(location); drawRect.width = EditorGUIUtility.labelWidth + 10; m_DataFoldout = EditorGUI.Foldout(drawRect, m_DataFoldout, "Data"); - ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop); + ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop,pos.width); drawRect.width = pos.width; if (m_DataFoldout) { diff --git a/Scripts/Editor/PropertyDrawers/LocationDrawer.cs b/Scripts/Editor/PropertyDrawers/LocationDrawer.cs index de38fd14..1a075a7a 100644 --- a/Scripts/Editor/PropertyDrawers/LocationDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/LocationDrawer.cs @@ -72,14 +72,14 @@ namespace XCharts switch ((Location.Align)align.enumValueIndex) { case Location.Align.Center: - return 1 * EditorGUIUtility.singleLineHeight + 0 * EditorGUIUtility.standardVerticalSpacing; + return 1 * EditorGUIUtility.singleLineHeight + 1 * EditorGUIUtility.standardVerticalSpacing; case Location.Align.TopCenter: case Location.Align.BottomCenter: case Location.Align.CenterLeft: case Location.Align.CenterRight: - return 2 * EditorGUIUtility.singleLineHeight + 1 * EditorGUIUtility.standardVerticalSpacing; + return 2 * EditorGUIUtility.singleLineHeight + 2 * EditorGUIUtility.standardVerticalSpacing; default: - return 3 * EditorGUIUtility.singleLineHeight + 2 * EditorGUIUtility.standardVerticalSpacing; + return 3 * EditorGUIUtility.singleLineHeight + 3 * EditorGUIUtility.standardVerticalSpacing; } } } diff --git a/Scripts/Editor/PropertyDrawers/RadarDrawer.cs b/Scripts/Editor/PropertyDrawers/RadarDrawer.cs index 300d949e..60ebc0ef 100644 --- a/Scripts/Editor/PropertyDrawers/RadarDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/RadarDrawer.cs @@ -112,7 +112,7 @@ namespace XCharts } drawRect.width = EditorGUIUtility.labelWidth + 10; m_IndicatorToggle = EditorGUI.Foldout(drawRect, m_IndicatorToggle, "Indicators"); - ChartEditorHelper.MakeJsonData(ref drawRect, ref m_IndicatorJsonAreaToggle, ref m_IndicatorJsonAreaText, prop); + ChartEditorHelper.MakeJsonData(ref drawRect, ref m_IndicatorJsonAreaToggle, ref m_IndicatorJsonAreaText, prop,pos.width); drawRect.width = pos.width; if (m_IndicatorToggle) { diff --git a/Scripts/Editor/PropertyDrawers/SerieDrawer.cs b/Scripts/Editor/PropertyDrawers/SerieDrawer.cs index 995d9a51..5d0d1481 100644 --- a/Scripts/Editor/PropertyDrawers/SerieDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/SerieDrawer.cs @@ -51,17 +51,22 @@ namespace XCharts EditorGUI.PropertyField(drawRect, m_Symbol); drawRect.y += EditorGUI.GetPropertyHeight(m_Symbol); } - drawRect.width = EditorGUIUtility.labelWidth + 10; m_DataFoldout[index] = EditorGUI.Foldout(drawRect, m_DataFoldout[index], "Data"); - ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop); + ChartEditorHelper.MakeJsonData(ref drawRect, ref m_ShowJsonDataArea, ref m_JsonDataAreaText, prop, pos.width); drawRect.width = pos.width; if (m_DataFoldout[index]) { EditorGUI.indentLevel++; - EditorGUI.PropertyField(drawRect, m_ShowDataName); - drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; - EditorGUI.PropertyField(drawRect, m_DataDimension); + + float nameWid = 76; + EditorGUI.PropertyField(new Rect(drawRect.x, drawRect.y, pos.width - nameWid - 2, pos.height), m_DataDimension); + var nameRect = new Rect(pos.width - nameWid + 14, drawRect.y, nameWid, pos.height); + var btnName = m_ShowDataName.boolValue ? "Hide Name" : "Show Name"; + if (GUI.Button(nameRect, new GUIContent(btnName))) + { + m_ShowDataName.boolValue = !m_ShowDataName.boolValue; + } drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; var listSize = m_Datas.arraySize; @@ -84,20 +89,20 @@ namespace XCharts int num = listSize > 10 ? 10 : listSize; for (int i = 0; i < num; i++) { - DrawDataElement(ref drawRect, dimension, m_Datas, showName, i); + DrawDataElement(ref drawRect, dimension, m_Datas, showName, i, pos.width); } if (num >= 10) { EditorGUI.LabelField(drawRect, "..."); drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; - DrawDataElement(ref drawRect, dimension, m_Datas, showName, listSize - 1); + DrawDataElement(ref drawRect, dimension, m_Datas, showName, listSize - 1, pos.width); } } else { for (int i = 0; i < m_Datas.arraySize; i++) { - DrawDataElement(ref drawRect, dimension, m_Datas, showName, i); + DrawDataElement(ref drawRect, dimension, m_Datas, showName, i, pos.width); } } EditorGUI.indentLevel--; @@ -106,7 +111,7 @@ namespace XCharts } } - private void DrawDataElement(ref Rect drawRect, int dimension, SerializedProperty m_Datas, bool showName, int index) + private void DrawDataElement(ref Rect drawRect, int dimension, SerializedProperty m_Datas, bool showName, int index, float currentWidth) { var lastX = drawRect.x; var lastWid = drawRect.width; @@ -128,8 +133,8 @@ namespace XCharts else { EditorGUI.LabelField(drawRect, "Element " + index); - var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15 - 1; - var dataWidTotal = (EditorGUIUtility.currentViewWidth - (startX + EditorGUI.indentLevel * 15 + 1) - 5); + var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15; + var dataWidTotal = (currentWidth - (startX + 20.5f + 1)); var dataWid = dataWidTotal / fieldCount; var xWid = dataWid - 4; for (int i = 0; i < dimension; i++) @@ -171,7 +176,7 @@ namespace XCharts { height += 6 * EditorGUIUtility.singleLineHeight + 5 * EditorGUIUtility.standardVerticalSpacing; SerializedProperty type = prop.FindPropertyRelative("m_Type"); - if (type.enumValueIndex == (int)SerieType.Line + if (type.enumValueIndex == (int)SerieType.Line || type.enumValueIndex == (int)SerieType.Scatter || type.enumValueIndex == (int)SerieType.EffectScatter) { @@ -181,7 +186,7 @@ namespace XCharts if (m_DataFoldout[index]) { SerializedProperty m_Data = prop.FindPropertyRelative("m_Data"); - int num = m_Data.arraySize + 3; + int num = m_Data.arraySize + 2; if (num > 30) num = 13; height += num * EditorGUIUtility.singleLineHeight + (num - 1) * EditorGUIUtility.standardVerticalSpacing; } diff --git a/Scripts/Editor/PropertyDrawers/SerieSymbolDrawer.cs b/Scripts/Editor/PropertyDrawers/SerieSymbolDrawer.cs index d3bebb2f..b5699774 100644 --- a/Scripts/Editor/PropertyDrawers/SerieSymbolDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/SerieSymbolDrawer.cs @@ -62,13 +62,13 @@ namespace XCharts switch (sizeType) { case SerieSymbolSizeType.Custom: - return 4 * EditorGUIUtility.singleLineHeight + 3 * EditorGUIUtility.standardVerticalSpacing; + return 4 * EditorGUIUtility.singleLineHeight + 4 * EditorGUIUtility.standardVerticalSpacing; case SerieSymbolSizeType.FromData: - return 5 * EditorGUIUtility.singleLineHeight + 4 * EditorGUIUtility.standardVerticalSpacing; + return 5 * EditorGUIUtility.singleLineHeight + 5 * EditorGUIUtility.standardVerticalSpacing; case SerieSymbolSizeType.Callback: - return 4 * EditorGUIUtility.singleLineHeight + 3 * EditorGUIUtility.standardVerticalSpacing; + return 4 * EditorGUIUtility.singleLineHeight + 4 * EditorGUIUtility.standardVerticalSpacing; } - return 4 * EditorGUIUtility.singleLineHeight + 3 * EditorGUIUtility.standardVerticalSpacing; + return 4 * EditorGUIUtility.singleLineHeight + 4 * EditorGUIUtility.standardVerticalSpacing; } } } \ No newline at end of file diff --git a/Scripts/Editor/PropertyDrawers/ThemeInfoDrawer.cs b/Scripts/Editor/PropertyDrawers/ThemeInfoDrawer.cs index f96da996..92c22c65 100644 --- a/Scripts/Editor/PropertyDrawers/ThemeInfoDrawer.cs +++ b/Scripts/Editor/PropertyDrawers/ThemeInfoDrawer.cs @@ -58,11 +58,11 @@ namespace XCharts ChartEditorHelper.MakeFoldout(ref drawRect, ref m_ThemeModuleToggle, "Theme"); drawRect.x = EditorGUIUtility.labelWidth - (EditorGUI.indentLevel - 1) * 15 - 2; - drawRect.width = EditorGUIUtility.currentViewWidth - EditorGUIUtility.labelWidth - (m_ThemeModuleToggle ? 80 : 18); + drawRect.width = defaultWidth - EditorGUIUtility.labelWidth - (m_ThemeModuleToggle ? 45 : 0); EditorGUI.PropertyField(drawRect, m_Theme, GUIContent.none); if (m_ThemeModuleToggle) { - drawRect.x = EditorGUIUtility.currentViewWidth - 65; + drawRect.x = defaultWidth - 30; drawRect.width = 45; if (GUI.Button(drawRect, new GUIContent("Reset", "Reset to theme default color"))) { @@ -123,11 +123,12 @@ namespace XCharts drawRect.width = defaultWidth; ++EditorGUI.indentLevel; - var font = m_Font.objectReferenceValue as Font; - EditorGUI.PropertyField(drawRect, m_Font); - if (font != m_Font.objectReferenceValue) + EditorGUI.BeginChangeCheck(); + var font =m_CustomFont.objectReferenceValue != null?m_CustomFont: m_Font; + EditorGUI.PropertyField(drawRect, font); + if (EditorGUI.EndChangeCheck()) { - m_CustomFont.objectReferenceValue = m_Font.objectReferenceValue; + m_CustomFont.objectReferenceValue = font.objectReferenceValue; } drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; diff --git a/Scripts/Editor/Utility/ChartEditorHelper.cs b/Scripts/Editor/Utility/ChartEditorHelper.cs index 5a05bf10..fbcf6257 100644 --- a/Scripts/Editor/Utility/ChartEditorHelper.cs +++ b/Scripts/Editor/Utility/ChartEditorHelper.cs @@ -19,13 +19,13 @@ public class ChartEditorHelper } public static void MakeJsonData(ref Rect drawRect, ref bool showTextArea, ref string inputString, - SerializedProperty prop) + SerializedProperty prop,float currentWidth) { SerializedProperty stringDataProp = prop.FindPropertyRelative("m_JsonData"); SerializedProperty needParseProp = prop.FindPropertyRelative("m_DataFromJson"); float defalutX = drawRect.x; - drawRect.x = EditorGUIUtility.labelWidth + 15; - drawRect.width = EditorGUIUtility.currentViewWidth - EditorGUIUtility.labelWidth - 35; + drawRect.x = EditorGUIUtility.labelWidth + 14; + drawRect.width = currentWidth - EditorGUIUtility.labelWidth; if (GUI.Button(drawRect, new GUIContent("Parse JsonData", "Parse data from input json"))) { showTextArea = !showTextArea; @@ -40,10 +40,10 @@ public class ChartEditorHelper drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; if (showTextArea) { - drawRect.width = EditorGUIUtility.currentViewWidth - drawRect.x - 20; - drawRect.height = EditorGUIUtility.singleLineHeight * 3; + drawRect.width = currentWidth; + drawRect.height = EditorGUIUtility.singleLineHeight * 4; inputString = EditorGUI.TextArea(drawRect, inputString); - drawRect.y += EditorGUIUtility.singleLineHeight * 3 + EditorGUIUtility.standardVerticalSpacing; + drawRect.y += EditorGUIUtility.singleLineHeight * 4 + EditorGUIUtility.standardVerticalSpacing; drawRect.height = EditorGUIUtility.singleLineHeight; } } diff --git a/Scripts/UI/Internal/Serie.cs b/Scripts/UI/Internal/Serie.cs index f2ced880..289bba28 100644 --- a/Scripts/UI/Internal/Serie.cs +++ b/Scripts/UI/Internal/Serie.cs @@ -82,13 +82,13 @@ namespace XCharts public SymbolSizeCallback sizeCallback { get { return m_SizeCallback; } set { m_SizeCallback = value; } } public SymbolSizeCallback selectedSizeCallback { get { return m_SelectedSizeCallback; } set { m_SelectedSizeCallback = value; } } - private List m_AnimationSize = new List(){0,5,10}; - public List animationSize { get{return m_AnimationSize;}} + private List m_AnimationSize = new List() { 0, 5, 10 }; + public List animationSize { get { return m_AnimationSize; } } public Color animationColor { get; set; } public float GetSize(List data) { - if(data == null) return size; + if (data == null) return size; switch (m_SizeType) { case SerieSymbolSizeType.Custom: @@ -111,7 +111,7 @@ namespace XCharts public float GetSelectedSize(List data) { - if(data == null) return selectedSize; + if (data == null) return selectedSize; switch (m_SizeType) { case SerieSymbolSizeType.Custom: @@ -311,7 +311,8 @@ namespace XCharts return 0; } - public SerieData GetSerieData(int index,DataZoom dataZoom = null){ + public SerieData GetSerieData(int index, DataZoom dataZoom = null) + { var data = GetDataList(dataZoom); if (index >= 0 && index <= data.Count - 1) { @@ -387,7 +388,7 @@ namespace XCharts } } - + public void UpdateFilterData(DataZoom dataZoom) { @@ -457,12 +458,16 @@ namespace XCharts public override void ParseJsonData(string jsonData) { if (string.IsNullOrEmpty(jsonData) || !m_DataFromJson) return; - ClearData(); jsonData = jsonData.Replace("\r\n", ""); jsonData = jsonData.Replace(" ", ""); jsonData = jsonData.Replace("\n", ""); int startIndex = jsonData.IndexOf("["); int endIndex = jsonData.LastIndexOf("]"); + if (startIndex == -1 || endIndex == -1){ + Debug.LogError("json data need include in [ ]"); + return; + } + ClearData(); string temp = jsonData.Substring(startIndex + 1, endIndex - startIndex - 1); if (temp.IndexOf("],") > -1 || temp.IndexOf("] ,") > -1) { diff --git a/Scripts/UI/Utility/ChartHelper.cs b/Scripts/UI/Utility/ChartHelper.cs index 6b305f81..99329fcd 100644 --- a/Scripts/UI/Utility/ChartHelper.cs +++ b/Scripts/UI/Utility/ChartHelper.cs @@ -110,7 +110,6 @@ namespace XCharts txt.horizontalOverflow = HorizontalWrapMode.Overflow; txt.verticalOverflow = VerticalWrapMode.Overflow; txt.color = color; - txt.fontStyle = fontStyle; if (rotate > 0) { txtObj.transform.localEulerAngles = new Vector3(0, 0, rotate);