Beispiel #1
0
        public ActivitySummary Decode(Stream stream)
        {
            Debug.WriteLine("Decoding fit file");
            data = null;
            lock (_lock)
            {
                var decodeDemo      = new Fit.Decode();
                var mesgBroadcaster = new MesgBroadcaster();
                decodeDemo.MesgEvent             += mesgBroadcaster.OnMesg;
                mesgBroadcaster.SessionMesgEvent += mesgBroadcaster_SessionMesgEvent;

                var status = decodeDemo.IsFIT(stream);
                status &= decodeDemo.CheckIntegrity(stream);

                if (status)
                {
                    decodeDemo.Read(stream);
                }
                else
                {
                    decodeDemo.Read(stream);
                }
            }

            return(data);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult SendNews(Guid id)
        {
            var newsletter = Db.Activities.OfType <Newsletter>().SingleOrDefault(n => n.Id == id);

            if (newsletter != null)
            {
                var summary = new ActivitySummary {
                    Activity = newsletter
                };

                var model = new OccurrenceMailingModel
                {
                    OccurrenceId = newsletter.Occurrence.Id,
                    Summary      = summary,
                    Body         = "",
                    Subject      = "",
                };

                ViewBag.UserRight = GetUserRight();

                return(View(model));
            }


            return(View("Missing", "Home"));
        }
        private void DisplayActivity(Activity activity)
        {
            Console.WriteLine("Activity {0}: {1}, {2}", activity.ActivityId, activity.ActivityName, activity.ActivityDescription);
            ActivitySummary summary = activity.ActivitySummary;

            Console.WriteLine("Begin: {0}, duration: {1}, distance {2}", summary.BeginTimestamp.Value, summary.SumDuration.Value, summary.SumDistance.Value);
        }
Beispiel #4
0
        private async void OnDataLoaded(object sender, EventArgs e)
        {
            //TODO: Glenn - see 'how' long we need to hold the DataLoaded event
            //TODO: Glenn - how and when do we need to refresh the stats page?
            _myActivityIncrementalCollection.DataLoaded -= OnDataLoaded;

            //Check if we have enough data to show the 'week' graph
            if (_myActivityIncrementalCollection.Count > 0)
            {
                ActivitySummary lastActivitySummary = (ActivitySummary)_myActivityIncrementalCollection[_myActivityIncrementalCollection.Count - 1];

                //When the user has a lot of activities in 1 week, could be we still need to retrieve more data!
                //TODO: Glenn - Validate if HasMoreItems is actually being set correctly?
                if (lastActivitySummary.DateTimeStart >= _firstDayOfWeek && _myActivityIncrementalCollection.HasMoreItems)
                {
                    _myActivityIncrementalCollection.DataLoaded += OnDataLoaded;
                    await _myActivityIncrementalCollection.LoadMoreItemsAsync(0);
                }
                else
                {
                    //TODO: Glenn - Do we need to use DateTimeLocal?
                    List <DayStats> dayStatistics = (from ActivitySummary item in _myActivityIncrementalCollection
                                                     where item.DateTimeStart >= _firstDayOfWeek
                                                     group item by item.DateTimeStart.Date
                                                     into g
                                                     select new DayStats()
                    {
                        Day = g.Key, Distance = g.Sum(item => item.Distance)
                    }).ToList();

                    //Now we should have summed up data grouped per day of the week
                }
            }
        }
        //return An ActivitySummary object with random values
        private ActivitySummary GetActivitySummary()
        {
            ActivitySummary activitySummary = new ActivitySummary();
            PaceSummary     paceSummary     = new PaceSummary();

            paceSummary.AvgPace  = (Java.Lang.Double) 247.27626;
            paceSummary.BestPace = (Java.Lang.Double) 212.0;
            IDictionary <string, Java.Lang.Double> britishPaceMap = new Dictionary <string, Java.Lang.Double>();

            britishPaceMap.Add("50001893", (Java.Lang.Double) 365.0);
            paceSummary.BritishPaceMap = britishPaceMap;
            IDictionary <string, Java.Lang.Double> partTimeMap = new Dictionary <string, Java.Lang.Double>();

            partTimeMap.Add("1.0", (Java.Lang.Double) 456.0);
            paceSummary.PartTimeMap = partTimeMap;
            IDictionary <string, Java.Lang.Double> paceMap = new Dictionary <string, Java.Lang.Double>();

            paceMap.Add("1.0", (Java.Lang.Double) 263.0);
            paceSummary.PaceMap = paceMap;
            IDictionary <string, Java.Lang.Double> britishPartTimeMap = new Dictionary <string, Java.Lang.Double>();

            britishPartTimeMap.Add("1.0", (Java.Lang.Double) 263.0);
            paceSummary.BritishPartTimeMap = britishPartTimeMap;
            IDictionary <string, Java.Lang.Double> sportHealthPaceMap = new Dictionary <string, Java.Lang.Double>();

            sportHealthPaceMap.Add("102802480", (Java.Lang.Double) 535.0);
            paceSummary.SportHealthPaceMap = sportHealthPaceMap;
            activitySummary.PaceSummary    = paceSummary;
            return(activitySummary);
        }
Beispiel #6
0
        public async void LoadScreen()
        {
            DropDownBox.ItemsSource = DropDownBoxItems;
            this.LeaderboardData    = await DataManipulatorHandler.Instance.GetDailyPeakAverages(MenuSelection, "all", Seconds);

            var leaderboardDataSorted = LeaderboardData.ToList();


            int rank = 1;

            foreach (KeyValuePair <long, int> leaderboardEntry in from entry in leaderboardDataSorted orderby entry.Value descending select entry)
            {
                ActivitySummary activitySummary = await activitySummaryCacheHandler.Find(leaderboardEntry.Key);

                Activity activity = await activityCacheHandler.Find(leaderboardEntry.Key);

                string startDate  = FormatterHandler.Instance.ConvertGMTToDDMMYYYY(activity.startDate);
                string movingtime = FormatterHandler.Instance.ConvertEpochTimeTohhmmssfff(Convert.ToDouble(activitySummary.movingTime));

                Items.Add(new Activity(leaderboardEntry.Key, IconSelector(rank++), leaderboardEntry.Value.ToString() + " " + LabelHandler.Instance.GetPeaksLabel(MenuSelection), startDate + "\n" + "Moving Time: " + movingtime));
            }
            Loading_Icon.IsVisible = false;
            Loading_Icon.IsPlaying = false;
            Loading_Icon.IsEnabled = false;

            LeaderboardListView.ItemsSource = Items;
        }
Beispiel #7
0
        public void SetModel(ActivitySummary activitySummary)
        {
            if (activitySummary != null)
            {
                this.Sport.Content            = activitySummary.Sport.ToString();
                this.TotalDistance.Content    = GetTotalDistance(activitySummary);
                this.TotalElapsedTime.Content = GetElapsedTime(activitySummary);
                this.StartTime.Content        = activitySummary.StartTime.ToString();

                if (activitySummary.Sport == FitFilePreviewer.Decode.Fit.Types.Sport.Running)
                {
                    DisplayImage.Source = GetImageSourceFromResource("Images/run.png");
                }

                if (activitySummary.Sport == FitFilePreviewer.Decode.Fit.Types.Sport.Cycling)
                {
                    DisplayImage.Source = GetImageSourceFromResource("Images/bike.png");
                }

                if (activitySummary.Sport == FitFilePreviewer.Decode.Fit.Types.Sport.Swimming)
                {
                    DisplayImage.Source = GetImageSourceFromResource("Images/swim.png");
                }
            }
        }
    protected void rptActivitySummary_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        //删除活动总结
        if (e.CommandName == "Delete")
        {
            int id = Convert.ToInt32(e.CommandArgument.ToString());
            using (var db = new TeachingCenterEntities())
            {
                ActivitySummary asu = db.ActivitySummary.Single(a => a.ActivitySummary_id == id);

                db.ActivitySummary.Remove(asu);
                db.SaveChanges();
                Server.Transfer("RecycleActivitySummary.aspx");
                //JSHelper.AlertThenRedirect("删除成功!", "RecycleActivitySummary.aspx");
            }
        }
        if (e.CommandName == "Recycle")
        {
            int id = Convert.ToInt32(e.CommandArgument.ToString());
            using (var db = new TeachingCenterEntities())
            {
                ActivitySummary asu = db.ActivitySummary.Single(a => a.ActivitySummary_id == id);
                asu.ActivitySummary_isdeleted = 0;
                db.SaveChanges();
                Server.Transfer("RecycleActivitySummary.aspx");
                //JSHelper.AlertThenRedirect("恢复成功!", "ActivitySummaryManage.aspx");
            }
        }
    }
