Notes/src/public/app/widgets/containers/shortcut_container.js

61 lines
2.2 KiB
JavaScript
Raw Normal View History

2022-08-04 23:00:32 +02:00
import FlexContainer from "./flex_container.js";
import froca from "../../services/froca.js";
import ButtonWidget from "../buttons/button_widget.js";
2022-08-05 16:44:26 +02:00
import CalendarWidget from "../buttons/calendar.js";
import appContext from "../../services/app_context.js";
2022-08-04 23:00:32 +02:00
export default class ShortcutContainer extends FlexContainer {
constructor() {
super('column');
this.id('shortcut-container');
this.css('height', '100%');
this.filling();
this.load();
}
async load() {
this.children = [];
const visibleShortcutsRoot = await froca.getNote('lb_visibleshortcuts');
for (const shortcut of await visibleShortcutsRoot.getChildNotes()) {
2022-08-05 16:44:26 +02:00
if (shortcut.getLabelValue("command")) {
this.child(new ButtonWidget()
.title(shortcut.title)
.icon(shortcut.getIcon())
.command(shortcut.getLabelValue("command")));
} else if (shortcut.hasRelation('targetNote')) {
this.child(new ButtonWidget()
.title(shortcut.title)
.icon(shortcut.getIcon())
.onClick(() => appContext.tabManager.openTabWithNoteWithHoisting(shortcut.getRelationValue('targetNote'), true)));
} else {
const builtinWidget = shortcut.getLabelValue("builtinWidget");
if (builtinWidget) {
if (builtinWidget === 'calendar') {
this.child(new CalendarWidget(shortcut.title, shortcut.getIcon()));
} else {
console.log(`Unrecognized builtin widget ${builtinWidget} for shortcut ${shortcut.noteId} "${shortcut.title}"`);
}
}
}
2022-08-04 23:00:32 +02:00
}
this.$widget.empty();
this.renderChildren();
this.handleEventInChildren('initialRenderComplete');
}
entitiesReloadedEvent({loadResults}) {
2022-08-05 16:44:26 +02:00
if (loadResults.getNoteIds().find(noteId => noteId.startsWith("lb_"))
|| loadResults.getBranches().find(branch => branch.branchId.startsWith("lb_"))
|| loadResults.getAttributes().find(attr => attr.noteId.startsWith("lb_"))) {
2022-08-04 23:00:32 +02:00
this.load();
}
}
}