Mercurial > gemma
view client/src/layers/Identify.vue @ 770:c12ec7fde3f2
client: add simple identify top area box
* Add Identify.vue as a top area box that display the currently identified
features in a short text-only way. This can be styled further, also
the box is not yet resized dynamically. Put in to subdir layers because
it is closest to Layers.vue, which was used as a template.
* Introduce a new mapstore/identifiedFeatures state.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Wed, 26 Sep 2018 09:13:29 +0200 |
parents | |
children | 6d214b3bed35 |
line wrap: on
line source
<template> <div class="identifymenu"> <div @click="collapse" class="d-flex flex-column ui-element minimizer"> <div> <i class="fa fa-info"></i> </div> </div> <div :class="identifyStyle"> <div v-if="!collapsed" class="card-body"> <div class="headline"> <h4 class="card-title">Identified</h4> </div> <hr> <div class="d-flex flex-column"> <div v-for="feature of identifiedFeatures" :key="feature.getId()"> {{ feature.getId().replace(/[.][^.]*$/,"") /* cut away everything from the last . to the end */}}: <small v-for="(value, key) in prepareProperties(feature)" :key="key"> <div v-if="value">{{key}}:{{value}}</div> </small> </div> </div> </div> </div> </div> </template> <style lang="scss"> .identifymenu { position: relative; margin-right: $offset; } .identify { background-color: white; margin-left: $small-offset; opacity: $slight-transparent; } .identifycollapsed { height: $icon-height; width: $icon-width; transition: $transition-fast; } .identifyexpanded { height: $identify-height; width: $identify-width; } .minimizer { position: absolute; z-index: 2; right: 0; margin-top: $x-small-offset; border-radius: $border-radius; height: $icon-width; width: $icon-height; } </style> <script> import { mapGetters } from "vuex"; export default { name: "identify", data() { return { collapsed: true }; }, computed: { ...mapGetters("mapstore", ["identifiedFeatures"]), identifyStyle() { return { "ui-element": true, card: true, identify: true, shadow: true, identifyexpanded: !this.collapsed, identifycollapsed: this.collapsed }; } }, methods: { collapse() { this.collapsed = !this.collapsed; }, prepareProperties(feature) { // return dict object with propertyname:plainvalue prepared for display var properties = feature.getProperties(); delete properties[feature.getGeometryName()]; return properties; } } }; </script>