Beispiel #9
0
        private void DisplayActivity(Activity activity)
        {
            ActivitySummary summary = activity.ActivitySummary;

            Console.WriteLine("Activity ID: {0}", activity.ActivityId);
            if (!String.IsNullOrEmpty(activity.ActivityName))
            {
                Console.WriteLine("Name: {0}", activity.ActivityName);
            }
            if (!String.IsNullOrEmpty(activity.ActivityDescription))
            {
                Console.WriteLine("Description: {0}", activity.ActivityDescription);
            }
            Console.WriteLine("Event type: {0}", activity.EventType);
            Console.WriteLine("Activity type: {0}", activity.ActivityType);
            if (summary.BeginTimestamp != null)
            {
                Console.WriteLine("Begin: {0}", summary.BeginTimestamp.Value);
            }
            if (summary.EndTimestamp != null)
            {
                Console.WriteLine("End: {0}", summary.EndTimestamp.Value);
            }
            if (summary.SumDuration != null)
            {
                Console.WriteLine("Duration: {0}", summary.SumDuration.Value);
            }
            if (summary.SumDistance != null)
            {
                Console.WriteLine("Distance: {0}", summary.SumDistance.Value);
            }
            Console.WriteLine();
        }
Beispiel #10
0
        public static ActivitySummary ToSummary(this SessionMesg msg)
        {
            ActivitySummary summary = new ActivitySummary();

            if (msg != null)
            {
                var startTime = msg.GetStartTime();
                if (startTime != null && startTime.GetDateTime() != MinTime)
                {
                    summary.StartTime = startTime.GetDateTime();
                }
                summary.ElapsedTime  = Convert.ToInt32(msg.GetTotalElapsedTime().GetValueOrDefault(0));
                summary.MovingTime   = Convert.ToInt32(msg.GetTotalTimerTime().GetValueOrDefault(0));
                summary.Distance     = new Distance(msg.GetTotalDistance().GetValueOrDefault(Distance.InvalidValue), DistanceUnit.Meter);
                summary.Sport        = msg.GetSport().GetValueOrDefault(Sport.Generic);
                summary.AvgHeartRate = msg.GetAvgHeartRate().GetValueOrDefault(FitExtensions.InvalidHeartRate);
                summary.MaxHeartRate = msg.GetMaxHeartRate().GetValueOrDefault(FitExtensions.InvalidHeartRate);
                summary.AvgCadence   = msg.GetAvgCadence().GetValueOrDefault(FitExtensions.InvalidCadence);
                summary.MaxCadence   = msg.GetMaxCadence().GetValueOrDefault(FitExtensions.InvalidCadence);
                summary.AvgPower     = msg.GetAvgPower().GetValueOrDefault(FitExtensions.InvalidPower);
                summary.MaxPower     = msg.GetMaxPower().GetValueOrDefault(FitExtensions.InvalidPower);
                summary.AvgSpeed     = new Speed {
                    Value = msg.GetAvgSpeed().GetValueOrDefault(FitExtensions.InvalidSpeed), Unit = SpeedUnit.MeterPerSecond
                };
                summary.MaxSpeed = new Speed {
                    Value = msg.GetMaxSpeed().GetValueOrDefault(FitExtensions.InvalidSpeed), Unit = SpeedUnit.MeterPerSecond
                };
                summary.Ascent  = msg.GetTotalAscent().GetValueOrDefault(0);
                summary.Descent = msg.GetTotalDescent().GetValueOrDefault(0);
            }

            return(summary);
        }
