Mercurial > gemma
annotate client/src/components/Pdftool.vue @ 2624:9dbaf69c7a66
Improve geoserver config to better calculate bounding boxes
* Disable the use of estimated extents for the postgis storage
configuration for geoserver, which is set via the gemma middleware.
This way we are able to get better bounding boxes for many layers
where the postgis function `ST_EstimatedExtent()` would be far off.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Wed, 13 Mar 2019 16:18:39 +0100 |
parents | 4d5f419a2318 |
children | 4dd38840d74b |
rev | line source |
---|---|
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
1 <template> |
1480 | 2 <div |
3 :class="[ | |
4 'box ui-element rounded bg-white text-nowrap', | |
5 { expanded: showPdfTool } | |
6 ]" | |
7 > | |
2260
531e776cb81d
client: reduced width of pdf-, profile- and identify-box
Markus Kottlaender <markus@intevation.de>
parents:
2259
diff
changeset
|
8 <div style="width: 18rem"> |
2387
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
9 <UIBoxHeader |
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
10 icon="file-pdf" |
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
11 title="Generate PDF" |
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
12 :closeCallback="close" |
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
13 /> |
2534
bb5286acfee2
client: reduced spacings between and inside boxes and more compact main menu
Markus Kottlaender <markus@intevation.de>
parents:
2387
diff
changeset
|
14 <div class="box-body"> |
2114 | 15 <select |
16 @change="applyTemplateToForm" | |
17 v-model="form.template" | |
18 class="form-control d-block mb-2 w-100 font-weight-bold" | |
19 > | |
2124 | 20 <option |
2257
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
21 v-for="template in templates" |
2214
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
22 :value="template" |
2124 | 23 :key="template.name" |
2114 | 24 > |
2124 | 25 <translate>{{ template.name }}</translate> |
26 </option> | |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
27 </select> |
2114 | 28 <select |
29 v-model="form.format" | |
30 class="form-control form-control-sm d-block mb-2 w-100" | |
31 > | |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
32 <option value="landscape"><translate>landscape</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
33 <option value="portrait"><translate>portrait</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
34 </select> |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
35 <div class="d-flex"> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
36 <div class="flex-fill mr-2"> |
2114 | 37 <select |
38 v-model="form.resolution" | |
39 class="form-control form-control-sm mb-2 d-block w-100" | |
40 > | |
2225
bc1780dd7cd1
PDF generation: changed option names in resolution select
Markus Kottlaender <markus@intevation.de>
parents:
2224
diff
changeset
|
41 <option value="80"><translate>80 dpi</translate></option> |
bc1780dd7cd1
PDF generation: changed option names in resolution select
Markus Kottlaender <markus@intevation.de>
parents:
2224
diff
changeset
|
42 <option value="120"><translate>120 dpi</translate></option> |
bc1780dd7cd1
PDF generation: changed option names in resolution select
Markus Kottlaender <markus@intevation.de>
parents:
2224
diff
changeset
|
43 <option value="200"><translate>200 dpi</translate></option> |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
44 </select> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
45 </div> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
46 <div class="flex-fill ml-2"> |
2114 | 47 <select |
48 v-model="form.paperSize" | |
49 class="form-control form-control-sm mb-2 d-block w-100" | |
50 > | |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
51 <option value="a4"><translate>A4</translate></option> |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
52 <option value="a3"><translate>A3</translate></option> |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
53 </select> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
54 </div> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
55 </div> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
56 <button |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
57 @click="download" |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
58 :key="'downloadBtn'" |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
59 type="button" |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
60 v-if="readyToGenerate" |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
61 class="btn btn-sm btn-info d-block w-100 mt-2" |
1480 | 62 > |
63 <translate>Generate PDF</translate> | |
64 </button> | |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
65 <button |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
66 @click="cancel" |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
67 :key="'cancelBtn'" |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
68 type="button" |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
69 v-else |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
70 class="btn btn-sm btn-danger d-block w-100 mt-2" |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
71 > |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
72 <font-awesome-icon class="mr-1" icon="spinner" spin /> |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
73 <translate>Cancel</translate> |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
74 </button> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
75 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
76 </div> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
77 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
78 </template> |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
79 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
80 <script> |
1362
ca33ad696594
remove the first empyty lines
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1361
diff
changeset
|
81 /* This is Free Software under GNU Affero General Public License v >= 3.0 |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
82 * without warranty, see README.md and license for details. |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
83 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
84 * SPDX-License-Identifier: AGPL-3.0-or-later |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
85 * License-Filename: LICENSES/AGPL-3.0.txt |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
86 * |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
87 * Copyright (C) 2018, 2019 by via donau |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
88 * – Österreichische Wasserstraßen-Gesellschaft mbH |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
89 * Software engineering by Intevation GmbH |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
90 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
91 * Author(s): |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
92 * * Markus Kottländer <markus.kottlaender@intevation.de> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
93 * * Bernhard E. Reiter <bernhard@intevation.de> |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
94 * * Fadi Abbud <fadi.abbud@intevation.de> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
95 */ |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
96 import { mapGetters, mapState } from "vuex"; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
97 import jsPDF from "jspdf"; |
2240
c3cc21dee75d
client: pdf-gen add multi-language font
Bernhard Reiter <bernhard@intevation.de>
parents:
2227
diff
changeset
|
98 import "@/lib/font-linbiolinum.js"; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
99 import { getPointResolution } from "ol/proj.js"; |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
100 import locale2 from "locale2"; |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
101 import { HTTP } from "../lib/http"; |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
102 import { displayError } from "@/lib/errors.js"; |
2321
c00e3f7f5b17
client: use constant names instead of strings
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2296
diff
changeset
|
103 import { LAYERS } from "@/store/map.js"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
104 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
105 var paperSizes = { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
106 // in millimeter, landscape [width, height] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
107 a3: [420, 297], |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
108 a4: [297, 210] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
109 }; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
110 |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
111 export default { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
112 name: "pdftool", |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
113 data() { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
114 return { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
115 form: { |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
116 template: null, |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
117 format: "landscape", |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
118 paperSize: "a4", |
1881
f512cfb63e53
pdf-generation: add select box to pdf tool to choose the resolutions
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1879
diff
changeset
|
119 downloadType: "download", |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
120 resolution: "80" |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
121 }, |
2265
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
122 templates: [ |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
123 { |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
124 name: "Default", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
125 properties: { |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
126 format: "landscape", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
127 paperSize: "a4", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
128 resolution: "80" |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
129 }, |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
130 elements: [ |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
131 { |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
132 type: "scalebar", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
133 position: "bottomright", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
134 offset: { x: 2, y: 2 } |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
135 }, |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
136 { |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
137 type: "textbox", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
138 position: "bottomleft", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
139 offset: { x: 2, y: 2 }, |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
140 width: 60, |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
141 fontSize: 8, |
2284
9f327f197ddd
client: translation: mark some strings for translations
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2275
diff
changeset
|
142 text: this.$gettext("Generated by") + " " + "{user}, {date}" |
2265
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
143 }, |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
144 { |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
145 type: "northarrow", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
146 position: "topright", |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
147 offset: { x: 6, y: 4 }, |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
148 size: 2 |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
149 } |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
150 ] |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
151 } |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
152 ], |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
153 templateData: null, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
154 pdf: { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
155 doc: null, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
156 width: null, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
157 height: null |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
158 }, |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
159 logoImageForPDF: null, // a HTMLImageElement instance |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
160 readyToGenerate: true, // if the user is allowed to press the button |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
161 rendercompleteListener: null, |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
162 mapSize: null, |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
163 mapExtent: null |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
164 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
165 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
166 computed: { |
2257
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
167 ...mapState("application", ["showPdfTool", "logoForPDF"]), |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
168 ...mapState("bottlenecks", ["selectedBottleneck", "selectedSurvey"]), |
1928
76ca071cb006
client: pdf-gen: add legend graphic
Bernhard Reiter <bernhard@intevation.de>
parents:
1914
diff
changeset
|
169 ...mapState("map", ["openLayersMap", "isolinesLegendImgDataURL"]), |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
170 ...mapGetters("map", ["getLayerByName"]), |
2376
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
171 ...mapState("user", ["user"]), |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
172 filename() { |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
173 let date = new Date() |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
174 .toISOString() |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
175 .slice(0, 10) |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
176 .replace(/-/g, ""); |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
177 let filename = "map"; |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
178 |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
179 if (this.selectedBottleneck) { |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
180 filename = this.selectedBottleneck; |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
181 if (this.selectedSurvey) { |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
182 filename += "-sr" + this.selectedSurvey.date_info.replace(/-/g, ""); |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
183 } |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
184 } |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
185 |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
186 filename = |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
187 filename |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
188 .replace(/[^\w-]/gi, "") // remove everything but wordchars and dash |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
189 .toLowerCase() + |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
190 "-exported" + |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
191 date + |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
192 ".pdf"; |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
193 |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
194 return filename; |
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
195 } |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
196 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
197 methods: { |
2387
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
198 close() { |
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
199 this.$store.commit("application/showPdfTool", false); |
f185503ef35a
client: unified box's header styles by creating a reusable component
Markus Kottlaender <markus@intevation.de>
parents:
2376
diff
changeset
|
200 }, |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
201 // When a template is chosen from the dropdown, its propoerties are |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
202 // applied to the rest of the form. |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
203 applyTemplateToForm() { |
2214
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
204 if (this.form.template) { |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
205 HTTP.get("/templates/print/" + this.form.template.name, { |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
206 headers: { |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
207 "X-Gemma-Auth": localStorage.getItem("token"), |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
208 "Content-type": "text/xml; charset=UTF-8" |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
209 } |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
210 }) |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
211 .then(response => { |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
212 this.templateData = response.data.template_data; |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
213 this.form.format = this.templateData.properties.format; |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
214 this.form.paperSize = this.templateData.properties.paperSize; |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
215 this.form.resolution = this.templateData.properties.resolution; |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
216 }) |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
217 .catch(e => { |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
218 const { status, data } = e.response; |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
219 displayError({ |
2284
9f327f197ddd
client: translation: mark some strings for translations
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2275
diff
changeset
|
220 title: this.$gettext("Backend Error"), |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
221 message: `${status}: ${data.message || data}` |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
222 }); |
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
223 }); |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
224 } |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
225 }, |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
226 download() { |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
227 // disable button while working on it |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
228 this.readyToGenerate = false; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
229 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
230 console.log( |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
231 "will generate pdf with", |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
232 this.form.paperSize, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
233 this.form.format, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
234 this.form.resolution |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
235 ); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
236 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
237 if (this.form.format !== "portrait") { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
238 // landscape, default |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
239 this.pdf.width = paperSizes[this.form.paperSize][0]; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
240 this.pdf.height = paperSizes[this.form.paperSize][1]; |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
241 } else { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
242 // switch width and height |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
243 this.pdf.width = paperSizes[this.form.paperSize][1]; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
244 this.pdf.height = paperSizes[this.form.paperSize][0]; |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
245 } |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
246 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
247 // FUTURE: consider margins |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
248 |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
249 // dots per mm = dots per inch / (25.4 mm/inch) |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
250 var pixelsPerMapMillimeter = this.form.resolution / 25.4; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
251 var mapSizeForPrint = [ |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
252 // in pixel |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
253 Math.round(this.pdf.width * pixelsPerMapMillimeter), |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
254 Math.round(this.pdf.height * pixelsPerMapMillimeter) |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
255 ]; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
256 |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
257 // generate PDF and open it |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
258 // our units are milimeters; width 0 x height 0 is left upper corner |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
259 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
260 // Step 1 prepare and save current map extend |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
261 // Then add callback "rendercomplete" for Step 3 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
262 // which will generate the pdf and resets the map view |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
263 // Step 2 which starts rendering a map with the necessary image size |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
264 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
265 var map = this.openLayersMap; |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
266 this.mapSize = map.getSize(); // size in pixels of the map in the DOM |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
267 // Calculate the extent for the current view state and the passed size. |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
268 // The size is the pixel dimensions of the box into which the calculated |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
269 // extent should fit. |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
270 this.mapExtent = map.getView().calculateExtent(this.mapSize); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
271 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
272 this.pdf.doc = new jsPDF(this.form.format, "mm", this.form.paperSize); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
273 // set a callback for after the next complete rendering of the map |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
274 this.rendercompleteListener = map.once("rendercomplete", event => { |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
275 let canvas = event.context.canvas; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
276 |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
277 // because we are using Web Mercator, a pixel represents |
2240
c3cc21dee75d
client: pdf-gen add multi-language font
Bernhard Reiter <bernhard@intevation.de>
parents:
2227
diff
changeset
|
278 // a differently sized spot depending on the place of the map. |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
279 // So we use a value calculated from the center of the current view. |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
280 let view = map.getView(); |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
281 let proj = view.getProjection(); |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
282 let metersPerPixel = // average meters (reality) per pixel (map) |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
283 getPointResolution(proj, view.getResolution(), view.getCenter()) * |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
284 proj.getMetersPerUnit(); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
285 // DEBUG console.log("metersPerPixel = ", metersPerPixel); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
286 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
287 let scaleNominator = Math.round( |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
288 // the x in 1:x map scale |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
289 1000 * pixelsPerMapMillimeter * metersPerPixel |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
290 ); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
291 console.log("scaleNominator = ", scaleNominator); |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
292 |
1886
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
293 var data = canvas.toDataURL("image/jpeg"); |
2227
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
294 this.pdf.doc.addImage( |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
295 data, |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
296 "JPEG", |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
297 0, |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
298 0, |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
299 this.pdf.width, |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
300 this.pdf.height |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
301 ); |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
302 |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
303 if (this.templateData) { |
2240
c3cc21dee75d
client: pdf-gen add multi-language font
Bernhard Reiter <bernhard@intevation.de>
parents:
2227
diff
changeset
|
304 this.pdf.doc.setFont("linbiolinum", "normal"); |
c3cc21dee75d
client: pdf-gen add multi-language font
Bernhard Reiter <bernhard@intevation.de>
parents:
2227
diff
changeset
|
305 let defaultFontSize = 11, |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
306 defaultRounding = 2, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
307 defaultTextColor = "black", |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
308 defaultBgColor = "white", |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
309 defaultPadding = 3, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
310 defaultOffset = { x: 0, y: 0 }; |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
311 this.templateData.elements.forEach(e => { |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
312 switch (e.type) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
313 case "text": { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
314 this.addText( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
315 e.position, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
316 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
317 e.width, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
318 e.fontSize || defaultFontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
319 e.color || defaultTextColor, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
320 e.text |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
321 ); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
322 break; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
323 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
324 case "box": { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
325 this.addBox( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
326 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
327 e.offset || defaultOffset, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
328 e.width, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
329 e.height, |
2561
4d5f419a2318
client:pdf-gen: improve box drawing
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2539
diff
changeset
|
330 // handling the case when the rectangle not rounded (rounding = 0) |
4d5f419a2318
client:pdf-gen: improve box drawing
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2539
diff
changeset
|
331 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
332 e.color || defaultBgColor |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
333 ); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
334 break; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
335 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
336 case "textbox": { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
337 this.addTextBox( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
338 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
339 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
340 e.width, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
341 e.height, |
2561
4d5f419a2318
client:pdf-gen: improve box drawing
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2539
diff
changeset
|
342 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
343 e.padding || defaultPadding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
344 e.fontSize || defaultFontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
345 e.color || defaultTextColor, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
346 e.background || defaultBgColor, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
347 e.text |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
348 ); |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
349 break; |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
350 } |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
351 case "image": { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
352 this.addImage( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
353 e.url, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
354 e.format, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
355 e.position, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
356 e.offset || defaultOffset, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
357 e.width, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
358 e.height |
2207
da902f0dac88
pdf-gen: add fixed coordinates and values
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2205
diff
changeset
|
359 ); |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
360 break; |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
361 } |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
362 case "bottleneck": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
363 this.addBottleneckInfo( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
364 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
365 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
366 e.rounding || defaultRounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
367 e.color || defaultTextColor |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
368 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
369 break; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
370 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
371 case "legend": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
372 this.addLegend( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
373 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
374 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
375 e.rounding || defaultRounding |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
376 ); |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
377 break; |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
378 } |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
379 case "scalebar": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
380 this.addScaleBar( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
381 scaleNominator, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
382 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
383 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
384 e.rounding || defaultRounding |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
385 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
386 break; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
387 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
388 case "northarrow": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
389 this.addNorthArrow( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
390 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
391 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
392 e.size |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
393 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
394 break; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
395 } |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
396 } |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
397 }); |
1928
76ca071cb006
client: pdf-gen: add legend graphic
Bernhard Reiter <bernhard@intevation.de>
parents:
1914
diff
changeset
|
398 |
2376
6efd7ecd3a7d
client: pdf-gen: generate more expressive filename
Markus Kottlaender <markus@intevation.de>
parents:
2325
diff
changeset
|
399 this.pdf.doc.save(this.filename); |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
400 } |
2265
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
401 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
402 // reset to original size |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
403 map.setSize(this.mapSize); |
2325
7bbf9ccda701
client: fix resetting of zoom level after pdf-gen
Bernhard Reiter <bernhard@intevation.de>
parents:
2321
diff
changeset
|
404 map.getView().fit(this.mapExtent, { |
7bbf9ccda701
client: fix resetting of zoom level after pdf-gen
Bernhard Reiter <bernhard@intevation.de>
parents:
2321
diff
changeset
|
405 size: this.mapSize, |
7bbf9ccda701
client: fix resetting of zoom level after pdf-gen
Bernhard Reiter <bernhard@intevation.de>
parents:
2321
diff
changeset
|
406 // necessary to get to the previous zoom level in all cases |
7bbf9ccda701
client: fix resetting of zoom level after pdf-gen
Bernhard Reiter <bernhard@intevation.de>
parents:
2321
diff
changeset
|
407 // details see https://github.com/openlayers/openlayers/issues/9235 |
7bbf9ccda701
client: fix resetting of zoom level after pdf-gen
Bernhard Reiter <bernhard@intevation.de>
parents:
2321
diff
changeset
|
408 constrainResolution: false |
7bbf9ccda701
client: fix resetting of zoom level after pdf-gen
Bernhard Reiter <bernhard@intevation.de>
parents:
2321
diff
changeset
|
409 }); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
410 |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
411 // as we are done: re-enable button |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
412 this.readyToGenerate = true; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
413 }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
414 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
415 // trigger rendering |
2227
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
416 map.setSize(mapSizeForPrint); |
2275
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
417 map.getView().fit(this.mapExtent, { size: mapSizeForPrint }); |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
418 }, |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
419 cancel() { |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
420 this.openLayersMap.un( |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
421 this.rendercompleteListener.type, |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
422 this.rendercompleteListener.listener |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
423 ); |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
424 this.openLayersMap.setSize(this.mapSize); |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
425 this.openLayersMap.getView().fit(this.mapExtent, { size: this.mapSize }); |
a6cfa06c5983
client: pdf-gen: added cancel button
Markus Kottlaender <markus@intevation.de>
parents:
2265
diff
changeset
|
426 this.readyToGenerate = true; |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
427 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
428 addRoundedBox(x, y, w, h, color, rounding) { |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
429 // draws a rounded background box at (x,y) width x height |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
430 // using jsPDF units |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
431 this.pdf.doc.setDrawColor(color); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
432 this.pdf.doc.setFillColor(color); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
433 this.pdf.doc.roundedRect(x, y, w, h, rounding, rounding, "FD"); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
434 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
435 // add some text at specific coordinates and determine how many wrolds in single line |
2288
3f9847c89491
client: pdf-gen: removed unused parameter
Markus Kottlaender <markus@intevation.de>
parents:
2284
diff
changeset
|
436 addText(position, offset, width, fontSize, color, text) { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
437 text = this.replacePlaceholders(text); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
438 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
439 // split the incoming string to an array, each element is a string of |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
440 // words in a single line |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
441 this.pdf.doc.setTextColor(color); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
442 this.pdf.doc.setFontSize(fontSize); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
443 var textLines = this.pdf.doc.splitTextToSize(text, width); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
444 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
445 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
446 let x = offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
447 let y = offset.y; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
448 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
449 // if position is on the right, x needs to be calculate with pdf width and |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
450 // the size of the element |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
451 if (["topright", "bottomright"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
452 x = this.pdf.width - offset.x - width; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
453 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
454 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
455 y = this.pdf.height - offset.y - this.getTextHeight(textLines.length); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
456 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
457 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
458 this.pdf.doc.text(textLines, x, y, { baseline: "hanging" }); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
459 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
460 addBox(position, offset, width, height, rounding, color) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
461 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
462 let x = offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
463 let y = offset.y; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
464 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
465 // if position is on the right, x needs to be calculate with pdf width and |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
466 // the size of the element |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
467 if (["topright", "bottomright"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
468 x = this.pdf.width - offset.x - width; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
469 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
470 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
471 y = this.pdf.height - offset.y - height; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
472 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
473 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
474 this.addRoundedBox(x, y, width, height, color, rounding); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
475 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
476 // add some text at specific coordinates with a background box |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
477 addTextBox( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
478 position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
479 offset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
480 width, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
481 height, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
482 rounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
483 padding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
484 fontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
485 color, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
486 background, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
487 text |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
488 ) { |
2296
da6611071a58
client: pdf-gen: fixed width calculation of textbox
Markus Kottlaender <markus@intevation.de>
parents:
2292
diff
changeset
|
489 this.pdf.doc.setFontSize(fontSize); |
da6611071a58
client: pdf-gen: fixed width calculation of textbox
Markus Kottlaender <markus@intevation.de>
parents:
2292
diff
changeset
|
490 text = this.replacePlaceholders(text); |
da6611071a58
client: pdf-gen: fixed width calculation of textbox
Markus Kottlaender <markus@intevation.de>
parents:
2292
diff
changeset
|
491 |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
492 if (!width) { |
2296
da6611071a58
client: pdf-gen: fixed width calculation of textbox
Markus Kottlaender <markus@intevation.de>
parents:
2292
diff
changeset
|
493 width = this.pdf.doc.getTextWidth(text) + 2 * padding; |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
494 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
495 let textWidth = width - 2 * padding; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
496 if (!height) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
497 let textLines = this.pdf.doc.splitTextToSize(text, textWidth); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
498 height = this.getTextHeight(textLines.length) + 2 * padding; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
499 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
500 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
501 this.addBox(position, offset, width, height, rounding, background); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
502 this.addText( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
503 position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
504 { x: offset.x + padding, y: offset.y + padding }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
505 textWidth, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
506 fontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
507 color, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
508 text |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
509 ); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
510 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
511 addImage(url, format, position, offset, width, height) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
512 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
513 let x = offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
514 let y = offset.y; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
515 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
516 // if position is on the right, x needs to be calculate with pdf width and |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
517 // the size of the element |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
518 if (["topright", "bottomright"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
519 x = this.pdf.width - offset.x - width; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
520 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
521 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
522 y = this.pdf.height - offset.y - height; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
523 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
524 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
525 let image = new Image(); |
2227
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
526 if (url) { |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
527 image.src = url; |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
528 } else { |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
529 if (this.logoForPDF) { |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
530 image.src = this.logoForPDF; |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
531 } else { |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
532 image.src = "/img/gemma-logo-for-pdf.png"; |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
533 } |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
534 } |
9b545e470b94
PDF generation: logo image, adjusted templates
Markus Kottlaender <markus@intevation.de>
parents:
2226
diff
changeset
|
535 |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
536 this.pdf.doc.addImage(image, x, y, width, height); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
537 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
538 addScaleBar(scaleNominator, position, offset, rounding) { |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
539 // scaleNominator is the x in 1:x of the map scale |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
540 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
541 // hardcode maximal width for now |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
542 let maxWidth = 80; // in mm |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
543 |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
544 // reduce width until we'll find a nice number for printing |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
545 // strategy: |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
546 // 1. check which unit prefix we shall use to get [10:10000[ |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
547 // 2. using a mapping for the leading digit to get [1:10[ |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
548 // 3. select a smaller number which is nicely dividable |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
549 // 4. scale up again to get length in paper mm and to be shown |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
550 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
551 // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10#Polyfill |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
552 let log10 = |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
553 Math.log10 || // more precise, but unsupported by IE |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
554 function(x) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
555 return Math.log(x) * Math.LOG10E; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
556 }; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
557 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
558 let maxLength = maxWidth * scaleNominator; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
559 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
560 let unit = "mm"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
561 let unitConversionFactor = 1; |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
562 if (maxLength >= 1e7) { |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
563 // >= 10 km |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
564 unit = "km"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
565 unitConversionFactor = 1e6; |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
566 } else if (maxLength >= 1e4) { |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
567 // >= 10 m |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
568 unit = "m"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
569 unitConversionFactor = 1e3; |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
570 } |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
571 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
572 maxLength /= unitConversionFactor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
573 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
574 // DEBUG console.log(maxLength, unit); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
575 let unroundedLength = maxLength; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
576 let numberOfDigits = Math.floor(log10(unroundedLength)); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
577 let factor = Math.pow(10, numberOfDigits); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
578 let mapped = unroundedLength / factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
579 // DEBUG console.log(mapped); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
580 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
581 var length = Math.floor(maxLength); // just to have an upper limit |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
582 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
583 // manually only use numbers that are very nice to devide by 4 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
584 // note that this is taken into account for rounding later |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
585 if (mapped > 8) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
586 length = 8 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
587 } else if (mapped > 4) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
588 length = 4 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
589 } else if (mapped > 2) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
590 length = 2 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
591 } else { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
592 length = factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
593 } |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
594 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
595 let size = (length * unitConversionFactor) / scaleNominator / 4; |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
596 let fullSize = size * 4; |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
597 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
598 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
599 let x = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
600 let y = offset.y; |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
601 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
602 // if position is on the right, x needs to be calculate with pdf width and |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
603 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
604 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
605 x = this.pdf.width - offset.x - fullSize - 8; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
606 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
607 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
608 y = this.pdf.height - offset.y - 10; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
609 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
610 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
611 // to give the outer white box 4mm padding |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
612 let scaleBarX = x + 4; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
613 let scaleBarY = y + 5; // 5 because above the scalebar will be the numbers |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
614 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
615 // draw outer white box |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
616 this.addRoundedBox(x, y, fullSize + 8, 10, "white", rounding); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
617 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
618 // draw first part of scalebar |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
619 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
620 this.pdf.doc.setFillColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
621 this.pdf.doc.rect(scaleBarX, scaleBarY, size, 1, "FD"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
622 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
623 // draw second part of scalebar |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
624 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
625 this.pdf.doc.setFillColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
626 this.pdf.doc.rect(scaleBarX + size, scaleBarY, size, 1, "FD"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
627 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
628 // draw third part of scalebar |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
629 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
630 this.pdf.doc.setFillColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
631 this.pdf.doc.rect(scaleBarX + size * 2, scaleBarY, size * 2, 1, "FD"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
632 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
633 // draw numeric labels above scalebar |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
634 this.pdf.doc.setTextColor("black"); |
2240
c3cc21dee75d
client: pdf-gen add multi-language font
Bernhard Reiter <bernhard@intevation.de>
parents:
2227
diff
changeset
|
635 this.pdf.doc.setFontSize(6); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
636 this.pdf.doc.text(scaleBarX, scaleBarY - 1, "0"); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
637 // /4 and could give 2.5. We still round, because of floating point arith |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
638 this.pdf.doc.text( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
639 scaleBarX + size - 1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
640 scaleBarY - 1, |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
641 (Math.round((length * 10) / 4) / 10).toString() |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
642 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
643 this.pdf.doc.text( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
644 scaleBarX + size * 2 - 2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
645 scaleBarY - 1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
646 Math.round(length / 2).toString() |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
647 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
648 this.pdf.doc.text( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
649 scaleBarX + size * 4 - 4, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
650 scaleBarY - 1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
651 Math.round(length).toString() + " " + unit |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
652 ); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
653 }, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
654 addNorthArrow(position, offset, size) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
655 // TODO: fix positioning |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
656 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
657 let x1 = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
658 let y1 = offset.y; |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
659 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
660 // if position is on the right, x needs to be calculate with pdf width and |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
661 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
662 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
663 x1 = this.pdf.width - offset.x - size; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
664 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
665 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
666 y1 = this.pdf.height - offset.y - size; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
667 } |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
668 |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
669 var y2 = y1 + size * 3; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
670 var x3 = x1 - size * 2; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
671 var y3 = y1 + size * 5; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
672 var x4 = x1 + size * 2; |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
673 // white triangle |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
674 this.pdf.doc.setFillColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
675 this.pdf.doc.setDrawColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
676 this.pdf.doc.triangle( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
677 x3 - 0.8, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
678 y3 + 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
679 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
680 y1 - 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
681 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
682 y2 + 0.6, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
683 "F" |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
684 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
685 this.pdf.doc.triangle( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
686 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
687 y1 - 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
688 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
689 y2 + 0.6, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
690 x4 + 0.8, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
691 y3 + 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
692 "F" |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
693 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
694 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
695 // north arrow |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
696 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
697 this.pdf.doc.setFillColor(255, 255, 255); |
2539
ad2a1d02ad1c
client:pdf-gen: improve north arrow drawing
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2534
diff
changeset
|
698 this.pdf.doc.triangle(x3, y3, x1 - 0.1, y1 + 0.2, x1 - 0.1, y2, "FD"); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
699 this.pdf.doc.setFillColor(0, 0, 0); |
2539
ad2a1d02ad1c
client:pdf-gen: improve north arrow drawing
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2534
diff
changeset
|
700 this.pdf.doc.triangle(x1 + 0.1, y1 + 0.2, x1 + 0.1, y2, x4, y3, "FD"); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
701 this.pdf.doc.setFontSize(size * 3.1); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
702 this.pdf.doc.setTextColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
703 this.pdf.doc.setFontStyle("bold"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
704 this.pdf.doc.text(size < 3 ? x1 - 0.5 : x1 - 1.3, y3 + 1, "N"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
705 this.pdf.doc.setFontSize(size * 3); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
706 this.pdf.doc.setTextColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
707 this.pdf.doc.setFontStyle("normal"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
708 this.pdf.doc.text(size < 3 ? x1 - 0.5 : x1 - 1.3, y3 + 1, "N"); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
709 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
710 addLegend(position, offset, rounding) { |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
711 if ( |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
712 this.selectedBottleneck && |
2259
7e378b38d302
client: pdf-gen: made selectedSurvey mandatory for displaying the bottleneck info box and iso line legend.
Markus Kottlaender <markus@intevation.de>
parents:
2258
diff
changeset
|
713 this.selectedSurvey && |
2321
c00e3f7f5b17
client: use constant names instead of strings
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2296
diff
changeset
|
714 this.getLayerByName(LAYERS.BOTTLENECKISOLINE).isVisible |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
715 ) { |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
716 // transforming into an HTMLImageElement only to find out |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
717 // the width x height of the legend image |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
718 // FUTURE: find a better way to get the width and height |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
719 let legendImage = new Image(); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
720 legendImage.src = this.isolinesLegendImgDataURL; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
721 let aspectRatio = legendImage.width / legendImage.height; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
722 let width = 54; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
723 let height = width / aspectRatio; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
724 let padding = 2; |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
725 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
726 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
727 let x = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
728 let y = offset.y; |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
729 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
730 // if position is on the right, x needs to be calculate with pdf width and |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
731 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
732 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
733 x = this.pdf.width - offset.x - width; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
734 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
735 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
736 y = this.pdf.height - offset.y - height; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
737 } |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
738 |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
739 this.addRoundedBox(x, y, width, height, "white", rounding); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
740 this.pdf.doc.addImage( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
741 legendImage, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
742 x + padding, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
743 y + padding, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
744 width - 2 * padding, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
745 height - 2 * padding |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
746 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
747 } |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
748 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
749 addBottleneckInfo(position, offset, rounding, color) { |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
750 if ( |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
751 this.selectedBottleneck && |
2259
7e378b38d302
client: pdf-gen: made selectedSurvey mandatory for displaying the bottleneck info box and iso line legend.
Markus Kottlaender <markus@intevation.de>
parents:
2258
diff
changeset
|
752 this.selectedSurvey && |
2321
c00e3f7f5b17
client: use constant names instead of strings
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2296
diff
changeset
|
753 this.getLayerByName(LAYERS.BOTTLENECKISOLINE).isVisible |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
754 ) { |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
755 let survey = this.selectedSurvey; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
756 |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
757 // determine text dimensions |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
758 // this is a little bit cumbersome but we need to separate width |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
759 // calculations and writing |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
760 this.pdf.doc.setFontSize(10); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
761 this.pdf.doc.setTextColor(color); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
762 let textOptions = { baseline: "hanging" }; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
763 let str1_1 = this.$gettext("Bottleneck") + ": "; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
764 let str1_2 = this.selectedBottleneck; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
765 let str2_1 = this.$gettext("Survey date") + ": "; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
766 let str2_2 = survey.date_info; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
767 let str3_1 = this.$gettext("Ref gauge") + ": "; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
768 let str3_2 = survey.gauge_objname; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
769 let str4_1 = this.$gettext("Depth relativ to") + ": "; |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
770 let str4_2 = |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
771 survey.depth_reference + |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
772 " = " + |
2291
60af456d01f0
client:pdf-gen:(minor) fix bottleneckinfo function
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2288
diff
changeset
|
773 (survey.hasOwnProperty("waterlevel_value") |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
774 ? survey.waterlevel_value + " cm" |
2291
60af456d01f0
client:pdf-gen:(minor) fix bottleneckinfo function
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2288
diff
changeset
|
775 : "?"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
776 |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
777 this.pdf.doc.setFontStyle("italic"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
778 let w1_1 = this.pdf.doc.getTextWidth(str1_1); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
779 this.pdf.doc.setFontStyle("bold"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
780 let w1_2 = this.pdf.doc.getTextWidth(str1_2); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
781 this.pdf.doc.setFontStyle("italic"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
782 let w2_1 = this.pdf.doc.getTextWidth(str2_1); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
783 this.pdf.doc.setFontStyle("normal"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
784 let w2_2 = this.pdf.doc.getTextWidth(str2_2); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
785 this.pdf.doc.setFontStyle("italic"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
786 let w3_1 = this.pdf.doc.getTextWidth(str3_1); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
787 this.pdf.doc.setFontStyle("normal"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
788 let w3_2 = this.pdf.doc.getTextWidth(str3_2); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
789 this.pdf.doc.setFontStyle("italic"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
790 let w4_1 = this.pdf.doc.getTextWidth(str4_1); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
791 this.pdf.doc.setFontStyle("normal"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
792 let w4_2 = this.pdf.doc.getTextWidth(str4_2); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
793 |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
794 let height = 21; |
2240
c3cc21dee75d
client: pdf-gen add multi-language font
Bernhard Reiter <bernhard@intevation.de>
parents:
2227
diff
changeset
|
795 let padding = 3; |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
796 let width = |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
797 Math.max(w1_1 + w1_2, w2_1 + w2_2, w3_1 + w3_2, w4_1 + w4_2) + |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
798 2 * padding; |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
799 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
800 // x/y defaults to offset for topleft corner (normal x/y coordinates) |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
801 let x = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
802 let y = offset.y; |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
803 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
804 // if position is on the right, x needs to be calculate with pdf width and |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
805 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
806 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
807 x = this.pdf.width - offset.x - width; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
808 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
809 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
810 y = this.pdf.height - offset.y - height; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
811 } |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
812 |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
813 // white background box |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
814 this.addRoundedBox(x, y, width, height, "white", rounding); |
2138
4a903d382901
client: pdf-gen: make bottleneck infos more fancy
Bernhard Reiter <bernhard@intevation.de>
parents:
2137
diff
changeset
|
815 |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
816 // bottleneck |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
817 this.pdf.doc.setFontStyle("italic"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
818 this.pdf.doc.text(x + padding, y + padding, str1_1, textOptions); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
819 this.pdf.doc.setFontStyle("bold"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
820 this.pdf.doc.text(x + padding + w1_1, y + padding, str1_2, textOptions); |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
821 |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
822 // survey date |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
823 this.pdf.doc.setFontStyle("italic"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
824 this.pdf.doc.text(x + padding, y + padding + 4, str2_1, textOptions); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
825 this.pdf.doc.setFontStyle("normal"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
826 this.pdf.doc.text( |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
827 x + padding + w2_1, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
828 y + padding + 4, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
829 str2_2, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
830 textOptions |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
831 ); |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
832 |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
833 // ref gauge |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
834 this.pdf.doc.setFontStyle("italic"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
835 this.pdf.doc.text(x + padding, y + padding + 8, str3_1, textOptions); |
2247
e6fba449aa3c
merged pdf-export in default
Markus Kottlaender <markus@intevation.de>
parents:
2240
diff
changeset
|
836 this.pdf.doc.setFontStyle("normal"); |
2258
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
837 this.pdf.doc.text( |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
838 x + padding + w3_1, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
839 y + padding + 8, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
840 str3_2, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
841 textOptions |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
842 ); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
843 |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
844 // depth relative to |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
845 this.pdf.doc.setFontStyle("italic"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
846 this.pdf.doc.text(x + padding, y + padding + 12, str4_1, textOptions); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
847 this.pdf.doc.setFontStyle("normal"); |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
848 this.pdf.doc.text( |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
849 x + padding + w4_1, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
850 y + padding + 12, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
851 str4_2, |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
852 textOptions |
24cafd6b1a55
client: pdf-gen: width of bottleneck info box is calculated based on its content now
Markus Kottlaender <markus@intevation.de>
parents:
2257
diff
changeset
|
853 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
854 } |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
855 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
856 replacePlaceholders(text) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
857 if (text.includes("{date}")) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
858 text = text.replace("{date}", new Date().toLocaleString(locale2)); |
2167
40f26fbc505f
client: pdf-gen: add reference_water_level to details
Bernhard Reiter <bernhard@intevation.de>
parents:
2154
diff
changeset
|
859 } |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
860 if (text.includes("{user}")) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
861 text = text.replace("{user}", this.user); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
862 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
863 return text; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
864 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
865 getTextHeight(numberOfLines) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
866 return ( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
867 numberOfLines * |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
868 ((this.pdf.doc.getFontSize() * 25.4) / parseInt(this.form.resolution)) * |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
869 this.pdf.doc.getLineHeightFactor() |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
870 ); |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
871 } |
2212
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
872 }, |
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
873 mounted() { |
2265
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
874 this.form.template = this.templates[0]; |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
875 this.templateData = this.form.template; |
2257
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
876 HTTP.get("/templates/print", { |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
877 headers: { |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
878 "X-Gemma-Auth": localStorage.getItem("token"), |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
879 "Content-type": "text/xml; charset=UTF-8" |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
880 } |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
881 }) |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
882 .then(response => { |
2265
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
883 if (response.data.length) { |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
884 this.templates = response.data; |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
885 this.form.template = this.templates[0]; |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
886 this.applyTemplateToForm(); |
940ae7c20326
client: pdf-gen: use default template when backend does not provide any
Markus Kottlaender <markus@intevation.de>
parents:
2260
diff
changeset
|
887 } |
2257
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
888 }) |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
889 .catch(e => { |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
890 const { status, data } = e.response; |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
891 displayError({ |
2284
9f327f197ddd
client: translation: mark some strings for translations
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2275
diff
changeset
|
892 title: this.$gettext("Backend Error"), |
2257
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
893 message: `${status}: ${data.message || data}` |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
894 }); |
ce6fd3d4a3a2
client: pdf-gen: moved template handling from store to components
Markus Kottlaender <markus@intevation.de>
parents:
2247
diff
changeset
|
895 }); |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
896 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
897 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
898 </script> |