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

119 lines 8.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProgrammaticOptionsTabs = void 0; var tslib_1 = require("tslib"); var react_1 = (0, tslib_1.__importStar)(require("react")); var use_deep_compare_effect_1 = (0, tslib_1.__importDefault)(require("use-deep-compare-effect")); var SynapseClient_1 = require("../../../utils/SynapseClient"); var react_bootstrap_1 = require("react-bootstrap"); var ModalHeader_1 = (0, tslib_1.__importDefault)(require("react-bootstrap/ModalHeader")); var ProgrammaticOptionsTabs; (function (ProgrammaticOptionsTabs) { ProgrammaticOptionsTabs["COMMAND_LINE"] = "Command Line"; ProgrammaticOptionsTabs["R"] = "R"; ProgrammaticOptionsTabs["PYTHON"] = "Python"; })(ProgrammaticOptionsTabs = exports.ProgrammaticOptionsTabs || (exports.ProgrammaticOptionsTabs = {})); function ProgrammaticOptions(_a) { var _this = this; var queryBundleRequest = _a.queryBundleRequest, queryResultBundle = _a.queryResultBundle, onHide = _a.onHide; var _b = (0, react_1.useState)(''), generatedSql = _b[0], setGeneratedSql = _b[1]; var _c = (0, react_1.useState)(ProgrammaticOptionsTabs.COMMAND_LINE), currentTab = _c[0], setCurrentTab = _c[1]; (0, use_deep_compare_effect_1.default)(function () { var getData = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var query, sql, _a, selectedFacets, columnModels, transformSqlWithFacetsRequest, res, indexOfFrom, selectStarTransformedSql, e_1; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: query = queryBundleRequest.query; sql = query.sql, _a = query.selectedFacets, selectedFacets = _a === void 0 ? [] : _a; columnModels = queryResultBundle.columnModels; if (!columnModels) { console.error('Column Models must be included to complete transform sql request'); } transformSqlWithFacetsRequest = { concreteType: 'org.sagebionetworks.repo.model.table.TransformSqlWithFacetsRequest', sqlToTransform: sql, selectedFacets: selectedFacets, schema: columnModels, }; _b.label = 1; case 1: _b.trys.push([1, 3, , 4]); return [4 /*yield*/, (0, SynapseClient_1.getTransformSqlWithFacetsRequest)(transformSqlWithFacetsRequest) // SWC-5686: The ID column is required by the client, and this column may not have been selected! // Change the SQL to "SELECT * ..." ]; case 2: res = _b.sent(); indexOfFrom = res.transformedSql.toUpperCase().indexOf('FROM SYN'); selectStarTransformedSql = "SELECT * " + res.transformedSql.substring(indexOfFrom); setGeneratedSql(selectStarTransformedSql.replace(/"/g, '\\"')); return [3 /*break*/, 4]; case 3: e_1 = _b.sent(); console.error('Error on getTransformSqlWithFacetsRequest ', e_1); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }; getData(); }, [queryBundleRequest, queryResultBundle]); var installationInstructions = react_1.default.createElement("p", null, "Installation instructions are available at our", ' ', react_1.default.createElement("a", { className: "ProgrammaticOptions__docslink", href: "https://help.synapse.org/docs/Installing-Synapse-API-Clients.1985249668.html", target: "_blank", rel: "noopener noreferrer" }, "Synapse API Documentation Site"), "."); return (react_1.default.createElement(react_bootstrap_1.Modal, { animation: false, show: true, onHide: function () { return onHide(); }, className: "bootstrap-4-backport ProgrammaticOptions", size: "lg" }, react_1.default.createElement(ModalHeader_1.default, { closeButton: true }, react_1.default.createElement(react_bootstrap_1.Modal.Title, null, "Download Programmatically")), react_1.default.createElement(react_bootstrap_1.ModalBody, null, react_1.default.createElement("div", { className: "Tabs" }, Object.keys(ProgrammaticOptionsTabs).map(function (keyName) { return (react_1.default.createElement("div", { className: "Tab", role: "tab", key: keyName, onClick: function (e) { e.stopPropagation(); setCurrentTab(ProgrammaticOptionsTabs[keyName]); }, "aria-selected": ProgrammaticOptionsTabs[keyName] === currentTab }, ProgrammaticOptionsTabs[keyName])); })), react_1.default.createElement("div", { className: "TabContent" }, currentTab === ProgrammaticOptionsTabs.COMMAND_LINE && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("p", null, "This command line code will download Synapse files AND file annotations to your working directory."), installationInstructions, react_1.default.createElement("pre", null, " synapse get -q \"", generatedSql, "\" "))), currentTab === ProgrammaticOptionsTabs.R && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("p", null, "This R code will download file annotations only. Use ", react_1.default.createElement("a", { target: '_blank', rel: 'noopener noreferrer', href: 'https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles' }, "synGet", '()'), " to loop over the list of Synapse IDs from the file annotations to download files."), installationInstructions, react_1.default.createElement("pre", null, "query ", '<-', " synTableQuery(\"", generatedSql, "\")", '\n', "read.table(query$filepath, sep = \",\")"))), currentTab === ProgrammaticOptionsTabs.PYTHON && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("p", null, "This Python code will download file annotations only. Use ", react_1.default.createElement("a", { target: '_blank', rel: 'noopener noreferrer', href: 'https://help.synapse.org/docs/Get-Started-with-Downloading-Data.2004254837.html#GetStartedwithDownloadingData-DownloadingFiles' }, "syn.get"), " to loop over the list of Synapse IDs from the file annotations to download files."), installationInstructions, react_1.default.createElement("pre", null, "query = syn.tableQuery(\"", generatedSql, "\")", '\n', "query.asDataFrame()"))))), react_1.default.createElement(react_bootstrap_1.Modal.Footer, null, react_1.default.createElement("div", { className: "ButtonContainer" }, react_1.default.createElement("div", { className: "Spacer" }), react_1.default.createElement(react_bootstrap_1.Button, { variant: "primary", onClick: function () { return onHide(); } }, "Got it"))))); } exports.default = ProgrammaticOptions; //# sourceMappingURL=ProgrammaticOptions.js.map