Beispiel #11
0
        public void GetDistances_InstantiatedList()
        {
            ActivitySummary model = new ActivitySummary();

            model.Distances = new List <ActivityDistance>();
            model.Distances.Add(new ActivityDistance {
                Distance = 12, Activity = "test#1"
            });
            model.Distances.Add(new ActivityDistance {
                Distance = 0.56F, Activity = "test#2"
            });

            Dictionary <string, float> d = model.GetDistancesAsDictionary();

            Assert.IsNotNull(d);
            Assert.AreEqual(2, d.Count);

            Assert.IsTrue(d.ContainsKey("test#1"));
            float ad = d["test#1"];

            Assert.AreEqual(12, ad);

            Assert.IsTrue(d.ContainsKey("test#2"));
            ad = d["test#2"];
            Assert.AreEqual(0.56F, ad);
        }
Beispiel #12
0
        public async void LoadAllCachedActivities()
        {
            Items.Clear();
            await Task.Delay(5000);

            MyListView.BackgroundColor = Color.FromHex("#ffffff");
            foreach (var activity in await activityCacheHandler.FindAll())
            {
                try
                {
                    ActivitySummary activitySummary = await activitySummaryCacheHandler.Find(activity.activityId);

                    activity.label1 = FormatterHandler.Instance.ConvertGMTToDDMMYYYY(activity.startDate);
                    activity.label2 = "Moving Time: " + FormatterHandler.Instance.ConvertEpochTimeTohhmmssfff(Convert.ToDouble(activitySummary.movingTime));
                    Items.Add(activity);
                }
                catch (Exception e)
                {
                    activity.label1 = activity.name;
                    Items.Add(activity);
                }
            }

            MyListView.ItemsSource = Items;
        }
        private void ValidateActivitySummary(ActivitySummary summary)
        {
            // activity calories?
            // calories BMR?
            Assert.AreEqual(2828, summary.CaloriesOut);
            Assert.AreEqual(63, summary.FairlyActiveMinutes);
            Assert.AreEqual(59, summary.LightlyActiveMinutes);
            // marginal caloties?
            Assert.AreEqual(1155, summary.SedentaryMinutes);
            Assert.AreEqual(15720, summary.Steps);
            Assert.AreEqual(91, summary.VeryActiveMinutes);

            Assert.AreEqual(1623, summary.CaloriesBMR);
            Assert.AreEqual(26, summary.Floors);
            Assert.AreEqual(1067, summary.MarginalCalories);
            Assert.AreEqual(73, summary.RestingHeartRate);

            //HeartRateZones
            Assert.AreEqual(4, summary.HeartRateZones.Count);
            Assert.AreEqual("Out of Range", summary.HeartRateZones[0].Name);
            Assert.AreEqual(1198, summary.HeartRateZones[0].Minutes);
            Assert.AreEqual(30, summary.HeartRateZones[0].Min);
            Assert.AreEqual(94, summary.HeartRateZones[0].Max);
            Assert.AreEqual(1594.36823f, summary.HeartRateZones[0].CaloriesOut);

            // distances
            var d = summary.Distances.First(x => x.Activity == "total");

            Assert.IsNotNull(d);
            Assert.AreEqual(12.32f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "tracker");
            Assert.IsNotNull(d);
            Assert.AreEqual(12.32f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "loggedActivities");
            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Distance);

            d = summary.Distances.First(x => x.Activity == "veryActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(9.69f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "moderatelyActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(1.99f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "lightlyActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(0.57f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "sedentaryActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Distance);

            d = summary.Distances.First(x => x.Activity == "Running (jogging), 6.7 mph (9 min mile) (MyFitnessPal)");
            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Distance);
        }
