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(); }
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); } }
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>()); } }
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; } }