コード例 #1
0
ファイル: ProfileData.cs プロジェクト: HowLeaky/HowLeaky-Core
 /// <summary>
 ///
 /// </summary>
 /// <param name="dayindex"></param>
 /// <param name="today"></param>
 //public void UpdateDayIndex(int dayindex, DateTime today)
 public void UpdateDayIndex(BrowserDate today)
 {
     try
     {
         int last = jdays.Count;
         if (last >= 0)
         {
             int dayno = today.GetJDay();    //CHECK
             if (jdays[last - 1] <= 366)
             {
                 dayIndex = dayno;
             }
             else
             {
                 int nolaps     = (int)(jdays[last - 1] / 366) + 1;
                 int resetvalue = nolaps * 365;
                 if (dayIndex >= resetvalue && dayno == 1)
                 {
                     dayIndex = 1;
                 }
                 else
                 {
                     dayIndex++;
                 }
             }
         }
     }
     catch (Exception ex)
     {
         throw ErrorLogger.CreateException(ex);
     }
 }
コード例 #2
0
ファイル: Sequence.cs プロジェクト: HowLeaky/HowLeaky-Core
 /// <summary>
 ///
 /// </summary>
 /// <param name="date"></param>
 /// <returns></returns>
 public bool ContainsDate(BrowserDate date)
 {
     if (Dates.Any(x => x.DateInt == date.DateInt))
     {
         return(true);
     }
     return(false);
 }
コード例 #3
0
 public bool MatchesDate(BrowserDate date)
 {
     if (Day == MathTools.MISSING_DATA_VALUE || Month == MathTools.MISSING_DATA_VALUE || Enabled == false)
     {
         return(false);
     }
     return(date.Day == Day && date.Month == Month);
 }
コード例 #4
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public BrowserDate IncrementYear()
        {
            var date = new BrowserDate(Year + 1, Month, Day);

            DateInt = date.DateInt;
            Day     = date.Day;
            Month   = date.Month;
            Year    = date.Year;
            return(date);
        }
コード例 #5
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public BrowserDate AddDays(float days)
        {
            var date = new BrowserDate(DateInt + days);

            //DateInt=date.DateInt;
            //Day=date.Day;
            //Month=date.Month;
            //Year=date.Year;
            return(date);
        }
コード例 #6
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public BrowserDate DecrementDay()
        {
            var date = new BrowserDate(DateInt - 1);

            DateInt = date.DateInt;
            Day     = date.Day;
            Month   = date.Month;
            Year    = date.Year;
            return(date);
        }
コード例 #7
0
ファイル: ProfileData.cs プロジェクト: HowLeaky/HowLeaky-Core
        public double GetValueForDayIndex(string datakey, BrowserDate today)
        {
            // UpdateDayIndex(today);
            List <double> data  = values[datakey];
            int           count = data.Count;

            for (int i = 0; i < count; ++i)
            {
                if (dayIndex < jdays[0])
                {
                    //double m, c, denom;
                    //denom = (double)(jdays[0]);
                    //if (denom != 0)
                    //{
                    //    //TODO: fix this
                    //    //m = data[0] / denom; //This is not correct
                    //}
                    //else
                    //{
                    //    return 0;
                    //}
                    //c = data[0] - m * jdays[0];
                    //return (m * dayindex + c);

                    //return 0;

                    //After discussion with Dan Rattray...
                    return(data[0]);
                }
                else if (dayIndex == jdays[i])
                {
                    return(data[i]);
                }
                else if (dayIndex < jdays[i])
                {
                    double m, c, denom;
                    denom = (jdays[i] - jdays[i - 1]);
                    if (denom != 0)
                    {
                        m = (data[i] - data[i - 1]) / denom;
                    }
                    else
                    {
                        return(0);
                    }
                    c = data[i] - m * jdays[i];
                    return(m * dayIndex + c);
                }
            }
            return(data[count - 1]);
        }
コード例 #8
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
 public BrowserDate(BrowserDate source)
 {
     try
     {
         DateInt = source.DateInt;
         Day     = source.Day;
         Month   = source.Month;
         Year    = source.Year;
     }
     catch (Exception ex)
     {
         throw ErrorLogger.CreateException(ex);
     }
 }
コード例 #9
0
        public double GetValueAtDate(BrowserDate date)
        {
            var dateitem = Dates.FirstOrDefault(x => x.DateInt == date.DateInt);

            if (dateitem != null)
            {
                int index = Dates.IndexOf(dateitem);

                if (index >= 0)
                {
                    return(Values[index]);
                }
            }
            return(MathTools.MISSING_DATA_VALUE);
        }
コード例 #10
0
ファイル: Sequence.cs プロジェクト: HowLeaky/HowLeaky-Core
        /// <summary>
        ///
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public double ValueAtDate(BrowserDate date)
        {
            var dateobject = Dates.FirstOrDefault(x => x.DateInt == date.DateInt);

            if (dateobject != null)
            {
                int dateIndex = Dates.IndexOf(dateobject);

                if (dateIndex >= 0)
                {
                    return(Values[dateIndex]);
                }
            }
            return(0);
        }