Beispiel #14
0
        public void GetDistances_NullList()
        {
            ActivitySummary model = new ActivitySummary();

            Dictionary <string, float> d = model.GetDistancesAsDictionary();

            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Count);
        }
Beispiel #15
0
        public void GetDistances_NullList()
        {
            var model = new ActivitySummary();

            var d = model.GetDistancesAsDictionary();

            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Count);
        }
Beispiel #16
0
        void MessageBroadcaster_SessionMesgEvent(object sender, MesgEventArgs e)
        {
            var msg = e.mesg as SessionMesg;

            if (msg != null)
            {
                ActivitySummary summary = msg.ToSummary();
                Activity.SetSummary(summary);
            }
        }
Beispiel #17
0
 private void OnComment(ActivitySummary activitySummary)
 {
     // make sure we work with the swiped item
     // this could happen if we use the mouse to swipe and move the mouse outside the ListView and release it there
     if (activitySummary != SelectedActivity)
     {
         SelectedActivity = activitySummary;
     }
     MessengerInstance.Send <ActivitySummaryCommentMessage>(new ActivitySummaryCommentMessage(SelectedActivity));
 }
Beispiel #18
0
        private string GetTotalDistance(ActivitySummary activitySummary)
        {
            if (activitySummary.Sport == Decode.Fit.Types.Sport.Swimming)
            {
                return(String.Format("{0}M", activitySummary.TotalDistance));
            }

            var dist = Convert.ToDouble(activitySummary.TotalDistance) / 1000;

            return(String.Format("{0}KM", Math.Round(dist, 1)));
        }
        public MQTTClient(MQTTInfo MQTTConfig, JsonStructure jsonStructureConfig)
        {
            client = new MqttClient(MQTTConfig.BrokerHostName, MQTTConfig.BrokerPort, false, null, null, 0, null, null);
            client.Connect(Guid.NewGuid().ToString(), MQTTConfig.Username, MQTTConfig.Password);
            client.MqttMsgPublishReceived += MqttMsgPublishReceived;

            this.MQTTConfig       = MQTTConfig;
            QueryParamsConfig     = jsonStructureConfig.QueryParams;
            WeightConfig          = jsonStructureConfig.Weight;
            ActivitySummaryConfig = jsonStructureConfig.ActivitySummary;
        }
