synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
116 lines • 6.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = (0, tslib_1.__importStar)(require("react"));
var react_bootstrap_1 = require("react-bootstrap");
var ReactBootstrap = (0, tslib_1.__importStar)(require("react-bootstrap"));
var react_1 = require("react");
var SynapseClient_1 = require("../../../utils/SynapseClient");
var SynapseContext_1 = require("../../../utils/SynapseContext");
var RequestDataAccessStep1 = function (props) {
var requestDataStepCallback = props.requestDataStepCallback, managedACTAccessRequirement = props.managedACTAccessRequirement, onHide = props.onHide;
var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
var _a = (0, react_1.useState)(''), projectLead = _a[0], setProjectLead = _a[1];
var _b = (0, react_1.useState)(''), institution = _b[0], setInstitution = _b[1];
var _c = (0, react_1.useState)(''), intendedDataUseStatement = _c[0], setIntendedDataUseStatement = _c[1];
var _d = (0, react_1.useState)(), alert = _d[0], setAlert = _d[1];
var researchProjectRef = (0, react_1.useRef)({});
var mounted = true;
(0, react_1.useEffect)(function () {
if (mounted) {
setAlert(undefined);
retrieveExistingResearchProject();
}
return function () {
mounted = false;
};
}, [accessToken]);
var retrieveExistingResearchProject = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
var researchProject, e_1;
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
return [4 /*yield*/, (0, SynapseClient_1.getResearchProject)(String(managedACTAccessRequirement.id), accessToken)];
case 1:
researchProject = _a.sent();
if (researchProject.id) {
researchProjectRef.current = researchProject;
setProjectLead(researchProject.projectLead);
setInstitution(researchProject.institution);
setIntendedDataUseStatement(researchProject.intendedDataUseStatement);
}
return [3 /*break*/, 3];
case 2:
e_1 = _a.sent();
console.log('RequestDataAccessStep1: Error getting research project data: ', e_1);
return [3 /*break*/, 3];
case 3: return [2 /*return*/];
}
});
}); };
var getErrorMessage = function (reason) {
if (reason === void 0) { reason = ''; }
return (React.createElement(React.Fragment, null,
React.createElement("strong", null, "Unable to update research project data."),
React.createElement("br", null),
reason));
};
var handleSubmit = function (e) {
e.preventDefault();
var requestObj = Object.assign({}, researchProjectRef.current, {
accessRequirementId: String(managedACTAccessRequirement.id),
institution: institution,
projectLead: projectLead,
intendedDataUseStatement: intendedDataUseStatement,
});
try {
(0, SynapseClient_1.updateResearchProject)(requestObj, accessToken)
.then(function (researchProject) {
requestDataStepCallback === null || requestDataStepCallback === void 0 ? void 0 : requestDataStepCallback({
managedACTAccessRequirement: managedACTAccessRequirement,
step: 2,
researchProjectId: researchProject.id,
});
})
.catch(function (e) {
console.log('RequestDataAccessStep1: Error updating research project data: ', e);
setAlert({
key: 'danger',
message: getErrorMessage(e.reason),
});
});
}
catch (e) {
console.log('RequestDataAccessStep1: Error updating research project data: ', e);
setAlert({
key: 'danger',
message: getErrorMessage(e.reason),
});
}
};
return (React.createElement(React.Fragment, null,
React.createElement(react_bootstrap_1.Form, { className: 'access-request-form1', onSubmit: handleSubmit },
React.createElement(ReactBootstrap.Modal.Header, { closeButton: true },
React.createElement(ReactBootstrap.Modal.Title, { className: "AccessRequirementList__title" }, "Request Access")),
React.createElement(ReactBootstrap.Modal.Body, null,
React.createElement("p", null, "Please tell us about your project."),
React.createElement(react_bootstrap_1.Form.Group, null,
React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'project-lead' }, "Project Lead"),
React.createElement(react_bootstrap_1.Form.Control, { id: 'project-lead', type: "text", value: projectLead, required: true, onChange: function (e) { return setProjectLead(e.target.value); } })),
React.createElement(react_bootstrap_1.Form.Group, null,
React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'institution' }, "Institution"),
React.createElement(react_bootstrap_1.Form.Control, { id: 'institution', type: "text", value: institution, required: true, onChange: function (e) { return setInstitution(e.target.value); } })),
managedACTAccessRequirement.isIDURequired && (React.createElement(react_bootstrap_1.Form.Group, null,
React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'data-use' },
"Intended Data Use Statement -",
managedACTAccessRequirement.isIDUPublic && (React.createElement("i", { id: 'idu-visible' }, "this will be visible to the public"))),
React.createElement(react_bootstrap_1.Form.Control, { id: 'data-use', as: "textarea", value: intendedDataUseStatement, rows: 10, required: true, onChange: function (e) { return setIntendedDataUseStatement(e.target.value); } }))),
/* Alert message */
alert && React.createElement(react_bootstrap_1.Alert, { variant: alert.key }, alert.message)),
React.createElement(ReactBootstrap.Modal.Footer, null,
React.createElement(react_bootstrap_1.Button, { variant: "link", onClick: function () { return onHide === null || onHide === void 0 ? void 0 : onHide(); } }, "Cancel"),
React.createElement(react_bootstrap_1.Button, { variant: "primary", type: "submit" }, "Save changes")))));
};
exports.default = RequestDataAccessStep1;
//# sourceMappingURL=RequestDataAccessStep1.js.map