diff --git a/src/mol-plugin/ui/sequence.tsx b/src/mol-plugin/ui/sequence.tsx index d97d52a1ec9cc998496afc703c009e20a321996c..bec6271ea78e8361dde7866327bc1c2620bddca7 100644 --- a/src/mol-plugin/ui/sequence.tsx +++ b/src/mol-plugin/ui/sequence.tsx @@ -62,7 +62,7 @@ function getEntityOptions(structure: Structure) { return options } -function getChainOptions(structure: Structure, entityId: string) { +function getUnitOptions(structure: Structure, entityId: string) { const options: [number, string][] = [] const l = StructureElement.create() const seen = new Set<number>() @@ -75,6 +75,9 @@ function getChainOptions(structure: Structure, entityId: string) { const id = unit.invariantId if (seen.has(id)) continue + // TODO handle special cases + // - more than one chain in a unit + // - chain spread over multiple units let label = '' if (Unit.isAtomic(unit)) { label = `${SP.chain.label_asym_id(l)}: ${SP.chain.auth_asym_id(l)}` @@ -91,7 +94,7 @@ function getChainOptions(structure: Structure, entityId: string) { seen.add(id) } - if (options.length === 0) options.push([-1, 'No chains']) + if (options.length === 0) options.push([-1, 'No units']) return options } @@ -151,13 +154,13 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> { } private getSequenceWrapper() { - return getSequenceWrapper(this.state, this.plugin.helpers.structureSelection) + return getSequenceWrapper(this.state, this.plugin.helpers.structureSelectionManager) } private getInitialState(): SequenceViewState { const structure = this.getStructure() const entityId = getEntityOptions(structure)[0][0] - const invariantUnitId = getChainOptions(structure, entityId)[0][0] + const invariantUnitId = getUnitOptions(structure, entityId)[0][0] const operatorKey = getOperatorOptions(structure, entityId, invariantUnitId)[0][0] return { structure, entityId, invariantUnitId, operatorKey } } @@ -165,11 +168,11 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> { private get params() { const { structure, entityId, invariantUnitId } = this.state const entityOptions = getEntityOptions(structure) - const chainOptions = getChainOptions(structure, entityId) + const unitOptions = getUnitOptions(structure, entityId) const operatorOptions = getOperatorOptions(structure, entityId, invariantUnitId) return { entity: PD.Select(entityOptions[0][0], entityOptions), - chain: PD.Select(chainOptions[0][0], chainOptions), + unit: PD.Select(unitOptions[0][0], unitOptions), operator: PD.Select(operatorOptions[0][0], operatorOptions) } } @@ -177,7 +180,7 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> { private get values(): PD.Values<SequenceView['params']> { return { entity: this.state.entityId, - chain: this.state.invariantUnitId, + unit: this.state.invariantUnitId, operator: this.state.operatorKey } } @@ -188,10 +191,10 @@ export class SequenceView extends PluginUIComponent<{ }, SequenceViewState> { switch (p.name) { case 'entity': state.entityId = p.value - state.invariantUnitId = getChainOptions(state.structure, state.entityId)[0][0] + state.invariantUnitId = getUnitOptions(state.structure, state.entityId)[0][0] state.operatorKey = getOperatorOptions(state.structure, state.entityId, state.invariantUnitId)[0][0] break - case 'chain': + case 'unit': state.invariantUnitId = p.value state.operatorKey = getOperatorOptions(state.structure, state.entityId, state.invariantUnitId)[0][0] break