| 
									
										
										
										
											2023-06-04 23:58:29 +02:00
										 |  |  | <script lang="ts"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     import DownloadButton from "./DownloadButton.svelte"; | 
					
						
							|  |  |  |     import ThemeViewState from "../../Models/ThemeViewState"; | 
					
						
							|  |  |  |     import {SvgToPdf} from "../../Utils/svgToPdf"; | 
					
						
							| 
									
										
										
										
											2023-06-07 00:14:20 +02:00
										 |  |  |     import type {PdfTemplateInfo} from "../../Utils/svgToPdf"; | 
					
						
							| 
									
										
										
										
											2023-06-04 23:58:29 +02:00
										 |  |  |     import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  |     import {Translation} from "../i18n/Translation"; | 
					
						
							|  |  |  |     import {Utils} from "../../Utils"; | 
					
						
							|  |  |  |     import {AvailableRasterLayers} from "../../Models/RasterLayers"; | 
					
						
							|  |  |  |     import Constants from "../../Models/Constants"; | 
					
						
							|  |  |  |     import Locale from "../i18n/Locale"; | 
					
						
							|  |  |  |     import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  |     import DownloadHelper from "./DownloadHelper"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     export let templateName: string | 
					
						
							| 
									
										
										
										
											2023-06-07 00:14:20 +02:00
										 |  |  |     export let state: ThemeViewState | 
					
						
							|  |  |  |     const template: PdfTemplateInfo = SvgToPdf.templates[templateName] | 
					
						
							|  |  |  |     console.log("template", template) | 
					
						
							|  |  |  |     let mainText: Translation = typeof template.description === "string" ? new Translation(template.description) : template.description | 
					
						
							|  |  |  |     let t = Translations.t.general.download | 
					
						
							| 
									
										
										
										
											2023-06-04 23:58:29 +02:00
										 |  |  |     const downloadHelper = new DownloadHelper(state) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-07 00:14:20 +02:00
										 |  |  |     async function constructPdf(_, title: string, status: UIEventSource<string>) { | 
					
						
							|  |  |  |         title=title.substring(0, title.length - 4)+"_"+template.format+"_"+template.orientation | 
					
						
							|  |  |  |         const templateUrls = SvgToPdf.templates[templateName].pages | 
					
						
							|  |  |  |         const templates: string[] = await Promise.all(templateUrls.map(url => Utils.download(url))) | 
					
						
							|  |  |  |         console.log("Templates are", templates) | 
					
						
							|  |  |  |         const bg = state.mapProperties.rasterLayer.data ?? AvailableRasterLayers.maplibre | 
					
						
							|  |  |  |         const creator = new SvgToPdf(title, templates, { | 
					
						
							|  |  |  |             state, | 
					
						
							|  |  |  |             freeComponentId: "belowmap", | 
					
						
							|  |  |  |             createImage: (key: string, width: string, height: string) => downloadHelper.createImage(key, width, height), | 
					
						
							|  |  |  |             textSubstitutions: <Record<string, string>>{ | 
					
						
							|  |  |  |                 "layout.title": state.layout.title, | 
					
						
							|  |  |  |                 layoutid: state.layout.id, | 
					
						
							|  |  |  |                 title: state.layout.title, | 
					
						
							|  |  |  |                 layoutImg: state.layout.icon, | 
					
						
							|  |  |  |                 version: Constants.vNumber, | 
					
						
							|  |  |  |                 date: new Date().toISOString().substring(0, 16), | 
					
						
							|  |  |  |                 background: new Translation(bg.properties.name).txt | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const unsub = creator.status.addCallbackAndRunD(s => { | 
					
						
							|  |  |  |             console.log("SVG creator status:", s) | 
					
						
							|  |  |  |             status?.setData(s); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         await creator.ExportPdf(Locale.language.data) | 
					
						
							|  |  |  |         unsub() | 
					
						
							|  |  |  |         return undefined | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-06-04 23:58:29 +02:00
										 |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-07 00:14:20 +02:00
										 |  |  | <DownloadButton construct={constructPdf} | 
					
						
							| 
									
										
										
										
											2023-06-04 23:58:29 +02:00
										 |  |  |                 extension="pdf" | 
					
						
							|  |  |  |                 helperText={t.downloadAsPdfHelper} | 
					
						
							| 
									
										
										
										
											2023-06-07 00:14:20 +02:00
										 |  |  |                 metaIsIncluded={false} | 
					
						
							|  |  |  |                 {mainText} | 
					
						
							|  |  |  |                 mimetype="application/pdf" | 
					
						
							|  |  |  |                 {state} | 
					
						
							| 
									
										
										
										
											2023-06-04 23:58:29 +02:00
										 |  |  | /> |