From cc8f9277181f434e02aa28d8b54f7194f89744c8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 21 Dec 2024 15:30:11 +0200 Subject: [PATCH] chore(client/ts): port widgets/dialogs/delete_notes --- src/public/app/services/tree.ts | 5 +++ src/public/app/widgets/basic_widget.ts | 2 +- .../{delete_notes.js => delete_notes.ts} | 43 +++++++++++++++++-- 3 files changed, 46 insertions(+), 4 deletions(-) rename src/public/app/widgets/dialogs/{delete_notes.js => delete_notes.ts} (82%) diff --git a/src/public/app/services/tree.ts b/src/public/app/services/tree.ts index 3a5cc9952..f5f7bd4d8 100644 --- a/src/public/app/services/tree.ts +++ b/src/public/app/services/tree.ts @@ -6,9 +6,14 @@ import appContext from "../components/app_context.js"; export interface Node { getParent(): Node; + getChildren(): Node[]; + folder: boolean; + renderTitle(): void, data: { noteId?: string; isProtected?: boolean; + branchId: string; + noteType: string; } } diff --git a/src/public/app/widgets/basic_widget.ts b/src/public/app/widgets/basic_widget.ts index b1e91ec07..6d4f587f5 100644 --- a/src/public/app/widgets/basic_widget.ts +++ b/src/public/app/widgets/basic_widget.ts @@ -13,7 +13,7 @@ class BasicWidget extends Component { private classes: string[]; private childPositionCounter: number; private cssEl?: string; - private $widget!: JQuery; + protected $widget!: JQuery; _noteId!: string; constructor() { diff --git a/src/public/app/widgets/dialogs/delete_notes.js b/src/public/app/widgets/dialogs/delete_notes.ts similarity index 82% rename from src/public/app/widgets/dialogs/delete_notes.js rename to src/public/app/widgets/dialogs/delete_notes.ts index acfab51c4..197df968b 100644 --- a/src/public/app/widgets/dialogs/delete_notes.js +++ b/src/public/app/widgets/dialogs/delete_notes.ts @@ -4,6 +4,25 @@ import linkService from "../../services/link.js"; import utils from "../../services/utils.js"; import BasicWidget from "../basic_widget.js"; import { t } from "../../services/i18n.js"; +import FAttribute, { FAttributeRow } from "../../entities/fattribute.js"; + +// TODO: Use common with server. +interface Response { + noteIdsToBeDeleted: string[]; + brokenRelations: FAttributeRow[]; +} + +interface ResolveOptions { + proceed: boolean; + deleteAllClones?: boolean; + eraseNotes?: boolean; +} + +interface ShowDeleteNotesDialogOpts { + branchIdsToDelete: string[]; + callback: (opts: ResolveOptions) => void; + forceDeleteAllClones: boolean; +} const TPL = ` `; export default class DeleteNotesDialog extends BasicWidget { + + private branchIds: string[] | null; + private resolve!: (options: ResolveOptions) => void; + + private $content!: JQuery; + private $okButton!: JQuery; + private $cancelButton!: JQuery; + private $deleteNotesList!: JQuery; + private $brokenRelationsList!: JQuery; + private $deletedNotesCount!: JQuery; + private $noNoteToDeleteWrapper!: JQuery; + private $deleteNotesListWrapper!: JQuery; + private $brokenRelationsListWrapper!: JQuery; + private $brokenRelationsCount!: JQuery; + private $deleteAllClones!: JQuery; + private $eraseNotes!: JQuery; + + private forceDeleteAllClones?: boolean; + constructor() { super(); this.branchIds = null; - this.resolve = null; } doRender() { @@ -98,7 +135,7 @@ export default class DeleteNotesDialog extends BasicWidget { } async renderDeletePreview() { - const response = await server.post('delete-notes-preview', { + const response = await server.post('delete-notes-preview', { branchIdsToDelete: this.branchIds, deleteAllClones: this.forceDeleteAllClones || this.isDeleteAllClonesChecked() }); @@ -135,7 +172,7 @@ export default class DeleteNotesDialog extends BasicWidget { } } - async showDeleteNotesDialogEvent({branchIdsToDelete, callback, forceDeleteAllClones}) { + async showDeleteNotesDialogEvent({branchIdsToDelete, callback, forceDeleteAllClones}: ShowDeleteNotesDialogOpts) { this.branchIds = branchIdsToDelete; this.forceDeleteAllClones = forceDeleteAllClones;