diff --git a/editor/src/app/groups/group-uploads-edit/group-uploads-edit.component.ts b/editor/src/app/groups/group-uploads-edit/group-uploads-edit.component.ts
index 662bb22f1..a4e4e6232 100644
--- a/editor/src/app/groups/group-uploads-edit/group-uploads-edit.component.ts
+++ b/editor/src/app/groups/group-uploads-edit/group-uploads-edit.component.ts
@@ -60,21 +60,29 @@ export class GroupUploadsEditComponent implements OnInit {
}
this.formPlayer.formResponseId = this.responseId
+ this.formPlayer.$afterSubmit.subscribe(async () => {
+ // This will fire if the response was never completed
+ await this.saveResponse()
+ this.router.navigate([`../`], { relativeTo: this.route })
+ })
this.formPlayer.$afterResubmit.subscribe(async () => {
- let response = this.formPlayer.formEl.store.getState()
-
- if (this.appConfig.syncProtocol === '1') {
- this.restoreSP1DocumentVariables(response)
- }
-
- // at this point the form has been locked by tangy-form
- // form player will ignore the save unless we force it to save
- await this.formPlayer.saveResponse(response, true)
+ // This will fire if the response was completed
+ await this.saveResponse()
this.router.navigate([`../`], { relativeTo: this.route })
})
await this.formPlayer.render(true, {disableComponents:['TANGY-GPS']})
}
+ async saveResponse() {
+ let response = this.formPlayer.formEl.store.getState()
+ if (this.appConfig.syncProtocol === '1') {
+ this.restoreSP1DocumentVariables(response)
+ }
+
+ await this.formPlayer.saveResponse(response)
+ this.router.navigate([`../`], { relativeTo: this.route })
+ }
+
async getSP1DocumentVariables() {
// In SP1, syncing.service adds userProfileId and tabletUserName in the first item input of the response document.
// Editing the form inadvertently removes those values because they are not in the form HTML.
diff --git a/editor/src/app/groups/group-uploads-view/group-uploads-view.component.html b/editor/src/app/groups/group-uploads-view/group-uploads-view.component.html
index ad82bfff6..ef96f03b0 100644
--- a/editor/src/app/groups/group-uploads-view/group-uploads-view.component.html
+++ b/editor/src/app/groups/group-uploads-view/group-uploads-view.component.html
@@ -3,7 +3,7 @@
- {{'Edit'|translate}}
+ {{'Edit'|translate}}
diff --git a/editor/src/app/groups/group-uploads-view/group-uploads-view.component.ts b/editor/src/app/groups/group-uploads-view/group-uploads-view.component.ts
index 6a86387b0..3b9c0ffd5 100644
--- a/editor/src/app/groups/group-uploads-view/group-uploads-view.component.ts
+++ b/editor/src/app/groups/group-uploads-view/group-uploads-view.component.ts
@@ -19,6 +19,7 @@ export class GroupUploadsViewComponent implements OnInit {
responseId
groupId
formResponse
+ editingAllowed = true
constructor(
private route:ActivatedRoute,
@@ -51,6 +52,13 @@ export class GroupUploadsViewComponent implements OnInit {
// If you pass the responseId, but the form player already has a response, responseId will be ignored
this.formResponse = await this.tangyFormService.getResponse(this.responseId)
this.formPlayer.response = this.formResponse
+
+ const disabledFormIds = ['attendance','behavior','scoring'];
+ if(this.formResponse.archived || this.formResponse.verified ||
+ disabledFormIds.includes(this.formResponse.form.id)) {
+ this.editingAllowed = false
+ }
+
await this.formPlayer.render()
}