synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
115 lines • 6.09 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var fontawesome_svg_core_1 = require("@fortawesome/fontawesome-svg-core");
var free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
var React = (0, tslib_1.__importStar)(require("react"));
var react_bootstrap_1 = require("react-bootstrap");
var core_1 = (0, tslib_1.__importDefault)(require("@rjsf/core"));
var utils_1 = require("../utils");
var ModalDownload_FormSchema_1 = require("./ModalDownload.FormSchema");
var sqlFunctions_1 = require("../utils/functions/sqlFunctions");
var SynapseContext_1 = require("../utils/SynapseContext");
fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.faTimes);
var ModalDownload = /** @class */ (function (_super) {
(0, tslib_1.__extends)(ModalDownload, _super);
function ModalDownload(props) {
var _this = _super.call(this, props) || this;
_this.handleSubmit = function (event) {
if (_this.state.step === 0) {
_this.handleDownloadSetup(event);
}
else {
_this.onDownload();
}
};
_this.handleDownloadSetup = function (event) {
_this.setState({
isLoading: true,
});
var formData = event.formData;
var fileType = formData['File Type'];
var contents = formData.Contents;
var _a = _this.props, queryBundleRequest = _a.queryBundleRequest, getLastQueryRequest = _a.getLastQueryRequest;
var separator = fileType === ModalDownload_FormSchema_1.csvOption ? ',' : '\t';
var writeHeader = contents.includes(ModalDownload_FormSchema_1.writeHeaderOption);
var includeRowIdAndRowVersion = contents.includes(ModalDownload_FormSchema_1.includeRowIdAndRowVersionOption);
var queryRequest = queryBundleRequest !== null && queryBundleRequest !== void 0 ? queryBundleRequest : getLastQueryRequest();
var sql = queryRequest.query.sql;
var downloadFromTableRequest = {
sql: sql,
entityId: (0, sqlFunctions_1.parseEntityIdFromSqlStatement)(sql),
selectedFacets: queryRequest.query.selectedFacets,
concreteType: 'org.sagebionetworks.repo.model.table.DownloadFromTableRequest',
writeHeader: writeHeader,
includeRowIdAndRowVersion: includeRowIdAndRowVersion,
csvTableDescriptor: { separator: separator },
};
utils_1.SynapseClient.getDownloadFromTableRequest(downloadFromTableRequest, _this.context.accessToken)
.then(function (data) {
_this.setState({
isLoading: false,
step: 1,
data: data,
});
})
.catch(function (err) {
console.log('Error getDownloadFromTableRequest: ', err);
});
};
_this.onDownload = function () {
var data = _this.state.data;
// data will always be defined if calling this function
utils_1.SynapseClient.getFileHandleByIdURL(data.resultsFileHandleId, _this.context.accessToken).then(function (url) {
window.location.href = url;
_this.props.onClose();
});
};
_this.handleChange = function (event) {
var formData = event.formData;
_this.setState({
formData: formData,
});
};
_this.state = {
isLoading: false,
step: 0,
formData: {
'File Type': ModalDownload_FormSchema_1.csvOption,
Contents: [ModalDownload_FormSchema_1.writeHeaderOption, ModalDownload_FormSchema_1.includeRowIdAndRowVersionOption],
},
};
return _this;
}
ModalDownload.prototype.render = function () {
var closeBtn = {
position: 'absolute',
top: 10,
right: 10,
zIndex: 10,
};
var spinnerStyle = {
height: 50,
width: 50,
backgroundSize: 50,
};
return (React.createElement(react_bootstrap_1.Modal, { animation: false, show: true, onHide: this.props.onClose },
React.createElement(react_bootstrap_1.Modal.Body, null,
React.createElement("button", { style: closeBtn, onClick: this.props.onClose },
React.createElement(react_fontawesome_1.FontAwesomeIcon, { style: { fontSize: '21px' }, icon: "times" })),
React.createElement(core_1.default, { schema: ModalDownload_FormSchema_1.formSchemaArray[this.state.step], uiSchema: ModalDownload_FormSchema_1.formSchemaUIArray[this.state.step], onChange: this.handleChange, formData: this.state.formData, onSubmit: this.handleSubmit },
this.state.isLoading && (React.createElement("div", { className: "SRC-centerAndJustifyContent" },
React.createElement("div", { className: "SRC-center-text" },
React.createElement("p", null, " Creating the File "),
React.createElement("div", { style: spinnerStyle, className: "spinner" }),
React.createElement("p", null, " Loading... ")))),
React.createElement("div", { style: { textAlign: 'right' } },
React.createElement(react_bootstrap_1.Button, { variant: "default", onClick: this.props.onClose, style: { marginRight: '5px' } }, "Cancel"),
React.createElement(react_bootstrap_1.Button, { type: "submit", variant: "primary" }, this.state.step === 0 ? 'Next' : 'Download'))))));
};
ModalDownload.contextType = SynapseContext_1.SynapseContext;
return ModalDownload;
}(React.Component));
exports.default = ModalDownload;
//# sourceMappingURL=ModalDownload.js.map