mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 13:39:01 +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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    isDefinitionFor(attr) {
 | 
			
		||||
        return this.type === 'label' && this.name === `${attr.type}:${attr.name}`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    get dto() {
 | 
			
		||||
        const dto = Object.assign({}, this);
 | 
			
		||||
        delete dto.treeCache;
 | 
			
		||||
 | 
			
		||||
@ -479,6 +479,20 @@ class NoteShort {
 | 
			
		||||
        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) {
 | 
			
		||||
        if (this.noteId === ancestorNote.noteId) {
 | 
			
		||||
            return true;
 | 
			
		||||
 | 
			
		||||
@ -80,7 +80,19 @@ async function renderAttributes(attributes, renderIsInheritable) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ export default class PromotedAttributesWidget extends TabAwareWidget {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    renderTitle(note) {
 | 
			
		||||
        const promotedDefAttrs = this.getPromotedDefinitionAttributes();
 | 
			
		||||
        const promotedDefAttrs = note.getPromotedDefinitionAttributes();
 | 
			
		||||
 | 
			
		||||
        if (promotedDefAttrs.length === 0) {
 | 
			
		||||
            return { show: false };
 | 
			
		||||
@ -62,7 +62,7 @@ export default class PromotedAttributesWidget extends TabAwareWidget {
 | 
			
		||||
    async refreshWithNote(note) {
 | 
			
		||||
        this.$container.empty();
 | 
			
		||||
 | 
			
		||||
        const promotedDefAttrs = this.getPromotedDefinitionAttributes();
 | 
			
		||||
        const promotedDefAttrs = note.getPromotedDefinitionAttributes();
 | 
			
		||||
        const ownedAttributes = note.getOwnedAttributes();
 | 
			
		||||
 | 
			
		||||
        if (promotedDefAttrs.length === 0) {
 | 
			
		||||
@ -104,20 +104,6 @@ export default class PromotedAttributesWidget extends TabAwareWidget {
 | 
			
		||||
        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) {
 | 
			
		||||
        const definition = definitionAttr.getDefinition();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user