예제 #1
0
파일: Input.cs 프로젝트: Adi7693/PostRig
        private void TimeCalculate()
        {
            if (TimeNeedsToRecalculate)
            {
                if (TimeIntervals == null)
                {
                    TimeIntervals = new List <double>();
                }

                TimeIntervals.Clear();

                //DateTime time = DateTime.Now;

                for (double i = StartTime; i <= EndTime + TimeStep / 2.0; i += TimeStep)
                {
                    double interval = Math.Round(i, 6);
                    TimeIntervals.Add(interval);
                }

                //_tTime = (DateTime.Now - time).TotalMilliseconds;

                TimeNeedsToRecalculate = false;

                FrequencyNeedsToRecalculate = true;
            }
        }
예제 #2
0
        //Получение времени источника
        public TimeInterval GetTime()
        {
            TimeIntervals.Clear();
            TimeInterval t = null;

            try
            {
                if (IsOriginal)
                {
                    t = new TimeInterval(Different.MinDate.AddYears(1), DateTime.Now);
                }
                else
                {
                    using (var sys = new SysTabl(DatabaseFile, false))
                        t = new TimeInterval(DateTime.Parse(sys.Value("BeginInterval")), DateTime.Parse(sys.Value("EndInterval")));
                }
                TimeIntervals.Add(t);
            }
            catch (Exception ex)
            {
                AddError("Ошибка определения диапазона источника", ex);
                IsConnected = false;
            }
            return(t);
        }
    public override void performEnterAction(Collider platform, Collider other)
    {
        switch (currentTimeInterval)
        {
        case TimeIntervals.Day:
            currentTimeInterval = TimeIntervals.Week;
            day.SetActive(false);
            week.SetActive(true);
            break;

        case TimeIntervals.Month:
            month.SetActive(false);
            year.SetActive(true);
            currentTimeInterval = TimeIntervals.Year;
            break;

        case TimeIntervals.Week:
            week.SetActive(false);
            month.SetActive(true);
            currentTimeInterval = TimeIntervals.Month;
            break;

        case TimeIntervals.Year:
            year.SetActive(false);
            fiveYear.SetActive(true);
            currentTimeInterval = TimeIntervals.FiveYears;
            break;

        case TimeIntervals.FiveYears:
            fiveYear.SetActive(false);
            day.SetActive(true);
            currentTimeInterval = TimeIntervals.Day;
            break;
        }
    }
예제 #4
0
        public void TestMergeIntervals2()
        {
            var intervals1 = TimeIntervals.FromIntervals(new[]
            {
                new KeyValuePair <float, float>(24.81052f, 24.98775f),
                new KeyValuePair <float, float>(34.53197f, 34.53515f),
                new KeyValuePair <float, float>(34.83207f, 35.22802f),
                new KeyValuePair <float, float>(38.6576f, 38.69949f),
                new KeyValuePair <float, float>(39.49813f, 39.92231f),
                new KeyValuePair <float, float>(39.96412f, 40.01009f),
                new KeyValuePair <float, float>(40.05416f, 40.16293f),
                new KeyValuePair <float, float>(49.02427f, 49.05523f),
                new KeyValuePair <float, float>(54.82053f, 54.94222f),
                new KeyValuePair <float, float>(54.9833f, 55.0249f),
                new KeyValuePair <float, float>(57.92376f, 57.92695f),
                new KeyValuePair <float, float>(58.0083f, 58.04743f),
                new KeyValuePair <float, float>(63.76418f, 63.86788f),
                new KeyValuePair <float, float>(65.5108f, 65.52985f),
                new KeyValuePair <float, float>(65.57608f, 65.65861f),
                new KeyValuePair <float, float>(66.70279f, 67.11095f),
                new KeyValuePair <float, float>(70.06538f, 70.125f),
                new KeyValuePair <float, float>(77.27367f, 77.53282f),
                new KeyValuePair <float, float>(83.9983f, 84.04679f),
            });
            var intervals2 = TimeIntervals.FromIntervals(new[]
            {
                new KeyValuePair <float, float>(0.002652853f, 97.00591f)
            });
            var result = intervals1.Intersect(intervals2);

            Assert.AreEqual(19, result.Count);
        }
예제 #5
0
 public virtual void RemoveAllIntervals()
 {
     foreach (var interval in TimeIntervals.Reverse())
     {
         RemoveTimeInterval(interval);
     }
 }
