Esempio n. 1
0
        private void InitSerieTitle()
        {
            var titleObject = ChartHelper.AddObject(s_SerieTitleObjectName, transform, m_ChartMinAnchor,
                                                    m_ChartMaxAnchor, m_ChartPivot, new Vector2(chartWidth, chartHeight));

            titleObject.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(titleObject);
            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie     = m_Series.list[i];
                var textStyle = serie.titleStyle.textStyle;
                var color     = ChartHelper.IsClearColor(textStyle.color) ? m_ThemeInfo.GetColor(i) : (Color32)textStyle.color;
                var anchorMin = new Vector2(0.5f, 0.5f);
                var anchorMax = new Vector2(0.5f, 0.5f);
                var pivot     = new Vector2(0.5f, 0.5f);
                var fontSize  = 10;
                var sizeDelta = new Vector2(50, fontSize + 2);
                var txt       = ChartHelper.AddTextObject("title_" + i, titleObject.transform, m_ThemeInfo.font, color,
                                                          TextAnchor.MiddleCenter, anchorMin, anchorMax, pivot, sizeDelta, textStyle.fontSize, textStyle.rotate,
                                                          textStyle.fontStyle, textStyle.lineSpacing);
                txt.text = "";
                txt.transform.localPosition    = new Vector2(0, 0);
                txt.transform.localEulerAngles = Vector2.zero;
                ChartHelper.SetActive(txt, serie.titleStyle.show);
                serie.titleStyle.runtimeText = txt;
                serie.titleStyle.UpdatePosition(serie.runtimeCenterPos);
                var serieData = serie.GetSerieData(0);
                if (serieData != null)
                {
                    txt.text = serieData.name;
                }
            }
        }
Esempio n. 2
0
 private void InitTooltip()
 {
     tooltip.gameObject = ChartHelper.AddObject("tooltip", transform, m_ChartMinAnchor,
                                                m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta);
     tooltip.painter          = m_PainterTop;
     tooltip.refreshComponent = delegate()
     {
         if (tooltip.gameObject == null)
         {
             return;
         }
         var tooltipObject = tooltip.gameObject;
         tooltipObject.transform.localPosition = Vector3.zero;
         tooltipObject.hideFlags = chartHideFlags;
         DestroyImmediate(tooltipObject.GetComponent <Image>());
         var parent    = tooltipObject.transform;
         var textStyle = tooltip.textStyle;
         ChartHelper.HideAllObject(tooltipObject.transform);
         GameObject content = ChartHelper.AddTooltipContent("content", parent, textStyle, m_Theme);
         tooltip.SetObj(tooltipObject);
         tooltip.SetContentObj(content);
         tooltip.SetContentBackgroundColor(TooltipHelper.GetTexBackgroundColor(tooltip, m_Theme.tooltip));
         tooltip.SetContentTextColor(TooltipHelper.GetTexColor(tooltip, m_Theme.tooltip));
         tooltip.SetActive(false);
     };
     tooltip.refreshComponent();
 }
Esempio n. 3
0
        protected override void InitPainter()
        {
            base.InitPainter();
            m_PainterList.Clear();
            if (settings == null)
            {
                return;
            }
            for (int i = 0; i < settings.maxPainter; i++)
            {
                var painterObj = ChartHelper.AddObject("painter_" + i, transform, m_GraphMinAnchor, m_GraphMaxAnchor,
                                                       m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight));
                painterObj.hideFlags = chartHideFlags;
                painterObj.transform.SetSiblingIndex(2 + i);
                var painter = ChartHelper.GetOrAddComponent <Painter>(painterObj);
                painter.index          = m_PainterList.Count;
                painter.type           = Painter.Type.Serie;
                painter.onPopulateMesh = OnDrawPainterSerie;
                painter.SetActive(false, m_DebugMode);
                m_PainterList.Add(painter);
            }
            var painterTopObj = ChartHelper.AddObject("painter_t", transform, m_GraphMinAnchor, m_GraphMaxAnchor,
                                                      m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight));

            painterTopObj.hideFlags = chartHideFlags;
            painterTopObj.transform.SetSiblingIndex(2 + settings.maxPainter);
            m_PainterTop                = ChartHelper.GetOrAddComponent <Painter>(painterTopObj);
            m_PainterTop.type           = Painter.Type.Top;
            m_PainterTop.onPopulateMesh = OnDrawPainterTop;
            m_PainterTop.SetActive(true, m_DebugMode);
        }
Esempio n. 4
0
        private void InitAxisLabel()
        {
            var labelObject = ChartHelper.AddObject(s_AxisLabelObjectName, transform, Vector2.zero,
                                                    Vector2.zero, Vector2.zero, new Vector2(chartWidth, chartHeight));

            SerieLabelPool.ReleaseAll(labelObject.transform);
            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.list[i];

                var serieLabel = serie.gaugeAxis.axisLabel;
                serie.gaugeAxis.ClearLabelObject();
                var count      = serie.splitNumber > 36 ? 36 : (serie.splitNumber + 1);
                var startAngle = serie.startAngle;
                for (int j = 0; j < count; j++)
                {
                    var textName   = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j);
                    var color      = Color.grey;
                    var labelObj   = SerieLabelPool.Get(textName, labelObject.transform, serieLabel, m_ThemeInfo.font, color, 100, 100);
                    var iconImage  = labelObj.transform.Find("Icon").GetComponent <Image>();
                    var isAutoSize = serieLabel.backgroundWidth == 0 || serieLabel.backgroundHeight == 0;
                    var item       = new LabelObject();
                    item.SetLabel(labelObj, isAutoSize, serieLabel.paddingLeftRight, serieLabel.paddingTopBottom);
                    item.SetIcon(iconImage);
                    item.SetIconActive(false);
                    serie.gaugeAxis.AddLabelObject(item);
                }
                UpdateAxisLabel(serie);
            }
        }
Esempio n. 5
0
        private void InitTitle()
        {
            m_Title.OnChanged();
            TextAnchor anchor           = m_Title.location.textAnchor;
            Vector2    anchorMin        = m_Title.location.anchorMin;
            Vector2    anchorMax        = m_Title.location.anchorMax;
            Vector2    pivot            = m_Title.location.pivot;
            Vector3    titlePosition    = m_Title.location.GetPosition(chartWidth, chartHeight);
            Vector3    subTitlePosition = -new Vector3(0, m_Title.textFontSize + m_Title.itemGap, 0);
            float      titleWid         = chartWidth;

            var titleObject = ChartHelper.AddObject(s_TitleObjectName, transform, anchorMin, anchorMax,
                                                    pivot, new Vector2(chartWidth, chartHeight));

            titleObject.transform.localPosition = titlePosition;
            ChartHelper.HideAllObject(titleObject, s_TitleObjectName);

            Text titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform,
                                                       m_ThemeInfo.font, m_ThemeInfo.textColor, anchor, anchorMin, anchorMax, pivot,
                                                       new Vector2(titleWid, m_Title.textFontSize), m_Title.textFontSize);

            titleText.alignment = anchor;
            titleText.gameObject.SetActive(m_Title.show);
            titleText.transform.localPosition = Vector2.zero;
            titleText.text = m_Title.text;

            Text subText = ChartHelper.AddTextObject(s_TitleObjectName + "_sub", titleObject.transform,
                                                     m_ThemeInfo.font, m_ThemeInfo.textColor, anchor, anchorMin, anchorMax, pivot,
                                                     new Vector2(titleWid, m_Title.subTextFontSize), m_Title.subTextFontSize);

            subText.alignment = anchor;
            subText.gameObject.SetActive(m_Title.show && !string.IsNullOrEmpty(m_Title.subText));
            subText.transform.localPosition = subTitlePosition;
            subText.text = m_Title.subText;
        }