Beispiel #20
0
        public void Can_Deserialize_ActivitySummary()
        {
            string content      = SampleDataHelper.GetContent("GetActivities.json");
            var    deserializer = new JsonDotNetSerializer {
                RootProperty = "summary"
            };

            ActivitySummary summary = deserializer.Deserialize <ActivitySummary>(content);

            ValidateActivitySummary(summary);
        }
Beispiel #21
0
        private List <ActivitySummary> GetLecturerReservations(Semester semester, ApplicationUser user)
        {
            List <ActivitySummary> model = new List <ActivitySummary>();

            var lectureActivities =
                Db.Activities.OfType <Reservation>().Where(a =>
                                                           a.SemesterGroups.Any(g => g.Semester.Id == semester.Id) &&
                                                           a.Dates.Any(d => d.Hosts.Any(l => !string.IsNullOrEmpty(l.UserId) && l.UserId.Equals(user.Id)))).ToList();

            foreach (var activity in lectureActivities)
            {
                var summary = new ActivitySummary {
                    Activity = activity
                };

                // nur die, bei denen es noch Termine in der Zukunft gibt
                if ((activity.Dates.Any() && activity.Dates.OrderBy(d => d.End).Last().End >= DateTime.Today))
                {
                    var currentDate =
                        activity.Dates.Where(d => d.Begin <= DateTime.Now && DateTime.Now <= d.End)
                        .OrderBy(d => d.Begin)
                        .FirstOrDefault();
                    var nextDate =
                        activity.Dates.Where(d => d.Begin >= DateTime.Now)
                        .OrderBy(d => d.Begin)
                        .FirstOrDefault();

                    if (currentDate != null)
                    {
                        summary.CurrentDate = new CourseDateStateModel
                        {
                            Summary = new ActivityDateSummary {
                                Date = currentDate
                            },
                            State = ActivityService.GetSubscriptionState(currentDate.Occurrence, currentDate.Begin, currentDate.End),
                        };
                    }

                    if (nextDate != null)
                    {
                        summary.NextDate = new CourseDateStateModel
                        {
                            Summary = new ActivityDateSummary {
                                Date = nextDate
                            },
                            State = ActivityService.GetSubscriptionState(nextDate.Occurrence, nextDate.Begin, nextDate.End),
                        };
                    }
                }
                model.Add(summary);
            }

            return(model);
        }
Beispiel #22
0
 private StravaActivitySummary CreateStravaActivitySummary(ActivitySummary activity)
 {
     try
     {
         return(new StravaActivitySummary(activity.Id, activity.Type.ToString(), activity.Name, activity.StartDate, activity.ElapsedTime.ToString(), activity.Distance));
     }
     catch (Exception exception)
     {
         _log.Error(exception, "Failed to create activity: {activityId} '{activityName}'!", activity.Id, activity.Name);
         return(null);
     }
 }
