Mercurial > gemma
annotate client/src/store/fairway.js @ 1282:a7dd8a3356fc
fixed contextBox animations
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Thu, 22 Nov 2018 10:20:21 +0100 |
parents | bc55ffaeb639 |
children | 99c039e86624 |
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"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
1237
diff
changeset
|
17 import { HTTP } from "../lib/http"; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
1237
diff
changeset
|
18 import { prepareProfile } from "../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"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
1237
diff
changeset
|
20 import { generateFeatureRequest } from "../lib/geo.js"; |
1165
a44ac5193b38
fixed code duplication
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
21 import { getLength } from "ol/sphere.js"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
1237
diff
changeset
|
22 import { calculateFairwayCoordinates } from "../lib/geo.js"; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
1237
diff
changeset
|
23 import { displayError } from "../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 }; |