chore(client/ts): port widgets/dialogs/delete_notes

This commit is contained in:
Elian Doran 2024-12-21 15:30:11 +02:00
parent 00870ba807
commit cc8f927718
No known key found for this signature in database
3 changed files with 46 additions and 4 deletions

View File

@ -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;
}
}

View File

@ -13,7 +13,7 @@ class BasicWidget extends Component {
private classes: string[];
private childPositionCounter: number;
private cssEl?: string;
private $widget!: JQuery<HTMLElement>;
protected $widget!: JQuery<HTMLElement>;
_noteId!: string;
constructor() {

View File

@ -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 = `
<div class="delete-notes-dialog modal mx-auto" tabindex="-1" role="dialog">
@ -54,11 +73,29 @@ const TPL = `
</div>`;
export default class DeleteNotesDialog extends BasicWidget {
private branchIds: string[] | null;
private resolve!: (options: ResolveOptions) => void;
private $content!: JQuery<HTMLElement>;
private $okButton!: JQuery<HTMLElement>;
private $cancelButton!: JQuery<HTMLElement>;
private $deleteNotesList!: JQuery<HTMLElement>;
private $brokenRelationsList!: JQuery<HTMLElement>;
private $deletedNotesCount!: JQuery<HTMLElement>;
private $noNoteToDeleteWrapper!: JQuery<HTMLElement>;
private $deleteNotesListWrapper!: JQuery<HTMLElement>;
private $brokenRelationsListWrapper!: JQuery<HTMLElement>;
private $brokenRelationsCount!: JQuery<HTMLElement>;
private $deleteAllClones!: JQuery<HTMLElement>;
private $eraseNotes!: JQuery<HTMLElement>;
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<Response>('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;