synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
119 lines • 8.21 kB
JavaScript
;
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