Esempio n. 6
0
        private void InitRadiusAxis(RadiusAxis axis)
        {
            PolarHelper.UpdatePolarCenter(m_Polar, m_ChartPosition, m_ChartWidth, m_ChartHeight);
            var radius = m_Polar.runtimeRadius;

            axis.axisLabelTextList.Clear();
            string objName = "axis_radius";
            var    axisObj = ChartHelper.AddObject(objName, transform, chartAnchorMin,
                                                   chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            axisObj.transform.localPosition = Vector3.zero;
            axisObj.SetActive(axis.show && axis.axisLabel.show);
            axisObj.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(axisObj);
            var labelColor = ChartHelper.IsClearColor(axis.axisLabel.color) ?
                             (Color)m_ThemeInfo.axisTextColor :
                             axis.axisLabel.color;
            int   splitNumber = AxisHelper.GetSplitNumber(axis, radius, null);
            float totalWidth  = 0;
            var   startAngle  = m_AngleAxis.runtimeStartAngle;
            var   cenPos      = m_Polar.runtimeCenterPos;
            var   txtHig      = axis.axisLabel.fontSize + 2;
            var   dire        = ChartHelper.GetDire(startAngle, true).normalized;
            var   tickVetor   = ChartHelper.GetVertialDire(dire) * (m_RadiusAxis.axisTick.length + m_RadiusAxis.axisLabel.margin);

            for (int i = 0; i < splitNumber; i++)
            {
                float labelWidth = AxisHelper.GetScaleWidth(axis, radius, i, null);
                bool  inside     = axis.axisLabel.inside;
                Text  txt        = ChartHelper.AddTextObject(objName + i, axisObj.transform,
                                                             m_ThemeInfo.font, labelColor, TextAnchor.MiddleCenter, new Vector2(0.5f, 0.5f),
                                                             new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(labelWidth, txtHig),
                                                             axis.axisLabel.fontSize, axis.axisLabel.rotate, axis.axisLabel.fontStyle);
                if (i == 0)
                {
                    axis.axisLabel.SetRelatedText(txt, labelWidth);
                }
                var isPercentStack = SeriesHelper.IsPercentStack(m_Series, SerieType.Bar);
                txt.text = AxisHelper.GetLabelName(axis, radius, i, axis.runtimeMinValue, axis.runtimeMaxValue, null,
                                                   isPercentStack);
                txt.gameObject.SetActive(axis.show &&
                                         (axis.axisLabel.interval == 0 || i % (axis.axisLabel.interval + 1) == 0));
                var pos = ChartHelper.GetPos(cenPos, totalWidth, startAngle, true) + tickVetor;
                txt.transform.localPosition = pos;
                AxisHelper.AdjustRadiusAxisLabelPos(txt, pos, cenPos, txtHig, Vector3.zero);
                axis.axisLabelTextList.Add(txt);

                totalWidth += labelWidth;
            }
            if (m_Tooltip.runtimeGameObject)
            {
                Vector2    privot      = new Vector2(0.5f, 1);
                var        labelParent = m_Tooltip.runtimeGameObject.transform;
                GameObject labelObj    = ChartHelper.AddTooltipLabel(ChartCached.GetAxisTooltipLabel(objName), labelParent, m_ThemeInfo.font, privot);
                axis.SetTooltipLabel(labelObj);
                axis.SetTooltipLabelColor(m_ThemeInfo.tooltipBackgroundColor, m_ThemeInfo.tooltipTextColor);
                axis.SetTooltipLabelActive(axis.show && m_Tooltip.show && m_Tooltip.type == Tooltip.Type.Corss);
            }
        }
Esempio n. 7
0
        internal static Painter AddPainterObject(string name, Transform parent, Vector2 anchorMin, Vector2 anchorMax,
                                                 Vector2 pivot, Vector2 sizeDelta, HideFlags hideFlags, int siblingIndex)
        {
            var painterObj = ChartHelper.AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);

            painterObj.hideFlags = hideFlags;
            painterObj.transform.SetSiblingIndex(siblingIndex);
            return(ChartHelper.GetOrAddComponent <Painter>(painterObj));
        }
Esempio n. 8
0
 public void Init()
 {
     m_MarkLineLabelRoot = ChartHelper.AddObject("markline", chart.transform, chart.chartMinAnchor,
                                                 chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta);
     m_MarkLineLabelRoot.hideFlags = chart.chartHideFlags;
     ChartHelper.HideAllObject(m_MarkLineLabelRoot);
     foreach (var serie in chart.series.list)
     {
         InitMarkLine(serie);
     }
 }
Esempio n. 9
0
        protected virtual void InitPainter()
        {
            var painterObj = ChartHelper.AddObject("painter_b", transform, m_GraphMinAnchor, m_GraphMaxAnchor,
                                                   m_GraphPivot, new Vector2(m_GraphWidth, m_GraphHeight));

            painterObj.transform.SetSiblingIndex(1);
            painterObj.hideFlags     = chartHideFlags;
            m_Painter                = ChartHelper.GetOrAddComponent <Painter>(painterObj);
            m_Painter.type           = Painter.Type.Base;
            m_Painter.onPopulateMesh = OnDrawPainterBase;
        }
