mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
improved heuristic of displaing attributes in note list and tooltips #1558
This commit is contained in:
parent
6408a47a8a
commit
7b0fd639f6
@ -89,6 +89,10 @@ class Attribute {
|
|||||||
return promotedAttributeDefinitionParser.parse(this.value);
|
return promotedAttributeDefinitionParser.parse(this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isDefinitionFor(attr) {
|
||||||
|
return this.type === 'label' && this.name === `${attr.type}:${attr.name}`;
|
||||||
|
}
|
||||||
|
|
||||||
get dto() {
|
get dto() {
|
||||||
const dto = Object.assign({}, this);
|
const dto = Object.assign({}, this);
|
||||||
delete dto.treeCache;
|
delete dto.treeCache;
|
||||||
|
@ -479,6 +479,20 @@ class NoteShort {
|
|||||||
return relations.map(rel => this.treeCache.notes[rel.value]);
|
return relations.map(rel => this.treeCache.notes[rel.value]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPromotedDefinitionAttributes() {
|
||||||
|
if (this.hasLabel('hidePromotedAttributes')) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.getAttributes()
|
||||||
|
.filter(attr => attr.isDefinition())
|
||||||
|
.filter(attr => {
|
||||||
|
const def = attr.getDefinition();
|
||||||
|
|
||||||
|
return def && def.isPromoted;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
hasAncestor(ancestorNote) {
|
hasAncestor(ancestorNote) {
|
||||||
if (this.noteId === ancestorNote.noteId) {
|
if (this.noteId === ancestorNote.noteId) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -80,7 +80,19 @@ async function renderAttributes(attributes, renderIsInheritable) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function renderNormalAttributes(note) {
|
async function renderNormalAttributes(note) {
|
||||||
const attrs = note.getAttributes().filter(attr => !attr.isDefinition() && !attr.isAutoLink);
|
const promotedDefinitionAttributes = note.getPromotedDefinitionAttributes();
|
||||||
|
let attrs = note.getAttributes();
|
||||||
|
|
||||||
|
if (promotedDefinitionAttributes.length > 0) {
|
||||||
|
attrs = attrs.filter(attr => !!promotedDefinitionAttributes.find(promAttr => promAttr.isDefinitionFor(attr)));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
attrs = attrs.filter(
|
||||||
|
attr => !attr.isDefinition()
|
||||||
|
&& !attr.isAutoLink
|
||||||
|
&& attr.noteId === note.noteId
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const $renderedAttributes = await renderAttributes(attrs, false);
|
const $renderedAttributes = await renderAttributes(attrs, false);
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ export default class PromotedAttributesWidget extends TabAwareWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderTitle(note) {
|
renderTitle(note) {
|
||||||
const promotedDefAttrs = this.getPromotedDefinitionAttributes();
|
const promotedDefAttrs = note.getPromotedDefinitionAttributes();
|
||||||
|
|
||||||
if (promotedDefAttrs.length === 0) {
|
if (promotedDefAttrs.length === 0) {
|
||||||
return { show: false };
|
return { show: false };
|
||||||
@ -62,7 +62,7 @@ export default class PromotedAttributesWidget extends TabAwareWidget {
|
|||||||
async refreshWithNote(note) {
|
async refreshWithNote(note) {
|
||||||
this.$container.empty();
|
this.$container.empty();
|
||||||
|
|
||||||
const promotedDefAttrs = this.getPromotedDefinitionAttributes();
|
const promotedDefAttrs = note.getPromotedDefinitionAttributes();
|
||||||
const ownedAttributes = note.getOwnedAttributes();
|
const ownedAttributes = note.getOwnedAttributes();
|
||||||
|
|
||||||
if (promotedDefAttrs.length === 0) {
|
if (promotedDefAttrs.length === 0) {
|
||||||
@ -104,20 +104,6 @@ export default class PromotedAttributesWidget extends TabAwareWidget {
|
|||||||
this.toggleInt(true);
|
this.toggleInt(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPromotedDefinitionAttributes() {
|
|
||||||
if (this.note.hasLabel('hidePromotedAttributes')) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.note.getAttributes()
|
|
||||||
.filter(attr => attr.isDefinition())
|
|
||||||
.filter(attr => {
|
|
||||||
const def = attr.getDefinition();
|
|
||||||
|
|
||||||
return def && def.isPromoted;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async createPromotedAttributeCell(definitionAttr, valueAttr, valueName) {
|
async createPromotedAttributeCell(definitionAttr, valueAttr, valueName) {
|
||||||
const definition = definitionAttr.getDefinition();
|
const definition = definitionAttr.getDefinition();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user