Browse Source

StructureElement type tweaks

David Sehnal 6 years ago
parent
commit
9de8f2a133

+ 1 - 1
src/mol-geo/representation/structure/visual/polymer-trace-mesh.ts

@@ -134,7 +134,7 @@ export function PolymerTraceVisual(): UnitsVisual<PolymerTraceProps> {
             const { objectId, instanceId, elementId } = pickingId
             if (renderObject.id === objectId) {
                 const unit = currentGroup.units[instanceId]
-                const indices = OrderedSet.ofSingleton(elementId as StructureElement.Index);
+                const indices = OrderedSet.ofSingleton(elementId as StructureElement.UnitIndex);
                 return StructureElement.Loci([{ unit, indices }])
             }
             return EmptyLoci

+ 1 - 1
src/mol-geo/representation/structure/visual/util/element.ts

@@ -96,7 +96,7 @@ export function getElementLoci(id: number, group: Unit.SymmetryGroup, pickingId:
     const { objectId, instanceId, elementId } = pickingId
     if (id === objectId) {
         const unit = group.units[instanceId]
-        const indices = OrderedSet.ofSingleton(elementId as StructureElement.Index);
+        const indices = OrderedSet.ofSingleton(elementId as StructureElement.UnitIndex);
         return StructureElement.Loci([{ unit, indices }])
     }
     return EmptyLoci

+ 2 - 2
src/mol-model/structure/query/selection.ts

@@ -36,12 +36,12 @@ namespace Selection {
     }
 
     export function toLoci(sel: Selection): StructureElement.Loci {
-        const loci: { unit: Unit, indices: OrderedSet<StructureElement.Index> }[] = [];
+        const loci: { unit: Unit, indices: OrderedSet<StructureElement.UnitIndex> }[] = [];
         const { unitMap } = sel.source;
 
         for (const unit of unionStructure(sel).units) {
             if (unit === unitMap.get(unit.id)) {
-                loci[loci.length] = { unit, indices: OrderedSet.ofBounds(0 as StructureElement.Index, unit.elements.length as StructureElement.Index) };
+                loci[loci.length] = { unit, indices: OrderedSet.ofBounds(0 as StructureElement.UnitIndex, unit.elements.length as StructureElement.UnitIndex) };
             } else {
                 loci[loci.length] = {
                     unit,

+ 4 - 3
src/mol-model/structure/structure/element.ts

@@ -17,10 +17,11 @@ interface StructureElement<U = Unit> {
 namespace StructureElement {
     export function create(unit?: Unit, element?: ElementIndex): StructureElement { return { unit: unit as any, element: element || (0 as ElementIndex) }; }
 
+    // TODO: when nominal types are available, make this indexed by UnitIndex
     export type Set = SortedArray<ElementIndex>
 
     /** Index into Unit.elements */
-    export type Index = { readonly '@type': 'element-index' } & number
+    export type UnitIndex = { readonly '@type': 'structure-element-index' } & number
 
     export interface Property<T> { (location: StructureElement): T }
     export interface Predicate extends Property<boolean> { }
@@ -46,11 +47,11 @@ namespace StructureElement {
              * Indices into the unit.elements array.
              * Can use OrderedSet.forEach to iterate (or OrderedSet.size + OrderedSet.getAt)
              */
-            indices: OrderedSet<Index>
+            indices: OrderedSet<UnitIndex>
         }>
     }
 
-    export function Loci(elements: ArrayLike<{ unit: Unit, indices: OrderedSet<Index> }>): Loci {
+    export function Loci(elements: ArrayLike<{ unit: Unit, indices: OrderedSet<UnitIndex> }>): Loci {
         return { kind: 'element-loci', elements: elements as Loci['elements'] };
     }