Esempio n. 10
0
        private void InitTitle(Title title)
        {
            title.OnChanged();
            var anchorMin   = title.location.runtimeAnchorMin;
            var anchorMax   = title.location.runtimeAnchorMax;
            var pivot       = title.location.runtimePivot;
            var titleObject = ChartHelper.AddObject(s_TitleObjectName + title.index, transform, anchorMin, anchorMax,
                                                    pivot, m_ChartSizeDelta);

            title.gameObject       = titleObject;
            title.painter          = null;
            title.refreshComponent = delegate()
            {
                if (titleObject == null)
                {
                    return;
                }
                title.OnChanged();
                anchorMin = title.location.runtimeAnchorMin;
                anchorMax = title.location.runtimeAnchorMax;
                pivot     = title.location.runtimePivot;
                title.textStyle.UpdateAlignmentByLocation(title.location);
                title.subTextStyle.UpdateAlignmentByLocation(title.location);
                var fontSize = title.textStyle.GetFontSize(theme.title);
                ChartHelper.UpdateRectTransform(titleObject, anchorMin, anchorMax, pivot, new Vector2(chartWidth, chartHeight));
                var titlePosition    = GetTitlePosition(title);
                var subTitlePosition = -new Vector3(0, fontSize + title.itemGap, 0);
                var titleWid         = chartWidth;

                titleObject.transform.localPosition = titlePosition;
                titleObject.hideFlags = chartHideFlags;
                ChartHelper.HideAllObject(titleObject);

                var titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform, anchorMin, anchorMax,
                                                          pivot, new Vector2(titleWid, fontSize), title.textStyle, theme.title);
                titleText.SetActive(title.show);
                titleText.SetLocalPosition(Vector3.zero + title.textStyle.offsetv3);
                titleText.SetText(title.text);

                var subText = ChartHelper.AddTextObject(s_SubTitleObjectName, titleObject.transform, anchorMin, anchorMax,
                                                        pivot, new Vector2(titleWid, title.subTextStyle.GetFontSize(theme.subTitle)), title.subTextStyle,
                                                        theme.subTitle);
                subText.SetActive(title.show && !string.IsNullOrEmpty(title.subText));
                subText.SetLocalPosition(subTitlePosition + title.subTextStyle.offsetv3);
                subText.SetText(title.subText);
            };
            title.refreshComponent();
        }
Esempio n. 11
0
        private void InitSerieLabel()
        {
            var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin,
                                                    chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            ChartHelper.DestroyAllChildren(labelObject.transform);
            int count = 0;

            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.list[i];
                for (int j = 0; j < serie.data.Count; j++)
                {
                    var serieData = serie.data[j];
                    if (!serie.label.show && j > 100)
                    {
                        continue;
                    }
                    var textName = s_SerieLabelObjectName + "_" + i + "_" + j + "_" + serieData.name;
                    var color    = Color.grey;
                    if (serie.type == SerieType.Pie)
                    {
                        color = (serie.label.position == SerieLabel.Position.Inside) ? Color.white :
                                (Color)m_ThemeInfo.GetColor(count);
                    }
                    else
                    {
                        color = serie.label.color != Color.clear ? serie.label.color :
                                (Color)m_ThemeInfo.GetColor(i);
                    }
                    var backgroundColor = serie.label.backgroundColor;
                    var labelObj        = ChartHelper.AddSerieLabel(textName, labelObject.transform, m_ThemeInfo.font,
                                                                    color, backgroundColor, serie.label.fontSize, serie.label.fontStyle, serie.label.rotate,
                                                                    serie.label.backgroundWidth, serie.label.backgroundHeight);

                    var iconObj = ChartHelper.AddIcon("Icon", labelObj.transform, serieData.iconWidth, serieData.iconHeight);
                    serieData.SetIconObj(iconObj);

                    var isAutoSize = serie.label.backgroundWidth == 0 || serie.label.backgroundHeight == 0;
                    serieData.InitLabel(labelObj, isAutoSize, serie.label.paddingLeftRight, serie.label.paddingTopBottom);
                    serieData.SetLabelActive(false);
                    serieData.SetLabelText(serieData.name);

                    count++;
                }
            }
        }
Esempio n. 12
0
        private void InitSerieLabel()
        {
            var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin,
                                                    chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            ChartHelper.DestoryAllChilds(labelObject.transform);
            int count = 0;

            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.series[i];
                if (serie.type != SerieType.Pie && serie.type != SerieType.Line)
                {
                    continue;
                }
                if (serie.type != SerieType.Pie && !serie.label.show)
                {
                    continue;
                }
                for (int j = 0; j < serie.data.Count; j++)
                {
                    var serieData = serie.data[j];
                    var textName  = s_SerieLabelObjectName + "_" + i + "_" + j + "_" + serieData.name;
                    var color     = Color.grey;
                    if (serie.type == SerieType.Pie)
                    {
                        color = (serie.label.position == SerieLabel.Position.Inside) ? Color.white :
                                (Color)m_ThemeInfo.GetColor(count);
                    }
                    else
                    {
                        color = serie.label.color != Color.clear ? serie.label.color :
                                (Color)m_ThemeInfo.GetColor(i);
                    }
                    var backgroundColor = serie.label.backgroundColor;
                    var labelObj        = ChartHelper.AddSerieLabel(textName, labelObject.transform, m_ThemeInfo.font, color, backgroundColor,
                                                                    serie.label.fontSize, serie.label.fontStyle);
                    serieData.label      = labelObj.GetComponentInChildren <Text>();
                    serieData.labelImage = labelObj.GetComponent <Image>();
                    serieData.labelRect  = labelObj.GetComponent <RectTransform>();
                    serieData.SetLabelActive(false);
                    serieData.SetLabelText(serieData.name);
                    count++;
                }
            }
        }
Esempio n. 13
0
        private void InitSerieLabel()
        {
            var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, m_ChartMinAnchor,
                                                    m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta);

            SerieLabelPool.ReleaseAll(labelObject.transform);
            int count = 0;

            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.list[i];
                SerieHelper.UpdateCenter(serie, chartPosition, chartWidth, chartHeight);
                for (int j = 0; j < serie.data.Count; j++)
                {
                    var serieData  = serie.data[j];
                    var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
                    if (!serieLabel.show && j > 100)
                    {
                        continue;
                    }
                    var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j);
                    var color    = Color.grey;
                    if (serie.type == SerieType.Pie)
                    {
                        color = (serieLabel.position == SerieLabel.Position.Inside) ? Color.white :
                                (Color)m_ThemeInfo.GetColor(count);
                    }
                    else
                    {
                        color = serieLabel.color != Color.clear ? serieLabel.color :
                                (Color)m_ThemeInfo.GetColor(i);
                    }
                    var labelObj = SerieLabelPool.Get(textName, labelObject.transform, serieLabel, m_ThemeInfo.font, color,
                                                      serieData.iconStyle.width, serieData.iconStyle.height);
                    var iconImage = labelObj.transform.Find("Icon").GetComponent <Image>();
                    serieData.SetIconImage(iconImage);

                    var isAutoSize = serieLabel.backgroundWidth == 0 || serieLabel.backgroundHeight == 0;
                    serieData.InitLabel(labelObj, isAutoSize, serieLabel.paddingLeftRight, serieLabel.paddingTopBottom);
                    serieData.SetLabelActive(false);
                    count++;
                }
            }
            SerieLabelHelper.UpdateLabelText(m_Series, m_ThemeInfo);
        }
Esempio n. 14
0
        private void InitDataZoom()
        {
            var dataZoomObject = ChartHelper.AddObject(s_DefaultDataZoom, transform, chartAnchorMin,
                                                       chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            dataZoomObject.transform.localPosition = Vector3.zero;
            ChartHelper.HideAllObject(dataZoomObject, s_DefaultDataZoom);
            m_DataZoom.startLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "start",
                                                              dataZoomObject.transform, m_ThemeInfo.font, m_ThemeInfo.textColor, TextAnchor.MiddleRight,
                                                              Vector2.zero, Vector2.zero, new Vector2(1, 0.5f), new Vector2(200, 20));
            m_DataZoom.endLabel = ChartHelper.AddTextObject(s_DefaultDataZoom + "end",
                                                            dataZoomObject.transform, m_ThemeInfo.font, m_ThemeInfo.textColor, TextAnchor.MiddleLeft,
                                                            Vector2.zero, Vector2.zero, new Vector2(0, 0.5f), new Vector2(200, 20));
            m_DataZoom.SetLabelActive(false);
            m_XAxis.UpdateFilterData(m_DataZoom);
            m_Series.UpdateFilterData(m_DataZoom);
            raycastTarget = m_DataZoom.show;
        }