コード例 #11
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public bool IsBeforeLastMonth()
        {
            BrowserDate today = BrowserDate.Today();
            var         year  = today.Year;
            var         month = today.Month - 1;

            if (month < 0)
            {
                month = month + 12;
                --year;
            }
            var testdate = new BrowserDate(year, month, 1);

            return(IsBefore(testdate));
        }
コード例 #12
0
        static public bool WriteOutputs(string filename, HowLeaky_SimulationEngine.Tools.BrowserDate startDate, HowLeaky_SimulationEngine.Tools.BrowserDate endDate, int format, List <string> headers, int count, List <List <double?> > values)
        {
            try
            {
                using (var w = new System.IO.StreamWriter(filename))
                {
                    w.WriteLine(string.Join(",", headers));
                    w.Flush();
                    for (var row = 0; row < count; ++row)
                    {
                        var list = new List <string>();
                        if (format == 1)
                        {
                            var date = startDate.AddDays(row);
                            list.Add(date.ToString("dd/MM/yyyy"));
                        }
                        else if (format == 2)
                        {
                            var date    = new HowLeaky_SimulationEngine.Tools.BrowserDate(startDate.DateInt).AddMonths(row);
                            var lastday = HowLeaky_SimulationEngine.Tools.BrowserDate.LastDayOfMonth(date.Year, date.Month);
                            date = new HowLeaky_SimulationEngine.Tools.BrowserDate(date.Year, date.Month, lastday);
                            list.Add(date.ToString("MM/yyyy"));
                        }
                        else if (format == 3)
                        {
                            var date = new HowLeaky_SimulationEngine.Tools.BrowserDate(startDate.DateInt).AddYears(row);
                            list.Add(date.ToString("yyyy"));
                        }

                        foreach (var array in values)
                        {
                            list.Add($"{array[row]:F5}");
                        }
                        w.WriteLine(string.Join(",", list));
                        w.Flush();
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw ErrorLogger.CreateException(ex);
            }

            //return false;
        }
コード例 #13
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public BrowserDate AddYears(int years)
        {
            var day     = Day;
            var month   = Month;
            var newyear = Year + years;
            var lastday = LastDayOfMonth(newyear, month);

            if (day > lastday)
            {
                day = lastday;
            }
            var date = new BrowserDate(newyear, month, day);

            DateInt = date.DateInt;
            Day     = date.Day;
            Month   = date.Month;
            Year    = date.Year;
            return(date);
        }
コード例 #14
0
ファイル: Sequence.cs プロジェクト: HowLeaky/HowLeaky-Core
        /// <summary>
        ///
        /// </summary>
        private void parseStringValue()
        {
            List <String> parts = new List <string>(_Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));

            //foreach (String s in parts)
            for (int i = 0; i < parts.Count; i += 2)
            {
                string s = parts[i];

                List <String> seqParts = new List <string>(s.Split(new string[] { "\"", ",", " " }, StringSplitOptions.RemoveEmptyEntries));
                BrowserDate   thisDate = parseDate(seqParts[0]);

                if (thisDate != null)
                {
                    Dates.Add(thisDate);

                    string[] valParts = parts[i + 1].Split(new string[] { "\"", ",", " " }, StringSplitOptions.RemoveEmptyEntries);

                    double value = -1;
                    double.TryParse(valParts[0], out value);
                    Values.Add(value);
                }
            }
        }
コード例 #15
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
 public bool IsBetween(BrowserDate date1, BrowserDate date2)
 {
     return(DateInt >= date1.DateInt && DateInt <= date2.DateInt);
 }
コード例 #16
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public BrowserDate GetStartOfMonth()
        {
            var date = new BrowserDate(Year, Month, 1);

            return(date);
        }
コード例 #17
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        public BrowserDate GetStartOfYear()
        {
            var date = new BrowserDate(Year, 1, 1);

            return(date);
        }
コード例 #18
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
 public bool IsBefore(BrowserDate date)
 {
     return(DateInt < date.DateInt);
 }
コード例 #19
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        internal int GetJDay()
        {
            var basedate = new BrowserDate(Year, 1, 1);

            return(DateInt - basedate.DateInt + 1);
        }
コード例 #20
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
 public bool IsSameDate(BrowserDate date)
 {
     return(DateInt == date.DateInt);
 }
コード例 #21
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
 public int DaysFrom(BrowserDate date)
 {
     return(Math.Abs(DateInt - date.DateInt));
 }
コード例 #22
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
 public bool IsBeforeYesterday()
 {
     return(IsBefore(BrowserDate.Yesterday()));
 }
コード例 #23
0
ファイル: BrowserDate.cs プロジェクト: HowLeaky/HowLeaky-Core
        //public int MonthsFrom(BrowserDate date)
        //{
        //    return (int)(Math.Abs(DateInt - date.DateInt) / (365.2422 / 12.0) + 0.5);
        //}

        public int MonthsFrom(BrowserDate date)
        {
            return(((Year - date.Year) * 12) + Month - date.Month);
        }