From 198a6ddebc5718208581ad5551309b8fe8d1440e Mon Sep 17 00:00:00 2001 From: Eveldee Date: Wed, 17 Apr 2019 13:44:24 +0200 Subject: [PATCH] Begin CaptorsPage --- .../CaptorValueToDoubleConverter.cs | 50 +++++++++++--- .../PlantBox.Client/Forms/HomePage.xaml.cs | 3 +- .../Forms/Plant/CaptorsPage.xaml | 61 ++++++++++++++++-- .../Forms/Plant/CaptorsPage.xaml.cs | 4 +- .../Forms/Plant/PlantPage.xaml.cs | 7 +- .../PlantBox.Client/Models/CaptorType.cs | 14 ++++ .../PlantBox.Client/Models/Historic.cs | 2 +- .../PlantBox.Client/Models/HistoricEntry.cs | 2 +- .../PlantBox.Client/PlantBox.Client.csproj | 8 +++ .../Resources/Images/Humidity_Icon.png | Bin 0 -> 3312 bytes .../Resources/Images/Luminosity_Icon.png | Bin 0 -> 11205 bytes .../Resources/Images/Tank_Icon.png | Bin 0 -> 2140 bytes .../Resources/Images/Temperature_Icon.png | Bin 0 -> 18040 bytes .../ViewModels/PlantViewModel.cs | 22 ++++++- 14 files changed, 148 insertions(+), 25 deletions(-) create mode 100644 PlantBox.Client/PlantBox.Client/Models/CaptorType.cs create mode 100644 PlantBox.Client/PlantBox.Client/Resources/Images/Humidity_Icon.png create mode 100644 PlantBox.Client/PlantBox.Client/Resources/Images/Luminosity_Icon.png create mode 100644 PlantBox.Client/PlantBox.Client/Resources/Images/Tank_Icon.png create mode 100644 PlantBox.Client/PlantBox.Client/Resources/Images/Temperature_Icon.png diff --git a/PlantBox.Client/PlantBox.Client/Converters/CaptorValueToDoubleConverter.cs b/PlantBox.Client/PlantBox.Client/Converters/CaptorValueToDoubleConverter.cs index 51d739c..e3b3b1a 100644 --- a/PlantBox.Client/PlantBox.Client/Converters/CaptorValueToDoubleConverter.cs +++ b/PlantBox.Client/PlantBox.Client/Converters/CaptorValueToDoubleConverter.cs @@ -1,4 +1,5 @@ -using PlantBox.Shared.Communication.Commands; +using PlantBox.Client.Models; +using PlantBox.Shared.Communication.Commands; using System; using System.Collections.Generic; using System.Globalization; @@ -9,24 +10,53 @@ namespace PlantBox.Client.Converters { class CaptorValueToDoubleConverter : IValueConverter { + const double HUMIDITY_UPPER_BOUND = 100.0; + const double HUMIDITY_LOWER_BOUND = 0.0; + const double LUMINOSITY_UPPER_BOUND = 1200.0; + const double LUMINOSITY_LOWER_BOUND = 0.0; + const double TEMPERATURE_UPPER_BOUND = 50.0; + const double TEMPERATURE_LOWER_BOUND = -20.0; + const double TANK_UPPER_BOUND = 100.0; + const double TANK_LOWER_BOUND = 0.0; + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - if (value is CaptorValue captor) + if (value is double d && parameter is CaptorType type) { - return (captor.Value - captor.Min) / (captor.Max - captor.Min); + double upperBound; + double lowerBound; + + switch (type) + { + case CaptorType.Humidity: + upperBound = HUMIDITY_UPPER_BOUND; + lowerBound = HUMIDITY_LOWER_BOUND; + break; + case CaptorType.Luminosity: + upperBound = LUMINOSITY_UPPER_BOUND; + lowerBound = LUMINOSITY_LOWER_BOUND; + break; + case CaptorType.Temperature: + upperBound = TEMPERATURE_UPPER_BOUND; + lowerBound = TEMPERATURE_LOWER_BOUND; + break; + case CaptorType.Tank: + upperBound = TANK_UPPER_BOUND; + lowerBound = TANK_LOWER_BOUND; + break; + default: + throw new InvalidOperationException("How did you just got here?"); + } + + return (d - lowerBound) / (upperBound - lowerBound); } - throw new ArgumentException($"Invalid source: excepted 'CaptorValue' and got '${value.GetType().Name}'", nameof(value)); + throw new ArgumentException("Invalid source or argument"); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { - if (value is double step && parameter is CaptorValue captor) - { - return new CaptorValue(captor.Min, captor.Max, (captor.Max - captor.Min) * step - captor.Max); - } - - throw new ArgumentException(); + throw new NotImplementedException(); } } } diff --git a/PlantBox.Client/PlantBox.Client/Forms/HomePage.xaml.cs b/PlantBox.Client/PlantBox.Client/Forms/HomePage.xaml.cs index 771db09..bd90d7c 100644 --- a/PlantBox.Client/PlantBox.Client/Forms/HomePage.xaml.cs +++ b/PlantBox.Client/PlantBox.Client/Forms/HomePage.xaml.cs @@ -29,9 +29,8 @@ namespace PlantBox.Client.Forms // Prepare view model var viewModel = new PlantViewModel(plant); - await Navigation.PushAsync(new PlantPage() + await Navigation.PushAsync(new PlantPage(viewModel) { - BindingContext = viewModel, Title = plant.Name }); } diff --git a/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml b/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml index 86089dc..dedf5eb 100644 --- a/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml +++ b/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml @@ -1,12 +1,63 @@  + + 17% + + - - + + + + + + + \ No newline at end of file diff --git a/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml.cs b/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml.cs index 5645478..47023cc 100644 --- a/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml.cs +++ b/PlantBox.Client/PlantBox.Client/Forms/Plant/CaptorsPage.xaml.cs @@ -12,9 +12,9 @@ namespace PlantBox.Client.Forms.Plant [XamlCompilation(XamlCompilationOptions.Compile)] public partial class CaptorsPage : ContentPage { - public CaptorsPage () + public CaptorsPage() { - InitializeComponent (); + InitializeComponent(); } } } \ No newline at end of file diff --git a/PlantBox.Client/PlantBox.Client/Forms/Plant/PlantPage.xaml.cs b/PlantBox.Client/PlantBox.Client/Forms/Plant/PlantPage.xaml.cs index 9ea5db9..cd59395 100644 --- a/PlantBox.Client/PlantBox.Client/Forms/Plant/PlantPage.xaml.cs +++ b/PlantBox.Client/PlantBox.Client/Forms/Plant/PlantPage.xaml.cs @@ -1,5 +1,6 @@ using PlantBox.Client.Models; using PlantBox.Client.Resources; +using PlantBox.Client.ViewModels; using System; using System.Collections.Generic; using System.Linq; @@ -14,18 +15,18 @@ namespace PlantBox.Client.Forms.Plant [XamlCompilation(XamlCompilationOptions.Compile)] public partial class PlantPage : TabbedPage { - public PlantPage() + public PlantPage(PlantViewModel viewModel) { InitializeComponent(); Children.Add(new CaptorsPage() { - BindingContext = BindingContext, + BindingContext = viewModel, Title = Locale.Informations }); Children.Add(new HistoricPage() { - BindingContext = BindingContext, + BindingContext = viewModel, Title = Locale.Historic }); } diff --git a/PlantBox.Client/PlantBox.Client/Models/CaptorType.cs b/PlantBox.Client/PlantBox.Client/Models/CaptorType.cs new file mode 100644 index 0000000..8f26647 --- /dev/null +++ b/PlantBox.Client/PlantBox.Client/Models/CaptorType.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace PlantBox.Client.Models +{ + enum CaptorType + { + Humidity, + Luminosity, + Tank, + Temperature + } +} diff --git a/PlantBox.Client/PlantBox.Client/Models/Historic.cs b/PlantBox.Client/PlantBox.Client/Models/Historic.cs index 069a14b..7d6c94a 100644 --- a/PlantBox.Client/PlantBox.Client/Models/Historic.cs +++ b/PlantBox.Client/PlantBox.Client/Models/Historic.cs @@ -4,7 +4,7 @@ using System.Text; namespace PlantBox.Client.Models { - class Historic + public class Historic { public HistoricEntry MinutelyHistoric { get; } public HistoricEntry HourlyHistoric { get; } diff --git a/PlantBox.Client/PlantBox.Client/Models/HistoricEntry.cs b/PlantBox.Client/PlantBox.Client/Models/HistoricEntry.cs index 9c91255..1ce34dd 100644 --- a/PlantBox.Client/PlantBox.Client/Models/HistoricEntry.cs +++ b/PlantBox.Client/PlantBox.Client/Models/HistoricEntry.cs @@ -4,7 +4,7 @@ using System.Text; namespace PlantBox.Client.Models { - class HistoricEntry + public class HistoricEntry { public DateTime LastTime { get; } public TimeSpan TimeInterval { get; } diff --git a/PlantBox.Client/PlantBox.Client/PlantBox.Client.csproj b/PlantBox.Client/PlantBox.Client/PlantBox.Client.csproj index c61e328..c4d3920 100644 --- a/PlantBox.Client/PlantBox.Client/PlantBox.Client.csproj +++ b/PlantBox.Client/PlantBox.Client/PlantBox.Client.csproj @@ -15,18 +15,26 @@ + + + + + + + + diff --git a/PlantBox.Client/PlantBox.Client/Resources/Images/Humidity_Icon.png b/PlantBox.Client/PlantBox.Client/Resources/Images/Humidity_Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9350831e96826d5fff2cf58010381593e89b7d GIT binary patch literal 3312 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 literal 0 HcmV?d00001 diff --git a/PlantBox.Client/PlantBox.Client/Resources/Images/Luminosity_Icon.png b/PlantBox.Client/PlantBox.Client/Resources/Images/Luminosity_Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b8cced38a8c9bb7cbd719f4e8cbc5e7688c25be8 GIT binary patch literal 11205 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 S#lZh^LD$TzOlvMbi26S#%4d)O literal 0 HcmV?d00001 diff --git a/PlantBox.Client/PlantBox.Client/Resources/Images/Tank_Icon.png b/PlantBox.Client/PlantBox.Client/Resources/Images/Tank_Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4c68d852e00d239dd2b33b753b113ba4d66d3ef7 GIT binary patch literal 2140 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 _tankValue; + set + { + if (value != _tankValue) + { + _tankValue = value; + OnPropertyChanged(); + } + } + } + private void LoadValues() { // TODO //throw new NotImplementedException(); + + // Temp + HumidityCaptor = new CaptorValue(20, 80, 21); + LuminosityCaptor = new CaptorValue(50, 1000, 375.6); + TemperatureCaptor = new CaptorValue(20, 35, 27); + TankValue = 78.45; } protected void OnPropertyChanged([CallerMemberName] string propertyName = null)