annotate client/src/lib/mixins.js @ 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 1399d31531f7
children 876dc90c2825
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
1 /* This is Free Software under GNU Affero General Public License v >= 3.0
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
2 * without warranty, see README.md and license for details.
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
3 *
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
4 * SPDX-License-Identifier: AGPL-3.0-or-later
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
5 * License-Filename: LICENSES/AGPL-3.0.txt
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
6 *
3792
3878bc0c8e58 client: update attribution infos on lib/mixins.js
Bernhard Reiter <bernhard@intevation.de>
parents: 3790
diff changeset
7 * Copyright (C) 2018, 2019 by via donau
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
8 * – Österreichische Wasserstraßen-Gesellschaft mbH
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
9 * Software engineering by Intevation GmbH
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
10 *
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
11 * Author(s):
3792
3878bc0c8e58 client: update attribution infos on lib/mixins.js
Bernhard Reiter <bernhard@intevation.de>
parents: 3790
diff changeset
12 * * Markus Kottländer <markus.kottlaender@intevation.de>
3878bc0c8e58 client: update attribution infos on lib/mixins.js
Bernhard Reiter <bernhard@intevation.de>
parents: 3790
diff changeset
13 * * Fadi Abbud <fadi.abbud@intevation.de>
3878bc0c8e58 client: update attribution infos on lib/mixins.js
Bernhard Reiter <bernhard@intevation.de>
parents: 3790
diff changeset
14 * * Bernhard Reiter <bernhard.reiter@intevation.de>
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
15 */
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
16 import jsPDF from "jspdf-yworks";
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
17 import locale2 from "locale2";
3406
1ba669cbbee6 client: pdf-template:(minor) add missed parameter for image element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3396
diff changeset
18 import { mapState } from "vuex";
3802
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
19 import { HTTP } from "@/lib/http";
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
20
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
21 export const sortTable = {
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
22 data() {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
23 return {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
24 sortColumn: "",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
25 sortDirection: "ASC",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
26 pageSize: 20,
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
27 page: 1
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
28 };
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
29 },
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
30 methods: {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
31 sortTable(sorting) {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
32 this.sortColumn = sorting.sortColumn;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
33 this.sortDirection = sorting.sortDirection;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
34 }
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
35 }
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
36 };
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
37
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
38 export const diagram = {
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
39 methods: {
3235
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
40 getDimensions({ main, nav }) {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
41 //dimensions and margins
3478
afab8d87932c mixin: assume when element not in DOM width and height are 0
Thomas Junk <thomas.junk@intevation.de>
parents: 3429
diff changeset
42 const elem = document.querySelector("#" + this.containerId);
3500
5c4f117d8f98 diagram mixin: prevent null errors
Thomas Junk <thomas.junk@intevation.de>
parents: 3478
diff changeset
43 const svgWidth = elem != null ? elem.clientWidth : 0;
5c4f117d8f98 diagram mixin: prevent null errors
Thomas Junk <thomas.junk@intevation.de>
parents: 3478
diff changeset
44 const svgHeight = elem != null ? elem.clientHeight : 0;
3235
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
45 const mainMargin = main || { top: 20, right: 20, bottom: 110, left: 80 };
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
46 const navMargin = nav || {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
47 top: svgHeight - mainMargin.top - 65,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
48 right: 20,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
49 bottom: 30,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
50 left: 80
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
51 };
3478
afab8d87932c mixin: assume when element not in DOM width and height are 0
Thomas Junk <thomas.junk@intevation.de>
parents: 3429
diff changeset
52 const width = Number(svgWidth) - mainMargin.left - mainMargin.right;
afab8d87932c mixin: assume when element not in DOM width and height are 0
Thomas Junk <thomas.junk@intevation.de>
parents: 3429
diff changeset
53 const mainHeight = Number(svgHeight) - mainMargin.top - mainMargin.bottom;
afab8d87932c mixin: assume when element not in DOM width and height are 0
Thomas Junk <thomas.junk@intevation.de>
parents: 3429
diff changeset
54 const navHeight = Number(svgHeight) - navMargin.top - navMargin.bottom;
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
55 return { width, mainHeight, navHeight, mainMargin, navMargin };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
56 }
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
57 }
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
58 };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
59
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
60 export const pane = {
3077
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
61 computed: {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
62 paneId() {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
63 return this.$parent.pane.id;
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
64 }
3072
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
65 }
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
66 };
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
67
3802
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
68 export const templateLoader = {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
69 methods: {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
70 loadTemplates(url) {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
71 return new Promise((resolve, reject) => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
72 HTTP.get(url, {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
73 headers: {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
74 "X-Gemma-Auth": localStorage.getItem("token"),
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
75 "Content-type": "text/xml; charset=UTF-8"
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
76 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
77 })
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
78 .then(response => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
79 resolve(response);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
80 })
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
81 .catch(error => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
82 reject(error);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
83 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
84 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
85 },
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
86 prepareImages(elements) {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
87 /**
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
88 * In order to render the images from the template, we need to convert
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
89 * each image to dataURIs. Since this happens asynchronous,
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
90 * we need to wrap each image into its own promise and only after all are
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
91 * finished, we continue with the flow.
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
92 */
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
93 return new Promise(resolve => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
94 const imageElementLoaders = elements.reduce((o, n, i) => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
95 if (n.type === "image") {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
96 o.push(
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
97 new Promise(resolve => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
98 const image = new Image();
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
99 image.onload = function() {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
100 var canvas = document.createElement("canvas");
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
101 canvas.width = this.naturalWidth; // or 'width' if you want a special/scaled size
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
102 canvas.height = this.naturalHeight; // or 'height' if you want a special/scaled size
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
103 canvas.getContext("2d").drawImage(this, 0, 0);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
104 resolve({
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
105 index: i,
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
106 url: canvas.toDataURL("image/png")
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
107 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
108 };
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
109 image.src = n.url;
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
110 })
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
111 );
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
112 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
113 return o;
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
114 }, []);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
115 Promise.all(imageElementLoaders).then(values => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
116 resolve(values);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
117 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
118 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
119 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
120 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
121 };
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
122
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
123 export const pdfgen = {
3406
1ba669cbbee6 client: pdf-template:(minor) add missed parameter for image element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3396
diff changeset
124 computed: {
3408
a26c1d745fc3 client: pdf-template: fix display of user and move property to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3406
diff changeset
125 ...mapState("application", ["logoForPDF"]),
a26c1d745fc3 client: pdf-template: fix display of user and move property to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3406
diff changeset
126 ...mapState("user", ["user"])
3406
1ba669cbbee6 client: pdf-template:(minor) add missed parameter for image element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3396
diff changeset
127 },
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
128 methods: {
3798
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
129 gaugeInfo(selectedGauge) {
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
130 // returns string with formatted gauge info
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
131 return (
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
132 selectedGauge.properties.objname +
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
133 " (" +
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
134 selectedGauge.id
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
135 .split(".")[1]
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
136 .replace(/[()]/g, "")
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
137 .split(",")[3] +
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
138 ")"
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
139 );
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
140 },
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
141 generatePDF(params) {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
142 // creates a new jsPDF object into this.pdf.doc
3799
f4deb4aae485 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3798
diff changeset
143 // will call functions that the calling context has to provide
f4deb4aae485 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3798
diff changeset
144 // as specified in the templateData
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
145 let templateData = params["templateData"];
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
146 let diagramTitle = params["diagramTitle"];
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
147
3799
f4deb4aae485 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3798
diff changeset
148 this.pdf.doc = new jsPDF("l", "mm", templateData.properties.paperSize);
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
149 // pdf width and height in millimeter (landscape)
3798
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
150 if (templateData.properties.paperSize === "a3") {
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
151 this.pdf.width = 420;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
152 this.pdf.height = 297;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
153 } else {
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
154 this.pdf.width = 297;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
155 this.pdf.height = 210;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
156 }
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
157 // check the template elements
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
158 if (templateData) {
3801
1399d31531f7 client: improve pdf generation to use linbiolinum font
Bernhard Reiter <bernhard@intevation.de>
parents: 3799
diff changeset
159 this.pdf.doc.setFont("linbiolinum", "normal");
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
160 let defaultFontSize = 11,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
161 defaultColor = "black",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
162 defaultWidth = 70,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
163 defaultTextColor = "black",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
164 defaultBorderColor = "white",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
165 defaultBgColor = "white",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
166 defaultRounding = 2,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
167 defaultPadding = 2,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
168 defaultOffset = { x: 0, y: 0 };
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
169 templateData.elements.forEach(e => {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
170 switch (e.type) {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
171 case "diagram": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
172 this.addDiagram(e.position, e.offset || defaultOffset);
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
173 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
174 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
175 case "diagramlegend": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
176 this.addDiagramLegend(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
177 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
178 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
179 e.color || defaultColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
180 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
181 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
182 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
183 case "diagramtitle": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
184 this.addDiagramTitle(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
185 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
186 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
187 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
188 e.color || defaultColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
189 diagramTitle
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
190 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
191 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
192 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
193 case "text": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
194 this.addText(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
195 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
196 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
197 e.width || defaultWidth,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
198 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
199 e.color || defaultTextColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
200 e.text || ""
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
201 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
202 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
203 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
204 case "image": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
205 this.addImage(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
206 e.url,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
207 e.format || "",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
208 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
209 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
210 e.width || 90,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
211 e.height || 60
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
212 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
213 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
214 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
215 case "box": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
216 this.addBox(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
217 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
218 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
219 e.width || 90,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
220 e.height || 60,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
221 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
222 e.color || defaultBgColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
223 e.brcolor || defaultBorderColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
224 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
225 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
226 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
227 case "textbox": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
228 this.addTextBox(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
229 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
230 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
231 e.width,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
232 e.height,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
233 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
234 e.padding || defaultPadding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
235 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
236 e.color || defaultTextColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
237 e.background || defaultBgColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
238 e.text || "",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
239 e.brcolor || defaultBorderColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
240 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
241 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
242 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
243 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
244 });
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
245 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
246 },
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
247 // add text at specific coordinates and do line breaks
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
248 addText(position, offset, width, fontSize, color, text) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
249 text = this.replacePlaceholders(text);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
250 // split the incoming string to an array, each element is a string of
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
251 // words in a single line
3396
169680c3698b client: pdf-template: set font style for the text element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3350
diff changeset
252 this.pdf.doc.setFontStyle("normal");
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
253 this.pdf.doc.setTextColor(color);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
254 this.pdf.doc.setFontSize(fontSize);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
255 var textLines = this.pdf.doc.splitTextToSize(text, width);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
256 // x/y defaults to offset for topleft corner (normal x/y coordinates)
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
257 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
258 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
259 // if position is on the right, x needs to be calculate with pdf width and
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
260 // the size of the element
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
261 if (["topright", "bottomright"].indexOf(position) !== -1) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
262 x = this.pdf.width - offset.x - width;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
263 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
264 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
265 y = this.pdf.height - offset.y - this.getTextHeight(textLines.length);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
266 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
267 this.pdf.doc.text(textLines, x, y, { baseline: "hanging" });
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
268 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
269 replacePlaceholders(text) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
270 if (text.includes("{date}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
271 text = text.replace("{date}", new Date().toLocaleString(locale2));
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
272 }
3350
8da2f7b9a04b client: diagram-template:remove unnecessary template properties and typo
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3344
diff changeset
273 // get only day,month and year from the Date object
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
274 if (text.includes("{date-minor}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
275 var date = new Date();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
276 var dt =
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
277 (date.getDate() < 10 ? "0" : "") +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
278 date.getDate() +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
279 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
280 (date.getMonth() + 1 < 10 ? "0" : "") +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
281 (date.getMonth() + 1) +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
282 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
283 date.getFullYear();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
284 text = text.replace("{date-minor}", dt.toLocaleString(locale2));
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
285 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
286 if (text.includes("{user}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
287 text = text.replace("{user}", this.user);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
288 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
289 return text;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
290 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
291 addImage(url, format, position, offset, width, height) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
292 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
293 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
294 if (["topright", "bottomright"].indexOf(position) !== -1) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
295 x = this.pdf.width - offset.x - width;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
296 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
297 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
298 y = this.pdf.height - offset.y - height;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
299 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
300 let image = new Image();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
301 if (url) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
302 image.src = url;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
303 } else {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
304 if (this.logoForPDF) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
305 image.src = this.logoForPDF;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
306 } else {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
307 image.src = "/img/gemma-logo-for-pdf.png";
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
308 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
309 }
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
310 if (format === "") {
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
311 let tmp = image.src.split(".");
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
312 format = tmp[tmp.length - 1].toUpperCase();
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
313 }
3429
7bbab09cdf71 client: pdf-template:(minor) add missing parameter
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3408
diff changeset
314 this.pdf.doc.addImage(image, format, x, y, width, height);
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
315 },
3293
76f643d20f19 clinet: pdf-gen: (cleanup) remove some pdf-functions from pdftool
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
316 // add text at specific coordinates with a background box
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
317 addBox(position, offset, width, height, rounding, color, brcolor) {
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
318 // x/y defaults to offset for topleft corner (normal x/y coordinates)
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
319 let x = offset.x;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
320 let y = offset.y;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
321
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
322 // if position is on the right, x needs to be calculate with pdf width and
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
323 // the size of the element
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
324 if (["topright", "bottomright"].indexOf(position) !== -1) {
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
325 x = this.pdf.width - offset.x - width;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
326 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
327 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
328 y = this.pdf.height - offset.y - height;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
329 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
330 this.addRoundedBox(x, y, width, height, color, rounding, brcolor);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
331 },
3273
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
332 getTextHeight(numberOfLines) {
3790
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
333 // Return estimated height in mm.
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
334
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
335 // FontSize is given in desktop publishing points defined as 1/72 inch.
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
336 // aka 25.4 / 72 mm
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
337 let fontSize = this.pdf.doc.getFontSize();
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
338 let lineHeightFactor = 1.15; // default from jspdf-yworks 2.0.2
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
339 if (typeof this.pdf.doc.getLineHeightFactor !== "undefined") {
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
340 lineHeightFactor = this.pdf.doc.getLineHeightFactor();
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
341 }
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
342 return numberOfLines * fontSize * (25.4 / 72) * lineHeightFactor;
3273
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
343 },
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
344 // title for diagram
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
345 addDiagramTitle(position, offset, size, color, text) {
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
346 let x = offset.x,
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
347 y = offset.y;
3336
db1dc197dc43 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3293
diff changeset
348 this.pdf.doc.setFontSize(size);
3344
107de6def0c3 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3336
diff changeset
349 this.pdf.doc.setFontStyle("bold");
107de6def0c3 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3336
diff changeset
350 this.pdf.doc.setTextColor(color);
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
351 let width =
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
352 (this.pdf.doc.getStringUnitWidth(text) * size) / (72 / 25.6) + size / 2;
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
353 // if position is on the right, x needs to be calculate with pdf width and
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
354 // the size of the element
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
355 if (["topright", "bottomright"].indexOf(position) !== -1) {
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
356 x = this.pdf.width - offset.x - width;
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
357 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
358 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
359 y = this.pdf.height - offset.y - this.getTextHeight(1);
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
360 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
361 this.pdf.doc.text(text, x, y, { baseline: "hanging" });
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
362 },
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
363 addRoundedBox(x, y, w, h, color, rounding, brcolor) {
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
364 this.pdf.doc.setDrawColor(brcolor);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
365 this.pdf.doc.setFillColor(color);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
366 this.pdf.doc.roundedRect(x, y, w, h, rounding, rounding, "FD");
3154
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
367 },
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
368 addTextBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
369 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
370 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
371 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
372 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
373 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
374 padding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
375 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
376 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
377 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
378 text,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
379 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
380 ) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
381 this.pdf.doc.setFontSize(fontSize);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
382 text = this.replacePlaceholders(text);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
383
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
384 if (!width) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
385 width = this.pdf.doc.getTextWidth(text) + 2 * padding;
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
386 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
387 let textWidth = width - 2 * padding;
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
388 if (!height) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
389 let textLines = this.pdf.doc.splitTextToSize(text, textWidth);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
390 height = this.getTextHeight(textLines.length) + 2 * padding;
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
391 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
392 this.addBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
393 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
394 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
395 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
396 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
397 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
398 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
399 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
400 );
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
401 this.addText(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
402 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
403 { x: offset.x + padding, y: offset.y + padding },
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
404 textWidth,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
405 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
406 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
407 text
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
408 );
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
409 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
410 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
411 };