view client/src/zoom/zoom.vue @ 1217:ba8cd80d68b6

made more use of bootstrap classes instead of custom css
author Markus Kottlaender <markus@intevation.de>
date Mon, 19 Nov 2018 15:20:22 +0100
parents b23622905a3f
children 3c84035b1f1b
line wrap: on
line source

<template>
    <div class="d-flex buttoncontainer shadow mb-3 position-absolute" :style="showSplitscreen ? 'margin-bottom: 51vh' : ''">
        <button class="zoomButton border-0 bg-white rounded-left ui-element border-right" @click="zoomIn">
            <i class="fa fa-plus"></i>
        </button>
        <button class="zoomButton border-0 bg-white rounded-right ui-element" @click="zoomOut">
            <i class="fa fa-minus"></i>
        </button>
    </div>
</template>

<style lang="sass" scoped>
.buttoncontainer
  bottom: 0
  left: 50%
  margin-left: -$icon-width

.zoomButton
  min-height: $icon-width
  min-width: $icon-width
  z-index: 2
  outline: none
</style>
<script>
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>