Esempio n. 15
0
        private void InitTooltip()
        {
            var tooltipObject = ChartHelper.AddObject("tooltip", transform, chartAnchorMin,
                                                      chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            tooltipObject.transform.localPosition = Vector3.zero;
            DestroyImmediate(tooltipObject.GetComponent <Image>());
            var parent = tooltipObject.transform;

            ChartHelper.HideAllObject(tooltipObject.transform);
            GameObject content = ChartHelper.AddTooltipContent("content", parent, m_ThemeInfo.font);

            m_Tooltip.SetObj(tooltipObject);
            m_Tooltip.SetContentObj(content);
            m_Tooltip.SetContentBackgroundColor(m_ThemeInfo.tooltipBackgroundColor);
            m_Tooltip.SetContentTextColor(m_ThemeInfo.tooltipTextColor);
            m_Tooltip.SetActive(false);
        }
Esempio n. 16
0
        private void InitSerieLabel()
        {
            var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin,
                                                    chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            SerieLabelPool.ReleaseAll(labelObject.transform);
            int count = 0;

            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.list[i];
                for (int j = 0; j < serie.data.Count; j++)
                {
                    var serieData = serie.data[j];
                    if (!serie.label.show && j > 100)
                    {
                        continue;
                    }
                    var textName = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j);
                    var color    = Color.grey;
                    if (serie.type == SerieType.Pie)
                    {
                        color = (serie.label.position == SerieLabel.Position.Inside) ? Color.white :
                                (Color)m_ThemeInfo.GetColor(count);
                    }
                    else
                    {
                        color = serie.label.color != Color.clear ? serie.label.color :
                                (Color)m_ThemeInfo.GetColor(i);
                    }
                    var labelObj = SerieLabelPool.Get(textName, labelObject.transform, serie.label, m_ThemeInfo.font, color, serieData);
                    var iconObj  = labelObj.transform.Find("Icon").gameObject;
                    serieData.SetIconObj(iconObj);

                    var isAutoSize = serie.label.backgroundWidth == 0 || serie.label.backgroundHeight == 0;
                    serieData.InitLabel(labelObj, isAutoSize, serie.label.paddingLeftRight, serie.label.paddingTopBottom);
                    serieData.SetLabelActive(false);
                    serieData.SetLabelText(serieData.name);

                    count++;
                }
            }
        }
        public static LegendItem AddLegendItem(Legend legend, int i, string legendName, Transform parent, ThemeInfo themeInfo,
                                               string content, Color itemColor, bool active)
        {
            var objName       = i + "_" + legendName;
            var anchorMin     = new Vector2(0, 0.5f);
            var anchorMax     = new Vector2(0, 0.5f);
            var pivot         = new Vector2(0, 0.5f);
            var sizeDelta     = new Vector2(100, 30);
            var iconSizeDelta = new Vector2(legend.itemWidth, legend.itemHeight);
            var textStyle     = legend.textStyle;
            var font          = textStyle.font ? textStyle.font : themeInfo.font;
            var contentColor  = GetContentColor(legend, themeInfo, active);

            var objAnchorMin = legend.location.runtimeAnchorMin;
            var objAnchorMax = legend.location.runtimeAnchorMax;
            var objPivot     = legend.location.runtimePivot;

            var btnObj     = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta);
            var iconObj    = ChartHelper.AddObject("icon", btnObj.transform, anchorMin, anchorMax, pivot, iconSizeDelta);
            var contentObj = ChartHelper.AddObject("content", btnObj.transform, anchorMin, anchorMax, pivot, sizeDelta);
            var img        = ChartHelper.GetOrAddComponent <Image>(btnObj);

            img.color = Color.clear;
            ChartHelper.GetOrAddComponent <Button>(btnObj);
            ChartHelper.GetOrAddComponent <Image>(iconObj);
            ChartHelper.GetOrAddComponent <Image>(contentObj);
            Text txt = ChartHelper.AddTextObject("Text", contentObj.transform, font, contentColor,
                                                 TextAnchor.MiddleLeft, anchorMin, anchorMax, pivot, sizeDelta, textStyle.fontSize,
                                                 textStyle.rotate, textStyle.fontStyle, textStyle.lineSpacing);
            var item = new LegendItem();

            item.index      = i;
            item.name       = objName;
            item.legendName = legendName;
            item.SetObject(btnObj);
            item.SetIconSize(legend.itemWidth, legend.itemHeight);
            item.SetIconColor(itemColor);
            item.SetIconImage(legend.GetIcon(i));
            item.SetContentPosition(textStyle.offsetv3);
            item.SetContent(content);
            item.SetContentBackgroundColor(textStyle.backgroundColor);
            return(item);
        }
Esempio n. 18
0
        public static LegendItem AddLegendItem(Legend legend, int i, string legendName, Transform parent,
                                               ChartTheme theme, string content, Color itemColor, bool active, int legendIndex)
        {
            var objName       = i + "_" + legendName;
            var anchorMin     = new Vector2(0, 0.5f);
            var anchorMax     = new Vector2(0, 0.5f);
            var pivot         = new Vector2(0, 0.5f);
            var sizeDelta     = new Vector2(100, 30);
            var iconSizeDelta = new Vector2(legend.itemWidth, legend.itemHeight);
            var textStyle     = legend.textStyle;
            var contentColor  = GetContentColor(legendIndex, legend, theme, active);

            var objAnchorMin = new Vector2(0, 1);
            var objAnchorMax = new Vector2(0, 1);
            var objPivot     = new Vector2(0, 1);
            var btnObj       = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta, i);
            var iconObj      = ChartHelper.AddObject("icon", btnObj.transform, anchorMin, anchorMax, pivot, iconSizeDelta);
            var contentObj   = ChartHelper.AddObject("content", btnObj.transform, anchorMin, anchorMax, pivot, sizeDelta);
            var img          = ChartHelper.GetOrAddComponent <Image>(btnObj);

            img.color = Color.clear;
            ChartHelper.GetOrAddComponent <Button>(btnObj);
            ChartHelper.GetOrAddComponent <Image>(iconObj);
            ChartHelper.GetOrAddComponent <Image>(contentObj);
            var txt = ChartHelper.AddTextObject("Text", contentObj.transform, anchorMin, anchorMax, pivot, sizeDelta,
                                                textStyle, theme.legend);

            txt.SetAlignment(textStyle.GetAlignment(TextAnchor.MiddleLeft));
            txt.SetColor(contentColor);
            var item = new LegendItem();

            item.index      = i;
            item.name       = objName;
            item.legendName = legendName;
            item.SetObject(btnObj);
            item.SetIconSize(legend.itemWidth, legend.itemHeight);
            item.SetIconColor(itemColor);
            item.SetIconImage(legend.GetIcon(i));
            item.SetContentPosition(textStyle.offsetv3);
            item.SetContent(content);
            item.SetContentBackgroundColor(textStyle.backgroundColor);
            return(item);
        }
