Mercurial > gemma
annotate client/src/components/Pdftool.vue @ 1947:4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
* Change the way how the logo to be placed in the pdf is loaded:
It can be configured in the `.env.local´ file, otherwise a placeholder
will be loaded from the static assets. The placeholder has not been
placed in `assets` because it won't be needed if a real logo has
been specified and thus should not compiled in by default.
* Add a mechanism to do asynchronous preparations before rendering.
This is needed for the completeion of the Image() loading, but it also
shows how asynchronous preparational step can be added in principle.
* Disable the start button when the current rendering is in progress.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Tue, 22 Jan 2019 10:01:08 +0100 |
parents | 17b6d2a6fb76 |
children | b275d5e14087 |
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" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
14 class="ml-auto text-muted" |
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> |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
18 <div class="p-3"> |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
19 <b><translate>Choose format:</translate></b> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
20 <select v-model="form.format" class="form-control d-block w-100"> |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
21 <option value="landscape"><translate>landscape</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
22 <option value="portrait"><translate>portrait</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
23 </select> |
1881
f512cfb63e53
pdf-generation: add select box to pdf tool to choose the resolutions
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1879
diff
changeset
|
24 <select v-model="form.resolution" class="form-control d-block w-100"> |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
25 <option value="80">80 dpi</option> |
1882
d1f8ff88b180
client: pdf-gen: improve selection of resolution
Bernhard Reiter <bernhard@intevation.de>
parents:
1881
diff
changeset
|
26 <option value="120">120 dpi</option> |
d1f8ff88b180
client: pdf-gen: improve selection of resolution
Bernhard Reiter <bernhard@intevation.de>
parents:
1881
diff
changeset
|
27 <option value="200">200 dpi</option> |
1881
f512cfb63e53
pdf-generation: add select box to pdf tool to choose the resolutions
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1879
diff
changeset
|
28 </select> |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
29 <select v-model="form.paperSize" class="form-control d-block w-100"> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
30 <option value="a3"><translate>ISO A3</translate></option> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
31 <option value="a4"><translate>ISO A4</translate></option> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
32 </select> |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
33 <!-- |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
34 <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
|
35 <input |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
36 type="radio" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
37 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
|
38 value="download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
39 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
|
40 selected |
1480 | 41 /> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
42 <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
|
43 <translate>Download</translate> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
44 </label> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
45 <input |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
46 type="radio" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
47 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
|
48 value="open" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
49 v-model="form.downloadType" |
1480 | 50 /> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
51 <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
|
52 <translate>Open in new window</translate> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
53 </label> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
54 </small> |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
55 --> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
56 <button |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
57 @click="download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
58 type="button" |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
59 v-bind:disabled="!readyToGenerate" |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
60 class="btn btn-sm btn-info d-block w-100" |
1480 | 61 > |
62 <translate>Generate PDF</translate> | |
63 </button> | |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
64 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
65 </div> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
66 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
67 </template> |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
68 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
69 <script> |
1362
ca33ad696594
remove the first empyty lines
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1361
diff
changeset
|
70 /* 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
|
71 * 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
|
72 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
73 * SPDX-License-Identifier: AGPL-3.0-or-later |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
74 * 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
|
75 * |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
76 * Copyright (C) 2018, 2019 by via donau |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
77 * – Österreichische Wasserstraßen-Gesellschaft mbH |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
78 * 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
|
79 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
80 * Author(s): |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
81 * * Markus Kottländer <markus.kottlaender@intevation.de> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
82 * * Bernhard E. Reiter <bernhard@intevation.de> |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
83 * * Fadi Abbud <fadi.abbud@intevation.de> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
84 */ |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
85 import { mapGetters, mapState } from "vuex"; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
86 import jsPDF from "jspdf"; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
87 import { getPointResolution } from "ol/proj.js"; |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
88 import locale2 from "locale2"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
89 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
90 var paperSizes = { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
91 // in millimeter, landscape [width, height] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
92 a3: [420, 297], |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
93 a4: [297, 210] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
94 }; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
95 |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
96 export default { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
97 name: "pdftool", |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
98 data() { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
99 return { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
100 form: { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
101 format: "landscape", |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
102 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
|
103 downloadType: "download", |
f512cfb63e53
pdf-generation: add select box to pdf tool to choose the resolutions
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1879
diff
changeset
|
104 resolution: "120" |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
105 }, |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
106 logoImageForPDF: null, // a HTMLImageElement instance |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
107 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
|
108 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
109 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
110 computed: { |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
111 ...mapState("application", ["showPdfTool", "logoForPDF"]), |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
112 ...mapState("bottlenecks", ["selectedSurvey"]), |
1928
76ca071cb006
client: pdf-gen: add legend graphic
Bernhard Reiter <bernhard@intevation.de>
parents:
1914
diff
changeset
|
113 ...mapState("map", ["openLayersMap", "isolinesLegendImgDataURL"]), |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
114 ...mapGetters("map", ["getLayerByName"]), |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
115 ...mapState("user", ["user"]) |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
116 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
117 methods: { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
118 download() { |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
119 // 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
|
120 this.readyToGenerate = false; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
121 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
122 console.log( |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
123 "will generate pdf with", |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
124 this.form.paperSize, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
125 this.form.format, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
126 this.form.resolution |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
127 ); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
128 var width, height; |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
129 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
130 if (this.form.format !== "portrait") { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
131 // landscape, default |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
132 width = paperSizes[this.form.paperSize][0]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
133 height = paperSizes[this.form.paperSize][1]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
134 } else { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
135 // switch width and height |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
136 width = paperSizes[this.form.paperSize][1]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
137 height = paperSizes[this.form.paperSize][0]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
138 } |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
139 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
140 // FUTURE: consider margins |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
141 |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
142 // 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
|
143 var pixelsPerMapMillimeter = this.form.resolution / 25.4; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
144 var mapSizeForPrint = [ |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
145 // in pixel |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
146 Math.round(width * pixelsPerMapMillimeter), |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
147 Math.round(height * pixelsPerMapMillimeter) |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
148 ]; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
149 |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
150 // generate PDF and open it |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
151 // 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
|
152 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
153 // Step 1 prepare and save current map extend |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
154 // Then add callback "rendercomplete" for Step 3 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
155 // 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
|
156 // 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
|
157 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
158 var map = this.openLayersMap; |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
159 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
|
160 // 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
|
161 // 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
|
162 // extent should fit. |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
163 var mapExtent = map.getView().calculateExtent(mapSize); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
164 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
165 var pdf = new jsPDF(this.form.format, "mm", this.form.paperSize); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
166 var northarrowSize = 3; |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
167 var self = this; |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
168 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
169 // set a callback for after the next complete rendering of the map |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
170 map.once("rendercomplete", function(event) { |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
171 let canvas = event.context.canvas; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
172 |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
173 // 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
|
174 // 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
|
175 // 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
|
176 let view = map.getView(); |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
177 let proj = view.getProjection(); |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
178 let metersPerPixel = // average meters (reality) per pixel (map) |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
179 getPointResolution(proj, view.getResolution(), view.getCenter()) * |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
180 proj.getMetersPerUnit(); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
181 // DEBUG console.log("metersPerPixel = ", metersPerPixel); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
182 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
183 let scaleNominator = Math.round( |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
184 // 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
|
185 1000 * pixelsPerMapMillimeter * metersPerPixel |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
186 ); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
187 console.log("scaleNominator = ", scaleNominator); |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
188 |
1886
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
189 var data = canvas.toDataURL("image/jpeg"); |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
190 pdf.addImage(data, "JPEG", 0, 0, width, height); |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
191 self.addScaleBar(pdf, width, height, scaleNominator); |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
192 self.addNorthArrow(pdf, 15, 9, northarrowSize); |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
193 self.addPageInfo(pdf); |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
194 self.addAboutBox(pdf, width, height); |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
195 |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
196 if (self.getLayerByName("Bottleneck isolines").isVisible) { |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
197 self.addLegend(pdf, width, height); |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
198 } |
1928
76ca071cb006
client: pdf-gen: add legend graphic
Bernhard Reiter <bernhard@intevation.de>
parents:
1914
diff
changeset
|
199 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
200 pdf.save("map.pdf"); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
201 // reset to original size |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
202 map.setSize(mapSize); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
203 map.getView().fit(mapExtent, { size: mapSize }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
204 |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
205 // as we are done: re-enable button |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
206 self.readyToGenerate = true; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
207 }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
208 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
209 // trigger rendering |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
210 this.prepareRendering(function() { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
211 map.setSize(mapSizeForPrint); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
212 map.getView().fit(mapExtent, { size: mapSizeForPrint }); |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
213 |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
214 /* |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
215 let a = document.createElement("a"); |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
216 a.href = src; // need the generated PDF in here (as dataURL?) |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
217 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
218 if (this.form.downloadType === "download") |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
219 a.download = src.substr(src.lastIndexOf("/") + 1); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
220 else a.target = "_blank"; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
221 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
222 document.body.appendChild(a); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
223 a.click(); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
224 document.body.removeChild(a); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
225 */ |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
226 }); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
227 }, |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
228 prepareRendering(callback) { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
229 // 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
|
230 this.logoImageForPDF = new Image(); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
231 |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
232 this.logoImageForPDF.onload = function() { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
233 callback(); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
234 }; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
235 |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
236 if (this.logoForPDF) { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
237 this.logoImageForPDF.src = this.logoForPDF; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
238 } else { |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
239 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
|
240 } |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
241 }, |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
242 addRoundedBox(doc, x, y, w, h) { |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
243 // 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
|
244 // using jsPDF units |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
245 doc.setDrawColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
246 doc.setFillColor(255, 255, 255); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
247 doc.roundedRect(x, y, w, h, 3, 3, "FD"); |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
248 }, |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
249 addScaleBar(doc, docWidth, docHeight, scaleNominator) { |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
250 // 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
|
251 |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
252 // hardcode maximal width for now and place in lower right corner |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
253 let maxWidth = 80; // in mm |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
254 |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
255 // 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
|
256 // strategy: |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
257 // 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
|
258 // 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
|
259 // 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
|
260 // 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
|
261 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
262 // 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
|
263 let log10 = |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
264 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
|
265 function(x) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
266 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
|
267 }; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
268 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
269 let maxLength = maxWidth * scaleNominator; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
270 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
271 let unit = "mm"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
272 let unitConversionFactor = 1; |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
273 if (maxLength >= 1e7) { |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
274 // >= 10 km |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
275 unit = "km"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
276 unitConversionFactor = 1e6; |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
277 } else if (maxLength >= 1e4) { |
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
278 // >= 10 m |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
279 unit = "m"; |
1914
3d2b55d2d8a6
client: pdf-gen: fix scale bar calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1903
diff
changeset
|
280 unitConversionFactor = 1e3; |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
281 } |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
282 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
283 maxLength /= unitConversionFactor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
284 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
285 // DEBUG console.log(maxLength, unit); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
286 let unroundedLength = maxLength; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
287 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
|
288 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
|
289 let mapped = unroundedLength / factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
290 // DEBUG console.log(mapped); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
291 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
292 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
|
293 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
294 // 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
|
295 // 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
|
296 if (mapped > 8) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
297 length = 8 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
298 } else if (mapped > 4) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
299 length = 4 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
300 } else if (mapped > 2) { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
301 length = 2 * factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
302 } else { |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
303 length = factor; |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
304 } |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
305 |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
306 let size = (length * unitConversionFactor) / scaleNominator / 4; |
1933
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
307 |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
308 let x = docWidth - (size * 4 + 8); |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
309 let y = docHeight - 6; |
1aa2921d8832
client: pdf-gen: make scalebar box size dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1931
diff
changeset
|
310 |
1936
17b6d2a6fb76
client: pdf-gen (minor) fix formatto
Bernhard Reiter <bernhard@intevation.de>
parents:
1933
diff
changeset
|
311 this.addRoundedBox(doc, x - 4, y - 4, size * 4 + 12, 10); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
312 |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
313 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
314 doc.setFillColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
315 doc.rect(x, y, size, 1, "FD"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
316 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
317 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
318 doc.rect(x + size, y, size, 1, "FD"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
319 doc.setFillColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
320 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
321 doc.rect(x + size * 2, y, size * 2, 1, "FD"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
322 doc.setFontSize(5); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
323 doc.text(x, y + 3, "0"); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
324 // /4 and could give 2.5. We still round, because of floating point arith |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
325 doc.text( |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
326 x + size, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
327 y + 3, |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
328 (Math.round((length * 10) / 4) / 10).toString() |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
329 ); |
1897
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
330 doc.text(x + size * 2, y + 3, Math.round(length / 2).toString()); |
c78efb1ddb02
client: pdf-gen: improve scalebar to show nice values
Bernhard Reiter <bernhard@intevation.de>
parents:
1887
diff
changeset
|
331 doc.text(x + size * 4, y + 3, Math.round(length).toString() + " " + unit); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
332 }, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
333 |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
334 addNorthArrow(doc, x1, y1, size) { |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
335 var y2 = y1 + size * 3; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
336 var x3 = x1 - size * 2; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
337 var y3 = y1 + size * 5; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
338 var x4 = x1 + size * 2; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
339 //white triangle |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
340 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
341 doc.setDrawColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
342 doc.triangle(x3 - 0.8, y3 + 1.2, x1, y1 - 1.2, x1, y2 + 0.6, "F"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
343 doc.triangle(x1, y1 - 1.2, x1, y2 + 0.6, x4 + 0.8, y3 + 1.2, "F"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
344 //north arrow |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
345 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
346 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
347 doc.triangle(x3, y3, x1, y1, x1, y2, "FD"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
348 doc.setFillColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
349 doc.triangle(x1, y1, x1, y2, x4, y3, "FD"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
350 doc.setFontSize(size * 3.1); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
351 doc.setTextColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
352 doc.setFontStyle("bold"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
353 doc.text(size < 3 ? x1 - 0.5 : x1 - 1.3, y3 + 1, "N"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
354 doc.setFontSize(size * 3); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
355 doc.setTextColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
356 doc.setFontStyle("normal"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
357 doc.text(size < 3 ? x1 - 0.5 : x1 - 1.3, y3 + 1, "N"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
358 }, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
359 // add some text at specific coordinates and determine how many wrolds in single line |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
360 addText(doc, postitionX, positionY, size, color, lineWidth, text) { |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
361 // split the incoming string to an array, each element is a string of words in a single line |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
362 var textLines = doc.splitTextToSize(text, lineWidth); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
363 // get the longest line to fit the white backround to it |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
364 var longestString = ""; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
365 textLines.forEach(function(element) { |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
366 if (element.length > longestString.length) longestString = element; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
367 }); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
368 var indexOfMaxString = textLines.indexOf(longestString); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
369 // white background (rectangular) around the text |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
370 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
371 doc.setDrawColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
372 doc.rect( |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
373 postitionX - doc.getStringUnitWidth(textLines[indexOfMaxString]) / size, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
374 size > 10 ? positionY - size / 1.8 : positionY - size / 2.4, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
375 doc.getStringUnitWidth(textLines[indexOfMaxString]) * (size / 2.6), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
376 textLines.length * (size / 2), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
377 "FD" |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
378 ); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
379 //rounded rectangular |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
380 /* doc.roundedRect( |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
381 postitionX - doc.getStringUnitWidth(textLines[indexOfMaxString]) / size, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
382 size > 10 ? positionY - size / 1.8 : positionY - size / 2.6, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
383 doc.getStringUnitWidth(textLines[indexOfMaxString]) * (size / 2.6), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
384 textLines.length * (size / 2), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
385 3, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
386 3, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
387 "FD" |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
388 ); */ |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
389 doc.setTextColor(color); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
390 doc.setFontSize(size); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
391 doc.text(postitionX, positionY, textLines); |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
392 }, |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
393 addPageInfo(doc) { |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
394 this.addRoundedBox(doc, 0, 0, 110, 8); |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
395 let str = |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
396 this.$gettext("Date of publication:") + |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
397 " " + |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
398 new Date().toLocaleString(locale2) + |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
399 " " + |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
400 this.$gettext("– printed by:") + |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
401 " " + |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
402 this.user; |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
403 this.addText(doc, 5, 5, 9, "black", 100, str); |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
404 }, |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
405 addAboutBox(doc, docWidth, docHeight) { |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
406 let top = docHeight - 20; |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
407 this.addRoundedBox(doc, 0, top, 120, 20); |
1947
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
408 |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
409 let logoImage = this.logoImageForPDF; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
410 let aspectRatio = logoImage.width / logoImage.height; |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
411 doc.addImage(logoImage, "PNG", 5, docHeight - 19, 110, 110 / aspectRatio); |
4235fa8f59d7
clien: pdf-gen: load logo externally; add prepare step
Bernhard Reiter <bernhard@intevation.de>
parents:
1936
diff
changeset
|
412 |
1903
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
413 let str = |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
414 "Dislaimer: Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua."; |
7247ac316cb7
client: pdf-gen: improve layout and ui
Bernhard Reiter <bernhard@intevation.de>
parents:
1897
diff
changeset
|
415 this.addText(doc, 5, docHeight - 6, 8, "black", 115, str); |
1931
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
416 }, |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
417 addLegend(doc, docWidth) { |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
418 // transforming into an HTMLImageElement only to find out |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
419 // the width x height of the legend image |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
420 // FUTURE: find a better way to get the width and height |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
421 let legendImage = new Image(); |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
422 legendImage.src = this.isolinesLegendImgDataURL; |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
423 let aspectRatio = legendImage.width / legendImage.height; |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
424 |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
425 this.addRoundedBox(doc, docWidth - 54, 0, 54, 50 / aspectRatio + 4); |
8fb1b1a8ea85
client: pdf-gen: improve legend behaviour
Bernhard Reiter <bernhard@intevation.de>
parents:
1928
diff
changeset
|
426 doc.addImage(legendImage, docWidth - 52, 2, 50, 50 / aspectRatio); |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
427 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
428 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
429 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
430 </script> |