예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        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;
        }