synapse-react-client 2.1.22 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/containers/CardContainer.d.ts +0 -8
  2. package/dist/containers/CardContainer.js +13 -23
  3. package/dist/containers/CardContainer.js.map +1 -1
  4. package/dist/containers/CardContainerLogic.d.ts +3 -76
  5. package/dist/containers/CardContainerLogic.js +29 -150
  6. package/dist/containers/CardContainerLogic.js.map +1 -1
  7. package/dist/containers/EntityLink.js +2 -2
  8. package/dist/containers/EntityLink.js.map +1 -1
  9. package/dist/containers/FullTextSearch.d.ts +1 -5
  10. package/dist/containers/FullTextSearch.js +9 -9
  11. package/dist/containers/FullTextSearch.js.map +1 -1
  12. package/dist/containers/HasAccess.js +3 -2
  13. package/dist/containers/HasAccess.js.map +1 -1
  14. package/dist/containers/MarkdownPopover.js +1 -1
  15. package/dist/containers/MarkdownPopover.js.map +1 -1
  16. package/dist/containers/MissingQueryResultsWarning.d.ts +12 -0
  17. package/dist/containers/MissingQueryResultsWarning.js +64 -0
  18. package/dist/containers/MissingQueryResultsWarning.js.map +1 -0
  19. package/dist/containers/QueryCount.js +16 -44
  20. package/dist/containers/QueryCount.js.map +1 -1
  21. package/dist/containers/QueryVisualizationWrapper.d.ts +48 -0
  22. package/dist/containers/QueryVisualizationWrapper.js +81 -0
  23. package/dist/containers/QueryVisualizationWrapper.js.map +1 -0
  24. package/dist/containers/QueryWrapper.d.ts +55 -145
  25. package/dist/containers/QueryWrapper.js +188 -263
  26. package/dist/containers/QueryWrapper.js.map +1 -1
  27. package/dist/containers/QueryWrapperErrorBanner.d.ts +5 -0
  28. package/dist/containers/QueryWrapperErrorBanner.js +16 -0
  29. package/dist/containers/QueryWrapperErrorBanner.js.map +1 -0
  30. package/dist/containers/SearchV2.d.ts +6 -2
  31. package/dist/containers/SearchV2.js +11 -11
  32. package/dist/containers/SearchV2.js.map +1 -1
  33. package/dist/containers/SqlEditor.d.ts +1 -5
  34. package/dist/containers/SqlEditor.js +8 -7
  35. package/dist/containers/SqlEditor.js.map +1 -1
  36. package/dist/containers/ToastMessage.d.ts +1 -1
  37. package/dist/containers/TotalQueryResults.d.ts +3 -6
  38. package/dist/containers/TotalQueryResults.js +42 -58
  39. package/dist/containers/TotalQueryResults.js.map +1 -1
  40. package/dist/containers/download_list/DownloadConfirmation.d.ts +0 -5
  41. package/dist/containers/download_list/DownloadConfirmation.js +16 -18
  42. package/dist/containers/download_list/DownloadConfirmation.js.map +1 -1
  43. package/dist/containers/entity/annotations/AdditionalPropertiesSchemaField.d.ts +1 -1
  44. package/dist/containers/entity_finder/EntityFinder.d.ts +1 -1
  45. package/dist/containers/entity_finder/EntityFinder.js +4 -4
  46. package/dist/containers/entity_finder/EntityFinder.js.map +1 -1
  47. package/dist/containers/entity_finder/tree/{TreeView.d.ts → EntityTree.d.ts} +4 -4
  48. package/dist/containers/entity_finder/tree/{TreeView.js → EntityTree.js} +43 -30
  49. package/dist/containers/entity_finder/tree/EntityTree.js.map +1 -0
  50. package/dist/containers/entity_finder/tree/VirtualizedTree.d.ts +89 -0
  51. package/dist/containers/entity_finder/tree/VirtualizedTree.js +379 -0
  52. package/dist/containers/entity_finder/tree/VirtualizedTree.js.map +1 -0
  53. package/dist/containers/home_page/featured-data/FacetPlotsCard.d.ts +1 -4
  54. package/dist/containers/home_page/featured-data/FacetPlotsCard.js +11 -8
  55. package/dist/containers/home_page/featured-data/FacetPlotsCard.js.map +1 -1
  56. package/dist/containers/home_page/featured-data/QueryPerFacetPlotsCard.d.ts +1 -1
  57. package/dist/containers/home_page/featured-data/QueryPerFacetPlotsCard.js +8 -9
  58. package/dist/containers/home_page/featured-data/QueryPerFacetPlotsCard.js.map +1 -1
  59. package/dist/containers/home_page/featured-data/SingleQueryFacetPlotsCards.d.ts +1 -1
  60. package/dist/containers/home_page/featured-data/SingleQueryFacetPlotsCards.js +10 -11
  61. package/dist/containers/home_page/featured-data/SingleQueryFacetPlotsCards.js.map +1 -1
  62. package/dist/containers/query_wrapper_plot_nav/FilterAndView.d.ts +2 -4
  63. package/dist/containers/query_wrapper_plot_nav/FilterAndView.js +12 -5
  64. package/dist/containers/query_wrapper_plot_nav/FilterAndView.js.map +1 -1
  65. package/dist/containers/query_wrapper_plot_nav/QueryFilterToggleButton.d.ts +1 -2
  66. package/dist/containers/query_wrapper_plot_nav/QueryFilterToggleButton.js +9 -10
  67. package/dist/containers/query_wrapper_plot_nav/QueryFilterToggleButton.js.map +1 -1
  68. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.d.ts +4 -4
  69. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js +53 -35
  70. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js.map +1 -1
  71. package/dist/containers/synapse_form_wrapper/SynapseFormWrapper.js +1 -1
  72. package/dist/containers/synapse_form_wrapper/SynapseFormWrapper.js.map +1 -1
  73. package/dist/containers/table/StandaloneQueryWrapper.d.ts +4 -6
  74. package/dist/containers/table/StandaloneQueryWrapper.js +29 -19
  75. package/dist/containers/table/StandaloneQueryWrapper.js.map +1 -1
  76. package/dist/containers/table/SynapseTable.d.ts +12 -13
  77. package/dist/containers/table/SynapseTable.js +100 -136
  78. package/dist/containers/table/SynapseTable.js.map +1 -1
  79. package/dist/containers/table/TopLevelControls.d.ts +1 -4
  80. package/dist/containers/table/TopLevelControls.js +31 -44
  81. package/dist/containers/table/TopLevelControls.js.map +1 -1
  82. package/dist/containers/table/datasets/DatasetItemsEditor.js +3 -4
  83. package/dist/containers/table/datasets/DatasetItemsEditor.js.map +1 -1
  84. package/dist/containers/table/table-top/ColumnSelection.d.ts +1 -1
  85. package/dist/containers/table/table-top/ColumnSelection.js +3 -5
  86. package/dist/containers/table/table-top/ColumnSelection.js.map +1 -1
  87. package/dist/containers/table/table-top/DownloadOptions.d.ts +0 -2
  88. package/dist/containers/table/table-top/DownloadOptions.js +7 -6
  89. package/dist/containers/table/table-top/DownloadOptions.js.map +1 -1
  90. package/dist/containers/table/table-top/ProgrammaticTableDownload.js +15 -8
  91. package/dist/containers/table/table-top/ProgrammaticTableDownload.js.map +1 -1
  92. package/dist/containers/widgets/facet-nav/FacetNav.d.ts +1 -3
  93. package/dist/containers/widgets/facet-nav/FacetNav.js +14 -10
  94. package/dist/containers/widgets/facet-nav/FacetNav.js.map +1 -1
  95. package/dist/containers/widgets/facet-nav/FacetNavPanel.d.ts +5 -8
  96. package/dist/containers/widgets/facet-nav/FacetNavPanel.js +15 -12
  97. package/dist/containers/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  98. package/dist/containers/widgets/query-filter/EnumFacetFilter.d.ts +3 -3
  99. package/dist/containers/widgets/query-filter/EnumFacetFilter.js +2 -2
  100. package/dist/containers/widgets/query-filter/EnumFacetFilter.js.map +1 -1
  101. package/dist/containers/widgets/query-filter/QueryFilter.d.ts +7 -12
  102. package/dist/containers/widgets/query-filter/QueryFilter.js +12 -9
  103. package/dist/containers/widgets/query-filter/QueryFilter.js.map +1 -1
  104. package/dist/containers/widgets/query-filter/RangeFacetFilter.d.ts +4 -4
  105. package/dist/containers/widgets/query-filter/RangeFacetFilter.js +4 -4
  106. package/dist/containers/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  107. package/dist/index.d.ts +4 -9
  108. package/dist/index.js +3 -7
  109. package/dist/index.js.map +1 -1
  110. package/dist/style/base/_icons.scss +4 -0
  111. package/dist/style/components/_dataset-editor.scss +6 -0
  112. package/dist/style/components/_markdown.scss +1 -1
  113. package/dist/style/components/entity_finder/_details-view.scss +6 -6
  114. package/dist/style/components/entity_finder/_entity-finder.scss +3 -7
  115. package/dist/style/components/entity_finder/_tree-node-browse.scss +6 -13
  116. package/dist/style/components/entity_finder/_tree-node-select.scss +14 -24
  117. package/dist/style/components/entity_finder/_tree-view.scss +17 -20
  118. package/dist/style/components/query_filter/_enum-facet-filter.scss +4 -1
  119. package/dist/style/main.css +908 -42
  120. package/dist/template_style/_form.scss +150 -105
  121. package/dist/umd/synapse-react-client.development.css +826 -42
  122. package/dist/umd/synapse-react-client.development.css.map +2 -2
  123. package/dist/umd/synapse-react-client.development.js +10814 -4134
  124. package/dist/umd/synapse-react-client.development.js.map +3 -3
  125. package/dist/umd/synapse-react-client.production.min.css +1 -1
  126. package/dist/umd/synapse-react-client.production.min.js +106 -79
  127. package/dist/umd.index.d.ts +1 -1
  128. package/dist/utils/APIConstants.d.ts +3 -0
  129. package/dist/utils/APIConstants.js +12 -2
  130. package/dist/utils/APIConstants.js.map +1 -1
  131. package/dist/utils/SynapseClient.d.ts +47 -20
  132. package/dist/utils/SynapseClient.js +275 -209
  133. package/dist/utils/SynapseClient.js.map +1 -1
  134. package/dist/utils/SynapseConstants.d.ts +1 -0
  135. package/dist/utils/SynapseConstants.js +3 -2
  136. package/dist/utils/SynapseConstants.js.map +1 -1
  137. package/dist/utils/functions/EntityTypeUtils.d.ts +13 -1
  138. package/dist/utils/functions/EntityTypeUtils.js +25 -1
  139. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  140. package/dist/utils/functions/queryUtils.d.ts +2 -2
  141. package/dist/utils/functions/queryUtils.js +22 -5
  142. package/dist/utils/functions/queryUtils.js.map +1 -1
  143. package/dist/utils/functions/sqlFunctions.d.ts +4 -0
  144. package/dist/utils/functions/sqlFunctions.js +14 -2
  145. package/dist/utils/functions/sqlFunctions.js.map +1 -1
  146. package/dist/utils/functions/unCamelCase.d.ts +1 -1
  147. package/dist/utils/functions/unCamelCase.js.map +1 -1
  148. package/dist/utils/hooks/SynapseAPI/useGetQueryResultBundle.d.ts +4 -3
  149. package/dist/utils/hooks/SynapseAPI/useGetQueryResultBundle.js +67 -1
  150. package/dist/utils/hooks/SynapseAPI/useGetQueryResultBundle.js.map +1 -1
  151. package/dist/utils/synapseTypes/Entity/Entity.js.map +1 -1
  152. package/dist/utils/synapseTypes/Table/AsynchronousJobStatus.d.ts +5 -4
  153. package/dist/utils/synapseTypes/Table/EntityView.d.ts +8 -0
  154. package/dist/utils/synapseTypes/Table/EntityView.js +9 -0
  155. package/dist/utils/synapseTypes/Table/EntityView.js.map +1 -1
  156. package/dist/utils/synapseTypes/Table/FacetColumnRequest.d.ts +1 -1
  157. package/dist/utils/synapseTypes/Table/FacetColumnResult.d.ts +10 -10
  158. package/dist/utils/synapseTypes/Table/QueryResultBundle.d.ts +1 -0
  159. package/dist/utils/types/Writable.d.ts +8 -0
  160. package/dist/utils/{synapseTypes/DownloadListV2/DownloadListQueryResponse.js → types/Writable.js} +1 -1
  161. package/dist/utils/types/Writable.js.map +1 -0
  162. package/dist/utils/typography/Typography.styles.d.ts +1 -1
  163. package/package.json +51 -39
  164. package/dist/containers/Facets.d.ts +0 -43
  165. package/dist/containers/Facets.js +0 -199
  166. package/dist/containers/Facets.js.map +0 -1
  167. package/dist/containers/StackedBarChart.d.ts +0 -63
  168. package/dist/containers/StackedBarChart.js +0 -229
  169. package/dist/containers/StackedBarChart.js.map +0 -1
  170. package/dist/containers/entity_finder/tree/TreeNode.d.ts +0 -25
  171. package/dist/containers/entity_finder/tree/TreeNode.js +0 -89
  172. package/dist/containers/entity_finder/tree/TreeNode.js.map +0 -1
  173. package/dist/containers/entity_finder/tree/TreeView.js.map +0 -1
  174. package/dist/utils/functions/facetUtils.d.ts +0 -44
  175. package/dist/utils/functions/facetUtils.js +0 -84
  176. package/dist/utils/functions/facetUtils.js.map +0 -1
  177. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.d.ts +0 -4
  178. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js +0 -3
  179. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js.map +0 -1
  180. package/dist/utils/synapseTypes/DownloadListV2/DownloadListQueryResponse.d.ts +0 -5
  181. package/dist/utils/synapseTypes/DownloadListV2/DownloadListQueryResponse.js.map +0 -1
