/// <summary> /// 获得指定区域缩放的类目数据列表 /// </summary> /// <param name="dataZoom">区域缩放</param> /// <returns></returns> internal List <string> GetDataList(DataZoom dataZoom) { if (dataZoom != null && dataZoom.enable && dataZoom.IsContainsAxisIndex(index)) { UpdateFilterData(dataZoom); return(filterData); } else { return(m_Data.Count > 0 ? m_Data : m_RuntimeData); } }
/// <summary> /// 更新dataZoom对应的类目数据列表 /// </summary> /// <param name="dataZoom"></param> internal void UpdateFilterData(DataZoom dataZoom) { if (dataZoom != null && dataZoom.enable && dataZoom.IsContainsAxisIndex(index)) { var startIndex = (int)((data.Count - 1) * dataZoom.start / 100); var endIndex = (int)((data.Count - 1) * dataZoom.end / 100); if (endIndex < startIndex) { endIndex = startIndex; } if (startIndex != filterStart || endIndex != filterEnd || dataZoom.minShowNum != filterMinShow || m_NeedUpdateFilterData) { filterStart = startIndex; filterEnd = endIndex; filterMinShow = dataZoom.minShowNum; m_NeedUpdateFilterData = false; var data = GetDataList(); if (data.Count > 0) { var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1; if (count < dataZoom.minShowNum) { if (dataZoom.minShowNum > data.Count) { count = data.Count; } else { count = dataZoom.minShowNum; } } if (startIndex + count > data.Count) { int start = endIndex - count; filterData = data.GetRange(start < 0 ? 0 : start, count); } else { filterData = data.GetRange(startIndex, count); } } else { filterData = data; } } else if (endIndex == 0) { filterData = emptyFliter; } } }