Beispiel #23
0
        private void OnComment(ActivitySummary activitySummary)
        {
            // make sure we work with the swiped item
            // this could happen if we use the mouse to swipe and move the mouse outside the ListView and release it there
            if (activitySummary != SelectedActivity)
            {
                SelectedActivity = activitySummary;
            }

            //TODO: Glenn - the previous setting of SelectedActivity will trigger a load of that activity, if it was not yet loaded ( detail screen still empty )
            //TODO: Glenn - this loading is done async, hence we could have a potential problem that the user has entered a comment and tries to save it, before the activity has been loaded!
            MessengerInstance.Send <ActivitySummaryCommentMessage>(new ActivitySummaryCommentMessage(SelectedActivity));
        }
 void SetSummary()
 {
     foreach (var item in timelineItems)
     {
         if (item.type == XmlTimeline.TimelineItemType.activity)
         {
             activitySummary[(int)item.activity.activity].Add(item.activity);
         }
     }
     for (int i = 0; i < 10; i++)
     {
         summary[i] = new ActivitySummary(activitySummary[i], i);
     }
 }
Beispiel #25
0
        public void Retrieve_Activity_Summary_For_Yesterday()
        {
            ActivitySummary activitySummary = client.GetDayActivitySummary(DateTime.Now.Subtract(new TimeSpan(24, 0, 0)));

            Assert.IsNotNull(activitySummary);

            Assert.IsNotNull(activitySummary.Steps);
            Console.WriteLine("Steps: " + activitySummary.Steps);

            Assert.IsNotNull(activitySummary.SedentaryMinutes);
            Console.WriteLine("SedentaryMinutes: " + activitySummary.SedentaryMinutes);

            Assert.IsNotNull(activitySummary.Distances);
        }
Beispiel #26
0
        void mesgBroadcaster_SessionMesgEvent(object sender, MesgEventArgs e)
        {
            var sessionMessage = (SessionMesg)e.mesg;

            if (sessionMessage != null)
            {
                data                  = new ActivitySummary();
                data.Sport            = sessionMessage.GetSport();
                data.TotalDistance    = sessionMessage.GetTotalDistance();
                data.TotalElapsedTime = sessionMessage.GetTotalElapsedTime();
                data.TotalFatCalories = sessionMessage.GetTotalFatCalories();
                data.StartTime        = sessionMessage.GetStartTime();
            }
        }
Beispiel #27
0
    protected void btnSub_Click(object sender, EventArgs e)
    {
        string title   = txtTitle.Text;
        string content = myEditor11.InnerHtml;
        string summary = TextBox1.Text;

        if (title.Length == 0 || content.Length == 0)
        {
            JSHelper.ShowAlert("输入不能为空!");
        }
        else if (summary.Length == 0)
        {
            JSHelper.ShowAlert("输入不能为空!");
        }
        else
        {
            try
            {
                using (var db = new TeachingCenterEntities())
                {
                    int             id   = Convert.ToInt32(Request.QueryString["id"]);
                    ActivitySummary acsu = db.ActivitySummary.Single(a => a.ActivitySummary_id == id);
                    acsu.ActivitySummary_title   = title;
                    acsu.ActivitySummary_content = content;
                    acsu.ActivitySummary_summary = summary;
                    if (dropAuthor.SelectedValue == "0")
                    {
                        acsu.ActivitySummary_author = AdminHelper.getNameByID(Session["AdminID"].ToString());
                    }
                    else if (dropAuthor.SelectedValue == "1")
                    {
                        acsu.ActivitySummary_author = "匿名";
                    }
                    else
                    {
                        acsu.ActivitySummary_author = "未知";
                    }
                    acsu.ActivitySummary_time = Convert.ToDateTime(pushlishTime.Value);
                    db.SaveChanges();
                    Server.Transfer("ActivitySummaryManage.aspx");
                    //JSHelper.AlertThenRedirect("修改成功!", "ActivitySummaryManage.aspx");
                }
            }
            catch
            {
            }
        }
    }
        /// <summary>
        /// Save calculated stress score into a google sheet
        /// </summary>
        /// <param name="activity"></param>
        /// <param name="intervals"></param>
        /// <param name="googleApi"></param>
        /// <param name="config"></param>
        public void SaveStressPoints(ActivitySummary activity, IList <Interval> intervals)
        {
            PointsData data = new PointsData(activity.Id, (int)activity.Type, activity.StartDateLocal.Date);
            var        cfg  = this.athleteConfig;

            switch (activity.Type)
            {
            case ActivityType.Run:
                if (activity.AverageHeartRate > 0)
                {
                    data.TrimpPoints = intervals.HeartRateTrimp100(cfg.runFTHeartRate, cfg.minHeartRate, cfg.maxHeartRate);
                }
                data.TriScorePoints = intervals.Govss(cfg.runFTSpeed, cfg.weight, cfg.height);
                data.TssPoints      = intervals.NormGradedSpeedTss(cfg.runFTSpeed);
                break;

            case ActivityType.Ride:
                if (activity.AverageHeartRate > 0)
                {
                    data.TrimpPoints = intervals.HeartRateTrimp100(cfg.bikeFTHeartRate, cfg.minHeartRate, cfg.maxHeartRate);
                }
                if (activity.AveragePower > 0 && !activity.DeviceWatts)
                {
                    data.TssPoints = intervals.AvgPowerTss(cfg.bikeFTPower, activity.AveragePower);
                }
                else if (activity.Distance > 0)
                {
                    data.TriScorePoints = intervals.BikeScore(cfg.bikeFTVirtualPower);
                    data.TssPoints      = intervals.VirtualPowerTss(cfg.bikeFTVirtualPower);
                }
                break;

            case ActivityType.Swim:
                if (intervals == null)
                {
                    data.TssPoints = intervals.AvgNormGradedSpeedTss(cfg.swimFTSpeed);
                }
                else
                {
                    data.TriScorePoints = intervals.SwimScore(cfg.swimFTSpeed, cfg.weight, cfg.height);
                    data.TssPoints      = intervals.NormGradedSpeedTss(cfg.swimFTSpeed);
                }
                break;
            }

            output.Write(data);
        }
