Browse Source

normalize query param

JonStargaryen 4 years ago
parent
commit
d8a08ef900
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/servers/model/server/api.ts

+ 11 - 2
src/servers/model/server/api.ts

@@ -8,6 +8,7 @@ import { Queries, Structure, StructureQuery, StructureSymmetry, StructurePropert
 import { getAtomsTests } from '../query/atoms';
 import { CifWriter } from '../../../mol-io/writer/cif';
 import { QuerySchemas } from '../query/schemas';
+import { Mat4 } from '../../../mol-math/linear-algebra';
 
 export enum QueryParamType {
     JSON,
@@ -55,7 +56,8 @@ export interface CommonQueryParamsInfo {
     model_nums?: number[],
     encoding?: Encoding,
     copy_all_categories?: boolean
-    data_source?: string
+    data_source?: string,
+    transformation?: Mat4
 }
 
 export const AtomSiteSchemaElement = {
@@ -289,7 +291,8 @@ export function normalizeRestCommonParams(params: any): CommonQueryParamsInfo {
         model_nums: params.model_nums ? ('' + params.model_nums).split(',').map(n => n.trim()).filter(n => !!n).map(n => +n) : void 0,
         data_source: params.data_source,
         copy_all_categories: Boolean(params.copy_all_categories),
-        encoding: mapEncoding(('' + params.encoding).toLocaleLowerCase())
+        encoding: mapEncoding(('' + params.encoding).toLocaleLowerCase()),
+        transformation: params.transformation ? createMat4(('' + params.transformation).split(',').map(n => n.trim()).map(n => +n)) : Mat4.identity()
     };
 }
 
@@ -306,4 +309,10 @@ function mapEncoding(value: string) {
         default:
             return 'cif';
     }
+}
+
+function createMat4(array: number[]): Mat4 {
+    const out = Mat4();
+    Mat4.fromArray(out, array, 0);
+    return out;
 }