Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
d82d94e
refactoring page, pulling out components
al-rosenthal Mar 30, 2023
7d239af
fixed onclicks
al-rosenthal Mar 30, 2023
234a568
error component
al-rosenthal Mar 30, 2023
9b48896
stubbing out another component
al-rosenthal Mar 30, 2023
ccefdb9
Componentize more sections of publish button
KjartanE Mar 30, 2023
ee2012c
got errors displaying
al-rosenthal Mar 30, 2023
4ba014f
Update SurveyObservations.tsx and SubmissionAlertBar.tsx
NickPhura Mar 30, 2023
6518bee
renamed folder
al-rosenthal Mar 30, 2023
6fc7ea0
Fix lint issue
NickPhura Mar 30, 2023
4576180
Merge branch 'BHBC-2286' of https://github.com/bcgov/biohubbc into BH…
NickPhura Mar 30, 2023
127cd95
moved things into component folder
al-rosenthal Mar 30, 2023
eb697ed
Tweak Message HTML
NickPhura Mar 30, 2023
b1b10ae
Merge branch 'BHBC-2286' of https://github.com/bcgov/biohubbc into BH…
NickPhura Mar 30, 2023
069d241
fixing more state issues
al-rosenthal Mar 31, 2023
8992258
Merge branch 'BHBC-2286' of https://github.com/bcgov/biohubbc into BH…
KjartanE Mar 31, 2023
1deb1c6
message/ file display better
al-rosenthal Mar 31, 2023
49d537c
BHBC-2266: Add project supplementary data + fix tests
NickPhura Mar 31, 2023
ce7d37b
Fix merge issues
NickPhura Mar 31, 2023
17f4d54
small tweaks
al-rosenthal Mar 31, 2023
0a0d1eb
Merge branch 'BHBC-2286' of https://github.com/bcgov/biohubbc into BH…
al-rosenthal Mar 31, 2023
bdcc52f
Main ticket functioning, mvp
KjartanE Mar 31, 2023
1f1d964
Merge branch 'BHBC-2286' into feature_branch
al-rosenthal Mar 31, 2023
ef9c1fc
Merge remote-tracking branch 'origin/dev' into feature_branch
NickPhura Mar 31, 2023
4791a2e
Merge branch 'BHBC-2266' into feature_branch
NickPhura Mar 31, 2023
e463d4e
Pull observation id from observation dataloader
NickPhura Mar 31, 2023
b57c220
Remove unused variable
NickPhura Mar 31, 2023
fed1121
fixed loading states and definitions
al-rosenthal Mar 31, 2023
6b074c1
clean up
al-rosenthal Apr 1, 2023
a5621cc
Observation Validation fix
KjartanE Apr 3, 2023
fbd361d
Update project components to use context.
NickPhura Apr 4, 2023
182d567
Merge branch 'feature_branch' of https://github.com/bcgov/biohubbc in…
NickPhura Apr 4, 2023
99aa35d
Update project participants components
NickPhura Apr 4, 2023
fde1757
update observation upload icon
KjartanE Apr 4, 2023
8979ec2
Merge branch 'dev' of https://github.com/bcgov/biohubbc into feature_…
KjartanE Apr 4, 2023
6881b12
code smells
KjartanE Apr 4, 2023
9269719
added logic to context refresh
al-rosenthal Apr 4, 2023
4ec8f07
Merge branch 'feature_branch' of https://github.com/bcgov/biohubbc in…
al-rosenthal Apr 4, 2023
9380581
code smells, api test fix
KjartanE Apr 4, 2023
fc8e24a
Merge branch 'feature_branch' of https://github.com/bcgov/biohubbc in…
KjartanE Apr 4, 2023
ba27994
Move project participation repo functions to own repo file
NickPhura Apr 4, 2023
d027354
Merge branch 'feature_branch' of https://github.com/bcgov/biohubbc in…
NickPhura Apr 4, 2023
34d7941
Updates
NickPhura Apr 5, 2023
3481490
fix frontend tests
KjartanE Apr 5, 2023
163e26c
Fix api test
NickPhura Apr 5, 2023
2ce43a9
Update app tests
NickPhura Apr 6, 2023
b8ee72f
ignore-skip
NickPhura Apr 6, 2023
2e50c70
Update create/edit survey to use contexts, fix bug with taxon multise…
NickPhura Apr 6, 2023
2ce9bd6
Fix test to avoid warning
NickPhura Apr 6, 2023
66c699d
stubbing out testing
al-rosenthal Apr 6, 2023
9434e8d
Merge branch 'feature_branch' of https://github.com/bcgov/biohubbc in…
al-rosenthal Apr 6, 2023
54abd28
removed half test
al-rosenthal Apr 6, 2023
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
Prev Previous commit
Next Next commit
Componentize more sections of publish button
  • Loading branch information
