Mercurial > gemma
annotate client/src/components/fairway/AvailableFairwayDepthLNWL.vue @ 3963:feb53713bc2f diagram-cleanup
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Fri, 12 Jul 2019 15:14:16 +0200 |
parents | 7b3935a8d9ee |
children | afc7bca44df4 |
rev | line source |
---|---|
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
1 <template> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
2 <div class="d-flex flex-column flex-fill"> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
3 <UIBoxHeader icon="chart-area" :title="title" :closeCallback="close" /> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
4 <div class="d-flex flex-fill"> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
5 <DiagramLegend> |
3366 | 6 <div v-for="(entry, index) in legendLNWL" :key="index" class="legend"> |
3474 | 7 <span |
8 :style=" | |
9 `${legendStyle( | |
10 index | |
11 )}; border-radius: 0.25rem; width: 40px; height: 20px;` | |
12 " | |
13 ></span> | |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
14 {{ entry }} |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
15 </div> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
16 <div> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
17 <select |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
18 @change="applyChange" |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
19 v-model="form.template" |
3466
dfa97aad1134
client: unify the buttons style for diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3463
diff
changeset
|
20 class="form-control d-block custom-select-sm w-100 mt-2" |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
21 > |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
22 <option |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
23 v-for="template in templates" |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
24 :value="template" |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
25 :key="template.name" |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
26 > |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
27 {{ template.name }} |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
28 </option> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
29 </select> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
30 <button |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
31 @click="downloadPDF" |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
32 type="button" |
3466
dfa97aad1134
client: unify the buttons style for diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3463
diff
changeset
|
33 class="btn btn-sm btn-info d-block w-100 mt-2" |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
34 > |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
35 <translate>Export to PDF</translate> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
36 </button> |
3450
213b703bdd85
afdLNWL: CSV-Export
Thomas Junk <thomas.junk@intevation.de>
parents:
3437
diff
changeset
|
37 <a |
213b703bdd85
afdLNWL: CSV-Export
Thomas Junk <thomas.junk@intevation.de>
parents:
3437
diff
changeset
|
38 :href="dataLink" |
213b703bdd85
afdLNWL: CSV-Export
Thomas Junk <thomas.junk@intevation.de>
parents:
3437
diff
changeset
|
39 :download="csvFileName" |
3466
dfa97aad1134
client: unify the buttons style for diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3463
diff
changeset
|
40 class="mt-2 btn btn-sm btn-info w-100" |
3437 | 41 >Download CSV</a |
42 > | |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
43 </div> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
44 </DiagramLegend> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
45 <div |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
46 class="d-flex flex-fill justify-content-center align-items-center" |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
47 :id="containerId" |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
48 > |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
49 <div v-if="!fwLNWLData.length"> |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
50 <translate>No data available.</translate> |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
51 </div> |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
52 </div> |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
53 </div> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
54 </div> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
55 </template> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
56 |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
57 <script> |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
58 /* This is Free Software under GNU Affero General Public License v >= 3.0 |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
59 * without warranty, see README.md and license for details. |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
60 * |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
61 * SPDX-License-Identifier: AGPL-3.0-or-later |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
62 * License-Filename: LICENSES/AGPL-3.0.txt |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
63 * |
3800
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
64 * Copyright (C) 2018, 2019 by via donau |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
65 * – Österreichische Wasserstraßen-Gesellschaft mbH |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
66 * Software engineering by Intevation GmbH |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
67 * |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
68 * Author(s): |
3800
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
69 * * Thomas Junk <thomas.junk@intevation.de> |
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
70 * * Markus Kottländer <markus.kottlaender@intevation.de> |
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
71 * * Fadi Abbud <fadi.abbud@intevation.de> |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
72 */ |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
73 import * as d3 from "d3"; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
74 import { mapState } from "vuex"; |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
75 import { diagram, pdfgen, templateLoader } from "@/lib/mixins"; |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
76 import filters from "@/lib/filters.js"; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
77 |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
78 export default { |
3940
f56d14b9d9f1
available_fairway_depth_lnwl: leverage mixin
Thomas Junk <thomas.junk@intevation.de>
parents:
3927
diff
changeset
|
79 mixins: [diagram, pdfgen, templateLoader], |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
80 components: { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
81 DiagramLegend: () => import("@/components/DiagramLegend") |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
82 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
83 data() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
84 return { |
3918
1e837d86bead
available_fairway_lnwl: fixed containerID
Thomas Junk <thomas.junk@intevation.de>
parents:
3916
diff
changeset
|
85 containerId: "availablefairwaydepthlnwl-diagram-container", |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
86 scalePaddingLeft: 60, |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
87 scalePaddingRight: 0, |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
88 paddingTop: 25, |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
89 colors: { |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
90 afd: ["#3636ff", "#f49b7f", "#e15472"], |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
91 lnwl: "#97ddf3" |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
92 } |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
93 }; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
94 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
95 computed: { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
96 ...mapState("fairwayavailability", [ |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
97 "selectedFairwayAvailabilityFeature", |
3299
ef52926ce2fc
available_fairwaydepth_vs_lnwl: Scales adjusted
Thomas Junk <thomas.junk@intevation.de>
parents:
3296
diff
changeset
|
98 "fwLNWLData", |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
99 "from", |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
100 "to", |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
101 "frequency", |
3471 | 102 "csv", |
103 "depthlimit1", | |
104 "depthlimit2", | |
105 "widthlimit1", | |
106 "widthlimit2" | |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
107 ]), |
3471 | 108 legendLNWL() { |
109 const d = [this.depthlimit1, this.depthlimit2].sort(); | |
110 const w = [this.widthlimit1, this.widthlimit2].sort(); | |
111 const lowerBound = [d[0], w[0]].filter(x => x).join(", "); | |
112 const upperBound = [d[1], w[1]].filter(x => x).join(", "); | |
113 return [ | |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
114 `> LDC`, |
3471 | 115 `< ${lowerBound}`, |
116 `< ${upperBound}`, | |
117 `>= ${upperBound}` | |
118 ]; | |
119 }, | |
3437 | 120 dataLink() { |
121 return `data:text/csv;charset=utf-8, ${encodeURIComponent(this.csv)}`; | |
122 }, | |
123 csvFileName() { | |
124 return `${this.$gettext("fairwayavailabilityLNWL")}-${ | |
3483
879a85aea8a5
afdLNWL: robust legend name
Thomas Junk <thomas.junk@intevation.de>
parents:
3475
diff
changeset
|
125 this.featureName |
3437 | 126 }-${filters.surveyDate(this.fromDate)}-${filters.surveyDate( |
127 this.toDate | |
128 )}-${this.$gettext(this.frequency)}-.csv`; | |
129 }, | |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
130 fromDate() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
131 return this.from; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
132 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
133 toDate() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
134 return this.to; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
135 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
136 availability() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
137 return this.plainAvailability; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
138 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
139 title() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
140 return `Available Fairway Depth vs LNWL: ${ |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
141 this.featureName |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
142 } (${filters.surveyDate(this.fromDate)} - ${filters.surveyDate( |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
143 this.toDate |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
144 )}) ${this.$gettext(this.frequency)}`; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
145 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
146 featureName() { |
3483
879a85aea8a5
afdLNWL: robust legend name
Thomas Junk <thomas.junk@intevation.de>
parents:
3475
diff
changeset
|
147 if (this.selectedFairwayAvailabilityFeature == null) return ""; |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
148 return this.selectedFairwayAvailabilityFeature.properties.name; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
149 } |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
150 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
151 methods: { |
3474 | 152 legendStyle(index) { |
153 const style = { | |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
154 0: `background-color: ${this.colors.lnwl};`, |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
155 1: `background-color: ${this.colors.afd[2]};`, |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
156 2: `background-color: ${this.colors.afd[1]};`, |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
157 3: `background-color: ${this.colors.afd[0]};` |
3474 | 158 }; |
159 return style[index]; | |
160 }, | |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
161 downloadPDF() { |
3800
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
162 let title = `Available Fairway Depth vs LNWL: ${this.featureName}`; |
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
163 this.generatePDF({ |
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
164 templateData: this.templateData, |
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
165 diagramTitle: title |
26325370ba18
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
3780
diff
changeset
|
166 }); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
167 this.pdf.doc.save(`Available Fairway Depth LNWL: ${this.featureName}`); |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
168 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
169 addDiagramLegend(position, offset, color) { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
170 let x = offset.x, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
171 y = offset.y; |
3333
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
172 this.pdf.doc.setFontSize(10); |
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
173 let width = |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
174 (this.pdf.doc.getStringUnitWidth(">= LDC") * 10) / (72 / 25.6) + 15; |
3333
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
175 // if position is on the right, x needs to be calculate with pdf width and |
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
176 // the size of the element |
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
177 if (["topright", "bottomright"].indexOf(position) !== -1) { |
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
178 x = this.pdf.width - offset.x - width; |
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
179 } |
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
180 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
181 y = this.pdf.height - offset.y - this.getTextHeight(6); |
3333
d5dbfba9faae
clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3299
diff
changeset
|
182 } |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
183 this.pdf.doc.setTextColor(color); |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
184 this.pdf.doc.setDrawColor(this.colors.lnwl); |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
185 this.pdf.doc.setFillColor(this.colors.lnwl); |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
186 this.pdf.doc.roundedRect(x, y, 10, 4, 1.5, 1.5, "FD"); |
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
187 this.pdf.doc.text(this.legendLNWL[0], x + 12, y + 3); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
188 |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
189 this.pdf.doc.setDrawColor(this.colors.afd[2]); |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
190 this.pdf.doc.setFillColor(this.colors.afd[2]); |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
191 this.pdf.doc.roundedRect(x, y + 5, 10, 4, 1.5, 1.5, "FD"); |
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
192 this.pdf.doc.text(this.legendLNWL[1], x + 12, y + 8); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
193 |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
194 this.pdf.doc.setDrawColor(this.colors.afd[1]); |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
195 this.pdf.doc.setFillColor(this.colors.afd[1]); |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
196 this.pdf.doc.roundedRect(x, y + 10, 10, 4, 1.5, 1.5, "FD"); |
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
197 this.pdf.doc.text(this.legendLNWL[2], x + 12, y + 13); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
198 |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
199 this.pdf.doc.setDrawColor(this.colors.afd[0]); |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
200 this.pdf.doc.setFillColor(this.colors.afd[0]); |
3489
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
201 this.pdf.doc.roundedRect(x, y + 15, 10, 4, 1.5, 1.5, "FD"); |
e6673f35d5d1
client: diagram-template: improve diagramlegend element (AvailableFairwayDepthLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents:
3484
diff
changeset
|
202 this.pdf.doc.text(this.legendLNWL[3], x + 12, y + 18); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
203 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
204 close() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
205 this.$store.commit("application/paneSetup", "DEFAULT"); |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
206 }, |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
207 getPrintLayout() { |
3941
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
208 return { |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
209 main: { top: 0, right: 20, bottom: 50, left: 20 } |
3941
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
210 }; |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
211 }, |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
212 drawDiagram() { |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
213 const elem = document.querySelector("#" + this.containerId); |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
214 const svgWidth = elem != null ? elem.clientWidth : 0; |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
215 const svgHeight = elem != null ? elem.clientHeight : 0; |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
216 const layout = this.getPrintLayout(); |
3941
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
217 const dimensions = this.getDimensions({ |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
218 svgHeight, |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
219 svgWidth, |
7b3935a8d9ee
refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents:
3940
diff
changeset
|
220 ...layout |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
221 }); |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
222 d3.select("#" + this.containerId + " svg").remove(); |
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
223 this.renderTo({ element: "#" + this.containerId, dimensions }); |
3377
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
224 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
225 drawTooltip(diagram) { |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
226 diagram |
3377
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
227 .append("text") |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
228 .text("") |
3377
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
229 .attr("font-size", "0.8em") |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
230 .attr("opacity", 0) |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
231 .attr("id", "tooltip"); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
232 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
233 renderTo({ element, dimensions }) { |
3913
9ec50fd5c9fa
available_fairwaydepthLNWL: readd padding.top
Thomas Junk <thomas.junk@intevation.de>
parents:
3912
diff
changeset
|
234 let diagram = d3 |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
235 .select(element) |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
236 .append("svg") |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
237 .attr("width", "100%") |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
238 .attr("height", "100%"); |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
239 diagram = diagram.append("g"); |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
240 const yScale = d3 |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
241 .scaleLinear() |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
242 .domain([0, 100]) |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
243 .range([dimensions.mainHeight - 30, 0]); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
244 this.drawScaleLabel({ diagram, dimensions }); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
245 this.drawScale({ diagram, dimensions, yScale }); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
246 this.drawBars({ diagram, yScale, dimensions }); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
247 this.drawTooltip(diagram); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
248 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
249 drawBars({ diagram, yScale, dimensions }) { |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
250 if (this.fwLNWLData) { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
251 const widthPerItem = Math.min( |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
252 (dimensions.width - this.scalePaddingLeft - this.scalePaddingRight) / |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
253 this.fwLNWLData.length, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
254 180 |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
255 ); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
256 const spaceBetween = widthPerItem * 0.2; |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
257 const afdWidth = widthPerItem * 0.5; |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
258 const ldcWidth = widthPerItem * 0.3; |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
259 this.fwLNWLData.forEach((data, i) => { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
260 this.drawLNWL( |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
261 data, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
262 i, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
263 diagram, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
264 spaceBetween, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
265 widthPerItem, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
266 ldcWidth, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
267 yScale |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
268 ); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
269 this.drawAFD( |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
270 data, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
271 i, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
272 diagram, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
273 spaceBetween, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
274 widthPerItem, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
275 ldcWidth, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
276 yScale, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
277 afdWidth |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
278 ); |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
279 this.drawLabel(data.date, i, diagram, widthPerItem, dimensions); |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
280 }); |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
281 } |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
282 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
283 drawLabel(date, i, diagram, widthPerItem, dimensions) { |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
284 diagram |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
285 .append("text") |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
286 .text(date) |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
287 .attr("text-anchor", "middle") |
3922
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
288 .attr("font-size", 10) |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
289 .attr( |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
290 "transform", |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
291 `translate(${this.scalePaddingLeft + |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
292 widthPerItem * i + |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
293 widthPerItem / 2} ${dimensions.mainHeight + this.paddingTop - 5})` |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
294 ); |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
295 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
296 drawAFD( |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
297 data, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
298 i, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
299 diagram, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
300 spaceBetween, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
301 widthPerItem, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
302 ldcWidth, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
303 yScale, |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
304 afdWidth |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
305 ) { |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
306 let afd = diagram |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
307 .append("g") |
3386 | 308 .attr( |
309 "transform", | |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
310 `translate(${this.scalePaddingLeft + |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
311 spaceBetween / 2 + |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
312 widthPerItem * i + |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
313 ldcWidth})` |
3386 | 314 ); |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
315 afd |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
316 .selectAll("rect") |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
317 .data([data.above, data.between, data.below]) |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
318 .enter() |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
319 .append("rect") |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
320 .on("mouseover", function() { |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
321 d3.select(this).attr("opacity", "0.8"); |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
322 d3.select("#tooltip").attr("opacity", 1); |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
323 }) |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
324 .on("mouseout", function() { |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
325 d3.select(this).attr("opacity", 1); |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
326 d3.select("#tooltip").attr("opacity", 0); |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
327 }) |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
328 .on("mousemove", function(d) { |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
329 let y = d3.mouse(this)[1]; |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
330 const dy = document |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
331 .querySelector(".diagram-container") |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
332 .getBoundingClientRect().left; |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
333 d3.select("#tooltip") |
3907
7b172a1fd9e7
client: available fairway depth diagram: rounded values in tooltip
Markus Kottlaender <markus@intevation.de>
parents:
3905
diff
changeset
|
334 .text(Math.round(d)) |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
335 .attr("y", y - 10) |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
336 .attr("x", d3.event.pageX - dy); |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
337 //d3.event.pageX gives coordinates relative to SVG |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
338 //dy gives offset of svg on page |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
339 }) |
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
340 .attr("height", d => { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
341 return yScale(0) - yScale(d); |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
342 }) |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
343 .attr("y", (d, i) => { |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
344 if (i === 0) { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
345 return yScale(d); |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
346 } |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
347 if (i === 1) { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
348 return yScale(data.above + d); |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
349 } |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
350 if (i === 2) { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
351 return yScale(data.above + data.between + d); |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
352 } |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
353 }) |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
354 .attr("transform", `translate(0 ${this.paddingTop})`) |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
355 .attr("width", afdWidth) |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
356 .attr("fill", (d, i) => { |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
357 return this.colors.afd[i]; |
3380
d83c738e8627
fairway_availability_LNWL: draw chart with MOCKDATA
Thomas Junk <thomas.junk@intevation.de>
parents:
3377
diff
changeset
|
358 }); |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
359 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
360 drawLNWL(data, i, diagram, spaceBetween, widthPerItem, ldcWidth, yScale) { |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
361 let lnwl = diagram |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
362 .append("g") |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
363 .attr( |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
364 "transform", |
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
365 `translate(${this.scalePaddingLeft + |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
366 spaceBetween / 2 + |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
367 widthPerItem * i})` |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
368 ); |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
369 lnwl |
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
370 .append("rect") |
3461
b43cf476d791
client: spuc05: implemented new data structure (CSV) and added support for multiple charts
Markus Kottlaender <markus@intevation.de>
parents:
3450
diff
changeset
|
371 .datum([data.ldc]) |
3377
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
372 .on("mouseover", function() { |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
373 d3.select(this).attr("opacity", "0.8"); |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
374 d3.select("#tooltip").attr("opacity", 1); |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
375 }) |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
376 .on("mouseout", function() { |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
377 d3.select(this).attr("opacity", 1); |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
378 d3.select("#tooltip").attr("opacity", 0); |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
379 }) |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
380 .on("mousemove", function(d) { |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
381 let y = d3.mouse(this)[1]; |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
382 const dy = document |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
383 .querySelector(".diagram-container") |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
384 .getBoundingClientRect().left; |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
385 d3.select("#tooltip") |
3907
7b172a1fd9e7
client: available fairway depth diagram: rounded values in tooltip
Markus Kottlaender <markus@intevation.de>
parents:
3905
diff
changeset
|
386 .text(Math.round(d[0])) |
3377
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
387 .attr("y", y - 10) |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
388 .attr("x", d3.event.pageX - dy); |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
389 //d3.event.pageX gives coordinates relative to SVG |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
390 //dy gives offset of svg on page |
ccb5455f0713
available_fairway_depthLNWL: tooltips added
Thomas Junk <thomas.junk@intevation.de>
parents:
3368
diff
changeset
|
391 }) |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
392 .attr("height", d => { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
393 return yScale(0) - yScale(d); |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
394 }) |
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
395 .attr("y", d => { |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
396 return yScale(d); |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
397 }) |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
398 .attr("transform", `translate(0 ${this.paddingTop})`) |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
399 .attr("width", ldcWidth) |
3463
6f4dad7473d7
afdLNWL: basical usage of classbreaks
Thomas Junk <thomas.junk@intevation.de>
parents:
3461
diff
changeset
|
400 .attr("fill", () => { |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
401 return this.colors.lnwl; |
3368
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
402 }); |
70605404f37d
fa_lnwl: prototypical diagram added
Thomas Junk <thomas.junk@intevation.de>
parents:
3366
diff
changeset
|
403 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
404 drawScaleLabel({ diagram, dimensions }) { |
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
405 diagram |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
406 .append("text") |
3963
feb53713bc2f
client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents:
3941
diff
changeset
|
407 .text(this.$gettext("Percent")) |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
408 .attr("text-anchor", "middle") |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
409 .attr("x", 0) |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
410 .attr("y", 0) |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
411 .attr("dy", "20") |
3814
ff8ca2d80ce9
client: improve pdf generation towards vector diagrams
Bernhard Reiter <bernhard@intevation.de>
parents:
3806
diff
changeset
|
412 // translate a few mm to the right to allow for slightly higher letters |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
413 .attr( |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
414 "transform", |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
415 `translate(2, ${(dimensions.mainHeight + this.paddingTop) / |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
416 2}), rotate(-90)` |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
417 ); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
418 }, |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
419 drawScale({ diagram, dimensions, yScale }) { |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
420 const yAxisLeft = d3 |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
421 .axisLeft() |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
422 .tickSizeInner( |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
423 dimensions.width - this.scalePaddingLeft - this.scalePaddingRight |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
424 ) |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
425 .tickSizeOuter(0) |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
426 .scale(yScale); |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
427 const yAxisRight = d3 |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
428 .axisRight() |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
429 .tickSizeInner( |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
430 dimensions.width - this.scalePaddingLeft - this.scalePaddingRight |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
431 ) |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
432 .tickSizeOuter(0) |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
433 .scale(yScale); |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
434 |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
435 diagram |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
436 .append("g") |
3876
0c6ef9e655fc
client: available fairway depth diagrams: added second y-axis on the right
Markus Kottlaender <markus@intevation.de>
parents:
3717
diff
changeset
|
437 .attr( |
0c6ef9e655fc
client: available fairway depth diagrams: added second y-axis on the right
Markus Kottlaender <markus@intevation.de>
parents:
3717
diff
changeset
|
438 "transform", |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
439 `translate(${dimensions.width - this.scalePaddingRight} ${ |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
440 this.paddingTop |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
441 })` |
3876
0c6ef9e655fc
client: available fairway depth diagrams: added second y-axis on the right
Markus Kottlaender <markus@intevation.de>
parents:
3717
diff
changeset
|
442 ) |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
443 .call(yAxisLeft) |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
444 .selectAll(".tick text") |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
445 .attr("fill", "black") |
3922
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
446 .attr("font-size", 10) |
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
447 .attr("dy", 3) |
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
448 .attr("dx", -3) |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
449 .select(function() { |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
450 return this.parentNode; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
451 }) |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
452 .selectAll(".tick line") |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
453 .attr("stroke-dasharray", 5) |
3905
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
454 .attr("stroke", "#ccc") |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
455 .select(function() { |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
456 return this.parentNode; |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
457 }) |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
458 .filter(d => d === 0) |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
459 .selectAll(".tick line") |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
460 .attr("stroke-dasharray", "none") |
3c095749efb2
client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents:
3890
diff
changeset
|
461 .attr("stroke", "#333"); |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
462 diagram |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
463 .append("g") |
3916
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
464 .attr( |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
465 "transform", |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
466 `translate(${this.scalePaddingLeft} ${this.paddingTop})` |
c76bbd27f89c
client: AFDvsLNWL diagram: adjusted height to be same as other AFD diagram
Markus Kottlaender <markus@intevation.de>
parents:
3913
diff
changeset
|
467 ) |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
468 .call(yAxisRight) |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
469 .selectAll(".tick text") |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
470 .attr("fill", "black") |
3922
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
471 .attr("font-size", 10) |
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
472 .attr("dy", 3) |
32b656e77e2f
client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents:
3920
diff
changeset
|
473 .attr("dx", 3) |
3877
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
474 .select(function() { |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
475 return this.parentNode; |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
476 }) |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
477 .selectAll(".tick line") |
d82b5e5868e3
client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents:
3876
diff
changeset
|
478 .attr("stroke", "transparent"); |
3912
b7dfee369f2f
available_fairwaydepthLNWL: factor out sideeffects and render offscreen
Thomas Junk <thomas.junk@intevation.de>
parents:
3907
diff
changeset
|
479 diagram.selectAll(".domain").attr("stroke", "black"); |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
480 } |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
481 }, |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
482 watch: { |
3299
ef52926ce2fc
available_fairwaydepth_vs_lnwl: Scales adjusted
Thomas Junk <thomas.junk@intevation.de>
parents:
3296
diff
changeset
|
483 fwLNWLData() { |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
484 this.drawDiagram(); |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
485 } |
3381 | 486 } |
3296
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
487 }; |
fa7dc3f31ef3
available_fairwaydepth_vs_lnwl: POC etd.
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
488 </script> |