ACCEPTED
-
+ {dataset.study?.studyId &&
+
+ }
{dataset.deletable &&
<>
{
- const url = `${await getApiUrl()}/api/dataset/v2`;
- const res = await fetchOk(url, fp.mergeAll([Config.authOpts(), Config.jsonBody(form), { method: 'POST' }]));
- return await res.json();
- },
-
registerDataset: async (registration) => {
const url = `${await getApiUrl()}/api/dataset/v3`;
const res = await axios.post(url, registration, Config.multiPartOpts());
return res.data;
},
- getDatasets: async () => {
- const url = `${await getApiUrl()}/api/dataset/v2`;
- const res = await fetchOk(url, Config.authOpts());
- return await res.json();
- },
-
getDatasetsByIds: async (ids) => {
const url = `${await getApiUrl()}/api/dataset/batch?ids=${ids.join('&ids=')}`;
const res = await fetchOk(url, Config.authOpts());
@@ -59,53 +47,18 @@ export const DataSet = {
return await res.json();
},
- downloadDataSets: async (objectIdList, fileName) => {
- const url = `${await getApiUrl()}/api/dataset/download`;
- const res = await fetchOk(url, fp.mergeAll([Config.jsonBody(objectIdList), Config.fileOpts(), { method: 'POST' }]));
-
- fileName = fileName === null ? getFileNameFromHttpResponse(res) : fileName;
- const responseObj = await res.json();
-
- let blob = new Blob([responseObj.datasets], { type: 'text/plain' });
- const urlBlob = window.URL.createObjectURL(blob);
- let a = document.createElement('a');
- a.href = urlBlob;
- a.download = fileName;
- a.click();
- },
-
deleteDataset: async (datasetObjectId) => {
const url = `${await getApiUrl()}/api/dataset/${datasetObjectId}`;
const res = await fetchOk(url, fp.mergeAll([Config.authOpts(), { method: 'DELETE' }]));
return await res;
},
- updateDataset: async (datasetId, dataSetObject) => {
- const url = `${await getApiUrl()}/api/dataset/${datasetId}`;
- return await fetchOk(url, fp.mergeAll([Config.authOpts(), Config.jsonBody(dataSetObject), { method: 'PUT' }]));
- },
-
updateDatasetV3: async (datasetId, datasetAndFiles) => {
const url = `${await getApiUrl()}/api/dataset/v3/${datasetId}`;
const res = await axios.put(url, datasetAndFiles, Config.multiPartOpts());
return res.data;
},
- validateDatasetName: async (name) => {
- const url = `${await getApiUrl()}/api/dataset/validate?name=${name}`;
- try {
- // We expect a 404 in the case where the dataset name does not exist
- const res = await fetchAny(url, fp.mergeAll([Config.authOpts(), { method: 'GET' }]));
- if (res.status === 404) {
- return -1;
- }
- return await res.json();
- }
- catch (err) {
- return -1;
- }
- },
-
getStudyById: async (studyId) => {
const url = `${await getApiUrl()}/api/dataset/study/${studyId}`;
const res = await fetchOk(url, Config.authOpts());
diff --git a/src/pages/DatasetRegistration.jsx b/src/pages/DatasetRegistration.jsx
deleted file mode 100644
index 27809c908..000000000
--- a/src/pages/DatasetRegistration.jsx
+++ /dev/null
@@ -1,1447 +0,0 @@
-import React, {useState, useEffect, useCallback} from 'react';
-import { RadioButton } from '../components/RadioButton';
-import { Link } from 'react-router-dom';
-import Select from 'react-select';
-import { Alert } from '../components/Alert';
-import { ConfirmationDialog } from '../components/ConfirmationDialog';
-import { Notification } from '../components/Notification';
-import { PageHeading } from '../components/PageHeading';
-import { DataSet } from '../libs/ajax/DataSet';
-import { DAC } from '../libs/ajax/DAC';
-import { NotificationService } from '../libs/notificationService';
-import { Storage } from '../libs/storage';
-import * as fp from 'lodash/fp';
-import AsyncSelect from 'react-select/async';
-import DataProviderAgreement from '../assets/Data_Provider_Agreement.pdf';
-import addDatasetIcon from '../images/icon_dataset_add.png';
-import { searchOntologies } from '../libs/utils';
-import { OntologyService } from '../libs/ontologyService';
-
-// TODO: Deprecated - remove this component when all datasets have been converted to studies
-const getInitialState = () => {
- return {
- dacList: [],
- selectedDac: {},
- allDatasets: '',
- allDatasetNames: [],
- updateDataset: {},
- disableOkBtn: false,
- showValidationMessages: false,
- showModal: false,
- showDialogSubmit: false,
- formData: {
- methods: false,
- genetic: false,
- publication: false,
- collaboration: false,
- ethics: false,
- geographic: false,
- moratorium: false,
- nonProfit: false,
- hmb: false,
- npoa: false,
- diseases: false,
- ontologies: [],
- other: false,
- primaryOtherText: '',
- secondaryOther: false,
- secondaryOtherText: '',
- generalUse: false
- },
- datasetData: {
- datasetName: '',
- researcher: '',
- collectionId: '',
- principalInvestigator: '',
- datasetRepoUrl: '',
- dataType: '',
- species: '',
- phenotype: '',
- nrParticipants: '',
- description: '',
- dac: '',
- consentId: '',
- isValidName: false
- },
- problemSavingRequest: false,
- problemLoadingUpdateDataset: false,
- submissionSuccess: false,
- errorMessage: ''
- };
-};
-
-const controlLabelStyle = {
- fontWeight: 500,
- marginTop: '1rem',
- marginBottom: '1rem'
-};
-
-const DatasetRegistration = (props) => {
- const [registrationState, setRegistrationState] = useState(getInitialState);
- const { datasetId } = props.match.params;
- const { push } = props.history;
-
- const init = useCallback(async () => {
- if (!fp.isNil(datasetId)) {
- const data = await DataSet.getDataSetsByDatasetId(datasetId);
- // redirect to blank form if dataset id is invalid or inaccessible
- if (fp.isEmpty(data) || fp.isNil(data.dataSetId)) {
- setRegistrationState(prevState => ({
- ...prevState,
- problemLoadingUpdateDataset: true
- }));
- push('/dataset_registration');
- } else {
- setRegistrationState(prevState => ({
- ...prevState,
- updateDataset:data
- }));
- }
- }
- }, [datasetId, push]);
-
- const validateDatasetName = useCallback(async (name) => {
- return DataSet.validateDatasetName(name).then(datasetId => {
- let isValid = true;
- //if this is not an update check to make sure this name is not already in use
- if (fp.isEmpty(registrationState.updateDataset)) {
- isValid = (datasetId < 0);
- }
- setRegistrationState(prevState => ({
- ...prevState,
- datasetData: {
- ...prevState.datasetData,
- isValidName: isValid
- }
- }));
- });
- }, [registrationState.updateDataset]);
-
- const prefillDataUseFields = (dataUse) => {
- let methods = dataUse.methodsResearch;
- let genetics = dataUse.geneticStudiesOnly;
- let publication = dataUse.publicationResults;
- let collaboration = dataUse.collaboratorRequired;
- let ethics = dataUse.ethicsApprovalRequired;
- let geographic = dataUse.geographicalRestrictions;
- let moratorium = dataUse.publicationMoratorium;
- let nonProfit = dataUse.nonProfitUse;
- let hmb = dataUse.hmbResearch;
- // if the dataset's POA value is set to false, we need to check the NPOA (or NOT POA) option
- // if the dataset's POA value is set to true, leave this unchecked
- let npoa = (dataUse.populationOriginsAncestry === false);
- let diseases = dataUse.diseaseRestrictions;
- let other = dataUse.otherRestrictions;
- let primaryOtherText = dataUse.other;
- let secondaryOther = !fp.isNil(dataUse.secondaryOther);
- let secondaryOtherText = dataUse.secondaryOther;
- let generalUse = dataUse.generalUse;
-
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- methods: methods,
- genetic: genetics,
- publication: publication,
- collaboration: collaboration,
- ethics: ethics,
- geographic: geographic,
- moratorium: moratorium,
- nonProfit: nonProfit,
- hmb: hmb,
- npoa: npoa,
- diseases: diseases,
- other: other,
- primaryOtherText: primaryOtherText,
- secondaryOther: secondaryOther,
- secondaryOtherText: secondaryOtherText,
- generalUse: generalUse
- }
- }));
- };
-
-
- const prefillDatasetFields = useCallback((dataset) => {
- let name = dataset.name;
- let collectionId = fp.find({ propertyName: 'Sample Collection ID' })(dataset.properties);
- let dataType = fp.find({ propertyName: 'Data Type' })(dataset.properties);
- let species = fp.find({ propertyName: 'Species' })(dataset.properties);
- let phenotype = fp.find({ propertyName: 'Phenotype/Indication' })(dataset.properties);
- let nrParticipants = fp.find({ propertyName: '# of participants' })(dataset.properties);
- let description = fp.find({ propertyName: 'Description' })(dataset.properties);
- let datasetRepoUrl = fp.find({ propertyName: 'url' })(dataset.properties);
- let researcher = fp.find({ propertyName: 'Data Depositor' })(dataset.properties);
- let pi = fp.find({ propertyName: 'Principal Investigator(PI)' })(dataset.properties);
-
- setRegistrationState(prevState => {
- let dac = fp.find({ dacId: dataset.dacId })(prevState.dacList);
- let validName = validateDatasetName(prevState.datasetData.datasetName);
- return {
- ...prevState,
- selectedDac:dac,
- datasetData: {
- ...prevState.datasetData,
- datasetName: name ? name : '',
- collectionId: collectionId ? collectionId.propertyValue : '',
- dataType: dataType ? dataType.propertyValue : '',
- species: species ? species.propertyValue : '',
- phenotype: phenotype ? phenotype.propertyValue : '',
- nrParticipants: nrParticipants ? nrParticipants.propertyValue : '',
- description: description ? description.propertyValue : '',
- datasetRepoUrl: datasetRepoUrl ? datasetRepoUrl.propertyValue : '',
- researcher: researcher ? researcher.propertyValue : '',
- principalInvestigator: pi ? pi.propertyValue : '',
- dac: dac,
- isValidName: validName
- },
- };
- }
- );
-
- if (!fp.isEmpty(dataset.dataUse)) {
- prefillDataUseFields(dataset.dataUse);
- }
- },[validateDatasetName]);
-
- useEffect(() => {
- const fetchData = async () => {
- await init();
- const notificationData = await NotificationService.getBannerObjectById('eRACommonsOutage');
- const currentUser = await Storage.getCurrentUser();
- const allDatasets = await DataSet.getDatasets();
- const allDatasetNames = allDatasets.map(d => d.name);
- const dacs = await DAC.list();
-
- setRegistrationState(prevState => ({
- ...prevState,
- notificationData,
- datasetData: {
- ...prevState.datasetData,
- researcher: currentUser.displayName
- },
- allDatasets,
- allDatasetNames,
- dacList: dacs
- }));
-
- if (!fp.isEmpty(registrationState.updateDataset)) {
- prefillDatasetFields(registrationState.updateDataset);
- const ontologies = await getOntologies(registrationState.formData.diseases);
- const formattedOntologies = formatOntologyItems(ontologies);
-
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- ontologies: formattedOntologies,
- diseases: !fp.isEmpty(ontologies)
- }
- }));
- }
- };
-
- fetchData();
- }, [init, registrationState.formData.diseases, prefillDatasetFields, registrationState.updateDataset]);
-
- const getOntologies = async (urls = []) => {
- if (fp.isEmpty(urls)) {
- return [];
- } else {
- const doidArr = OntologyService.extractDOIDFromUrl(urls);
- const urlParams = doidArr.join(',');
- const ontologies = await OntologyService.searchOntology(urlParams);
- return ontologies;
- }
- };
-
-
- // eslint-disable-next-line no-unused-vars
- const handleOpenModal = () => {
- setRegistrationState(prevState => ({
- ...prevState,
- showModal: true
- }));
- };
-
- // eslint-disable-next-line no-unused-vars
- const handleCloseModal = () => {
- setRegistrationState(prevState => ({
- ...prevState,
- showModal: false
- }));
- };
-
- const handleChange = (e) => {
- const field = e.target.name;
- const value = e.target.value;
- const prev = { ...registrationState };
- prev.datasetData[field] = value;
- prev.disableOkBtn = false;
- prev.problemSavingRequest = false;
- prev.submissionSuccess = false;
- setRegistrationState(prev);
- };
-
- // same as handleChange, but adds call to validate dataset name and only affects state if a change has been made
- const handleDatasetNameChange = async (e) => {
- const value = e.target.value;
- if (registrationState.datasetData.datasetName !== value) {
- await validateDatasetName(value);
- const prev = { ...registrationState };
- prev.datasetData.datasetName = value;
- prev.disableOkBtn = false;
- prev.problemSavingRequest = false;
- prev.submissionSuccess = false;
- setRegistrationState(prev);
- }
- };
-
- const handlePositiveIntegerOnly = (e) => {
- const field = e.target.name;
- const value = e.target.value.replace(/[^\d]/, '');
-
- if (value === '' || parseInt(value, 10) > -1) {
- const prev = { ...registrationState };
- prev.datasetData[field] = value;
- prev.disableOkBtn = false;
- prev.problemSavingRequest = false;
- prev.submissionSuccess = false;
- setRegistrationState(prev);
- }
- };
-
- const handleCheckboxChange = (e) => {
- const field = e.target.name;
- const value = e.target.checked;
- const prev = { ...registrationState };
- prev.formData[field] = value;
- prev.disableOkBtn = false;
- prev.problemSavingRequest = false;
- prev.submissionSuccess = false;
- setRegistrationState(prev);
- };
-
- const validateRequiredFields = (formData) => {
- return (
- isValid(formData.researcher) &&
- isValid(formData.principalInvestigator) &&
- registrationState.datasetData.isValidName &&
- isValid(registrationState.datasetData.datasetName) &&
- isValid(formData.datasetRepoUrl) &&
- isValid(formData.dataType) &&
- isValid(formData.species) &&
- isValid(formData.phenotype) &&
- isValid(formData.nrParticipants) &&
- isValid(formData.description) &&
- isValid(registrationState.selectedDac) &&
- (!fp.isEmpty(registrationState.updateDataset) || !isTypeOfResearchInvalidChange())
- );
- };
-
-
- // generates the css classnames based on what's in the dataset name field and if we have tried to submit
- const showDatasetNameErrorHighlight = (name, showValidationMessages) => {
- if (fp.isEmpty(name)) {
- return showValidationMessages ? 'form-control required-field-error' : 'form-control';
- }
- // if there is a name loaded in because this is an update
- if (!fp.isEmpty(registrationState.updateDataset)) {
- let updateDatasetName = registrationState.updateDataset.name;
- if (name === updateDatasetName) {
- return 'form-control';
- }
- // if the old dataset name has been edited
- else {
- return registrationState.datasetData.isValidName ? 'form-control' : 'form-control required-field-error';
- }
- }
- // if a new dataset name is being edited
- else {
- return registrationState.datasetData.isValidName ? 'form-control' : 'form-control required-field-error';
- }
- };
-
- const attestAndSave = () => {
- setRegistrationState(prevState => {
- let allValid = validateRequiredFields(prevState.datasetData);
- return {
- ...prevState,
- showDialogSubmit: allValid,
- problemLoadingUpdateDataset: false,
- showValidationMessages: !allValid
- };
- });
- };
-
- const isValid = (value) => {
- let isValid = false;
- if (value !== '' && value !== null && value !== undefined) {
- isValid = true;
- }
- return isValid;
- };
-
- // Function to handle dialog submission
- const dialogHandlerSubmit = (answer) => () => {
- if (answer === true) {
- let ontologies = [];
- for (let ontology of registrationState.formData.ontologies) {
- ontologies.push(ontology.item);
- }
-
- const prev = { ...registrationState };
- // Update formData and datasetData state
-
- if (ontologies.length > 0) {
- prev.formData.ontologies = ontologies;
- }
-
- for (let key in prev.datasetData) {
- if (prev.datasetData[key] === '') {
- prev.datasetData[key] = undefined;
- }
- }
- prev.disableOkBtn = true;
- setRegistrationState(prev);
-
- if (registrationState.showValidationMessages) {
- setRegistrationState({
- ...registrationState,
- showDialogSubmit: false
- });
- }
- else {
- let formData = registrationState.datasetData;
- let ds = formatFormData(formData);
- if (fp.isEmpty(registrationState.updateDataset)) {
- DataSet.postDatasetForm(ds).then(() => {
- setRegistrationState({
- ...registrationState,
- showDialogSubmit: false,
- submissionSuccess: true
- });
- }).catch(e => {
- let errorMessage = (e.status === 409) ?
- 'Dataset with this name already exists: ' + registrationState.datasetData.datasetName
- + '. Please choose a different name before attempting to submit again.'
- : 'Some errors occurred, Dataset Registration couldn\'t be completed.';
- setRegistrationState({
- ...registrationState,
- problemSavingRequest: true,
- submissionSuccess: false,
- errorMessage
- });
- });
- } else {
- const { datasetId } = props.match.params;
- DataSet.updateDataset(datasetId, ds).then(() => {
- setRegistrationState({
- ...registrationState,
- showDialogSubmit: false,
- submissionSuccess: true
- });
- }).catch(() => {
- let errorMessage = 'Some errors occurred, the Dataset was not updated.';
- setRegistrationState({
- ...registrationState,
- problemSavingRequest: true,
- submissionSuccess: false,
- errorMessage
- });
- });
- }
- }
- } else {
- setRegistrationState({
- ...registrationState,
- showDialogSubmit: false
- });
- }
- };
-
- /**
- * HMB, Diseases, and Other/OtherText are all mutually exclusive
- */
-
- const isTypeOfResearchInvalidChange = () => {
- const valid = (
- registrationState.formData.generalUse === true ||
- registrationState.formData.hmb === true ||
- (registrationState.formData.diseases === true && !fp.isEmpty(registrationState.formData.ontologies)) ||
- (registrationState.formData.other === true && !fp.isEmpty(registrationState.formData.primaryOtherText))
- );
- return !valid;
- };
-
- const setGeneralUse = () => {
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- generalUse: true,
- hmb: false,
- diseases: false,
- ontologies: [],
- other: false,
- primaryOtherText: ''
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- }));
- };
-
- const setHmb = () => {
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- generalUse: false,
- hmb: true,
- diseases: false,
- ontologies: [],
- npoa: false,
- other: false,
- primaryOtherText: ''
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- }));
- };
-
- const setDiseases = () => {
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- generalUse: false,
- hmb: false,
- diseases: true,
- npoa: false,
- other: false,
- primaryOtherText: ''
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- }));
- };
-
- const onOntologiesChange = (data) => {
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- ontologies: data || []
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- }));
- };
-
- const setOther = () => {
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- generalUse: false,
- hmb: false,
- diseases: false,
- other: true,
- ontologies: [],
- npoa: false,
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- }));
- };
-
- const setOtherText = (e, level) => {
- const value = e.target.value;
- (level === 'primary') ?
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- other: true,
- primaryOtherText: value,
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- })) :
- setRegistrationState(prevState => ({
- ...prevState,
- formData: {
- ...prevState.formData,
- secondaryOther: true,
- secondaryOtherText: value,
- },
- disableOkBtn: false,
- problemSavingRequest: false,
- submissionSuccess: false
- }));
- };
-
- // eslint-disable-next-line no-unused-vars
- const back = () => {
- props.history.goBack();
- };
-
- const createProperties = () => {
- let properties = [];
- let formData = registrationState.datasetData;
-
- if (formData.datasetName) {
- properties.push({'propertyName': 'Dataset Name', 'propertyValue': formData.datasetName});
- }
- if (formData.collectionId) {
- properties.push({'propertyName': 'Sample Collection ID', 'propertyValue': formData.collectionId});
- }
- if (formData.dataType) {
- properties.push({'propertyName': 'Data Type', 'propertyValue': formData.dataType});
- }
- if (formData.species) {
- properties.push({'propertyName': 'Species', 'propertyValue': formData.species});
- }
- if (formData.phenotype) {
- properties.push({'propertyName': 'Phenotype/Indication', 'propertyValue': formData.phenotype});
- }
- if (formData.nrParticipants) {
- properties.push({'propertyName': '# of participants', 'propertyValue': formData.nrParticipants});
- }
- if (formData.description) {
- properties.push({'propertyName': 'Description', 'propertyValue': formData.description});
- }
- if (formData.datasetRepoUrl) {
- properties.push({'propertyName': 'url', 'propertyValue': formData.datasetRepoUrl});
- }
- if (formData.researcher) {
- properties.push({'propertyName': 'Data Depositor', 'propertyValue': formData.researcher});
- }
- if (formData.principalInvestigator) {
- properties.push({'propertyName': 'Principal Investigator(PI)', 'propertyValue': formData.principalInvestigator});
- }
- return properties;
- };
-
- const dacOptionsChange = () => {
- return registrationState.dacList.map(item => ({
- key: item.dacId,
- value: item.dacId,
- label: item.name,
- item: item
- }));
- };
-
- const onDacChange = (option) => {
- const prev = { ...registrationState };
- if (fp.isNil(option)) {
- prev.selectedDac = {};
- }
- else {
- prev.selectedDac = option.item;
- prev.datasetData.dac = option.item;
- prev.disableOkBtn = false;
- prev.problemSavingRequest = false;
- prev.problemLoadingUpdateDataset = false;
- }
- setRegistrationState(prev);
- };
-
- const formatFormData = (data) => {
- let result = {};
- result.datasetName = data.datasetName;
- result.dacId = registrationState.selectedDac.dacId;
- result.consentId = data.consentId;
- // The deprecated API this posts to is expecting a `translatedUseRestriction` field
- result.translatedUseRestriction = data.translatedDataUse;
- result.deletable = true;
- result.isAssociatedToDataOwners = true;
- result.updateAssociationToDataOwnerAllowed = true;
- result.properties = createProperties();
- result.dataUse = fp.isEmpty(registrationState.updateDataset) ? formatDataUse(registrationState.formData) : registrationState.updateDataset.dataUse;
- return result;
- };
-
- const formatDataUse = (data) => {
- let result = {};
- if (data.methods) {
- result.methodsResearch = data.methods;
- }
- if (data.genetic) {
- result.geneticStudiesOnly = data.genetic;
- }
- if (data.publication) {
- result.publicationResults = data.publication;
- }
- if (data.collaboration) {
- result.collaboratorRequired = data.collaboration;
- }
- if (data.ethics) {
- result.ethicsApprovalRequired = data.ethics;
- }
- if (data.geographic) {
- result.geographicalRestrictions = 'Yes';
- }
- if (data.moratorium) {
- result.publicationMoratorium = data.moratorium;
- }
- if (data.npoa) {
- result.populationOriginsAncestry = false;
- }
- if (data.nonProfit) {
- result.nonProfitUse = data.nonProfit;
- }
- if (data.hmb) {
- result.hmbResearch = data.hmb;
- }
- if (data.diseases) {
- let ids = data.ontologies.map(ontology => ontology.id);
- result.diseaseRestrictions = ids;
- }
- if (data.other) {
- result.otherRestrictions = data.other;
- }
- if (fp.trim(data.primaryOtherText).length > 0) {
- result.other = data.primaryOtherText;
- }
- if (data.secondaryOther) {
- result.secondaryOther = data.secondaryOtherText;
- }
- if (data.generalUse) {
- result.generalUse = data.generalUse;
- }
- return result;
- };
-
- const formatOntologyItems = (ontologies) => {
- const ontologyItems = ontologies.map((ontology) => {
- return {
- id: ontology.id || ontology.item.id,
- key: ontology.id || ontology.item.id,
- value: ontology.id || ontology.item.id,
- label: ontology.label || ontology.item.label,
- item: ontology || ontology.item
- };
- });
- return ontologyItems;
- };
-
- const {
- hmb = false,
- npoa = false,
- diseases = false,
- other = false,
- primaryOtherText = '',
- secondaryOther = false,
- secondaryOtherText = '',
- genetic = false,
- nonProfit = false,
- publication = false,
- collaboration = false,
- ethics = false,
- geographic = false,
- moratorium = false,
- methods = false,
- generalUse = false,
- ontologies
- } = registrationState.formData;
- const { problemSavingRequest, problemLoadingUpdateDataset, showValidationMessages, submissionSuccess } = registrationState;
- const isTypeOfResearchInvalid = isTypeOfResearchInvalidChange();
- const isUpdateDataset = (!fp.isEmpty(registrationState.updateDataset));
- const dacOptions = dacOptionsChange();
- const profileUnsubmitted = (
-
- Please make sure{' '}
-
- Your Profile
- {' '}
- is updated, as it will be linked to your dataset for future correspondence
-
- );
-
-
- return (
-
- );
-};
-
-export default DatasetRegistration;
-
-
-
-