view client/src/lib/filters.js @ 2800:db1052bc162a

Added GET /data/longterm-waterlevels/{gauge}
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 25 Mar 2019 17:31:56 +0100
parents add2d47c2567
children ab771ea5e4fe
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) {
    if (!date) return "";
    const d = new Date(date);
    return (
      d.toLocaleDateString(locale2, {
        day: "2-digit",
        month: "2-digit",
        year: "numeric"
      }) +
      " - " +
      d.toLocaleTimeString(locale2, {
        hour12: false
      })
    );
  },
  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;
  }
};