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++; } } }
void InitModuleButton() { var btnPanel = transform.Find("chart_list"); m_BtnClone = transform.Find("btn_clone").gameObject; m_BtnClone.SetActive(false); ChartHelper.DestroyAllChildren(btnPanel); foreach (var module in m_ChartModule) { var btnName = "btn_" + module.name; GameObject btn; if (btnPanel.Find(btnName)) { btn = btnPanel.Find(btnName).gameObject; btn.SetActive(true); } else { btn = GameObject.Instantiate(m_BtnClone); btn.SetActive(true); btn.name = btnName; btn.transform.SetParent(btnPanel); btn.transform.localPosition = Vector3.zero; } btn.transform.localScale = Vector3.one; module.button = btn.GetComponent <Button>(); module.button.GetComponentInChildren <Text>().text = module.name; ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) => { ClickModule(module); }); } for (int i = 0; i < m_ChartModule.Count; i++) { var module = m_ChartModule[i]; if (module.select) { ClickModule(module); m_LastSelectedModuleIndex = i; break; } } }
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); } } }
/// <summary> /// 移除所有图表子节点,会自动重现初始化。 /// </summary> public void RemoveChartObject() { ChartHelper.DestroyAllChildren(transform); //SetAllComponentDirty(); }
/// <summary> /// 移除所有图表子节点,会自动重现初始化。 /// </summary> public void RemoveChartObject() { ChartHelper.DestroyAllChildren(transform); }
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; } 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 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); }