annotate client/src/components/fairway/AvailableFairwayDepth.vue @ 5267:aca4bf7af270

client: remove mapState from import statement
author Fadi Abbud <fadi.abbud@intevation.de>
date Wed, 10 Jun 2020 16:33:10 +0200
parents 6b054b91d9b2
children 791a372553a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
1 <template>
3184
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
2 <div class="d-flex flex-column flex-fill">
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
3 <UIBoxHeader icon="chart-area" :title="title" :closeCallback="close" />
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
4 <UISpinnerOverlay v-if="loading" />
3279
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
5 <div class="d-flex flex-fill">
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
6 <DiagramLegend>
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
7 <div v-for="(entry, index) in legend" :key="index" class="legend">
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
8 <span
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
9 :style="
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
10 `${legendStyle(
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
11 index
3280
8fb81b45085f available_fairway_depth: use rounded border for legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3279
diff changeset
12 )}; border-radius: 0.25rem; width: 40px; height: 20px;`
3279
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
13 "
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
14 ></span>
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
15 {{ entry }}
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
16 </div>
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
17 <div>
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
18 <select
3273
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3268
diff changeset
19 @change="applyChange"
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
20 v-model="form.template"
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
21 class="form-control d-block custom-select-sm w-100 mt-1"
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
22 >
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
23 <option
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
24 v-for="template in templates"
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
25 :value="template"
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
26 :key="template.name"
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
27 >
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
28 {{ template.name }}
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
29 </option>
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
30 </select>
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
31 <button
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
32 @click="downloadPDF"
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
33 type="button"
3466
dfa97aad1134 client: unify the buttons style for diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3464
diff changeset
34 class="btn btn-sm btn-info d-block w-100 mt-2"
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
35 >
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
36 <translate>Export to PDF</translate>
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
37 </button>
3437
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
38 <a
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
39 :href="dataLink"
4803
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
40 :download="`${fileName}.csv`"
3466
dfa97aad1134 client: unify the buttons style for diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3464
diff changeset
41 class="mt-2 btn btn-sm btn-info w-100"
4598
96283fc7de02 client: mark strings for translations(AFD,AFDLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4440
diff changeset
42 ><translate>Download CSV</translate></a
3437
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
43 >
4803
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
44 <a
4808
db450fcc8ed7 client: add title for the exported image
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4805
diff changeset
45 @click="downloadImage('AFDpng', title)"
4805
7de099c4824c client: image-export: improve hyperlink ids for download
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4803
diff changeset
46 id="AFDpng"
4803
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
47 class="btn btn-sm btn-info text-white d-block w-100 mt-2"
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
48 :download="`${fileName}.png`"
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
49 >
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
50 <translate>Download Image</translate>
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
51 </a>
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
52 </div>
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
53 <div class="btn-group-toggle w-100 mt-2">
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
54 <label
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
55 class="btn btn-outline-secondary btn-sm"
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
56 :class="{ active: showNumbers }"
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
57 ><input
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
58 type="checkbox"
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
59 v-model="showNumbers"
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
60 autocomplete="off"
4598
96283fc7de02 client: mark strings for translations(AFD,AFDLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4440
diff changeset
61 /><translate>Numbers</translate>
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
62 </label>
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
63 </div>
3279
215173f62900 available_fairway_depth: improve legend layout
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
64 </DiagramLegend>
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
65 <div
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
66 ref="diagramContainer"
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
67 :id="containerId"
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
68 class="diagram-container flex-fill"
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
69 ></div>
3135
Thomas Junk <thomas.junk@intevation.de>
parents: 3134
diff changeset
70 </div>
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
71 </div>
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
72 </template>
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
73
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
74 <style></style>
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
75
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
76 <script>
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
77 /* This is Free Software under GNU Affero General Public License v >= 3.0
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
78 * without warranty, see README.md and license for details.
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
79 *
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
80 * SPDX-License-Identifier: AGPL-3.0-or-later
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
81 * License-Filename: LICENSES/AGPL-3.0.txt
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
82 *
3800
26325370ba18 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3780
diff changeset
83 * Copyright (C) 2018, 2019 by via donau
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
84 * – Österreichische Wasserstraßen-Gesellschaft mbH
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
85 * Software engineering by Intevation GmbH
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
86 *
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
87 * Author(s):
3800
26325370ba18 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3780
diff changeset
88 * * Thomas Junk <thomas.junk@intevation.de>
26325370ba18 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3780
diff changeset
89 * * Markus Kottländer <markus.kottlaender@intevation.de>
26325370ba18 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3780
diff changeset
90 * * Fadi Abbud <fadi.abbud@intevation.de>
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
91 * * Bernhard Reiter <bernhard.reiter@intevation.de>
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
92 */
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
93 import * as d3 from "d3";
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
94 import app from "@/main";
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
95 import debounce from "debounce";
3184
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
96 import { mapState } from "vuex";
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
97 import filters from "@/lib/filters.js";
3939
f9de2ea2706e available_fairway_depth: leverage mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3927
diff changeset
98 import { diagram, pdfgen, templateLoader } from "@/lib/mixins";
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
99 import { HTTP } from "@/lib/http";
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
100 import { displayError } from "@/lib/errors";
3327
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
101 import { FREQUENCIES } from "@/store/fairwayavailability";
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
102 import { defaultDiagramTemplate } from "@/lib/DefaultDiagramTemplate";
4665
c47c8085cc7e client: translation: implement marking of diagram labels
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4598
diff changeset
103 import { localeDateString } from "@/lib/datelocalization";
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
104
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
105 export default {
3939
f9de2ea2706e available_fairway_depth: leverage mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3927
diff changeset
106 mixins: [diagram, pdfgen, templateLoader],
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
107 components: {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
108 DiagramLegend: () => import("@/components/DiagramLegend")
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
109 },
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
110 data() {
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
111 return {
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
112 frequencyD: null,
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
113 selectedFairwayAvailabilityFeatureD: null,
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
114 fromDate: null,
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
115 toDate: null,
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
116 depthlimit1D: null,
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
117 depthlimit2D: null,
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
118 widthlimit1D: null,
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
119 widthlimit2D: null,
3918
1e837d86bead available_fairway_lnwl: fixed containerID
Thomas Junk <thomas.junk@intevation.de>
parents: 3917
diff changeset
120 containerId: "availablefairwaydepth-diagram-container",
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
121 resizeListenerFunction: null,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
122 loading: false,
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
123 scalePaddingLeft: 60,
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
124 scalePaddingRight: 0,
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
125 paddingTop: 25,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
126 pdf: {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
127 doc: null,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
128 width: null,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
129 height: null
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
130 },
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
131 form: {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
132 template: null
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
133 },
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
134 templateData: null,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
135 templates: [],
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
136 defaultTemplate: defaultDiagramTemplate,
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
137 showNumbers: false
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
138 };
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
139 },
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
140 created() {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
141 this.resizeListenerFunction = debounce(this.drawDiagram, 100);
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
142 window.addEventListener("resize", this.resizeListenerFunction);
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
143 },
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
144 destroyed() {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
145 window.removeEventListener("resize", this.resizeListenerFunction);
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
146 },
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
147 mounted() {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
148 // Nasty but necessary if we don't want to use the updated hook to re-draw
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
149 // the diagram because this would re-draw it also for irrelevant reasons.
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
150 // In this case we need to wait for the child component (DiagramLegend) to
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
151 // render. According to the docs (https://vuejs.org/v2/api/#mounted) this
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
152 // should be possible with $nextTick() but it doesn't work because it does
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
153 // not guarantee that the DOM is not only updated but also re-painted on the
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
154 // screen.
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
155 setTimeout(this.drawDiagram, 150);
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
156 this.initDiagramValues();
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
157 this.templates[0] = this.defaultTemplate;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
158 this.form.template = this.templates[0];
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
159 this.templateData = this.form.template;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
160 HTTP.get("/templates/diagram", {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
161 headers: {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
162 "X-Gemma-Auth": localStorage.getItem("token"),
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
163 "Content-type": "text/xml; charset=UTF-8"
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
164 }
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
165 })
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
166 .then(response => {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
167 if (response.data.length) {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
168 this.templates = response.data;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
169 this.form.template = this.templates[0];
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
170 this.templates[this.templates.length] = this.defaultTemplate;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
171 this.applyChange();
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
172 }
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
173 })
4868
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
174 .catch(error => {
4869
6b054b91d9b2 backend not reachable as error message etd. Login adjusted
Thomas Junk <thomas.junk@intevation.de>
parents: 4868
diff changeset
175 let message = "Backend not reachable";
4868
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
176 if (error.response) {
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
177 const { status, data } = error.response;
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
178 message = `${status}: ${data.message || data}`;
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
179 }
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
180 displayError({
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
181 title: this.$gettext("Backend Error"),
4868
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
182 message: message
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
183 });
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
184 });
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
185 },
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
186 computed: {
3210
66e90b48387a available_fairway-depth: store refactored
Thomas Junk <thomas.junk@intevation.de>
parents: 3192
diff changeset
187 ...mapState("fairwayavailability", [
3191
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
188 "selectedFairwayAvailabilityFeature",
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
189 "fwData",
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
190 "from",
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
191 "to",
3216
ee6a4e8af766 available_fairway_depth: legend POC
Thomas Junk <thomas.junk@intevation.de>
parents: 3213
diff changeset
192 "frequency",
3476
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
193 "csv",
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
194 "depthlimit1",
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
195 "depthlimit2",
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
196 "widthlimit1",
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
197 "widthlimit2"
3191
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
198 ]),
3476
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
199 legend() {
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
200 const d = [this.depthlimit1D, this.depthlimit2D].sort();
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
201 const w = [this.widthlimit1D, this.widthlimit2D].sort();
4425
fe8c331760ae client: FWD: correct values for diagramlegend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4412
diff changeset
202 const lowerBound = [d[0] / 100, w[0]].filter(x => x).join(", ");
fe8c331760ae client: FWD: correct values for diagramlegend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4412
diff changeset
203 const upperBound = [d[1] / 100, w[1]].filter(x => x).join(", ");
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
204 let result;
4412
14de1ea7000b AFDepths: fix comparison
Thomas Junk <thomas.junk@intevation.de>
parents: 4409
diff changeset
205 if (this.depthlimit1D !== this.depthlimit2D) {
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
206 result = [
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
207 `> LDC`,
4425
fe8c331760ae client: FWD: correct values for diagramlegend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4412
diff changeset
208 `>= ${upperBound} [m]`,
fe8c331760ae client: FWD: correct values for diagramlegend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4412
diff changeset
209 `< ${upperBound} [m]`,
fe8c331760ae client: FWD: correct values for diagramlegend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4412
diff changeset
210 `< ${lowerBound} [m]`
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
211 ];
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
212 } else {
4425
fe8c331760ae client: FWD: correct values for diagramlegend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4412
diff changeset
213 result = [`> LDC`, `>= ${upperBound} [m]`, `< ${upperBound} [m]`];
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
214 }
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
215 return result;
3476
cc11f207e060 afd: omit legend generation from CSV. Legend is generated from known inputs
Thomas Junk <thomas.junk@intevation.de>
parents: 3466
diff changeset
216 },
3437
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
217 dataLink() {
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
218 return `data:text/csv;charset=utf-8, ${encodeURIComponent(this.csv)}`;
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
219 },
4803
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
220 fileName() {
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
221 if (!this.frequencyD) return;
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
222 return this.downloadFilename(
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
223 this.$gettext("FairwayAvailability"),
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
224 this.featureName
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
225 );
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
226 },
3437
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
227 csvFileName() {
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
228 if (!this.frequencyD) return;
4677
fa55e48bbca1 client: improve filename generation for downloads
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4665
diff changeset
229 return (
fa55e48bbca1 client: improve filename generation for downloads
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4665
diff changeset
230 this.downloadFilename(
fa55e48bbca1 client: improve filename generation for downloads
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4665
diff changeset
231 this.$gettext("FairwayAvailability"),
fa55e48bbca1 client: improve filename generation for downloads
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4665
diff changeset
232 this.featureName
fa55e48bbca1 client: improve filename generation for downloads
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4665
diff changeset
233 ) + ".csv"
fa55e48bbca1 client: improve filename generation for downloads
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4665
diff changeset
234 );
3437
6a044d6c2cdc afd: csv download
Thomas Junk <thomas.junk@intevation.de>
parents: 3410
diff changeset
235 },
3327
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
236 frequencyToRange() {
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
237 if (!this.frequencyD) return;
3327
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
238 const frequencies = {
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
239 [FREQUENCIES.MONTHLY]: [-33, 33],
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
240 [FREQUENCIES.QUARTERLY]: [-93, 93],
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
241 [FREQUENCIES.YEARLY]: [-370, 370]
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
242 };
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
243 return frequencies[this.frequencyD];
3327
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
244 },
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
245 availability() {
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
246 return this.plainAvailability;
3184
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
247 },
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
248 title() {
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
249 if (!this.frequencyD) return;
4598
96283fc7de02 client: mark strings for translations(AFD,AFDLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4440
diff changeset
250 return `${this.$gettext("Available Fairway Depth:")} ${
3191
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
251 this.featureName
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
252 } (${filters.surveyDate(this.fromDate)} - ${filters.surveyDate(
c0cd5dfec153 statistics: persist fields to vuex
Thomas Junk <thomas.junk@intevation.de>
parents: 3185
diff changeset
253 this.toDate
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
254 )}) ${this.$gettext(this.frequencyD)}`;
3184
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
255 },
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
256 featureName() {
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
257 if (this.selectedFairwayAvailabilityFeatureD == null) return "";
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
258 return this.selectedFairwayAvailabilityFeatureD.properties.name;
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
259 }
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
260 },
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
261 methods: {
4809
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
262 addLegendToCanvas(ctx, { width, height }) {
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
263 let x = width / 20,
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
264 y = height - 35;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
265 ctx.font = "14px sans-serif";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
266 ctx.textAlign = "start";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
267 if (this.legend[3]) {
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
268 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
269 ctx.fillStyle = this.$options.COLORS.LDC;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
270 ctx.strokeStyle = this.$options.COLORS.LDC;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
271 ctx.rect(x, y, 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
272 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
273 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
274 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
275 ctx.fillText(this.legend[0], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
276 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
277
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
278 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
279 ctx.fillStyle = this.$options.COLORS.HIGHEST;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
280 ctx.strokeStyle = this.$options.COLORS.HIGHEST;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
281 ctx.rect(x, (y += 25), 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
282 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
283 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
284 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
285 ctx.fillText(this.legend[1], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
286 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
287
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
288 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
289 ctx.fillStyle = this.$options.COLORS.REST[1];
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
290 ctx.strokeStyle = this.$options.COLORS.REST[1];
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
291 ctx.rect(x, (y += 25), 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
292 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
293 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
294 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
295 ctx.fillText(this.legend[2], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
296 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
297
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
298 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
299 ctx.fillStyle = this.$options.COLORS.REST[0];
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
300 ctx.strokeStyle = this.$options.COLORS.REST[0];
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
301 ctx.rect(x, (y += 25), 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
302 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
303 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
304 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
305 ctx.fillText(this.legend[3], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
306 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
307 } else {
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
308 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
309 ctx.fillStyle = this.$options.COLORS.LDC;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
310 ctx.strokeStyle = this.$options.COLORS.LDC;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
311 ctx.rect(x, y, 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
312 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
313 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
314 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
315 ctx.fillText(this.legend[0], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
316 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
317
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
318 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
319 ctx.fillStyle = this.$options.COLORS.HIGHEST;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
320 ctx.strokeStyle = this.$options.COLORS.HIGHEST;
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
321 ctx.rect(x, (y += 25), 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
322 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
323 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
324 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
325 ctx.fillText(this.legend[1], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
326 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
327
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
328 ctx.beginPath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
329 ctx.fillStyle = this.$options.COLORS.REST[0];
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
330 ctx.strokeStyle = this.$options.COLORS.REST[0];
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
331 ctx.rect(x, (y += 25), 35, 20);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
332 ctx.fill();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
333 ctx.stroke();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
334 ctx.fillStyle = "black";
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
335 ctx.fillText(this.legend[2], x + 40, y + 13);
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
336 ctx.closePath();
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
337 }
b6d8570b8480 client: image-export: add diagram legend
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4808
diff changeset
338 },
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
339 initDiagramValues() {
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
340 this.selectedFairwayAvailabilityFeatureD = this.selectedFairwayAvailabilityFeature;
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
341 this.fromDate = this.from;
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
342 this.toDate = this.to;
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
343 this.depthlimit1D = this.depthlimit1;
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
344 this.depthlimit2D = this.depthlimit2;
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
345 this.widthlimit1D = this.widthlimit1;
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
346 this.widthlimit2D = this.widthlimit2;
4386
bad093433899 AFD: frequency decoupled
Thomas Junk <thomas.junk@intevation.de>
parents: 4382
diff changeset
347 this.frequencyD = this.frequency;
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
348 },
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
349 applyChange() {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
350 if (this.form.template.hasOwnProperty("properties")) {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
351 this.templateData = this.defaultTemplate;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
352 return;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
353 }
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
354 if (this.form.template) {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
355 this.loadTemplates("/templates/diagram/" + this.form.template.name)
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
356 .then(response => {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
357 this.prepareImages(response.data.template_data.elements).then(
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
358 values => {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
359 values.forEach(v => {
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
360 response.data.template_data.elements[v.index].url = v.url;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
361 });
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
362 this.templateData = response.data.template_data;
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
363 }
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
364 );
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
365 })
4868
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
366 .catch(error => {
4869
6b054b91d9b2 backend not reachable as error message etd. Login adjusted
Thomas Junk <thomas.junk@intevation.de>
parents: 4868
diff changeset
367 let message = "Backend not reachable";
4868
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
368 if (error.response) {
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
369 const { status, data } = error.response;
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
370 message = `${status}: ${data.message || data}`;
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
371 }
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
372 displayError({
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
373 title: this.$gettext("Backend Error"),
4868
008bc1ae8897 exception handling
Thomas Junk <thomas.junk@intevation.de>
parents: 4809
diff changeset
374 message: message
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
375 });
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
376 });
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
377 }
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
378 },
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
379 downloadPDF() {
4598
96283fc7de02 client: mark strings for translations(AFD,AFDLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4440
diff changeset
380 let title = `${this.$gettext("Available Fairway Depth:")} ${
96283fc7de02 client: mark strings for translations(AFD,AFDLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4440
diff changeset
381 this.featureName
96283fc7de02 client: mark strings for translations(AFD,AFDLNWL)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4440
diff changeset
382 }`;
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
383 this.generatePDF({
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
384 templateData: this.templateData,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
385 diagramTitle: title
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
386 });
4803
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
387 this.pdf.doc.save(this.fileName + ".pdf");
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
388 },
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
389 addDiagramLegend(position, offset, color) {
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
390 let x = offset.x,
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
391 y = offset.y;
3333
d5dbfba9faae clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3330
diff changeset
392 this.pdf.doc.setFontSize(10);
d5dbfba9faae clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3330
diff changeset
393 let width =
3493
da58cf951342 client: diagram-template: improve diagramlegend element (AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3484
diff changeset
394 (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: 3330
diff changeset
395 // 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: 3330
diff changeset
396 // the size of the element
d5dbfba9faae clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3330
diff changeset
397 if (["topright", "bottomright"].indexOf(position) !== -1) {
d5dbfba9faae clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3330
diff changeset
398 x = this.pdf.width - offset.x - width;
d5dbfba9faae clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3330
diff changeset
399 }
d5dbfba9faae clinet: pdf-template: fix positioning of diagramlegend (FairwayAvailability,AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3330
diff changeset
400 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
3493
da58cf951342 client: diagram-template: improve diagramlegend element (AvailableFairwayDepth)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3484
diff changeset
401 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: 3330
diff changeset
402 }
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
403
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
404 if (this.legend[3]) {
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
405 this.pdf.doc.setTextColor(color);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
406 this.pdf.doc.setDrawColor(this.$options.COLORS.LDC);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
407 this.pdf.doc.setFillColor(this.$options.COLORS.LDC);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
408 this.pdf.doc.roundedRect(x, y, 10, 4, 1.5, 1.5, "FD");
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
409 this.pdf.doc.text(this.legend[0], x + 12, y + 3);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
410
4013
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
411 this.pdf.doc.setDrawColor(this.$options.COLORS.HIGHEST);
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
412 this.pdf.doc.setFillColor(this.$options.COLORS.HIGHEST);
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
413 this.pdf.doc.roundedRect(x, y + 5, 10, 4, 1.5, 1.5, "FD");
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
414 this.pdf.doc.text(this.legend[1], x + 12, y + 8);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
415
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
416 this.pdf.doc.setDrawColor(this.$options.COLORS.REST[1]);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
417 this.pdf.doc.setFillColor(this.$options.COLORS.REST[1]);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
418 this.pdf.doc.roundedRect(x, y + 10, 10, 4, 1.5, 1.5, "FD");
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
419 this.pdf.doc.text(this.legend[2], x + 12, y + 13);
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
420
4013
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
421 this.pdf.doc.setDrawColor(this.$options.COLORS.REST[0]);
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
422 this.pdf.doc.setFillColor(this.$options.COLORS.REST[0]);
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
423 this.pdf.doc.roundedRect(x, y + 15, 10, 4, 1.5, 1.5, "FD");
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
424 this.pdf.doc.text(this.legend[3], x + 12, y + 18);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
425 } else {
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
426 this.pdf.doc.setTextColor(color);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
427 this.pdf.doc.setDrawColor(this.$options.COLORS.LDC);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
428 this.pdf.doc.setFillColor(this.$options.COLORS.LDC);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
429 this.pdf.doc.roundedRect(x, y, 10, 4, 1.5, 1.5, "FD");
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
430 this.pdf.doc.text(this.legend[0], x + 12, y + 3);
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
431
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
432 this.pdf.doc.setDrawColor(this.$options.COLORS.HIGHEST);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
433 this.pdf.doc.setFillColor(this.$options.COLORS.HIGHEST);
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
434 this.pdf.doc.roundedRect(x, y + 5, 10, 4, 1.5, 1.5, "FD");
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
435 this.pdf.doc.text(this.legend[1], x + 12, y + 8);
4013
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
436
4015
009e9400bef0 legend for print fixed
Thomas Junk <thomas.junk@intevation.de>
parents: 4014
diff changeset
437 this.pdf.doc.setDrawColor(this.$options.COLORS.REST[0]);
009e9400bef0 legend for print fixed
Thomas Junk <thomas.junk@intevation.de>
parents: 4014
diff changeset
438 this.pdf.doc.setFillColor(this.$options.COLORS.REST[0]);
4013
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
439 this.pdf.doc.roundedRect(x, y + 10, 10, 4, 1.5, 1.5, "FD");
e9ab7c53aa19 fix avail_fwd pdf coloring of labels
Thomas Junk <thomas.junk@intevation.de>
parents: 4011
diff changeset
440 this.pdf.doc.text(this.legend[2], x + 12, y + 13);
4011
44060b9027da available_fairway_depth: in case the limits are equal the middle label is omitted. and in print too
Thomas Junk <thomas.junk@intevation.de>
parents: 3992
diff changeset
441 }
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
442 },
3239
a7d44d1ae57d available_fairway_depth: legend
Thomas Junk <thomas.junk@intevation.de>
parents: 3235
diff changeset
443 legendStyle(index) {
4440
8c4126ff03e8 client:AvailableFairwayDepth: fix comparison
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4425
diff changeset
444 if (this.depthlimit1 === this.depthlimit2) {
4014
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
445 let result = [
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
446 `background-color: ${this.$options.COLORS.LDC};`,
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
447 `background-color: ${this.$options.COLORS.HIGHEST};`
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
448 ];
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
449 this.fwData[0].lowerLevels.forEach((e, i) => {
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
450 result.push(`background-color: ${this.$options.COLORS.REST[i]};`);
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
451 });
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
452 return result[index];
6036f8f76f76 fix legend
Thomas Junk <thomas.junk@intevation.de>
parents: 4013
diff changeset
453 }
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
454 return [
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
455 `background-color: ${this.$options.COLORS.LDC};`,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
456 `background-color: ${this.$options.COLORS.HIGHEST};`,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
457 `background-color: ${this.$options.COLORS.REST[1]};`,
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
458 `background-color: ${this.$options.COLORS.REST[0]};`
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
459 ][index];
3239
a7d44d1ae57d available_fairway_depth: legend
Thomas Junk <thomas.junk@intevation.de>
parents: 3235
diff changeset
460 },
3184
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
461 close() {
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
462 this.$store.commit("application/paneSetup", "DEFAULT");
1ba2a7d22fbb available_fairway_depth: display selected feature
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
463 },
4136
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
464 getPrintLayout(svgHeight, svgWidth) {
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
465 return {
4136
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
466 main: {
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
467 top: 0,
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
468 right: Math.floor(svgWidth * 0.025),
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
469 bottom: Math.floor(svgHeight * 0.17),
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
470 left: Math.floor(svgWidth * 0.025)
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
471 }
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
472 };
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
473 },
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
474 drawDiagram() {
4665
c47c8085cc7e client: translation: implement marking of diagram labels
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4598
diff changeset
475 d3.timeFormatDefaultLocale(localeDateString);
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
476 const elem = document.querySelector("#" + this.containerId);
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
477 const svgWidth = elem != null ? elem.clientWidth : 0;
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
478 const svgHeight = elem != null ? elem.clientHeight : 0;
4136
630b817d12b3 fairway_availability: offsets relative to svgheight and svgwidth
Thomas Junk <thomas.junk@intevation.de>
parents: 4024
diff changeset
479 const layout = this.getPrintLayout(svgHeight, svgWidth);
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
480 const dimensions = this.getDimensions({
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
481 svgHeight,
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
482 svgWidth,
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3939
diff changeset
483 ...layout
3235
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3216
diff changeset
484 });
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
485 d3.select(".diagram-container svg").remove();
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
486 this.renderTo({ element: ".diagram-container", dimensions });
3911
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
487 },
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
488 renderTo({ element, dimensions }) {
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
489 const diagram = d3
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
490 .select(element)
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
491 .append("svg")
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
492 .attr("width", "100%")
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
493 .attr("height", "100%");
e4e496ae7974 fairway_availability: rendering to offscreen element
Thomas Junk <thomas.junk@intevation.de>
parents: 3909
diff changeset
494 diagram.append("g");
4803
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
495 diagram
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
496 .append("g")
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
497 .append("rect")
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
498 .attr("width", "100%")
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
499 .attr("height", "100%")
b3f65cff13e8 client: FWD,FWDVsLNWL: implement image-export
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4677
diff changeset
500 .attr("fill", "#ffffff");
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
501 const yScale = d3
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3153
diff changeset
502 .scaleLinear()
3327
7ab8a176db92 available_fairway_depth: adjust scale according to selected timerange
Thomas Junk <thomas.junk@intevation.de>
parents: 3291
diff changeset
503 .domain(this.frequencyToRange)
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
504 .range([dimensions.mainHeight - 30, 0]);
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
505 this.drawScaleLabel({ diagram, dimensions });
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
506 this.drawScale({ diagram, dimensions, yScale });
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
507 this.drawBars({ diagram, yScale, dimensions });
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
508 this.drawTooltip(diagram);
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
509 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
510 drawTooltip(diagram) {
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
511 diagram
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
512 .append("text")
3874
7b6a74919051 client: available fairway depth diagram: rounding day numbers
Markus Kottlaender <markus@intevation.de>
parents: 3717
diff changeset
513 .text("")
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
514 .attr("font-size", "0.8em")
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
515 .attr("opacity", 0)
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
516 .attr("id", "tooltip");
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
517 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
518 drawBars({ diagram, yScale, dimensions }) {
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
519 const widthPerItem = Math.min(
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
520 (dimensions.width - this.scalePaddingLeft - this.scalePaddingRight) /
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
521 this.fwData.length,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
522 180
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
523 );
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
524 const spaceBetween = widthPerItem * 0.2;
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
525 const ldcOffset = widthPerItem * 0.1;
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
526 const everyBar = diagram
3877
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
527 .selectAll("g.bars")
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
528 .data(this.fwData)
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
529 .enter()
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
530 .append("g")
3877
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
531 .attr("class", "bars")
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
532 .attr("transform", (d, i) => {
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
533 const dx = this.scalePaddingLeft + i * widthPerItem;
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
534 return `translate(${dx})`;
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
535 });
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
536 this.drawSingleBars({
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
537 everyBar,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
538 yScale,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
539 dimensions,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
540 widthPerItem,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
541 spaceBetween,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
542 ldcOffset
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
543 });
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
544 this.drawLabelPerBar({ everyBar, dimensions, widthPerItem });
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
545 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
546 drawSingleBars({
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
547 everyBar,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
548 yScale,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
549 widthPerItem,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
550 spaceBetween,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
551 ldcOffset
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
552 }) {
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
553 this.drawLDC({ everyBar, yScale, widthPerItem, spaceBetween, ldcOffset });
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
554 this.drawHighestLevel({
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
555 everyBar,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
556 yScale,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
557 widthPerItem,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
558 spaceBetween,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
559 ldcOffset
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
560 });
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
561 this.drawLowerLevels({
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
562 everyBar,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
563 yScale,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
564 widthPerItem,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
565 spaceBetween,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
566 ldcOffset
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
567 });
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
568 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
569 drawLowerLevels({
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
570 everyBar,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
571 yScale,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
572 widthPerItem,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
573 spaceBetween,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
574 ldcOffset
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
575 }) {
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
576 everyBar
3877
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
577 .selectAll("g.bars")
3330
0e442b547f6d mocking fairway_availability
Thomas Junk <thomas.junk@intevation.de>
parents: 3327
diff changeset
578 .data(d => d.lowerLevels)
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
579 .enter()
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
580 .append("rect")
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
581 .on("mouseover", function() {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
582 d3.select(this).attr("opacity", "0.8");
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
583 d3.select("#tooltip").attr("opacity", 1);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
584 })
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
585 .on("mouseout", function() {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
586 d3.select(this).attr("opacity", 1);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
587 d3.select("#tooltip").attr("opacity", 0);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
588 })
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
589 .on("mousemove", function(d) {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
590 let y = d3.mouse(this)[1];
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
591 const dy = document
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
592 .querySelector(".diagram-container")
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
593 .getBoundingClientRect().left;
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
594 d3.select("#tooltip")
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
595 .text(d.height)
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
596 .attr("y", y - 10)
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
597 .attr("x", d3.event.pageX - dy);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
598 //d3.event.pageX gives coordinates relative to SVG
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
599 //dy gives offset of svg on page
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
600 })
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
601 .attr("y", d => 2 * yScale(0) - yScale(d.translateY) + this.paddingTop)
3128
1610d3042bbb fairway_availability: generative code fixed
Thomas Junk <thomas.junk@intevation.de>
parents: 3125
diff changeset
602 .attr("height", d => {
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
603 return yScale(0) - yScale(d.height);
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
604 })
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
605 .attr("x", ldcOffset + spaceBetween / 2)
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
606 .attr("width", widthPerItem - ldcOffset - spaceBetween)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
607 .attr("id", "lower")
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
608 .attr("fill", (d, i) => {
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
609 return this.$options.COLORS.REST[i];
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
610 });
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
611 if (this.showNumbers) {
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
612 everyBar
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
613 .selectAll("g.bars")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
614 .data(d => d.lowerLevels)
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
615 .enter()
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
616 .filter(d => d.height > 0)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
617 .insert("text")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
618 .attr("y", d => {
4335
2f212f520a04 client: (minor) beautify code format
Bernhard Reiter <bernhard@intevation.de>
parents: 4334
diff changeset
619 return (
2f212f520a04 client: (minor) beautify code format
Bernhard Reiter <bernhard@intevation.de>
parents: 4334
diff changeset
620 2 * yScale(0) -
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
621 yScale(d.translateY) +
4335
2f212f520a04 client: (minor) beautify code format
Bernhard Reiter <bernhard@intevation.de>
parents: 4334
diff changeset
622 this.paddingTop +
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
623 (yScale(0) - yScale(d.height)) +
4335
2f212f520a04 client: (minor) beautify code format
Bernhard Reiter <bernhard@intevation.de>
parents: 4334
diff changeset
624 (yScale(0) - yScale(1.9)) //instead o alignment-baseline hanging
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
625 );
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
626 })
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
627 .attr("x", widthPerItem / 2)
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
628 .text(d => d.height)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
629 // does not work with svg2pdf .attr("alignment-baseline", "hanging")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
630 .attr("text-anchor", "middle")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
631 .attr("font-size", "8")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
632 .attr("fill", "black");
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
633 }
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
634 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
635 fnheight({ name, yScale }) {
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
636 return d => yScale(0) - yScale(d[name]);
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
637 },
3914
9440d2922097 client: available fairwaydepth diagram: adjust width of ldc bar, draw 0-tick line as solid line
Markus Kottlaender <markus@intevation.de>
parents: 3911
diff changeset
638 drawLDC({ everyBar, yScale, widthPerItem, spaceBetween, ldcOffset }) {
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
639 const height = this.fnheight({ name: "ldc", yScale });
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
640 everyBar
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
641 .append("rect")
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
642 .on("mouseover", function() {
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
643 d3.select(this).attr("opacity", "0.7");
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
644 d3.select("#tooltip").attr("opacity", 1);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
645 })
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
646 .on("mouseout", function() {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
647 d3.select(this).attr("opacity", 1);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
648 d3.select("#tooltip").attr("opacity", 0);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
649 })
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
650 .on("mousemove", function(d) {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
651 let y = d3.mouse(this)[1];
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
652 const dy = document
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
653 .querySelector(".diagram-container")
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
654 .getBoundingClientRect().left;
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
655 d3.select("#tooltip")
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
656 .text(d.ldc)
3410
e5bc8f4924cb afd: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3408
diff changeset
657 .attr("y", y - 50)
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
658 .attr("x", d3.event.pageX - dy);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
659 //d3.event.pageX gives coordinates relative to SVG
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
660 //dy gives offset of svg on page
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
661 })
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
662 .attr("y", yScale(0))
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
663 .attr("height", height)
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
664 .attr("x", spaceBetween / 2)
3914
9440d2922097 client: available fairwaydepth diagram: adjust width of ldc bar, draw 0-tick line as solid line
Markus Kottlaender <markus@intevation.de>
parents: 3911
diff changeset
665 .attr("width", widthPerItem - ldcOffset - spaceBetween)
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
666 .attr(
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
667 "transform",
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
668 d => `translate(0 ${this.paddingTop + -1 * height(d)})`
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
669 )
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
670 .attr("fill", this.$options.COLORS.LDC)
3216
ee6a4e8af766 available_fairway_depth: legend POC
Thomas Junk <thomas.junk@intevation.de>
parents: 3213
diff changeset
671 .attr("id", "ldc");
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
672 if (this.showNumbers) {
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
673 everyBar
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
674 .filter(d => d.ldc > 0)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
675 .append("text")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
676 .attr("y", yScale(0.5)) // some distance from the bar
4335
2f212f520a04 client: (minor) beautify code format
Bernhard Reiter <bernhard@intevation.de>
parents: 4334
diff changeset
677 .attr("x", spaceBetween / 2)
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
678 .text(d => d.ldc)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
679 .attr("text-anchor", "left")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
680 .attr("font-size", "8")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
681 .attr(
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
682 "transform",
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
683 d => `translate(0 ${this.paddingTop + -1 * height(d)})`
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
684 )
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
685 .attr("fill", "black");
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
686 }
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
687 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
688 drawHighestLevel({
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
689 everyBar,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
690 yScale,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
691 widthPerItem,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
692 spaceBetween,
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
693 ldcOffset
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
694 }) {
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
695 const height = this.fnheight({ name: "highestLevel", yScale });
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
696 everyBar
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
697 .append("rect")
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
698 .on("mouseover", function() {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
699 d3.select(this).attr("opacity", "0.8");
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
700 d3.select("#tooltip").attr("opacity", 1);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
701 })
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
702 .on("mouseout", function() {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
703 d3.select(this).attr("opacity", 1);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
704 d3.select("#tooltip").attr("opacity", 0);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
705 })
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
706 .on("mousemove", function(d) {
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
707 let y = d3.mouse(this)[1];
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
708 const dy = document
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
709 .querySelector(".diagram-container")
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
710 .getBoundingClientRect().left;
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
711 d3.select("#tooltip")
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
712 .text(d.highestLevel)
3410
e5bc8f4924cb afd: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3408
diff changeset
713 .attr("y", y - 50)
3360
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
714 .attr("x", d3.event.pageX - dy);
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
715 //d3.event.pageX gives coordinates relative to SVG
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
716 //dy gives offset of svg on page
b2ccfebd5616 available_fairway_depth: tooltips
Thomas Junk <thomas.junk@intevation.de>
parents: 3349
diff changeset
717 })
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
718 .attr("y", yScale(0))
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
719 .attr("height", height)
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
720 .attr("x", ldcOffset + spaceBetween / 2)
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
721 .attr("width", widthPerItem - ldcOffset - spaceBetween)
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
722 .attr(
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
723 "transform",
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
724 d => `translate(0 ${this.paddingTop + -1 * height(d)})`
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
725 )
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
726 .attr("fill", this.$options.COLORS.HIGHEST);
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
727 if (this.showNumbers) {
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
728 everyBar
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
729 .filter(d => d.highestLevel > 0)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
730 .append("text")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
731 .attr("y", yScale(0.5)) // some distance from the bar
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
732 .attr("x", widthPerItem / 2)
4361
8a26225b6133 client: change AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4335
diff changeset
733 .text(d => d.highestLevel)
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
734 .attr("text-anchor", "middle")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
735 .attr("font-size", "8")
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
736 .attr(
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
737 "transform",
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
738 d => `translate(0 ${this.paddingTop + -1 * height(d)})`
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
739 )
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
740 .attr("fill", "black");
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
741 }
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
742 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
743 drawLabelPerBar({ everyBar, dimensions, widthPerItem }) {
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
744 everyBar
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
745 .append("text")
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
746 .text(d => d.label)
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
747 .attr("y", dimensions.mainHeight + this.paddingTop - 5)
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
748 .attr("x", widthPerItem / 2)
3717
eab5e934c37d client: available fairway depth diagram: decreased label font-size to avoid overlapping at least a little bit better
Markus Kottlaender <markus@intevation.de>
parents: 3716
diff changeset
749 .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
750 .attr("font-size", 10);
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
751 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
752 drawScaleLabel({ diagram, dimensions }) {
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
753 diagram
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
754 .append("text")
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
755 .text(this.$options.LEGEND)
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
756 .attr("text-anchor", "middle")
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
757 .attr("x", 0)
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
758 .attr("y", 0)
3903
7e519a11de4e client: available fairway depth diagram: adjusted position of y axis label
Markus Kottlaender <markus@intevation.de>
parents: 3891
diff changeset
759 .attr("dy", "20")
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
760 .attr(
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
761 "transform",
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
762 `translate(2, ${(dimensions.mainHeight + this.paddingTop) /
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
763 2}), rotate(-90)`
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
764 );
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
765 },
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
766 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
767 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
768 .axisLeft()
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
769 .tickSizeInner(
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
770 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
771 )
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
772 .tickSizeOuter(0)
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
773 .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
774 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
775 .axisRight()
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
776 .tickSizeInner(
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
777 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
778 )
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
779 .tickSizeOuter(0)
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
780 .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
781
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
782 diagram
3125
383720d8d98e fairway_availability: generative code for diagram added
Thomas Junk <thomas.junk@intevation.de>
parents: 3033
diff changeset
783 .append("g")
3876
0c6ef9e655fc client: available fairway depth diagrams: added second y-axis on the right
Markus Kottlaender <markus@intevation.de>
parents: 3874
diff changeset
784 .attr(
0c6ef9e655fc client: available fairway depth diagrams: added second y-axis on the right
Markus Kottlaender <markus@intevation.de>
parents: 3874
diff changeset
785 "transform",
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
786 `translate(${dimensions.width - this.scalePaddingRight} ${
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
787 this.paddingTop
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
788 })`
3876
0c6ef9e655fc client: available fairway depth diagrams: added second y-axis on the right
Markus Kottlaender <markus@intevation.de>
parents: 3874
diff changeset
789 )
3877
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
790 .call(yAxisLeft)
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
791 .selectAll(".tick text")
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
792 .attr("fill", "black")
3922
32b656e77e2f client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents: 3920
diff changeset
793 .attr("font-size", 10)
32b656e77e2f client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents: 3920
diff changeset
794 .attr("dy", 3)
3878
1ff97bb72a24 client: available fairway depth diagrams: made more space for tick labels
Markus Kottlaender <markus@intevation.de>
parents: 3877
diff changeset
795 .attr("dx", -3)
3267
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
796 .select(function() {
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
797 return this.parentNode;
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
798 })
b07b4cca5e34 client: diagram-template: implement pdf-template for fairway availability diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3239
diff changeset
799 .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
800 .attr("stroke-dasharray", 5)
3905
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
801 .attr("stroke", "#ccc")
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
802 .select(function() {
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
803 return this.parentNode;
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
804 })
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
805 .filter(d => d === 0)
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
806 .selectAll(".tick line")
3914
9440d2922097 client: available fairwaydepth diagram: adjust width of ldc bar, draw 0-tick line as solid line
Markus Kottlaender <markus@intevation.de>
parents: 3911
diff changeset
807 .attr("stroke-dasharray", "none")
3905
3c095749efb2 client: available fairwaydepth diagrams: emphasize 0-ticks
Markus Kottlaender <markus@intevation.de>
parents: 3903
diff changeset
808 .attr("stroke", "#333");
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
809 diagram
3877
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
810 .append("g")
3879
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
811 .attr(
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
812 "transform",
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
813 `translate(${this.scalePaddingLeft} ${this.paddingTop})`
20be498adaf7 client: available fairway depth diagram: use available space
Markus Kottlaender <markus@intevation.de>
parents: 3878
diff changeset
814 )
3877
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
815 .call(yAxisRight)
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
816 .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
817 .attr("fill", "black")
3922
32b656e77e2f client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents: 3920
diff changeset
818 .attr("font-size", 10)
32b656e77e2f client: fwa diagrams: better alignment of tick labels in pdf
Markus Kottlaender <markus@intevation.de>
parents: 3920
diff changeset
819 .attr("dy", 3)
3878
1ff97bb72a24 client: available fairway depth diagrams: made more space for tick labels
Markus Kottlaender <markus@intevation.de>
parents: 3877
diff changeset
820 .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
821 .select(function() {
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
822 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
823 })
d82b5e5868e3 client: available fairway depth diagrams: draw horizontal scale lines for better readability
Markus Kottlaender <markus@intevation.de>
parents: 3876
diff changeset
824 .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
825 .attr("stroke", "transparent");
3909
2e7f191bba27 available_fairwaydepth: factor out side-effects from diagram rendering
Thomas Junk <thomas.junk@intevation.de>
parents: 3905
diff changeset
826 diagram.selectAll(".domain").attr("stroke", "black");
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
827 }
3135
Thomas Junk <thomas.junk@intevation.de>
parents: 3134
diff changeset
828 },
3282
707d4435aff3 redraw diagram on change of data
Thomas Junk <thomas.junk@intevation.de>
parents: 3280
diff changeset
829 watch: {
707d4435aff3 redraw diagram on change of data
Thomas Junk <thomas.junk@intevation.de>
parents: 3280
diff changeset
830 fwData() {
4382
7d9376f8a28c Available_Fairway_Depth: decouple diagraminfo from selection
Thomas Junk <thomas.junk@intevation.de>
parents: 4361
diff changeset
831 this.initDiagramValues();
3282
707d4435aff3 redraw diagram on change of data
Thomas Junk <thomas.junk@intevation.de>
parents: 3280
diff changeset
832 this.drawDiagram();
4334
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
833 },
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
834 showNumbers() {
8ac59c8183e8 client: add showNumbers to AvailableFairwayDepth diagram
Bernhard Reiter <bernhard@intevation.de>
parents: 4319
diff changeset
835 this.drawDiagram();
3282
707d4435aff3 redraw diagram on change of data
Thomas Junk <thomas.junk@intevation.de>
parents: 3280
diff changeset
836 }
3992
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
837 },
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
838 LEGEND: app.$gettext("Sum of days"),
2f024d6189ca Reverted merge with diagram-cleanup -- its not yet ready.
Sascha Wilde <wilde@intevation.de>
parents: 3965
diff changeset
839 COLORS: {
4312
8926fc81e4de client: unify legend colors for fairway availability diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4136
diff changeset
840 LDC: "aqua",
8926fc81e4de client: unify legend colors for fairway availability diagrams
Fadi Abbud <fadi.abbud@intevation.de>
parents: 4136
diff changeset
841 HIGHEST: "blue",
4319
0d516bac1aae bottleneck fairway availability: minor layout adjustments
Thomas Junk <thomas.junk@intevation.de>
parents: 4312
diff changeset
842 REST: ["hotpink", "darksalmon", "#ffaaaa"]
3153
8159bd2aaf93 fairway_depth_diagram: display of mockdata
Thomas Junk <thomas.junk@intevation.de>
parents: 3135
diff changeset
843 }
3033
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
844 };
c2c1e3e3af1c Available fairway depth: rudimentary thoughts / prototype. Tbd;
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
845 </script>