annotate client/src/components/identify/Identify.vue @ 2423:3423cd4b3136

client: fix json parsing in identify box JSON.parse() accepts integers and null as valid json. So to be sure to get an object, we cannot just try JSON.parse() but we need to check if the given value is a string and starts with a {.
author Markus Kottlaender <markus@intevation.de>
date Thu, 28 Feb 2019 15:34:07 +0100
parents ef928c63388a
children b6deb03ef13f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2371
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
1 <template>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
2 <div
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
3 :class="[
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
4 'box ui-element rounded bg-white text-nowrap',
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
5 { expanded: showIdentify }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
6 ]"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
7 >
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
8 <div style="width: 18rem">
2387
f185503ef35a client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents: 2372
diff changeset
9 <UIBoxHeader icon="info" title="Identified" :closeCallback="close" />
2371
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
10 <div class="features flex-grow-1 text-left">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
11 <div v-if="currentMeasurement">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
12 <small class="d-block bg-dark text-light text-center px-2 py-1">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
13 {{ $gettext("Measurement") }}
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
14 </small>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
15 <small class="d-flex justify-content-between px-2">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
16 <b>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
17 {{ currentMeasurement.quantity }}
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
18 </b>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
19 {{ currentMeasurement.value }} {{ currentMeasurement.unitSymbol }}
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
20 </small>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
21 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
22 <div
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
23 v-for="feature of filteredIdentifiedFeatures"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
24 :key="feature.getId()"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
25 >
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
26 <small class="d-block bg-dark text-light text-center px-2 py-1">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
27 {{ $gettext(featureLabel(feature)) }}
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
28 </small>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
29 <small
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
30 v-for="prop in featureProps(feature)"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
31 :key="prop.key"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
32 v-if="prop.val"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
33 class="d-flex justify-content-between px-2"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
34 >
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
35 <b>{{ $gettext(prop.key) }}</b>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
36 {{ prop.val }}
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
37 </small>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
38 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
39 <div
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
40 v-if="!currentMeasurement && !filteredIdentifiedFeatures.length"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
41 class="text-muted small text-center my-auto py-3 px-2"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
42 >
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
43 <translate>No features identified.</translate>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
44 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
45 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
46 <div class="versioninfo border-top p-3 text-left">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
47 <span v-translate="{ license: 'AGPL-3.0-or-later' }">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
48 This app uses <i>gemma</i>, which is Free Software under <br />
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
49 %{ license } without warranty, see docs for details.
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
50 </span>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
51 <br />
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
52 <a href="https://hg.intevation.de/gemma/file/tip">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
53 <translate>source-code</translate>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
54 </a>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
55 {{ versionStr }} <br />© via donau. &#x24D4; Intevation. <br />
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
56 <span v-translate="{ name: 'OpenSteetMap' }"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
57 >Some data ©
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
58 <a href="https://www.openstreetmap.org/copyright">%{ name }</a>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
59 contributors.
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
60 </span>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
61 <br />
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
62 <span v-translate="{ geoLicense: 'CC-BY-4.0' }">
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
63 Uses
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
64 <a href="https://download.geonames.org/export/dump/readme.txt"
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
65 >GeoNames</a
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
66 >
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
67 under %{ geoLicense }.
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
68 </span>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
69 <translate>Generated PDFs use font: </translate>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
70 <a href="http://libertine-fonts.org">LinBiolinum</a>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
71 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
72 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
73 </div>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
74 </template>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
75
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
76 <style lang="scss" scoped>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
77 .features {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
78 max-height: 19rem;
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
79 overflow-y: auto;
2372
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
80 small {
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
81 &:nth-child(even) {
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
82 background: #f8f8f8;
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
83 }
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
84 &:hover {
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
85 background: #eeeeee;
20e4efa64320 client: improved row colors in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2371
diff changeset
86 }
2371
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
87 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
88 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
89
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
90 .versioninfo {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
91 font-size: 60%;
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
92 white-space: normal;
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
93 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
94 </style>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
95
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
96 <script>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
97 /* This is Free Software under GNU Affero General Public License v >= 3.0
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
98 * without warranty, see README.md and license for details.
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
99 *
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
100 * SPDX-License-Identifier: AGPL-3.0-or-later
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
101 * License-Filename: LICENSES/AGPL-3.0.txt
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
102 *
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
103 * Copyright (C) 2018, 2019 by via donau
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
104 * – Österreichische Wasserstraßen-Gesellschaft mbH
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
105 * Software engineering by Intevation GmbH
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
106 *
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
107 * Author(s):
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
108 * Thomas Junk <thomas.junk@intevation.de>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
109 * Bernhard E. Reiter <bernhard.reiter@intevation.de>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
110 * Markus Kottländer <markus.kottlaender@intevation.de>
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
111 */
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
112 import { mapState, mapGetters } from "vuex";
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
113 import { formatter } from "./formatter";
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
114
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
115 export default {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
116 name: "identify",
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
117 computed: {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
118 ...mapGetters("application", ["versionStr"]),
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
119 ...mapState("application", ["showIdentify"]),
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
120 ...mapGetters("map", ["filteredIdentifiedFeatures"]),
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
121 ...mapState("map", ["currentMeasurement"])
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
122 },
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
123 methods: {
2387
f185503ef35a client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents: 2372
diff changeset
124 close() {
f185503ef35a client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents: 2372
diff changeset
125 this.$store.commit("application/showIdentify", false);
f185503ef35a client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents: 2372
diff changeset
126 },
2371
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
127 featureId(feature) {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
128 // cut away everything from the last . to the end
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
129 return feature.getId().replace(/[.][^.]*$/, "");
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
130 },
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
131 featureLabel(feature) {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
132 if (formatter.hasOwnProperty(this.featureId(feature))) {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
133 return formatter[this.featureId(feature)].label;
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
134 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
135 return this.featureId(feature);
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
136 },
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
137 featureProps(feature) {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
138 // create array with {key, val} objects
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
139 let propsArray = [];
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
140 Object.keys(feature.getProperties()).forEach(key => {
2423
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
141 // skip geometry (would lead to cyclic object error)
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
142 if (key !== feature.getGeometryName()) {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
143 let val = feature.getProperties()[key];
2405
ef928c63388a client: handle json values in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2387
diff changeset
144
2423
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
145 // if val is a valid json object string, spread its values into the array
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
146 let jsonObj = this.getObjectFromString(val);
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
147 if (jsonObj) {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
148 Object.keys(jsonObj).forEach(key => {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
149 propsArray.push({ key, val: jsonObj[key] });
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
150 });
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
151 } else {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
152 // otherwise just put the key value pair into the array
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
153 propsArray.push({ key, val });
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
154 }
2405
ef928c63388a client: handle json values in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2387
diff changeset
155 }
2371
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
156 });
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
157
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
158 // change labels and remove unneeded properties
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
159 if (formatter.hasOwnProperty(this.featureId(feature))) {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
160 propsArray = propsArray
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
161 .map(formatter[this.featureId(feature)].props)
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
162 .filter(p => p); // remove empty entries
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
163 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
164
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
165 // remove underscores in labels that where not previously changed already
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
166 propsArray = propsArray.map(prop => {
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
167 return { key: prop.key.replace(/_/g, " "), val: prop.val };
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
168 });
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
169
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
170 return propsArray;
2423
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
171 },
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
172 getObjectFromString(val) {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
173 // JSON.parse() accepts integers and null as valid json. So to be sure to
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
174 // get an object, we cannot just try JSON.parse() but we need to check if
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
175 // the given value is a string and starts with a {.
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
176 if (
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
177 Object.prototype.toString.call(val) === "[object String]" &&
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
178 val[0] === "{"
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
179 ) {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
180 try {
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
181 return JSON.parse(val);
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
182 } catch (e) {}
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
183 }
3423cd4b3136 client: fix json parsing in identify box
Markus Kottlaender <markus@intevation.de>
parents: 2405
diff changeset
184 return null;
2371
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
185 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
186 }
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
187 };
045bac575294 client: fixed broken previous commit
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
188 </script>