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() }