Ver Fonte

added optional priority to LociLabelProvider

Alexander Rose há 5 anos atrás
pai
commit
f3db0c171b

+ 3 - 0
src/mol-plugin-state/manager/loci-label.ts

@@ -15,6 +15,8 @@ export type LociLabel = JSX.Element | string
 export type LociLabelProvider = {
     label: (loci: Loci, repr?: Representation<any>) => LociLabel | undefined
     group?: (entry: LociLabel) => string
+    /** Labels from providers with higher priority are shown first */
+    priority?: number
 }
 
 export class LociLabelManager {
@@ -22,6 +24,7 @@ export class LociLabelManager {
 
     addProvider(provider: LociLabelProvider) {
         this.providers.push(provider);
+        this.providers.sort((a, b) => (b.priority || 0) - (a.priority || 0))
         this.isDirty = true
         this.showLabels()
     }

+ 2 - 1
src/mol-plugin/behavior/dynamic/representation.ts

@@ -186,7 +186,8 @@ export const DefaultLociLabelProvider = PluginBehavior.create({
                 label.push(lociLabel(loci))
                 return label.join('</br>')
             },
-            group: (label: LociLabel) => label.toString().replace(/Model [0-9]+/g, 'Models')
+            group: (label: LociLabel) => label.toString().replace(/Model [0-9]+/g, 'Models'),
+            priority: 100
         };
         register() { this.ctx.managers.lociLabels.addProvider(this.f); }
         unregister() { this.ctx.managers.lociLabels.removeProvider(this.f); }