mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	feat(client/print): get collections to render
This commit is contained in:
		
							
								
								
									
										5
									
								
								apps/client/src/print.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								apps/client/src/print.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | html, | ||||||
|  | body { | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  | } | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| import { JSX } from "preact/jsx-runtime"; | import { JSX } from "preact/jsx-runtime"; | ||||||
| import FNote from "./entities/fnote"; | import FNote from "./entities/fnote"; | ||||||
| import { render } from "preact"; | import { render } from "preact"; | ||||||
| import { getComponentByViewTypeForPrint, useNoteIds, useViewModeConfig } from "./widgets/collections/NoteList"; | import { CustomNoteList } from "./widgets/collections/NoteList"; | ||||||
| import { ViewTypeOptions } from "./widgets/collections/interface"; | import "./print.css"; | ||||||
|  |  | ||||||
| async function main() { | async function main() { | ||||||
|     const noteId = window.location.pathname.split("/")[2]; |     const noteId = window.location.pathname.split("/")[2]; | ||||||
| @@ -13,33 +13,26 @@ async function main() { | |||||||
|  |  | ||||||
|     let el: JSX.Element | null = null; |     let el: JSX.Element | null = null; | ||||||
|     if (note.type === "book") { |     if (note.type === "book") { | ||||||
|         el = <Collection note={note} />; |         el = handleCollection(note); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     render(el, document.body); |     render(( | ||||||
| } |  | ||||||
|  |  | ||||||
| function Collection({ note }: { note: FNote }) { |  | ||||||
|     const viewType = note.getLabelValue("viewType") as ViewTypeOptions ?? "grid"; |  | ||||||
|     const viewConfig = useViewModeConfig(note, viewType); |  | ||||||
|     const noteIds = useNoteIds(note, viewType, "print"); |  | ||||||
|     const component = getComponentByViewTypeForPrint(viewType, { |  | ||||||
|         saveConfig() { |  | ||||||
|             // While printing we don't allow for interactivity, so saving the config is a no-op. |  | ||||||
|         }, |  | ||||||
|         viewConfig: viewConfig?.[0] ?? {}, |  | ||||||
|         note, |  | ||||||
|         notePath: note.getBestNotePath().join("/"), |  | ||||||
|         noteIds, |  | ||||||
|         highlightedTokens: null |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     return ( |  | ||||||
|         <> |         <> | ||||||
|             <h1>{note.title}</h1> |             <h1>{note.title}</h1> | ||||||
|  |             {el} | ||||||
|             {component} |  | ||||||
|         </> |         </> | ||||||
|  |     ), document.body); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function handleCollection(note: FNote) { | ||||||
|  |     return ( | ||||||
|  |         <CustomNoteList | ||||||
|  |             isEnabled | ||||||
|  |             note={note} | ||||||
|  |             notePath={note.getBestNotePath().join("/")} | ||||||
|  |             ntxId="print" | ||||||
|  |             highlightedTokens={null} | ||||||
|  |         /> | ||||||
|     ); |     ); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,7 +13,6 @@ import { subscribeToMessages, unsubscribeToMessage as unsubscribeFromMessage } f | |||||||
| import { WebSocketMessage } from "@triliumnext/commons"; | import { WebSocketMessage } from "@triliumnext/commons"; | ||||||
| import froca from "../../services/froca"; | import froca from "../../services/froca"; | ||||||
| import PresentationView from "./presentation"; | import PresentationView from "./presentation"; | ||||||
| import PresentationPrintView from "./presentation/print"; |  | ||||||
|  |  | ||||||
| interface NoteListProps { | interface NoteListProps { | ||||||
|     note: FNote | null | undefined; |     note: FNote | null | undefined; | ||||||
| @@ -35,7 +34,7 @@ export function SearchNoteList<T extends object>(props: Omit<NoteListProps, "isE | |||||||
|     return <CustomNoteList {...props} isEnabled={true} /> |     return <CustomNoteList {...props} isEnabled={true} /> | ||||||
| } | } | ||||||
|  |  | ||||||
| function CustomNoteList<T extends object>({ note, isEnabled: shouldEnable, notePath, highlightedTokens, displayOnlyCollections, ntxId }: NoteListProps) { | export function CustomNoteList<T extends object>({ note, isEnabled: shouldEnable, notePath, highlightedTokens, displayOnlyCollections, ntxId }: NoteListProps) { | ||||||
|     const widgetRef = useRef<HTMLDivElement>(null); |     const widgetRef = useRef<HTMLDivElement>(null); | ||||||
|     const viewType = useNoteViewType(note); |     const viewType = useNoteViewType(note); | ||||||
|     const noteIds = useNoteIds(note, viewType, ntxId); |     const noteIds = useNoteIds(note, viewType, ntxId); | ||||||
| @@ -111,20 +110,6 @@ function getComponentByViewType(viewType: ViewTypeOptions, props: ViewModeProps< | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| export function getComponentByViewTypeForPrint(viewType: ViewTypeOptions, props: ViewModeProps<any>) { |  | ||||||
|     switch (viewType) { |  | ||||||
|         case "list": |  | ||||||
|         case "grid": |  | ||||||
|         case "geoMap": |  | ||||||
|         case "calendar": |  | ||||||
|         case "table": |  | ||||||
|         case "board": |  | ||||||
|             return null; |  | ||||||
|         case "presentation": |  | ||||||
|             return <PresentationPrintView {...props} /> |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function useNoteViewType(note?: FNote | null): ViewTypeOptions | undefined { | function useNoteViewType(note?: FNote | null): ViewTypeOptions | undefined { | ||||||
|     const [ viewType ] = useNoteLabel(note, "viewType"); |     const [ viewType ] = useNoteLabel(note, "viewType"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +0,0 @@ | |||||||
| import { ViewModeProps } from "../interface"; |  | ||||||
|  |  | ||||||
| export default function PresentationPrintView(props: ViewModeProps<any>) { |  | ||||||
|     return <p>Hello world.</p> |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user