MapEditor plugin 的一些截屏

博客提及MapEditor plugin的一些截屏,更多信息需参考前一篇文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更多信息,请参考我前一篇文章。

// 文件: main.js module.exports = async function(context) { const {app, plugin} = context; const {Modal, Setting, MarkdownView} = app.obsidian; class DataviewGeneratorModal extends Modal { constructor(app) { super(app); this.fields = ['file.name', 'file.mtime']; this.sortField = 'file.mtime'; this.sortDirection = 'desc'; this.filter = ''; this.limit = 10; this.tableColumns = 1; } onOpen() { const {contentEl} = this; contentEl.empty(); contentEl.createEl('h2', {text: 'Dataview 查询生成器'}); // 字段设置 new Setting(contentEl) .setName('显示字段') .setDesc('用英文逗号分隔 (例如: file.name, rating)') .addText(text => text .setValue(this.fields.join(', ')) .onChange(value => this.fields = value.split(',').map(f => f.trim())) ); // 排序设置 new Setting(contentEl) .setName('排序字段') .addText(text => text .setValue(this.sortField) .onChange(value => this.sortField = value) ) .addDropdown(dropdown => dropdown .addOption('asc', '升序') .addOption('desc', '降序') .setValue(this.sortDirection) .onChange(value => this.sortDirection = value) ); // 过滤条件 new Setting(contentEl) .setName('过滤条件') .setDesc('Dataview JS 表达式 (例如: file.folder = "projects")') .addTextArea(text => text .setValue(this.filter) .onChange(value => this.filter = value) .setPlaceholder('例如: contains(tags, "#todo")') .inputEl.style.minHeight = '100px' ); // 其他选项 new Setting(contentEl) .setName('结果限制') .addText(text => text .setValue(String(this.limit)) .onChange(value => this.limit = parseInt(value) || 0) ); new Setting(contentEl) .setName('表格列数') .addDropdown(dropdown => dropdown .addOption('1', '1列') .addOption('2', '2列') .addOption('3', '3列') .setValue(String(this.tableColumns)) .onChange(value => this.tableColumns = parseInt(value)) ); // 生成按钮 new Setting(contentEl) .addButton(button => button .setButtonText('生成查询') .setCta() .onClick(() => this.generateQuery()) ); } async generateQuery() { let dvQuery = '```dataview\n'; dvQuery += 'TABLE '; // 处理字段 if (this.fields.length > 0) { dvQuery += this.fields.join(', '); } else { dvQuery += 'file.name'; } // 处理排序 if (this.sortField) { dvQuery += `\nSORT ${this.sortField} ${this.sortDirection.toUpperCase()}`; } // 处理过滤 if (this.filter) { dvQuery += `\nWHERE ${this.filter}`; } // 处理限制 if (this.limit > 0) { dvQuery += `\nLIMIT ${this.limit}`; } // 处理表格列 if (this.tableColumns > 1) { dvQuery += `\nGROUP BY file.folder AS "Folder"`; for (let i = 1; i < this.tableColumns; i++) { dvQuery += `, "Column${i+1}"`; } } dvQuery += '\n```'; // 插入到当前文件 const activeView = this.app.workspace.getActiveViewOfType(MarkdownView); if (activeView) { const editor = activeView.editor; const cursor = editor.getCursor(); editor.replaceRange(dvQuery + "\n\n", cursor); } else { const activeFile = this.app.workspace.getActiveFile(); if (activeFile) { const content = await this.app.vault.read(activeFile); await this.app.vault.modify(activeFile, content + "\n\n" + dvQuery); } } this.close(); } onClose() { const {contentEl} = this; contentEl.empty(); } } // 注册命令 plugin.addCommand({ id: 'generate-dataview-query', name: '生成 Dataview 查询', callback: () => { new DataviewGeneratorModal(app).open(); } }); }; 这是obsidian插件的main.js文件, 但是报错 app.js:1 Plugin failure: dataview-query-generator TypeError: h is not a constructor,怎么解决
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值