KjartanE committed Mar 30, 2023
commit ccefdb9f14ad1ec4b40c268a07e1c0bc08bdfa97
145 changes: 145 additions & 0 deletions app/src/components/publish/PublishSurveyButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
import { Button, DialogContent, DialogContentText } from '@material-ui/core';
import { mdiShareAllOutline } from '@mdi/js';
import Icon from '@mdi/react';
import ComponentDialog from 'components/dialog/ComponentDialog';
import SubmitBiohubDialog from 'components/dialog/SubmitBiohubDialog';
import SubmitSurvey, {
ISurveySubmitForm,
SurveySubmitFormInitialValues,
SurveySubmitFormYupSchema
} from 'components/publish/SubmitSurvey';
import { SUBMISSION_STATUS_TYPE } from 'constants/submissions';
import { SurveyContext } from 'contexts/surveyContext';
import { useBiohubApi } from 'hooks/useBioHubApi';
import { IGetObservationSubmissionResponse } from 'interfaces/useObservationApi.interface';
import { IGetSummaryResultsResponse } from 'interfaces/useSummaryResultsApi.interface';
import { IGetSurveyAttachment, IGetSurveyReportAttachment } from 'interfaces/useSurveyApi.interface';
import React, { useContext, useState } from 'react';

export interface IPublishSurveyButton {}

/**
* Survey header for a single-survey view.
*
* @param {*} props
* @return {*}
*/
const PublishSurveyButton: React.FC<IPublishSurveyButton> = (props) => {
const biohubApi = useBiohubApi();
const surveyContext = useContext(SurveyContext);

const surveyWithDetails = surveyContext.surveyDataLoader.data;

const [finishSubmission, setFinishSubmission] = useState(false);
const [noSubmissionData, setNoSubmissionData] = useState(false);
const [openSubmitSurveyDialog, setOpenSubmitSurveyDialog] = useState(false);

if (!surveyWithDetails) {
return <></>;
}

return (
<>
<Button
title="Submit Survey Data and Documents"
color="primary"
variant="contained"
startIcon={<Icon path={mdiShareAllOutline} size={1} />}
onClick={() => setOpenSubmitSurveyDialog(!openSubmitSurveyDialog)}
style={{ minWidth: '7rem' }}>
Submit Data
</Button>

<ComponentDialog
dialogTitle="Survey data submitted!"
open={finishSubmission}
onClose={() => {
surveyContext.surveyDataLoader.refresh(surveyContext.projectId, surveyContext.surveyId);
surveyContext.artifactDataLoader.refresh(surveyContext.projectId, surveyContext.surveyId);
setFinishSubmission(false);
setOpenSubmitSurveyDialog(!openSubmitSurveyDialog);
}}>
<DialogContent>
<DialogContentText id="alert-dialog-description">
Thank you for submitting your survey data to Biohub.
</DialogContentText>
</DialogContent>
</ComponentDialog>

<ComponentDialog
dialogTitle="No Survey Data to Submit"
open={noSubmissionData}
onClose={() => {
surveyContext.surveyDataLoader.refresh(surveyContext.projectId, surveyContext.surveyId);
surveyContext.artifactDataLoader.refresh(surveyContext.projectId, surveyContext.surveyId);
setNoSubmissionData(false);
setOpenSubmitSurveyDialog(!openSubmitSurveyDialog);
}}>
<DialogContent>
<DialogContentText id="alert-dialog-description">Thank you!</DialogContentText>
</DialogContent>
</ComponentDialog>

<SubmitBiohubDialog
dialogTitle="Submit Survey Information"
open={openSubmitSurveyDialog}
onClose={() => setOpenSubmitSurveyDialog(!openSubmitSurveyDialog)}
onSubmit={async (values: ISurveySubmitForm) => {
await biohubApi.publish.publishSurvey(
surveyContext.projectId,
surveyWithDetails.surveyData.survey_details.id,
values
);
setFinishSubmission(true);
}}
formikProps={{
initialValues: SurveySubmitFormInitialValues,
validationSchema: SurveySubmitFormYupSchema
}}>
<SubmitSurvey
unSubmittedObservation={unSubmittedObservation}
unSubmittedSummary={unSubmittedSummary}
unSumittedArtifacts={unSumittedArtifacts}
/>
</SubmitBiohubDialog>
</>
);
};