@@ -44,7 +44,7 @@ var MarkdownPopover = function (_a) {
44
44
  showCloseButton && (react_1.default.createElement(react_bootstrap_1.Button, { variant: "light", className: "pill", onClick: function () { return setShow(false); } }, "Close"))),
45
45
  react_1.default.createElement("div", { className: "arrow", "data-popper-arrow": true, ref: setArrowElement, style: styles.arrow }))));
46
46
  return (react_1.default.createElement(react_1.default.Fragment, null,
47
- react_1.default.createElement("span", { className: "PopoverContainer bootstrap-4-backport", onClick: function () { return setShow(function (val) { return !val; }); }, ref: setReferenceElement }, children),
47
+ react_1.default.createElement("span", { role: "button", className: "PopoverContainer bootstrap-4-backport", onClick: function () { return setShow(function (val) { return !val; }); }, ref: setReferenceElement }, children),
48
48
  popover));
49
49
  };
50
50
  exports.MarkdownPopover = MarkdownPopover;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownPopover.js","sourceRoot":"","sources":["../../src/lib/containers/MarkdownPopover.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownPopover.js","sourceRoot":"","sources":["../../src/lib/containers/MarkdownPopover.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { Table } from '../utils/synapseTypes/';
3
+ export declare type MissingQueryResultsWarningProps = {
4
+ entity: Table;
5
+ versionNumber?: number;
6
+ };
7
+ /**
8
+ * If possible, this component will render a warning message if results may be missing from the query due to user permissions or
9
+ * entities being deleted. If not possible, it will render an empty fragment.
10
+ */
11
+ declare const MissingQueryResultsWarning: React.FunctionComponent<MissingQueryResultsWarningProps>;
12
+ export default MissingQueryResultsWarning;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var icons_1 = require("@material-ui/icons");
5
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
6
+ var utils_1 = require("../utils/");
7
+ var EntityTypeUtils_1 = require("../utils/functions/EntityTypeUtils");
8
+ var useGetQueryResultBundle_1 = (0, tslib_1.__importDefault)(require("../utils/hooks/SynapseAPI/useGetQueryResultBundle"));
9
+ var Typography_1 = (0, tslib_1.__importDefault)(require("../utils/typography/Typography"));
10
+ var HelpPopover_1 = require("./HelpPopover");
11
+ var DATASETS_CURRENT_VERSION_HELP = 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.';
12
+ // Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot
13
+ var DATASETS_SNAPSHOT_HELP = 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.';
14
+ /**
15
+ * If possible, this component will render a warning message if results may be missing from the query due to user permissions or
16
+ * entities being deleted. If not possible, it will render an empty fragment.
17
+ */
18
+ var MissingQueryResultsWarning = function (_a) {
19
+ var _b, _c;
20
+ var entity = _a.entity;
21
+ // Currently, Datasets are the only table type for which we can reliably get this info.
22
+ // Other cases will need a new service, tracked by PLFM-7046
23
+ var isMissingResultsCalculable = entity && (0, EntityTypeUtils_1.isDataset)(entity);
24
+ var request = {
25
+ concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',
26
+ query: {
27
+ sql: "SELECT * FROM " + entity.id + (!entity.isLatestVersion && entity.versionNumber
28
+ ? "." + entity.versionNumber
29
+ : ''),
30
+ },
31
+ entityId: entity.id,
32
+ partMask: utils_1.SynapseConstants.BUNDLE_MASK_QUERY_COUNT,
33
+ };
34
+ var queryResult = (0, useGetQueryResultBundle_1.default)(request, {
35
+ enabled: isMissingResultsCalculable,
36
+ }).data;
37
+ if (isMissingResultsCalculable && queryResult && entity) {
38
+ var totalVisibleResults = queryResult.queryCount;
39
+ var totalResults = (_c = (_b = entity.items) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
40
+ if (totalVisibleResults === totalResults) {
41
+ // All of the results are visible, so there is no need to show a warning.
42
+ return react_1.default.createElement(react_1.default.Fragment, null);
43
+ }
44
+ var difference = totalResults - totalVisibleResults;
45
+ var helpMessage = '';
46
+ if (entity.isLatestVersion) {
47
+ helpMessage = DATASETS_CURRENT_VERSION_HELP;
48
+ }
49
+ else {
50
+ helpMessage = DATASETS_SNAPSHOT_HELP;
51
+ }
52
+ return (react_1.default.createElement(Typography_1.default, { className: "SRC-centerContent", style: {
53
+ marginLeft: 10,
54
+ }, variant: "smallText1", color: "textSecondary" },
55
+ react_1.default.createElement(icons_1.WarningSharp, { className: "SRC-color-warning", style: { fontSize: '16px' } }),
56
+ difference.toLocaleString() + ' Unavailable',
57
+ react_1.default.createElement(HelpPopover_1.HelpPopover, { className: "SRC-margin-left-5", markdownText: helpMessage, placement: "right" })));
58
+ }
59
+ else {
60
+ return react_1.default.createElement(react_1.default.Fragment, null);
61
+ }
62
+ };
63
+ exports.default = MissingQueryResultsWarning;
64
+ //# sourceMappingURL=MissingQueryResultsWarning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MissingQueryResultsWarning.js","sourceRoot":"","sources":["../../src/lib/containers/MissingQueryResultsWarning.tsx"],"names":[],"mappings":";;;AAAA,4CAAiD;AACjD,6DAAyB;AACzB,mCAA4C;AAC5C,sEAA8D;AAC9D,2HAAuF;AAEvF,2FAAuD;AACvD,6CAA2C;AAE3C,IAAM,6BAA6B,GACjC,yIAAyI,CAAA;AAE3I,sIAAsI;AACtI,IAAM,sBAAsB,GAC1B,2GAA2G,CAAA;AAO7G;;;GAGG;AACH,IAAM,0BAA0B,GAC9B,UAAC,EAAU;;QAAR,MAAM,YAAA;IACP,uFAAuF;IACvF,4DAA4D;IAC5D,IAAM,0BAA0B,GAAG,MAAM,IAAI,IAAA,2BAAS,EAAC,MAAM,CAAC,CAAA;IAE9D,IAAM,OAAO,GAAuB;QAClC,YAAY,EAAE,yDAAyD;QACvE,KAAK,EAAE;YACL,GAAG,EAAE,mBAAiB,MAAM,CAAC,EAAG,IAC9B,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,aAAa;gBAC7C,CAAC,CAAC,MAAI,MAAM,CAAC,aAAe;gBAC5B,CAAC,CAAC,EAAE,CACN;SACH;QACD,QAAQ,EAAE,MAAM,CAAC,EAAG;QACpB,QAAQ,EAAE,wBAAgB,CAAC,uBAAuB;KACnD,CAAA;IAEO,IAAM,WAAW,GAAK,IAAA,iCAAuB,EAAC,OAAO,EAAE;QAC7D,OAAO,EAAE,0BAA0B;KACpC,CAAC,KAFuB,CAEvB;IACF,IAAI,0BAA0B,IAAI,WAAW,IAAI,MAAM,EAAE;QACvD,IAAM,mBAAmB,GAAG,WAAW,CAAC,UAAW,CAAA;QACnD,IAAM,YAAY,GAAG,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,mCAAI,CAAC,CAAA;QAE9C,IAAI,mBAAmB,KAAK,YAAY,EAAE;YACxC,yEAAyE;YACzE,OAAO,6DAAK,CAAA;SACb;QAED,IAAM,UAAU,GAAG,YAAY,GAAG,mBAAmB,CAAA;QAErD,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,IAAI,MAAM,CAAC,eAAe,EAAE;YAC1B,WAAW,GAAG,6BAA6B,CAAA;SAC5C;aAAM;YACL,WAAW,GAAG,sBAAsB,CAAA;SACrC;QAED,OAAO,CACL,8BAAC,oBAAU,IACT,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE;gBACL,UAAU,EAAE,EAAE;aACf,EACD,OAAO,EAAC,YAAY,EACpB,KAAK,EAAC,eAAe;YAErB,8BAAC,oBAAY,IACX,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAC3B;YACD,UAAU,CAAC,cAAc,EAAE,GAAG,cAAc;YAC7C,8BAAC,yBAAW,IACV,SAAS,EAAC,mBAAmB,EAC7B,YAAY,EAAE,WAAW,EACzB,SAAS,EAAC,OAAO,GACJ,CACJ,CACd,CAAA;KACF;SAAM;QACL,OAAO,6DAAK,CAAA;KACb;AACH,CAAC,CAAA;AAEH,kBAAe,0BAA0B,CAAA"}
@@ -1,55 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
4
5
  var utils_1 = require("../utils/");
5
- var react_1 = (0, tslib_1.__importStar)(require("react"));
6
6
  var sqlFunctions_1 = require("../utils/functions/sqlFunctions");
7
- var SynapseContext_1 = require("../utils/SynapseContext");
7
+ var useGetQueryResultBundle_1 = (0, tslib_1.__importDefault)(require("../utils/hooks/SynapseAPI/useGetQueryResultBundle"));
8
8
  var QueryCount = function (_a) {
9
+ var _b;
9
10
  var sql = _a.sql, selectedFacets = _a.selectedFacets, parens = _a.parens;
10
- var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken;
11
- var _b = (0, react_1.useState)({}), storedSqlQueryCount = _b[0], setStoredSqlQueryCount = _b[1];
12
- // maps sql string to true/false, true if already made a request for this sql's query count
13
- // false or undefined if not
14
- var _c = (0, react_1.useState)({}), isCalculatingQueryCountForSql = _c[0], setIsCalculatingQueryCountForSql = _c[1];
15
- var mounted = true;
16
- (0, react_1.useEffect)(function () {
17
- var calculateRowCount = function () {
18
- if (mounted) {
19
- var entityId = (0, sqlFunctions_1.parseEntityIdFromSqlStatement)(sql);
20
- if (isCalculatingQueryCountForSql[sql + "-" + accessToken] ||
21
- storedSqlQueryCount[sql + "-" + accessToken]) {
22
- // its either in progress or its already been calculated
23
- return;
24
- }
25
- var request = {
26
- concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',
27
- query: {
28
- sql: sql,
29
- selectedFacets: selectedFacets,
30
- },
31
- entityId: entityId,
32
- partMask: utils_1.SynapseConstants.BUNDLE_MASK_QUERY_COUNT,
33
- };
34
- var newIsCalculatingQueryCountForSql = (0, tslib_1.__assign)({}, isCalculatingQueryCountForSql);
35
- newIsCalculatingQueryCountForSql[sql + "-" + accessToken] = true;
36
- setIsCalculatingQueryCountForSql(newIsCalculatingQueryCountForSql);
37
- utils_1.SynapseClient.getQueryTableResults(request, accessToken).then(function (data) {
38
- var newStoredSqlQueryCount = (0, tslib_1.__assign)({}, storedSqlQueryCount);
39
- newStoredSqlQueryCount[sql + "-" + accessToken] = data.queryCount;
40
- setStoredSqlQueryCount(newStoredSqlQueryCount);
41
- });
42
- }
43
- };
44
- calculateRowCount();
45
- return function () {
46
- mounted = false;
47
- };
48
- }, [sql, selectedFacets, accessToken]);
49
- var count = storedSqlQueryCount[sql + "-" + accessToken];
50
- var localCount = count === null || count === void 0 ? void 0 : count.toLocaleString();
11
+ var entityId = (0, sqlFunctions_1.parseEntityIdFromSqlStatement)(sql);
12
+ var request = {
13
+ concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',
14
+ query: {
15
+ sql: sql,
16
+ selectedFacets: selectedFacets,
17
+ },
18
+ entityId: entityId,
19
+ partMask: utils_1.SynapseConstants.BUNDLE_MASK_QUERY_COUNT,
20
+ };
21
+ var queryResult = (0, useGetQueryResultBundle_1.default)(request).data;
22
+ var localCount = (_b = queryResult === null || queryResult === void 0 ? void 0 : queryResult.queryCount) === null || _b === void 0 ? void 0 : _b.toLocaleString();
51
23
  /* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Using_toLocaleString */
52
- return (react_1.default.createElement(react_1.default.Fragment, null, count && (parens ? "(" + localCount + ")" : localCount)));
24
+ return (react_1.default.createElement(react_1.default.Fragment, null, localCount && (parens ? "(" + localCount + ")" : localCount)));
53
25
  };
54
26
  exports.default = QueryCount;
55
27
  //# sourceMappingURL=QueryCount.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryCount.js","sourceRoot":"","sources":["../../src/lib/containers/QueryCount.tsx"],"names":[],"mappings":";;;AAAA,mCAA2D;AAC3D,0DAAkD;AAKlD,gEAA+E;AAC/E,0DAA2D;AAQ3D,IAAM,UAAU,GAA6C,UAAC,EAI7D;QAHC,GAAG,SAAA,EACH,cAAc,oBAAA,EACd,MAAM,YAAA;IAEE,IAAA,WAAW,GAAK,IAAA,kCAAiB,GAAE,YAAxB,CAAwB;IACrC,IAAA,KAAgD,IAAA,gBAAQ,EAAK,EAAE,CAAC,EAA/D,mBAAmB,QAAA,EAAE,sBAAsB,QAAoB,CAAA;IACtE,2FAA2F;IAC3F,4BAA4B;IACtB,IAAA,KAGF,IAAA,gBAAQ,EAAK,EAAE,CAAC,EAFlB,6BAA6B,QAAA,EAC7B,gCAAgC,QACd,CAAA;IACpB,IAAI,OAAO,GAAG,IAAI,CAAA;IAElB,IAAA,iBAAS,EAAC;QACR,IAAM,iBAAiB,GAAG;YACxB,IAAI,OAAO,EAAE;gBACX,IAAM,QAAQ,GAAG,IAAA,4CAA6B,EAAC,GAAG,CAAC,CAAA;gBACnD,IACE,6BAA6B,CAAI,GAAG,SAAI,WAAa,CAAC;oBACtD,mBAAmB,CAAI,GAAG,SAAI,WAAa,CAAC,EAC5C;oBACA,wDAAwD;oBACxD,OAAM;iBACP;gBACD,IAAM,OAAO,GAAuB;oBAClC,YAAY,EACV,yDAAyD;oBAC3D,KAAK,EAAE;wBACL,GAAG,KAAA;wBACH,cAAc,gBAAA;qBACf;oBACD,QAAQ,UAAA;oBACR,QAAQ,EAAE,wBAAgB,CAAC,uBAAuB;iBACnD,CAAA;gBACD,IAAM,gCAAgC,6BACjC,6BAA6B,CACjC,CAAA;gBACD,gCAAgC,CAAI,GAAG,SAAI,WAAa,CAAC,GAAG,IAAI,CAAA;gBAChE,gCAAgC,CAAC,gCAAgC,CAAC,CAAA;gBAClE,qBAAa,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;oBAChE,IAAM,sBAAsB,6BACvB,mBAAmB,CACvB,CAAA;oBACD,sBAAsB,CAAI,GAAG,SAAI,WAAa,CAAC,GAAG,IAAK,CAAC,UAAU,CAAA;oBAClE,sBAAsB,CAAC,sBAAsB,CAAC,CAAA;gBAChD,CAAC,CAAC,CAAA;aACH;QACH,CAAC,CAAA;QAED,iBAAiB,EAAE,CAAA;QAEnB,OAAO;YACL,OAAO,GAAG,KAAK,CAAA;QACjB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAA;IAEtC,IAAM,KAAK,GAAG,mBAAmB,CAAI,GAAG,SAAI,WAAa,CAAC,CAAA;IAC1D,IAAM,UAAU,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,EAAE,CAAA;IAC1C,iIAAiI;IACjI,OAAO,CACL,8BAAC,eAAK,CAAC,QAAQ,QACZ,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAI,UAAU,MAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CACpC,CAClB,CAAA;AACH,CAAC,CAAA;AACD,kBAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"QueryCount.js","sourceRoot":"","sources":["../../src/lib/containers/QueryCount.tsx"],"names":[],"mappings":";;;AAAA,6DAAyB;AACzB,mCAA4C;AAC5C,gEAA+E;AAC/E,2HAAuF;AAYvF,IAAM,UAAU,GAA6C,UAAC,EAI7D;;QAHC,GAAG,SAAA,EACH,cAAc,oBAAA,EACd,MAAM,YAAA;IAEN,IAAM,QAAQ,GAAG,IAAA,4CAA6B,EAAC,GAAG,CAAC,CAAA;IAEnD,IAAM,OAAO,GAAuB;QAClC,YAAY,EAAE,yDAAyD;QACvE,KAAK,EAAE;YACL,GAAG,KAAA;YACH,cAAc,gBAAA;SACf;QACD,QAAQ,UAAA;QACR,QAAQ,EAAE,wBAAgB,CAAC,uBAAuB;KACnD,CAAA;IAEO,IAAM,WAAW,GAAK,IAAA,iCAAuB,EAAC,OAAO,CAAC,KAArC,CAAqC;IAE9D,IAAM,UAAU,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,0CAAE,cAAc,EAAE,CAAA;IAC5D,iIAAiI;IACjI,OAAO,CACL,8BAAC,eAAK,CAAC,QAAQ,QACZ,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAI,UAAU,MAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CACzC,CAClB,CAAA;AACH,CAAC,CAAA;AACD,kBAAe,UAAU,CAAA"}
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ export declare type QueryVisualizationContextType = {
3
+ topLevelControlsState: TopLevelControlsState;
4
+ setTopLevelControlsState: React.Dispatch<React.SetStateAction<TopLevelControlsState>>;
5
+ columnsToShowInTable: string[];
6
+ setColumnsToShowInTable: (newState: string[]) => void;
7
+ selectedRowIndices: number[];
8
+ setSelectedRowIndices: (newState: number[]) => void;
9
+ facetAliases?: Record<string, string>;
10
+ rgbIndex?: number;
11
+ unitDescription?: string;
12
+ };
13
+ /**
14
+ * This must be exported to use the context in class components.
15
+ */
16
+ export declare const QueryVisualizationContext: React.Context<QueryVisualizationContextType | undefined>;
17
+ export declare type QueryVisualizationContextProviderProps = {
18
+ queryVisualizationContext: QueryVisualizationContextType;
19
+ };
20
+ /**
21
+ * Provides fields and functions related to visualizing a Synapse table query. For actual query data, see QueryContextProvider.
22
+ */
23
+ export declare const QueryVisualizationContextProvider: React.FunctionComponent<QueryVisualizationContextProviderProps>;
24
+ export declare function useQueryVisualizationContext(): QueryVisualizationContextType;
25
+ export declare const QueryVisualizationContextConsumer: React.Consumer<QueryVisualizationContextType | undefined>;
26
+ export declare type QueryVisualizationWrapperProps = {
27
+ children: React.ReactNode | React.ReactNode[];
28
+ rgbIndex?: number;
29
+ unitDescription?: string;
30
+ facetAliases?: Record<string, string>;
31
+ visibleColumnCount?: number;
32
+ hiddenColumns?: string[];
33
+ defaultShowFacetVisualization?: boolean;
34
+ };
35
+ export declare type TopLevelControlsState = {
36
+ showFacetVisualization: boolean;
37
+ showFacetFilter?: boolean;
38
+ showColumnFilter: boolean;
39
+ showSearchBar: boolean;
40
+ showDownloadConfirmation: boolean;
41
+ showColumnSelectDropdown: boolean;
42
+ showSqlEditor: boolean;
43
+ };
44
+ /**
45
+ * QueryVisualizationWrapper manages UI state for components that query tables in Synapse. That state can be accessed
46
+ * or updated using QueryVisualizationContext. A QueryVisualizationWrapper must be used within a QueryWrapper.
47
+ */
48
+ export declare function QueryVisualizationWrapper(props: QueryVisualizationWrapperProps): JSX.Element;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryVisualizationWrapper = exports.QueryVisualizationContextConsumer = exports.useQueryVisualizationContext = exports.QueryVisualizationContextProvider = exports.QueryVisualizationContext = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = (0, tslib_1.__importStar)(require("react"));
6
+ var QueryWrapper_1 = require("./QueryWrapper");
7
+ /**
8
+ * This must be exported to use the context in class components.
9
+ */
10
+ exports.QueryVisualizationContext = (0, react_1.createContext)(undefined);
11
+ /**
12
+ * Provides fields and functions related to visualizing a Synapse table query. For actual query data, see QueryContextProvider.
13
+ */
14
+ var QueryVisualizationContextProvider = function (_a) {
15
+ var children = _a.children, queryVisualizationContext = _a.queryVisualizationContext;
16
+ return (react_1.default.createElement(exports.QueryVisualizationContext.Provider, { value: queryVisualizationContext }, children));
17
+ };
18
+ exports.QueryVisualizationContextProvider = QueryVisualizationContextProvider;
19
+ function useQueryVisualizationContext() {
20
+ var context = (0, react_1.useContext)(exports.QueryVisualizationContext);
21
+ if (context === undefined) {
22
+ throw new Error('useQueryVisualizationContext must be used within a QueryWrapper');
23
+ }
24
+ return context;
25
+ }
26
+ exports.useQueryVisualizationContext = useQueryVisualizationContext;
27
+ exports.QueryVisualizationContextConsumer = exports.QueryVisualizationContext.Consumer;
28
+ /**
29
+ * QueryVisualizationWrapper manages UI state for components that query tables in Synapse. That state can be accessed
30
+ * or updated using QueryVisualizationContext. A QueryVisualizationWrapper must be used within a QueryWrapper.
31
+ */
32
+ function QueryVisualizationWrapper(props) {
33
+ var _a;
34
+ var _b = (0, QueryWrapper_1.useQueryContext)(), data = _b.data, getLastQueryRequest = _b.getLastQueryRequest, isFacetsAvailable = _b.isFacetsAvailable, isLoadingNewBundle = _b.isLoadingNewBundle;
35
+ var _c = (0, react_1.useState)({
36
+ showColumnFilter: true,
37
+ showFacetFilter: true,
38
+ showFacetVisualization: (_a = props.defaultShowFacetVisualization) !== null && _a !== void 0 ? _a : true,
39
+ showSearchBar: false,
40
+ showDownloadConfirmation: false,
41
+ showColumnSelectDropdown: false,
42
+ showSqlEditor: false,
43
+ }), topLevelControlsState = _c[0], setTopLevelControlsState = _c[1];
44
+ (0, react_1.useEffect)(function () {
45
+ if (!isFacetsAvailable) {
46
+ setTopLevelControlsState(function (state) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, state), { showFacetFilter: false, showFacetVisualization: false })); });
47
+ }
48
+ }, [isFacetsAvailable]);
49
+ (0, react_1.useEffect)(function () {
50
+ if (isLoadingNewBundle) {
51
+ setSelectedRowIndices([]);
52
+ }
53
+ }, [isLoadingNewBundle]);
54
+ var _d = (0, react_1.useState)([]), isColumnSelected = _d[0], setIsColumnSelected = _d[1];
55
+ var _e = (0, react_1.useState)([]), selectedRowIndices = _e[0], setSelectedRowIndices = _e[1];
56
+ var lastQueryRequest = getLastQueryRequest();
57
+ var selectColumns = data === null || data === void 0 ? void 0 : data.selectColumns;
58
+ (0, react_1.useEffect)(function () {
59
+ var _a, _b;
60
+ // SWC-6030: If sql changes, reset what columns are visible
61
+ setIsColumnSelected((_b = selectColumns === null || selectColumns === void 0 ? void 0 : selectColumns.slice(0, (_a = props.visibleColumnCount) !== null && _a !== void 0 ? _a : Infinity).map(function (el) { return el.name; })) !== null && _b !== void 0 ? _b : []);
62
+ }, [selectColumns, lastQueryRequest.query.sql, props.visibleColumnCount]);
63
+ var context = {
64
+ topLevelControlsState: topLevelControlsState,
65
+ setTopLevelControlsState: setTopLevelControlsState,
66
+ columnsToShowInTable: isColumnSelected,
67
+ setColumnsToShowInTable: setIsColumnSelected,
68
+ selectedRowIndices: selectedRowIndices,
69
+ setSelectedRowIndices: setSelectedRowIndices,
70
+ facetAliases: props.facetAliases,
71
+ rgbIndex: props.rgbIndex,
72
+ unitDescription: props.unitDescription,
73
+ };
74
+ /**
75
+ * Render the children without any formatting
76
+ */
77
+ var children = props.children;
78
+ return (react_1.default.createElement(exports.QueryVisualizationContextProvider, { queryVisualizationContext: context }, children));
79
+ }
80
+ exports.QueryVisualizationWrapper = QueryVisualizationWrapper;
81
+ //# sourceMappingURL=QueryVisualizationWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryVisualizationWrapper.js","sourceRoot":"","sources":["../../src/lib/containers/QueryVisualizationWrapper.tsx"],"names":[],"mappings":"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"}
@@ -1,34 +1,66 @@
1
1
  import * as React from 'react';
