Exemple #1
0
        /// <summary>
        /// helper for getting weekly stats
        /// </summary>
        private void _buildWeekStats()
        {
            DateTime now = DateTime.Now;

            //get selection of activities per week
            var this_week_selection = Activities.Where(a => a.Date.Year == now.Year).Where(b => b.Week == HalbotActivity.WeekOfYear(now));
            var last_week_selection = Activities.Where(a => a.Date.Year == now.Year).Where(b => b.Week == HalbotActivity.WeekOfYear(now) - 1);

            if (HalbotActivity.WeekOfYear(now) == 1)
            {
                last_week_selection = Activities.Where(a => a.Date.Year == now.Year - 1).Where(b => b.Week == 52);
            }

            //create list and populate
            Week = new List <Tuple <string, string, string> >();
            Week.Add(new Tuple <String, String, String>("Activities:", last_week_selection.Count().ToString(), this_week_selection.Count().ToString()));
            Week.Add(new Tuple <string, string, string>("Total effort:", $"{last_week_selection.Sum(e => e.Effort)}",
                                                        $"{this_week_selection.Sum(e => e.Effort)}"));
            Week.Add(new Tuple <String, String, String>("Total distance:",
                                                        $"{Math.Round(last_week_selection.Sum(c => c.Distance) / 1000, 2)}km",
                                                        $"{Math.Round(this_week_selection.Sum(c => c.Distance) / 1000, 2)}km"));
            Week.Add(new Tuple <String, String, String>("Total climb:",
                                                        $"{Math.Round(last_week_selection.Sum(c => c.Climb))}m",
                                                        $"{Math.Round(this_week_selection.Sum(c => c.Climb))}m"));
            Week.Add(new Tuple <String, String, String>("Average effort:", _averageEffort(last_week_selection), _averageEffort(this_week_selection)));
            Week.Add(new Tuple <String, String, String>("Average pace:", _averagePace(last_week_selection), _averagePace(this_week_selection)));
            Week.Add(new Tuple <String, String, String>("Average heartrate:", _averageHeartrate(last_week_selection), _averageHeartrate(this_week_selection)));
            Week.Add(new Tuple <String, String, String>("Average distance:", _averageDistance(last_week_selection), _averageDistance(this_week_selection)));
        }
        public ChartsWorkloadModel(List <HalbotActivity> activities)
        {
            //initialize data
            Activities = activities;
            var now = DateTime.Now;

            // create chart
            CircleChart = new CircleChart("TestCircle", 900, 600);

            // create dataset
            var data1 = new CircleChart.DataSet("dataset", 120, 160, 250, 450);     // heartrate bounds: 110 - 190, speed bounds 2(m/s) - 5(m/s)

            // previous weeks
            var previousWeeksSelection = Activities.Where(a => a.Date.Year == now.Year).Where(b => b.Week < HalbotActivity.WeekOfYear(now) - 1);

            foreach (var activity in previousWeeksSelection)
            {
                data1.Add(Convert.ToInt32(activity.Heartrate == 0 ? 140 : activity.Heartrate), Convert.ToInt32(activity.Speed * 100), Convert.ToInt32(activity.Distance * 0.002), "#cccccc");
            }

            // add last week
            var lastWeekSelection = Activities.Where(a => a.Date.Year == now.Year).Where(b => b.Week == HalbotActivity.WeekOfYear(now) - 1);

            foreach (var activity in lastWeekSelection)
            {
                data1.Add(Convert.ToInt32(activity.Heartrate == 0 ? 140 : activity.Heartrate), Convert.ToInt32(activity.Speed * 100), Convert.ToInt32(activity.Distance * 0.002), "#0099cc");
            }

            // add the current week
            var thisWeekSelection = Activities.Where(a => a.Date.Year == now.Year).Where(b => b.Week == HalbotActivity.WeekOfYear(now));

            foreach (var activity in thisWeekSelection)
            {
                data1.Add(Convert.ToInt32(activity.Heartrate == 0 ? 140 : activity.Heartrate), Convert.ToInt32(activity.Speed * 100), Convert.ToInt32(activity.Distance * 0.002), "gold");
            }

            // redraw the last activity in a highlighted color
            var lastActivity = Activities.OrderByDescending(a => a.Date).FirstOrDefault();

            if (lastActivity != null)
            {
                data1.Add(Convert.ToInt32(lastActivity.Heartrate == 0 ? 140 : lastActivity.Heartrate), Convert.ToInt32(lastActivity.Speed * 100), Convert.ToInt32(lastActivity.Distance * 0.002), "#2db92d");
            }

            CircleChart.SetDataSet(data1);
        }