trilium/src/public/javascripts/widgets/note_info.js

84 lines
2.1 KiB
JavaScript
Raw Normal View History

2019-07-21 17:32:38 +08:00
const TPL = `
<table class="note-info-table">
<tr>
<th>Note ID</th>
<td class="note-info-note-id"></td>
</tr>
<tr>
<th>Created</th>
<td class="note-info-date-created"></td>
</tr>
<tr>
<th>Modified</th>
<td class="note-info-date-modified"></td>
</tr>
<tr>
<th>Type</th>
<td class="note-info-type"></td>
</tr>
<tr>
<th>MIME</th>
<td class="note-info-mime"></td>
</tr>
</table>
`;
class NoteInfoWidget {
/**
* @param {TabContext} ctx
* @param {jQuery} $widget
*/
constructor(ctx, $widget) {
this.ctx = ctx;
this.$widget = $widget;
2019-08-15 16:04:03 +08:00
this.$widget.on('show.bs.collapse', () => this.renderBody());
this.$widget.on('show.bs.collapse', () => this.ctx.stateChanged());
this.$widget.on('hide.bs.collapse', () => this.ctx.stateChanged());
2019-07-21 17:32:38 +08:00
this.$title = this.$widget.find('.widget-title');
this.$title.text("Note info");
2019-08-15 16:04:03 +08:00
this.$bodyWrapper = this.$widget.find('.body-wrapper');
2019-07-21 17:32:38 +08:00
}
async renderBody() {
2019-08-15 16:04:03 +08:00
if (!this.isVisible()) {
return;
}
2019-07-21 17:32:38 +08:00
const $body = this.$widget.find('.card-body');
$body.html(TPL);
const $noteId = $body.find(".note-info-note-id");
const $dateCreated = $body.find(".note-info-date-created");
const $dateModified = $body.find(".note-info-date-modified");
const $type = $body.find(".note-info-type");
const $mime = $body.find(".note-info-mime");
const note = this.ctx.note;
$noteId.text(note.noteId);
$dateCreated.text(note.dateCreated);
$dateModified.text(note.dateModified);
$type.text(note.type);
$mime.text(note.mime);
}
syncDataReceived(syncData) {
if (syncData.find(sd => sd.entityName === 'notes' && sd.entityId === this.ctx.note.noteId)) {
this.renderBody();
}
}
2019-08-15 16:04:03 +08:00
getWidgetState() {
return {
id: 'attributes',
visible: this.isVisible()
};
}
isVisible() {
return this.$bodyWrapper.is(":visible");
}
2019-07-21 17:32:38 +08:00
}
export default NoteInfoWidget;