From f6be30ba8a5a12a70a02523d2d568dbfc4f2c8d2 Mon Sep 17 00:00:00 2001
From: David Sehnal <david.sehnal@gmail.com>
Date: Sat, 11 Aug 2018 22:20:40 +0200
Subject: [PATCH] ModelPropertyDescriptor.cifExport is now optional

---
 src/mol-model-props/pdbe/structure-quality-report.ts       | 7 ++++---
 src/mol-model/structure/export/mmcif.ts                    | 2 ++
 .../structure/model/properties/custom/descriptor.ts        | 2 +-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/mol-model-props/pdbe/structure-quality-report.ts b/src/mol-model-props/pdbe/structure-quality-report.ts
index 4d88557fd..4a02a66b2 100644
--- a/src/mol-model-props/pdbe/structure-quality-report.ts
+++ b/src/mol-model-props/pdbe/structure-quality-report.ts
@@ -20,7 +20,7 @@ import Type from 'mol-script/language/type';
 
 type IssueMap = ResidueCustomProperty<string[]>
 
-const _Descriptor: ModelPropertyDescriptor = {
+const _Descriptor = ModelPropertyDescriptor({
     isStatic: true,
     name: 'structure_quality_report',
     cifExport: {
@@ -41,9 +41,10 @@ const _Descriptor: ModelPropertyDescriptor = {
     },
     symbols: {
         issueCount: QuerySymbolRuntime.Dynamic(CustomPropSymbol('pdbe', 'structure-quality.issue-count', Type.Num),
-            ctx => StructureQualityReport.getIssues(ctx.element).length)
+            ctx => StructureQualityReport.getIssues(ctx.element).length),
+        // TODO: add (hasIssue :: IssueType(extends string) -> boolean) symbol
     }
-}
+})
 
 type ExportCtx = ResidueCustomProperty.ExportCtx<string[]>
 const _structure_quality_report_issues_fields: CifField<number, ExportCtx>[] = [
diff --git a/src/mol-model/structure/export/mmcif.ts b/src/mol-model/structure/export/mmcif.ts
index a527b835b..428bcbee3 100644
--- a/src/mol-model/structure/export/mmcif.ts
+++ b/src/mol-model/structure/export/mmcif.ts
@@ -98,6 +98,8 @@ export function encode_mmCIF_categories(encoder: CifWriter.Encoder, structure: S
         encoder.writeCategory(cat, ctx);
     }
     for (const customProp of model.customProperties.all) {
+        if (!customProp.cifExport || customProp.cifExport.categories.length === 0) continue;
+
         const prefix = customProp.cifExport.prefix;
         const cats = customProp.cifExport.categories;
         for (const cat of cats) {
diff --git a/src/mol-model/structure/model/properties/custom/descriptor.ts b/src/mol-model/structure/model/properties/custom/descriptor.ts
index d83a32cca..061f376bc 100644
--- a/src/mol-model/structure/model/properties/custom/descriptor.ts
+++ b/src/mol-model/structure/model/properties/custom/descriptor.ts
@@ -12,7 +12,7 @@ interface ModelPropertyDescriptor<Symbols extends { [name: string]: QuerySymbolR
     readonly isStatic: boolean,
     readonly name: string,
 
-    cifExport: {
+    cifExport?: {
         // Prefix enforced during export.
         prefix: string,
         categories: CifWriter.Category<CifExportContext>[]
-- 
GitLab