view client/src/store/bottlenecks.js @ 1114:8d12056d602a store-refactoring

shortened store file imports
author Markus Kottlaender <markus@intevation.de>
date Mon, 05 Nov 2018 13:41:53 +0100
parents f106aee673e7
children bc55ffaeb639
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):
 * Markus Kottländer <markuks.kottlaender@intevation.de>
 */
import { HTTP } from "../application/lib/http";
import { WFS } from "ol/format.js";
import { displayError } from "../application/lib/errors.js";

export default {
  namespaced: true,
  state: {
    bottlenecks: [],
    selectedBottleneck: null,
    surveys: [],
    selectedSurvey: null
  },
  mutations: {
    setBottlenecks: (state, bottlenecks) => {
      state.bottlenecks = bottlenecks;
    },
    setSelectedBottleneck: (state, name) => {
      state.selectedBottleneck = name;
    },
    setSurveys(state, surveys) {
      state.surveys = surveys;
    },
    setSelectedSurvey(state, survey) {
      state.selectedSurvey = survey;
    }
  },
  actions: {
    setSelectedBottleneck({ state, commit, dispatch }, name) {
      if (name !== state.selectedBottleneck) {
        commit("setSelectedSurvey", null);
        commit("fairwayprofile/clearCurrentProfile", null, { root: true });
      }
      commit("setSelectedBottleneck", name);
      dispatch("querySurveys", name);
    },
    loadBottlenecks({ commit }) {
      var bottleneckFeatureCollectionRequest = new WFS().writeGetFeature({
        srsName: "EPSG:4326",
        featureNS: "gemma",
        featurePrefix: "gemma",
        featureTypes: ["bottleneck_overview"],
        outputFormat: "application/json"
      });

      HTTP.post(
        "/internal/wfs",
        new XMLSerializer().serializeToString(
          bottleneckFeatureCollectionRequest
        ),
        {
          headers: {
            "X-Gemma-Auth": localStorage.getItem("token"),
            "Content-type": "text/xml; charset=UTF-8"
          }
        }
      ).then(response => {
        commit("setBottlenecks", response.data.features);
      });
    },
    querySurveys({ commit }, name) {
      if (name) {
        HTTP.get("/surveys/" + name, {
          headers: {
            "X-Gemma-Auth": localStorage.getItem("token"),
            "Content-type": "text/xml; charset=UTF-8"
          }
        })
          .then(response => {
            commit("setSurveys", response.data.surveys);
          })
          .catch(error => {
            commit("setSurveys", []);
            const { status, data } = error.response;
            displayError({
              title: "Backend Error",
              message: `${status}: ${data.message || data}`
            });
          });
      } else {
        commit("setSurveys", []);
      }
    }
  }
};