Mercurial > gemma
annotate client/src/components/Pdftool.vue @ 2224:5176ea7fbc53 pdf-export
merge default in pdf-branch
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Tue, 12 Feb 2019 11:11:32 +0100 |
parents | 85142493096c 40f26fbc505f |
children | bc1780dd7cd1 |
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 > | |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
8 <div style="width: 20rem"> |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
9 <h6 class="mb-0 py-2 px-3 border-bottom d-flex align-items-center"> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
10 <font-awesome-icon icon="file-pdf" class="mr-2"></font-awesome-icon> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
11 <translate>Generate PDF</translate> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
12 <font-awesome-icon |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
13 icon="times" |
2154
a08e0f532304
staging: improve UI
Thomas Junk <thomas.junk@intevation.de>
parents:
2138
diff
changeset
|
14 class="ml-auto text-muted pointer" |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
15 @click="$store.commit('application/showPdfTool', false)" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
16 ></font-awesome-icon> |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
17 </h6> |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
18 <div class="p-3 text-left"> |
2114 | 19 <select |
20 @change="applyTemplateToForm" | |
21 v-model="form.template" | |
22 class="form-control d-block mb-2 w-100 font-weight-bold" | |
23 > | |
2124 | 24 <option |
2212
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
25 v-for="template in pdfTemplates" |
2214
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
26 :value="template" |
2124 | 27 :key="template.name" |
2114 | 28 > |
2124 | 29 <translate>{{ template.name }}</translate> |
30 </option> | |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
31 </select> |
2114 | 32 <select |
33 v-model="form.format" | |
34 class="form-control form-control-sm d-block mb-2 w-100" | |
35 > | |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
36 <option value="landscape"><translate>landscape</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
37 <option value="portrait"><translate>portrait</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
38 </select> |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
39 <div class="d-flex"> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
40 <div class="flex-fill mr-2"> |
2114 | 41 <select |
42 v-model="form.resolution" | |
43 class="form-control form-control-sm mb-2 d-block w-100" | |
44 > | |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
45 <option value="80">80 dpi</option> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
46 <option value="120">120 dpi</option> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
47 <option value="200">200 dpi</option> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
48 </select> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
49 </div> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
50 <div class="flex-fill ml-2"> |
2114 | 51 <select |
52 v-model="form.paperSize" | |
53 class="form-control form-control-sm mb-2 d-block w-100" | |
54 > | |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
55 <option value="a4"><translate>A4</translate></option> |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
56 <option value="a3"><translate>A3</translate></option> |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
57 </select> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
58 </div> |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
59 </div> |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
60 <!-- |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
61 <small class="d-block my-2"> |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
62 <input |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
63 type="radio" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
64 id="pdfexport-downloadtype-download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
65 value="download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
66 v-model="form.downloadType" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
67 selected |
1480 | 68 /> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
69 <label for="pdfexport-downloadtype-download" class="ml-1 mr-2"> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
70 <translate>Download</translate> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
71 </label> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
72 <input |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
73 type="radio" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
74 id="pdfexport-downloadtype-open" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
75 value="open" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
76 v-model="form.downloadType" |
1480 | 77 /> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
78 <label for="pdfexport-downloadtype-open" class="ml-1"> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
79 <translate>Open in new window</translate> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
80 </label> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
81 </small> |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
82 --> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
83 <button |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
84 @click="download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
85 type="button" |
2111
dd4e1f5f66b8
shortened vue binding syntax
Markus Kottlaender <markus@intevation.de>
parents:
2080
diff
changeset
|
86 :disabled="!readyToGenerate" |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
87 class="btn btn-sm btn-info d-block w-100 mt-2" |
1480 | 88 > |
89 <translate>Generate PDF</translate> | |
90 </button> | |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
91 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
92 </div> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
93 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
94 </template> |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
95 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
96 <script> |
1362
ca33ad696594
remove the first empyty lines
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1361
diff
changeset
|
97 /* 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
|
98 * 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
|
99 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
100 * SPDX-License-Identifier: AGPL-3.0-or-later |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
101 * 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
|
102 * |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
103 * Copyright (C) 2018, 2019 by via donau |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
104 * – Österreichische Wasserstraßen-Gesellschaft mbH |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
105 * 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
|
106 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
107 * Author(s): |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
108 * * Markus Kottländer <markus.kottlaender@intevation.de> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
109 * * Bernhard E. Reiter <bernhard@intevation.de> |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
110 * * Fadi Abbud <fadi.abbud@intevation.de> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
111 */ |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
112 import { mapGetters, mapState } from "vuex"; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
113 import jsPDF from "jspdf"; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
114 import { getPointResolution } from "ol/proj.js"; |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
115 import locale2 from "locale2"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
116 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
117 var paperSizes = { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
118 // in millimeter, landscape [width, height] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
119 a3: [420, 297], |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
120 a4: [297, 210] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
121 }; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
122 |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
123 export default { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
124 name: "pdftool", |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
125 data() { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
126 return { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
127 form: { |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
128 template: null, |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
129 format: "landscape", |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
130 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
|
131 downloadType: "download", |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
132 resolution: "80" |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
133 }, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
134 pdf: { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
135 doc: null, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
136 width: null, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
137 height: null |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
138 }, |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
139 logoImageForPDF: null, // a HTMLImageElement instance |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
140 readyToGenerate: true // if the user is allowed to press the button |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
141 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
142 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
143 computed: { |
2212
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
144 ...mapState("application", ["showPdfTool", "logoForPDF", "pdfTemplates"]), |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
145 ...mapState("bottlenecks", ["selectedBottleneck", "selectedSurvey"]), |
1928
76ca071cb006
client: pdf-gen: add legend graphic
Bernhard Reiter <bernhard@intevation.de>
parents:
1914
diff
changeset
|
146 ...mapState("map", ["openLayersMap", "isolinesLegendImgDataURL"]), |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
147 ...mapGetters("map", ["getLayerByName"]), |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
148 ...mapState("user", ["user"]) |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
149 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
150 methods: { |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
151 // 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
|
152 // applied to the rest of the form. |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
153 applyTemplateToForm() { |
2214
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
154 if (this.form.template) { |
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
155 this.form.format = this.form.template.properties.format; |
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
156 this.form.paperSize = this.form.template.properties.paperSize; |
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
157 this.form.resolution = this.form.template.properties.resolution; |
2112
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
158 } |
8c0a0f237c2d
improved behavior of pdf generation form
Markus Kottlaender <markus@intevation.de>
parents:
2111
diff
changeset
|
159 }, |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
160 download() { |
2214
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
161 let template = this.form.template; |
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
162 |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
163 // 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
|
164 this.readyToGenerate = false; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
165 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
166 console.log( |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
167 "will generate pdf with", |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
168 this.form.paperSize, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
169 this.form.format, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
170 this.form.resolution |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
171 ); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
172 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
173 if (this.form.format !== "portrait") { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
174 // landscape, default |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
175 this.pdf.width = paperSizes[this.form.paperSize][0]; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
176 this.pdf.height = paperSizes[this.form.paperSize][1]; |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
177 } else { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
178 // switch width and height |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
179 this.pdf.width = paperSizes[this.form.paperSize][1]; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
180 this.pdf.height = paperSizes[this.form.paperSize][0]; |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
181 } |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
182 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
183 // FUTURE: consider margins |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
184 |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
185 // 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
|
186 var pixelsPerMapMillimeter = this.form.resolution / 25.4; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
187 var mapSizeForPrint = [ |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
188 // in pixel |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
189 Math.round(this.pdf.width * pixelsPerMapMillimeter), |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
190 Math.round(this.pdf.height * pixelsPerMapMillimeter) |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
191 ]; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
192 |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
193 // generate PDF and open it |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
194 // 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
|
195 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
196 // Step 1 prepare and save current map extend |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
197 // Then add callback "rendercomplete" for Step 3 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
198 // 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
|
199 // 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
|
200 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
201 var map = this.openLayersMap; |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
202 var mapSize = map.getSize(); // size in pixels of the map in the DOM |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
203 // 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
|
204 // 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
|
205 // extent should fit. |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
206 var mapExtent = map.getView().calculateExtent(mapSize); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
207 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
208 this.pdf.doc = new jsPDF(this.form.format, "mm", this.form.paperSize); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
209 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
210 // set a callback for after the next complete rendering of the map |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
211 map.once("rendercomplete", event => { |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
212 let canvas = event.context.canvas; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
213 |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
214 // because we are using Web Mercator, a pixel represents |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
215 // a differently sizes spot depending on the place of the map. |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
216 // 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
|
217 let view = map.getView(); |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
218 let proj = view.getProjection(); |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
219 let metersPerPixel = // average meters (reality) per pixel (map) |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
220 getPointResolution(proj, view.getResolution(), view.getCenter()) * |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
221 proj.getMetersPerUnit(); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
222 // DEBUG console.log("metersPerPixel = ", metersPerPixel); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
223 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
224 let scaleNominator = Math.round( |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
225 // 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
|
226 1000 * pixelsPerMapMillimeter * metersPerPixel |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
227 ); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
228 console.log("scaleNominator = ", scaleNominator); |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
229 |
1886
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
230 var data = canvas.toDataURL("image/jpeg"); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
231 this.pdf.doc.addImage(data, "JPEG", 0, 0); |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
232 |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
233 if (template) { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
234 let defaultFontSize = 10, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
235 defaultRounding = 0, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
236 defaultTextColor = "black", |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
237 defaultBgColor = "white", |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
238 defaultPadding = 3, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
239 defaultOffset = { x: 0, y: 0 }; |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
240 template.elements.forEach(e => { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
241 switch (e.type) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
242 case "text": { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
243 this.addText( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
244 e.position, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
245 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
246 e.width, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
247 e.rounding || defaultRounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
248 e.fontSize || defaultFontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
249 e.color || defaultTextColor, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
250 e.text |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
251 ); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
252 break; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
253 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
254 case "box": { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
255 this.addBox( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
256 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
257 e.offset || defaultOffset, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
258 e.width, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
259 e.height, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
260 e.rounding || defaultRounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
261 e.color || defaultBgColor |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
262 ); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
263 break; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
264 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
265 case "textbox": { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
266 this.addTextBox( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
267 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
268 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
269 e.width, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
270 e.height, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
271 e.rounding || defaultRounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
272 e.padding || defaultPadding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
273 e.fontSize || defaultFontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
274 e.color || defaultTextColor, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
275 e.background || defaultBgColor, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
276 e.text |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
277 ); |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
278 break; |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
279 } |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
280 case "image": { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
281 this.addImage( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
282 e.url, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
283 e.format, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
284 e.position, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
285 e.offset || defaultOffset, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
286 e.width, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
287 e.height |
2207
da902f0dac88
pdf-gen: add fixed coordinates and values
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2205
diff
changeset
|
288 ); |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
289 break; |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
290 } |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
291 case "bottleneck": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
292 this.addBottleneckInfo( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
293 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
294 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
295 e.rounding || defaultRounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
296 e.color || defaultTextColor |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
297 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
298 break; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
299 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
300 case "legend": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
301 this.addLegend( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
302 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
303 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
304 e.rounding || defaultRounding |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
305 ); |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
306 break; |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
307 } |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
308 case "scalebar": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
309 this.addScaleBar( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
310 scaleNominator, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
311 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
312 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
313 e.rounding || defaultRounding |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
314 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
315 break; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
316 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
317 case "northarrow": { |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
318 this.addNorthArrow( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
319 e.position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
320 e.offset || defaultOffset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
321 e.size |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
322 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
323 break; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
324 } |
2205
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
325 } |
59c21dee6315
pdf-gen: improve pdftool to use value from template
Fadi Abbud <fadi.abbud@intevation.de>
parents:
2124
diff
changeset
|
326 }); |
1928
76ca071cb006
client: pdf-gen: add legend graphic
Bernhard Reiter <bernhard@intevation.de>
parents:
1914
diff
changeset
|
327 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
328 this.pdf.doc.save("map.pdf"); |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
329 } |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
330 // reset to original size |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
331 map.setSize(mapSize); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
332 map.getView().fit(mapExtent, { size: mapSize }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
333 |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
334 // as we are done: re-enable button |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
335 this.readyToGenerate = true; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
336 }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
337 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
338 // trigger rendering |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
339 this.prepareRendering(function() { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
340 map.setSize(mapSizeForPrint); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
341 map.getView().fit(mapExtent, { size: mapSizeForPrint }); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
342 }); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
343 }, |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
344 prepareRendering(callback) { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
345 // call callback() once the preparations are done |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
346 this.logoImageForPDF = new Image(); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
347 |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
348 this.logoImageForPDF.onload = function() { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
349 callback(); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
350 }; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
351 |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
352 if (this.logoForPDF) { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
353 this.logoImageForPDF.src = this.logoForPDF; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
354 } else { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
355 this.logoImageForPDF.src = "/img/gemma-logo-for-pdf.png"; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
356 } |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
357 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
358 addRoundedBox(x, y, w, h, color, rounding) { |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
359 // 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
|
360 // using jsPDF units |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
361 this.pdf.doc.setDrawColor(color); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
362 this.pdf.doc.setFillColor(color); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
363 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
|
364 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
365 // add some text at specific coordinates and determine how many wrolds in single line |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
366 addText(position, offset, width, rounding, fontSize, color, text) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
367 text = this.replacePlaceholders(text); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
368 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
369 // 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
|
370 // words in a single line |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
371 this.pdf.doc.setTextColor(color); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
372 this.pdf.doc.setFontSize(fontSize); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
373 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
|
374 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
375 // 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
|
376 let x = offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
377 let y = offset.y; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
378 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
379 // 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
|
380 // the size of the element |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
381 if (["topright", "bottomright"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
382 x = this.pdf.width - offset.x - width; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
383 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
384 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
385 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
|
386 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
387 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
388 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
|
389 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
390 addBox(position, offset, width, height, rounding, color) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
391 // 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
|
392 let x = offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
393 let y = offset.y; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
394 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
395 // 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
|
396 // the size of the element |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
397 if (["topright", "bottomright"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
398 x = this.pdf.width - offset.x - width; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
399 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
400 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
401 y = this.pdf.height - offset.y - height; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
402 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
403 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
404 this.addRoundedBox(x, y, width, height, color, rounding); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
405 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
406 // 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
|
407 addTextBox( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
408 position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
409 offset, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
410 width, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
411 height, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
412 rounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
413 padding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
414 fontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
415 color, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
416 background, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
417 text |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
418 ) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
419 if (!width) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
420 width = this.pdf.width - offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
421 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
422 let textWidth = width - 2 * padding; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
423 if (!height) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
424 this.pdf.doc.setFontSize(fontSize); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
425 text = this.replacePlaceholders(text); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
426 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
|
427 height = this.getTextHeight(textLines.length) + 2 * padding; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
428 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
429 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
430 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
|
431 this.addText( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
432 position, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
433 { 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
|
434 textWidth, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
435 rounding, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
436 fontSize, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
437 color, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
438 text |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
439 ); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
440 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
441 addImage(url, format, position, offset, width, height) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
442 // 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
|
443 let x = offset.x; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
444 let y = offset.y; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
445 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
446 // 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
|
447 // the size of the element |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
448 if (["topright", "bottomright"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
449 x = this.pdf.width - offset.x - width; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
450 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
451 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
452 y = this.pdf.height - offset.y - height; |
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 |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
455 let image = new Image(); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
456 image.src = url; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
457 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
|
458 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
459 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
|
460 // 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
|
461 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
462 // hardcode maximal width for now |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
463 let maxWidth = 80; // in mm |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
464 |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
465 // 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
|
466 // strategy: |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
467 // 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
|
468 // 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
|
469 // 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
|
470 // 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
|
471 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
472 // 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
|
473 let log10 = |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
474 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
|
475 function(x) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
476 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
|
477 }; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
478 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
479 let maxLength = maxWidth * scaleNominator; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
480 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
481 let unit = "mm"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
482 let unitConversionFactor = 1; |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
483 if (maxLength >= 1e7) { |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
484 // >= 10 km |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
485 unit = "km"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
486 unitConversionFactor = 1e6; |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
487 } else if (maxLength >= 1e4) { |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
488 // >= 10 m |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
489 unit = "m"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
490 unitConversionFactor = 1e3; |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
491 } |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
492 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
493 maxLength /= unitConversionFactor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
494 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
495 // DEBUG console.log(maxLength, unit); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
496 let unroundedLength = maxLength; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
497 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
|
498 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
|
499 let mapped = unroundedLength / factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
500 // DEBUG console.log(mapped); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
501 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
502 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
|
503 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
504 // 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
|
505 // 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
|
506 if (mapped > 8) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
507 length = 8 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
508 } else if (mapped > 4) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
509 length = 4 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
510 } else if (mapped > 2) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
511 length = 2 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
512 } else { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
513 length = factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
514 } |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
515 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
516 let size = (length * unitConversionFactor) / scaleNominator / 4; |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
517 let fullSize = size * 4; |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
518 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
519 // 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
|
520 let x = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
521 let y = offset.y; |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
522 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
523 // 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
|
524 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
525 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
526 x = this.pdf.width - offset.x - fullSize - 8; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
527 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
528 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
529 y = this.pdf.height - offset.y - 10; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
530 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
531 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
532 // to give the outer white box 4mm padding |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
533 let scaleBarX = x + 4; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
534 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
|
535 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
536 // draw outer white box |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
537 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
|
538 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
539 // draw first part of scalebar |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
540 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
541 this.pdf.doc.setFillColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
542 this.pdf.doc.rect(scaleBarX, scaleBarY, size, 1, "FD"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
543 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
544 // draw second part of scalebar |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
545 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
546 this.pdf.doc.setFillColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
547 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
|
548 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
549 // draw third part of scalebar |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
550 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
551 this.pdf.doc.setFillColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
552 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
|
553 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
554 // draw numeric labels above scalebar |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
555 this.pdf.doc.setTextColor("black"); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
556 this.pdf.doc.setFontSize(5); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
557 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
|
558 // /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
|
559 this.pdf.doc.text( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
560 scaleBarX + size - 1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
561 scaleBarY - 1, |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
562 (Math.round((length * 10) / 4) / 10).toString() |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
563 ); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
564 this.pdf.doc.text( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
565 scaleBarX + size * 2 - 2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
566 scaleBarY - 1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
567 Math.round(length / 2).toString() |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
568 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
569 this.pdf.doc.text( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
570 scaleBarX + size * 4 - 4, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
571 scaleBarY - 1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
572 Math.round(length).toString() + " " + unit |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
573 ); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
574 }, |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
575 addNorthArrow(position, offset, size) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
576 // TODO: fix positioning |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
577 // 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
|
578 let x1 = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
579 let y1 = offset.y; |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
580 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
581 // 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
|
582 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
583 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
584 x1 = this.pdf.width - offset.x - size; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
585 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
586 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
587 y1 = this.pdf.height - offset.y - size; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
588 } |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
589 |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
590 var y2 = y1 + size * 3; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
591 var x3 = x1 - size * 2; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
592 var y3 = y1 + size * 5; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
593 var x4 = x1 + size * 2; |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
594 // white triangle |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
595 this.pdf.doc.setFillColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
596 this.pdf.doc.setDrawColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
597 this.pdf.doc.triangle( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
598 x3 - 0.8, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
599 y3 + 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
600 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
601 y1 - 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
602 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
603 y2 + 0.6, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
604 "F" |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
605 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
606 this.pdf.doc.triangle( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
607 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
608 y1 - 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
609 x1, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
610 y2 + 0.6, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
611 x4 + 0.8, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
612 y3 + 1.2, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
613 "F" |
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 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
616 // north arrow |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
617 this.pdf.doc.setDrawColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
618 this.pdf.doc.setFillColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
619 this.pdf.doc.triangle(x3, y3, x1, y1, x1, y2, "FD"); |
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.triangle(x1, y1, x1, y2, x4, y3, "FD"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
622 this.pdf.doc.setFontSize(size * 3.1); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
623 this.pdf.doc.setTextColor(255, 255, 255); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
624 this.pdf.doc.setFontStyle("bold"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
625 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
|
626 this.pdf.doc.setFontSize(size * 3); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
627 this.pdf.doc.setTextColor(0, 0, 0); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
628 this.pdf.doc.setFontStyle("normal"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
629 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
|
630 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
631 addLegend(position, offset, rounding) { |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
632 if ( |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
633 this.selectedBottleneck && |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
634 this.getLayerByName("Bottleneck isolines").isVisible |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
635 ) { |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
636 // transforming into an HTMLImageElement only to find out |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
637 // the width x height of the legend image |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
638 // 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
|
639 let legendImage = new Image(); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
640 legendImage.src = this.isolinesLegendImgDataURL; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
641 let aspectRatio = legendImage.width / legendImage.height; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
642 let width = 54; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
643 let height = width / aspectRatio; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
644 let padding = 2; |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
645 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
646 // 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
|
647 let x = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
648 let y = offset.y; |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
649 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
650 // 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
|
651 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
652 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
653 x = this.pdf.width - offset.x - width; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
654 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
655 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
656 y = this.pdf.height - offset.y - height; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
657 } |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
658 |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
659 this.addRoundedBox(x, y, width, height, "white", rounding); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
660 this.pdf.doc.addImage( |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
661 legendImage, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
662 x + padding, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
663 y + padding, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
664 width - 2 * padding, |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
665 height - 2 * padding |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
666 ); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
667 } |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
668 }, |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
669 addBottleneckInfo(position, offset, rounding, color) { |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
670 if ( |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
671 this.selectedBottleneck && |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
672 this.getLayerByName("Bottleneck isolines").isVisible |
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
673 ) { |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
674 let width = 54; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
675 let height = 13; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
676 let padding = 5; |
2220
d926292d81b6
PDF generation: changed form labels/option texts
Markus Kottlaender <markus@intevation.de>
parents:
2219
diff
changeset
|
677 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
678 // 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
|
679 let x = offset.x; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
680 let y = offset.y; |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
681 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
682 // 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
|
683 // the size of the element |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
684 if (["topright", "bottomright"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
685 x = this.pdf.width - offset.x - width; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
686 } |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
687 if (["bottomright", "bottomleft"].indexOf(position) !== -1) { |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
688 y = this.pdf.height - offset.y - height; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
689 } |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
690 |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
691 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
|
692 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
693 this.pdf.doc.setFont("times", "normal"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
694 this.pdf.doc.setFontSize(9); |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
695 this.pdf.doc.setTextColor(color); |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
696 |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
697 let str, w; |
2138
4a903d382901
client: pdf-gen: make bottleneck infos more fancy
Bernhard Reiter <bernhard@intevation.de>
parents:
2137
diff
changeset
|
698 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
699 str = this.$gettext("Bottleneck") + ": "; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
700 w = this.pdf.doc.getTextWidth(str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
701 this.pdf.doc.setFontStyle("italic"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
702 this.pdf.doc.text(x + padding, y + padding, str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
703 str = this.selectedBottleneck; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
704 this.pdf.doc.setFontStyle("bold"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
705 this.pdf.doc.text(x + padding + w, y + padding, str); |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
706 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
707 str = this.$gettext("Survey date") + ": "; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
708 w = this.pdf.doc.getTextWidth(str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
709 this.pdf.doc.setFontStyle("italic"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
710 this.pdf.doc.text(x + padding, y + padding + 3, str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
711 str = this.selectedSurvey.date_info; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
712 this.pdf.doc.setFontStyle("normal"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
713 this.pdf.doc.text(x + padding + w, y + padding + 3, str); |
2137
a31c9fa47ab8
client: pdf-gen: add bottleneck details
Bernhard Reiter <bernhard@intevation.de>
parents:
2124
diff
changeset
|
714 |
2218
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
715 str = this.$gettext("Ref gauge") + ": "; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
716 w = this.pdf.doc.getTextWidth(str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
717 this.pdf.doc.setFontStyle("italic"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
718 this.pdf.doc.text(x + padding, y + padding + 6, str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
719 str = this.selectedSurvey.gauge_objname; |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
720 this.pdf.doc.setFontStyle("normal"); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
721 this.pdf.doc.text(x + padding + w, y + padding + 6, str); |
631ca0412db9
adjusted positioning of pdf elements
Markus Kottlaender <markus@intevation.de>
parents:
2215
diff
changeset
|
722 } |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
723 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
724 replacePlaceholders(text) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
725 if (text.includes("{date}")) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
726 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
|
727 } |
2223
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
728 if (text.includes("{user}")) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
729 text = text.replace("{user}", this.user); |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
730 } |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
731 return text; |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
732 }, |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
733 getTextHeight(numberOfLines) { |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
734 return ( |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
735 numberOfLines * |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
736 ((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
|
737 this.pdf.doc.getLineHeightFactor() |
85142493096c
PDF generation: improved positioning, prepared demo templates
Markus Kottlaender <markus@intevation.de>
parents:
2222
diff
changeset
|
738 ); |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
739 } |
2212
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
740 }, |
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
741 mounted() { |
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
742 this.$store.dispatch("application/loadPdfTemplates").then(() => { |
2214
5a4b0c85e7a8
values in template select are now the actual objects
Markus Kottlaender <markus@intevation.de>
parents:
2212
diff
changeset
|
743 this.form.template = this.pdfTemplates[0]; |
2212
733cfc3db48a
started pdf template administration
Markus Kottlaender <markus@intevation.de>
parents:
2207
diff
changeset
|
744 }); |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
745 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
746 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
747 </script> |