diff --git a/packages/panel/src/components/Panel.svelte b/packages/panel/src/components/Panel.svelte index e87244e632e..ad6f12c5a3c 100644 --- a/packages/panel/src/components/Panel.svelte +++ b/packages/panel/src/components/Panel.svelte @@ -22,6 +22,7 @@ import { Component, deviceOptionsStore as deviceInfo, + printModeStore, Panel, Scroller, resizeObserver, @@ -122,6 +123,8 @@ startScrollHeightCheck() } }) + + $: max = useMaxWidth === true || $printModeStore {#if $deviceInfo.isMobile} -
+
{#if showActivity} {#key object._id} @@ -265,7 +268,7 @@
0} style:--side-content-space={`${sideContentSpace}px`} > @@ -296,7 +299,7 @@ >
0} style:--side-content-space={`${sideContentSpace}px`} use:resizeObserver={(element) => { diff --git a/packages/presentation/src/components/PDFViewer.svelte b/packages/presentation/src/components/PDFViewer.svelte index f8a6615fcd7..550d219f444 100644 --- a/packages/presentation/src/components/PDFViewer.svelte +++ b/packages/presentation/src/components/PDFViewer.svelte @@ -72,6 +72,7 @@ + {#if !isLoading && src !== ''}
- + {#if selectedAside === 'references'} {:else if selectedAside === 'history'} - + {/if} - +
@@ -438,7 +451,7 @@
diff --git a/plugins/guest-resources/src/components/Guest.svelte b/plugins/guest-resources/src/components/Guest.svelte index 94454a5ce7c..57795bf50ad 100644 --- a/plugins/guest-resources/src/components/Guest.svelte +++ b/plugins/guest-resources/src/components/Guest.svelte @@ -25,6 +25,7 @@ PanelInstance, Popup, PopupAlignment, + printModeStore, ResolvedLocation, TooltipInstance, areLocationsEqual, @@ -287,7 +288,12 @@
- + diff --git a/plugins/print-assets/lang/cs.json b/plugins/print-assets/lang/cs.json index 35e5f9deb2e..3aedd749459 100644 --- a/plugins/print-assets/lang/cs.json +++ b/plugins/print-assets/lang/cs.json @@ -3,6 +3,8 @@ "PrintToPDF": "Tisk do PDF", "PrintingDocumentOf": "Tisk dokumentu {current} z {total}", "DownloadAll": "Stáhnout vše", - "PrintFailed": "Tisk se nezdařil" + "PrintFailed": "Tisk se nezdařil", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/de.json b/plugins/print-assets/lang/de.json index 88dbeb4e87e..cb5e5fba729 100644 --- a/plugins/print-assets/lang/de.json +++ b/plugins/print-assets/lang/de.json @@ -3,6 +3,8 @@ "PrintToPDF": "Als PDF drucken", "PrintingDocumentOf": "Dokument {current} von {total} wird gedruckt", "DownloadAll": "Alle herunterladen", - "PrintFailed": "Druck fehlgeschlagen" + "PrintFailed": "Druck fehlgeschlagen", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/en.json b/plugins/print-assets/lang/en.json index 30664b88256..363e9e94080 100644 --- a/plugins/print-assets/lang/en.json +++ b/plugins/print-assets/lang/en.json @@ -3,6 +3,8 @@ "PrintToPDF": "Print to PDF", "PrintingDocumentOf": "Printing document {current} of {total}", "DownloadAll": "Download all", - "PrintFailed": "Print failed" + "PrintFailed": "Print failed", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/es.json b/plugins/print-assets/lang/es.json index 6a93e2d61f0..fdec7b58ecb 100644 --- a/plugins/print-assets/lang/es.json +++ b/plugins/print-assets/lang/es.json @@ -3,6 +3,8 @@ "PrintToPDF": "Imprimir en PDF", "PrintingDocumentOf": "Imprimiendo documento {current} de {total}", "DownloadAll": "Descargar todo", - "PrintFailed": "Error al imprimir" + "PrintFailed": "Error al imprimir", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/fr.json b/plugins/print-assets/lang/fr.json index e625905d4ab..0cee40956ca 100644 --- a/plugins/print-assets/lang/fr.json +++ b/plugins/print-assets/lang/fr.json @@ -3,6 +3,8 @@ "PrintToPDF": "Imprimer en PDF", "PrintingDocumentOf": "Impression du document {current} sur {total}", "DownloadAll": "Tout télécharger", - "PrintFailed": "Échec de l'impression" + "PrintFailed": "Échec de l'impression", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } -} \ No newline at end of file +} diff --git a/plugins/print-assets/lang/it.json b/plugins/print-assets/lang/it.json index b061a3dd8fc..ab4ef1e2346 100644 --- a/plugins/print-assets/lang/it.json +++ b/plugins/print-assets/lang/it.json @@ -3,6 +3,8 @@ "PrintToPDF": "Stampa in PDF", "PrintingDocumentOf": "Stampa documento {current} di {total}", "DownloadAll": "Scarica tutto", - "PrintFailed": "Stampa non riuscita" + "PrintFailed": "Stampa non riuscita", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/ja.json b/plugins/print-assets/lang/ja.json index 07db0f516a4..b7e1774a67b 100644 --- a/plugins/print-assets/lang/ja.json +++ b/plugins/print-assets/lang/ja.json @@ -3,6 +3,8 @@ "PrintToPDF": "PDFとして印刷", "PrintingDocumentOf": "ドキュメント {current} / {total} を印刷中", "DownloadAll": "すべてダウンロード", - "PrintFailed": "印刷に失敗しました" + "PrintFailed": "印刷に失敗しました", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/ko.json b/plugins/print-assets/lang/ko.json index 2209b543971..89ecce9dbf0 100644 --- a/plugins/print-assets/lang/ko.json +++ b/plugins/print-assets/lang/ko.json @@ -3,6 +3,8 @@ "PrintToPDF": "PDF로 인쇄", "PrintingDocumentOf": "문서 {current} / {total} 인쇄 중", "DownloadAll": "모두 다운로드", - "PrintFailed": "인쇄 실패" + "PrintFailed": "인쇄 실패", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/pt-br.json b/plugins/print-assets/lang/pt-br.json index 3b47198d991..f29c02ea35f 100644 --- a/plugins/print-assets/lang/pt-br.json +++ b/plugins/print-assets/lang/pt-br.json @@ -3,6 +3,8 @@ "PrintToPDF": "Imprimir em PDF", "PrintingDocumentOf": "Imprimindo documento {current} de {total}", "DownloadAll": "Baixar tudo", - "PrintFailed": "Falha na impressão" + "PrintFailed": "Falha na impressão", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/pt.json b/plugins/print-assets/lang/pt.json index 1160ac18655..fb63e170635 100644 --- a/plugins/print-assets/lang/pt.json +++ b/plugins/print-assets/lang/pt.json @@ -3,6 +3,8 @@ "PrintToPDF": "Imprimir em PDF", "PrintingDocumentOf": "Imprimindo documento {current} de {total}", "DownloadAll": "Descarregar tudo", - "PrintFailed": "Falha na impressão" + "PrintFailed": "Falha na impressão", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/ru.json b/plugins/print-assets/lang/ru.json index 70368c16c61..b31815c547f 100644 --- a/plugins/print-assets/lang/ru.json +++ b/plugins/print-assets/lang/ru.json @@ -3,6 +3,8 @@ "PrintToPDF": "Печать в PDF", "PrintingDocumentOf": "Печать документа {current} из {total}", "DownloadAll": "Скачать все", - "PrintFailed": "Ошибка печати" + "PrintFailed": "Ошибка печати", + "PrintSettings": "Настройки печати", + "LandscapeMode": "Ландшафтный режим" } } diff --git a/plugins/print-assets/lang/tr.json b/plugins/print-assets/lang/tr.json index 0394202be8e..94aebc650d1 100644 --- a/plugins/print-assets/lang/tr.json +++ b/plugins/print-assets/lang/tr.json @@ -3,6 +3,8 @@ "PrintToPDF": "PDF'e yazdır", "PrintingDocumentOf": "Belge yazdırılıyor {current} / {total}", "DownloadAll": "Tümünü indir", - "PrintFailed": "Yazdırma başarısız" + "PrintFailed": "Yazdırma başarısız", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-assets/lang/zh.json b/plugins/print-assets/lang/zh.json index f934b55a471..369210324b3 100644 --- a/plugins/print-assets/lang/zh.json +++ b/plugins/print-assets/lang/zh.json @@ -3,6 +3,8 @@ "PrintToPDF": "打印为 PDF", "PrintingDocumentOf": "正在打印文档 {current} / {total}", "DownloadAll": "全部下载", - "PrintFailed": "打印失败" + "PrintFailed": "打印失败", + "PrintSettings": "Print settings", + "LandscapeMode": "Landscape mode" } } diff --git a/plugins/print-resources/src/components/PrintToPDF.svelte b/plugins/print-resources/src/components/PrintToPDF.svelte index 3a6b50af14b..b16c45e4a81 100644 --- a/plugins/print-resources/src/components/PrintToPDF.svelte +++ b/plugins/print-resources/src/components/PrintToPDF.svelte @@ -9,12 +9,23 @@ import presentation, { PDFViewer, createQuery, getClient } from '@hcengineering/presentation' import guest, { PublicLink, createPublicLink } from '@hcengineering/guest' import view from '@hcengineering/view' - import { Location } from '@hcengineering/ui' + import { + Button, + DropdownIntlItem, + eventToHTMLElement, + IconCheck, + IconMoreH, + Location, + ModernPopup, + showPopup + } from '@hcengineering/ui' import { getDocTitle, getObjectLinkFragment } from '@hcengineering/view-resources' - import { printToPDF } from '@hcengineering/print' + import { printToPDF, type PrintPageOrientation } from '@hcengineering/print' import { signPDF } from '@hcengineering/sign' import { getMetadata } from '@hcengineering/platform' + import print from '../plugin' + export let object: Doc export let signed: boolean = false @@ -25,11 +36,26 @@ let link: PublicLink | undefined = undefined let file: Ref | undefined = undefined let title = '' + let orientation: PrintPageOrientation = 'portrait' + let printRequest = 0 $: objId = object?._id + $: printSettingsItems = [ + { + id: 'landscape', + label: print.string.LandscapeMode, + icon: orientation === 'landscape' ? IconCheck : undefined + } + ] satisfies DropdownIntlItem[] + + function nextPrintRequest (): number { + printRequest += 1 + return printRequest + } const linkQuery = createQuery() $: { + nextPrintRequest() link = undefined file = undefined isLoading = true @@ -47,16 +73,26 @@ $: if (link?.url !== undefined && link.url !== '' && file === undefined) { const token = getMetadata(presentation.metadata.Token) ?? '' + const request = nextPrintRequest() - printToPDF(link.url, token).then( + printToPDF(link.url, token, { orientation }).then( (res) => { + if (request !== printRequest) { + return + } if (signed) { signPDF(res, token).then( (signedRes) => { + if (request !== printRequest) { + return + } file = signedRes as Ref isLoading = false }, (err) => { + if (request !== printRequest) { + return + } Analytics.handleError(err) isLoading = false } @@ -67,6 +103,9 @@ } }, (err) => { + if (request !== printRequest) { + return + } Analytics.handleError(err) isLoading = false } @@ -101,7 +140,43 @@ title = value !== '' ? value + '.pdf' : '' } + function toggleOrientation (): void { + nextPrintRequest() + orientation = orientation === 'landscape' ? 'portrait' : 'landscape' + file = undefined + isLoading = true + } + + function handlePrintSetting (id: 'landscape' | 'contentOnly'): void { + if (id === 'landscape') { + toggleOrientation() + } + } + + function openPrintSettings (event: MouseEvent): void { + showPopup( + ModernPopup, + { items: printSettingsItems }, + eventToHTMLElement(event), + (result: 'landscape' | 'contentOnly' | undefined) => { + if (result !== undefined) { + handlePrintSetting(result) + } + } + ) + } + $: void updateDocTitle(object) - + + +