UNPKG

synapse-react-client

Version:

[![Build Status](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client.svg?branch=main)](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synaps

115 lines 6.09 kB
"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