import type { EventData } from "../components/app_context.js"; import { t } from "../services/i18n.js"; import NoteContextAwareWidget from "./note_context_aware_widget.js"; const TPL = /*html*/`
`; export default class SqlResultWidget extends NoteContextAwareWidget { private $resultContainer!: JQuery; private $noRowsAlert!: JQuery; isEnabled() { return this.note && this.note.mime === "text/x-sqlite;schema=trilium" && super.isEnabled(); } doRender() { this.$widget = $(TPL); this.$resultContainer = this.$widget.find(".sql-console-result-container"); this.$noRowsAlert = this.$widget.find(".sql-query-no-rows"); } async sqlQueryResultsEvent({ ntxId, results }: EventData<"sqlQueryResults">) { if (!this.isNoteContext(ntxId)) { return; } this.$noRowsAlert.toggle(results.length === 1 && results[0].length === 0); this.$resultContainer.toggle(results.length > 1 || results[0].length > 0); this.$resultContainer.empty(); for (const rows of results) { if (typeof rows === "object" && !Array.isArray(rows)) { // inserts, updates this.$resultContainer .empty() .show() .append($("
").text(JSON.stringify(rows, null, "\t")));

                continue;
            }

            if (!rows.length) {
                continue;
            }

            const $table = $('');
            this.$resultContainer.append($table);

            const result = rows[0];
            const $row = $("");

            for (const key in result) {
                $row.append($("");

                for (const key in result) {
                    $row.append($("
").text(key)); } $table.append($row); for (const result of rows) { const $row = $("
").text(result[key])); } $table.append($row); } } } }