Esempio n. 19
0
        private void InitTitle()
        {
            m_Title.OnChanged();
            TextAnchor anchor           = m_Title.location.runtimeTextAnchor;
            Vector2    anchorMin        = m_Title.location.runtimeAnchorMin;
            Vector2    anchorMax        = m_Title.location.runtimeAnchorMax;
            Vector2    pivot            = m_Title.location.runtimePivot;
            Vector3    titlePosition    = GetTitlePosition();
            Vector3    subTitlePosition = -new Vector3(0, m_Title.textStyle.fontSize + m_Title.itemGap, 0);
            float      titleWid         = chartWidth;

            var titleObject = ChartHelper.AddObject(s_TitleObjectName, transform, anchorMin, anchorMax,
                                                    pivot, new Vector2(chartWidth, chartHeight));

            titleObject.transform.localPosition = titlePosition;
            titleObject.hideFlags = chartHideFlags;
            ChartHelper.HideAllObject(titleObject);

            var  textFont  = TitleHelper.GetTextFont(title, themeInfo);
            var  textColor = TitleHelper.GetTextColor(title, themeInfo);
            Text titleText = ChartHelper.AddTextObject(s_TitleObjectName, titleObject.transform,
                                                       textFont, textColor, anchor, anchorMin, anchorMax, pivot,
                                                       new Vector2(titleWid, m_Title.textStyle.fontSize), m_Title.textStyle.fontSize,
                                                       m_Title.textStyle.rotate, m_Title.textStyle.fontStyle, m_Title.textStyle.lineSpacing);

            titleText.alignment = anchor;
            titleText.gameObject.SetActive(m_Title.show);
            titleText.transform.localPosition = Vector3.zero + m_Title.textStyle.offsetv3;
            titleText.text = m_Title.text.Replace("\\n", "\n");

            var  subTextFont  = TitleHelper.GetSubTextFont(title, themeInfo);
            var  subTextColor = TitleHelper.GetSubTextColor(title, themeInfo);
            Text subText      = ChartHelper.AddTextObject(s_SubTitleObjectName, titleObject.transform,
                                                          subTextFont, subTextColor, anchor, anchorMin, anchorMax, pivot,
                                                          new Vector2(titleWid, m_Title.subTextStyle.fontSize), m_Title.subTextStyle.fontSize,
                                                          m_Title.subTextStyle.rotate, m_Title.subTextStyle.fontStyle, m_Title.subTextStyle.lineSpacing);

            subText.alignment = anchor;
            subText.gameObject.SetActive(m_Title.show && !string.IsNullOrEmpty(m_Title.subText));
            subText.transform.localPosition = subTitlePosition + m_Title.subTextStyle.offsetv3;
            subText.text = m_Title.subText.Replace("\\n", "\n");
        }
Esempio n. 20
0
        private void InitTooltip()
        {
            var tooltipObject = ChartHelper.AddObject("tooltip", transform, m_ChartMinAnchor,
                                                      m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta);

            tooltipObject.transform.localPosition = Vector3.zero;
            DestroyImmediate(tooltipObject.GetComponent <Image>());
            var parent    = tooltipObject.transform;
            var textStyle = m_Tooltip.textStyle;

            ChartHelper.HideAllObject(tooltipObject.transform);
            GameObject content = ChartHelper.AddTooltipContent("content", parent, m_ThemeInfo.font,
                                                               textStyle.fontSize, textStyle.fontStyle, textStyle.lineSpacing);

            m_Tooltip.SetObj(tooltipObject);
            m_Tooltip.SetContentObj(content);
            m_Tooltip.SetContentBackgroundColor(m_ThemeInfo.tooltipBackgroundColor);
            m_Tooltip.SetContentTextColor(m_ThemeInfo.tooltipTextColor);
            m_Tooltip.SetActive(false);
        }
Esempio n. 21
0
 private void InitBackground()
 {
     m_Background.painter          = m_Painter;
     m_Background.refreshComponent = delegate()
     {
         var backgroundObj = ChartHelper.AddObject(s_BackgroundObjectName, transform, m_GraphMinAnchor,
                                                   m_GraphMaxAnchor, m_GraphPivot, m_GraphSizeDelta);
         m_Background.gameObject = backgroundObj;
         backgroundObj.hideFlags = chartHideFlags;
         var backgroundImage = ChartHelper.GetOrAddComponent <Image>(backgroundObj);
         ChartHelper.UpdateRectTransform(backgroundObj, m_GraphMinAnchor,
                                         m_GraphMaxAnchor, m_GraphPivot, m_GraphSizeDelta);
         backgroundImage.sprite = m_Background.image;
         backgroundImage.type   = m_Background.imageType;
         backgroundImage.color  = m_Background.imageColor;
         backgroundObj.transform.SetSiblingIndex(0);
         backgroundObj.SetActive(m_Background.show);
     };
     m_Background.refreshComponent();
 }
Esempio n. 22
0
        private void InitSerieLabel()
        {
            m_SerieLabelRoot = ChartHelper.AddObject(s_SerieLabelObjectName, transform, m_ChartMinAnchor,
                                                     m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta);
            SerieLabelPool.ReleaseAll(m_SerieLabelRoot.transform);
            int count = 0;

            for (int i = 0; i < m_Series.Count; i++)
            {
                var serie = m_Series.list[i];
                SerieHelper.UpdateCenter(serie, chartPosition, chartWidth, chartHeight);
                for (int j = 0; j < serie.data.Count; j++)
                {
                    var serieData = serie.data[j];
                    serieData.index = j;
                    AddSerieLabel(serie, serieData, count);
                    count++;
                }
            }
            SerieLabelHelper.UpdateLabelText(m_Series, m_ThemeInfo);
        }
        private void InitAxisLabel()
        {
            if (!SeriesHelper.ContainsSerie(chart.series, SerieType.Gauge))
            {
                return;
            }
            var labelObject = ChartHelper.AddObject(s_AxisLabelObjectName, chart.transform, chart.chartMinAnchor,
                                                    chart.chartMaxAnchor, chart.chartPivot, chart.chartSizeDelta);

            labelObject.hideFlags = chart.chartHideFlags;
            SerieLabelPool.ReleaseAll(labelObject.transform);
            for (int i = 0; i < chart.series.Count; i++)
            {
                var serie = chart.series.list[i];
                if (serie.type != SerieType.Gauge)
                {
                    continue;
                }
                var serieLabel = serie.gaugeAxis.axisLabel;
                var count      = serie.splitNumber > 36 ? 36 : (serie.splitNumber + 1);
                var startAngle = serie.startAngle;
                var textColor  = serieLabel.textStyle.GetColor(chart.theme.gauge.textColor);
                serie.gaugeAxis.ClearLabelObject();
                SerieHelper.UpdateCenter(serie, chart.chartPosition, chart.chartWidth, chart.chartHeight);
                for (int j = 0; j < count; j++)
                {
                    var textName   = ChartCached.GetSerieLabelName(s_SerieLabelObjectName, i, j);
                    var labelObj   = SerieLabelPool.Get(textName, labelObject.transform, serieLabel, textColor, 100, 100, chart.theme);
                    var iconImage  = labelObj.transform.Find("Icon").GetComponent <Image>();
                    var isAutoSize = serieLabel.backgroundWidth == 0 || serieLabel.backgroundHeight == 0;
                    var item       = new ChartLabel();
                    item.SetLabel(labelObj, isAutoSize, serieLabel.paddingLeftRight, serieLabel.paddingTopBottom);
                    item.SetIcon(iconImage);
                    item.SetIconActive(false);
                    serie.gaugeAxis.AddLabelObject(item);
                }
                UpdateAxisLabel(serie);
            }
        }
