view client/src/components/identify/formatter.js @ 5095:e21cbb9768a2

Prevent duplicate fairway areas In principal, there can be only one or no fairway area at each point on the map. Since polygons from real data will often be topologically inexact, just disallow equal geometries. This will also help to avoid importing duplicates with concurrent imports, once the history of fairway dimensions will be preserved.
author Tom Gottfried <tom@intevation.de>
date Wed, 25 Mar 2020 18:10:02 +0100
parents 544e5a2eacb6
children 3c876c65cc43
line wrap: on
line source

import Feature from "ol/Feature";
import app from "@/main";
import filters from "@/lib/filters";

const formatter = {
  all(p) {
    if (p.key === "objnam") p.key = app.$gettext("Name");
    if (p.key === "objname") p.key = app.$gettext("Name");
    if (p.key === "staging_done" || p.key === "fa_critical")
      p.val = p.val ? app.$gettext("yes") : app.$gettext("no");
    if (
      (p.key === "date_info" ||
        p.key === "fa_date_info" ||
        p.key === "gm_measuredate") &&
      p.val !== null
    ) {
      p.val = filters.surveyDate(p.val);
    }

    // remove certain props
    let propsToRemove = ["bbox"];
    if (propsToRemove.indexOf(p.key) !== -1) return null;

    return p;
  },
  bottlenecks_geoserver: {
    label: app.$gettext("Bottleneck"),
    props: p => {
      if (p.key === "bottleneck_id") p.key = "ID";
      if (p.key === "responsible_country")
        p.key = app.$gettext("Responsible Country");
      if (p.key === "fa_date_info") p.key = app.$gettext("Fairway Date");
      if (p.key === "fa_critical") p.key = app.$gettext("Fairway Critical");
      if (p.key === "source_organization")
        p.key = app.$gettext("Source Organization");
      if (p.key === "gm_measuredate")
        p.key = app.$gettext("Gauge Waterlevel Date");
      if (p.key === "gm_waterlevel") p.key = app.$gettext("Gauge Waterlevel");
      if (p.key === "gm_n_14d")
        p.key = app.$gettext("G.W. Count in Last 14 Days");
      // remove certain props
      //    * gauge_obj is another feature object and we want to stay flat
      //      for display (if left in causes a
      //        TypeError: Converting circular structure to JSON
      //      somewhere later)
      if (p.val instanceof Feature) {
        return null;
      }
      let propsToRemove = ["nobjnm", "reference_water_levels", "fa_data"];
      if (propsToRemove.indexOf(p.key) !== -1) return null;

      return p;
    }
  },
  fairway_dimensions: {
    label: app.$gettext("Fairway Dimensions"),
    props: p => {
      let propsToRemove = ["id"];
      if (propsToRemove.indexOf(p.key) !== -1) return null;

      return p;
    }
  },
  waterway_area: {
    label: app.$gettext("Waterway Area")
  },
  distance_marks_geoserver: {
    label: app.$gettext("Distance Mark")
  },
  distance_marks_ashore_geoserver: {
    label: app.$gettext("Distance Mark ashore")
  },
  waterway_axis: {
    label: app.$gettext("Waterway Axis")
  },
  waterway_profiles: {
    label: app.$gettext("Waterway Profile")
  },
  stretches_geoserver: {
    label: app.$gettext("Stretch"),
    props: p => {
      if (p.key === "gm_measuredate")
        p.key = app.$gettext("Min. Gauge Waterlevel Date");
      if (p.key === "gm_n_14d")
        p.key = app.$gettext("Min. G.W. Count in Last 14 Days");

      return p;
    }
  },
  sections_geoserver: {
    label: app.$gettext("Section"),
    props: p => {
      if (p.key === "gm_measuredate")
        p.key = app.$gettext("Min. Gauge Waterlevel Date");
      if (p.key === "gm_n_14d")
        p.key = app.$gettext("Min. G.W. Count in Last 14 Days");

      return p;
    }
  },
  gauges_geoserver: {
    label: app.$gettext("Gauge"),
    props: p => {
      if (p.key === "gm_measuredate")
        p.key = app.$gettext("Latest Waterlevel Date");
      if (p.key === "gm_waterlevel") p.key = app.$gettext("Latest Waterlevel");
      if (p.key === "gm_n_14d")
        p.key = app.$gettext("Measurement Count in Last 14 Days");

      // remove certain props
      let propsToRemove = ["nsc_data"];
      if (propsToRemove.indexOf(p.key) !== -1) return null;

      return p;
    }
  },
  sounding_results_areas_geoserver: {
    label: app.$gettext("Sounding results"),
    props: p => {
      let propsToRemove = ["height"];
      if (propsToRemove.indexOf(p.key) !== -1) return null;
      if (p.key === "surtyp") p.key = app.$gettext("Survey type");
      if (p.key === "bottleneck_id") p.key = app.$gettext("Bottleneck");
      return p;
    }
  }
};

export { formatter };