Mercurial > gemma
diff client/src/components/gauge/HydrologicalConditions.vue @ 3798:e008197e2215 yworks-svg2pdf
client: improve pdf generation
* Use generatePDF() from HydrologicalConditions.vue to unify code.
* Split out formatting of gaugeInfo, used from Waterlevel.vue
and HydrologicalConditions.vue.
* Make paper width and size setting in generatePDF() more readable
by grouping the conditions more logically.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Thu, 04 Jul 2019 10:15:46 +0200 |
parents | c66cdde873b5 |
children | 9b9140c65a96 |
line wrap: on
line diff
--- a/client/src/components/gauge/HydrologicalConditions.vue Thu Jul 04 10:12:19 2019 +0200 +++ b/client/src/components/gauge/HydrologicalConditions.vue Thu Jul 04 10:15:46 2019 +0200 @@ -108,7 +108,6 @@ import * as d3 from "d3"; import debounce from "debounce"; import { startOfYear, endOfYear } from "date-fns"; -import jsPDF from "jspdf-yworks"; import canvg from "canvg"; import { pdfgen } from "@/lib/mixins"; import { HTTP } from "@/lib/http"; @@ -237,119 +236,16 @@ ); }, downloadPDF() { - if (this.templateData) { - this.pdf.doc = new jsPDF( - "l", - "mm", - this.templateData.properties.paperSize - ); - // pdf width and height in millimeter (landscape) - this.pdf.width = - this.templateData.properties.paperSize === "a3" ? 420 : 297; - this.pdf.height = - this.templateData.properties.paperSize === "a3" ? 297 : 210; - // default values if some are missing in template - let defaultFontSize = 11, - defaultColor = "black", - defaultWidth = 70, - defaultTextColor = "black", - defaultBorderColor = "white", - defaultBgColor = "white", - defaultRounding = 2, - defaultPadding = 2, - defaultOffset = { x: 0, y: 0 }; - this.templateData.elements.forEach(e => { - switch (e.type) { - case "diagram": { - this.addDiagram( - e.position, - e.offset || defaultOffset, - e.width, - e.height - ); - break; - } - case "diagramtitle": { - let gaugeInfo = - this.selectedGauge.properties.objname + - " (" + - this.selectedGauge.id - .split(".")[1] - .replace(/[()]/g, "") - .split(",")[3] + - "): Hydrological Conditions " + - this.longtermInterval.join(" - "); - this.addDiagramTitle( - e.position, - e.offset || defaultOffset, - e.fontsize || defaultFontSize, - e.color || defaultColor, - gaugeInfo - ); - break; - } - case "diagramlegend": { - this.addDiagramLegend( - e.position, - e.offset || defaultOffset, - e.color || defaultColor - ); - break; - } - case "image": { - this.addImage( - e.url, - e.format || "", - e.position, - e.offset || defaultOffset, - e.width || 90, - e.height || 60 - ); - break; - } - case "text": { - this.addText( - e.position, - e.offset || defaultOffset, - e.width || defaultWidth, - e.fontsize || defaultFontSize, - e.color || defaultTextColor, - e.text || "" - ); - break; - } - case "box": { - this.addBox( - e.position, - e.offset || defaultOffset, - e.width || 90, - e.height || 60, - e.rounding === 0 || e.rounding ? e.rounding : defaultRounding, - e.color || defaultBgColor, - e.brcolor || defaultBorderColor - ); + let diagramTitle = + this.gaugeInfo(this.selectedGauge) + + ": Hydrological Conditions " + + this.longtermInterval.join(" - "); - break; - } - case "textbox": { - this.addTextBox( - e.position, - e.offset || defaultOffset, - e.width, - e.height, - e.rounding === 0 || e.rounding ? e.rounding : defaultRounding, - e.padding || defaultPadding, - e.fontsize || defaultFontSize, - e.color || defaultTextColor, - e.background || defaultBgColor, - e.text || "", - e.brcolor || defaultBorderColor - ); - break; - } - } - }); - } + this.generatePDF({ + templateData: this.templateData, + diagramTitle: diagramTitle + }); + this.pdf.doc.save( this.selectedGauge.properties.objname + " Hydrological-condition Diagram.pdf"