예제 #1
0
 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
예제 #3
0
        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);
            }
        }
예제 #4
0
        }         // 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
예제 #7
0
        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
예제 #8
0
 /// <summary>
 /// Показывает расписание предыдущего дня
 /// </summary>
 public void PreviousDay()
 {
     Day = Day.AddDays(-1);
     BuildFromXml();
 }
예제 #9
0
 /// <summary>
 /// Показывает расписание следующего дня
 /// </summary>
 public void NextDay()
 {
     Day = Day.AddDays(1);
     BuildFromXml();
 }
예제 #10
0
        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);
        }
예제 #11
0
        public void GetNextDayTest()
        {
            Day day = new Day();

            Assert.Equal(day.GetNextDay(), day.AddDays(1));
        }         // GetNextDayTest
예제 #12
0
        public void GetPreviousDayTest()
        {
            Day day = new Day();

            Assert.Equal(day.GetPreviousDay(), day.AddDays(-1));
        }         // GetPreviousDayTest
예제 #13
0
        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);
        }
예제 #14
0
        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);
        }