소스 검색

added Tag enum with common strings to AssemblySymmetry

Alexander Rose 5 년 전
부모
커밋
1b2c2f3d41
2개의 변경된 파일12개의 추가작업 그리고 4개의 파일을 삭제
  1. 7 1
      src/mol-model-props/rcsb/assembly-symmetry.ts
  2. 5 3
      src/mol-plugin/behavior/dynamic/custom-props/rcsb/assembly-symmetry.ts

+ 7 - 1
src/mol-model-props/rcsb/assembly-symmetry.ts

@@ -26,6 +26,11 @@ const BiologicalAssemblyNames = new Set([
 ])
 
 export namespace AssemblySymmetry {
+    export enum Tag {
+        Cluster = 'rcsb-assembly-symmetry-cluster',
+        Representation = 'rcsb-assembly-symmetry-3d'
+    }
+
     export const DefaultServerUrl = 'https://data-beta.rcsb.org/graphql'
 
     export function isApplicable(structure?: Structure): boolean {
@@ -55,7 +60,8 @@ export namespace AssemblySymmetry {
         const result = await client.request<AssemblySymmetryQuery>(ctx.runtime, query, variables)
 
         if (!result.assembly?.rcsb_struct_symmetry) {
-            throw new Error('missing fields')
+            console.error('expected `rcsb_struct_symmetry` field')
+            return []
         }
         const symmetry = result.assembly.rcsb_struct_symmetry as AssemblySymmetryValue
         return symmetry.filter(s => s.symbol !== 'C1')

+ 5 - 3
src/mol-plugin/behavior/dynamic/custom-props/rcsb/assembly-symmetry.ts

@@ -14,6 +14,8 @@ import { Task } from '../../../../../mol-task';
 import { PluginContext } from '../../../../context';
 import { StateTransformer, StateAction, StateObject } from '../../../../../mol-state';
 
+const Tag = AssemblySymmetry.Tag
+
 export const RCSBAssemblySymmetry = PluginBehavior.create<{ autoAttach: boolean }>({
     name: 'rcsb-assembly-symmetry-prop',
     category: 'custom-props',
@@ -24,7 +26,7 @@ export const RCSBAssemblySymmetry = PluginBehavior.create<{ autoAttach: boolean
         register(): void {
             this.ctx.state.dataState.actions.add(InitAssemblySymmetry3D)
             this.ctx.customStructureProperties.register(this.provider, this.params.autoAttach);
-            this.ctx.structureRepresentation.themeCtx.colorThemeRegistry.add('rcsb-assembly-symmetry-cluster', AssemblySymmetryClusterColorThemeProvider)
+            this.ctx.structureRepresentation.themeCtx.colorThemeRegistry.add(Tag.Cluster, AssemblySymmetryClusterColorThemeProvider)
         }
 
         update(p: { autoAttach: boolean }) {
@@ -37,7 +39,7 @@ export const RCSBAssemblySymmetry = PluginBehavior.create<{ autoAttach: boolean
         unregister() {
             this.ctx.state.dataState.actions.remove(InitAssemblySymmetry3D)
             this.ctx.customStructureProperties.unregister(this.provider.descriptor.name);
-            this.ctx.structureRepresentation.themeCtx.colorThemeRegistry.remove('rcsb-assembly-symmetry-cluster')
+            this.ctx.structureRepresentation.themeCtx.colorThemeRegistry.remove(Tag.Cluster)
         }
     },
     params: () => ({
@@ -65,7 +67,7 @@ export { AssemblySymmetry3D }
 
 type AssemblySymmetry3D = typeof AssemblySymmetry3D
 const AssemblySymmetry3D = PluginStateTransform.BuiltIn({
-    name: 'rcsb-assembly-symmetry-3d',
+    name: Tag.Representation,
     display: 'RCSB Assembly Symmetry',
     from: PluginStateObject.Molecule.Structure,
     to: PluginStateObject.Shape.Representation3D,