view client/src/store/gauges.js @ 2590:1686ec185155

client: added gauge waterlevel example diagram
author Markus Kottlaender <markus@intevation.de>
date Tue, 12 Mar 2019 08:37:09 +0100
parents
children 8774054959a7
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 <markus@intevation.de>
 */

import { getCenter } from "ol/extent";

const init = () => {
  return {
    selectedGauge: null
  };
};

export default {
  init,
  namespaced: true,
  state: init(),
  mutations: {
    selectedGauge: (state, gauge) => {
      state.selectedGauge = gauge;
    }
  },
  actions: {
    selectedGauge: ({ commit }, gauge) => {
      commit("selectedGauge", gauge);

      // configure splitscreen
      let splitscreenConf = {
        id: "gauge-waterlevel",
        component: "waterlevel",
        title: gauge.get("objname"),
        icon: "ruler-vertical",
        closeCallback: () => {
          commit("selectedGauge", null);
        },
        expandCallback: () => {
          commit(
            "map/moveMap",
            {
              coordinates: getCenter(
                gauge
                  .getGeometry()
                  .clone()
                  .transform("EPSG:3857", "EPSG:4326")
                  .getExtent()
              ),
              zoom: 17,
              preventZoomOut: true
            },
            { root: true }
          );
        }
      };
      commit("application/addSplitscreen", splitscreenConf, {
        root: true
      });
      commit("application/activeSplitscreenId", "gauge-waterlevel", {
        root: true
      });
      commit("application/splitscreenLoading", false, { root: true });
      commit("application/showSplitscreen", true, { root: true });
    }
  }
};