diff --git a/src/apps/domain-annotation-server/utils.ts b/src/apps/domain-annotation-server/utils.ts index cb5c6badddce091441def0b26f8ab6b8c552f247..767de8fa4d6cd9a83503b3087ea45db4fc87dece 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 5f3111f04997e8187215a9dd15923d310a045466..64d86d66cc87ad7d915e7a9f5e6a6860c93f3476 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 f32bec34bf5506c7efff06723630e89980e5bea7..ad036fcba4c5200854e8bf16e150a472a4987a2e 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 46b3fd4cdf599718e302f461442a5e75fecd19d2..b07a54853366ec19e81ee28408debfc1a3a55d37 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;