2
- import { AsynchronousJobStatus, QueryBundleRequest, QueryResultBundle, SelectColumn } from '../utils/synapseTypes/';
3
2
  import { SynapseClientError } from '../utils/SynapseClient';
3
+ import { AsynchronousJobStatus, QueryBundleRequest, QueryResultBundle, Table } from '../utils/synapseTypes';
4
+ export declare const QUERY_FILTERS_EXPANDED_CSS: string;
5
+ export declare const QUERY_FILTERS_COLLAPSED_CSS: string;
6
+ export declare type QueryContextType = {
7
+ /** The entity being queried. Will be undefined while initially fetching */
8
+ entity: Table | undefined;
9
+ /** The query results, which will be undefined while initially fetching a new bundle, but will not be unloaded when fetching new pages */
10
+ data: QueryResultBundle | undefined;
11
+ /** Returns a deep clone of the current query bundle request */
12
+ getLastQueryRequest: () => QueryBundleRequest;
13
+ /** Returns a deep clone of the initial query bundle request */
14
+ getInitQueryRequest: () => QueryBundleRequest;
15
+ /** Updates the current query with the passed request */
16
+ executeQueryRequest: (param: QueryBundleRequest) => void;
17
+ /** Returns true when loading a new page of query results */
18
+ isLoadingNewPage: boolean;
19
+ /** Returns true when loading a brand new query result bundle. Will not be true when just loading the next page of query results. */
20
+ isLoadingNewBundle: boolean;
21
+ /** The error returned by the query request, if one is encountered */
22
+ error: SynapseClientError | null;
23
+ /** The status of the asynchronous job. */
24
+ asyncJobStatus?: AsynchronousJobStatus<QueryBundleRequest, QueryResultBundle>;
25
+ /** Whether or not the query result bundle has a next page */
26
+ hasNextPage: boolean;
27
+ /** Invoke this method to fetch and append the next page of rows to the data */
28
+ appendNextPageToResults: () => Promise<void>;
29
+ /** Invoke to fetch and update the data with the next page of query results */
30
+ goToNextPage: () => Promise<void>;
31
+ /** Whether or not the query result bundle has a previous page */
32
+ hasPreviousPage: boolean;
33
+ /** Invoke to fetch and update the data with the previous page of query results */
34
+ goToPreviousPage: () => Promise<void>;
35
+ /** Whether or not facets are available to be filtered upon based on the current data */
36
+ isFacetsAvailable: boolean;
37
+ /**
38
+ * A facet may be "locked" so that it is not modifiable by the user, for example when showing only data relevant to a particular facet value on a Details Page.
39
+ * The value of a locked facet will result in a client-side modification of the result bundle data.
40
+ */
41
+ lockedFacet?: LockedFacet;
42
+ };
43
+ /**
44
+ * This must be exported to use the context in class components.
45
+ */
46
+ export declare const QueryContext: React.Context<QueryContextType | undefined>;
47
+ export declare type QueryContextProviderProps = {
48
+ queryContext: QueryContextType;
49
+ };
4
50
  /**
5
- * TODO: SWC-5612 - Replace token prop with SynapseContext.accessToken
6
- *
7
- * This wasn't done because Enzyme's shallow renderer is not currently
8
- * compatible with the `contextType` field in the React 16+ context API.
9
- *
10
- * This can be fixed by rewriting tests to not rely on the shallow renderer.
11
- *
12
- * See here: https://github.com/enzymejs/enzyme/issues/1553
51
+ * Provides data related to a Synapse table query, and functions for iterating through pages of the data.
13
52
  */
