From a35d61dfe80d2e0fffddeb58f41f1f6e656dcb76 Mon Sep 17 00:00:00 2001
From: jojohoch <joachim.hoch@iqb.hu-berlin.de>
Date: Mon, 23 Aug 2021 12:31:34 +0200
Subject: [PATCH] [player] Add `responseProgress` to
 `vopStateChangedNotification`

When form changes the `responseProgress` is determined and sent
---
 projects/player/src/app/components/form.component.ts | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/projects/player/src/app/components/form.component.ts b/projects/player/src/app/components/form.component.ts
index 5dfe7ebf0..746448aeb 100644
--- a/projects/player/src/app/components/form.component.ts
+++ b/projects/player/src/app/components/form.component.ts
@@ -118,11 +118,20 @@ export class FormComponent implements OnInit, OnDestroy {
       dataParts: {
         pages: JSON.stringify(formModel.pages)
       },
+      responseProgress: this.calculateResponseProgress(),
       unitStateDataType: this.metaDataService.playerMetadata.supportedUnitStateDataTypes
     };
     this.veronaPostService.sendVopStateChangedNotification({ unitState });
   }
 
+  private calculateResponseProgress(): 'complete' | 'some' | 'none' {
+    if (this.form.valid) {
+      return 'complete';
+    }
+    const pages: FormArray = this.form.get('pages') as FormArray;
+    return (pages.controls.some(p => p.value)) ? 'some' : 'none';
+  }
+
   onPresentedPageAdded(pagePresented: number): void {
     if (!this.presentedPages.includes(pagePresented)) {
       this.presentedPages.push(pagePresented);
-- 
GitLab