export default PublishSurveyButton;

const idExists = (item: any) => {
if (item) {
return true;
}
return false;
};

const unSubmittedObservation = (data: IGetObservationSubmissionResponse) => {
if (
data.surveyObservationData &&
!idExists(data.surveyObservationSupplementaryData?.occurrence_submission_id) &&
data.surveyObservationData.status === SUBMISSION_STATUS_TYPE.TEMPLATE_TRANSFORMED
) {
return [data.surveyObservationData];
}
return [];
};

const unSubmittedSummary = (data: IGetSummaryResultsResponse) => {
if (
data.surveySummaryData &&
!idExists(data.surveySummarySupplementaryData?.survey_summary_submission_id) &&
data.surveySummaryData.messages.length === 0
) {
return [data.surveySummaryData];
}
return [];
};

const unSumittedArtifacts = (data: IGetSurveyAttachment[] | IGetSurveyReportAttachment[]) => {
if (data) {
return data.filter((item) => !idExists(item.supplementaryAttachmentData?.artifact_revision_id));
}
return [];
};
6 changes: 5 additions & 1 deletion app/src/components/publish/SubmitSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ const DisplayFiles: React.FC<IDisplayFilesProps> = (props) => {
);
}

const isChecked = (item: any) => {
return values[formikName].find((value: any) => getName(value) === getName(item)) ? true : false;
};

