Ejemplo n.º 1
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);
                }
            }
        }
Ejemplo n.º 2
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);
                }
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
                });
            }
        }