Mercurial > gemma
view client/src/lib/classifications.js @ 3503:b6dd09044951
client: spuc12: added comments
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Tue, 28 May 2019 11:49:40 +0200 |
parents | c5c7cc24fe72 |
children | a606d003730c |
line wrap: on
line source
/* This is Free Software under GNU Affero General Public License v >= 3.0 * without warranty, see README.md and license for details. * * SPDX-License-Identifier: AGPL-3.0-or-later * License-Filename: LICENSES/AGPL-3.0.txt * * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH * * Author(s): * Raimund Renkert <raimund.renkert@intevation.de> */ export default { surveyCurrency(bottleneck) { if ( bottleneck.get("revisiting_time") === null || bottleneck.get("revisiting_time") === 0 ) { return "white"; } if (bottleneck.get("date_max") === null) { return "red"; } let revTime = bottleneck.get("revisiting_time") * 30.5; let latest = Date.parse(bottleneck.get("date_max").replace("Z", "")); var diff = Math.floor((Date.now() - latest) / 86400000); if (diff <= revTime) { return "lime"; } else if (revTime < diff && diff <= revTime * 1.5) { return "yellow"; } else if (revTime * 1.5 < diff) { return "red"; } }, gmAvailability(gauge) { let gmDate = gauge.get("gm_measuredate"); let gmN = gauge.get("gm_n_14d"); if ( gmDate !== undefined && gmDate !== null && Date.parse(gmDate) > Date.now() - 86400000 // latest value within 24 h ) { // 1344: one value every 15 min in 14 days, but the Hydra says: // let 85% be enough for now. const valuesAtLeast = 1124; if (gmN !== undefined && gmN !== null && gmN >= valuesAtLeast) { return "lime"; } return "yellow"; } return "red"; }, forecastAccuracy(gauge) { let fa3d = gauge.get("forecast_accuracy_3d"); let fa1d = gauge.get("forecast_accuracy_1d"); if (typeof fa3d == "number" && typeof fa1d == "number") { if (fa1d > 15) { return "red"; } else if (fa3d > 15) { return "yellow"; } else { return "lime"; } } return "white"; }, forecastVsReality(gauge) { let nsc = gauge.get("nsc_data"); if (nsc && nsc.coeffs.reduce((sum, coeff) => sum + coeff.samples, 0)) { // 24h < 12.5 if (nsc.coeffs[0].samples && nsc.coeffs[0].value < -12.5) return "red"; // 72h < 12.5 if (nsc.coeffs[2].samples && nsc.coeffs[2].value < -12.5) return "yellow"; // both > 12.5 return "lime"; } // no data available return "white"; } };