Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Develop #531

Merged
merged 4 commits into from
Mar 25, 2024
Merged
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
7 changes: 4 additions & 3 deletions backend/util/sheets.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ def write_sheet(df, writer, sheet_name, show_comment=False):
if sheet_name != main_sheet_name:
cols = [
"data_id",
"repeat_index",
"question_group_name",
"question_name",
"repeat_index", # ordering by question first, then index
"member_type",
"submitted",
]
Expand Down Expand Up @@ -169,9 +169,10 @@ def generate_summary(
if member_type:
members = [1] # add all member type
members += [member_type]
summary = summary.filter(Summary.member_type.overlap(members)).all()
summary = summary.filter(Summary.member_type.overlap(members))
else:
summary = summary.all()
summary = summary
summary = summary.order_by(Summary.go, Summary.qo).all()
if not summary:
raise HTTPException(status_code=404, detail="No Data Available")
summary = [s.serialize for s in summary]
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/components/survey-editor/Preview.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -378,11 +378,11 @@ const Preview = () => {
};

const onChange = ({ current, values, progress }) => {
console.info(current, values, progress);
console.info("onChange", current, values, progress);
};

const onFinish = (values) => {
console.info(values);
console.info("onFinish", values);
};

return (
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/pages/data-cleaning/DataCleaning.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState, useEffect, useCallback } from "react";
import React, { useState, useEffect, useCallback, useRef } from "react";
import "./style.scss";
import {
Row,
Expand All @@ -24,6 +24,7 @@ import { MonitoringRoundSelector } from "../../components";
const { Title } = Typography;

const DataCleaning = () => {
const webformRef = useRef();
const { optionValues } = store.useState((s) => s);
const { organisationInSameIsco } = optionValues;
const { notify } = useNotification();
Expand Down Expand Up @@ -293,6 +294,7 @@ const DataCleaning = () => {
</Row>
<div className="webform-wrapper">
<DataCleaningWebform
webformRef={webformRef}
datapoint={{
...selectedDatapoint,
datapoint_name: editDatapointName,
Expand Down
34 changes: 31 additions & 3 deletions frontend/src/pages/data-cleaning/DataCleaningWebform.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,12 @@ const checkDependentValue = (formValue, answer) => {
return answer;
};

const DataCleaningWebform = ({ datapoint, orgDetail, handleBack }) => {
const DataCleaningWebform = ({
webformRef,
datapoint,
orgDetail,
handleBack,
}) => {
const { notify } = useNotification();

const allAccess = "All";
Expand Down Expand Up @@ -282,6 +287,27 @@ const DataCleaningWebform = ({ datapoint, orgDetail, handleBack }) => {
}
}, [deletedComment, answer]);

const updatedAnswer = () => {
// remap all answers with form getFieldsValue
const finalFormValues = webformRef?.current?.getFieldsValue();
let updatedAnswer = answer;
if (finalFormValues) {
updatedAnswer = Object.keys(finalFormValues)
.map((key) => {
const prevAnswer = answer.find((a) => a.question === parseInt(key));
if (prevAnswer) {
return {
...prevAnswer,
value: finalFormValues[key],
};
}
return false;
})
.filter((x) => x);
}
return updatedAnswer;
};

const onChange = ({ /*current*/ values /*progress*/ }) => {
// handle data unavailable checkbox - comment
const dataUnavailable = Object.keys(values)
Expand Down Expand Up @@ -365,7 +391,7 @@ const DataCleaningWebform = ({ datapoint, orgDetail, handleBack }) => {

const onFinish = (/*values*/) => {
if (answer.length) {
const filteredAnswer = checkDependentValue(formValue, answer);
const filteredAnswer = checkDependentValue(formValue, updatedAnswer());
const payload = reorderAnswersRepeatIndex(formValue, filteredAnswer);
setIsSubmitting(true);
const url = `/data/${savedData.id}/0?data_cleaning=1`;
Expand Down Expand Up @@ -404,8 +430,9 @@ const DataCleaningWebform = ({ datapoint, orgDetail, handleBack }) => {
setIsForce(true);
setModalWarningVisible(true);
};

const handleOnForceSubmit = () => {
const filteredAnswer = checkDependentValue(formValue, answer);
const filteredAnswer = checkDependentValue(formValue, updatedAnswer());
const payload = reorderAnswersRepeatIndex(formValue, filteredAnswer);
setIsSubmitting(true);
const url = `/data/${savedData.id}/0?data_cleaning=1`;
Expand Down Expand Up @@ -440,6 +467,7 @@ const DataCleaningWebform = ({ datapoint, orgDetail, handleBack }) => {
<div id="webform">
{!isEmpty(formValue) ? (
<Webform
formRef={webformRef}
forms={formValue}
onChange={onChange}
onFinish={onFinishShowWarning}
Expand Down
27 changes: 24 additions & 3 deletions frontend/src/pages/survey/WebformPage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -887,9 +887,30 @@ const WebformPage = ({
return endpoint;
};

const updatedAnswer = () => {
// remap all answers with form getFieldsValue
const finalFormValues = webformRef?.current?.getFieldsValue();
let updatedAnswer = answer;
if (finalFormValues) {
updatedAnswer = Object.keys(finalFormValues)
.map((key) => {
const prevAnswer = answer.find((a) => a.question === parseInt(key));
if (prevAnswer) {
return {
...prevAnswer,
value: finalFormValues[key],
};
}
return false;
})
.filter((x) => x);
}
return updatedAnswer;
};

const onFinish = () => {
if (answer.length) {
const payload = reorderAnswersRepeatIndex(formValue, answer);
const payload = reorderAnswersRepeatIndex(formValue, updatedAnswer());
setIsSubmitting(true);
const endpoint = generateEndpoint({ payload: payload, submitted: 1 });
endpoint
Expand Down Expand Up @@ -925,7 +946,7 @@ const WebformPage = ({

const handleOnClickSaveButton = (handleLogout = null) => {
if (answer.length) {
const payload = reorderAnswersRepeatIndex(formValue, answer);
const payload = reorderAnswersRepeatIndex(formValue, updatedAnswer());
setIsSaving(true);
const endpoint = generateEndpoint({ payload: payload, submitted: 0 });
endpoint
Expand Down Expand Up @@ -1005,7 +1026,7 @@ const WebformPage = ({
};

const handleOnForceSubmit = () => {
const payload = reorderAnswersRepeatIndex(formValue, answer);
const payload = reorderAnswersRepeatIndex(formValue, updatedAnswer());
setIsSubmitting(true);
const endpoint = generateEndpoint({ payload: payload, submitted: 1 });
endpoint
Expand Down