public void AddEvent(MonitorEvent ev) { if (Day <= ev.Time && ev.Time < Day.AddDays(1)) { _Events.AddSorted(ev); OnPropertyChanged("Events"); } }
} // LastDaysOfMonthPeriodCollector // ---------------------------------------------------------------------- protected override bool OnVisitDay(Day day, CalendarPeriodCollectorContext context) { // allow only the last day of the month if (day.Month == day.AddDays(TimeSpec.DaysPerWeek).Month) { return(false); } return(base.OnVisitDay(day, context)); } // OnVisitDay
public SummaryAndPlan GetSummaryAndPlan(string UserName, string DateSelect = "") { DateTime Day; if (string.IsNullOrEmpty(DateSelect)) { Day = DateTime.Today; } else { Day = DateTime.Parse(DateSelect); } if (!string.IsNullOrEmpty(userName)) { UserName = userName; } //获取本周第一天 int Weeknow = Convert.ToInt32(Day.DayOfWeek); //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。 Weeknow = (Weeknow == 0 ? (7 - 1) : (Weeknow - 1)); int Daydiff = (-1) * Weeknow; //本周第一天 string FirstDay = Day.AddDays(Daydiff).ToString("yyyy-MM-dd"); FD = FirstDay; //获取本周最后一天 int Weeknow1 = Convert.ToInt32(Day.DayOfWeek); Weeknow1 = (Weeknow1 == 0 ? 7 : Weeknow1); Daydiff = (7 - Weeknow1); //本周最后一天 string LastDay = Day.AddDays(Daydiff).ToString("yyyy-MM-dd"); List <SummaryAndPlan> sp = new List <SummaryAndPlan>(); DataTable dt2 = new DataTable(); StringBuilder select2 = new StringBuilder(); select2.AppendFormat("select * from summaryandplan where writedate = '{0}' and writer = '{1}'", FirstDay, UserName); dt2 = MySqlHelper.mySqlExecuteQuery(select2.ToString(), null, false); sp = (from y in dt2.AsEnumerable() select new SummaryAndPlan { Plan = y.Field <string>("Plan"), Summary = y.Field <string>("summary") }).ToList <SummaryAndPlan>(); if (sp.FirstOrDefault() != null) { return(sp.FirstOrDefault()); } else { SummaryAndPlan sp2 = new SummaryAndPlan(); return(sp2); } }
} // Clear // ---------------------------------------------------------------------- private void SelectPeriod(PeriodSelectType periodSelectType) { int offset = 0; switch (periodSelectType) { case PeriodSelectType.Previous: offset = -1; break; case PeriodSelectType.Current: ResetWorkingPeriod(); return; case PeriodSelectType.Next: offset = 1; break; } switch (WorkingTimePeriod) { case TimePeriodMode.Year: Year year = new Year(WorkingPeriodStartDate); SetWorkingPeriod(year.AddYears(offset)); break; case TimePeriodMode.Halfyear: Halfyear halfyear = new Halfyear(WorkingPeriodStartDate); SetWorkingPeriod(halfyear.AddHalfyears(offset)); break; case TimePeriodMode.Quarter: Quarter quarter = new Quarter(WorkingPeriodStartDate); SetWorkingPeriod(quarter.AddQuarters(offset)); break; case TimePeriodMode.Month: Month month = new Month(WorkingPeriodStartDate); SetWorkingPeriod(month.AddMonths(offset)); break; case TimePeriodMode.Week: Week week = new Week(WorkingPeriodStartDate); SetWorkingPeriod(week.AddWeeks(offset)); break; case TimePeriodMode.Day: Day day = new Day(WorkingPeriodStartDate); SetWorkingPeriod(day.AddDays(offset)); break; } } // SelectPeriod
public void SimpleBackwardTest() { Day start = new Day(new DateTime(2011, 2, 15)); DaySeeker daySeeker = new DaySeeker(SeekDirection.Backward); Day day1 = daySeeker.FindDay(start, 0); Assert.IsTrue(day1.IsSamePeriod(start)); Day day2 = daySeeker.FindDay(start, 1); Assert.IsTrue(day2.IsSamePeriod(start.GetPreviousDay())); Day day3 = daySeeker.FindDay(start, 100); Assert.IsTrue(day3.IsSamePeriod(start.AddDays(-100))); } // SimpleBackwardTest
public void SimpleForwardTest() { Day start = new Day(new DateTime(2011, 2, 15)); DaySeeker daySeeker = new DaySeeker(); Day day1 = daySeeker.FindDay(start, 0); Assert.IsTrue(day1.IsSamePeriod(start)); Day day2 = daySeeker.FindDay(start, 1); Assert.IsTrue(day2.IsSamePeriod(start.GetNextDay())); Day day3 = daySeeker.FindDay(start, 100); Assert.IsTrue(day3.IsSamePeriod(start.AddDays(100))); } // SimpleForwardTest
public void AddDaysTest() { DateTime now = ClockProxy.Clock.Now; DateTime nowDay = new DateTime(now.Year, now.Month, now.Day); Day day = new Day(now, TimeCalendar.NewEmptyOffset()); Assert.Equal(day.AddDays(0), day); DateTime previousDay = nowDay.AddDays(-1); Assert.Equal(day.AddDays(-1).Year, previousDay.Year); Assert.Equal(day.AddDays(-1).Month, previousDay.Month); Assert.Equal(day.AddDays(-1).DayValue, previousDay.Day); DateTime nextDay = nowDay.AddDays(1); Assert.Equal(day.AddDays(1).Year, nextDay.Year); Assert.Equal(day.AddDays(1).Month, nextDay.Month); Assert.Equal(day.AddDays(1).DayValue, nextDay.Day); } // AddDaysTest
/// <summary> /// Показывает расписание предыдущего дня /// </summary> public void PreviousDay() { Day = Day.AddDays(-1); BuildFromXml(); }
/// <summary> /// Показывает расписание следующего дня /// </summary> public void NextDay() { Day = Day.AddDays(1); BuildFromXml(); }
public List <WeeklyNotes> GetWeeklyNotes(string UserName, string DateSelect = "") { DateTime Day; if (string.IsNullOrEmpty(DateSelect)) { Day = DateTime.Today; } else { Day = DateTime.Parse(DateSelect); } if (!string.IsNullOrEmpty(userName)) { UserName = userName; } //获取本周第一天 int Weeknow = Convert.ToInt32(Day.DayOfWeek); //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。 Weeknow = (Weeknow == 0 ? (7 - 1) : (Weeknow - 1)); int Daydiff = (-1) * Weeknow; //本周第一天 string FirstDay = Day.AddDays(Daydiff).ToString("yyyy-MM-dd"); FD = FirstDay; //获取本周最后一天 int Weeknow1 = Convert.ToInt32(Day.DayOfWeek); Weeknow1 = (Weeknow1 == 0 ? 7 : Weeknow1); Daydiff = (7 - Weeknow1); //本周最后一天 string LastDay = Day.AddDays(Daydiff).ToString("yyyy-MM-dd"); List <WeeklyNotes> weeklynotes2 = new List <WeeklyNotes>(); DataTable dt = new DataTable(); StringBuilder select = new StringBuilder(); select.AppendFormat("select * from weeklynotes where notedate >='{0}' and notedate <='{1}' and Name = '{2}'", FirstDay, LastDay, UserName); dt = MySqlHelper.mySqlExecuteQuery(select.ToString(), null, false); weeklynotes2 = (from x in dt.AsEnumerable() orderby x.Field <string>("NoteDate") select new WeeklyNotes { Name = x.Field <string>("Name"), Note = x.Field <string>("Note"), NoteDate = x.Field <string>("NoteDate"), CheckOpinion = x.Field <string>("CheckOpinion"), CheckFlag = x.Field <string>("CheckFlag"), Remarks = x.Field <string>("Remarks"), attendance = x.Field <string>("attendance"), location = x.Field <string>("location"), }).ToList <WeeklyNotes>(); List <WeeklyNotes> weeklynotes3 = new List <WeeklyNotes>(); DateTime day = DateTime.Parse(FirstDay); string[] WeekDays = new string[7]; for (int I = 0; I < 7; I++)//7行 { WeeklyNotes weeklyItem = new WeeklyNotes(); string day1 = day.AddDays(I - 0).ToString("yyyy-MM-dd"); WeekDays[I] = day1; var Flag = true; foreach (var Item in weeklynotes2) { if (Item.NoteDate == WeekDays[I]) { weeklynotes3.Add(Item); Flag = false; break; } } if (Flag) { weeklyItem.NoteDate = day1; weeklyItem.Name = UserName; weeklynotes3.Add(weeklyItem); } } return(weeklynotes3); }
public void GetNextDayTest() { Day day = new Day(); Assert.Equal(day.GetNextDay(), day.AddDays(1)); } // GetNextDayTest
public void GetPreviousDayTest() { Day day = new Day(); Assert.Equal(day.GetPreviousDay(), day.AddDays(-1)); } // GetPreviousDayTest
private async Task <string> GetWeekBreakdownDataAsync(string date, int daysBack, int counter) { TaskCompletionSource <string> tcs = new TaskCompletionSource <string>(); string Json = ""; await Task.Factory.StartNew(() => { GetWeekBreakdownDataThread = Thread.CurrentThread; DateTime EndPeriod = DateTime.Parse(date).Date; DateTime StartPeriod = EndPeriod.AddDays(-daysBack); List <(string, Dictionary <string, double>)> Days = new List <(string, Dictionary <string, double>)>(); foreach (DateTime Day in EachDay(StartPeriod, EndPeriod)) { DateTime Start = Day; DateTime End = Day.AddDays(1); List <Helper> ActivityHelper = StorageHandler.GetActivitiesByLambda(r => r.To >= Start && r.From < End).Select(aa => new Helper { Name = aa.Name.Split(new string[] { " - " }, StringSplitOptions.None).First(), From = aa.From > Start ? aa.From : Start, To = (DateTime)aa.To > End ? End : (DateTime)aa.To }).ToList(); // Check if the current activity should also be shown in the graph. if (AppStateTracker.CurrentActivity != null && StartPeriod == DateTime.Today) { ActivityHelper.Add(new Helper { Name = AppStateTracker.CurrentActivity.Name.Split(new string[] { " - " }, StringSplitOptions.None).First(), From = AppStateTracker.CurrentActivity.From > Start ? AppStateTracker.CurrentActivity.From : Start, To = DateTime.Now }); } // Compute time between Start and finish of the activity rounding to hours foreach (Helper h in ActivityHelper) { h.Time = Math.Max(Math.Round((h.To - h.From).TotalHours, 2), 0); } Dictionary <string, double> ActivityDict = new Dictionary <string, double>(); ActivityHelper .GroupBy(ah => ah.Name) .ToList() .ForEach(g => { ActivityDict.Add(g.Key, g.Sum(h => h.Time)); }); Days.Add((Day.DayOfWeek.ToString().Substring(0, 2), ActivityDict)); } // construct data List <Bardata> Bardata = Days.Select(d => new Bardata { Label = d.Item1, Datasets = d.Item2 .Where(h => AppStateTracker.ColorAssingments.ContainsKey(h.Key)) .Select(h => new Dataset { Title = h.Key, Value = h.Value, Color = AppStateTracker.ColorAssingments[h.Key] }).OrderBy(dd => dd.Title).ToList() }).ToList(); Json = JsonConvert.SerializeObject(new { value = Bardata, counter }); }); GetWeekBreakdownDataThread = null; tcs.SetResult(Json); return(tcs.Task.Result); }
private async Task <string> GetReportData1Async(List <Object> activities, string start, string end, int zoom, int counter) { TaskCompletionSource <string> tcs = new TaskCompletionSource <string>(); string Json = ""; await Task.Factory.StartNew(() => { GetReportData1Thread = Thread.CurrentThread; List <string> Activities = activities.Cast <string>().ToList(); DateTime StartPeriod = DateTime.Parse(start).Date; DateTime EndPeriod = DateTime.Parse(end).Date; List <(DateTime, Dictionary <string, double>)> Days = new List <(DateTime, Dictionary <string, double>)>(); foreach (DateTime Day in EachDay(StartPeriod, EndPeriod)) { DateTime Start = Day; DateTime End = Day.AddDays(1); List <Helper> ActivityHelper = StorageHandler.GetActivitiesByLambda(r => r.To >= Start && r.From < End && Activities.Contains(r.Name)).Select(aa => new Helper { Name = aa.Name.Split(new string[] { " - " }, StringSplitOptions.None).First(), From = aa.From > Start ? aa.From : Start, To = (DateTime)aa.To > End ? End : (DateTime)aa.To }).ToList(); // Check if the current activity should also be shown in the graph. if (AppStateTracker.CurrentActivity != null && Start == DateTime.Today && Activities.Contains(AppStateTracker.CurrentActivity.Name)) { ActivityHelper.Add(new Helper { Name = AppStateTracker.CurrentActivity.Name.Split(new string[] { " - " }, StringSplitOptions.None).First(), From = AppStateTracker.CurrentActivity.From > Start ? AppStateTracker.CurrentActivity.From : Start, To = DateTime.Now }); } // Compute time between Start and finish of the activity rounding to hours foreach (Helper h in ActivityHelper) { h.Time = Math.Max(Math.Round((h.To - h.From).TotalHours, 2), 0); } Dictionary <string, double> ActivityDict = new Dictionary <string, double>(); ActivityHelper .GroupBy(ah => ah.Name) .ToList() .ForEach(g => { ActivityDict.Add(g.Key, g.Sum(h => h.Time)); }); Days.Add((Day.Date, ActivityDict)); } // construct data List <Bardata> Bardata; if (zoom == 0) { Bardata = Days.OrderBy(d => d.Item1).Select(d => new Bardata { Label = d.Item1.ToString("dd.MM"), Datasets = d.Item2 .Where(h => AppStateTracker.ColorAssingments.ContainsKey(h.Key)) .Select(h => new Dataset { Title = h.Key, Value = h.Value, Color = AppStateTracker.ColorAssingments[h.Key] }).OrderBy(dd => dd.Title).ToList() }).ToList(); } else if (zoom == 1) { Bardata = Days .GroupBy(d => new { week = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(d.Item1, CalendarWeekRule.FirstDay, DayOfWeek.Monday), year = d.Item1.Year }) .OrderBy(g => g.Key.year) .ThenBy(g => g.Key.week) .Select(g => new Bardata { Label = "Week " + (g.Key.week + 1), Datasets = g.SelectMany(d => d.Item2).GroupBy(d => d.Key) .Where(gg => AppStateTracker.ColorAssingments.ContainsKey(gg.Key)) .Select(gg => new Dataset { Title = gg.Key, Value = gg.Sum(d => d.Value), Color = AppStateTracker.ColorAssingments[gg.Key] }).OrderBy(d => d.Title).ToList() }).ToList(); } else { Bardata = Days .OrderBy(d => d.Item1) .GroupBy(d => new { month = d.Item1.ToString("MMM", CultureInfo.InvariantCulture), year = d.Item1.Year }) .Select(g => new Bardata { Label = g.Key.month, Datasets = g.SelectMany(d => d.Item2).GroupBy(d => d.Key) .Where(gg => AppStateTracker.ColorAssingments.ContainsKey(gg.Key)) .Select(gg => new Dataset { Title = gg.Key, Value = gg.Sum(d => d.Value), Color = AppStateTracker.ColorAssingments[gg.Key] }).OrderBy(d => d.Title).ToList() }).ToList(); } Json = JsonConvert.SerializeObject(new { value = Bardata, counter }); }); GetReportData1Thread = null; tcs.SetResult(Json); return(tcs.Task.Result); }