Document that AdjustmentOptions are non-nullable

This commit is contained in:
Matthew Oslan
2019-06-27 22:58:33 -04:00
parent 7e2d3458fd
commit 95dadf601d
3 changed files with 14 additions and 19 deletions

View File

@@ -5,9 +5,8 @@ import { WeatherProvider } from "../weatherProviders/WeatherProvider";
export interface AdjustmentMethod { export interface AdjustmentMethod {
/** /**
* Calculates the percentage that should be used to scale watering time. * Calculates the percentage that should be used to scale watering time.
* @param adjustmentOptions The user-specified options for the calculation, or undefined/null if no custom values * @param adjustmentOptions The user-specified options for the calculation. No checks will be made to ensure the
* are to be used. No checks will be made to ensure the AdjustmentOptions are the correct type that the function * AdjustmentOptions are the correct type that the function is expecting or to ensure that any of its fields are valid.
* is expecting or to ensure that any of its fields are valid.
* @param wateringData The basic weather information of the watering site. This may be undefined if an error occurred * @param wateringData The basic weather information of the watering site. This may be undefined if an error occurred
* while retrieving the data. * while retrieving the data.
* @param coordinates The coordinates of the watering site. * @param coordinates The coordinates of the watering site.

View File

@@ -7,7 +7,7 @@ import { WateringData } from "../../types";
*/ */
async function calculateRainDelayWateringScale( adjustmentOptions: RainDelayAdjustmentOptions, wateringData: WateringData | undefined ): Promise< AdjustmentMethodResponse > { async function calculateRainDelayWateringScale( adjustmentOptions: RainDelayAdjustmentOptions, wateringData: WateringData | undefined ): Promise< AdjustmentMethodResponse > {
const raining = wateringData && wateringData.raining; const raining = wateringData && wateringData.raining;
const d = adjustmentOptions && adjustmentOptions.hasOwnProperty( "d" ) ? adjustmentOptions.d : 24; const d = adjustmentOptions.hasOwnProperty( "d" ) ? adjustmentOptions.d : 24;
return { return {
scale: undefined, scale: undefined,
rawData: { raining: raining ? 1 : 0 }, rawData: { raining: raining ? 1 : 0 },

View File

@@ -40,18 +40,15 @@ async function calculateZimmermanWateringScale( adjustmentOptions: ZimmermanAdju
let humidityBase = 30, tempBase = 70, precipBase = 0; let humidityBase = 30, tempBase = 70, precipBase = 0;
// Get baseline conditions for 100% water level, if provided // Get baseline conditions for 100% water level, if provided
if ( adjustmentOptions ) {
humidityBase = adjustmentOptions.hasOwnProperty( "bh" ) ? adjustmentOptions.bh : humidityBase; humidityBase = adjustmentOptions.hasOwnProperty( "bh" ) ? adjustmentOptions.bh : humidityBase;
tempBase = adjustmentOptions.hasOwnProperty( "bt" ) ? adjustmentOptions.bt : tempBase; tempBase = adjustmentOptions.hasOwnProperty( "bt" ) ? adjustmentOptions.bt : tempBase;
precipBase = adjustmentOptions.hasOwnProperty( "br" ) ? adjustmentOptions.br : precipBase; precipBase = adjustmentOptions.hasOwnProperty( "br" ) ? adjustmentOptions.br : precipBase;
}
let humidityFactor = ( humidityBase - wateringData.humidity ), let humidityFactor = ( humidityBase - wateringData.humidity ),
tempFactor = ( ( wateringData.temp - tempBase ) * 4 ), tempFactor = ( ( wateringData.temp - tempBase ) * 4 ),
precipFactor = ( ( precipBase - wateringData.precip ) * 200 ); precipFactor = ( ( precipBase - wateringData.precip ) * 200 );
// Apply adjustment options, if provided, by multiplying the percentage against the factor // Apply adjustment options, if provided, by multiplying the percentage against the factor
if ( adjustmentOptions ) {
if ( adjustmentOptions.hasOwnProperty( "h" ) ) { if ( adjustmentOptions.hasOwnProperty( "h" ) ) {
humidityFactor = humidityFactor * ( adjustmentOptions.h / 100 ); humidityFactor = humidityFactor * ( adjustmentOptions.h / 100 );
} }
@@ -63,7 +60,6 @@ async function calculateZimmermanWateringScale( adjustmentOptions: ZimmermanAdju
if ( adjustmentOptions.hasOwnProperty( "r" ) ) { if ( adjustmentOptions.hasOwnProperty( "r" ) ) {
precipFactor = precipFactor * ( adjustmentOptions.r / 100 ); precipFactor = precipFactor * ( adjustmentOptions.r / 100 );
} }
}
return { return {
// Apply all of the weather modifying factors and clamp the result between 0 and 200%. // Apply all of the weather modifying factors and clamp the result between 0 and 200%.