annotate client/src/components/importoverview/SectionDetails.vue @ 3678:8f58851927c0

client: make layer factory only return new layer config for individual maps instead of each time it is invoked. The purpose of the factory was to support multiple maps with individual layers. But returning a new config each time it is invoked leads to bugs that rely on the layer's state. Now this factory reuses the same objects it created before, per map.
author Markus Kottlaender <markus@intevation.de>
date Mon, 17 Jun 2019 17:31:35 +0200
parents c0f8f9ba21a7
children 69166db6ba8a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
1 <template>
3524
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
2 <div
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
3 :class="{
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
4 full: !showLogs,
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
5 split: showLogs
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
6 }"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
7 >
3550
c0f8f9ba21a7 import_review: sections&stretches accept old and new format in DB
Thomas Junk <thomas.junk@intevation.de>
parents: 3526
diff changeset
8 <div v-if="!details.summary.section" class="d-flex">
3524
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
9 <UISpinnerButton
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
10 @click="showDetails = !showDetails"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
11 :state="showDetails"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
12 :icons="['angle-right', 'angle-down']"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
13 classes="text-info"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
14 />
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
15 <a @click="zoomToSection()" class="text-info pointer">{{
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
16 details.summary.objnam
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
17 }}</a>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
18 </div>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
19 <div>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
20 <div v-if="showDetails">
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
21 <div
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
22 v-for="(entry, index) in Object.keys(details.summary)"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
23 :key="index"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
24 class="comparison row no-gutters px-4 text-left"
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
25 >
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
26 <span class="col-4">{{ entry }}</span>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
27 <span class="col-4">{{ details.summary[entry] }}</span>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
28 </div>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
29 </div>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
30 </div>
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
31 </div>
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
32 </template>
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
33
3524
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
34 <style lang="scss" scoped>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
35 .comparison {
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
36 width: 668px;
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
37 border-top: dashed 1px #dee2e6;
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
38 }
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
39
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
40 .comparison:nth-child(odd) {
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
41 background-color: #f8f9fa;
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
42 }
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
43
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
44 .split {
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
45 max-height: 35vh;
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
46 }
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
47
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
48 .full {
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
49 max-height: 70vh;
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
50 }
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
51 </style>
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
52
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
53 <script>
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
54 /* This is Free Software under GNU Affero General Public License v >= 3.0
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
55 * without warranty, see README.md and license for details.
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
56 *
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
57 * SPDX-License-Identifier: AGPL-3.0-or-later
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
58 * License-Filename: LICENSES/AGPL-3.0.txt
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
59 *
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
60 * Copyright (C) 2018 by via donau
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
61 * – Österreichische Wasserstraßen-Gesellschaft mbH
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
62 * Software engineering by Intevation GmbH
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
63 *
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
64 * Author(s):
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
65 * Thomas Junk <thomas.junk@intevation.de>
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
66 */
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
67 import { displayError } from "@/lib/errors";
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
68 import { mapState, mapGetters } from "vuex";
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
69
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
70 export default {
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
71 props: ["entry"],
3524
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
72 data() {
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
73 return {
3526
c71f1b15c5d9 default show details
Thomas Junk <thomas.junk@intevation.de>
parents: 3525
diff changeset
74 showDetails: true
3524
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
75 };
40bc7e3bc561 review details for sections
Thomas Junk <thomas.junk@intevation.de>
parents: 3358
diff changeset
76 },
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
77 mounted() {
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
78 this.$store.commit("imports/hideAdditionalInfo");
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
79 },
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
80 computed: {
3525
4a31a4dbcf18 zoom function repaired
Thomas Junk <thomas.junk@intevation.de>
parents: 3524
diff changeset
81 ...mapState("imports", ["showAdditional", "showLogs", "details"]),
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
82 ...mapGetters("map", ["openLayersMap"])
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
83 },
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
84 methods: {
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
85 zoomToSection() {
3525
4a31a4dbcf18 zoom function repaired
Thomas Junk <thomas.junk@intevation.de>
parents: 3524
diff changeset
86 const { name } = this.details.summary;
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
87 this.openLayersMap()
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
88 .getLayer("SECTIONS")
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
89 .setVisible(true);
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
90 this.$store
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
91 .dispatch("imports/loadSection", name)
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
92 .then(response => {
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
93 if (response.data.features.length < 1)
3525
4a31a4dbcf18 zoom function repaired
Thomas Junk <thomas.junk@intevation.de>
parents: 3524
diff changeset
94 throw new Error("no features found for: " + name);
3358
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
95 this.$store.commit(
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
96 "imports/selectedSectionId",
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
97 response.data.features[0].id
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
98 );
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
99 this.$store.dispatch("map/moveToFeauture", {
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
100 feature: response.data.features[0],
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
101 zoom: 17,
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
102 preventZoomOut: true
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
103 });
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
104 })
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
105 .catch(error => {
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
106 console.log(error);
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
107 const { status, data } = error.response;
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
108 displayError({
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
109 title: this.$gettext("Backend Error"),
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
110 message: `${status}: ${data.message || data}`
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
111 });
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
112 });
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
113 }
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
114 }
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
115 };
c0c880553cd5 client: import review: added section details (actually just the link to move the map to the feature)
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
116 </script>