annotate client/src/components/fairway/Fairwayprofile.vue @ 3571:9e296d686f16

client: cross profiles: support gabs in fairway and improved display in diagram and legend
author Markus Kottlaender <markus@intevation.de>
date Mon, 03 Jun 2019 13:59:41 +0200
parents 76eafbf0a98d
children 1109a38f7ff1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
1 <template>
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
2 <div class="d-flex flex-column flex-fill">
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
3 <UIBoxHeader icon="chart-area" :title="title" :closeCallback="close" />
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
4 <div class="d-flex flex-fill">
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
5 <DiagramLegend>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
6 <div class="legend">
3323
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
7 <span
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
8 style="background-color: #5995ff; width: 20px; height: 20px;"
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
9 ></span>
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
10 Water
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
11 </div>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
12 <div class="legend">
3323
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
13 <span
3571
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
14 :style="
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
15 'width: 16px; height: 16px; background-color: rgba(' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
16 this.getLayerStyle(1).fillColor.join(',') +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
17 ',' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
18 this.getLayerStyle(1).fillOpacity +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
19 '); border: dotted 2px rgba(' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
20 this.getLayerStyle(1).strokeColor.join(',') +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
21 ',' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
22 this.getLayerStyle(1).strokeOpacity +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
23 '); background-clip: padding-box; box-sizing: content-box;'
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
24 "
3323
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
25 ></span>
3571
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
26 Fairway (LOS 1)
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
27 </div>
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
28 <div class="legend">
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
29 <span
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
30 :style="
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
31 'width: 16px; height: 16px; background-color: rgba(' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
32 this.getLayerStyle(2).fillColor.join(',') +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
33 ',' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
34 this.getLayerStyle(2).fillOpacity +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
35 '); border: dashed 2px rgba(' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
36 this.getLayerStyle(2).strokeColor.join(',') +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
37 ',' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
38 this.getLayerStyle(2).strokeOpacity +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
39 '); background-clip: padding-box; box-sizing: content-box;'
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
40 "
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
41 ></span>
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
42 Fairway (LOS 2)
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
43 </div>
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
44 <div class="legend">
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
45 <span
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
46 :style="
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
47 'width: 16px; height: 16px; background-color: rgba(' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
48 this.getLayerStyle(3).fillColor.join(',') +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
49 ',' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
50 this.getLayerStyle(3).fillOpacity +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
51 '); border: solid 2px rgba(' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
52 this.getLayerStyle(3).strokeColor.join(',') +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
53 ',' +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
54 this.getLayerStyle(3).strokeOpacity +
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
55 '); background-clip: padding-box; box-sizing: content-box;'
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
56 "
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
57 ></span>
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
58 Fairway (LOS 3)
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
59 </div>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
60 <div class="legend">
3323
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
61 <span
3534
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
62 style="width: 14px; height: 14px; background-color: #4a2f06; border: solid 3px black; background-clip: padding-box; box-sizing: content-box;"
3323
de0d0685a17b client: improve diagram-legends style
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
63 ></span>
3534
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
64 Sediment
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
65 </div>
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
66 <div class="legend">
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
67 <span
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
68 style="width: 14px; height: 14px; background-color: rgba(74, 47, 6, 0.6); border: solid 3px #943007; background-clip: padding-box; box-sizing: content-box;"
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
69 ></span>
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
70 Sediment (Compare)
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
71 </div>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
72 <div>
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
73 <select
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
74 v-model="form.template"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
75 @change="applyChange"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
76 class="form-control d-block custom-select-sm w-100"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
77 >
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
78 <option
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
79 v-for="template in templates"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
80 :value="template"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
81 :key="template.name"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
82 >
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
83 {{ template.name }}
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
84 </option>
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
85 </select>
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
86 <button
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
87 @click="downloadPDF"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
88 type="button"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
89 class="btn btn-sm btn-info d-block w-100 mt-2"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
90 >
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
91 <translate>Export to PDF</translate>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
92 </button>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
93 </div>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
94 </DiagramLegend>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
95 <div
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
96 ref="diagramContainer"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
97 class="d-flex flex-fill justify-content-center align-items-center diagram-container"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
98 >
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
99 <div v-if="!fairwayData">
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
100 <translate>No data available.</translate>
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
101 </div>
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
102 </div>
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
103 </div>
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
104 </div>
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
105 </template>
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
106
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
107 <script>
1362
ca33ad696594 remove the first empyty lines
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1361
diff changeset
108 /* This is Free Software under GNU Affero General Public License v >= 3.0
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
109 * without warranty, see README.md and license for details.
1361
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
110 *
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
111 * SPDX-License-Identifier: AGPL-3.0-or-later
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
112 * License-Filename: LICENSES/AGPL-3.0.txt
1361
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
113 *
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
114 * Copyright (C) 2018 by via donau
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
115 * – Österreichische Wasserstraßen-Gesellschaft mbH
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
116 * Software engineering by Intevation GmbH
1361
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
117 *
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
118 * Author(s):
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
119 * Thomas Junk <thomas.junk@intevation.de>
2549
9bf6b767a56a client: refactored and improved splitscreen for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 2540
diff changeset
120 * Markus Kottländer <markus.kottlaender@intevation.de>
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
121 * Fadi Abbud <fadi.abbud@intevation.de>
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
122 */
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
123 import * as d3 from "d3";
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
124 import { mapState, mapGetters } from "vuex";
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
125 import debounce from "debounce";
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
126 import jsPDF from "jspdf";
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
127 import canvg from "canvg";
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
128 import { pdfgen } from "@/lib/mixins";
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
129 import { HTTP } from "@/lib/http";
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
130 import { displayError } from "@/lib/errors";
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
131
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
132 const GROUND_COLOR = "#4A2F06";
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
133 const WATER_COLOR = "#005DFF";
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
134
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
135 export default {
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
136 mixins: [pdfgen],
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
137 name: "fairwayprofile",
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
138 components: {
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
139 DiagramLegend: () => import("@/components/DiagramLegend")
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
140 },
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
141 data() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
142 return {
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
143 width: null,
1372
553aadd97087 new cross profile workflow (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 1362
diff changeset
144 height: null,
553aadd97087 new cross profile workflow (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 1362
diff changeset
145 margin: {
553aadd97087 new cross profile workflow (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 1362
diff changeset
146 top: 20,
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
147 right: 80,
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
148 bottom: 60,
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
149 left: 80
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
150 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
151 form: {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
152 template: null
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
153 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
154 templates: [],
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
155 defaultTemplate: {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
156 name: "default",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
157 properties: {
3350
8da2f7b9a04b client: diagram-template:remove unnecessary template properties and typo
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3323
diff changeset
158 paperSize: "a4"
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
159 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
160 elements: [
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
161 {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
162 type: "diagram",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
163 position: "topleft",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
164 offset: { x: 20, y: 60 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
165 width: 290,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
166 height: 100
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
167 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
168 {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
169 type: "diagramtitle",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
170 position: "topleft",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
171 offset: { x: 90, y: 30 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
172 fontsize: 22,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
173 color: "steelblue"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
174 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
175 {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
176 type: "diagramlegend",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
177 position: "topleft",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
178 offset: { x: 30, y: 160 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
179 color: "black"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
180 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
181 ]
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
182 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
183 pdf: {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
184 doc: null,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
185 width: 32,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
186 height: 297
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
187 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
188 templateData: null
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
189 };
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
190 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
191 computed: {
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
192 ...mapGetters("map", ["openLayersMap"]),
1394
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
193 ...mapGetters("fairwayprofile", ["totalLength"]),
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
194 ...mapState("fairwayprofile", [
2392
0b8793a1947c fairway_profile: calc relative depth WIP
Thomas Junk <thomas.junk@intevation.de>
parents: 2389
diff changeset
195 "additionalSurvey",
0b8793a1947c fairway_profile: calc relative depth WIP
Thomas Junk <thomas.junk@intevation.de>
parents: 2389
diff changeset
196 "currentProfile",
2566
83b938bf4da9 client: prepared store and minimized splitscreens for multiple simultaneous diagrams
Markus Kottlaender <markus@intevation.de>
parents: 2549
diff changeset
197 "startPoint",
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
198 "endPoint",
2392
0b8793a1947c fairway_profile: calc relative depth WIP
Thomas Junk <thomas.junk@intevation.de>
parents: 2389
diff changeset
199 "fairwayData",
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
200 "maxAlt",
3512
30a47d9fc667 client: fairway profiles: removed some old code
Markus Kottlaender <markus@intevation.de>
parents: 3408
diff changeset
201 "selectedWaterLevel"
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
202 ]),
3513
ca9590be1da2 client: fairway profiles: removed more code
Markus Kottlaender <markus@intevation.de>
parents: 3512
diff changeset
203 ...mapState("bottlenecks", ["selectedSurvey", "selectedBottleneck"]),
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
204 ...mapState("application", ["paneSetup"]),
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
205 title() {
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
206 let dates = [this.selectedSurvey.date_info];
3531
804df080c826 client: fairway profiles: added waterlevel to title and used title as pdf filename
Markus Kottlaender <markus@intevation.de>
parents: 3527
diff changeset
207 let waterlevelLabel =
804df080c826 client: fairway profiles: added waterlevel to title and used title as pdf filename
Markus Kottlaender <markus@intevation.de>
parents: 3527
diff changeset
208 this.selectedWaterLevel === "ref"
804df080c826 client: fairway profiles: added waterlevel to title and used title as pdf filename
Markus Kottlaender <markus@intevation.de>
parents: 3527
diff changeset
209 ? this.selectedSurvey.depth_reference
804df080c826 client: fairway profiles: added waterlevel to title and used title as pdf filename
Markus Kottlaender <markus@intevation.de>
parents: 3527
diff changeset
210 : "Current";
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
211 if (this.additionalSurvey) dates.push(this.additionalSurvey.date_info);
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
212 dates.map(d => this.$options.filters.dateTime(d, true));
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
213 return `${this.$gettext("Fairwayprofile")}: ${
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
214 this.selectedBottleneck
3531
804df080c826 client: fairway profiles: added waterlevel to title and used title as pdf filename
Markus Kottlaender <markus@intevation.de>
parents: 3527
diff changeset
215 } (${dates.join(", ")}) WL: ${waterlevelLabel} (${this.waterlevel} cm)`;
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
216 },
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
217 currentData() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
218 if (
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
219 !this.selectedSurvey ||
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
220 !this.currentProfile.hasOwnProperty(this.selectedSurvey.date_info)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
221 )
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
222 return [];
1394
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
223 return this.currentProfile[this.selectedSurvey.date_info].points;
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
224 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
225 additionalData() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
226 if (
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
227 !this.additionalSurvey ||
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
228 !this.currentProfile.hasOwnProperty(this.additionalSurvey.date_info)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
229 )
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
230 return [];
1394
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
231 return this.currentProfile[this.additionalSurvey.date_info].points;
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
232 },
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
233 bottleneck() {
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
234 return this.openLayersMap()
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
235 .getLayer("BOTTLENECKS")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
236 .getSource()
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
237 .getFeatures()
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
238 .find(f => f.get("objnam") === this.selectedBottleneck);
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
239 },
3527
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
240 waterlevel() {
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
241 return this.selectedWaterLevel === "ref"
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
242 ? this.refWaterlevel
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
243 : this.bottleneck.get("gm_waterlevel");
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
244 },
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
245 refWaterlevel() {
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
246 return this.selectedSurvey.waterlevel_value;
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
247 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
248 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
249 watch: {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
250 currentData() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
251 this.drawDiagram();
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
252 },
1382
8b85032ed3cd added loading animation to profile
Markus Kottlaender <markus@intevation.de>
parents: 1372
diff changeset
253 additionalData() {
8b85032ed3cd added loading animation to profile
Markus Kottlaender <markus@intevation.de>
parents: 1372
diff changeset
254 this.drawDiagram();
8b85032ed3cd added loading animation to profile
Markus Kottlaender <markus@intevation.de>
parents: 1372
diff changeset
255 },
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
256 width() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
257 this.drawDiagram();
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
258 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
259 height() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
260 this.drawDiagram();
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
261 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
262 waterLevels() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
263 this.drawDiagram();
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
264 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
265 selectedWaterLevel() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
266 this.drawDiagram();
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
267 },
2264
627bfcbbf631 client: Draw fairway dimensions for all LoS and in more "cut cases".
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2154
diff changeset
268 fairwayData() {
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
269 this.drawDiagram();
3149
a90091aaef67 client: fairwayprofile: close profile diagram when switching bottlenecks
Markus Kottlaender <markus@intevation.de>
parents: 3146
diff changeset
270 },
a90091aaef67 client: fairwayprofile: close profile diagram when switching bottlenecks
Markus Kottlaender <markus@intevation.de>
parents: 3146
diff changeset
271 selectedBottleneck() {
a90091aaef67 client: fairwayprofile: close profile diagram when switching bottlenecks
Markus Kottlaender <markus@intevation.de>
parents: 3146
diff changeset
272 this.$store.commit("application/paneSetup", "DEFAULT");
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
273 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
274 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
275 methods: {
3146
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
276 close() {
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
277 this.$store.commit(
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
278 "application/paneSetup",
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
279 this.paneSetup === "COMPARESURVEYS_FAIRWAYPROFILE"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
280 ? "COMPARESURVEYS"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
281 : "DEFAULT"
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
282 );
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
283 this.$store.dispatch("fairwayprofile/clearCurrentProfile");
b6cc4838d2c0 client: implemented pane mechanic for diagrams
Markus Kottlaender <markus@intevation.de>
parents: 3129
diff changeset
284 },
3571
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
285 getLayerStyle(los) {
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
286 let style = this.openLayersMap()
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
287 .getLayer("FAIRWAYDIMENSIONSLOS" + los)
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
288 .getStyle()()[0];
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
289
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
290 // use spread operator to clone arrays
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
291 let fillColor = [...style.getFill().getColor()];
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
292 let fillOpacity = fillColor.pop();
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
293 let strokeColor = [...style.getStroke().getColor()];
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
294 let strokeOpacity = strokeColor.pop();
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
295 let strokeDash = style.getStroke().getLineDash();
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
296
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
297 return { fillColor, fillOpacity, strokeColor, strokeOpacity, strokeDash };
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
298 },
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
299 applyChange() {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
300 if (this.form.template.hasOwnProperty("properties")) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
301 this.templateData = this.defaultTemplate;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
302 return;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
303 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
304 if (this.form.template) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
305 HTTP.get("/templates/diagram/" + this.form.template.name, {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
306 headers: {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
307 "X-Gemma-Auth": localStorage.getItem("token"),
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
308 "Content-type": "text/xml; charset=UTF-8"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
309 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
310 })
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
311 .then(response => {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
312 this.templateData = response.data.template_data;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
313 })
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
314 .catch(e => {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
315 const { status, data } = e.response;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
316 displayError({
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
317 title: this.$gettext("Backend Error"),
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
318 message: `${status}: ${data.message || data}`
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
319 });
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
320 });
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
321 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
322 },
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
323 downloadPDF() {
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
324 if (this.templateData) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
325 this.pdf.doc = new jsPDF(
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
326 "l",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
327 "mm",
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
328 this.templateData.properties.paperSize
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
329 );
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
330 // pdf width and height in millimeter (landscape)
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
331 this.pdf.width =
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
332 this.templateData.properties.paperSize === "a3" ? 420 : 297;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
333 this.pdf.height =
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
334 this.templateData.properties.paperSize === "a3" ? 297 : 210;
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
335 // default values if some are missing in template
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
336 let defaultFontSize = 11,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
337 defaultWidth = 70,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
338 defaultTextColor = "black",
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
339 defaultBorderColor = "white",
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
340 defaultBgColor = "white",
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
341 defaultRounding = 2,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
342 defaultPadding = 2,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
343 defaultOffset = { x: 0, y: 0 };
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
344 this.templateData.elements.forEach(e => {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
345 switch (e.type) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
346 case "diagram": {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
347 this.addDiagram(
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
348 e.position,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
349 e.offset || defaultOffset,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
350 e.width,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
351 e.height
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
352 );
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
353 break;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
354 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
355 case "diagramlegend": {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
356 this.addDiagramLegend(
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
357 e.position,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
358 e.offset || defaultOffset,
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
359 e.color || defaultTextColor
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
360 );
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
361 break;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
362 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
363 case "diagramtitle": {
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
364 let fairwayInfo =
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
365 this.selectedBottleneck +
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
366 " (" +
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
367 this.selectedSurvey.date_info +
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
368 ")";
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
369 this.addDiagramTitle(
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
370 e.position,
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
371 e.offset || defaultOffset,
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
372 e.fontsize || defaultFontSize,
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
373 e.color || defaultTextColor,
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
374 fairwayInfo
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3250
diff changeset
375 );
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
376 break;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
377 }
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
378 case "image": {
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
379 this.addImage(
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
380 e.url,
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
381 e.format || "",
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
382 e.position,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
383 e.offset || defaultOffset,
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
384 e.width || 90,
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
385 e.height || 60
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
386 );
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
387 break;
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
388 }
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
389 case "text": {
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
390 this.addText(
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
391 e.position,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
392 e.offset || defaultOffset,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
393 e.width || defaultWidth,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
394 e.fontsize || defaultFontSize,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
395 e.color || defaultTextColor,
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
396 e.text || ""
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
397 );
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
398 break;
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
399 }
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
400 case "box": {
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
401 this.addBox(
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
402 e.position,
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
403 e.offset || defaultOffset,
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
404 e.width || 90,
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
405 e.height || 60,
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
406 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
407 e.color || defaultBgColor,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
408 e.brcolor || defaultBorderColor
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
409 );
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
410 break;
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
411 }
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
412 case "textbox": {
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
413 this.addTextBox(
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
414 e.position,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
415 e.offset || defaultOffset,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
416 e.width,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
417 e.height,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
418 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
419 e.padding || defaultPadding,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
420 e.fontsize || defaultFontSize,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
421 e.color || defaultTextColor,
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
422 e.background || defaultBgColor,
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
423 e.text || "",
3241
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
424 e.brcolor || defaultBorderColor
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
425 );
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
426 break;
ecfa09241437 client: pdf-template: add a set of template-elements (fairwayprofile)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3240
diff changeset
427 }
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
428 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
429 });
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
430 }
3531
804df080c826 client: fairway profiles: added waterlevel to title and used title as pdf filename
Markus Kottlaender <markus@intevation.de>
parents: 3527
diff changeset
431 this.pdf.doc.save(this.title.replace(/\s/g, "_").replace(/[():,]/g, ""));
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
432 },
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
433 addDiagram(position, offset, width, height) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
434 let x = offset.x,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
435 y = offset.y;
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
436 var svg = this.$refs.diagramContainer.innerHTML;
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
437 if (svg) {
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
438 svg = svg.replace(/\r?\n|\r/g, "").trim();
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
439 }
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3534
diff changeset
440 // use default width,height if they are missing in the template definition
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
441 if (!width) {
3250
246754028bf4 client: cleanup code (fairwayprofile diagram)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3241
diff changeset
442 width = this.templateData.properties.paperSize === "a3" ? 380 : 290;
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
443 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
444 if (!height) {
3250
246754028bf4 client: cleanup code (fairwayprofile diagram)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3241
diff changeset
445 height = this.templateData.properties.paperSize === "a3" ? 130 : 100;
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
446 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
447 if (["topright", "bottomright"].indexOf(position) !== -1) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
448 x = this.pdf.width - offset.x - width;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
449 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
450 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
451 y = this.pdf.height - offset.y - height;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
452 }
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
453 var canvas = document.createElement("canvas");
3018
42d1e31de844 client:give the generated pdf name and improve canvas size
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3007
diff changeset
454 canvas.width = window.innerWidth;
3020
94edd5e5dd1b client: linting
Markus Kottlaender <markus@intevation.de>
parents: 3018
diff changeset
455 canvas.height = window.innerHeight / 2;
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
456 canvg(canvas, svg, {
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
457 ignoreMouse: true,
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
458 ignoreAnimation: true,
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
459 ignoreDimensions: true
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
460 });
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
461 var imgData = canvas.toDataURL("image/png");
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
462 this.pdf.doc.addImage(imgData, "PNG", x, y, width, height);
3129
136b86794453 client: improve pdf-gen code for diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3061
diff changeset
463 },
136b86794453 client: improve pdf-gen code for diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3061
diff changeset
464 // Diagram legend
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
465 addDiagramLegend(position, offset, color) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
466 let x = offset.x,
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
467 y = offset.y;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
468 let width =
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
469 (this.pdf.doc.getStringUnitWidth("Ground") * 10) / (72 / 25.6) + 5;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
470 if (["topright", "bottomright"].indexOf(position) !== -1) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
471 x = this.pdf.width - offset.x - width;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
472 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
473 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
474 y = this.pdf.height - offset.y - this.getTextHeight(3);
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
475 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
476 this.pdf.doc.setFontSize(10);
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
477 this.pdf.doc.setTextColor(color);
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
478 this.pdf.doc.setDrawColor("white");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
479 this.pdf.doc.setFillColor("#5995ff");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
480 this.pdf.doc.circle(x, y, 2, "FD");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
481 this.pdf.doc.text(x + 3, y + 1, "Water");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
482 this.pdf.doc.setFillColor("#1f4fff");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
483 this.pdf.doc.circle(x, y + 5, 2, "FD");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
484 this.pdf.doc.text(x + 3, y + 6, "Fairway");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
485 this.pdf.doc.setFillColor("#4a2f06");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
486 this.pdf.doc.circle(x, y + 10, 2, "FD");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
487 this.pdf.doc.text(x + 3, y + 11, "Ground");
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
488 },
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
489 drawDiagram() {
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
490 d3.select(".diagram-container svg").remove();
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
491 this.scaleFairwayProfile();
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
492 let svg = d3.select(".diagram-container").append("svg");
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
493 svg.attr("width", "100%");
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
494 svg.attr("height", "100%");
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
495 const width = this.width - this.margin.right - this.margin.left;
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
496 const height = this.height - this.margin.top - this.margin.bottom;
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
497 const currentData = this.currentData;
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
498 const additionalData = this.additionalData;
3512
30a47d9fc667 client: fairway profiles: removed some old code
Markus Kottlaender <markus@intevation.de>
parents: 3408
diff changeset
499 const { xScale, yScaleRight, graph } = this.generateScalesAndGraph(
1394
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
500 svg,
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
501 height,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
502 width
1394
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
503 );
1588
2888bfacd331 fairwayprofile: do not try to render fairwayprofile without dimensions
Thomas Junk <thomas.junk@intevation.de>
parents: 1558
diff changeset
504 if (!this.height || !this.width) return; // do not try to render when height and width are unknown
1394
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
505 this.drawWaterlevel({ graph, xScale, yScaleRight, height });
b350b0b5cb6c refactored fairwayprofile cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1391
diff changeset
506 this.drawLabels({ graph, height });
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
507 if (currentData) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
508 this.drawProfile({
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
509 graph,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
510 xScale,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
511 yScaleRight,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
512 currentData,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
513 height,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
514 color: GROUND_COLOR,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
515 strokeColor: "black",
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
516 opacity: 1
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
517 });
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
518 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
519 if (additionalData) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
520 this.drawProfile({
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
521 graph,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
522 xScale,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
523 yScaleRight,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
524 currentData: additionalData,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
525 height,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
526 color: GROUND_COLOR,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
527 strokeColor: "#943007",
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
528 opacity: 0.6
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
529 });
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
530 }
2358
da75385887b9 fairway_profile: render riverbed on layer behind LOS
Thomas Junk <thomas.junk@intevation.de>
parents: 2265
diff changeset
531 this.drawFairway({ graph, xScale, yScaleRight });
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
532 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
533 drawFairway({ graph, xScale, yScaleRight }) {
2264
627bfcbbf631 client: Draw fairway dimensions for all LoS and in more "cut cases".
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2154
diff changeset
534 if (this.fairwayData === undefined) {
2265
940ae7c20326 client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents: 2264
diff changeset
535 return;
2264
627bfcbbf631 client: Draw fairway dimensions for all LoS and in more "cut cases".
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2154
diff changeset
536 }
627bfcbbf631 client: Draw fairway dimensions for all LoS and in more "cut cases".
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2154
diff changeset
537 for (let data of this.fairwayData) {
3571
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
538 data.coordinates.forEach(coordinates => {
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
539 const [startPoint, endPoint, depth] = coordinates;
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
540 let fairwayArea = d3
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
541 .area()
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
542 .x(function(d) {
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
543 return xScale(d.x);
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
544 })
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
545 .y0(yScaleRight(0))
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
546 .y1(function(d) {
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
547 return yScaleRight(d.y);
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
548 });
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
549 graph
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
550 .append("path")
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
551 .datum([{ x: startPoint, y: depth }, { x: endPoint, y: depth }])
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
552 .attr(
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
553 "fill",
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
554 `rgba(${this.getLayerStyle(data.los).fillColor.join(",")})`
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
555 )
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
556 .attr("fill-opacity", this.getLayerStyle(data.los).fillOpacity)
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
557 .attr(
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
558 "stroke",
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
559 `rgba(${this.getLayerStyle(data.los).strokeColor.join(",")})`
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
560 )
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
561 .attr("stroke-opacity", this.getLayerStyle(data.los).strokeOpacity)
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
562 .attr("stroke-dasharray", this.getLayerStyle(data.los).strokeDash)
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
563 .attr("d", fairwayArea);
9e296d686f16 client: cross profiles: support gabs in fairway and improved display in diagram and legend
Markus Kottlaender <markus@intevation.de>
parents: 3555
diff changeset
564 });
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
565 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
566 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
567 drawLabels({ graph, height }) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
568 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
569 .append("text")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
570 .attr("transform", ["rotate(-90)"])
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
571 .attr("y", this.width - 100)
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
572 .attr("x", -(this.height - this.margin.top - this.margin.bottom) / 2)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
573 .attr("fill", "black")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
574 .style("text-anchor", "middle")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
575 .text("Depth [m]");
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
576 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
577 .append("text")
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
578 .attr("transform", ["rotate(-90)"])
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
579 .attr("y", -50)
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
580 .attr("x", -(this.height - this.margin.top - this.margin.bottom) / 2)
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
581 .attr("fill", "black")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
582 .style("text-anchor", "middle")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
583 .text("Waterlevel [cm]");
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
584 graph
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
585 .append("text")
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
586 .attr("y", -50)
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
587 .attr("x", -(height / 4))
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
588 .attr("dy", "1em")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
589 .attr("fill", "black")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
590 .style("text-anchor", "middle")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
591 .attr("transform", [
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
592 "translate(" + this.width / 2 + "," + this.height + ")",
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
593 "rotate(0)"
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
594 ])
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
595 .text("Width [m]");
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
596 },
3512
30a47d9fc667 client: fairway profiles: removed some old code
Markus Kottlaender <markus@intevation.de>
parents: 3408
diff changeset
597 generateScalesAndGraph(svg, height, width) {
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
598 let xScale = d3
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
599 .scaleLinear()
3512
30a47d9fc667 client: fairway profiles: removed some old code
Markus Kottlaender <markus@intevation.de>
parents: 3408
diff changeset
600 .domain([0, this.totalLength])
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
601 .rangeRound([0, width]);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
602
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
603 let yScaleRight = d3
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
604 .scaleLinear()
3527
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
605 .domain([
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
606 this.maxAlt * 1.1 +
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
607 Math.abs(this.waterlevel - this.refWaterlevel) / 100,
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
608 -(this.maxAlt * 0.1)
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
609 ])
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
610 .rangeRound([height, 0]);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
611
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
612 let yScaleLeft = d3
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
613 .scaleLinear()
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
614 .domain([
3527
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
615 this.waterlevel -
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
616 (this.maxAlt * 100 +
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
617 Math.abs(this.waterlevel - this.refWaterlevel)),
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
618 this.waterlevel + this.maxAlt * 0.1 * 100
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
619 ])
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
620 .rangeRound([height, 0]);
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
621
3512
30a47d9fc667 client: fairway profiles: removed some old code
Markus Kottlaender <markus@intevation.de>
parents: 3408
diff changeset
622 let xAxis = d3.axisBottom(xScale).ticks(5);
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
623 let yAxisRight = d3.axisRight(yScaleRight);
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
624 let yAxisLeft = d3.axisLeft(yScaleLeft);
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
625
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
626 let graph = svg
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
627 .append("g")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
628 .attr(
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
629 "transform",
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
630 "translate(" + this.margin.left + "," + this.margin.top + ")"
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
631 );
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
632 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
633 .append("g")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
634 .attr("transform", "translate(0," + height + ")")
3512
30a47d9fc667 client: fairway profiles: removed some old code
Markus Kottlaender <markus@intevation.de>
parents: 3408
diff changeset
635 .call(xAxis)
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
636 .selectAll(".tick text")
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
637 .attr("fill", "black")
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
638 .select(function() {
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
639 return this.parentNode;
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
640 })
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
641 .selectAll(".tick line")
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
642 .attr("stroke", "black");
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
643 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
644 .append("g")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
645 .attr("transform", "translate(" + width + ",0)")
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
646 .call(yAxisRight)
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
647 .selectAll(".tick text")
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
648 .attr("fill", "black")
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
649 .select(function() {
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
650 return this.parentNode;
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
651 })
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
652 .selectAll(".tick line")
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
653 .attr("stroke", "black");
3514
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
654 graph
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
655 .append("g")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
656 .attr("transform", "translate(0 0)")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
657 .call(yAxisLeft)
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
658 .selectAll(".tick text")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
659 .attr("fill", "black")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
660 .select(function() {
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
661 return this.parentNode;
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
662 })
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
663 .selectAll(".tick line")
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
664 .attr("stroke", "black");
fcb4f3fabde8 client: fairway profiles: added second y-axis (WIP)
Markus Kottlaender <markus@intevation.de>
parents: 3513
diff changeset
665
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
666 graph.selectAll(".domain").attr("stroke", "black");
2368
96b0314f2bd6 fairway_profile: consuming the offered waterlevel WIP
Thomas Junk <thomas.junk@intevation.de>
parents: 2358
diff changeset
667 return { xScale, yScaleRight, graph };
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
668 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
669 drawWaterlevel({ graph, xScale, yScaleRight, height }) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
670 let waterArea = d3
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
671 .area()
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
672 .x(function(d) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
673 return xScale(d.x);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
674 })
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
675 .y0(height)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
676 .y1(function(d) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
677 return yScaleRight(d.y);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
678 });
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
679 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
680 .append("path")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
681 .datum([{ x: 0, y: 0 }, { x: this.totalLength, y: 0 }])
2264
627bfcbbf631 client: Draw fairway dimensions for all LoS and in more "cut cases".
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2154
diff changeset
682 .attr("fill-opacity", 0.65)
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
683 .attr("fill", WATER_COLOR)
3520
70cd7383325b client: fairway profiles: removed strokes for sharper edges
Markus Kottlaender <markus@intevation.de>
parents: 3514
diff changeset
684 .attr("stroke", "transparent")
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
685 .attr("d", waterArea);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
686 },
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
687 drawProfile({
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
688 graph,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
689 xScale,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
690 yScaleRight,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
691 currentData,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
692 height,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
693 color,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
694 strokeColor,
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
695 opacity
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
696 }) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
697 for (let part of currentData) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
698 let profileLine = d3
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
699 .line()
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
700 .x(d => {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
701 return xScale(d.x);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
702 })
3527
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
703 .y(d =>
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
704 yScaleRight(
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
705 d.y + Math.abs(this.waterlevel - this.refWaterlevel) / 100
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
706 )
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
707 );
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
708 let profileArea = d3
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
709 .area()
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
710 .x(function(d) {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
711 return xScale(d.x);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
712 })
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
713 .y0(height)
3527
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
714 .y1(d =>
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
715 yScaleRight(
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
716 d.y + Math.abs(this.waterlevel - this.refWaterlevel) / 100
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
717 )
8a9ee18de13f client: fairway profiles: implemented selection between depth reference waterlevel and current waterlevel
Markus Kottlaender <markus@intevation.de>
parents: 3522
diff changeset
718 );
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
719 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
720 .append("path")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
721 .datum(part)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
722 .attr("fill", color)
3534
034657d6604f client: fairway profiles: improved legend
Markus Kottlaender <markus@intevation.de>
parents: 3531
diff changeset
723 .attr("stroke", "transparent")
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
724 .attr("fill-opacity", opacity)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
725 .attr("d", profileArea);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
726 graph
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
727 .append("path")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
728 .datum(part)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
729 .attr("fill", "none")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
730 .attr("stroke", strokeColor)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
731 .attr("stroke-linejoin", "round")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
732 .attr("stroke-linecap", "round")
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
733 .attr("stroke-width", 3)
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
734 .attr("stroke-opacity", opacity)
3007
792d4476d5d5 client:implemented pdf-generation for profiles diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2860
diff changeset
735 .attr("fill-opacity", 0)
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
736 .attr("d", profileLine);
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
737 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
738 },
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
739 scaleFairwayProfile() {
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
740 if (!document.querySelector(".diagram-container")) return;
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
741 const clientHeight = document.querySelector(".diagram-container")
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
742 .clientHeight;
2854
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
743 const clientWidth = document.querySelector(".diagram-container")
1b5acce6120d client: added legend to cross profile diagram
Markus Kottlaender <markus@intevation.de>
parents: 2566
diff changeset
744 .clientWidth;
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
745 if (!clientHeight || !clientWidth) return;
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
746 this.height = clientHeight;
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
747 this.width = clientWidth;
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
748 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
749 },
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
750 created() {
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
751 window.addEventListener("resize", debounce(this.drawDiagram), 100);
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
752 },
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
753 mounted() {
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
754 this.drawDiagram();
3240
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
755 this.templates[0] = this.defaultTemplate;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
756 this.form.template = this.templates[0];
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
757 this.templateData = this.form.template;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
758 HTTP.get("/templates/diagram", {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
759 headers: {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
760 "X-Gemma-Auth": localStorage.getItem("token"),
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
761 "Content-type": "text/xml; charset=UTF-8"
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
762 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
763 })
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
764 .then(response => {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
765 if (response.data.length) {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
766 this.templates = response.data;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
767 this.form.template = this.templates[0];
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
768 this.templates[this.templates.length] = this.defaultTemplate;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
769 this.applyChange();
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
770 }
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
771 })
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
772 .catch(e => {
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
773 const { status, data } = e.response;
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
774 displayError({
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
775 title: this.$gettext("Backend Error"),
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
776 message: `${status}: ${data.message || data}`
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
777 });
5240f5440b62 client: implemnt pdf-template for fairwayprofile diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3149
diff changeset
778 });
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
779 },
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
780 updated() {
2860
dbc799261811 client: fairway profile: removed old code
Markus Kottlaender <markus@intevation.de>
parents: 2854
diff changeset
781 this.drawDiagram();
1312
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
782 },
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
783 destroyed() {
3c37017f5eb8 fixed cross profile diagram after switching to to admin context and back and it's responsive behavior
Markus Kottlaender <markus@intevation.de>
parents: 1305
diff changeset
784 window.removeEventListener("resize", debounce(this.drawDiagram));
1272
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
785 }
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
786 };
bc55ffaeb639 cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
787 </script>