Beispiel #29
0
        private void ValidateActivitySummary(ActivitySummary summary)
        {
            // activity calories?
            // calories BMR?
            Assert.AreEqual(2828, summary.CaloriesOut);
            Assert.AreEqual(63, summary.FairlyActiveMinutes);
            Assert.AreEqual(59, summary.LightlyActiveMinutes);
            // marginal caloties?
            Assert.AreEqual(1155, summary.SedentaryMinutes);
            Assert.AreEqual(15720, summary.Steps);
            Assert.AreEqual(91, summary.VeryActiveMinutes);

            // distances
            var d = summary.Distances.First(x => x.Activity == "total");

            Assert.IsNotNull(d);
            Assert.AreEqual(12.32f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "tracker");
            Assert.IsNotNull(d);
            Assert.AreEqual(12.32f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "loggedActivities");
            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Distance);

            d = summary.Distances.First(x => x.Activity == "veryActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(9.69f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "moderatelyActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(1.99f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "lightlyActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(0.57f, d.Distance);

            d = summary.Distances.First(x => x.Activity == "sedentaryActive");
            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Distance);

            d = summary.Distances.First(x => x.Activity == "Running (jogging), 6.7 mph (9 min mile) (MyFitnessPal)");
            Assert.IsNotNull(d);
            Assert.AreEqual(0, d.Distance);
        }
Beispiel #30
0
        public async Task FixCorruptTime()
        {
            var activity = await LoadAsync(CorruptTimeFileName);

            var timeValid = new System.DateTime(2016, 09, 20, 14, 30, 34);
            var seconds   = 0;
            var summary   = new ActivitySummary {
                StartTime = timeValid
            };

            activity.SetSummary(summary);
            foreach (var timeFrame in activity.TimeFrames)
            {
                timeFrame.Timestamp = timeValid.AddSeconds(seconds++);
            }
            await SaveAsync(activity, CorruptTimeFileName + ".fixed");

            Assert.AreEqual(timeValid, activity.StartTime);
        }
 /// <summary>
 /// Initializes a new instance of the ActivityReceivedEventArgs class.
 /// </summary>
 /// <param name="summary">The ActivitySummary object that was received.</param>
 public ActivityReceivedEventArgs(ActivitySummary summary)
 {
     Activity = summary;
 }
 public ActivitySummaryMessage(ActivitySummary activitySummary)
 {
     ActivitySummary = activitySummary;
 }