import NoteContextAwareWidget from "../note_context_aware_widget.js"; import NoteMapWidget from "../note_map.js"; import { t } from "../../services/i18n.js"; const TPL = `
`; export default class NoteMapRibbonWidget extends NoteContextAwareWidget { constructor() { super(); this.noteMapWidget = new NoteMapWidget('ribbon'); this.child(this.noteMapWidget); } get name() { return "noteMap"; } get toggleCommand() { return "toggleRibbonTabNoteMap"; } getTitle() { return { show: this.isEnabled(), title: t("note_map.title"), icon: 'bx bxs-network-chart' }; } doRender() { this.$widget = $(TPL); this.contentSized(); this.$container = this.$widget.find(".note-map-container"); this.$container.append(this.noteMapWidget.render()); this.openState = 'small'; this.$openFullButton = this.$widget.find('.open-full-button'); this.$openFullButton.on('click', () => { this.setFullHeight(); this.$openFullButton.hide(); this.$collapseButton.show(); this.openState = 'full'; this.noteMapWidget.setDimensions(); }); this.$collapseButton = this.$widget.find('.collapse-button'); this.$collapseButton.on('click', () => { this.setSmallSize(); this.$openFullButton.show(); this.$collapseButton.hide(); this.openState = 'small'; this.noteMapWidget.setDimensions(); }); const handleResize = () => { if (!this.noteMapWidget.graph) { // no graph has been even rendered return; } if (this.openState === 'full') { this.setFullHeight(); } else if (this.openState === 'small') { this.setSmallSize(); } } new ResizeObserver(handleResize).observe(this.$widget[0]); } setSmallSize() { const SMALL_SIZE_HEIGHT = 300; const width = this.$widget.width(); this.$widget.find('.note-map-container') .height(SMALL_SIZE_HEIGHT) .width(width); } setFullHeight() { const {top} = this.$widget[0].getBoundingClientRect(); const height = $(window).height() - top; const width = this.$widget.width(); this.$widget.find('.note-map-container') .height(height) .width(width); } }