annotate client/src/lib/mixins.js @ 3285:aac1ca73e92a

client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
author Fadi Abbud <fadi.abbud@intevation.de>
date Thu, 16 May 2019 11:28:44 +0200
parents 050e72ce5cf7
children 76f643d20f19
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 *
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
7 * Copyright (C) 2018 by via donau
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):
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
12 * Markus Kottländer <markus.kottlaender@intevation.de>
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
13 * * Fadi Abbud <fadi.abbud@intevation.de>
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
14 */
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
15 import locale2 from "locale2";
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
16 export const sortTable = {
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
17 data() {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
18 return {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
19 sortColumn: "",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
20 sortDirection: "ASC",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
21 pageSize: 20,
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
22 page: 1
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
23 };
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
24 },
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
25 methods: {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
26 sortTable(sorting) {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
27 this.sortColumn = sorting.sortColumn;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
28 this.sortDirection = sorting.sortDirection;
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 }
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
31 };
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
32
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
33 export const diagram = {
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
34 methods: {
3235
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
35 getDimensions({ main, nav }) {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
36 //dimensions and margins
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
37 const svgWidth = document.querySelector("#" + this.containerId)
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
38 .clientWidth;
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
39 const svgHeight = document.querySelector("#" + this.containerId)
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
40 .clientHeight;
3235
0c5a28ffe9ee available_fairway_depth: flexible layouting options
Thomas Junk <thomas.junk@intevation.de>
parents: 3180
diff changeset
41 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
42 const navMargin = nav || {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
43 top: svgHeight - mainMargin.top - 65,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
44 right: 20,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
45 bottom: 30,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
46 left: 80
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
47 };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
48 const width = +svgWidth - mainMargin.left - mainMargin.right;
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
49 const mainHeight = +svgHeight - mainMargin.top - mainMargin.bottom;
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
50 const navHeight = +svgHeight - navMargin.top - navMargin.bottom;
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
51 return { width, mainHeight, navHeight, mainMargin, navMargin };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
52 }
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
53 }
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
54 };
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 export const pane = {
3077
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
57 computed: {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
58 paneId() {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
59 return this.$parent.pane.id;
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
60 }
3072
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
61 }
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
62 };
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
63
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
64 export const pdfgen = {
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
65 methods: {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
66 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
67 text = this.replacePlaceholders(text);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
68 // 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
69 // words in a single line
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
70 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
71 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
72 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
73 // 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
74 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
75 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
76 // 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
77 // 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
78 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
79 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
80 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
81 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
82 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
83 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
84 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
85 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
86 replacePlaceholders(text) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
87 if (text.includes("{date}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
88 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
89 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
90 //get only day,month and year from the Date object
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
91 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
92 var date = new Date();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
93 var dt =
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
94 (date.getDate() < 10 ? "0" : "") +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
95 date.getDate() +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
96 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
97 (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
98 (date.getMonth() + 1) +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
99 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
100 date.getFullYear();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
101 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
102 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
103 if (text.includes("{user}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
104 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
105 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
106 return text;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
107 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
108 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
109 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
110 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
111 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
112 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
113 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
114 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
115 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
116 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
117 let image = new Image();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
118 if (url) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
119 image.src = url;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
120 } else {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
121 if (this.logoForPDF) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
122 image.src = this.logoForPDF;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
123 } else {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
124 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
125 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
126 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
127 this.pdf.doc.addImage(image, x, y, width, height);
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
128 },
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
129 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
130 // 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
131 let x = offset.x;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
132 let y = offset.y;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
133
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
134 // 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
135 // the size of the element
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
136 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
137 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
138 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
139 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
140 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
141 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
142
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
143 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
144 },
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
145 getTextHeight(numberOfLines) {
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
146 return (
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
147 numberOfLines *
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
148 ((this.pdf.doc.getFontSize() * 25.4) / 80) *
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
149 this.pdf.doc.getLineHeightFactor()
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
150 );
050e72ce5cf7 client: diagram-template: add template elements and get templates from backend(fairway avalibilty)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3235
diff changeset
151 },
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
152 // 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
153 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
154 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
155 y = offset.y;
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
156
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
157 let width =
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
158 (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
159 // 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
160 // 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
161 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
162 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
163 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
164 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
165 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
166 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
167 this.pdf.doc.setTextColor(color);
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
168 this.pdf.doc.setFontSize(size);
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
169 this.pdf.doc.setFontStyle("bold");
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
170 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
171 },
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
172 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
173 // draws a rounded background box at (x,y) width x height
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
174 // using jsPDF units
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
175 this.pdf.doc.setDrawColor(brcolor);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
176 this.pdf.doc.setFillColor(color);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
177 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
178 },
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
179 addTextBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
180 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
181 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
182 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
183 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
184 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
185 padding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
186 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
187 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
188 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
189 text,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
190 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
191 ) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
192 this.pdf.doc.setFontSize(fontSize);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
193 text = this.replacePlaceholders(text);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
194
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
195 if (!width) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
196 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
197 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
198 let textWidth = width - 2 * padding;
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
199 if (!height) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
200 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
201 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
202 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
203
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
204 this.addBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
205 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
206 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
207 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
208 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
209 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
210 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
211 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
212 );
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
213 this.addText(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
214 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
215 { 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
216 textWidth,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
217 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
218 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
219 text
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
220 );
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
221 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
222 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
223 };