Mercurial > gemma
annotate client/src/fairway/Fairwayprofile.vue @ 1191:b23622905a3f
switched entirely to sass instead of scss
for cleaner code/less lines, just removed all ; and {}
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Fri, 16 Nov 2018 14:37:07 +0100 |
parents | 1335e088e7ef |
children | 181b8a947ecd |
rev | line source |
---|---|
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
1 <template> |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
2 <div :class="['position-relative', {show: showSplitscreen}]" v-if="Object.keys(currentProfile).length"> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
3 <button |
1166
0cddb3b24d24
moved fairway profile close/collapse buttons into profile container
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
4 class="rounded-bottom bg-white border-0 position-absolute splitscreen-toggle shadow-sm" |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
5 @click="$store.commit('application/showSplitscreen', false)" |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
6 v-if="showSplitscreen"> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
7 <i class="fa fa-angle-down"></i> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
8 </button> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
9 <button |
1166
0cddb3b24d24
moved fairway profile close/collapse buttons into profile container
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
10 class="rounded-bottom bg-white border-0 position-absolute clear-selection shadow-sm" |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
11 @click="$store.dispatch('fairwayprofile/clearSelection');" |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
12 v-if="showSplitscreen"> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
13 <i class="fa fa-times text-danger"></i> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
14 </button> |
1176
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
15 <div class="profile d-flex flex-column pr-5"> |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
16 <h5 class="mb-0 mt-2">{{ selectedBottleneck }} ({{ selectedSurvey.date_info }})</h5> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
17 <div class="d-flex flex-fill"> |
1176
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
18 <div class="fairwayprofile flex-grow-1"></div> |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
19 <div class="additionalsurveys d-flex flex-column"> |
1176
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
20 <small> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
21 Additional Surveys |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
22 <select v-model="additionalSurvey" class="form-control form-control-sm"> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
23 <option value="">None</option> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
24 <option |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
25 v-for="survey in additionalSurveys" |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
26 :key="survey.date_info" |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
27 :value="survey" |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
28 >{{survey.date_info}}</option> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
29 </select> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
30 <hr> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
31 <div class="d-flex text-left mb-2"> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
32 <div class="text-nowrap mr-1"> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
33 <b>Start:</b> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
34 <br> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
35 Lat: {{ startPoint[1] }} |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
36 <br> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
37 Lon: {{ startPoint[0] }} |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
38 </div> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
39 <div class="text-nowrap ml-1"> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
40 <b>End:</b> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
41 <br> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
42 Lat: {{ endPoint[1] }} |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
43 <br> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
44 Lon: {{ endPoint[0] }} |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
45 </div> |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
46 <button class="btn btn-outline-secondary btn-sm ml-2 mt-auto" |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
47 @click="showLabelInput = !showLabelInput"> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
48 <i :class="'fa fa-' + (showLabelInput ? 'times' : 'save')"></i> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
49 </button> |
1176
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
50 <button v-clipboard:copy="coordinatesForClipboard" |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
51 v-clipboard:success="onCopyCoordinates" |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
52 class="btn btn-outline-secondary btn-sm ml-2 mt-auto"> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
53 <i class="fa fa-copy"></i> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
54 </button> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
55 </div> |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
56 <div v-if="showLabelInput"> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
57 Enter label for cross profile: |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
58 <div class="position-relative"> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
59 <input class="form-control form-control-sm pr-5" v-model="cutLabel" /><br> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
60 <button class="btn btn-sm btn-outline-secondary position-absolute" |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
61 @click="saveCut" |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
62 v-if="cutLabel" |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
63 style="top: 0; right: 0;"> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
64 <i class="fa fa-check"></i> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
65 </button> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
66 </div> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
67 </div> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
68 Saved cross profiles: |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
69 <select class="form-control form-control-sm mb-2" v-model="coordinatesSelect"> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
70 <option></option> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
71 <option v-for="(cut, index) in previousCuts" :value="cut.coordinates" :key="index"> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
72 {{ cut.label }} |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
73 </option> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
74 </select> |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
75 Enter coordinates manually: |
1176
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
76 <div class="position-relative"> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
77 <input class="form-control form-control-sm pr-5" placeholder="Lat,Lon,Lat,Lon" v-model="coordinatesInput" /><br> |
1181 | 78 <button class="btn btn-sm btn-outline-secondary position-absolute" |
79 @click="applyManualCoordinates" | |
80 style="top: 0; right: 0;" | |
81 v-if="coordinatesInput"> | |
1176
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
82 <i class="fa fa-check"></i> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
83 </button> |
fdab87f013e2
improve fairway profile UI
Markus Kottlaender <markus@intevation.de>
parents:
1166
diff
changeset
|
84 </div> |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
85 </small> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
86 </div> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
87 </div> |
1015
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
909
diff
changeset
|
88 </div> |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
89 </div> |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
90 </template> |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
91 |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
92 <style lang="sass" scoped> |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
93 .profile |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
94 background-color: white |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
95 width: 100vw |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
96 height: 0 |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
97 overflow: hidden |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
98 position: relative |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
99 z-index: 2 |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
100 |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
101 .splitscreen-toggle, |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
102 .clear-selection |
1166
0cddb3b24d24
moved fairway profile close/collapse buttons into profile container
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
103 right: $icon-width + $offset |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
104 width: $icon-width |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
105 height: $icon-height |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
106 margin-top: 2px |
1166
0cddb3b24d24
moved fairway profile close/collapse buttons into profile container
Markus Kottlaender <markus@intevation.de>
parents:
1165
diff
changeset
|
107 z-index: 3 |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
108 outline: none |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
109 |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
110 .clear-selection |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
111 right: $offset |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
112 |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
113 .show |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
114 .profile |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
115 height: 50vh |
1015
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
909
diff
changeset
|
116 |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
117 .waterlevelselection |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
118 margin-top: $large-offset |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
119 margin-right: $large-offset |
1015
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
909
diff
changeset
|
120 |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
121 .additionalsurveys |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
122 margin-top: $large-offset |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
123 margin-bottom: auto |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
124 margin-right: $large-offset |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
125 margin-left: auto |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
126 max-width: 300px |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
127 |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
128 .additionalsurveys input |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
129 margin-right: $small-offset |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
130 |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
131 .fairwayprofile |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
132 background-color: white |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
133 margin: $offset |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
134 margin-top: 0 |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
135 </style> |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
136 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
137 <script> |
1019
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
138 /* |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
139 * This is Free Software under GNU Affero General Public License v >= 3.0 |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
140 * without warranty, see README.md and license for details. |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
141 * |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
142 * SPDX-License-Identifier: AGPL-3.0-or-later |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
143 * License-Filename: LICENSES/AGPL-3.0.txt |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
144 * |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
145 * Copyright (C) 2018 by via donau |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
146 * – Österreichische Wasserstraßen-Gesellschaft mbH |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
147 * Software engineering by Intevation GmbH |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
148 * |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
149 * Author(s): |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
150 * Thomas Junk <thomas.junk@intevation.de> |
ca628dce90dd
Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents:
1018
diff
changeset
|
151 */ |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
152 import * as d3 from "d3"; |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
153 import { mapState, mapGetters } from "vuex"; |
1163
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
154 import { displayError, displayInfo } from "../application/lib/errors.js"; |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
155 import Feature from "ol/Feature"; |
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
156 import LineString from "ol/geom/LineString"; |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
157 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
158 const GROUND_COLOR = "#4A2F06"; |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
159 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
160 export default { |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
161 name: "fairwayprofile", |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
162 props: [ |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
163 "width", |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
164 "height", |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
165 "xScale", |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
166 "yScaleLeft", |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
167 "yScaleRight", |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
168 "margin", |
1015
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
909
diff
changeset
|
169 "additionalSurveys" |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
170 ], |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
171 data() { |
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
172 return { |
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
173 wait: false, |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
174 coordinatesInput: "", |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
175 coordinatesSelect: null, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
176 cutLabel: "", |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
177 showLabelInput: false |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
178 }; |
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
179 }, |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
180 computed: { |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
181 ...mapGetters("map", ["getLayerByName"]), |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
182 ...mapState("application", ["showSplitscreen"]), |
1030
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
183 ...mapState("fairwayprofile", [ |
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
184 "startPoint", |
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
185 "endPoint", |
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
186 "currentProfile", |
1053
82ae9cb56982
refac: removed properties from fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1046
diff
changeset
|
187 "minAlt", |
82ae9cb56982
refac: removed properties from fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1046
diff
changeset
|
188 "maxAlt", |
82ae9cb56982
refac: removed properties from fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1046
diff
changeset
|
189 "totalLength", |
82ae9cb56982
refac: removed properties from fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1046
diff
changeset
|
190 "fairwayCoordinates", |
82ae9cb56982
refac: removed properties from fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
1046
diff
changeset
|
191 "waterLevels", |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
192 "selectedWaterLevel", |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
193 "previousCuts" |
1030
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
194 ]), |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
195 ...mapState("bottlenecks", ["selectedBottleneck", "selectedSurvey"]), |
1056
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
196 additionalSurvey: { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
197 get() { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
198 return this.$store.getters["fairwayprofile/additionalSurvey"]; |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
199 }, |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
200 set(value) { |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
201 this.$store.commit("fairwayprofile/setAdditionalSurvey", value); |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
202 this.selectAdditionalSurveyData(); |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
203 } |
28eb62f7c676
additional survey as dynamic property
Thomas Junk <thomas.junk@intevation.de>
parents:
1054
diff
changeset
|
204 }, |
1030
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
205 currentData() { |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
206 if ( |
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
207 !this.selectedSurvey || |
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
208 !this.currentProfile.hasOwnProperty(this.selectedSurvey.date_info) |
1142
dc3f0277628a
feat: Importqueue listing (Proof of concept)
Thomas Junk <thomas.junk@intevation.de>
parents:
1111
diff
changeset
|
209 ) |
dc3f0277628a
feat: Importqueue listing (Proof of concept)
Thomas Junk <thomas.junk@intevation.de>
parents:
1111
diff
changeset
|
210 return []; |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
211 return this.currentProfile[this.selectedSurvey.date_info]; |
1030
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
212 }, |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
213 additionalData() { |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
214 if ( |
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
215 !this.additionalSurvey || |
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
216 !this.currentProfile.hasOwnProperty(this.additionalSurvey.date_info) |
1142
dc3f0277628a
feat: Importqueue listing (Proof of concept)
Thomas Junk <thomas.junk@intevation.de>
parents:
1111
diff
changeset
|
217 ) |
dc3f0277628a
feat: Importqueue listing (Proof of concept)
Thomas Junk <thomas.junk@intevation.de>
parents:
1111
diff
changeset
|
218 return []; |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
219 return this.currentProfile[this.additionalSurvey.date_info]; |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
220 }, |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
221 waterColor() { |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
222 const result = this.waterLevels.find( |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
223 x => x.level === this.selectedWaterLevel |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
224 ); |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
225 return result.color; |
1163
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
226 }, |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
227 coordinatesForClipboard() { |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
228 return ( |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
229 this.startPoint[1] + |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
230 "," + |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
231 this.startPoint[0] + |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
232 "," + |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
233 this.endPoint[1] + |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
234 "," + |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
235 this.endPoint[0] |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
236 ); |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
237 } |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
238 }, |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
239 watch: { |
1146
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
240 showSplitscreen() { |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
241 this.drawDiagram(); |
74e180ad3d6b
fairway profile UI improvements
Markus Kottlaender <markus@intevation.de>
parents:
1142
diff
changeset
|
242 }, |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
243 currentData() { |
780 | 244 this.drawDiagram(); |
245 }, | |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
246 width() { |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
247 this.drawDiagram(); |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
248 }, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
249 height() { |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
250 this.drawDiagram(); |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
251 }, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
252 waterLevels() { |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
253 this.drawDiagram(); |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
254 }, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
255 selectedWaterLevel() { |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
256 this.drawDiagram(); |
802
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
257 }, |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
258 fairwayCoordinates() { |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
259 this.drawDiagram(); |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
260 }, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
261 selectedBottleneck() { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
262 this.$store.dispatch("fairwayprofile/previousCuts"); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
263 this.cutLabel = |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
264 this.selectedBottleneck + " (" + new Date().toISOString() + ")"; |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
265 }, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
266 coordinatesSelect(newValue) { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
267 this.applyCoordinates(newValue); |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
268 } |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
269 }, |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
270 methods: { |
1018
ab64c76af1b0
additional survey selection for 2nd crossprofile added
Thomas Junk <thomas.junk@intevation.de>
parents:
1015
diff
changeset
|
271 selectAdditionalSurveyData() { |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
272 if ( |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
273 !this.additionalSurvey || |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
274 this.wait || |
1111
f106aee673e7
selected bottleneck and surveys now handled by bottleneck store
Markus Kottlaender <markus@intevation.de>
parents:
1075
diff
changeset
|
275 this.currentProfile[this.additionalSurvey.date_info] |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
276 ) { |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
277 this.drawDiagram(); |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
278 return; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
279 } |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
280 this.$store |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
281 .dispatch("fairwayprofile/loadProfile", this.additionalSurvey) |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
282 .then(() => { |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
283 this.wait = false; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
284 }) |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
285 .catch(error => { |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
286 this.wait = false; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
287 let status = "ERROR"; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
288 let data = error; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
289 const response = error.response; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
290 if (response) { |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
291 status = response.status; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
292 data = response.data; |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
293 } |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
294 displayError({ |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
295 title: "Backend Error", |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
296 message: `${status}: ${data.message || data}` |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
297 }); |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
298 }); |
1015
d2f30a784fb3
feat: add selectfield to fairwayprofile
Thomas Junk <thomas.junk@intevation.de>
parents:
909
diff
changeset
|
299 }, |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
300 drawDiagram() { |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
301 this.coordinatesSelect = null; |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
302 const chartDiv = document.querySelector(".fairwayprofile"); |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
303 d3.select("svg").remove(); |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
304 let svg = d3.select(chartDiv).append("svg"); |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
305 svg.attr("width", this.width); |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
306 svg.attr("height", this.height); |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
307 const width = this.width - this.margin.right - 1.5 * this.margin.left; |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
308 const height = this.height - this.margin.top - 2 * this.margin.bottom; |
1030
bf10a7f990cc
refac: fairway profile retrieves current data from store
Thomas Junk <thomas.junk@intevation.de>
parents:
1021
diff
changeset
|
309 const currentData = this.currentData; |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
310 const additionalData = this.additionalData; |
780 | 311 const { |
312 xScale, | |
313 yScaleRight, | |
314 yScaleLeft, | |
315 graph | |
316 } = this.generateCoordinates(svg, height, width); | |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
317 this.drawWaterlevel({ |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
318 graph, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
319 xScale, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
320 yScaleRight, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
321 height, |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
322 width |
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
323 }); |
1059
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
324 if (currentData) { |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
325 this.drawProfile({ |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
326 graph, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
327 xScale, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
328 yScaleRight, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
329 currentData, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
330 height, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
331 width, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
332 color: GROUND_COLOR, |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
333 strokeColor: "black", |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
334 opacity: 1 |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
335 }); |
51d412a79e4f
omit render while clearing profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1056
diff
changeset
|
336 } |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
337 if (additionalData) { |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
338 this.drawProfile({ |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
339 graph, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
340 xScale, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
341 yScaleRight, |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
342 currentData: additionalData, |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
343 height, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
344 width, |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
345 color: GROUND_COLOR, |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
346 strokeColor: "#943007", |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
347 opacity: 0.6 |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
348 }); |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
349 } |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
350 this.drawLabels({ |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
351 graph, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
352 xScale, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
353 yScaleLeft, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
354 currentData, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
355 height, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
356 width |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
357 }); |
802
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
358 this.drawFairway({ |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
359 graph, |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
360 xScale, |
803
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
361 yScaleRight, |
802
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
362 currentData, |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
363 height, |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
364 width |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
365 }); |
327aa4a18a1c
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
786
diff
changeset
|
366 }, |
807 | 367 drawFairway({ graph, xScale, yScaleRight }) { |
803
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
368 for (let coordinates of this.fairwayCoordinates) { |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
369 const [startPoint, endPoint, depth] = coordinates; |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
370 let fairwayArea = d3 |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
371 .area() |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
372 .x(function(d) { |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
373 return xScale(d.x); |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
374 }) |
849 | 375 .y0(yScaleRight(0)) |
803
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
376 .y1(function(d) { |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
377 return yScaleRight(d.y); |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
378 }); |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
379 graph |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
380 .append("path") |
1075
c1989ebe1d8a
feat: invert fairwayprofile scale
Thomas Junk <thomas.junk@intevation.de>
parents:
1059
diff
changeset
|
381 .datum([{ x: startPoint, y: depth }, { x: endPoint, y: depth }]) |
803
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
382 .attr("fill", "#002AFF") |
810 | 383 .attr("stroke-opacity", 0.65) |
384 .attr("fill-opacity", 0.65) | |
803
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
385 .attr("stroke", "#FFD20D") |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
386 .attr("d", fairwayArea); |
30ff051e75e9
Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
802
diff
changeset
|
387 } |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
388 }, |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
389 drawLabels({ graph, height }) { |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
390 graph |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
391 .append("text") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
392 .attr("transform", ["rotate(-90)"]) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
393 .attr("y", this.width - 60) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
394 .attr("x", -(this.height - this.margin.top - this.margin.bottom) / 2) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
395 .attr("dy", "1em") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
396 .attr("fill", "black") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
397 .style("text-anchor", "middle") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
398 .text("Depth [m]"); |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
399 graph |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
400 .append("text") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
401 .attr("y", 0 - this.margin.left) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
402 .attr("x", 0 - height / 4) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
403 .attr("dy", "1em") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
404 .attr("fill", "black") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
405 .style("text-anchor", "middle") |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
406 .attr("transform", [ |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
407 "translate(" + this.width / 2 + "," + this.height + ")", |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
408 "rotate(0)" |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
409 ]) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
410 .text("Width [m]"); |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
411 }, |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
412 generateCoordinates(svg, height, width) { |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
413 let xScale = d3 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
414 .scaleLinear() |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
415 .domain(this.xScale) |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
416 .rangeRound([0, width]); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
417 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
418 xScale.ticks(5); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
419 let yScaleLeft = d3 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
420 .scaleLinear() |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
421 .domain(this.yScaleLeft) |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
422 .rangeRound([height, 0]); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
423 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
424 let yScaleRight = d3 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
425 .scaleLinear() |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
426 .domain(this.yScaleRight) |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
427 .rangeRound([height, 0]); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
428 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
429 let xAxis = d3.axisBottom(xScale); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
430 let yAxis2 = d3.axisRight(yScaleRight); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
431 let graph = svg |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
432 .append("g") |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
433 .attr( |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
434 "transform", |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
435 "translate(" + this.margin.left + "," + this.margin.top + ")" |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
436 ); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
437 graph |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
438 .append("g") |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
439 .attr("transform", "translate(0," + height + ")") |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
440 .call(xAxis.ticks(5)); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
441 graph |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
442 .append("g") |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
443 .attr("transform", "translate(" + width + ",0)") |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
444 .call(yAxis2); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
445 return { xScale, yScaleLeft, yScaleRight, graph }; |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
446 }, |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
447 drawWaterlevel({ graph, xScale, yScaleRight, height }) { |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
448 let waterArea = d3 |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
449 .area() |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
450 .x(function(d) { |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
451 return xScale(d.x); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
452 }) |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
453 .y0(height) |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
454 .y1(function(d) { |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
455 return yScaleRight(d.y); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
456 }); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
457 graph |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
458 .append("path") |
844 | 459 .datum([{ x: 0, y: 0 }, { x: this.totalLength, y: 0 }]) |
786
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
460 .attr("fill", this.waterColor) |
1bee00039973
fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
780
diff
changeset
|
461 .attr("stroke", this.waterColor) |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
462 .attr("d", waterArea); |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
463 }, |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
464 drawProfile({ |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
465 graph, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
466 xScale, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
467 yScaleRight, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
468 currentData, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
469 height, |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
470 color, |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
471 strokeColor, |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
472 opacity |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
473 }) { |
780 | 474 for (let part of currentData) { |
475 let profileLine = d3 | |
476 .line() | |
477 .x(d => { | |
478 return xScale(d.x); | |
479 }) | |
480 .y(d => { | |
1075
c1989ebe1d8a
feat: invert fairwayprofile scale
Thomas Junk <thomas.junk@intevation.de>
parents:
1059
diff
changeset
|
481 return yScaleRight(d.y); |
780 | 482 }); |
483 let profileArea = d3 | |
484 .area() | |
485 .x(function(d) { | |
486 return xScale(d.x); | |
487 }) | |
488 .y0(height) | |
489 .y1(function(d) { | |
1075
c1989ebe1d8a
feat: invert fairwayprofile scale
Thomas Junk <thomas.junk@intevation.de>
parents:
1059
diff
changeset
|
490 return yScaleRight(d.y); |
780 | 491 }); |
492 graph | |
493 .append("path") | |
494 .datum(part) | |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
495 .attr("fill", color) |
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
496 .attr("stroke", color) |
780 | 497 .attr("stroke-width", 3) |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
498 .attr("stroke-opacity", opacity) |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
499 .attr("fill-opacity", opacity) |
780 | 500 .attr("d", profileArea); |
501 graph | |
502 .append("path") | |
503 .datum(part) | |
504 .attr("fill", "none") | |
1038
e8ebfbc2aa05
feat: additional surveydata WIP
Thomas Junk <thomas.junk@intevation.de>
parents:
1030
diff
changeset
|
505 .attr("stroke", strokeColor) |
780 | 506 .attr("stroke-linejoin", "round") |
507 .attr("stroke-linecap", "round") | |
508 .attr("stroke-width", 3) | |
1054
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
509 .attr("stroke-opacity", opacity) |
9bd4f82fcd8d
display additional profile
Thomas Junk <thomas.junk@intevation.de>
parents:
1053
diff
changeset
|
510 .attr("fill-opacity", opacity) |
780 | 511 .attr("d", profileLine); |
512 } | |
1163
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
513 }, |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
514 onCopyCoordinates() { |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
515 displayInfo({ |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
516 title: "Success", |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
517 message: "Coordinates copied to clipboard!" |
fb5c83d4ea1d
added copy coordinates button to fairway profile
Markus Kottlaender <markus@intevation.de>
parents:
1146
diff
changeset
|
518 }); |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
519 }, |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
520 applyManualCoordinates() { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
521 const coordinates = this.coordinatesInput |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
522 .split(",") |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
523 .map(coord => parseFloat(coord.trim())); |
1181 | 524 if (coordinates.length === 4) { |
525 this.applyCoordinates([ | |
526 coordinates[1], | |
527 coordinates[0], | |
528 coordinates[3], | |
529 coordinates[2] | |
530 ]); | |
531 } | |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
532 }, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
533 applyCoordinates(coordinates) { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
534 if (coordinates.length === 4) { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
535 // draw line on map |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
536 const cutLayer = this.getLayerByName("Cut Tool"); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
537 cutLayer.data.getSource().clear(); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
538 const cut = new Feature({ |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
539 geometry: new LineString([ |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
540 [coordinates[0], coordinates[1]], |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
541 [coordinates[2], coordinates[3]] |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
542 ]).transform("EPSG:4326", "EPSG:3857") |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
543 }); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
544 cutLayer.data.getSource().addFeature(cut); |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
545 |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
546 // draw diagram |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
547 this.$store.dispatch("fairwayprofile/cut", cut); |
1164
dc99decbf9e3
added input to enter cross cut coordinates manually
Markus Kottlaender <markus@intevation.de>
parents:
1163
diff
changeset
|
548 } |
1177
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
549 }, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
550 saveCut() { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
551 const previousCuts = |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
552 JSON.parse(localStorage.getItem("previousCuts")) || []; |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
553 const newEntry = { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
554 label: this.cutLabel, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
555 bottleneckName: this.selectedBottleneck, |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
556 coordinates: [...this.startPoint, ...this.endPoint] |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
557 }; |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
558 const existingEntry = previousCuts.find(cut => { |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
559 return JSON.stringify(cut) === JSON.stringify(newEntry); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
560 }); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
561 if (!existingEntry) previousCuts.push(newEntry); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
562 if (previousCuts.length > 100) previousCuts.shift(); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
563 localStorage.setItem("previousCuts", JSON.stringify(previousCuts)); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
564 this.$store.dispatch("fairwayprofile/previousCuts"); |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
565 |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
566 this.showLabelInput = false; |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
567 displayInfo({ |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
568 title: "Coordinates saved!", |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
569 message: |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
570 'You can now select these coordinates from the "Saved cross profiles" menu to restore this cross profile.' |
48ae4458710d
save cross profiles to local storage to restore them from a dropdown
Markus Kottlaender <markus@intevation.de>
parents:
1176
diff
changeset
|
571 }); |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
572 } |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
573 }, |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
574 mounted() { |
646
4450f2ab41e0
refac: Fairwawprofile view adapted
Thomas Junk <thomas.junk@intevation.de>
parents:
593
diff
changeset
|
575 this.drawDiagram(); |
585
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
576 } |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
577 }; |
ef307bd6b5d8
refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
578 </script> |