diff --git a/web/src/app/components/create-survey/create-survey.component.ts b/web/src/app/components/create-survey/create-survey.component.ts index 0623b1c80..456f65256 100644 --- a/web/src/app/components/create-survey/create-survey.component.ts +++ b/web/src/app/components/create-survey/create-survey.component.ts @@ -383,12 +383,12 @@ export class CreateSurveyComponent implements OnInit { // Assume the survey exists. const survey = this.survey!; - await this.taskService.addOrUpdateTasks( - survey.id, - // Assume there is at least one job. - survey.jobs.first(), - tasks! - ); + const job = survey.jobs.first(); + if (!job) { + console.error('Cannot save tasks: survey has no jobs', survey.id); + return; + } + await this.taskService.addOrUpdateTasks(survey.id, job, tasks!); } private async saveDataSharingTerms(): Promise { diff --git a/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.spec.ts b/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.spec.ts index 2e4fee3c0..7e7501d66 100644 --- a/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.spec.ts +++ b/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.spec.ts @@ -182,7 +182,7 @@ describe('DrawingToolsComponent', () => { expect( authServiceSpy.canUserAddPointsToJob( mockSurvey, - mockSurvey.jobs.first() + mockSurvey.jobs.first()! ) ).toBe(false); diff --git a/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.ts b/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.ts index caa001c54..5e1c5fc28 100644 --- a/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.ts +++ b/web/src/app/components/main-page-container/main-page/drawing-tools/drawing-tools.component.ts @@ -61,7 +61,7 @@ export class DrawingToolsComponent implements OnInit, OnDestroy { polygonValue = 'polygon'; selectedValue = ''; private lastSelectedValue = ''; - selectedJobId = ''; + selectedJobId: string | undefined = ''; readonly jobs = computed(() => { const survey = this.survey(); diff --git a/web/src/app/components/main-page-container/main-page/side-panel/submission-form/submission-form.component.ts b/web/src/app/components/main-page-container/main-page/side-panel/submission-form/submission-form.component.ts index 5ec76b708..ca235b75e 100644 --- a/web/src/app/components/main-page-container/main-page/side-panel/submission-form/submission-form.component.ts +++ b/web/src/app/components/main-page-container/main-page/side-panel/submission-form/submission-form.component.ts @@ -311,9 +311,7 @@ export class SubmissionFormComponent implements OnChanges { task: Task, result?: Result ): void { - const selectedOptionId = ( - (result?.value as MultipleSelection)?.values.first() as Option - )?.id; + const selectedOptionId = (result?.value as MultipleSelection)?.values.first(); group[task.id] = task.required ? new FormControl(selectedOptionId, Validators.required) : new FormControl(selectedOptionId); diff --git a/web/src/app/components/shared/share-list/share-list.component.spec.ts b/web/src/app/components/shared/share-list/share-list.component.spec.ts index 2dfdfd12c..427a58f41 100644 --- a/web/src/app/components/shared/share-list/share-list.component.spec.ts +++ b/web/src/app/components/shared/share-list/share-list.component.spec.ts @@ -85,7 +85,7 @@ describe('ShareListComponent', () => { 'title', 'description', Map(), - Map({ [user.email]: Role.VIEWER }), + Map([[user.email, Role.VIEWER]]), 'owner-email', { type: DataSharingType.PRIVATE } ) diff --git a/web/src/app/converters/loi-data-converter.ts b/web/src/app/converters/loi-data-converter.ts index 37c0f120c..7d42ce1ce 100644 --- a/web/src/app/converters/loi-data-converter.ts +++ b/web/src/app/converters/loi-data-converter.ts @@ -36,7 +36,7 @@ function propertiesPbToModel(pb: { properties[k] = v; } } - return Map(properties); + return Map(Object.entries(properties)); } export function loiDocToModel( diff --git a/web/src/app/converters/submission-data-converter.ts b/web/src/app/converters/submission-data-converter.ts index 8a8c80571..6e0af0c18 100644 --- a/web/src/app/converters/submission-data-converter.ts +++ b/web/src/app/converters/submission-data-converter.ts @@ -57,7 +57,7 @@ function taskDataPbArrayToModel(pb: Pb.ITaskData[]): SubmissionData { } }); - return Map(submissionData); + return Map(Object.entries(submissionData)); } function taskDataPbToModel(taskData: Pb.ITaskData): Result | null { diff --git a/web/src/app/models/loi.model.ts b/web/src/app/models/loi.model.ts index d4f0bcfd5..6c274aa08 100644 --- a/web/src/app/models/loi.model.ts +++ b/web/src/app/models/loi.model.ts @@ -28,7 +28,9 @@ export class LocationOfInterest { readonly predefined: boolean = true ) {} - static getSmallestByArea(lois: List): LocationOfInterest { + static getSmallestByArea( + lois: List + ): LocationOfInterest | undefined { return lois .sort((a, b) => (a.geometry?.getArea() || 0) < (b.geometry?.getArea() || 0) ? -1 : 1 diff --git a/web/src/app/services/survey/survey.service.spec.ts b/web/src/app/services/survey/survey.service.spec.ts index b59f881c1..03ee3b917 100644 --- a/web/src/app/services/survey/survey.service.spec.ts +++ b/web/src/app/services/survey/survey.service.spec.ts @@ -221,7 +221,7 @@ describe('SurveyService', () => { 'title', 'desc', Map(), - Map({ [mockUser.email]: Role.SURVEY_ORGANIZER }), + Map([[mockUser.email, Role.SURVEY_ORGANIZER]]), 'ownerId', { type: DataSharingType.PRIVATE } ); @@ -234,7 +234,7 @@ describe('SurveyService', () => { 'title', 'desc', Map(), - Map({ [mockUser.email]: Role.OWNER }), + Map([[mockUser.email, Role.OWNER]]), 'ownerId', { type: DataSharingType.PRIVATE } ); @@ -247,7 +247,7 @@ describe('SurveyService', () => { 'title', 'desc', Map(), - Map({ [mockUser.email]: Role.VIEWER }), + Map([[mockUser.email, Role.VIEWER]]), 'ownerId', { type: DataSharingType.PRIVATE } );