Esempio n. 24
0
        private void InitLegend()
        {
            m_Legend.OnChanged();
            ChartHelper.HideAllObject(transform, s_LegendObjectName);
            TextAnchor anchor    = m_Legend.location.textAnchor;
            Vector2    anchorMin = m_Legend.location.anchorMin;
            Vector2    anchorMax = m_Legend.location.anchorMax;
            Vector2    pivot     = m_Legend.location.pivot;

            var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax,
                                                     pivot, new Vector2(chartWidth, chartHeight));

            legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight);
            ChartHelper.HideAllObject(legendObject, s_LegendObjectName);

            for (int i = 0; i < m_Legend.data.Count; i++)
            {
                Button btn = ChartHelper.AddButtonObject(s_LegendObjectName + "_" + i, legendObject.transform,
                                                         m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor,
                                                         anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight));

                m_Legend.SetButton(i, btn);
                m_Legend.SetActive(i, IsActive(i));
                m_Legend.UpdateButtonColor(i, m_ThemeInfo.GetColor(i), m_ThemeInfo.legendUnableColor);
                btn.GetComponentInChildren <Text>().text = m_Legend.data[i];
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) =>
                {
                    int count = (data as PointerEventData).clickCount;
                    int index = int.Parse(data.selectedObject.name.Split('_')[1]);
                    SetActive(index, !m_Legend.IsActive(index));
                    m_Legend.UpdateButtonColor(index, m_ThemeInfo.GetColor(index),
                                               m_ThemeInfo.legendUnableColor);
                    OnYMaxValueChanged();
                    OnLegendButtonClicked();
                    RefreshChart();
                });
            }
        }
        private void InitSplitY()
        {
            m_SplitYTextList.Clear();
            float splitWidth = m_YAxis.GetScaleWidth(coordinateHig);

            var titleObject = ChartHelper.AddObject(s_DefaultSplitNameY, transform, chartAnchorMin,
                                                    chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));

            titleObject.transform.localPosition = Vector3.zero;
            ChartHelper.HideAllObject(titleObject, s_DefaultSplitNameY);

            for (int i = 0; i < m_YAxis.GetSplitNumber(); i++)
            {
                Text txt = ChartHelper.AddTextObject(s_DefaultSplitNameY + i, titleObject.transform,
                                                     m_ThemeInfo.font, m_ThemeInfo.textColor, TextAnchor.MiddleRight, Vector2.zero,
                                                     Vector2.zero, new Vector2(1, 0.5f), new Vector2(m_Coordinate.left, 20),
                                                     m_Coordinate.fontSize, m_XAxis.textRotation);
                txt.transform.localPosition = GetSplitYPosition(splitWidth, i);
                txt.text = m_YAxis.GetScaleName(i, minValue, maxValue);
                txt.gameObject.SetActive(m_YAxis.show);
                m_SplitYTextList.Add(txt);
            }
        }
Esempio n. 26
0
        private void InitLegend()
        {
            m_Legend.OnChanged();
            TextAnchor anchor    = m_Legend.location.textAnchor;
            Vector2    anchorMin = m_Legend.location.anchorMin;
            Vector2    anchorMax = m_Legend.location.anchorMax;
            Vector2    pivot     = m_Legend.location.pivot;

            var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax,
                                                     pivot, new Vector2(chartWidth, chartHeight));

            legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight);
            ChartHelper.DestoryAllChilds(legendObject.transform);
            if (!m_Legend.show)
            {
                return;
            }
            var           serieNameList = m_Series.GetSerieNameList();
            List <string> datas;

            if (m_Legend.data.Count > 0)
            {
                datas = new List <string>();
                for (int i = 0; i < m_Legend.data.Count; i++)
                {
                    var category = m_Legend.data[i];
                    if (serieNameList.Contains(category))
                    {
                        datas.Add(category);
                    }
                }
            }
            else
            {
                datas = serieNameList;
            }
            m_Legend.RemoveButton();
            for (int i = 0; i < datas.Count; i++)
            {
                string legendName = datas[i];
                Button btn        = ChartHelper.AddButtonObject(s_LegendObjectName + "_" + i + "_" + legendName, legendObject.transform,
                                                                m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor,
                                                                anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight));
                var bgColor = IsActiveByLegend(legendName) ? m_ThemeInfo.GetColor(i) : m_ThemeInfo.legendUnableColor;
                m_Legend.SetButton(legendName, btn, datas.Count);
                m_Legend.UpdateButtonColor(legendName, bgColor);
                btn.GetComponentInChildren <Text>().text = legendName;
                ChartHelper.ClearEventListener(btn.gameObject);
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) =>
                {
                    if (data.selectedObject == null || m_Legend.selectedMode == Legend.SelectedMode.None)
                    {
                        return;
                    }
                    var temp            = data.selectedObject.name.Split('_');
                    string selectedName = temp[2];
                    int clickedIndex    = int.Parse(temp[1]);
                    if (m_Legend.selectedMode == Legend.SelectedMode.Multiple)
                    {
                        OnLegendButtonClick(clickedIndex, selectedName, !IsActiveByLegend(selectedName));
                    }
                    else
                    {
                        var btnList = m_Legend.buttonList.Values.ToArray();
                        for (int n = 0; n < btnList.Length; n++)
                        {
                            temp         = btnList[n].name.Split('_');
                            selectedName = temp[2];
                            var index    = int.Parse(temp[1]);
                            OnLegendButtonClick(n, selectedName, index == clickedIndex ? true : false);
                        }
                    }
                });
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerEnter, (data) =>
                {
                    if (btn == null)
                    {
                        return;
                    }
                    var temp            = btn.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonEnter(index, selectedName);
                });
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerExit, (data) =>
                {
                    if (btn == null)
                    {
                        return;
                    }
                    var temp            = btn.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonExit(index, selectedName);
                });
            }
            if (m_Legend.selectedMode == Legend.SelectedMode.Single)
            {
                for (int n = 0; n < datas.Count; n++)
                {
                    OnLegendButtonClick(n, datas[n], n == 0 ? true : false);
                }
            }
        }
