Files
PlantBox/PlantBox.Client/PlantBox.Client/Converters/CaptorValueToDoubleConverter.cs
2019-04-17 13:44:24 +02:00

63 lines
2.2 KiB
C#

using PlantBox.Client.Models;
using PlantBox.Shared.Communication.Commands;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using Xamarin.Forms;
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 double d && parameter is CaptorType type)
{
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 or argument");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}