annotate client/src/lib/mixins.js @ 3796:243316850889 yworks-svg2pdf

client: improve pdf generation * Move general template interpretation code from Waterlevel.vue to lib/mixins.js. This is the first step to remove code redundancy as this code is similiar in four other places.
author Bernhard Reiter <bernhard@intevation.de>
date Thu, 04 Jul 2019 09:16:10 +0200
parents 3878bc0c8e58
children e008197e2215
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";
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
19
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
20 export const sortTable = {
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
21 data() {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
22 return {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
23 sortColumn: "",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
24 sortDirection: "ASC",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
25 pageSize: 20,
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
26 page: 1
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
27 };
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 methods: {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
30 sortTable(sorting) {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
31 this.sortColumn = sorting.sortColumn;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
32 this.sortDirection = sorting.sortDirection;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
33 }
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
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
37 export const diagram = {
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
38 methods: {
3235
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
39 getDimensions({ main, nav }) {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
40 //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
41 const elem = document.querySelector("#" + this.containerId);
3500
5c4f117d8f98 diagram mixin: prevent null errors
Thomas Junk <thomas.junk@intevation.de>
parents: 3478
diff changeset
42 const svgWidth = elem != null ? elem.clientWidth : 0;
5c4f117d8f98 diagram mixin: prevent null errors
Thomas Junk <thomas.junk@intevation.de>
parents: 3478
diff changeset
43 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
44 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
45 const navMargin = nav || {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
46 top: svgHeight - mainMargin.top - 65,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
47 right: 20,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
48 bottom: 30,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
49 left: 80
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
50 };
3478
afab8d87932c mixin: assume when element not in DOM width and height are 0
Thomas Junk <thomas.junk@intevation.de>
parents: 3429
diff changeset
51 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
52 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
53 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
54 return { width, mainHeight, navHeight, mainMargin, navMargin };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
55 }
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 export const pane = {
3077
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
60 computed: {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
61 paneId() {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
62 return this.$parent.pane.id;
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
63 }
3072
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
64 }
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
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
67 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
68 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
69 ...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
70 ...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
71 },
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
72 methods: {
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
73 generatePDF(params) {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
74 // creates a new jsPDF object into this.pdf.doc
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
75 let templateData = params["templateData"];
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
76 let diagramTitle = params["diagramTitle"];
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
77
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
78 this.pdf.doc = new jsPDF(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
79 "l",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
80 "mm",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
81 this.templateData.properties.paperSize
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
82 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
83 // pdf width and height in millimeter (landscape)
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
84 this.pdf.width = templateData.properties.paperSize === "a3" ? 420 : 297;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
85 this.pdf.height = templateData.properties.paperSize === "a4" ? 297 : 210;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
86 // check the template elements
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
87 if (templateData) {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
88 let defaultFontSize = 11,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
89 defaultColor = "black",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
90 defaultWidth = 70,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
91 defaultTextColor = "black",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
92 defaultBorderColor = "white",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
93 defaultBgColor = "white",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
94 defaultRounding = 2,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
95 defaultPadding = 2,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
96 defaultOffset = { x: 0, y: 0 };
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
97 templateData.elements.forEach(e => {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
98 switch (e.type) {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
99 case "diagram": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
100 this.addDiagram(e.position, e.offset || defaultOffset);
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
101 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
102 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
103 case "diagramlegend": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
104 this.addDiagramLegend(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
105 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
106 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
107 e.color || defaultColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
108 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
109 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
110 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
111 case "diagramtitle": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
112 this.addDiagramTitle(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
113 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
114 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
115 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
116 e.color || defaultColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
117 diagramTitle
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
118 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
119 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
120 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
121 case "text": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
122 this.addText(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
123 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
124 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
125 e.width || defaultWidth,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
126 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
127 e.color || defaultTextColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
128 e.text || ""
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
129 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
130 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
131 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
132 case "image": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
133 this.addImage(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
134 e.url,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
135 e.format || "",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
136 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
137 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
138 e.width || 90,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
139 e.height || 60
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
140 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
141 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
142 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
143 case "box": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
144 this.addBox(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
145 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
146 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
147 e.width || 90,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
148 e.height || 60,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
149 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
150 e.color || defaultBgColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
151 e.brcolor || defaultBorderColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
152 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
153 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
154 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
155 case "textbox": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
156 this.addTextBox(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
157 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
158 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
159 e.width,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
160 e.height,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
161 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
162 e.padding || defaultPadding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
163 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
164 e.color || defaultTextColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
165 e.background || defaultBgColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
166 e.text || "",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
167 e.brcolor || defaultBorderColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
168 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
169 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
170 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
171 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
172 });
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
173 }
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
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
176 // 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
177 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
178 text = this.replacePlaceholders(text);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
179 // 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
180 // 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
181 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
182 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
183 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
184 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
185 // 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
186 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
187 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
188 // 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
189 // 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
190 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
191 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
192 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
193 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
194 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
195 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
196 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
197 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
198 replacePlaceholders(text) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
199 if (text.includes("{date}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
200 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
201 }
3350
8da2f7b9a04b client: diagram-template:remove unnecessary template properties and typo
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3344
diff changeset
202 // 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
203 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
204 var date = new Date();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
205 var dt =
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
206 (date.getDate() < 10 ? "0" : "") +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
207 date.getDate() +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
208 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
209 (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
210 (date.getMonth() + 1) +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
211 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
212 date.getFullYear();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
213 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
214 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
215 if (text.includes("{user}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
216 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
217 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
218 return text;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
219 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
220 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
221 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
222 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
223 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
224 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
225 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
226 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
227 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
228 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
229 let image = new Image();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
230 if (url) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
231 image.src = url;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
232 } else {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
233 if (this.logoForPDF) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
234 image.src = this.logoForPDF;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
235 } else {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
236 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
237 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
238 }
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
239 if (format === "") {
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
240 let tmp = image.src.split(".");
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
241 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
242 }
3429
7bbab09cdf71 client: pdf-template:(minor) add missing parameter
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3408
diff changeset
243 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
244 },
3293
76f643d20f19 clinet: pdf-gen: (cleanup) remove some pdf-functions from pdftool
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
245 // 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
246 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
247 // 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
248 let x = offset.x;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
249 let y = offset.y;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
250
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
251 // 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
252 // the size of the element
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
253 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
254 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
255 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
256 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
257 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
258 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
259 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
260 },
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
261 getTextHeight(numberOfLines) {
3790
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
262 // Return estimated height in mm.
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
263
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
264 // 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
265 // aka 25.4 / 72 mm
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
266 let fontSize = this.pdf.doc.getFontSize();
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
267 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
268 if (typeof this.pdf.doc.getLineHeightFactor !== "undefined") {
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
269 lineHeightFactor = this.pdf.doc.getLineHeightFactor();
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
270 }
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
271 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
272 },
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
273 // 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
274 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
275 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
276 y = offset.y;
3336
db1dc197dc43 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3293
diff changeset
277 this.pdf.doc.setFontSize(size);
3344
107de6def0c3 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3336
diff changeset
278 this.pdf.doc.setFontStyle("bold");
107de6def0c3 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3336
diff changeset
279 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
280 let width =
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
281 (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
282 // 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
283 // 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
284 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
285 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
286 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
287 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
288 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
289 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
290 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
291 },
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
292 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
293 this.pdf.doc.setDrawColor(brcolor);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
294 this.pdf.doc.setFillColor(color);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
295 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
296 },
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
297 addTextBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
298 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
299 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
300 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
301 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
302 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
303 padding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
304 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
305 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
306 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
307 text,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
308 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
309 ) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
310 this.pdf.doc.setFontSize(fontSize);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
311 text = this.replacePlaceholders(text);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
312
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
313 if (!width) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
314 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
315 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
316 let textWidth = width - 2 * padding;
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
317 if (!height) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
318 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
319 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
320 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
321 this.addBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
322 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
323 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
324 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
325 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
326 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
327 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
328 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
329 );
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
330 this.addText(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
331 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
332 { 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
333 textWidth,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
334 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
335 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
336 text
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
337 );
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
338 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
339 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
340 };