示例#1
0
 /// <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);
     }
 }
示例#2
0
 /// <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;
         }
     }
 }