annotate client/src/lib/mixins.js @ 3967:5c896dee852b diagram-cleanup

client: diagram mixin: removed unncessary method params
author Markus Kottlaender <markus@intevation.de>
date Fri, 12 Jul 2019 15:53:20 +0200
parents c10897e0273b
children 2f024d6189ca
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";
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
17 import svg2pdf from "svg2pdf.js";
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
18 import locale2 from "locale2";
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
19 import debounce from "debounce";
3406
1ba669cbbee6 client: pdf-template:(minor) add missed parameter for image element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3396
diff changeset
20 import { mapState } from "vuex";
3802
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
21 import { HTTP } from "@/lib/http";
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
22 import { displayError } from "@/lib/errors";
3966
c10897e0273b client: diagram: avoid unnecessary const in default template
Markus Kottlaender <markus@intevation.de>
parents: 3965
diff changeset
23 import defaultDiagramTemplate from "@/lib/DefaultDiagramTemplate";
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
24
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
25 export const sortTable = {
2738
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
26 data() {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
27 return {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
28 sortColumn: "",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
29 sortDirection: "ASC",
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
30 pageSize: 20,
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
31 page: 1
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
32 };
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 methods: {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
35 sortTable(sorting) {
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
36 this.sortColumn = sorting.sortColumn;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
37 this.sortDirection = sorting.sortDirection;
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
38 }
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
39 }
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
40 };
add2d47c2567 client: tables: implemented simple default sorting
Markus Kottlaender <markus@intevation.de>
parents:
diff changeset
41
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
42 export const diagram = {
3964
afc7bca44df4 client: moved import of DiagramLegend component to diagram mixin
Markus Kottlaender <markus@intevation.de>
parents: 3963
diff changeset
43 components: {
afc7bca44df4 client: moved import of DiagramLegend component to diagram mixin
Markus Kottlaender <markus@intevation.de>
parents: 3963
diff changeset
44 DiagramLegend: () => import("@/components/DiagramLegend")
afc7bca44df4 client: moved import of DiagramLegend component to diagram mixin
Markus Kottlaender <markus@intevation.de>
parents: 3963
diff changeset
45 },
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
46 data() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
47 return {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
48 resizeListenerFunction: null
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
49 };
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
50 },
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
51 methods: {
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
52 getDimensions({ svgWidth, svgHeight, main, nav, DPI }) {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
53 const mainMargin = {
3936
d859ec6cf2f0 Fairwayprofile enhanced
Thomas Junk <thomas.junk@intevation.de>
parents: 3919
diff changeset
54 top: 20,
d859ec6cf2f0 Fairwayprofile enhanced
Thomas Junk <thomas.junk@intevation.de>
parents: 3919
diff changeset
55 right: 80,
d859ec6cf2f0 Fairwayprofile enhanced
Thomas Junk <thomas.junk@intevation.de>
parents: 3919
diff changeset
56 bottom: 60,
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
57 left: 80,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
58 ...main
3936
d859ec6cf2f0 Fairwayprofile enhanced
Thomas Junk <thomas.junk@intevation.de>
parents: 3919
diff changeset
59 };
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
60 const navMargin = {
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
61 top: svgHeight - mainMargin.top - 65,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
62 right: 20,
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
63 bottom: 30,
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
64 left: 80,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
65 ...nav
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
66 };
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
67 if (DPI) {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
68 ["top", "right", "bottom", "left"].forEach(x => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
69 mainMargin[x] = this.millimeter2pixels(mainMargin[x], DPI);
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
70 navMargin[x] = this.millimeter2pixels(navMargin[x], DPI);
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
71 });
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
72 }
3478
afab8d87932c mixin: assume when element not in DOM width and height are 0
Thomas Junk <thomas.junk@intevation.de>
parents: 3429
diff changeset
73 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
74 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
75 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
76 return { width, mainHeight, navHeight, mainMargin, navMargin };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
77 }
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
78 },
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
79 created() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
80 this.resizeListenerFunction = debounce(this.drawDiagram, 100);
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
81 window.addEventListener("resize", this.resizeListenerFunction);
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
82 },
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
83 mounted() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
84 // Nasty but necessary if we don't want to use the updated hook to re-draw
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
85 // the diagram because this would re-draw it also for irrelevant reasons.
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
86 // In this case we need to wait for the child component (DiagramLegend) to
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
87 // render. According to the docs (https://vuejs.org/v2/api/#mounted) this
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
88 // should be possible with $nextTick() but it doesn't work because it does
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
89 // not guarantee that the DOM is not only updated but also re-painted on the
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
90 // screen.
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
91 setTimeout(this.drawDiagram, 150);
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
92 },
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
93 destroyed() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
94 window.removeEventListener("resize", this.resizeListenerFunction);
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
95 }
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
96 };
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
97
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
98 export const pane = {
3077
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
99 computed: {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
100 paneId() {
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
101 return this.$parent.pane.id;
db890b71f070 client: panes: added paneId to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3072
diff changeset
102 }
3072
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
103 }
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
104 };
0233845cadb7 client: improved splitscreen mechanis
Markus Kottlaender <markus@intevation.de>
parents: 2989
diff changeset
105
3802
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
106 export const templateLoader = {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
107 methods: {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
108 loadTemplates(url) {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
109 return new Promise((resolve, reject) => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
110 HTTP.get(url, {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
111 headers: {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
112 "X-Gemma-Auth": localStorage.getItem("token"),
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
113 "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
114 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
115 })
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
116 .then(response => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
117 resolve(response);
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 .catch(error => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
120 reject(error);
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 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
123 },
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
124 prepareImages(elements) {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
125 /**
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
126 * 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
127 * 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
128 * 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
129 * finished, we continue with the flow.
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
130 */
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
131 return new Promise(resolve => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
132 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
133 if (n.type === "image") {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
134 o.push(
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
135 new Promise(resolve => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
136 const image = new Image();
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
137 image.onload = function() {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
138 var canvas = document.createElement("canvas");
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
139 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
140 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
141 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
142 resolve({
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
143 index: i,
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
144 url: canvas.toDataURL("image/png")
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
145 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
146 };
3881
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
147 let URL = n.URL;
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
148 if (!URL) {
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
149 URL = this.logoForPDF
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
150 ? this.logoForPDF
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
151 : "/img/gemma-logo-for-pdf.png";
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
152 }
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
153 image.src = URL;
3802
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
154 })
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
155 );
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
156 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
157 return o;
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
158 }, []);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
159 Promise.all(imageElementLoaders).then(values => {
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
160 resolve(values);
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
161 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
162 });
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
163 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
164 }
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
165 };
e8a950cf6c02 Move Template loading and Imageprocessing to mixin
Thomas Junk <thomas.junk@intevation.de>
parents: 3801
diff changeset
166
3180
429e28295902 available_fairway_depth: implement reactivity
Thomas Junk <thomas.junk@intevation.de>
parents: 3154
diff changeset
167 export const pdfgen = {
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
168 data() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
169 return {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
170 pdf: {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
171 doc: null,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
172 width: null,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
173 height: null
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
174 },
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
175 templates: [],
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
176 defaultTemplate: defaultDiagramTemplate,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
177 templateData: null,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
178 form: {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
179 template: null
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
180 }
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
181 };
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
182 },
3406
1ba669cbbee6 client: pdf-template:(minor) add missed parameter for image element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3396
diff changeset
183 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
184 ...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
185 ...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
186 },
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
187 methods: {
3965
2aaa1948b525 client: diagrams: moved downloadPDF function to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3964
diff changeset
188 downloadPDF() {
3967
5c896dee852b client: diagram mixin: removed unncessary method params
Markus Kottlaender <markus@intevation.de>
parents: 3966
diff changeset
189 this.generatePDF();
3965
2aaa1948b525 client: diagrams: moved downloadPDF function to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3964
diff changeset
190
2aaa1948b525 client: diagrams: moved downloadPDF function to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3964
diff changeset
191 this.pdf.doc.save(
2aaa1948b525 client: diagrams: moved downloadPDF function to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3964
diff changeset
192 this.title.replace(/\s/g, "_").replace(/[():,]/g, "") + ".pdf"
2aaa1948b525 client: diagrams: moved downloadPDF function to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3964
diff changeset
193 );
2aaa1948b525 client: diagrams: moved downloadPDF function to mixin
Markus Kottlaender <markus@intevation.de>
parents: 3964
diff changeset
194 },
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
195 addDiagram(position, offset, width, height) {
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
196 let x = offset.x,
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
197 y = offset.y;
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
198 const DPI = this.templateData.properties.resoltion || 80;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
199 const svgWidth = this.millimeter2pixels(width, DPI);
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
200 const svgHeight = this.millimeter2pixels(height, DPI);
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
201 // draw the diagram in a separated html element to get the full size
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
202 const offScreen = document.querySelector("#offScreen");
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
203 offScreen.style.width = `${svgWidth}px`;
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
204 offScreen.style.height = `${svgHeight}px`;
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
205 const layout = this.getPrintLayout(svgHeight);
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
206 this.renderTo({
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
207 element: offScreen,
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
208 dimensions: this.getDimensions({
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
209 svgWidth: svgWidth,
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
210 svgHeight: svgHeight,
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
211 ...layout,
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
212 DPI: DPI
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
213 })
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
214 });
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
215 var svg = offScreen.querySelector("svg");
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
216 if (["topright", "bottomright"].indexOf(position) !== -1) {
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
217 x = this.pdf.width - offset.x - width;
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
218 }
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
219 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
220 y = this.pdf.height - offset.y - height;
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
221 }
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
222 svg2pdf(svg, this.pdf.doc, {
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
223 xOffset: x,
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
224 yOffset: y,
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
225 scale: this.pixel2millimeter(1, DPI)
3941
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
226 });
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
227 offScreen.removeChild(svg);
7b3935a8d9ee refactor addDiagram to mixin and remove code duplication
Thomas Junk <thomas.junk@intevation.de>
parents: 3936
diff changeset
228 },
3906
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
229 getPaperDimensions(format) {
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
230 const dims = {
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
231 A3: {
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
232 height: 297,
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
233 width: 420
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
234 },
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
235 A4: {
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
236 height: 210,
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
237 width: 297
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
238 }
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
239 };
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
240 return dims[format.toUpperCase()];
ec1d91fdd6a2 fairway_profile: print template edited and print mechanism improved
Thomas Junk <thomas.junk@intevation.de>
parents: 3886
diff changeset
241 },
3886
9fa9a485c182 mixins: calculator for pixels2millimeter vice versa
Thomas Junk <thomas.junk@intevation.de>
parents: 3881
diff changeset
242 millimeter2pixels(length, dpi) {
9fa9a485c182 mixins: calculator for pixels2millimeter vice versa
Thomas Junk <thomas.junk@intevation.de>
parents: 3881
diff changeset
243 return (dpi * length) / 25.4;
9fa9a485c182 mixins: calculator for pixels2millimeter vice versa
Thomas Junk <thomas.junk@intevation.de>
parents: 3881
diff changeset
244 },
9fa9a485c182 mixins: calculator for pixels2millimeter vice versa
Thomas Junk <thomas.junk@intevation.de>
parents: 3881
diff changeset
245 pixel2millimeter(pixels, dpi) {
9fa9a485c182 mixins: calculator for pixels2millimeter vice versa
Thomas Junk <thomas.junk@intevation.de>
parents: 3881
diff changeset
246 return (pixels * 25.4) / dpi;
9fa9a485c182 mixins: calculator for pixels2millimeter vice versa
Thomas Junk <thomas.junk@intevation.de>
parents: 3881
diff changeset
247 },
3798
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
248 gaugeInfo(selectedGauge) {
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
249 // returns string with formatted gauge info
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
250 return (
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
251 selectedGauge.properties.objname +
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
252 " (" +
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
253 selectedGauge.id
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
254 .split(".")[1]
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
255 .replace(/[()]/g, "")
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
256 .split(",")[3] +
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
257 ")"
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
258 );
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
259 },
3967
5c896dee852b client: diagram mixin: removed unncessary method params
Markus Kottlaender <markus@intevation.de>
parents: 3966
diff changeset
260 generatePDF() {
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
261 // creates a new jsPDF object into this.pdf.doc
3799
f4deb4aae485 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3798
diff changeset
262 // will call functions that the calling context has to provide
f4deb4aae485 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3798
diff changeset
263 // as specified in the templateData
3967
5c896dee852b client: diagram mixin: removed unncessary method params
Markus Kottlaender <markus@intevation.de>
parents: 3966
diff changeset
264 const templateData = this.templateData;
5c896dee852b client: diagram mixin: removed unncessary method params
Markus Kottlaender <markus@intevation.de>
parents: 3966
diff changeset
265 const diagramTitle = this.title;
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
266
3799
f4deb4aae485 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3798
diff changeset
267 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
268 // pdf width and height in millimeter (landscape)
3798
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
269 if (templateData.properties.paperSize === "a3") {
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
270 this.pdf.width = 420;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
271 this.pdf.height = 297;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
272 } else {
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
273 this.pdf.width = 297;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
274 this.pdf.height = 210;
e008197e2215 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3796
diff changeset
275 }
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
276 // check the template elements
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
277 if (templateData) {
3801
1399d31531f7 client: improve pdf generation to use linbiolinum font
Bernhard Reiter <bernhard@intevation.de>
parents: 3799
diff changeset
278 this.pdf.doc.setFont("linbiolinum", "normal");
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
279 let defaultFontSize = 11,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
280 defaultColor = "black",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
281 defaultWidth = 70,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
282 defaultTextColor = "black",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
283 defaultBorderColor = "white",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
284 defaultBgColor = "white",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
285 defaultRounding = 2,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
286 defaultPadding = 2,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
287 defaultOffset = { x: 0, y: 0 };
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
288 templateData.elements.forEach(e => {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
289 switch (e.type) {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
290 case "diagram": {
3807
876dc90c2825 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3802
diff changeset
291 this.addDiagram(
876dc90c2825 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3802
diff changeset
292 e.position,
876dc90c2825 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3802
diff changeset
293 e.offset || defaultOffset,
3943
3c468ed76daf client:pdf-gen: correct default values of diagram size on pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3941
diff changeset
294 // use default width,height if they are missing in template definition
3c468ed76daf client:pdf-gen: correct default values of diagram size on pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3941
diff changeset
295 e.width ||
3967
5c896dee852b client: diagram mixin: removed unncessary method params
Markus Kottlaender <markus@intevation.de>
parents: 3966
diff changeset
296 (templateData.properties.paperSize === "a3" ? 318 : 230),
3943
3c468ed76daf client:pdf-gen: correct default values of diagram size on pdf
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3941
diff changeset
297 e.height ||
3967
5c896dee852b client: diagram mixin: removed unncessary method params
Markus Kottlaender <markus@intevation.de>
parents: 3966
diff changeset
298 (templateData.properties.paperSize === "a3" ? 104 : 110)
3807
876dc90c2825 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3802
diff changeset
299 );
3796
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
300 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
301 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
302 case "diagramlegend": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
303 this.addDiagramLegend(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
304 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
305 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
306 e.color || defaultColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
307 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
308 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
309 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
310 case "diagramtitle": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
311 this.addDiagramTitle(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
312 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
313 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
314 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
315 e.color || defaultColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
316 diagramTitle
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
317 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
318 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
319 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
320 case "text": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
321 this.addText(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
322 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
323 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
324 e.width || defaultWidth,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
325 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
326 e.color || defaultTextColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
327 e.text || ""
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
328 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
329 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
330 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
331 case "image": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
332 this.addImage(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
333 e.url,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
334 e.format || "",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
335 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
336 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
337 e.width || 90,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
338 e.height || 60
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
339 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
340 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
341 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
342 case "box": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
343 this.addBox(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
344 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
345 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
346 e.width || 90,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
347 e.height || 60,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
348 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
349 e.color || defaultBgColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
350 e.brcolor || defaultBorderColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
351 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
352 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
353 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
354 case "textbox": {
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
355 this.addTextBox(
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
356 e.position,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
357 e.offset || defaultOffset,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
358 e.width,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
359 e.height,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
360 e.rounding === 0 || e.rounding ? e.rounding : defaultRounding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
361 e.padding || defaultPadding,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
362 e.fontsize || defaultFontSize,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
363 e.color || defaultTextColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
364 e.background || defaultBgColor,
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
365 e.text || "",
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
366 e.brcolor || defaultBorderColor
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
367 );
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
368 break;
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
369 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
370 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
371 });
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
372 }
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
373 },
243316850889 client: improve pdf generation
Bernhard Reiter <bernhard@intevation.de>
parents: 3792
diff changeset
374 // 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
375 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
376 text = this.replacePlaceholders(text);
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
377 // 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
378 // 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
379 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
380 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
381 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
382 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
383 // 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
384 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
385 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
386 // 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
387 // 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
388 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
389 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
390 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
391 if (["bottomright", "bottomleft"].indexOf(position) !== -1) {
3919
2c9e96b02573 clinet: pdf-gen: improve addTextBox() function for template
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3906
diff changeset
392 y =
2c9e96b02573 clinet: pdf-gen: improve addTextBox() function for template
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3906
diff changeset
393 this.pdf.height -
2c9e96b02573 clinet: pdf-gen: improve addTextBox() function for template
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3906
diff changeset
394 offset.y * 0.3 -
2c9e96b02573 clinet: pdf-gen: improve addTextBox() function for template
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3906
diff changeset
395 this.getTextHeight(textLines.length);
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
396 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
397 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
398 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
399 replacePlaceholders(text) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
400 if (text.includes("{date}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
401 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
402 }
3350
8da2f7b9a04b client: diagram-template:remove unnecessary template properties and typo
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3344
diff changeset
403 // 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
404 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
405 var date = new Date();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
406 var dt =
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
407 (date.getDate() < 10 ? "0" : "") +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
408 date.getDate() +
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 (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
411 (date.getMonth() + 1) +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
412 "." +
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
413 date.getFullYear();
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
414 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
415 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
416 if (text.includes("{user}")) {
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
417 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
418 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
419 return text;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
420 },
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
421 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
422 let x = offset.x;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
423 let y = offset.y;
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
424 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
425 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
426 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
427 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
428 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
429 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
430 let image = new Image();
3881
7db6999962db mixins: if image given with no explict URL load either configured logo or placeholder
Thomas Junk <thomas.junk@intevation.de>
parents: 3862
diff changeset
431 image.src = url;
3544
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
432 if (format === "") {
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
433 let tmp = image.src.split(".");
067ad32fba69 client: diagram-template: improve values of template elements
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3500
diff changeset
434 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
435 }
3429
7bbab09cdf71 client: pdf-template:(minor) add missing parameter
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3408
diff changeset
436 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
437 },
3293
76f643d20f19 clinet: pdf-gen: (cleanup) remove some pdf-functions from pdftool
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3285
diff changeset
438 // 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
439 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
440 // 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
441 let x = offset.x;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
442 let y = offset.y;
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
443
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
444 // 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
445 // the size of the element
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
446 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
447 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
448 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
449 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
450 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
451 }
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
452 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
453 },
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
454 getTextHeight(numberOfLines) {
3790
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
455 // Return estimated height in mm.
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
456
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
457 // 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
458 // aka 25.4 / 72 mm
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
459 let fontSize = this.pdf.doc.getFontSize();
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
460 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
461 if (typeof this.pdf.doc.getLineHeightFactor !== "undefined") {
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
462 lineHeightFactor = this.pdf.doc.getLineHeightFactor();
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
463 }
60977e18e227 client: improve pdf generation getTextHeight()
Bernhard Reiter <bernhard@intevation.de>
parents: 3788
diff changeset
464 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
465 },
3285
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
466 // 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
467 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
468 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
469 y = offset.y;
3336
db1dc197dc43 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3293
diff changeset
470 this.pdf.doc.setFontSize(size);
3344
107de6def0c3 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3336
diff changeset
471 this.pdf.doc.setFontStyle("bold");
107de6def0c3 client: diagram-template: cleanup
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3336
diff changeset
472 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
473 let width =
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
474 (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
475 // 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
476 // 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
477 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
478 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
479 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
480 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
481 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
482 }
aac1ca73e92a client: diagram-template:(cleanup) move reusable pdf-functions to mixins.js
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3273
diff changeset
483 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
484 },
3141
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
485 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
486 this.pdf.doc.setDrawColor(brcolor);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
487 this.pdf.doc.setFillColor(color);
42324626f9e2 client: add box element for pdf-template (waterlevel)
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3137
diff changeset
488 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
489 },
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
490 addTextBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
491 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
492 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
493 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
494 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
495 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
496 padding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
497 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
498 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
499 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
500 text,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
501 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
502 ) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
503 this.pdf.doc.setFontSize(fontSize);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
504 text = this.replacePlaceholders(text);
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
505
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
506 if (!width) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
507 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
508 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
509 let textWidth = width - 2 * padding;
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
510 if (!height) {
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
511 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
512 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
513 }
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
514 this.addBox(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
515 position,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
516 offset,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
517 width,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
518 height,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
519 rounding,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
520 background,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
521 brcolor
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
522 );
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
523 this.addText(
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
524 position,
3919
2c9e96b02573 clinet: pdf-gen: improve addTextBox() function for template
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3906
diff changeset
525 { x: offset.x + padding, y: offset.y + padding * 2 },
3154
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
526 textWidth,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
527 fontSize,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
528 color,
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
529 text
b6c10b30d6bd client: pdf-gen: add one pdf-template element
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3145
diff changeset
530 );
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
531 },
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
532 applyChange() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
533 if (this.form.template.hasOwnProperty("properties")) {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
534 this.templateData = this.defaultTemplate;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
535 return;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
536 }
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
537 if (this.form.template) {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
538 this.loadTemplates("/templates/diagram/" + this.form.template.name)
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
539 .then(response => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
540 this.prepareImages(response.data.template_data.elements).then(
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
541 values => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
542 values.forEach(v => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
543 response.data.template_data.elements[v.index].url = v.url;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
544 });
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
545 this.templateData = response.data.template_data;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
546 }
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
547 );
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
548 })
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
549 .catch(e => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
550 const { status, data } = e.response;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
551 displayError({
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
552 title: this.$gettext("Backend Error"),
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
553 message: `${status}: ${data.message || data}`
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
554 });
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
555 });
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
556 }
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
557 }
3963
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
558 },
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
559 mounted() {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
560 this.templates[0] = this.defaultTemplate;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
561 this.form.template = this.templates[0];
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
562 this.templateData = this.form.template;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
563 HTTP.get("/templates/diagram", {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
564 headers: {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
565 "X-Gemma-Auth": localStorage.getItem("token"),
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
566 "Content-type": "text/xml; charset=UTF-8"
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
567 }
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
568 })
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
569 .then(response => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
570 if (response.data.length) {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
571 this.templates = response.data;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
572 this.form.template = this.templates[0];
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
573 this.templates[this.templates.length] = this.defaultTemplate;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
574 this.applyChange();
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
575 }
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
576 })
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
577 .catch(e => {
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
578 const { status, data } = e.response;
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
579 displayError({
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
580 title: this.$gettext("Backend Error"),
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
581 message: `${status}: ${data.message || data}`
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
582 });
feb53713bc2f client: moved duplicated code to mixins and unified code patterns in diagram components [WIP]
Markus Kottlaender <markus@intevation.de>
parents: 3943
diff changeset
583 });
3137
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
584 }
35c0da49eb89 client: pdf-gen: prepare pdf template for waterlevel diagram
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3079
diff changeset
585 };