Mercurial > gemma
view client/src/components/map/toolbar/Toolbar.vue @ 1372:553aadd97087
new cross profile workflow (WIP)
Needs fixing of some bugs and not so nice looks.
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Tue, 27 Nov 2018 12:59:26 +0100 |
parents | 86be0002cd10 |
children | 92d9dec88add |
line wrap: on
line source
<template> <div class="ml-2"> <div :class="'toolbar toolbar-' + (expandToolbar ? 'expanded' : 'collapsed')"> <Identify></Identify> <Layers></Layers> <Profiles></Profiles> <Linetool></Linetool> <Polygontool></Polygontool> <Pdftool></Pdftool> </div> <div @click="$store.commit('application/expandToolbar', !expandToolbar)" class="toolbar-button bg-info text-white"> <font-awesome-icon :icon="expandToolbar ? 'angle-up' : 'angle-down'"></font-awesome-icon> </div> </div> </template> <style lang="sass"> // not scoped to affect nested components // doen't work when put in application/assets/application.sass... why??? o_O .toolbar overflow: hidden transition: max-height 0.4s .toolbar-collapsed max-height: (3 * $icon-height) + (3 * $offset) .toolbar-expanded max-height: 100% .toolbar-button opacity: $slight-transparent color: #666 height: $icon-width width: $icon-height align-items: center justify-content: center display: flex background: #fff margin-bottom: $offset border-radius: $border-radius box-shadow: $shadow-xs z-index: 2 pointer-events: auto .inverted color: $color-info .grey color: #ddd </style> <script> /* 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.kottlaender@intevation.de> */ import { mapState, mapGetters } from "vuex"; export default { name: "toolbar", components: { Identify: () => import("./Identify.vue"), Layers: () => import("./Layers.vue"), Linetool: () => import("./Linetool.vue"), Polygontool: () => import("./Polygontool.vue"), Profiles: () => import("./Profiles.vue"), Pdftool: () => import("./Pdftool.vue") }, computed: { ...mapGetters("map", ["getLayerByName"]), ...mapState("map", ["lineTool", "polygonTool", "cutTool"]), ...mapState("application", ["expandToolbar"]) }, mounted() { window.addEventListener("keydown", e => { // Escape if (e.keyCode === 27) { this.lineTool.setActive(false); this.polygonTool.setActive(false); this.cutTool.setActive(false); this.$store.commit("map/setCurrentMeasurement", null); this.getLayerByName("Draw Tool") .data.getSource() .clear(); } }); } }; </script>