view client/src/lib/filters.js @ 4357:e8af2ed8666e

refactor classification of Nash sutcliffe for better readability
author Thomas Junk <thomas.junk@intevation.de>
date Mon, 09 Sep 2019 16:12:43 +0200
parents 1109a38f7ff1
children
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):
 * Thomas Junk <thomas.junk@intevation.de>
 * Markus Kottländer <markus.kottlaender@intevation.de>
 */

import locale2 from "locale2";

export default {
  surveyDate(date) {
    return date
      ? new Date(date).toLocaleDateString(locale2, {
          day: "2-digit",
          month: "2-digit",
          year: "numeric"
        })
      : "";
  },
  dateTime(date, hideTime) {
    if (!date) return "";
    const d = new Date(date);
    let dateString = d.toLocaleDateString(locale2, {
      day: "2-digit",
      month: "2-digit",
      year: "numeric"
    });
    if (!hideTime) {
      dateString +=
        " - " +
        d.toLocaleTimeString(locale2, {
          hour12: false
        });
    }
    return dateString;
  },
  sortTable(data, sortColumn, sortDirection, page, pageSize) {
    // clone the array and leave the original intact
    let sortedData = data.filter(d => d);

    if (sortColumn && sortDirection) {
      sortedData.sort((a, b) => {
        let valB = sortColumn.split(".").reduce((o, i) => o[i], a) || "";
        let valA = sortColumn.split(".").reduce((o, i) => o[i], b) || "";

        if (valA > valB) return sortDirection === "ASC" ? -1 : 1;
        if (valA < valB) return sortDirection === "ASC" ? 1 : -1;

        return 0;
      });
    }

    if (page && pageSize) {
      let start = page * pageSize - pageSize;
      sortedData = sortedData.slice(start, start + pageSize);
    }

    return sortedData;
  },
  // converts cm to m and formats based on locale
  waterlevel(n) {
    return (n / 100).toLocaleString(locale2, {
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    });
  }
};