Ejemplo n.º 1
0
        /// <summary>
        /// 根据给定的最大最小时间戳范围,计算合适的Tick值
        /// </summary>
        /// <param name="list"></param>
        /// <param name="minTimestamp"></param>
        /// <param name="maxTimestamp"></param>
        /// <param name="splitNumber"></param>
        internal static void UpdateTimeAxisDateTimeList(List <double> list, int minTimestamp, int maxTimestamp, int splitNumber)
        {
            list.Clear();
            var range = maxTimestamp - minTimestamp;

            if (range <= 0)
            {
                return;
            }
            if (splitNumber <= 0)
            {
                splitNumber = 1;
            }
            var dtMin = DateTimeUtil.GetDateTime(minTimestamp);
            var dtMax = DateTimeUtil.GetDateTime(maxTimestamp);

            if (range >= ONE_YEAR * MIN_TIME_SPLIT_NUMBER)
            {
                var num     = Math.Max(range / (splitNumber * ONE_YEAR), 1);
                var dtStart = new DateTime(dtMin.Year + 1, 1, 1);
                while (dtStart.Ticks < dtMax.Ticks)
                {
                    list.Add(DateTimeUtil.GetTimestamp(dtStart));
                    dtStart = dtStart.AddYears(num);
                }
            }
            else if (range >= ONE_MONTH * MIN_TIME_SPLIT_NUMBER)
            {
                var num     = Math.Max(range / (splitNumber * ONE_MONTH), 1);
                var dtStart = new DateTime(dtMin.Year, dtMin.Month, 1).AddMonths(1);
                while (dtStart.Ticks < dtMax.Ticks)
                {
                    list.Add(DateTimeUtil.GetTimestamp(dtStart));
                    dtStart = dtStart.AddMonths(num);
                }
            }
            else if (range >= ONE_DAY * MIN_TIME_SPLIT_NUMBER)
            {
                var tick           = GetTickSecond(range, splitNumber, ONE_DAY);
                var startTimestamp = (minTimestamp - minTimestamp % tick) + tick;
                AddTickTimestamp(list, startTimestamp, maxTimestamp, tick);
            }
            else if (range >= ONE_HOUR * MIN_TIME_SPLIT_NUMBER)
            {
                var tick           = GetTickSecond(range, splitNumber, ONE_HOUR);
                var startTimestamp = (minTimestamp - minTimestamp % tick) + tick;
                AddTickTimestamp(list, startTimestamp, maxTimestamp, tick);
            }
            else if (range >= ONE_MINUTE * MIN_TIME_SPLIT_NUMBER)
            {
                var tick           = GetTickSecond(range, splitNumber, ONE_MINUTE);
                var startTimestamp = (minTimestamp - minTimestamp % tick) + tick;
                AddTickTimestamp(list, startTimestamp, maxTimestamp, tick);
            }
            else
            {
                var tick           = GetTickSecond(range, splitNumber, ONE_SECOND);
                var startTimestamp = (minTimestamp - minTimestamp % tick) + tick;
                AddTickTimestamp(list, startTimestamp, maxTimestamp, tick);
            }
        }
        /// <summary>
        /// Add a (time,y) data to serie.
        /// |添加(time,y)数据到指定的系列中。
        /// </summary>
        /// <param name="serieIndex"></param>
        /// <param name="time"></param>
        /// <param name="yValue"></param>
        /// <param name="dataName"></param>
        /// <param name="dataId"></param>
        /// <returns></returns>
        public SerieData AddData(int serieIndex, DateTime time, double yValue, string dataName = null, string dataId = null)
        {
            var xValue = DateTimeUtil.GetTimestamp(time);

            return(AddData(serieIndex, xValue, yValue, dataName, dataId));
        }