예제 #6
0
 private bool TryGetTime()
 {
     if (!IsConnected && !Connect())
     {
         return(false);
     }
     try
     {
         Logger.AddEvent("Определение диапазона источника");
         var cmd = new OleDbCommand("Exec RT_ARCHDATE", Connection);
         using (OleDbDataReader rec = cmd.ExecuteReader())
         {
             if (rec == null)
             {
                 return(false);
             }
             rec.Read();
             BeginTime = (DateTime)rec[0];
             EndTime   = (DateTime)rec[1];
             TimeIntervals.Clear();
             TimeIntervals.Add(new TimeInterval(BeginTime, EndTime));
             Logger.AddEvent("Диапазон источника определен", BeginTime + " - " + EndTime);
             return(BeginTime.ToString() != "0:00:00");
         }
     }
     catch (Exception ex)
     {
         Logger.AddError("Ошибка определения диапазона архива ПТК Космотроника", ex);
         IsConnected = false;
         return(false);
     }
 }
예제 #7
0
        //Получение времени источника
        public TimeInterval GetTime()
        {
            TimeIntervals.Clear();
            var t = new TimeInterval(Different.MinDate.AddYears(1), DateTime.Now);

            TimeIntervals.Add(t);
            return(t);
        }
예제 #8
0
        //Получение диапазона архива по блокам истории
        public TimeInterval GetTime()
        {
            TimeIntervals.Clear();
            var ti = new TimeInterval(Different.MinDate, Different.MaxDate);

            TimeIntervals.Add(ti);
            return(ti);
        }
예제 #9
0
        public void TestMergeIntervals()
        {
            var intervals1 = TimeIntervals.FromIntervals(new [] { new KeyValuePair <float, float>(1, 3),
                                                                  new KeyValuePair <float, float>(5, 7) });
            var intervals2   = TimeIntervals.FromIntervals(new[] { new KeyValuePair <float, float>(2, 6) });
            var intersection = intervals1.Intersect(intervals2);

            Assert.AreEqual(2, intersection.Count);
            Assert.AreEqual(new KeyValuePair <float, float>(2, 3), intersection.Intervals.First());
            Assert.AreEqual(new KeyValuePair <float, float>(5, 6), intersection.Intervals.Last());
        }
예제 #10
0
        public void TestFromScanTimes()
        {
            var intervals = TimeIntervals.FromScanTimes(new float[] { 1, 2, 3, 4, 8, 9, 11, 15, 16 }, 1);

            Assert.AreEqual(3, intervals.Count);
            Assert.AreEqual(new KeyValuePair <float, float>(1, 4), intervals.Intervals.First());
            Assert.AreEqual(new KeyValuePair <float, float>(8, 9), intervals.Intervals.Skip(1).First());
            Assert.AreEqual(new KeyValuePair <float, float>(15, 16), intervals.Intervals.Last());

            intervals = TimeIntervals.FromScanTimes(new float[] { 2, 4, 6, 8 }, 1);
            Assert.AreEqual(0, intervals.Count);
        }
        public double GetViewers(int unitsFromStart)
        {
            int unitsPassed = 0;

            foreach (var span in TimeIntervals)
            {
                unitsPassed += span.SpanUnits;
                if (unitsFromStart < unitsPassed)
                {
                    return(span.Viewers);
                }
            }
            return(TimeIntervals.Last().Viewers);
        }
예제 #12
0
 //Получение диапазона клона
 public TimeInterval GetTime()
 {
     if (CloneFile.IsEmpty())
     {
         return(new TimeInterval(Different.MinDate, Different.MaxDate));
     }
     using (var sys = new SysTabl(CloneFile))
     {
         TimeIntervals.Clear();
         var t = new TimeInterval(sys.Value("BeginInterval").ToDateTime(), IsHandInput ? DateTime.Now : sys.Value("EndInterval").ToDateTime());
         TimeIntervals.Add(t);
         return(t);
     }
 }
예제 #13
0
 //Получение диапазона клона
 public TimeInterval GetTime()
 {
     try
     {
         using (var rec = new DataSetSql(SqlProps, "SysTabl"))
         {
             rec.FindFirst("ParamName", "BeginInterval");
             TimeIntervals.Clear();
             var t = new TimeInterval(rec.GetString("ParamValue").ToDateTime(), DateTime.Now);
             TimeIntervals.Add(t);
             return(t);
         }
     }
     catch { return(new TimeInterval(Different.MinDate, Different.MaxDate)); }
 }
