Mercurial > gemma
view client/src/components/Zoom.vue @ 2640:4bcb26542767
client: use new btn-xs class in tables
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Thu, 14 Mar 2019 11:23:42 +0100 |
parents | 83b938bf4da9 |
children | 6c5364ff0abb |
line wrap: on
line source
<template> <div :class="['zoom-buttons shadow-xs', { splitscreen: showSplitscreen }]"> <button class="zoom-button border-0 bg-white rounded-left ui-element" @click="zoomOut" > <font-awesome-icon icon="minus"></font-awesome-icon> </button> <button class="zoom-button border-0 bg-white ui-element border-right" @click="refreshMap" > <font-awesome-icon icon="redo"></font-awesome-icon> </button> <button class="zoom-button border-0 bg-white rounded-right ui-element border-right" @click="zoomIn" > <font-awesome-icon icon="plus"></font-awesome-icon> </button> </div> </template> <style lang="sass" scoped> .zoom-buttons position: absolute bottom: $small-offset left: 50% margin-left: -($icon-width * 1.5) margin-bottom: 0 transition: margin-bottom 0.3s &.splitscreen margin-bottom: 50vh .zoom-button min-height: $icon-width min-width: $icon-width z-index: 1 outline: none color: #666 </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@intevation.de> * Thomas Junk <thomas.junk@intevation.de> */ import { mapState } from "vuex"; import { Vector as VectorLayer } from "ol/layer.js"; export default { name: "zoom", computed: { ...mapState("map", ["openLayersMap"]), ...mapState("application", ["showSplitscreen"]), zoomLevel: { get() { return this.openLayersMap.getView().getZoom(); }, set(value) { this.openLayersMap.getView().animate({ zoom: value, duration: 300 }); } } }, methods: { zoomIn() { this.zoomLevel = this.zoomLevel + 1; }, zoomOut() { this.zoomLevel = this.zoomLevel - 1; }, refreshMap() { let layers = this.openLayersMap.getLayers().getArray(); for (let i = 0; i < layers.length; i++) { let layer = layers[i]; if ( layer instanceof VectorLayer && layer.get("source").loader_.name != "VOID" ) { layer.getSource().clear(true); layer.getSource().refresh({ force: true }); } } } } }; </script>