From 09fe6032dabd2a79d3999b0b77e6cdeede66c208 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Sun, 5 Nov 2017 17:45:35 +0100
Subject: [PATCH] CIF writer tweaks

---
 src/apps/domain-annotation-server/utils.ts |  3 +--
 src/mol-data/structure/export/mmcif.ts     |  2 +-
 src/mol-io/writer/cif/encoder.ts           | 13 +++++++------
 src/mol-io/writer/cif/encoder/text.ts      |  2 +-
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/apps/domain-annotation-server/utils.ts b/src/apps/domain-annotation-server/utils.ts
index cb5c6badd..767de8fa4 100644
--- a/src/apps/domain-annotation-server/utils.ts
+++ b/src/apps/domain-annotation-server/utils.ts
@@ -20,8 +20,7 @@ function ofSchema(schema: Table.Schema) {
     const fields: Encoder.FieldDefinition[] = [];
     for (const k of Object.keys(schema)) {
         const t = schema[k];
-        // TODO: matrix/vector/support
-        const type = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float;
+        const type: any = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float;
         fields.push({ name: k, type, value: columnValue(k), valueKind: columnValueKind(k) })
     }
     return fields;
diff --git a/src/mol-data/structure/export/mmcif.ts b/src/mol-data/structure/export/mmcif.ts
index 5f3111f04..64d86d66c 100644
--- a/src/mol-data/structure/export/mmcif.ts
+++ b/src/mol-data/structure/export/mmcif.ts
@@ -49,7 +49,7 @@ function ofSchema(schema: Table.Schema) {
     for (const k of Object.keys(schema)) {
         const t = schema[k];
         // TODO: matrix/vector/support
-        const type = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float;
+        const type: any = t.kind === 'str' ? Encoder.FieldType.Str : t.kind === 'int' ? Encoder.FieldType.Int : Encoder.FieldType.Float;
         fields.push({ name: k, type, value: columnValue(k), valueKind: columnValueKind(k) })
     }
     return fields;
diff --git a/src/mol-io/writer/cif/encoder.ts b/src/mol-io/writer/cif/encoder.ts
index f32bec34b..ad036fcba 100644
--- a/src/mol-io/writer/cif/encoder.ts
+++ b/src/mol-io/writer/cif/encoder.ts
@@ -13,17 +13,18 @@ export const enum FieldType {
     Str, Int, Float
 }
 
-export interface FieldDefinition<Key = any, Data = any> {
+export interface FieldDefinitionBase<Key, Data> {
     name: string,
-    type: FieldType,
-    value(key: Key, data: Data): string | number,
-    valueKind?: (key: Key, data: Data) => Column.ValueKind
-
-    /** determine whether to include this field base on the context */
+    valueKind?: (key: Key, data: Data) => Column.ValueKind,
     // TODO:
     // shouldInclude?: (data: Data) => boolean
 }
 
+export type FieldDefinition<Key = any, Data = any> =
+    | FieldDefinitionBase<Key, Data> & { type: FieldType.Str, value(key: Key, data: Data): string }
+    | FieldDefinitionBase<Key, Data> & { type: FieldType.Int, value(key: Key, data: Data): number }
+    | FieldDefinitionBase<Key, Data> & { type: FieldType.Float, value(key: Key, data: Data): number }
+
 export interface FieldFormat {
     // TODO
     // textDecimalPlaces: number,
diff --git a/src/mol-io/writer/cif/encoder/text.ts b/src/mol-io/writer/cif/encoder/text.ts
index 46b3fd4cd..b07a54853 100644
--- a/src/mol-io/writer/cif/encoder/text.ts
+++ b/src/mol-io/writer/cif/encoder/text.ts
@@ -79,7 +79,7 @@ function writeValue(builder: StringBuilder, data: any, key: any, f: Enc.FieldDef
         } else if (t === Enc.FieldType.Int) {
             writeInteger(builder, val as number);
         } else {
-            writeFloat(builder, val as number, 1000);
+            writeFloat(builder, val as number, 1000000);
         }
     }
     return false;
-- 
GitLab