Mercurial > gemma
annotate client/src/components/Pdftool.vue @ 1887:3ed036adc80f dev-pdf-generation
client: pdf-gen: fix scale calculation
* Change scale calculation to use ol.proj.getPointResolution() at
the center of the current view to make up for different point dimensions
if you are not on the equator for the web mercator projection. This is
also how the scaleline control of OpenLayers does it.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Thu, 17 Jan 2019 21:48:11 +0100 |
parents | 20fe31b4dd5d |
children | c78efb1ddb02 |
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> |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
33 <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
|
34 <input |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
35 type="radio" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
36 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
|
37 value="download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
38 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
|
39 selected |
1480 | 40 /> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
41 <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
|
42 <translate>Download</translate> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
43 </label> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
44 <input |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
45 type="radio" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
46 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
|
47 value="open" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
48 v-model="form.downloadType" |
1480 | 49 /> |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
50 <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
|
51 <translate>Open in new window</translate> |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
52 </label> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
53 </small> |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
54 <button |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
55 @click="download" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
56 type="button" |
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
57 class="btn btn-sm btn-info d-block w-100" |
1480 | 58 > |
59 <translate>Generate PDF</translate> | |
60 </button> | |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
61 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
62 </div> |
1361
ea3a89a1813a
remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1299
diff
changeset
|
63 </div> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
64 </template> |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
65 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
66 <script> |
1362
ca33ad696594
remove the first empyty lines
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1361
diff
changeset
|
67 /* 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
|
68 * 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
|
69 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
70 * SPDX-License-Identifier: AGPL-3.0-or-later |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
71 * 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
|
72 * |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
73 * Copyright (C) 2018, 2019 by via donau |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
74 * – Österreichische Wasserstraßen-Gesellschaft mbH |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
75 * 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
|
76 * |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
77 * Author(s): |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
78 * * Markus Kottländer <markus.kottlaender@intevation.de> |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
79 * * Bernhard E. Reiter <bernhard@intevation.de> |
1878
f030182f82f1
client: fix style warning for pdfexport
Bernhard Reiter <bernhard@intevation.de>
parents:
1876
diff
changeset
|
80 * * Fadi Abbud <fadi.abbud@intevation.de> |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
81 */ |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
82 import { mapState } from "vuex"; |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
83 import jsPDF from "jspdf"; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
84 import { getPointResolution } from "ol/proj.js"; |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
85 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
86 var paperSizes = { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
87 // in millimeter, landscape [width, height] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
88 a3: [420, 297], |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
89 a4: [297, 210] |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
90 }; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
91 |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
92 export default { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
93 name: "pdftool", |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
94 data() { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
95 return { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
96 form: { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
97 format: "landscape", |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
98 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
|
99 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
|
100 resolution: "120" |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
101 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
102 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
103 }, |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
104 computed: { |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
105 ...mapState("map", ["openLayersMap"]), |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
106 ...mapState("application", ["showPdfTool"]), |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
107 ...mapState("bottlenecks", ["selectedSurvey"]) |
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 methods: { |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
110 download() { |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
111 // FUTURE: disable button while working on it |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
112 console.log( |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
113 "will generate pdf with", |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
114 this.form.paperSize, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
115 this.form.format, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
116 this.form.resolution |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
117 ); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
118 var width, height; |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
119 |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
120 if (this.form.format !== "portrait") { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
121 // landscape, default |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
122 width = paperSizes[this.form.paperSize][0]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
123 height = paperSizes[this.form.paperSize][1]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
124 } else { |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
125 // switch width and height |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
126 width = paperSizes[this.form.paperSize][1]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
127 height = paperSizes[this.form.paperSize][0]; |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
128 } |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
129 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
130 // FUTURE: consider margins |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
131 console.log(width, height); |
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
132 |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
133 // 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
|
134 var pixelsPerMapMillimeter = this.form.resolution / 25.4; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
135 var mapSizeForPrint = [ |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
136 // in pixel |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
137 Math.round(width * pixelsPerMapMillimeter), |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
138 Math.round(height * pixelsPerMapMillimeter) |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
139 ]; |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
140 |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
141 // generate PDF and open it |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
142 // 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
|
143 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
144 // Step 1 prepare and save current map extend |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
145 // Then add callback "rendercomplete" for Step 3 |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
146 // 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
|
147 // 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
|
148 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
149 var map = this.openLayersMap; |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
150 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
|
151 // 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
|
152 // 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
|
153 // extent should fit. |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
154 var mapExtent = map.getView().calculateExtent(mapSize); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
155 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
156 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
|
157 var scalebarSize = |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
158 this.form.format === "portrait" && this.form.paperSize === "a4" |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
159 ? 10 |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
160 : 15; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
161 var northarrowSize = 3; |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
162 var self = this; |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
163 |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
164 // 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
|
165 map.once("rendercomplete", function(event) { |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
166 let canvas = event.context.canvas; |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
167 |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
168 // 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
|
169 // 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
|
170 // 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
|
171 let view = map.getView(); |
1887
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
172 let proj = view.getProjection(); |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
173 let metersPerPixel = // average meters (reality) per pixel (map) |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
174 getPointResolution(proj, view.getResolution(), view.getCenter()) * |
3ed036adc80f
client: pdf-gen: fix scale calculation
Bernhard Reiter <bernhard@intevation.de>
parents:
1886
diff
changeset
|
175 proj.getMetersPerUnit(); |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
176 console.log("metersPerPixel = ", metersPerPixel); |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
177 |
1886
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
178 var data = canvas.toDataURL("image/jpeg"); |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
179 pdf.addImage(data, "JPEG", 0, 0, width, height); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
180 self.addRoundedBox( |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
181 pdf, |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
182 width - scalebarSize * 5.5, |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
183 height - scalebarSize, |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
184 scalebarSize * 5, |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
185 scalebarSize |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
186 ); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
187 self.addScalebar( |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
188 pdf, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
189 width - scalebarSize * 5, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
190 height - scalebarSize / 2, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
191 scalebarSize, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
192 scalebarSize * pixelsPerMapMillimeter * metersPerPixel |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
193 ); |
1886
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
194 self.addText( |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
195 pdf, |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
196 width - scalebarSize * 5, |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
197 height - scalebarSize * 0.6, |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
198 10, |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
199 "black", |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
200 50, |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
201 "Scale 1:" + |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
202 Math.round(1000 * pixelsPerMapMillimeter * metersPerPixel) |
20fe31b4dd5d
client: pdf-gen: use jpeg, add scale number.
Bernhard Reiter <bernhard@intevation.de>
parents:
1884
diff
changeset
|
203 ); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
204 //self.addText(pdf, 150, 20, 10, "black", 70, "some text"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
205 self.addNorthArrow(pdf, 15, 8, northarrowSize); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
206 pdf.save("map.pdf"); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
207 // reset to original size |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
208 map.setSize(mapSize); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
209 map.getView().fit(mapExtent, { size: mapSize }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
210 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
211 // FUTURE: re-enable button when done |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
212 }); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
213 |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
214 // trigger rendering |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
215 map.setSize(mapSizeForPrint); |
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
216 map.getView().fit(mapExtent, { size: mapSizeForPrint }); |
1635
ca48145dba9c
client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents:
1613
diff
changeset
|
217 |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
218 // TODO: replace this src with an API reponse after actually generating PDFs |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
219 /* |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
220 let src = |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
221 this.form.format === "landscape" |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
222 ? "/img/PrintTemplate-Var2-Landscape.pdf" |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
223 : "/img/PrintTemplate-Var2-Portrait.pdf"; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
224 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
225 let a = document.createElement("a"); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
226 a.href = src; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
227 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
228 if (this.form.downloadType === "download") |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
229 a.download = src.substr(src.lastIndexOf("/") + 1); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
230 else a.target = "_blank"; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
231 |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
232 document.body.appendChild(a); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
233 a.click(); |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
234 document.body.removeChild(a); |
1874
bad32adafef2
client: add real pdf generation with jspdf
Bernhard Reiter <bernhard@intevation.de>
parents:
1635
diff
changeset
|
235 */ |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
236 }, |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
237 addRoundedBox(doc, x, y, w, h) { |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
238 // 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
|
239 // using jsPDF units |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
240 doc.setDrawColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
241 doc.setFillColor(255, 255, 255); |
1883
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
242 doc.roundedRect(x, y, w, h, 3, 3, "FD"); |
76a6d334e681
Client: pdf-gen: refactor addScaleBar
Bernhard Reiter <bernhard@intevation.de>
parents:
1882
diff
changeset
|
243 }, |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
244 addScalebar(doc, x, y, size, realLength) { |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
245 // realLength as number in meters (reality) |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
246 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
247 doc.setFillColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
248 doc.rect(x, y, size, 1, "FD"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
249 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
250 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
251 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
|
252 doc.setFillColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
253 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
254 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
|
255 doc.setFontSize(5); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
256 doc.text(x, y + 3, "0"); |
1884
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
257 doc.text(x + size, y + 3, Math.round(realLength).toString()); |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
258 doc.text(x + size * 2, y + 3, Math.round(realLength * 2).toString()); |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
259 doc.text( |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
260 x + size * 4, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
261 y + 3, |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
262 Math.round(realLength * 4).toString() + " m" |
59ef76d83de7
client: pdf-gen: make scalebar dynamic
Bernhard Reiter <bernhard@intevation.de>
parents:
1883
diff
changeset
|
263 ); |
1876
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
264 }, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
265 |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
266 addNorthArrow(doc, x1, y1, size) { |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
267 var y2 = y1 + size * 3; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
268 var x3 = x1 - size * 2; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
269 var y3 = y1 + size * 5; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
270 var x4 = x1 + size * 2; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
271 //white triangle |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
272 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
273 doc.setDrawColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
274 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
|
275 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
|
276 //north arrow |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
277 doc.setDrawColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
278 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
279 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
|
280 doc.setFillColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
281 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
|
282 doc.setFontSize(size * 3.1); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
283 doc.setTextColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
284 doc.setFontStyle("bold"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
285 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
|
286 doc.setFontSize(size * 3); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
287 doc.setTextColor(0, 0, 0); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
288 doc.setFontStyle("normal"); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
289 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
|
290 }, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
291 // 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
|
292 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
|
293 // 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
|
294 var textLines = doc.splitTextToSize(text, lineWidth); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
295 // 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
|
296 var longestString = ""; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
297 textLines.forEach(function(element) { |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
298 if (element.length > longestString.length) longestString = element; |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
299 }); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
300 var indexOfMaxString = textLines.indexOf(longestString); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
301 // white background (rectangular) around the text |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
302 doc.setFillColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
303 doc.setDrawColor(255, 255, 255); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
304 doc.rect( |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
305 postitionX - doc.getStringUnitWidth(textLines[indexOfMaxString]) / size, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
306 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
|
307 doc.getStringUnitWidth(textLines[indexOfMaxString]) * (size / 2.6), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
308 textLines.length * (size / 2), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
309 "FD" |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
310 ); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
311 //rounded rectangular |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
312 /* doc.roundedRect( |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
313 postitionX - doc.getStringUnitWidth(textLines[indexOfMaxString]) / size, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
314 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
|
315 doc.getStringUnitWidth(textLines[indexOfMaxString]) * (size / 2.6), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
316 textLines.length * (size / 2), |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
317 3, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
318 3, |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
319 "FD" |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
320 ); */ |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
321 doc.setTextColor(color); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
322 doc.setFontSize(size); |
e53924abb4a2
client: export some elements to pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents:
1874
diff
changeset
|
323 doc.text(postitionX, positionY, textLines); |
1272
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
324 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
325 } |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
326 }; |
bc55ffaeb639
cleaned up client/src directory
Markus Kottlaender <markus@intevation.de>
parents:
diff
changeset
|
327 </script> |