view client/src/application/stores/application.js @ 1055:1ff8c072df18

WIP: Bottleneck list/table
author Markus Kottlaender <markus@intevation.de>
date Thu, 25 Oct 2018 15:05:20 +0200
parents ca628dce90dd
children 7ec2133c6404
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 { version } from "../../../package.json";

const defaultCollapseState = true;

const initializeSplitScreen = () => {
  return {
    active: false,
    mode: "v"
  };
};

const DRAWMODES = {
  LINE: "LineString"
};

const Application = {
  namespaced: true,
  state: {
    appTitle: process.env.VUE_APP_TITLE,
    secondaryLogo: process.env.VUE_APP_SECONDARY_LOGO_URL,
    sidebar: {
      iscollapsed: defaultCollapseState
    },
    bottlenecksCollapsed: true,
    splitsceen: initializeSplitScreen(),
    usermenu: {
      iscollapsed: defaultCollapseState
    },
    countries: ["AT", "SK", "HU", "HR", "RS", "BiH", "BG", "RO", "UA"],
    drawMode: null,
    version
  },
  getters: {
    countries: state => {
      return state.countries;
    },
    sidebarCollapsed: state => {
      return state.sidebar.iscollapsed;
    },
    isUsermenuCollapsed: state => {
      return state.usermenu.iscollapsed;
    },
    appTitle: state => {
      return state.appTitle;
    },
    secondaryLogo: state => {
      return state.secondaryLogo;
    },
    isSplitscreen: state => {
      return state.splitsceen.active;
    },
    splitMode: state => {
      return state.splitsceen.mode;
    },
    drawMode: state => {
      return state.drawMode;
    },
    versionStr: state => {
      // version number from package.json
      let versionStr = "v" + state.version;

      // hg revision
      if (
        process.env.VUE_APP_HGREV &&
        (state.version.includes("dev") ||
          state.version.includes("beta") ||
          state.version.includes("alpha"))
      )
        versionStr += " " + process.env.VUE_APP_HGREV;

      return versionStr;
    }
  },
  mutations: {
    toggleSidebar: state => {
      state.sidebar.iscollapsed = !state.sidebar.iscollapsed;
    },
    toggleBottlenecks: state => {
      state.bottlenecksCollapsed = !state.bottlenecksCollapsed;
    },
    toggleUserMenu: state => {
      state.usermenu.iscollapsed = !state.usermenu.iscollapsed;
    },
    toggleSplitScreen: state => {
      state.splitsceen.active = !state.splitsceen.active;
    },
    openSplitScreen: state => {
      state.splitsceen.active = true;
    },
    closeSplitScreen: state => {
      state.splitsceen.active = false;
    },
    resetSidebar: state => {
      state.sidebar.iscollapsed = defaultCollapseState;
    },
    collapseSidebar: state => {
      state.sidebar.iscollapsed = true;
    },
    resetUserMenu: state => {
      state.usermenu.iscollapsed = defaultCollapseState;
    },
    collapseUserMenu: state => {
      state.usermenu.iscollapsed = true;
    },
    resetSplitScreen: state => {
      state.splitsceen = initializeSplitScreen();
    },
    toggleDrawModeLine: state => {
      if (state.drawMode && state.drawMode === DRAWMODES.LINE) {
        state.drawMode = null;
        return;
      }
      state.drawMode = DRAWMODES.LINE;
    }
  },
  actions: {}
};

export default Application;