Mercurial > gemma
diff client/src/components/Zoom.vue @ 1558:0ded4c56978e
refac: component filestructure. remove admin/map hierarchy
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Wed, 12 Dec 2018 09:22:20 +0100 |
parents | client/src/components/map/Zoom.vue@9b81ac91a43e |
children | 826fc7309370 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/components/Zoom.vue Wed Dec 12 09:22:20 2018 +0100 @@ -0,0 +1,76 @@ +<template> + <div + class="d-flex buttoncontainer shadow-xs mb-3 position-absolute" + :style="showSplitscreen ? 'margin-bottom: 51vh !important' : ''" + > + <button + class="zoomButton border-0 bg-white rounded-left ui-element" + @click="zoomOut" + > + <font-awesome-icon icon="minus"></font-awesome-icon> + </button> + <button + class="zoomButton 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="scss" scoped> +.buttoncontainer { + bottom: 0; + left: 50%; + margin-left: -$icon-width; +} + +.zoomButton { + 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"; + +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; + } + } +}; +</script>