import NoteContextAwareWidget from "./note_context_aware_widget.js"; const TPL = `
`; export default class SqlResultWidget extends NoteContextAwareWidget { 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}) { 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 = $('
").html(key)); } $table.append($row); for (const result of rows) { const $row = $(" |
---|
").html(result[key])); } $table.append($row); } } } } |