/// <summary> /// Called when an attached view's Loaded event fires. /// </summary> /// <param name="view"/> protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); _activityTracker.UpdateUserActivityLog(); _states.Clear(); foreach (var state in _activityRecordsRepository.GetActivityLog(DateTime.Now)) { _states.Add(state); } }
private void RefreshData() { List <ActivityRecord> records = _activityRecordsRepository.GetActivityLog(DateTime.Now).ToList(); var workRecords = records.Where(r => r.Activity != null && r.Activity.IsWork).ToList(); TimeSpan remainingTime = _settings.WorkDayDuration; TimeSpan extraTime = TimeSpan.Zero; TimeSpan workdayDuration = TimeSpan.Zero; var chartPieces = new List <IActivityChartPiece>(); if (workRecords.Count == 0) { WorkdayStartTime = DateTime.Now; } else { var workdayDurationTicks = workRecords.Sum(r => r.DurationTicks); workdayDuration = TimeSpan.FromTicks(workdayDurationTicks); if (workdayDuration < _settings.WorkDayDuration) { remainingTime = _settings.WorkDayDuration - workdayDuration; } else { remainingTime = TimeSpan.Zero; extraTime = workdayDuration - _settings.WorkDayDuration; } WorkdayStartTime = workRecords.Min(r => r.StartTime); WorkdayEndTime = DateTime.Now + remainingTime; var recordsByActivity = workRecords.GroupBy(r => r.Activity).ToList(); foreach (var activityRecords in recordsByActivity) { chartPieces.Add( new ActivityRecordsLogChartPiece(activityRecords.Key, activityRecords.ToList(), workdayDuration)); } } var gaugeChartPieces = chartPieces.ToList(); gaugeChartPieces.Insert( 0, new ActivityChartPiece("Total work time", workdayDuration, _settings.WorkDayDuration)); GaugeChartPieces = gaugeChartPieces; if (remainingTime.TotalMinutes > 0) { chartPieces.Add(new ActivityChartPiece("Remaining time", remainingTime, _settings.WorkDayDuration)); } if (extraTime.TotalMinutes > 0) { chartPieces.Add(new ActivityChartPiece("Extra time", extraTime, _settings.WorkDayDuration)); } PieChartPieces = chartPieces; }