Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -194,12 +194,23 @@ class MeasurementsFormViewModel extends FormViewModel<MeasurementsFormData>
MeasurementSurveyFormViewModel formViewModel,
FormMode prevFormMode,
) async {
final isNewMeasurement = prevFormMode == FormMode.create;

if (prevFormMode == FormMode.create) {
// Commit the managed viewmodel that was eagerly added in [provide]
surveyMeasurementFormViewModels.commit(formViewModel);
} else if (prevFormMode == FormMode.edit) {
// nothing to do here
}
await super.save();

if (isNewMeasurement) {
router.dispatch(
RoutingIntents.studyEditMeasurement(
study.id,
formViewModel.measurementId,
),
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ class MeasurementSurveyFormViewModel
super.delegate,
super.formData,
super.validationSet = StudyFormValidationSet.draft,
});
}) {
// Persist survey changes when managed questions are added, edited, or removed.
propagateOnSave = true;
}

final Study study;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ abstract class QuestionFormData implements IFormData {
final QuestionConditional? conditional;

/// Mapping from response option => qualifying/disqualifying
late final Map<dynamic, bool> responseOptionsValidity;
Map<dynamic, bool> responseOptionsValidity = {};

List<dynamic> get responseOptions; // subclass responsibility

Expand Down Expand Up @@ -239,7 +239,7 @@ class ChoiceQuestionFormData extends QuestionFormData {
answerOptions: [...answerOptions],
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -307,7 +307,7 @@ class BoolQuestionFormData extends QuestionFormData {
questionInfoText: questionInfoText,
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -374,7 +374,7 @@ class ImageQuestionFormData extends QuestionFormData {
questionInfoText: questionInfoText,
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -448,7 +448,7 @@ class AudioQuestionFormData extends QuestionFormData {
conditional: conditional?.deepCopy(),
maxRecordingDurationSeconds: maxRecordingDurationSeconds,
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -585,7 +585,7 @@ class ScaleQuestionFormData extends QuestionFormData {
midValues: midValues,
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -664,7 +664,7 @@ class FreeTextQuestionFormData extends QuestionFormData {
textTypeExpression: textTypeExpression,
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -733,7 +733,7 @@ class FitbitQuestionFormData extends QuestionFormData {
types: types,
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down Expand Up @@ -814,7 +814,7 @@ class PainQuestionFormData extends QuestionFormData {
questionInfoText: questionInfoText,
conditional: conditional?.deepCopy(),
);
data.responseOptionsValidity = responseOptionsValidity;
data.responseOptionsValidity = {...responseOptionsValidity};
return data;
}

Expand Down
Loading