예제 #14
0
        //Получение диапазона архива по блокам истории
        public TimeInterval GetTime()
        {
            TimeIntervals.Clear();
            DateTime mind = Different.MaxDate, maxd = Different.MinDate;
            DateTime mint = Different.MaxDate, maxt = Different.MinDate;

            try
            {
                using (var rec = new ReaderAdo(SqlProps, "SELECT FromDate, ToDate FROM v_HistoryBlock ORDER BY FromDate, ToDate DESC"))
                    while (rec.Read())
                    {
                        var fromd = rec.GetTime("FromDate");
                        var tod   = rec.GetTime("ToDate");
                        if (fromd < mind)
                        {
                            mind = fromd;
                        }
                        if (fromd.Subtract(maxt).TotalMinutes > 1)
                        {
                            if (maxt != Different.MinDate)
                            {
                                TimeIntervals.Add(new TimeInterval(mint, maxt));
                            }
                            mint = fromd;
                        }
                        if (maxd < tod)
                        {
                            maxd = tod;
                        }
                        if (maxt < tod)
                        {
                            maxt = tod;
                        }
                    }
            }
            catch (Exception ex)
            {
                Logger.AddError("Ошибка при получении диапазона источника", ex);
            }
            if (mind == Different.MaxDate && maxd == Different.MinDate)
            {
                return(new TimeInterval(Different.MinDate, Different.MaxDate));
            }
            Logger.AddEvent("Диапазон источника определен", mind + " - " + maxd);
            return(new TimeInterval(mind, maxd));
        }
예제 #15
0
파일: InputData.cs 프로젝트: Adi7693/2DoF
        private void TimeCalculate()
        {
            if (TimeNeedsToRecalculate)
            {
                if (TimeIntervals == null)
                {
                    TimeIntervals = new List <double>();
                }

                TimeIntervals.Clear();

                for (double i = StartTime; i <= EndTime + TimeStep / 2.0; i += TimeStep)
                {
                    double interval = Math.Round(i, 6);
                    TimeIntervals.Add(interval);
                }

                TimeNeedsToRecalculate = false;
            }
        }
예제 #16
0
        //Получение диапазона архива
        public TimeInterval GetTime()
        {
            var pdic = Archive.ReadProjects(ReportType.Calc);
            var t    = new TimeInterval(Different.MaxDate, Different.MinDate);

            foreach (var pr in pdic.Values)
            {
                var dic = Archive.ReadRanges(pr.Code, ReportType.Calc);
                AddIntervalTime(dic, IntervalType.Day, t);
                AddIntervalTime(dic, IntervalType.Hour, t);
                AddIntervalTime(dic, IntervalType.Base, t);
                AddIntervalTime(dic, IntervalType.Moments, t);
                AddIntervalTime(dic, IntervalType.AbsoluteDay, t);
            }
            TimeIntervals.Clear();
            TimeIntervals.Add(t);
            BeginTime = t.Begin;
            EndTime   = t.End;
            return(t);
        }
예제 #17
0
        public static TimeIntervals ToTimeInterval(this String val)
        {
            TimeIntervals retVal = TimeIntervals.None;

            switch (val)
            {
            case "Day":
                retVal = TimeIntervals.Day;
                break;

            case "Week":
                retVal = TimeIntervals.Week;
                break;

            case "Month":
                retVal = TimeIntervals.Month;
                break;
            }

            return(retVal);
        }
        internal void AddTimeInterval(ViewershipSpan span)
        {
            if (TimeIntervals.Count == 0)
            {
                TimeIntervals.Add(span);
                return;
            }
            ViewershipSpan previous = TimeIntervals.Last();

            if (previous.Viewers == span.Viewers || span.Viewers == 0 || previous.Viewers == 0)
            {
                previous.SpanUnits += span.SpanUnits;
                previous.Span      += span.Span;
                previous.EndTime   += span.Span;
                if (previous.Viewers == 0)
                {
                    previous.Viewers = span.Viewers;
                }
                return;
            }
            TimeIntervals.Add(span);
        }