return (
<List disablePadding>
<FieldArray
Expand All @@ -81,7 +85,7 @@ const DisplayFiles: React.FC<IDisplayFilesProps> = (props) => {
<ListItemIcon>
<Checkbox
edge="start"
checked={!values[formikName].find((value: any) => getName(value) === getName(item)) ? false : true}
checked={isChecked(item)}
name={`${formikName}[${index}]`}
color="primary"></Checkbox>
</ListItemIcon>
Expand Down
55 changes: 23 additions & 32 deletions app/src/components/publish/SubmitSurvey.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ import yup from 'utils/YupSchema';
import SelectAllButton from './SelectAllButton';
import SubmitSection from './SubmitSection';

export interface ISubmitSurvey {
unSubmittedObservation: (data: IGetObservationSubmissionResponse) => ISurveyObservationData[];
unSubmittedSummary: (data: IGetSummaryResultsResponse) => ISurveySummaryData[];
unSumittedArtifacts: (
data: IGetSurveyAttachment[] | IGetSurveyReportAttachment[]
) => IGetSurveyAttachment[] | IGetSurveyReportAttachment[];
}
export interface ISurveySubmitForm {
observations: IGetObservationSubmissionResponse[];
summary: IGetSummaryResultsResponse[];
Expand All @@ -34,7 +41,9 @@ export const SurveySubmitFormYupSchema = yup.object().shape({
attachments: yup.array()
});

const SubmitSurvey: React.FC = () => {
const SubmitSurvey: React.FC<ISubmitSurvey> = (props) => {
const { unSubmittedObservation, unSubmittedSummary, unSumittedArtifacts } = props;

const biohubApi = useBiohubApi();
const surveyContext = useContext(SurveyContext);

Expand Down Expand Up @@ -91,7 +100,7 @@ const SubmitSurvey: React.FC = () => {
);
}

if (attachmentAndReportDataLoader.isLoading || observationDataLoader.isLoading || summaryDataLoader.isLoading) {
if (!attachmentAndReportDataLoader.data || !observationDataLoader.data || !summaryDataLoader.data) {
return <CircularProgress className="pageProgress" size={40} />;
}

Expand All @@ -108,79 +117,61 @@ const SubmitSurvey: React.FC = () => {
formikData={[
{
key: 'observations',
value: observationDataLoader.data?.surveyObservationData
? [observationDataLoader.data.surveyObservationData]
: []
value: unSubmittedObservation(observationDataLoader.data)
},
{
key: 'summary',
value: summaryDataLoader.data?.surveySummaryData ? [summaryDataLoader.data.surveySummaryData] : []
value: unSubmittedSummary(summaryDataLoader.data)
},
{
key: 'reports',
value:
attachmentAndReportDataLoader.data && attachmentAndReportDataLoader.data.reportAttachmentsList
? attachmentAndReportDataLoader.data.reportAttachmentsList
: []
value: unSumittedArtifacts(attachmentAndReportDataLoader.data.reportAttachmentsList)
},
{
key: 'attachments',
value:
attachmentAndReportDataLoader.data && attachmentAndReportDataLoader.data.attachmentsList
? attachmentAndReportDataLoader.data.attachmentsList
: []
value: unSumittedArtifacts(attachmentAndReportDataLoader.data.attachmentsList)
}
]}
/>

{observationDataLoader.isReady && (
{unSubmittedObservation(observationDataLoader.data).length !== 0 && (
<SubmitSection
subHeader="Observations"
formikName="observations"
data={
observationDataLoader.data?.surveyObservationData ? [observationDataLoader.data.surveyObservationData] : []
}
data={unSubmittedObservation(observationDataLoader.data)}
getName={(item: ISurveyObservationData) => {
return item.inputFileName;
}}
/>
)}

{summaryDataLoader.isReady && (
{unSubmittedSummary(summaryDataLoader.data).length !== 0 && (
<SubmitSection
subHeader="Summary Results"
formikName="summary"
data={summaryDataLoader.data?.surveySummaryData ? [summaryDataLoader.data.surveySummaryData] : []}
data={unSubmittedSummary(summaryDataLoader.data)}
getName={(item: ISurveySummaryData) => {
return item.fileName;
}}
/>
)}

{attachmentAndReportDataLoader.isReady && (
{unSumittedArtifacts(attachmentAndReportDataLoader.data.reportAttachmentsList).length !== 0 && (
<SubmitSection
subHeader="Reports"
formikName="reports"
data={
attachmentAndReportDataLoader.data && attachmentAndReportDataLoader.data.reportAttachmentsList
? attachmentAndReportDataLoader.data.reportAttachmentsList
: []
}
data={unSumittedArtifacts(attachmentAndReportDataLoader.data.reportAttachmentsList)}
getName={(item: IGetSurveyReportAttachment) => {
return item.fileName;
}}
/>
)}

{attachmentAndReportDataLoader.isReady && (
{unSumittedArtifacts(attachmentAndReportDataLoader.data.attachmentsList).length !== 0 && (
<SubmitSection
subHeader="Other Documents"
formikName="attachments"
data={
attachmentAndReportDataLoader.data && attachmentAndReportDataLoader.data.attachmentsList
? attachmentAndReportDataLoader.data.attachmentsList
: []
}
data={unSumittedArtifacts(attachmentAndReportDataLoader.data.attachmentsList)}
getName={(item: IGetSurveyAttachment) => {
return item.fileName;
}}
Expand Down
28 changes: 28 additions & 0 deletions app/src/constants/submissions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* Submission Status Types.
*
* See submission_status_type table -> name.
*
* @export
* @enum {number}
*/
export enum SUBMISSION_STATUS_TYPE {
'SUBMITTED' = 'Submitted',
'TEMPLATE_VALIDATED' = 'Template Validated',
'DARWIN_CORE_VALIDATED' = 'Darwin Core Validated',
'TEMPLATE_TRANSFORMED' = 'Template Transformed',
'SUBMISSION_DATA_INGESTED' = 'Submission Data Ingested',
'SECURED' = 'Secured',
'AWAITING CURRATION' = 'Awaiting Curration',
'REJECTED' = 'Rejected',
'ON HOLD' = 'On Hold',
'SYSTEM_ERROR' = 'System Error',

//Failure
'FAILED_OCCURRENCE_PREPARATION' = 'Failed to prepare submission',
'INVALID_MEDIA' = 'Media is not valid',
'FAILED_VALIDATION' = 'Failed to validate',
'FAILED_TRANSFORMED' = 'Failed to transform',
'FAILED_PROCESSING_OCCURRENCE_DATA' = 'Failed to process occurrence data',
'FAILED_SUMMARY_PREPARATION' = 'Failed to prepare summary submission'
}
Loading