mirror of
https://github.com/zadam/trilium.git
synced 2025-10-21 15:49:00 +02:00
feat(client/print): get collections to render
This commit is contained in:
parent
e416caffe3
commit
e374b31a1c
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>
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user