mirror of
https://github.com/zadam/trilium.git
synced 2025-10-21 15:49:00 +02:00
chore(react/collections): clean up old files
This commit is contained in:
parent
4040f8ba89
commit
e77e0c54f0
@ -1,8 +1,6 @@
|
||||
import FNote from "../../entities/fnote";
|
||||
import type { ViewModeArgs } from "../view_widgets/view_mode";
|
||||
|
||||
export const allViewTypes = ["list", "grid", "calendar", "table", "geoMap", "board"] as const;
|
||||
export type ArgsWithoutNoteId = Omit<ViewModeArgs, "noteIds">;
|
||||
export type ViewTypeOptions = typeof allViewTypes[number];
|
||||
|
||||
export interface ViewModeProps<T extends object> {
|
||||
|
@ -1,45 +0,0 @@
|
||||
import type FNote from "../../entities/fnote.js";
|
||||
import BoardView from "../view_widgets/board_view/index.js";
|
||||
import CalendarView from "../view_widgets/calendar_view.js";
|
||||
import GeoView from "../view_widgets/geo_view/index.js";
|
||||
import ListOrGridView from "../view_widgets/list_or_grid_view.js";
|
||||
import TableView from "../view_widgets/table_view/index.js";
|
||||
import type ViewMode from "../view_widgets/view_mode.js";
|
||||
|
||||
export default class NoteListRenderer {
|
||||
|
||||
private viewType: ViewTypeOptions;
|
||||
private args: ArgsWithoutNoteId;
|
||||
public viewMode?: ViewMode<any>;
|
||||
|
||||
constructor(args: ArgsWithoutNoteId) {
|
||||
this.args = args;
|
||||
this.viewType = this.#getViewType(args.parentNote);
|
||||
}
|
||||
|
||||
async renderList() {
|
||||
const args = this.args;
|
||||
const viewMode = this.#buildViewMode(args);
|
||||
this.viewMode = viewMode;
|
||||
await viewMode.beforeRender();
|
||||
return await viewMode.renderList();
|
||||
}
|
||||
|
||||
#buildViewMode(args: ViewModeArgs) {
|
||||
switch (this.viewType) {
|
||||
case "calendar":
|
||||
return new CalendarView(args);
|
||||
case "table":
|
||||
return new TableView(args);
|
||||
case "geoMap":
|
||||
return new GeoView(args);
|
||||
case "board":
|
||||
return new BoardView(args);
|
||||
case "list":
|
||||
case "grid":
|
||||
default:
|
||||
return new ListOrGridView(this.viewType, args);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,104 +0,0 @@
|
||||
import type { Calendar, DateSelectArg, DatesSetArg, EventChangeArg, EventDropArg, EventInput, EventSourceFunc, EventSourceFuncArg, EventSourceInput, LocaleInput, PluginDef } from "@fullcalendar/core";
|
||||
import froca from "../../services/froca.js";
|
||||
import ViewMode, { type ViewModeArgs } from "./view_mode.js";
|
||||
import type FNote from "../../entities/fnote.js";
|
||||
import server from "../../services/server.js";
|
||||
import { t } from "../../services/i18n.js";
|
||||
import options from "../../services/options.js";
|
||||
import dialogService from "../../services/dialog.js";
|
||||
import attributes from "../../services/attributes.js";
|
||||
import type { CommandListenerData, EventData } from "../../components/app_context.js";
|
||||
import utils, { hasTouchBar } from "../../services/utils.js";
|
||||
import date_notes from "../../services/date_notes.js";
|
||||
import appContext from "../../components/app_context.js";
|
||||
import type { EventImpl } from "@fullcalendar/core/internal";
|
||||
import debounce, { type DebouncedFunction } from "debounce";
|
||||
import type { TouchBarItem } from "../../components/touch_bar.js";
|
||||
import type { SegmentedControlSegment } from "electron";
|
||||
import { LOCALE_IDS } from "@triliumnext/commons";
|
||||
|
||||
|
||||
export default class CalendarView extends ViewMode<{}> {
|
||||
|
||||
private $root: JQuery<HTMLElement>;
|
||||
private $calendarContainer: JQuery<HTMLElement>;
|
||||
private calendar?: Calendar;
|
||||
private isCalendarRoot: boolean;
|
||||
|
||||
constructor(args: ViewModeArgs) {
|
||||
super(args, "calendar");
|
||||
|
||||
this.$root = $(TPL);
|
||||
this.$calendarContainer = this.$root.find(".calendar-container");
|
||||
args.$parent.append(this.$root);
|
||||
}
|
||||
|
||||
#onDatesSet(e: DatesSetArg) {
|
||||
if (hasTouchBar) {
|
||||
appContext.triggerCommand("refreshTouchBar");
|
||||
}
|
||||
}
|
||||
|
||||
buildTouchBarCommand({ TouchBar, buildIcon }: CommandListenerData<"buildTouchBar">) {
|
||||
if (!this.calendar) {
|
||||
return;
|
||||
}
|
||||
|
||||
const items: TouchBarItem[] = [];
|
||||
const $toolbarItems = this.$calendarContainer.find(".fc-toolbar-chunk .fc-button-group, .fc-toolbar-chunk > button");
|
||||
|
||||
for (const item of $toolbarItems) {
|
||||
// Button groups.
|
||||
if (item.classList.contains("fc-button-group")) {
|
||||
let mode: "single" | "buttons" = "single";
|
||||
let selectedIndex = 0;
|
||||
const segments: SegmentedControlSegment[] = [];
|
||||
const subItems = item.childNodes as NodeListOf<HTMLElement>;
|
||||
let index = 0;
|
||||
for (const subItem of subItems) {
|
||||
if (subItem.ariaPressed === "true") {
|
||||
selectedIndex = index;
|
||||
}
|
||||
index++;
|
||||
|
||||
|
||||
// Icon button.
|
||||
const iconEl = subItem.querySelector("span.fc-icon");
|
||||
let icon: string | null = null;
|
||||
if (iconEl?.classList.contains("fc-icon-chevron-left")) {
|
||||
icon = "NSImageNameTouchBarGoBackTemplate";
|
||||
mode = "buttons";
|
||||
} else if (iconEl?.classList.contains("fc-icon-chevron-right")) {
|
||||
icon = "NSImageNameTouchBarGoForwardTemplate";
|
||||
mode = "buttons";
|
||||
}
|
||||
|
||||
if (icon) {
|
||||
segments.push({
|
||||
icon: buildIcon(icon)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
items.push(new TouchBar.TouchBarSegmentedControl({
|
||||
mode,
|
||||
segments,
|
||||
selectedIndex,
|
||||
change: (selectedIndex, isSelected) => subItems[selectedIndex].click()
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
|
||||
// Standalone item.
|
||||
if (item.innerText) {
|
||||
items.push(new TouchBar.TouchBarButton({
|
||||
label: item.innerText,
|
||||
click: () => item.click()
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
import type { EventData } from "../../components/app_context.js";
|
||||
import appContext from "../../components/app_context.js";
|
||||
import Component from "../../components/component.js";
|
||||
import type FNote from "../../entities/fnote.js";
|
||||
import { ViewTypeOptions } from "../collections/interface.js";
|
||||
import ViewModeStorage from "./view_mode_storage.js";
|
||||
|
||||
export interface ViewModeArgs {
|
||||
$parent: JQuery<HTMLElement>;
|
||||
parentNote: FNote;
|
||||
parentNotePath?: string | null;
|
||||
showNotePath?: boolean;
|
||||
}
|
||||
|
||||
export default abstract class ViewMode<T extends object> extends Component {
|
||||
|
||||
private _viewStorage: ViewModeStorage<T> | null;
|
||||
protected parentNote: FNote;
|
||||
protected viewType: ViewTypeOptions;
|
||||
protected noteIds: string[];
|
||||
protected args: ViewModeArgs;
|
||||
|
||||
constructor(args: ViewModeArgs, viewType: ViewTypeOptions) {
|
||||
super();
|
||||
this.parentNote = args.parentNote;
|
||||
this._viewStorage = null;
|
||||
// note list must be added to the DOM immediately, otherwise some functionality scripting (canvas) won't work
|
||||
args.$parent.empty();
|
||||
this.viewType = viewType;
|
||||
this.args = args;
|
||||
this.noteIds = [];
|
||||
}
|
||||
|
||||
async beforeRender() {
|
||||
await this.#refreshNoteIds();
|
||||
}
|
||||
|
||||
abstract renderList(): Promise<JQuery<HTMLElement> | undefined>;
|
||||
|
||||
/**
|
||||
* Called whenever an "entitiesReloaded" event has been received by the parent component.
|
||||
*
|
||||
* @param e the event data.
|
||||
* @return {@code true} if the view should be re-rendered, a falsy value otherwise.
|
||||
*/
|
||||
async onEntitiesReloaded(e: EventData<"entitiesReloaded">): Promise<boolean | void> {
|
||||
// Do nothing by default.
|
||||
}
|
||||
|
||||
async entitiesReloadedEvent(e: EventData<"entitiesReloaded">) {
|
||||
if (await this.onEntitiesReloaded(e)) {
|
||||
appContext.triggerEvent("refreshNoteList", { noteId: this.parentNote.noteId });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user