Mercurial > gemma
annotate client/src/store/fairway.js @ 1237:74562dc29e10
refactored drawtool
The map interactions (ol/interaction/Draw) were previously always removed and re-created.
Now there are created and added to the map once and their active flag is used to toggle the tools.
Results in cleaner code and easier separation of the buttons in the future.
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Tue, 20 Nov 2018 13:03:24 +0100 |
parents | 48ae4458710d |
children | bc55ffaeb639 |
rev | line source |
---|---|
1019
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
1 /* |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
2 * This is Free Software under GNU Affero General Public License v >= 3.0 |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
3 * without warranty, see README.md and license for details. |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
4 * |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
5 * SPDX-License-Identifier: AGPL-3.0-or-later |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
6 * License-Filename: LICENSES/AGPL-3.0.txt |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
7 * |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
8 * Copyright (C) 2018 by via donau |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
9 * – Österreichische Wasserstraßen-Gesellschaft mbH |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
10 * Software engineering by Intevation GmbH |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
11 * |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
12 * Author(s): |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
13 * Thomas Junk <thomas.junk@intevation.de> |
1044
f8a4ec146d47
fixed Vue reactivity issue (splitscreen button)
Markus Kottlaender <markus@intevation.de>
parents:
1038
diff
changeset
|
14 * Markus Kottländer <markuks.kottlaender@intevation.de> |
1019
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
15 */ |
1044
f8a4ec146d47
fixed Vue reactivity issue (splitscreen button)
Markus Kottlaender <markus@intevation.de>
parents:
1038
diff
changeset
|
16 import Vue from "vue"; |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
17 import { HTTP } from "../application/lib/http"; |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
18 import { prepareProfile } from "../application/lib/geo"; |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
19 import LineString from "ol/geom/LineString.js"; |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
20 import { generateFeatureRequest } from "../application/lib/geo.js"; |
1165
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
21 import { getLength } from "ol/sphere.js"; |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
22 import { calculateFairwayCoordinates } from "../application/lib/geo.js"; |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
23 import { displayError } from "../application/lib/errors.js"; |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
24 |
849 | 25 const DEMOLEVEL = 149.345; |
1165
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
26 const DEMODATA = 2.5; |
849 | 27 |
1114
8d12056d602a
shortened store file imports
Markus Kottlaender <markus@intevation.de>
parents:
1111
diff
changeset
|
28 export default { |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
29 namespaced: true, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
30 state: { |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
31 additionalSurvey: "", |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
32 totalLength: 0, |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
33 minAlt: 0, |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
34 maxAlt: 0, |
1025
a55f20dc8d8d
refac: store profiles by date
Thomas Junk <thomas.junk@intevation.de>
parents:
1020
diff
changeset
|
35 currentProfile: {}, |
896
b9aaa093a9fb
fix: splitbutton only visible when result is visible
Thomas Junk <thomas.junk@intevation.de>
parents:
849
diff
changeset
|
36 waterLevels: [{ year: "2016", level: DEMOLEVEL, color: "#005DFF" }], |
849 | 37 selectedWaterLevel: DEMOLEVEL, |
802
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
38 fairwayCoordinates: [], |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
39 startPoint: null, |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
40 endPoint: null, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
41 previousCuts: [] |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
42 }, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
43 getters: { |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
44 length: state => { |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
45 return state.totalLength; |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
46 }, |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
47 additionalSurvey: state => { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
48 return state.additionalSurvey; |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
49 } |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
50 }, |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
51 mutations: { |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
52 setAdditionalSurvey: (state, additionalSurvey) => { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
53 state.additionalSurvey = additionalSurvey; |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
54 }, |
841 | 55 setSelectedWaterLevel: (state, level) => { |
56 state.selectedWaterLevel = level; | |
57 }, | |
1025
a55f20dc8d8d
refac: store profiles by date
Thomas Junk <thomas.junk@intevation.de>
parents:
1020
diff
changeset
|
58 profileLoaded: (state, answer) => { |
a55f20dc8d8d
refac: store profiles by date
Thomas Junk <thomas.junk@intevation.de>
parents:
1020
diff
changeset
|
59 const { response, surveyDate } = answer; |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
60 const { data } = response; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
61 const coordinates = data.geometry.coordinates; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
62 if (!coordinates) return; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
63 const startPoint = state.startPoint; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
64 const endPoint = state.endPoint; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
65 const geoJSON = data; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
66 const result = prepareProfile({ geoJSON, startPoint, endPoint }); |
1044
f8a4ec146d47
fixed Vue reactivity issue (splitscreen button)
Markus Kottlaender <markus@intevation.de>
parents:
1038
diff
changeset
|
67 // Use Vue.set() to make new object properties rective |
f8a4ec146d47
fixed Vue reactivity issue (splitscreen button)
Markus Kottlaender <markus@intevation.de>
parents:
1038
diff
changeset
|
68 // https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats |
f8a4ec146d47
fixed Vue reactivity issue (splitscreen button)
Markus Kottlaender <markus@intevation.de>
parents:
1038
diff
changeset
|
69 Vue.set(state.currentProfile, surveyDate, result.points); |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
70 if (!state.minAlt || state.minAlt > result.minAlt) { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
71 state.minAlt = result.minAlt; |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
72 } |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
73 if (!state.maxAlt || state.maxAlt < result.maxAlt) { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
74 state.maxAlt = result.maxAlt; |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
75 } |
1057
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
76 if (!state.totalLength || state.totalLength < result.lengthPolyLine) { |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
77 state.totalLength = result.lengthPolyLine; |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
78 } |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
79 }, |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
80 setStartPoint: (state, start) => { |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
81 state.startPoint = start; |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
82 }, |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
83 setEndPoint: (state, end) => { |
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
84 state.endPoint = end; |
802
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
85 }, |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
86 setFairwayCoordinates: (state, coordinates) => { |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
87 state.fairwayCoordinates = coordinates; |
1015
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1013
diff
changeset
|
88 }, |
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1013
diff
changeset
|
89 clearCurrentProfile: state => { |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1044
diff
changeset
|
90 state.additionalSurvey = ""; |
1025
a55f20dc8d8d
refac: store profiles by date
Thomas Junk <thomas.junk@intevation.de>
parents:
1020
diff
changeset
|
91 state.currentProfile = {}; |
1057
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
92 state.minAlt = null; |
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
93 state.maxAlt = null; |
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
94 state.totalLength = null; |
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
95 state.fairwayCoordinates = []; |
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
96 state.startPoint = null; |
7242b5a427bc
completely nulling the units
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
97 state.endPoint = null; |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
98 }, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
99 previousCuts: (state, previousCuts) => { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
100 state.previousCuts = previousCuts; |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
101 } |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
102 }, |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
103 actions: { |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
104 clearSelection({ commit, dispatch, rootGetters, rootState }) { |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
105 dispatch("bottlenecks/setSelectedBottleneck", null, { root: true }); |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
106 commit("clearCurrentProfile"); |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
107 commit("application/showSplitscreen", false, { root: true }); |
1237
74562dc29e10
refactored drawtool
Markus Kottlaender <markus@intevation.de>
parents:
1177
diff
changeset
|
108 rootState.map.cutTool.setActive(false); |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
109 rootGetters["map/getLayerByName"]("Cut Tool") |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
110 .data.getSource() |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
111 .clear(); |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1114
diff
changeset
|
112 }, |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1096
diff
changeset
|
113 loadProfile({ commit, state }, survey) { |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
114 return new Promise((resolve, reject) => { |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
115 const profileLine = new LineString([state.startPoint, state.endPoint]); |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
116 const geoJSON = generateFeatureRequest( |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
117 profileLine, |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1096
diff
changeset
|
118 survey.bottleneck_id, |
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1096
diff
changeset
|
119 survey.date_info |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
120 ); |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
121 HTTP.post("/cross", geoJSON, { |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
122 headers: { "X-Gemma-Auth": localStorage.getItem("token") } |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
123 }) |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
124 .then(response => { |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
125 commit("profileLoaded", { |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
126 response: response, |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1096
diff
changeset
|
127 surveyDate: survey.date_info |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
128 }); |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
129 resolve(response); |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
130 }) |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
131 .catch(error => { |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
132 reject(error); |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
133 }); |
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
134 }); |
1165
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
135 }, |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
136 cut({ commit, dispatch, rootState, rootGetters }, cut) { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
137 const length = getLength(cut.getGeometry()); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
138 commit( |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
139 "map/setCurrentMeasurement", |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
140 { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
141 quantity: "Length", |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
142 unitSymbol: "m", |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
143 value: Math.round(length * 10) / 10 |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
144 }, |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
145 { root: true } |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
146 ); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
147 |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
148 // if a survey has been selected, request a profile |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
149 // TODO an improvement could be to check if the line intersects |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
150 // with the bottleneck area's polygon before trying the server request |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
151 if (rootState.bottlenecks.selectedSurvey) { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
152 commit("clearCurrentProfile"); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
153 const inputLineString = cut.getGeometry().clone(); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
154 inputLineString.transform("EPSG:3857", "EPSG:4326"); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
155 const [start, end] = inputLineString |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
156 .getCoordinates() |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
157 .map(coords => coords.map(coord => parseFloat(coord.toFixed(8)))); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
158 commit("setStartPoint", start); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
159 commit("setEndPoint", end); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
160 const profileLine = new LineString([start, end]); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
161 dispatch("loadProfile", rootState.bottlenecks.selectedSurvey) |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
162 .then(() => { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
163 rootGetters["map/getLayerByName"]("Fairway Dimensions") |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
164 .data.getSource() |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
165 .forEachFeatureIntersectingExtent( |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
166 // need to use EPSG:3857 which is the proj of vectorSource |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
167 profileLine |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
168 .clone() |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
169 .transform("EPSG:4326", "EPSG:3857") |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
170 .getExtent(), |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
171 feature => { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
172 // transform back to prepare for usage |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
173 var intersectingPolygon = feature |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
174 .getGeometry() |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
175 .clone() |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
176 .transform("EPSG:3857", "EPSG:4326"); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
177 const fairwayCoordinates = calculateFairwayCoordinates( |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
178 profileLine, |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
179 intersectingPolygon, |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
180 DEMODATA |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
181 ); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
182 commit("setFairwayCoordinates", fairwayCoordinates); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
183 } |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
184 ); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
185 }) |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
186 .then(() => { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
187 commit("application/showSplitscreen", true, { root: true }); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
188 }) |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
189 .catch(error => { |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
190 const { status, data } = error.response; |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
191 displayError({ |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
192 title: "Backend Error", |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
193 message: `${status}: ${data.message || data}` |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
194 }); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
195 }); |
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
196 } |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
197 }, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
198 previousCuts({ commit, rootState }) { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
199 const previousCuts = |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
200 JSON.parse(localStorage.getItem("previousCuts")) || []; |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
201 commit( |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
202 "previousCuts", |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
203 previousCuts.filter(cut => { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
204 return ( |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
205 cut.bottleneckName === rootState.bottlenecks.selectedBottleneck |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
206 ); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
207 }) |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
208 ); |
1028
dd67e46366ef
refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents:
1027
diff
changeset
|
209 } |
767
dedf252b3e01
feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents:
646
diff
changeset
|
210 } |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
211 }; |