53
+ export declare const QueryContextProvider: React.FC<QueryContextProviderProps>;
54
+ export declare function useQueryContext(): QueryContextType;
55
+ export declare const QueryContextConsumer: React.Consumer<QueryContextType | undefined>;
14
56
  export declare type QueryWrapperProps = {
15
- visibleColumnCount?: number;
57
+ children: React.ReactNode | React.ReactNode[];
16
58
  initQueryRequest: QueryBundleRequest;
17
- rgbIndex?: number;
18
- token?: string;
19
- facet?: string;
20
- unitDescription?: string;
21
- facetAliases?: Record<string, string>;
22
- loadNow?: boolean;
23
- showBarChart?: boolean;
24
59
  componentIndex?: number;
25
60
  shouldDeepLink?: boolean;
26
61
  onQueryChange?: (newQueryJson: string) => void;
27
62
  onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void;
28
- hiddenColumns?: string[];
29
63
  lockedFacet?: LockedFacet;
30
- defaultShowFacetVisualization?: boolean;
31
- children?: (queryWrapperChildProps: QueryWrapperChildProps) => React.ReactNode | React.ReactNode[];
32
64
  };
33
65
  export declare type TopLevelControlsState = {
34
66
  showFacetVisualization: boolean;
@@ -43,134 +75,12 @@ export declare type SearchQuery = {
43
75
  columnName: string;
44
76
  searchText: string;
45
77
  };
46
- export declare type QueryWrapperState = {
47
- isAllFilterSelectedForFacet: Record<string, boolean>;
48
- data: QueryResultBundle | undefined;
49
- isLoadingNewData: boolean;
50
- isLoading: boolean;
51
- lastQueryRequest: QueryBundleRequest;
52
- hasMoreData: boolean;
53
- lastFacetSelection: FacetSelection;
54
- chartSelectionIndex: number;
55
- asyncJobStatus?: AsynchronousJobStatus;
56
- facetAliases?: Record<string, string>;
57
- loadNowStarted: boolean;
58
- topLevelControlsState?: TopLevelControlsState;
59
- isColumnSelected: string[];
60
- selectedRowIndices?: number[];
61
- error: SynapseClientError | undefined;
62
- isFacetsAvailable: boolean;
63
- };
64
78
  export declare type LockedFacet = {
65
79
  facet?: string;
66
80
  value?: string;
67
81
  };
68
- export declare type FacetSelection = {
69
- columnName: string;
70
- facetValue: string;
71
- selector: string;
72
- };
73
- export declare type QueryWrapperChildProps = {
74
- isAllFilterSelectedForFacet?: Record<string, boolean>;
75
- isLoading?: boolean;
76
- token?: string;
77
- entityId?: string;
78
- isLoadingNewData?: boolean;
79
- executeQueryRequest?: (param: QueryBundleRequest) => void;
80
- executeInitialQueryRequest?: () => void;
81
- getNextPageOfData?: (queryRequest: QueryBundleRequest) => void;
82
- getLastQueryRequest?: () => QueryBundleRequest;
83
- getInitQueryRequest?: () => QueryBundleRequest;
84
- data?: QueryResultBundle;
85
- facet?: string;
86
- updateParentState?: <K extends keyof QueryWrapperState>(param: Pick<QueryWrapperState, K>) => void;
87
- rgbIndex?: number;
88
- unitDescription?: string;
89
- facetAliases?: Record<string, string>;
90
- lastFacetSelection?: FacetSelection;
91
- chartSelectionIndex?: number;
92
- asyncJobStatus?: AsynchronousJobStatus;
93
- showBarChart?: boolean;
94
- hasMoreData?: boolean;
95
- topLevelControlsState?: TopLevelControlsState;
96
- isColumnSelected?: string[];
97
- selectedRowIndices?: number[];
98
- error?: SynapseClientError | undefined;
99
- lockedFacet?: LockedFacet;
100
- isFacetsAvailable?: boolean;
101
- };
102
- export declare const QUERY_FILTERS_EXPANDED_CSS: string;
103
- export declare const QUERY_FILTERS_COLLAPSED_CSS: string;
104
82
  /**
105
- * Class wraps around any Synapse views that are dependent on a query bundle
106
- * Those classes then take in as props:
107
- *
108
- * @class QueryWrapper
109
- * @extends {React.Component}
83
+ * Component that manages the state of a Synapse table query. Data can be accessed via QueryContext using
84
+ * either `useQueryContext` or `QueryContextConsumer`.
110
85
  */
111
- export default class QueryWrapper extends React.Component<QueryWrapperProps, QueryWrapperState> {
112
- private componentIndex;
113
- constructor(props: QueryWrapperProps);
114
- /**
115
- * Compute default query request
116
- *
117
- * @memberof QueryWrapper
118
- */
119
- componentDidMount(): void;
120
- /**
121
- * @memberof QueryWrapper
122
- */
123
- componentDidUpdate(prevProps: QueryWrapperProps): void;
124
- /**
125
- * Pass down a deep clone (so no side affects on the child's part) of the
126
- * last query request made
127
- *
128
- * @returns
129
- * @memberof QueryWrapper
130
- */
131
- getLastQueryRequest(): QueryBundleRequest;
132
- /**
133
- * Pass down a deep clone (so no side affects on the child's part) of the
134
- * first query request made
135
- *
136
- * @returns
137
- * @memberof QueryWrapper
138
- */
139
- getInitQueryRequest(): QueryBundleRequest;
140
- getSelectedColumns(isReset: boolean, selectColumns?: SelectColumn[]): string[];
141
- /**
142
- * Execute the given query
143
- *
144
- * @param {*} queryRequest Query request as specified by
145
- * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/table/Query.html
146
- * @memberof QueryWrapper
147
- */
148
- executeQueryRequest(queryRequest: QueryBundleRequest): Promise<void>;
149
- /**
150
- * Grab the next page of data, pulling in 25 more rows.
151
- *
152
- * @param {*} queryRequest Query request as specified by
153
- * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/table/Query.html
154
- * @memberof QueryWrapper
155
- */
156
- getNextPageOfData(queryRequest: QueryBundleRequest): Promise<void>;
157
- /**
158
- * Execute the initial query passed into the component
159
- *
160
- * @param {*} queryRequest Query request as specified by
161
- * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/table/Query.html
162
- * @memberof QueryWrapper
163
- */
164
- executeInitialQueryRequest(initQueryRequest?: QueryBundleRequest): void;
165
- updateParentState<K extends keyof QueryWrapperState>(update: Pick<QueryWrapperState, K>): void;
166
- /**
167
- * remove a particular facet name (e.g. study) and its all possible values based on the parameter specified in the url
168
- * this is to remove the facet from the charts, search and filter.
169
- * @return data: QueryResultBundle
170
- */
171
- removeLockedFacetData(): QueryResultBundle | undefined;
172
- /**
173
- * Render the children without any formatting
174
- */
175
- render(): JSX.Element;
176
- }
86
+ export declare function QueryWrapper(props: QueryWrapperProps): JSX.Element;