annotate client/src/components/Pdftool.vue @ 3802:e8a950cf6c02 yworks-svg2pdf

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