view client/src/components/identify/formatter.js @ 4224:bb66e144dece

client: fix identify for bottlenecks * Fix identify when clicking on the Data Availability/Accurary layer, by removing the `gauge_obj` from the list of properties to format for display. Improved some comments and code structure along the way.
author Bernhard Reiter <bernhard@intevation.de>
date Mon, 19 Aug 2019 12:27:19 +0200
parents 89a39783c20a
children f3b733fd119a
line wrap: on
line source

const formatter = {
  all(p) {
    if (p.key === "objnam") p.key = "Name";
    if (p.key === "objname") p.key = "Name";
    if (p.key === "staging_done" || p.key === "fa_critical")
      p.val = p.val ? "yes" : "no";
    if (
      (p.key === "date_info" ||
        p.key === "fa_date_info" ||
        p.key === "gm_measuredate") &&
      p.val !== null
    ) {
      p.val = new Date(p.val).toLocaleString();
    }

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

    return p;
  },
  bottlenecks_geoserver: {
    label: "Bottleneck",
    props: p => {
      if (p.key === "bottleneck_id") p.key = "ID";
      if (p.key === "responsible_country") p.key = "Responsible Country";
      if (p.key === "fa_date_info") p.key = "Fairway Date";
      if (p.key === "fa_critical") p.key = "Fairway Critical";
      if (p.key === "gauge_objname") p.key = "Reference Gauge";
      if (p.key === "source_organization") p.key = "Source Organization";
      if (p.key === "gm_measuredate") p.key = "Gauge Waterlevel Date";
      if (p.key === "gm_waterlevel") p.key = "Gauge Waterlevel";
      if (p.key === "gm_n_14d") p.key = "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)
      let propsToRemove = [
        "nobjnm",
        "reference_water_levels",
        "fa_data",
        "gauge_obj"
      ];
      if (propsToRemove.indexOf(p.key) !== -1) return null;

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

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

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

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

      return p;
    }
  }
};

export { formatter };