Esempio n. 27
0
        private void InitLegend()
        {
            m_Legend.OnChanged();
            var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, m_ChartMinAnchor,
                                                     m_ChartMaxAnchor, m_ChartPivot, new Vector2(chartWidth, chartHeight));

            legendObject.hideFlags = chartHideFlags;
            SeriesHelper.UpdateSerieNameList(m_Series, ref m_LegendRealShowName);
            List <string> datas;

            if (m_Legend.show && m_Legend.data.Count > 0)
            {
                datas = new List <string>();
                for (int i = 0; i < m_LegendRealShowName.Count; i++)
                {
                    if (m_Legend.data.Contains(m_LegendRealShowName[i]))
                    {
                        datas.Add(m_LegendRealShowName[i]);
                    }
                }
            }
            else
            {
                datas = m_LegendRealShowName;
            }
            int totalLegend = 0;

            for (int i = 0; i < datas.Count; i++)
            {
                if (!SeriesHelper.IsLegalLegendName(datas[i]))
                {
                    continue;
                }
                totalLegend++;
            }
            m_Legend.RemoveButton();
            ChartHelper.HideAllObject(legendObject);
            if (!m_Legend.show)
            {
                return;
            }
            for (int i = 0; i < datas.Count; i++)
            {
                if (!SeriesHelper.IsLegalLegendName(datas[i]))
                {
                    continue;
                }
                string legendName = m_Legend.GetFormatterContent(datas[i]);
                var    readIndex  = m_LegendRealShowName.IndexOf(datas[i]);
                var    active     = IsActiveByLegend(datas[i]);
                var    bgColor    = LegendHelper.GetIconColor(m_Legend, readIndex, themeInfo, active);
                var    item       = LegendHelper.AddLegendItem(m_Legend, i, datas[i], legendObject.transform, m_ThemeInfo,
                                                               legendName, bgColor, active);
                m_Legend.SetButton(legendName, item, totalLegend);
                ChartHelper.ClearEventListener(item.button.gameObject);
                ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerDown, (data) =>
                {
                    if (data.selectedObject == null || m_Legend.selectedMode == Legend.SelectedMode.None)
                    {
                        return;
                    }
                    var temp            = data.selectedObject.name.Split('_');
                    string selectedName = temp[1];
                    int clickedIndex    = int.Parse(temp[0]);
                    if (m_Legend.selectedMode == Legend.SelectedMode.Multiple)
                    {
                        OnLegendButtonClick(clickedIndex, selectedName, !IsActiveByLegend(selectedName));
                    }
                    else
                    {
                        var btnList = m_Legend.buttonList.Values.ToArray();
                        if (btnList.Length == 1)
                        {
                            OnLegendButtonClick(0, selectedName, !IsActiveByLegend(selectedName));
                        }
                        else
                        {
                            for (int n = 0; n < btnList.Length; n++)
                            {
                                temp         = btnList[n].name.Split('_');
                                selectedName = btnList[n].legendName;
                                var index    = btnList[n].index;
                                OnLegendButtonClick(n, selectedName, index == clickedIndex ? true : false);
                            }
                        }
                    }
                });
                ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerEnter, (data) =>
                {
                    if (item.button == null)
                    {
                        return;
                    }
                    var temp            = item.button.name.Split('_');
                    string selectedName = temp[1];
                    int index           = int.Parse(temp[0]);
                    OnLegendButtonEnter(index, selectedName);
                });
                ChartHelper.AddEventListener(item.button.gameObject, EventTriggerType.PointerExit, (data) =>
                {
                    if (item.button == null)
                    {
                        return;
                    }
                    var temp            = item.button.name.Split('_');
                    string selectedName = temp[1];
                    int index           = int.Parse(temp[0]);
                    OnLegendButtonExit(index, selectedName);
                });
            }
            if (m_Legend.selectedMode == Legend.SelectedMode.Single)
            {
                for (int n = 0; n < m_LegendRealShowName.Count; n++)
                {
                    OnLegendButtonClick(n, m_LegendRealShowName[n], n == 0 ? true : false);
                }
            }
            LegendHelper.ResetItemPosition(m_Legend, m_ChartPosition, m_ChartWidth, m_ChartHeight);
        }
Esempio n. 28
0
        private void InitBackground()
        {
            if (!transform.parent)
            {
                return;
            }
            int childCount = transform.parent.childCount;

            if (childCount > 2)
            {
                m_Background.runtimeActive = false;
            }
            else if (childCount == 1)
            {
                m_Background.runtimeActive = true;
            }
            else
            {
                m_Background.runtimeActive = false;
                for (int i = 0; i < childCount; i++)
                {
                    if (transform.parent.GetChild(i).name.StartsWith(s_BackgroundObjectName))
                    {
                        m_Background.runtimeActive = true;
                        break;
                    }
                }
            }
            if (!m_Background.runtimeActive || m_IsControlledByLayout)
            {
                //find old gameobject and delete
                var objName = s_BackgroundObjectName + GetInstanceID();
                ChartHelper.DestoryGameObject(transform.parent, objName);
                ChartHelper.DestoryGameObject(m_BackgroundRoot);
                return;
            }
            if (!m_Background.show)
            {
                ChartHelper.DestoryGameObject(m_BackgroundRoot);
                return;
            }
            var backgroundName = s_BackgroundObjectName;

            m_BackgroundRoot = ChartHelper.AddObject(backgroundName, transform.parent, m_ChartMinAnchor,
                                                     m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta);
            m_BackgroundRoot.hideFlags = chartHideFlags;
            var backgroundImage = ChartHelper.GetOrAddComponent <Image>(m_BackgroundRoot);
            var backgroundRect  = m_BackgroundRoot.GetComponent <RectTransform>();

            backgroundRect.position = rectTransform.position;
            backgroundImage.sprite  = m_Background.image;
            backgroundImage.type    = m_Background.imageType;
            backgroundImage.color   = m_Background.imageColor;
            m_BackgroundRoot.SetActive(m_Background.show);
            var siblindIndex = rectTransform.GetSiblingIndex();

            if (siblindIndex == 0)
            {
                backgroundRect.SetSiblingIndex(0);
            }
            else
            {
                backgroundRect.SetSiblingIndex(rectTransform.GetSiblingIndex() - 1);
            }
        }
