public void setChart()
        {
            List <Microcharts.Entry> entries = new List <Microcharts.Entry>();

            //var selectedDay = calendar.SelectedDate.Value;
            var  selectedDay  = datePicker.Date;
            bool stressedOnly = stressedOnlySwitch.IsToggled;

            filteredMeasurements = GetDailyMeasurements(selectedDay, stressedOnly);
            filteredMeasurements.ForEach(item =>
            {
                var entry = new Microcharts.Entry(item.StressIndex)
                {
                    Color      = item.IsStressed == 1 ? SKColor.Parse("#cc1b08") : SKColor.Parse("#08d854"),
                    Label      = item.Date.ToString("HH:mm"),
                    ValueLabel = item.StressIndex.ToString()
                };
                entries.Add(entry);
            });
            chart.Entries = entries;
            chart.ValueLabelOrientation = Microcharts.Orientation.Horizontal;
            model = ((MeasurementsPageViewModel)BindingContext);
            model.FilteredMeasurementsObj.Clear();
            model.ConcatFiltered(filteredMeasurements);
        }
        private async void InitAllPages()
        {
            Title = "Statistics";
            var loading = new LoadingAnimation();

            Children.Add(loading);

            //make sure all tables are loaded when creating the following pages
            var model = await MeasurementsPageViewModel.GetInstance();

            await model.InitializeActivities();

            await model.InitializeMeasurement();

            Children.Add(new CalendarStats()
            {
                Title = "Calendar", Icon = "calendar.png"
            });
            Children.Add(new PinPage()
            {
                Title = "Map", Icon = "map.png"
            });
            //TODO: consider removing these pages:
            Children.Add(new LastMeasurementsListPage()
            {
                Title = "All", Icon = "list.png"
            });
            //Children.Add(new ActivitiesListPage() { Title = "Activities", Icon = "activity.png" });

            loading.Complete();
            Children.Remove(loading);
            this.CurrentPageChanged += CurrentTabChanged;
        }
        private async Task Initialize()
        {
            BindingContext = await MeasurementsPageViewModel.GetInstance();

            model = ((MeasurementsPageViewModel)BindingContext);
            model.FilteredMeasurementsObj.Clear();
            setChart();
        }
Beispiel #4
0
        private async void UpdateViewModel()
        {
            var model = await MeasurementsPageViewModel.GetInstance();

            int index = model.MeasurementsObj.IndexOf(measurement);

            model.MeasurementsObj.Remove(measurement);
            model.MeasurementsObj.Insert(index, measurement);
        }
 //update the ListView
 private void Popup_Closed(object sender, Activities e)
 {
     model = (MeasurementsPageViewModel)BindingContext;
     model.FilteredMeasurementsObj.Clear();
     model.ConcatFiltered(filteredMeasurements);
     if (e != null)
     {
         model.Activities.Add(e.Name);
     }
 }
Beispiel #6
0
        public async Task GetMeasurements()
        {
            MeasurementsPageViewModel model = await MeasurementsPageViewModel.GetInstance();

            DateTime weekAgo = DateTime.Today.AddDays(-30);

            filteredMeasurements = model.MeasurementsObj
                                   .Where(item => item.Date.CompareTo(weekAgo) > 0) //measurements from last week
                                   .Where(item => item.IsStressed > 0)              //show only stressed measurements
                                   .ToList();
        }
        //open popup and let the user change Activity
        private async void Activity_Clicked(object sender, EventArgs e)
        {
            Label        labelActivityName = (Label)sender;
            var          measurementID     = ((Label)labelActivityName.Parent.FindByName("MeasurementID")).Text;
            Measurements m = filteredMeasurements.Find(item => item.Id == measurementID);

            model = (MeasurementsPageViewModel)BindingContext;
            MeasurePopup popupPage = new MeasurePopup(m, model.Activities);

            popupPage.CallbackEvent += Popup_Closed;

            await PopupNavigation.Instance.PushAsync(popupPage);
        }
 //return only measurements taken on 'day'
 public List <Measurements> GetDailyMeasurements(DateTime day, bool stressedOnly)
 {
     try
     {
         MeasurementsPageViewModel model = (MeasurementsPageViewModel)BindingContext;
         var currDayMeasure = model.MeasurementsObj.Where(item =>
                                                          item.Date.CompareTo(day) > 0 &&          //measurement is later than day at midnight
                                                          item.Date.CompareTo(day.AddDays(1)) < 0) //measurement is earlier than day+1 at midnight
                              .OrderBy(item => item.Date);
         if (stressedOnly)
         {
             return(currDayMeasure.Where(item => item.IsStressed == 1).ToList());
         }
         else
         {
             return(currDayMeasure.ToList());
         }
     }
     catch { return(new List <Measurements>()); }
 }
Beispiel #9
0
        private async void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            var selectedUser = (Users)allowedUsersListView.SelectedItem;

            if (selectedUser != null)
            {
                Login.Default.CurrentUser.WatchingUserID = selectedUser.id;

                if (!firstUserClicked)
                {
                    //get the newly selected user's measurements
                    var model = await MeasurementsPageViewModel.GetInstance();

                    await model.InitializeMeasurement();
                }
                firstUserClicked = false;
                await Navigation.PushAsync(new StatsTabbedPage());

                allowedUsersListView.SelectedItem = null;
            }
        }