Esempio n. 29
0
        private void InitLegend()
        {
            m_Legend.OnChanged();
            TextAnchor anchor    = m_Legend.location.runtimeTextAnchor;
            Vector2    anchorMin = m_Legend.location.runtimeAnchorMin;
            Vector2    anchorMax = m_Legend.location.runtimeAnchorMax;
            Vector2    pivot     = m_Legend.location.runtimePivot;

            var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax,
                                                     pivot, new Vector2(chartWidth, chartHeight));

            legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight);

            m_LegendRealShowName = m_Series.GetSerieNameList();
            List <string> datas;

            if (m_Legend.show && m_Legend.data.Count > 0)
            {
                datas = new List <string>();
                for (int i = 0; i < m_LegendRealShowName.Count; i++)
                {
                    if (m_Legend.data.Contains(m_LegendRealShowName[i]))
                    {
                        datas.Add(m_LegendRealShowName[i]);
                    }
                }
            }
            else
            {
                datas = m_LegendRealShowName;
            }
            int totalLegend = 0;

            for (int i = 0; i < datas.Count; i++)
            {
                if (!m_Series.IsLegalLegendName(datas[i]))
                {
                    continue;
                }
                totalLegend++;
            }
            m_Legend.RemoveButton();
            ChartHelper.DestroyAllChildren(legendObject.transform);
            if (!m_Legend.show)
            {
                return;
            }



            //天讯修改,保存当前Legend对象
            List <Button> btns = new List <Button>();

            for (int i = 0; i < datas.Count; i++)
            {
                if (!m_Series.IsLegalLegendName(datas[i]))
                {
                    continue;
                }
                string legendName = m_Legend.GetFormatterContent(datas[i]);
                var    readIndex  = m_LegendRealShowName.IndexOf(datas[i]);
                var    objName    = s_LegendObjectName + "_" + i + "_" + datas[i];

                Button btn = ChartHelper.AddButtonObject(objName, legendObject.transform,
                                                         m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor,
                                                         anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight));

                var bgColor = IsActiveByLegend(datas[i]) ?
                              m_ThemeInfo.GetColor(readIndex) : m_ThemeInfo.legendUnableColor;

                m_Legend.SetButton(legendName, btn, totalLegend);
                m_Legend.UpdateButtonColor(legendName, bgColor);
                btn.GetComponentInChildren <Text>().text = legendName;

                //天讯修改
                btn.transform.localRotation = Quaternion.identity;//保证文字的角度为零
                btns.Add(btn);

                ChartHelper.ClearEventListener(btn.gameObject);
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) =>
                {
                    if (data.selectedObject == null || m_Legend.selectedMode == Legend.SelectedMode.None)
                    {
                        return;
                    }
                    var temp            = data.selectedObject.name.Split('_');
                    string selectedName = temp[2];
                    int clickedIndex    = int.Parse(temp[1]);
                    if (m_Legend.selectedMode == Legend.SelectedMode.Multiple)
                    {
                        OnLegendButtonClick(clickedIndex, selectedName, !IsActiveByLegend(selectedName));
                    }
                    else
                    {
                        var btnList = m_Legend.buttonList.Values.ToArray();
                        if (btnList.Length == 1)
                        {
                            OnLegendButtonClick(0, selectedName, !IsActiveByLegend(selectedName));
                        }
                        else
                        {
                            for (int n = 0; n < btnList.Length; n++)
                            {
                                temp         = btnList[n].name.Split('_');
                                selectedName = temp[2];
                                var index    = int.Parse(temp[1]);
                                OnLegendButtonClick(n, selectedName, index == clickedIndex ? true : false);
                            }
                        }
                    }
                });
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerEnter, (data) =>
                {
                    if (btn == null)
                    {
                        return;
                    }
                    var temp            = btn.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonEnter(index, selectedName);
                });
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerExit, (data) =>
                {
                    if (btn == null)
                    {
                        return;
                    }
                    var temp            = btn.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonExit(index, selectedName);
                });
            }
            if (m_Legend.selectedMode == Legend.SelectedMode.Single)
            {
                for (int n = 0; n < m_LegendRealShowName.Count; n++)
                {
                    OnLegendButtonClick(n, m_LegendRealShowName[n], n == 0 ? true : false);
                }
            }

            //天讯修改,当高度和者宽度设置-1时,设置控制自适应内容
            if (m_Legend.itemWidth == -1 && m_Legend.itemHeight == -1)
            {
                btns.Sort((l, r) =>
                {
                    var lTextLength = l.GetComponentInChildren <Text>().text.Length;
                    var rTextLength = r.GetComponentInChildren <Text>().text.Length;
                    return(lTextLength == rTextLength ? 0 : lTextLength < rTextLength ? 1 : -1);
                });

                m_Legend.itemWidth  = btns[0].GetComponentInChildren <Text>().preferredWidth + 15;;
                m_Legend.itemHeight = btns[0].GetComponentInChildren <Text>().preferredHeight + 5;;
                foreach (Button button in btns)
                {
                    var btnTransform = button.transform as RectTransform;
                    btnTransform.sizeDelta = new Vector2(m_Legend.itemWidth, m_Legend.itemHeight);
                }
            }
        }
Esempio n. 30
0
        private void InitLegend()
        {
            m_Legend.OnChanged();
            ChartHelper.HideAllObject(transform, s_LegendObjectName);
            TextAnchor anchor    = m_Legend.location.textAnchor;
            Vector2    anchorMin = m_Legend.location.anchorMin;
            Vector2    anchorMax = m_Legend.location.anchorMax;
            Vector2    pivot     = m_Legend.location.pivot;

            var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax,
                                                     pivot, new Vector2(chartWidth, chartHeight));

            legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight);
            ChartHelper.HideAllObject(legendObject, s_LegendObjectName);

            var           serieNameList = m_Series.GetSerieNameList();
            List <string> datas;

            if (m_Legend.data.Count > 0)
            {
                datas = new List <string>();
                for (int i = 0; i < m_Legend.data.Count; i++)
                {
                    var category = m_Legend.data[i];
                    if (serieNameList.Contains(category))
                    {
                        datas.Add(category);
                    }
                }
            }
            else
            {
                datas = serieNameList;
            }
            m_Legend.RemoveButton();
            for (int i = 0; i < datas.Count; i++)
            {
                string legendName = datas[i];
                Button btn        = ChartHelper.AddButtonObject(s_LegendObjectName + "_" + i + "_" + legendName, legendObject.transform,
                                                                m_ThemeInfo.font, m_Legend.itemFontSize, m_ThemeInfo.legendTextColor, anchor,
                                                                anchorMin, anchorMax, pivot, new Vector2(m_Legend.itemWidth, m_Legend.itemHeight));
                var bgColor = IsLegendActive(legendName) ? m_ThemeInfo.GetColor(i) : m_ThemeInfo.legendUnableColor;
                m_Legend.SetButton(legendName, btn, datas.Count);
                m_Legend.UpdateButtonColor(legendName, bgColor);
                btn.GetComponentInChildren <Text>().text = legendName;
                ChartHelper.ClearEventListener(btn.gameObject);
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) =>
                {
                    if (data.selectedObject == null)
                    {
                        return;
                    }
                    var temp            = data.selectedObject.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonClick(index, selectedName);
                });
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerEnter, (data) =>
                {
                    if (btn == null)
                    {
                        return;
                    }
                    var temp            = btn.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonEnter(index, selectedName);
                });
                ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerExit, (data) =>
                {
                    if (btn == null)
                    {
                        return;
                    }
                    var temp            = btn.name.Split('_');
                    string selectedName = temp[2];
                    int index           = int.Parse(temp[1]);
                    OnLegendButtonExit(index, selectedName);
                });
            }
        }