synapse-react-client 4.0.22 → 4.0.23

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 (99) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/assets/icons/GeneticsIcon.d.ts +3 -0
  3. package/dist/assets/icons/GeneticsIcon.d.ts.map +1 -0
  4. package/dist/assets/icons/GeneticsIcon.js +14 -0
  5. package/dist/assets/icons/GeneticsIcon.js.map +1 -0
  6. package/dist/components/EntityCitation/EntityCitation.d.ts.map +1 -1
  7. package/dist/components/EntityCitation/EntityCitation.js +23 -8
  8. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  9. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.d.ts +18 -0
  10. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.d.ts.map +1 -0
  11. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +112 -0
  12. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -0
  13. package/dist/components/GenericCard/DuoTermTags/duoTerms.d.ts +31 -0
  14. package/dist/components/GenericCard/DuoTermTags/duoTerms.d.ts.map +1 -0
  15. package/dist/components/GenericCard/DuoTermTags/duoTerms.js +198 -0
  16. package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -0
  17. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  18. package/dist/components/GenericCard/SynapseCardLabel.js +4 -8
  19. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  20. package/dist/components/GenericCard/TableRowGenericCard.d.ts +6 -0
  21. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  22. package/dist/components/GenericCard/TableRowGenericCard.js +168 -153
  23. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  24. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  25. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  26. package/dist/components/IconSvg/IconSvg.js +19 -18
  27. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  28. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.d.ts +21 -0
  29. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.d.ts.map +1 -1
  30. package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
  31. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts +10 -0
  32. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
  33. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +65 -59
  34. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  35. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
  36. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  37. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +2 -0
  38. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  39. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +33 -6
  40. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  41. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +93 -55
  42. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  43. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts +3 -0
  44. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts.map +1 -1
  45. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js +39 -37
  46. package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
  47. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +3 -1
  48. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
  49. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +4 -0
  50. package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
  51. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts +5 -2
  52. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  53. package/dist/components/entity/page/action_menu/EntityActionMenu.js +68 -51
  54. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  55. package/dist/components/index.d.ts +1 -0
  56. package/dist/components/index.d.ts.map +1 -1
  57. package/dist/components/menu/ComplexMenu.d.ts +8 -1
  58. package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
  59. package/dist/components/menu/ComplexMenu.js +50 -20
  60. package/dist/components/menu/ComplexMenu.js.map +1 -1
  61. package/dist/components/widgets/facet-nav/FacetValueChip.d.ts +25 -0
  62. package/dist/components/widgets/facet-nav/FacetValueChip.d.ts.map +1 -0
  63. package/dist/components/widgets/facet-nav/FacetValueChip.js +40 -0
  64. package/dist/components/widgets/facet-nav/FacetValueChip.js.map +1 -0
  65. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.d.ts +10 -5
  66. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.d.ts.map +1 -1
  67. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js +10 -17
  68. package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
  69. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.d.ts.map +1 -1
  70. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +11 -10
  71. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
  72. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
  73. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +70 -54
  74. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  75. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -1
  76. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
  77. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +17 -1
  78. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  79. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +2 -0
  80. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
  81. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +7 -7
  82. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  83. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
  84. package/dist/features/curator/dashboard/components/CurationTaskCard.js +99 -45
  85. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  86. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  87. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +174 -149
  88. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  89. package/dist/features/entity/metadata-task/utils/constants.d.ts +6 -0
  90. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  91. package/dist/features/entity/metadata-task/utils/constants.js +19 -2
  92. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  93. package/dist/style/components/_total-query-results.scss +10 -34
  94. package/dist/style/main.css +1 -1
  95. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  96. package/dist/synapse-queries/curation/task/useCurationTask.js +1 -1
  97. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  98. package/dist/tsconfig.build.tsbuildinfo +1 -1
  99. package/package.json +4 -4
@@ -4,103 +4,109 @@ import "../QueryContext/index.js";
4
4
  import { getDisplayValue as n } from "../../utils/functions/getDataFromFromStorage.js";
5
5
  import { unCamelCase as r } from "../../utils/functions/unCamelCase.js";
6
6
  import { useGetQueryMetadata as i } from "../QueryWrapper/useGetQueryMetadata.js";
7
- import { NoContentPlaceholderType as a } from "../SynapseTable/NoContentPlaceholderType.js";
8
- import o from "./NoContentPlaceholder.js";
9
- import { QueryVisualizationContextProvider as ee } from "./QueryVisualizationContext.js";
10
- import { useCallback as s, useEffect as te, useMemo as c, useState as l } from "react";
11
- import { jsx as u } from "react/jsx-runtime";
12
- import { useQuery as d } from "@tanstack/react-query";
7
+ import { NoContentPlaceholderType as ee } from "../SynapseTable/NoContentPlaceholderType.js";
8
+ import a from "./NoContentPlaceholder.js";
9
+ import { createDuoFacetValueRenderer as o } from "../GenericCard/DuoTermTags/DuoTermTags.js";
10
+ import { QueryVisualizationContextProvider as te } from "./QueryVisualizationContext.js";
11
+ import { useCallback as s, useEffect as c, useMemo as l, useState as u } from "react";
12
+ import { jsx as d } from "react/jsx-runtime";
13
+ import { useQuery as ne } from "@tanstack/react-query";
13
14
  import { useDeepCompareMemoize as f } from "use-deep-compare-effect";
14
15
  //#region src/components/QueryVisualizationWrapper/QueryVisualizationWrapper.tsx
15
16
  var p = [];
16
17
  function m(m) {
17
- let { noContentPlaceholderType: h = a.INTERACTIVE, defaultShowSearchBar: g = !1, defaultShowPlots: _ = !0, hideCopyToClipboard: ne = !1, hideSearchBarControl: v = !1, lockTextMatchesQueryFilterPill: y = !0, unitDescription: b = "result", helpConfiguration: x, hasCustomPlots: S = !1, visibleColumnCount: C = Infinity, enabledExternalAnalysisPlatforms: w = p } = m, T = c(() => m.columnAliases ?? {}, [m.columnAliases]), { getCurrentQueryRequest: E, hasFacetedSelectColumn: D, hasResettableFilters: O, rowDataQueryOptions: k } = t(), { data: A } = i(), { data: j } = d({
18
- ...k,
18
+ let { noContentPlaceholderType: h = ee.INTERACTIVE, defaultShowSearchBar: g = !1, defaultShowPlots: _ = !0, hideCopyToClipboard: v = !1, hideSearchBarControl: y = !1, lockTextMatchesQueryFilterPill: b = !0, unitDescription: x = "result", helpConfiguration: S, hasCustomPlots: C = !1, visibleColumnCount: w = Infinity, enabledExternalAnalysisPlatforms: T = p } = m, E = l(() => m.columnAliases ?? {}, [m.columnAliases]), D = l(() => {
19
+ if (m.renderFacetValue) return m.renderFacetValue;
20
+ if (m.dataUseModifiersColumnName) return o(m.dataUseModifiersColumnName);
21
+ }, [m.renderFacetValue, m.dataUseModifiersColumnName]), { getCurrentQueryRequest: O, hasFacetedSelectColumn: k, hasResettableFilters: A, rowDataQueryOptions: j } = t(), { data: M } = i(), { data: N } = ne({
22
+ ...j,
19
23
  select: (e) => e.responseBody?.queryResult?.queryResults.headers,
20
24
  placeholderData: (e) => e
21
- }), { data: M } = i({
25
+ }), { data: re } = i({
22
26
  select: (e) => e.responseBody?.selectColumns,
23
27
  placeholderData: (e) => e
24
- }), N = f(j ?? M ?? []), [P, re] = l(!1), [F, I] = l(_), [L, R] = l(!ne), [z, B] = l(!0), [V, H, U, W] = e(g && !v, !1), [G, K] = l(!1), [q, J] = l([]), Y = c(() => E(), [E]), X = f(m.hiddenColumns ?? []);
25
- te(() => {
28
+ }), P = f(N ?? re ?? []), [F, ie] = u(!1), [I, L] = u(_), [R, z] = u(!v), [B, V] = u(!0), [H, U, W, G] = e(g && !y, !1), [K, q] = u(!1), [J, Y] = u([]), ae = l(() => O(), [O]), X = f(m.hiddenColumns ?? []);
29
+ c(() => {
26
30
  let e = new Set(X);
27
- J(N.filter((t) => !e.has(t.name)).slice(0, C).map((e) => e.name));
31
+ Y(P.filter((t) => !e.has(t.name)).slice(0, w).map((e) => e.name));
28
32
  }, [
29
- N,
30
- Y.query.sql,
31
- C,
33
+ P,
34
+ ae.query.sql,
35
+ w,
32
36
  X
33
37
  ]);
34
38
  let Z = s((e, t) => {
35
39
  let n = typeof localStorage < "u" && localStorage.getItem("force-display-original-column-names") === "true";
36
40
  if (!e || n && !t) return e;
37
- if (T[e]) return T[e];
41
+ if (E[e]) return E[e];
38
42
  if (t) {
39
- let n = A?.columnModels?.find((t) => t.name === e);
43
+ let n = M?.columnModels?.find((t) => t.name === e);
40
44
  if (n?.jsonSubColumns) {
41
45
  let e = n.jsonSubColumns.find((e) => e.jsonPath === t);
42
46
  if (e) return e.name;
43
47
  }
44
48
  }
45
49
  return r(e);
46
- }, [T, A?.columnModels]), Q = s((e, t) => {
47
- if (Array.isArray(x)) return x.find((n) => n.columnName === e && n.jsonPath === t)?.helpText;
48
- }, [x]), $ = s(() => /* @__PURE__ */ u(o, {
50
+ }, [E, M?.columnModels]), Q = s((e, t) => {
51
+ if (Array.isArray(S)) return S.find((n) => n.columnName === e && n.jsonPath === t)?.helpText;
52
+ }, [S]), $ = s(() => /* @__PURE__ */ d(a, {
49
53
  type: h,
50
- hasResettableFilters: O
51
- }), [h, O]), ie = c(() => ({
52
- columnsToShowInTable: q,
53
- setColumnsToShowInTable: J,
54
+ hasResettableFilters: A
55
+ }), [h, A]), oe = l(() => ({
56
+ columnsToShowInTable: J,
57
+ setColumnsToShowInTable: Y,
54
58
  rgbIndex: m.rgbIndex,
55
- unitDescription: b,
59
+ unitDescription: x,
56
60
  showLastUpdatedOn: m.showLastUpdatedOn,
57
61
  getColumnDisplayName: Z,
58
62
  getDisplayValue: n,
63
+ renderFacetValue: D,
59
64
  getHelpText: Q,
60
65
  NoContentPlaceholder: $,
61
- isShowingExportToAnalysisPlatformModal: G,
62
- setIsShowingExportToAnalysisPlatformModal: K,
63
- showFacetFilter: D ? z : !1,
64
- setShowFacetFilter: B,
65
- hideSearchBarControl: v,
66
- lockTextMatchesQueryFilterPill: y,
67
- showSearchBar: V,
68
- setShowSearchBar: H,
69
- showDownloadConfirmation: U,
70
- setShowDownloadConfirmation: W,
71
- showSqlEditor: P,
72
- setShowSqlEditor: re,
73
- showPlots: S || D ? F : !1,
74
- setShowPlots: I,
75
- showCopyToClipboard: L,
76
- setShowCopyToClipboard: R,
77
- enabledExternalAnalysisPlatforms: w
66
+ isShowingExportToAnalysisPlatformModal: K,
67
+ setIsShowingExportToAnalysisPlatformModal: q,
68
+ showFacetFilter: k ? B : !1,
69
+ setShowFacetFilter: V,
70
+ hideSearchBarControl: y,
71
+ lockTextMatchesQueryFilterPill: b,
72
+ showSearchBar: H,
73
+ setShowSearchBar: U,
74
+ showDownloadConfirmation: W,
75
+ setShowDownloadConfirmation: G,
76
+ showSqlEditor: F,
77
+ setShowSqlEditor: ie,
78
+ showPlots: C || k ? I : !1,
79
+ setShowPlots: L,
80
+ showCopyToClipboard: R,
81
+ setShowCopyToClipboard: z,
82
+ enabledExternalAnalysisPlatforms: T
78
83
  }), [
79
84
  $,
80
85
  Z,
81
86
  Q,
82
- D,
83
- G,
87
+ k,
88
+ K,
84
89
  m.rgbIndex,
85
90
  m.showLastUpdatedOn,
91
+ D,
92
+ G,
93
+ U,
94
+ R,
86
95
  W,
96
+ B,
97
+ I,
87
98
  H,
88
- L,
89
- U,
90
- z,
91
99
  F,
92
- V,
93
- P,
94
- b,
95
- q,
96
- S,
97
- w,
98
- v,
99
- y
100
- ]), { children: ae } = m;
101
- return /* @__PURE__ */ u(ee, {
102
- queryVisualizationContext: ie,
103
- children: ae
100
+ x,
101
+ J,
102
+ C,
103
+ T,
104
+ y,
105
+ b
106
+ ]), { children: se } = m;
107
+ return /* @__PURE__ */ d(te, {
108
+ queryVisualizationContext: oe,
109
+ children: se
104
110
  });
105
111
  }
106
112
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"QueryVisualizationWrapper.js","names":[],"sources":["../../../src/components/QueryVisualizationWrapper/QueryVisualizationWrapper.tsx"],"sourcesContent":["import { getDisplayValue } from '@/utils/functions/getDataFromFromStorage'\nimport { unCamelCase } from '@/utils/functions/unCamelCase'\nimport useMutuallyExclusiveState from '@/utils/hooks/useMutuallyExclusiveState'\nimport { useQuery } from '@tanstack/react-query'\nimport { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\nimport { useQueryContext } from '../QueryContext'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\nimport { ExternalAnalysisPlatform } from '../SynapseTable/export/ExternalAnalysisPlatformsConstants'\nimport NoContentPlaceholderComponent from './NoContentPlaceholder'\nimport {\n QueryVisualizationContextProvider,\n QueryVisualizationContextType,\n} from './QueryVisualizationContext'\n\n// By default, show no external analysis platforms.\nconst DEFAULT_ENABLED_ANALYSIS_PLATFORMS: ExternalAnalysisPlatform[] = []\n\ntype ColumnOrFacetHelpConfig = {\n /** Text that describes the column or facet */\n helpText: string\n /** The name of the column for which the markdown applies */\n columnName: string\n /** The JSON path matching a described JSON Column facet */\n jsonPath?: string\n}\n\nexport type QueryVisualizationWrapperProps = {\n children: ReactNode | ReactNode[]\n rgbIndex?: number\n /** The singular word to use to describe a what a row represents (e.g. \"file\"). Defaults to \"result\" */\n unitDescription?: string\n /** Mapping from column name to the name that should be shown for the column */\n columnAliases?: Record<string, string>\n visibleColumnCount?: number\n hiddenColumns?: string[]\n defaultShowPlots?: boolean\n hideCopyToClipboard?: boolean\n hideSearchBarControl?: boolean\n /** When true, the text matches filter pill is shown but cannot be removed. Defaults to true. */\n lockTextMatchesQueryFilterPill?: boolean\n defaultShowSearchBar?: boolean\n showLastUpdatedOn?: boolean\n /** Default is INTERACTIVE */\n noContentPlaceholderType?: NoContentPlaceholderType\n isRowSelectionVisible?: boolean\n /** The set of columns that defines a uniqueness constraint on the table for the purposes of filtering based on row selection.\n * Note that Synapse tables have no internal concept of a primary key.\n */\n rowSelectionPrimaryKey?: string[]\n /** Look for additional filters using the given key. If not provided, the entity ID will be used.\n * @deprecated - configure the filter before passing a query */\n additionalFiltersSessionStorageKey?: string\n /** Configuration to add a help popover to each corresponding column header */\n helpConfiguration?: ColumnOrFacetHelpConfig[]\n hasCustomPlots?: boolean\n /** The set of external analysis platform to which the UI will support exporting data.\n * @default [] (no platforms are enabled) */\n enabledExternalAnalysisPlatforms?: ExternalAnalysisPlatform[]\n hideVisualizationsControl?: boolean\n}\n\n/**\n * QueryVisualizationWrapper manages UI state for components that query tables in Synapse. That state can be accessed\n * or updated using QueryVisualizationContext. A QueryVisualizationWrapper must be used within a QueryWrapper.\n */\nexport function QueryVisualizationWrapper(\n props: QueryVisualizationWrapperProps,\n) {\n const {\n noContentPlaceholderType = NoContentPlaceholderType.INTERACTIVE,\n defaultShowSearchBar = false,\n defaultShowPlots = true,\n hideCopyToClipboard = false,\n hideSearchBarControl = false,\n lockTextMatchesQueryFilterPill = true,\n unitDescription = 'result',\n helpConfiguration,\n hasCustomPlots = false,\n visibleColumnCount = Infinity,\n enabledExternalAnalysisPlatforms = DEFAULT_ENABLED_ANALYSIS_PLATFORMS,\n } = props\n\n const columnAliases = useMemo(\n () => props.columnAliases ?? {},\n [props.columnAliases],\n )\n\n const {\n getCurrentQueryRequest,\n hasFacetedSelectColumn,\n hasResettableFilters,\n rowDataQueryOptions,\n } = useQueryContext()\n const { data: queryMetadata } = useGetQueryMetadata()\n\n // Get the selectColumns from either query so that creating the context isn't bottlenecked by one or the other\n // Use the previous result as placeholder data so we don't reset the selectColumns unless they have actually changed.\n const { data: selectColumnsFromRowData } = useQuery({\n ...rowDataQueryOptions,\n select: data => data.responseBody?.queryResult?.queryResults.headers,\n placeholderData: prevData => prevData,\n })\n const { data: selectColumnsFromMetadata } = useGetQueryMetadata({\n select: data => data.responseBody?.selectColumns,\n placeholderData: prevData => prevData,\n })\n // We deep-compare-memoize the selectColumns so we don't reset visible columns if the reference changes, but not the contents (e.g. on page change)\n const selectColumns = useDeepCompareMemoize(\n selectColumnsFromRowData ?? selectColumnsFromMetadata ?? [],\n )\n\n const [showSqlEditor, setShowSqlEditor] = useState(false)\n const [showPlots, setShowPlots] = useState(defaultShowPlots)\n const [showCopyToClipboard, setShowCopyToClipboard] =\n useState(!hideCopyToClipboard)\n const [showFacetFilter, setShowFacetFilter] = useState(true)\n\n // The search bar and download confirmation should not be shown at the same time.\n const [\n showSearchBar,\n setShowSearchBar,\n showDownloadConfirmation,\n setShowDownloadConfirmation,\n ] = useMutuallyExclusiveState(\n defaultShowSearchBar && !hideSearchBarControl,\n false,\n )\n\n const [\n isShowingExportToAnalysisPlatformModal,\n setIsShowingExportToAnalysisPlatformModal,\n ] = useState<boolean>(false)\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>([])\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n // Deep-compare-memoize so callers passing a fresh array literal\n // (e.g. `hiddenColumns={['topic']}`) don't reset visible columns on every\n // parent render.\n const hiddenColumns = useDeepCompareMemoize(props.hiddenColumns ?? [])\n useEffect(() => {\n // SWC-6030: If sql changes, reset what columns are visible\n const hidden = new Set(hiddenColumns)\n setVisibleColumns(\n selectColumns\n .filter(el => !hidden.has(el.name))\n .slice(0, visibleColumnCount)\n .map(el => el.name),\n )\n }, [\n selectColumns,\n lastQueryRequest.query.sql,\n visibleColumnCount,\n hiddenColumns,\n ])\n\n const getColumnDisplayName = useCallback(\n (columnName: string, jsonPath?: string) => {\n // SWC-5982: if force-display-original-column-names is set, then just return the string\n const forceDisplayOriginalColumnName =\n typeof localStorage !== 'undefined' &&\n localStorage.getItem('force-display-original-column-names') === 'true'\n\n if (!columnName || (forceDisplayOriginalColumnName && !jsonPath)) {\n return columnName\n }\n if (columnAliases[columnName]) {\n return columnAliases[columnName]\n }\n if (jsonPath) {\n const columnModel = queryMetadata?.columnModels?.find(\n cm => cm.name === columnName,\n )\n if (columnModel?.jsonSubColumns) {\n const jsonSubColumn = columnModel.jsonSubColumns.find(\n jsc => jsc.jsonPath === jsonPath,\n )\n if (jsonSubColumn) {\n return jsonSubColumn.name\n }\n }\n }\n return unCamelCase(columnName)\n },\n [columnAliases, queryMetadata?.columnModels],\n )\n\n const getHelpText = useCallback(\n (columnName: string, jsonPath?: string): string | undefined => {\n if (Array.isArray(helpConfiguration)) {\n const helpConfig = helpConfiguration.find(\n config =>\n config.columnName === columnName && config.jsonPath === jsonPath,\n )\n return helpConfig?.helpText\n }\n return undefined\n },\n [helpConfiguration],\n )\n\n const NoContentPlaceholder = useCallback(\n () => (\n <NoContentPlaceholderComponent\n type={noContentPlaceholderType}\n hasResettableFilters={hasResettableFilters}\n />\n ),\n [noContentPlaceholderType, hasResettableFilters],\n )\n\n const context: QueryVisualizationContextType = useMemo(\n () => ({\n columnsToShowInTable: visibleColumns,\n setColumnsToShowInTable: setVisibleColumns,\n rgbIndex: props.rgbIndex,\n unitDescription: unitDescription,\n showLastUpdatedOn: props.showLastUpdatedOn,\n getColumnDisplayName,\n getDisplayValue,\n getHelpText,\n NoContentPlaceholder,\n isShowingExportToAnalysisPlatformModal:\n isShowingExportToAnalysisPlatformModal,\n setIsShowingExportToAnalysisPlatformModal:\n setIsShowingExportToAnalysisPlatformModal,\n showFacetFilter: hasFacetedSelectColumn ? showFacetFilter : false,\n setShowFacetFilter,\n hideSearchBarControl,\n lockTextMatchesQueryFilterPill,\n showSearchBar,\n setShowSearchBar,\n showDownloadConfirmation,\n setShowDownloadConfirmation,\n showSqlEditor,\n setShowSqlEditor,\n showPlots: hasCustomPlots || hasFacetedSelectColumn ? showPlots : false,\n setShowPlots,\n showCopyToClipboard,\n setShowCopyToClipboard,\n enabledExternalAnalysisPlatforms,\n }),\n [\n NoContentPlaceholder,\n getColumnDisplayName,\n getHelpText,\n hasFacetedSelectColumn,\n isShowingExportToAnalysisPlatformModal,\n props.rgbIndex,\n props.showLastUpdatedOn,\n setShowDownloadConfirmation,\n setShowSearchBar,\n showCopyToClipboard,\n showDownloadConfirmation,\n showFacetFilter,\n showPlots,\n showSearchBar,\n showSqlEditor,\n unitDescription,\n visibleColumns,\n hasCustomPlots,\n enabledExternalAnalysisPlatforms,\n hideSearchBarControl,\n lockTextMatchesQueryFilterPill,\n ],\n )\n /**\n * Render the children without any formatting\n */\n const { children } = props\n return (\n <QueryVisualizationContextProvider queryVisualizationContext={context}>\n {children}\n </QueryVisualizationContextProvider>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"QueryVisualizationWrapper.js","names":[],"sources":["../../../src/components/QueryVisualizationWrapper/QueryVisualizationWrapper.tsx"],"sourcesContent":["import { getDisplayValue } from '@/utils/functions/getDataFromFromStorage'\nimport { unCamelCase } from '@/utils/functions/unCamelCase'\nimport useMutuallyExclusiveState from '@/utils/hooks/useMutuallyExclusiveState'\nimport { useQuery } from '@tanstack/react-query'\nimport { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\nimport { useQueryContext } from '../QueryContext'\nimport { useGetQueryMetadata } from '../QueryWrapper/useGetQueryMetadata'\nimport { NoContentPlaceholderType } from '../SynapseTable/NoContentPlaceholderType'\nimport { ExternalAnalysisPlatform } from '../SynapseTable/export/ExternalAnalysisPlatformsConstants'\nimport NoContentPlaceholderComponent from './NoContentPlaceholder'\nimport { createDuoFacetValueRenderer } from '../GenericCard/DuoTermTags/DuoTermTags'\nimport {\n QueryVisualizationContextProvider,\n QueryVisualizationContextType,\n RenderedFacetValueChip,\n} from './QueryVisualizationContext'\n\n// By default, show no external analysis platforms.\nconst DEFAULT_ENABLED_ANALYSIS_PLATFORMS: ExternalAnalysisPlatform[] = []\n\ntype ColumnOrFacetHelpConfig = {\n /** Text that describes the column or facet */\n helpText: string\n /** The name of the column for which the markdown applies */\n columnName: string\n /** The JSON path matching a described JSON Column facet */\n jsonPath?: string\n}\n\nexport type QueryVisualizationWrapperProps = {\n children: ReactNode | ReactNode[]\n rgbIndex?: number\n /** The singular word to use to describe a what a row represents (e.g. \"file\"). Defaults to \"result\" */\n unitDescription?: string\n /** Mapping from column name to the name that should be shown for the column */\n columnAliases?: Record<string, string>\n /** Optional custom renderer for enumeration facet values (see context). */\n renderFacetValue?: (\n columnName: string,\n value: string,\n ) => RenderedFacetValueChip | undefined\n /**\n * Column name of a STRING_LIST of Data Use Ontology (DUO) values. When set,\n * that column's facet values and active-filter pills are automatically\n * rendered as DUO tags, so portals don't need to supply their own\n * `renderFacetValue` handler. An explicit `renderFacetValue` takes precedence.\n */\n dataUseModifiersColumnName?: string\n visibleColumnCount?: number\n hiddenColumns?: string[]\n defaultShowPlots?: boolean\n hideCopyToClipboard?: boolean\n hideSearchBarControl?: boolean\n /** When true, the text matches filter pill is shown but cannot be removed. Defaults to true. */\n lockTextMatchesQueryFilterPill?: boolean\n defaultShowSearchBar?: boolean\n showLastUpdatedOn?: boolean\n /** Default is INTERACTIVE */\n noContentPlaceholderType?: NoContentPlaceholderType\n isRowSelectionVisible?: boolean\n /** The set of columns that defines a uniqueness constraint on the table for the purposes of filtering based on row selection.\n * Note that Synapse tables have no internal concept of a primary key.\n */\n rowSelectionPrimaryKey?: string[]\n /** Look for additional filters using the given key. If not provided, the entity ID will be used.\n * @deprecated - configure the filter before passing a query */\n additionalFiltersSessionStorageKey?: string\n /** Configuration to add a help popover to each corresponding column header */\n helpConfiguration?: ColumnOrFacetHelpConfig[]\n hasCustomPlots?: boolean\n /** The set of external analysis platform to which the UI will support exporting data.\n * @default [] (no platforms are enabled) */\n enabledExternalAnalysisPlatforms?: ExternalAnalysisPlatform[]\n hideVisualizationsControl?: boolean\n}\n\n/**\n * QueryVisualizationWrapper manages UI state for components that query tables in Synapse. That state can be accessed\n * or updated using QueryVisualizationContext. A QueryVisualizationWrapper must be used within a QueryWrapper.\n */\nexport function QueryVisualizationWrapper(\n props: QueryVisualizationWrapperProps,\n) {\n const {\n noContentPlaceholderType = NoContentPlaceholderType.INTERACTIVE,\n defaultShowSearchBar = false,\n defaultShowPlots = true,\n hideCopyToClipboard = false,\n hideSearchBarControl = false,\n lockTextMatchesQueryFilterPill = true,\n unitDescription = 'result',\n helpConfiguration,\n hasCustomPlots = false,\n visibleColumnCount = Infinity,\n enabledExternalAnalysisPlatforms = DEFAULT_ENABLED_ANALYSIS_PLATFORMS,\n } = props\n\n const columnAliases = useMemo(\n () => props.columnAliases ?? {},\n [props.columnAliases],\n )\n\n // An explicit renderFacetValue wins; otherwise, if a DUO column is declared,\n // render that column's facet values and pills as DUO tags automatically.\n const renderFacetValue = useMemo(() => {\n if (props.renderFacetValue) {\n return props.renderFacetValue\n }\n if (props.dataUseModifiersColumnName) {\n return createDuoFacetValueRenderer(props.dataUseModifiersColumnName)\n }\n return undefined\n }, [props.renderFacetValue, props.dataUseModifiersColumnName])\n\n const {\n getCurrentQueryRequest,\n hasFacetedSelectColumn,\n hasResettableFilters,\n rowDataQueryOptions,\n } = useQueryContext()\n const { data: queryMetadata } = useGetQueryMetadata()\n\n // Get the selectColumns from either query so that creating the context isn't bottlenecked by one or the other\n // Use the previous result as placeholder data so we don't reset the selectColumns unless they have actually changed.\n const { data: selectColumnsFromRowData } = useQuery({\n ...rowDataQueryOptions,\n select: data => data.responseBody?.queryResult?.queryResults.headers,\n placeholderData: prevData => prevData,\n })\n const { data: selectColumnsFromMetadata } = useGetQueryMetadata({\n select: data => data.responseBody?.selectColumns,\n placeholderData: prevData => prevData,\n })\n // We deep-compare-memoize the selectColumns so we don't reset visible columns if the reference changes, but not the contents (e.g. on page change)\n const selectColumns = useDeepCompareMemoize(\n selectColumnsFromRowData ?? selectColumnsFromMetadata ?? [],\n )\n\n const [showSqlEditor, setShowSqlEditor] = useState(false)\n const [showPlots, setShowPlots] = useState(defaultShowPlots)\n const [showCopyToClipboard, setShowCopyToClipboard] =\n useState(!hideCopyToClipboard)\n const [showFacetFilter, setShowFacetFilter] = useState(true)\n\n // The search bar and download confirmation should not be shown at the same time.\n const [\n showSearchBar,\n setShowSearchBar,\n showDownloadConfirmation,\n setShowDownloadConfirmation,\n ] = useMutuallyExclusiveState(\n defaultShowSearchBar && !hideSearchBarControl,\n false,\n )\n\n const [\n isShowingExportToAnalysisPlatformModal,\n setIsShowingExportToAnalysisPlatformModal,\n ] = useState<boolean>(false)\n\n const [visibleColumns, setVisibleColumns] = useState<string[]>([])\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n // Deep-compare-memoize so callers passing a fresh array literal\n // (e.g. `hiddenColumns={['topic']}`) don't reset visible columns on every\n // parent render.\n const hiddenColumns = useDeepCompareMemoize(props.hiddenColumns ?? [])\n useEffect(() => {\n // SWC-6030: If sql changes, reset what columns are visible\n const hidden = new Set(hiddenColumns)\n setVisibleColumns(\n selectColumns\n .filter(el => !hidden.has(el.name))\n .slice(0, visibleColumnCount)\n .map(el => el.name),\n )\n }, [\n selectColumns,\n lastQueryRequest.query.sql,\n visibleColumnCount,\n hiddenColumns,\n ])\n\n const getColumnDisplayName = useCallback(\n (columnName: string, jsonPath?: string) => {\n // SWC-5982: if force-display-original-column-names is set, then just return the string\n const forceDisplayOriginalColumnName =\n typeof localStorage !== 'undefined' &&\n localStorage.getItem('force-display-original-column-names') === 'true'\n\n if (!columnName || (forceDisplayOriginalColumnName && !jsonPath)) {\n return columnName\n }\n if (columnAliases[columnName]) {\n return columnAliases[columnName]\n }\n if (jsonPath) {\n const columnModel = queryMetadata?.columnModels?.find(\n cm => cm.name === columnName,\n )\n if (columnModel?.jsonSubColumns) {\n const jsonSubColumn = columnModel.jsonSubColumns.find(\n jsc => jsc.jsonPath === jsonPath,\n )\n if (jsonSubColumn) {\n return jsonSubColumn.name\n }\n }\n }\n return unCamelCase(columnName)\n },\n [columnAliases, queryMetadata?.columnModels],\n )\n\n const getHelpText = useCallback(\n (columnName: string, jsonPath?: string): string | undefined => {\n if (Array.isArray(helpConfiguration)) {\n const helpConfig = helpConfiguration.find(\n config =>\n config.columnName === columnName && config.jsonPath === jsonPath,\n )\n return helpConfig?.helpText\n }\n return undefined\n },\n [helpConfiguration],\n )\n\n const NoContentPlaceholder = useCallback(\n () => (\n <NoContentPlaceholderComponent\n type={noContentPlaceholderType}\n hasResettableFilters={hasResettableFilters}\n />\n ),\n [noContentPlaceholderType, hasResettableFilters],\n )\n\n const context: QueryVisualizationContextType = useMemo(\n () => ({\n columnsToShowInTable: visibleColumns,\n setColumnsToShowInTable: setVisibleColumns,\n rgbIndex: props.rgbIndex,\n unitDescription: unitDescription,\n showLastUpdatedOn: props.showLastUpdatedOn,\n getColumnDisplayName,\n getDisplayValue,\n renderFacetValue,\n getHelpText,\n NoContentPlaceholder,\n isShowingExportToAnalysisPlatformModal:\n isShowingExportToAnalysisPlatformModal,\n setIsShowingExportToAnalysisPlatformModal:\n setIsShowingExportToAnalysisPlatformModal,\n showFacetFilter: hasFacetedSelectColumn ? showFacetFilter : false,\n setShowFacetFilter,\n hideSearchBarControl,\n lockTextMatchesQueryFilterPill,\n showSearchBar,\n setShowSearchBar,\n showDownloadConfirmation,\n setShowDownloadConfirmation,\n showSqlEditor,\n setShowSqlEditor,\n showPlots: hasCustomPlots || hasFacetedSelectColumn ? showPlots : false,\n setShowPlots,\n showCopyToClipboard,\n setShowCopyToClipboard,\n enabledExternalAnalysisPlatforms,\n }),\n [\n NoContentPlaceholder,\n getColumnDisplayName,\n getHelpText,\n hasFacetedSelectColumn,\n isShowingExportToAnalysisPlatformModal,\n props.rgbIndex,\n props.showLastUpdatedOn,\n renderFacetValue,\n setShowDownloadConfirmation,\n setShowSearchBar,\n showCopyToClipboard,\n showDownloadConfirmation,\n showFacetFilter,\n showPlots,\n showSearchBar,\n showSqlEditor,\n unitDescription,\n visibleColumns,\n hasCustomPlots,\n enabledExternalAnalysisPlatforms,\n hideSearchBarControl,\n lockTextMatchesQueryFilterPill,\n ],\n )\n /**\n * Render the children without any formatting\n */\n const { children } = props\n return (\n <QueryVisualizationContextProvider queryVisualizationContext={context}>\n {children}\n </QueryVisualizationContextProvider>\n )\n}\n"],"mappings":"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"}
@@ -38,7 +38,7 @@ type QueryWrapperPlotNavOwnProps = {
38
38
  onViewSharingSettingsClicked?: (benefactorId: string) => void;
39
39
  initialLimit?: number;
40
40
  hideTopLevelControls?: boolean;
41
- } & Omit<TopLevelControlsProps, 'entityId'> & Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> & Pick<QueryWrapperProps, 'isRowSelectionVisible' | 'rowSelectionPrimaryKey' | 'isRowSelectionUIFloating' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName'> & Pick<QueryVisualizationWrapperProps, 'defaultShowPlots' | 'visibleColumnCount' | 'hiddenColumns' | 'columnAliases' | 'rgbIndex' | 'showLastUpdatedOn' | 'noContentPlaceholderType' | 'unitDescription' | 'additionalFiltersSessionStorageKey' | 'helpConfiguration' | 'hideCopyToClipboard' | 'hideSearchBarControl' | 'hideVisualizationsControl' | 'enabledExternalAnalysisPlatforms' | 'lockTextMatchesQueryFilterPill'> & Pick<QueryContextType, 'combineRangeFacetConfig'>;
41
+ } & Omit<TopLevelControlsProps, 'entityId'> & Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> & Pick<QueryWrapperProps, 'isRowSelectionVisible' | 'rowSelectionPrimaryKey' | 'isRowSelectionUIFloating' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName'> & Pick<QueryVisualizationWrapperProps, 'defaultShowPlots' | 'visibleColumnCount' | 'hiddenColumns' | 'columnAliases' | 'renderFacetValue' | 'rgbIndex' | 'showLastUpdatedOn' | 'noContentPlaceholderType' | 'unitDescription' | 'additionalFiltersSessionStorageKey' | 'helpConfiguration' | 'hideCopyToClipboard' | 'hideSearchBarControl' | 'hideVisualizationsControl' | 'enabledExternalAnalysisPlatforms' | 'lockTextMatchesQueryFilterPill'> & Pick<QueryContextType, 'combineRangeFacetConfig'>;
42
42
  export type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams & PlotsContainerProps & QueryWrapperPlotNavOwnProps;
43
43
  export type QueryWrapperPlotNavContentsProps = Pick<QueryWrapperPlotNavProps, 'tableConfiguration' | 'name' | 'cardConfiguration' | 'facetsToPlot' | 'availableFacets' | 'initialExpandedFacetControls' | 'hideDownload' | 'hideQueryCount' | 'hideSqlEditorControl' | 'hideVisualizationsControl' | 'searchConfiguration' | 'enabledExternalAnalysisPlatforms' | 'cavaticaConnectAccountURL' | 'customControls' | 'customPlots' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName' | 'initialLimit' | 'initialPlotTypeByFacetColumnName' | 'hideTopLevelControls'> & {
44
44
  isFullTextSearchEnabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"names":[],"mappings":"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"}
@@ -135,6 +135,8 @@ function z(r) {
135
135
  unitDescription: p,
136
136
  rgbIndex: r.rgbIndex,
137
137
  columnAliases: r.columnAliases,
138
+ renderFacetValue: r.renderFacetValue,
139
+ dataUseModifiersColumnName: r.cardConfiguration?.genericCardSchema?.dataUseModifiersColumnName,
138
140
  helpConfiguration: h,
139
141
  visibleColumnCount: r.visibleColumnCount,
140
142
  hiddenColumns: r.hiddenColumns,
@@ -1 +1 @@
1
- {"version":3,"file":"QueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"sourcesContent":["import { QueryOrDeprecatedSearchParams } from '@/components/CardContainerLogic/CardContainerLogic'\nimport AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { useGetEntity } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdAndVersionFromSqlStatement,\n} from '@/utils/functions'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useQuery } from '@tanstack/react-query'\nimport { useAtomValue } from 'jotai'\nimport { Suspense, useMemo, useState } from 'react'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport { SynapseErrorBoundary } from '../error'\nimport FullTextSearch from '../FullTextSearch/FullTextSearch'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { QueryWrapperPlotNavCustomPlotParams } from '../Plot/SynapsePlot'\nimport { QueryContextType, useQueryContext } from '../QueryContext'\nimport {\n QueryVisualizationContextConsumer,\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper, QueryWrapperProps } from '../QueryWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport SearchV2, { SearchV2Props } from '../SynapseTable/SearchV2'\nimport SqlEditor from '../SynapseTable/SqlEditor'\nimport TopLevelControls, {\n TopLevelControlsProps,\n CustomControl,\n} from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { CustomControls } from '../SynapseTable/CustomControls/CustomControls'\nimport TotalQueryResults from '../TotalQueryResults'\nimport PlotsContainer, {\n PlotsContainerProps,\n} from '../widgets/facet-nav/PlotsContainer'\nimport FacetFilterControls, {\n FacetFilterControlsProps,\n} from '../widgets/query-filter/FacetFilterControls'\nimport { QueryWrapperSynapsePlotProps } from './QueryWrapperSynapsePlot'\nimport { RowSetView } from './RowSetView'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\n\nexport const QUERY_FILTERS_EXPANDED_CSS: string = 'isShowingFacetFilters'\nexport const QUERY_FILTERS_COLLAPSED_CSS: string = 'isHidingFacetFilters'\n\nexport const HAS_SELECTED_ROWS_CSS: string = 'hasSelectedRows'\n\ntype QueryWrapperPlotNavOwnProps = {\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n /** Set to true when you want the query to be saved in the URL search parameters. If you are controlling the view (such as in PortalSearch), you'll want to set this to false */\n shouldDeepLink?: boolean\n /** If onQueryChange is set, the callback will be invoked when the Query changes */\n onQueryChange?: (newQueryJson: string) => void\n /** If onQueryResultBundleChange is set, the callback will be invoked when the QueryResultBundle changes */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n /** If initQueryJson is set, it will be the Query used in the initial QueryBundleRequest */\n initQueryJson?: string\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n searchConfiguration?: Omit<\n SearchV2Props,\n 'queryContext' | 'queryVisualizationContext'\n >\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n customPlots?: QueryWrapperSynapsePlotProps[]\n customControls?: CustomControl[]\n defaultColumn?: string\n defaultShowSearchBox?: boolean\n lockedColumn?: QueryWrapperProps['lockedColumn']\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n initialLimit?: number\n hideTopLevelControls?: boolean\n} & Omit<TopLevelControlsProps, 'entityId'> &\n Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> &\n Pick<\n QueryWrapperProps,\n | 'isRowSelectionVisible'\n | 'rowSelectionPrimaryKey'\n | 'isRowSelectionUIFloating'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n > &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'additionalFiltersSessionStorageKey'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideSearchBarControl'\n | 'hideVisualizationsControl'\n | 'enabledExternalAnalysisPlatforms'\n | 'lockTextMatchesQueryFilterPill'\n > &\n Pick<QueryContextType, 'combineRangeFacetConfig'>\n\nexport type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams &\n PlotsContainerProps &\n QueryWrapperPlotNavOwnProps\n\nexport type QueryWrapperPlotNavContentsProps = Pick<\n QueryWrapperPlotNavProps,\n | 'tableConfiguration'\n | 'name'\n | 'cardConfiguration'\n | 'facetsToPlot'\n | 'availableFacets'\n | 'initialExpandedFacetControls'\n | 'hideDownload'\n | 'hideQueryCount'\n | 'hideSqlEditorControl'\n | 'hideVisualizationsControl'\n | 'searchConfiguration'\n | 'enabledExternalAnalysisPlatforms'\n | 'cavaticaConnectAccountURL'\n | 'customControls'\n | 'customPlots'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n | 'initialLimit'\n | 'initialPlotTypeByFacetColumnName'\n | 'hideTopLevelControls'\n> & {\n isFullTextSearchEnabled: boolean\n remount?: () => void\n}\n\nexport function QueryWrapperPlotNavContents(\n props: QueryWrapperPlotNavContentsProps,\n) {\n const {\n tableConfiguration,\n name,\n cardConfiguration,\n facetsToPlot,\n availableFacets,\n initialExpandedFacetControls,\n hideDownload,\n hideQueryCount,\n hideSqlEditorControl,\n hideVisualizationsControl,\n searchConfiguration,\n cavaticaConnectAccountURL,\n customControls,\n remount = () => {},\n isFullTextSearchEnabled,\n customPlots,\n initialLimit,\n initialPlotTypeByFacetColumnName,\n hideTopLevelControls,\n } = props\n const queryContext = useQueryContext()\n const [showExportMetadata, setShowExportMetadata] = useState(false)\n const { hasFacetedSelectColumn: isFaceted, queryMetadataQueryOptions } =\n queryContext\n const { isLoading: isLoadingQueryMetadata } = useQuery(\n queryMetadataQueryOptions,\n )\n\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const currentQueryRequest = queryContext.currentQueryRequest\n\n const hasFacetsOrFilters =\n (currentQueryRequest?.query.selectedFacets !== undefined &&\n currentQueryRequest.query.selectedFacets.length > 0) ||\n (currentQueryRequest?.query.additionalFilters !== undefined &&\n currentQueryRequest?.query.additionalFilters.length > 0)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n return (\n <QueryVisualizationContextConsumer>\n {queryVisualizationContext => {\n if (queryVisualizationContext === undefined) {\n throw new Error(\n 'No queryVisualizationContext found when using QueryVisualizationContextConsumer',\n )\n }\n\n return (\n <Box\n className={`QueryWrapperPlotNav ${\n queryVisualizationContext.showFacetFilter\n ? QUERY_FILTERS_EXPANDED_CSS\n : QUERY_FILTERS_COLLAPSED_CSS\n } ${isRowSelectionVisible ? HAS_SELECTED_ROWS_CSS : ''} ${\n hideTopLevelControls ? 'isHidingTopLevelControls' : ''\n }`}\n sx={{\n '*': {\n cursor: isLoadingQueryMetadata ? 'wait' : undefined,\n },\n }}\n >\n <QueryWrapperErrorBoundary>\n {isFullTextSearchEnabled ? (\n <FullTextSearch ftsConfig={searchConfiguration?.ftsConfig} />\n ) : (\n <SearchV2\n {...searchConfiguration}\n queryContext={queryContext}\n queryVisualizationContext={queryVisualizationContext}\n />\n )}\n <SqlEditor />\n {queryVisualizationContext.showDownloadConfirmation && (\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() =>\n queryVisualizationContext.setShowDownloadConfirmation(false)\n }\n />\n )}\n {!hideTopLevelControls && (\n <SynapseErrorBoundary>\n <TopLevelControls\n showColumnSelection={tableConfiguration !== undefined}\n name={name}\n hideDownload={hideDownload}\n hideQueryCount={hideQueryCount}\n hideFacetFilterControl={!isFaceted}\n hideVisualizationsControl={\n !isFaceted || hideVisualizationsControl\n }\n hideSqlEditorControl={hideSqlEditorControl}\n cavaticaConnectAccountURL={cavaticaConnectAccountURL}\n remount={remount}\n customControls={customControls}\n />\n </SynapseErrorBoundary>\n )}\n {isFaceted && (\n <>\n <FacetFilterControls\n availableFacets={availableFacets}\n initialExpandedFacetControls={initialExpandedFacetControls}\n />\n </>\n )}\n {/* Isolated Suspense so that metadata loading does not hide the table */}\n <Suspense fallback={null}>\n <TotalQueryResults\n frontText={''}\n endText={hasFacetsOrFilters ? 'filtered by' : ''}\n hideIfUnfiltered={true}\n />\n </Suspense>\n <CustomControls\n customControls={customControls}\n remount={remount}\n />\n <PlotsContainer\n facetsToPlot={facetsToPlot}\n customPlots={customPlots}\n initialPlotTypeByFacetColumnName={\n initialPlotTypeByFacetColumnName\n }\n />\n <RowSetView\n tableConfiguration={tableConfiguration}\n hideDownload={hideDownload}\n cardConfiguration={cardConfiguration}\n initialLimit={initialLimit}\n />\n {showExportMetadata && (\n <ModalDownload\n getLastQueryRequest={queryContext?.getCurrentQueryRequest}\n onClose={() => setShowExportMetadata(false)}\n />\n )}\n </QueryWrapperErrorBoundary>\n </Box>\n )\n }}\n </QueryVisualizationContextConsumer>\n )\n}\n\nexport default function QueryWrapperPlotNav(props: QueryWrapperPlotNavProps) {\n const {\n sql: deprecatedSql,\n tableConfiguration,\n isInfinite = !tableConfiguration,\n limit = DEFAULT_PAGE_SIZE,\n showLastUpdatedOn,\n unitDescription,\n additionalFiltersSessionStorageKey,\n helpConfiguration,\n customPlots,\n enabledExternalAnalysisPlatforms,\n } = props\n\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const { entityId, versionNumber } =\n parseEntityIdAndVersionFromSqlStatement(sql)\n\n const query: Query = useMemo(() => {\n if (props.query) {\n // use query if set\n return props.query\n } else if (props.initQueryJson) {\n // Otherwise use initQueryJson\n return JSON.parse(props.initQueryJson) as Query\n } else {\n // use the deprecated sql, searchParams, and sqlOperator\n const additionalFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n return {\n sql: deprecatedSql!,\n additionalFilters,\n limit: limit,\n offset: 0,\n }\n }\n }, [\n props.query,\n props.initQueryJson,\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n deprecatedSql,\n limit,\n ])\n\n const [componentKey, setComponentKey] = useState(1)\n const remount = () => {\n setComponentKey(componentKey + 1)\n }\n\n const { data: entity } = useGetEntity(entityId, versionNumber)\n const initQueryRequest: QueryBundleRequest = {\n entityId: entityId ?? '',\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n query,\n }\n const isFullTextSearchEnabled =\n (entity && isTable(entity) && entity.isSearchEnabled) ?? false\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = `${JSON.stringify(initQueryRequest)}-${componentKey}`\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n key={queryWrapperKey}\n isInfinite={isInfinite}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n defaultShowSearchBar={\n (props.defaultShowSearchBox || isFullTextSearchEnabled) &&\n !props.hideSearchBarControl\n }\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n hideSearchBarControl={props.hideSearchBarControl}\n showLastUpdatedOn={showLastUpdatedOn}\n noContentPlaceholderType={NoContentPlaceholderType.INTERACTIVE}\n hasCustomPlots={Array.isArray(customPlots) && customPlots.length > 0}\n enabledExternalAnalysisPlatforms={enabledExternalAnalysisPlatforms}\n >\n <QueryWrapperPlotNavContents\n {...props}\n isFullTextSearchEnabled={isFullTextSearchEnabled}\n remount={remount}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </QueryWrapper>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"QueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"sourcesContent":["import { QueryOrDeprecatedSearchParams } from '@/components/CardContainerLogic/CardContainerLogic'\nimport AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { useGetEntity } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdAndVersionFromSqlStatement,\n} from '@/utils/functions'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useQuery } from '@tanstack/react-query'\nimport { useAtomValue } from 'jotai'\nimport { Suspense, useMemo, useState } from 'react'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport { SynapseErrorBoundary } from '../error'\nimport FullTextSearch from '../FullTextSearch/FullTextSearch'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { QueryWrapperPlotNavCustomPlotParams } from '../Plot/SynapsePlot'\nimport { QueryContextType, useQueryContext } from '../QueryContext'\nimport {\n QueryVisualizationContextConsumer,\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper, QueryWrapperProps } from '../QueryWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport SearchV2, { SearchV2Props } from '../SynapseTable/SearchV2'\nimport SqlEditor from '../SynapseTable/SqlEditor'\nimport TopLevelControls, {\n TopLevelControlsProps,\n CustomControl,\n} from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { CustomControls } from '../SynapseTable/CustomControls/CustomControls'\nimport TotalQueryResults from '../TotalQueryResults'\nimport PlotsContainer, {\n PlotsContainerProps,\n} from '../widgets/facet-nav/PlotsContainer'\nimport FacetFilterControls, {\n FacetFilterControlsProps,\n} from '../widgets/query-filter/FacetFilterControls'\nimport { QueryWrapperSynapsePlotProps } from './QueryWrapperSynapsePlot'\nimport { RowSetView } from './RowSetView'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\n\nexport const QUERY_FILTERS_EXPANDED_CSS: string = 'isShowingFacetFilters'\nexport const QUERY_FILTERS_COLLAPSED_CSS: string = 'isHidingFacetFilters'\n\nexport const HAS_SELECTED_ROWS_CSS: string = 'hasSelectedRows'\n\ntype QueryWrapperPlotNavOwnProps = {\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n /** Set to true when you want the query to be saved in the URL search parameters. If you are controlling the view (such as in PortalSearch), you'll want to set this to false */\n shouldDeepLink?: boolean\n /** If onQueryChange is set, the callback will be invoked when the Query changes */\n onQueryChange?: (newQueryJson: string) => void\n /** If onQueryResultBundleChange is set, the callback will be invoked when the QueryResultBundle changes */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n /** If initQueryJson is set, it will be the Query used in the initial QueryBundleRequest */\n initQueryJson?: string\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n searchConfiguration?: Omit<\n SearchV2Props,\n 'queryContext' | 'queryVisualizationContext'\n >\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n customPlots?: QueryWrapperSynapsePlotProps[]\n customControls?: CustomControl[]\n defaultColumn?: string\n defaultShowSearchBox?: boolean\n lockedColumn?: QueryWrapperProps['lockedColumn']\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n initialLimit?: number\n hideTopLevelControls?: boolean\n} & Omit<TopLevelControlsProps, 'entityId'> &\n Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> &\n Pick<\n QueryWrapperProps,\n | 'isRowSelectionVisible'\n | 'rowSelectionPrimaryKey'\n | 'isRowSelectionUIFloating'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n > &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'renderFacetValue'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'additionalFiltersSessionStorageKey'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideSearchBarControl'\n | 'hideVisualizationsControl'\n | 'enabledExternalAnalysisPlatforms'\n | 'lockTextMatchesQueryFilterPill'\n > &\n Pick<QueryContextType, 'combineRangeFacetConfig'>\n\nexport type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams &\n PlotsContainerProps &\n QueryWrapperPlotNavOwnProps\n\nexport type QueryWrapperPlotNavContentsProps = Pick<\n QueryWrapperPlotNavProps,\n | 'tableConfiguration'\n | 'name'\n | 'cardConfiguration'\n | 'facetsToPlot'\n | 'availableFacets'\n | 'initialExpandedFacetControls'\n | 'hideDownload'\n | 'hideQueryCount'\n | 'hideSqlEditorControl'\n | 'hideVisualizationsControl'\n | 'searchConfiguration'\n | 'enabledExternalAnalysisPlatforms'\n | 'cavaticaConnectAccountURL'\n | 'customControls'\n | 'customPlots'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n | 'initialLimit'\n | 'initialPlotTypeByFacetColumnName'\n | 'hideTopLevelControls'\n> & {\n isFullTextSearchEnabled: boolean\n remount?: () => void\n}\n\nexport function QueryWrapperPlotNavContents(\n props: QueryWrapperPlotNavContentsProps,\n) {\n const {\n tableConfiguration,\n name,\n cardConfiguration,\n facetsToPlot,\n availableFacets,\n initialExpandedFacetControls,\n hideDownload,\n hideQueryCount,\n hideSqlEditorControl,\n hideVisualizationsControl,\n searchConfiguration,\n cavaticaConnectAccountURL,\n customControls,\n remount = () => {},\n isFullTextSearchEnabled,\n customPlots,\n initialLimit,\n initialPlotTypeByFacetColumnName,\n hideTopLevelControls,\n } = props\n const queryContext = useQueryContext()\n const [showExportMetadata, setShowExportMetadata] = useState(false)\n const { hasFacetedSelectColumn: isFaceted, queryMetadataQueryOptions } =\n queryContext\n const { isLoading: isLoadingQueryMetadata } = useQuery(\n queryMetadataQueryOptions,\n )\n\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const currentQueryRequest = queryContext.currentQueryRequest\n\n const hasFacetsOrFilters =\n (currentQueryRequest?.query.selectedFacets !== undefined &&\n currentQueryRequest.query.selectedFacets.length > 0) ||\n (currentQueryRequest?.query.additionalFilters !== undefined &&\n currentQueryRequest?.query.additionalFilters.length > 0)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n return (\n <QueryVisualizationContextConsumer>\n {queryVisualizationContext => {\n if (queryVisualizationContext === undefined) {\n throw new Error(\n 'No queryVisualizationContext found when using QueryVisualizationContextConsumer',\n )\n }\n\n return (\n <Box\n className={`QueryWrapperPlotNav ${\n queryVisualizationContext.showFacetFilter\n ? QUERY_FILTERS_EXPANDED_CSS\n : QUERY_FILTERS_COLLAPSED_CSS\n } ${isRowSelectionVisible ? HAS_SELECTED_ROWS_CSS : ''} ${\n hideTopLevelControls ? 'isHidingTopLevelControls' : ''\n }`}\n sx={{\n '*': {\n cursor: isLoadingQueryMetadata ? 'wait' : undefined,\n },\n }}\n >\n <QueryWrapperErrorBoundary>\n {isFullTextSearchEnabled ? (\n <FullTextSearch ftsConfig={searchConfiguration?.ftsConfig} />\n ) : (\n <SearchV2\n {...searchConfiguration}\n queryContext={queryContext}\n queryVisualizationContext={queryVisualizationContext}\n />\n )}\n <SqlEditor />\n {queryVisualizationContext.showDownloadConfirmation && (\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() =>\n queryVisualizationContext.setShowDownloadConfirmation(false)\n }\n />\n )}\n {!hideTopLevelControls && (\n <SynapseErrorBoundary>\n <TopLevelControls\n showColumnSelection={tableConfiguration !== undefined}\n name={name}\n hideDownload={hideDownload}\n hideQueryCount={hideQueryCount}\n hideFacetFilterControl={!isFaceted}\n hideVisualizationsControl={\n !isFaceted || hideVisualizationsControl\n }\n hideSqlEditorControl={hideSqlEditorControl}\n cavaticaConnectAccountURL={cavaticaConnectAccountURL}\n remount={remount}\n customControls={customControls}\n />\n </SynapseErrorBoundary>\n )}\n {isFaceted && (\n <>\n <FacetFilterControls\n availableFacets={availableFacets}\n initialExpandedFacetControls={initialExpandedFacetControls}\n />\n </>\n )}\n {/* Isolated Suspense so that metadata loading does not hide the table */}\n <Suspense fallback={null}>\n <TotalQueryResults\n frontText={''}\n endText={hasFacetsOrFilters ? 'filtered by' : ''}\n hideIfUnfiltered={true}\n />\n </Suspense>\n <CustomControls\n customControls={customControls}\n remount={remount}\n />\n <PlotsContainer\n facetsToPlot={facetsToPlot}\n customPlots={customPlots}\n initialPlotTypeByFacetColumnName={\n initialPlotTypeByFacetColumnName\n }\n />\n <RowSetView\n tableConfiguration={tableConfiguration}\n hideDownload={hideDownload}\n cardConfiguration={cardConfiguration}\n initialLimit={initialLimit}\n />\n {showExportMetadata && (\n <ModalDownload\n getLastQueryRequest={queryContext?.getCurrentQueryRequest}\n onClose={() => setShowExportMetadata(false)}\n />\n )}\n </QueryWrapperErrorBoundary>\n </Box>\n )\n }}\n </QueryVisualizationContextConsumer>\n )\n}\n\nexport default function QueryWrapperPlotNav(props: QueryWrapperPlotNavProps) {\n const {\n sql: deprecatedSql,\n tableConfiguration,\n isInfinite = !tableConfiguration,\n limit = DEFAULT_PAGE_SIZE,\n showLastUpdatedOn,\n unitDescription,\n additionalFiltersSessionStorageKey,\n helpConfiguration,\n customPlots,\n enabledExternalAnalysisPlatforms,\n } = props\n\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const { entityId, versionNumber } =\n parseEntityIdAndVersionFromSqlStatement(sql)\n\n const query: Query = useMemo(() => {\n if (props.query) {\n // use query if set\n return props.query\n } else if (props.initQueryJson) {\n // Otherwise use initQueryJson\n return JSON.parse(props.initQueryJson) as Query\n } else {\n // use the deprecated sql, searchParams, and sqlOperator\n const additionalFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n return {\n sql: deprecatedSql!,\n additionalFilters,\n limit: limit,\n offset: 0,\n }\n }\n }, [\n props.query,\n props.initQueryJson,\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n deprecatedSql,\n limit,\n ])\n\n const [componentKey, setComponentKey] = useState(1)\n const remount = () => {\n setComponentKey(componentKey + 1)\n }\n\n const { data: entity } = useGetEntity(entityId, versionNumber)\n const initQueryRequest: QueryBundleRequest = {\n entityId: entityId ?? '',\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n query,\n }\n const isFullTextSearchEnabled =\n (entity && isTable(entity) && entity.isSearchEnabled) ?? false\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = `${JSON.stringify(initQueryRequest)}-${componentKey}`\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n key={queryWrapperKey}\n isInfinite={isInfinite}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n renderFacetValue={props.renderFacetValue}\n dataUseModifiersColumnName={\n props.cardConfiguration?.genericCardSchema\n ?.dataUseModifiersColumnName\n }\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n defaultShowSearchBar={\n (props.defaultShowSearchBox || isFullTextSearchEnabled) &&\n !props.hideSearchBarControl\n }\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n hideSearchBarControl={props.hideSearchBarControl}\n showLastUpdatedOn={showLastUpdatedOn}\n noContentPlaceholderType={NoContentPlaceholderType.INTERACTIVE}\n hasCustomPlots={Array.isArray(customPlots) && customPlots.length > 0}\n enabledExternalAnalysisPlatforms={enabledExternalAnalysisPlatforms}\n >\n <QueryWrapperPlotNavContents\n {...props}\n isFullTextSearchEnabled={isFullTextSearchEnabled}\n remount={remount}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </QueryWrapper>\n )\n}\n"],"mappings":"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"}
@@ -2,6 +2,26 @@ import { AsynchronousJobStatus, ColumnModel, FacetColumnRangeRequest, FacetColum
2
2
  import type { SearchIndexQuery, SearchQueryResults, SynapseClientError } from '@sage-bionetworks/synapse-client';
3
3
  import { InfiniteData, QueryKey, UseInfiniteQueryOptions, UseSuspenseQueryOptions } from '@tanstack/react-query';
4
4
  import { KeyFactory } from '@/synapse-queries/KeyFactory';
5
+ export type SearchQueryStrategy = 'MULTI_MATCH' | 'MULTI_MATCH_BEST_FIELDS' | 'MULTI_MATCH_CROSS_FIELDS' | 'SIMPLE_QUERY_STRING' | 'PHRASE_PREFIX' | 'BOOSTED_FUZZY';
6
+ export type SearchQueryConfig = {
7
+ /**
8
+ * Which OpenSearch query clause to emit when the user has typed a search term.
9
+ * Defaults to 'MULTI_MATCH' (all fields, fuzziness AUTO — today's behavior).
10
+ */
11
+ queryStrategy?: SearchQueryStrategy;
12
+ /**
13
+ * Per-field relevance multipliers. Serialized to the OpenSearch `fields` array
14
+ * as e.g. `["resourceName^5", "synonyms^4"]`. When omitted, all fields are
15
+ * queried at equal weight.
16
+ */
17
+ fieldBoosts?: Record<string, number>;
18
+ /**
19
+ * Fuzziness override. Overrides the per-strategy default. Leave undefined to
20
+ * use each strategy's natural default (AUTO for MULTI_MATCH/BOOSTED_FUZZY,
21
+ * none for the rest).
22
+ */
23
+ fuzziness?: string;
24
+ };
5
25
  /**
6
26
  * TanStack Query options for the SearchQueryServicesApi, mirroring TableQueryUseQueryOptions
7
27
  * but parameterised over SearchIndexQuery rather than QueryBundleRequest. This eliminates
@@ -19,16 +39,23 @@ export declare function getNextPageParamForSearchQueryResults(lastPage: Asynchro
19
39
  * that can be sent to the SearchQueryServicesApi.
20
40
  *
21
41
  * Mapping:
22
- * - columnModels (facetType 'enumeration') → aggregations (OpenSearch terms aggregations)
23
- * - query.selectedFacets (enumeration) → query.bool.filter terms clauses
24
- * - query.selectedFacets (range) → query.bool.filter range clauses
42
+ * - columnModels (facetType 'enumeration') → aggregations (OpenSearch terms or filter-wrapped aggregations)
43
+ * - query.selectedFacets (enumeration) → post_filter (terms clauses) + per-facet filter aggregations
44
+ * - query.selectedFacets (range) → post_filter (range clauses) + included in all per-facet aggregation filters
25
45
  * - query.additionalFilters (TextMatchesQueryFilter) → multi_match query clause
26
46
  * - query.sort → sort (SortItem { column, direction } → [{ column: 'asc'|'desc' }])
27
47
  * - query.limit → size
28
48
  * - query.offset → from
29
49
  * - partMask → dropped (SearchIndexQuery has no bitmask concept)
50
+ *
51
+ * Per-facet filter bucketing (OpenSearch "faceted search" pattern):
52
+ * When any facet selections are active, each enum aggregation is wrapped in an OpenSearch
53
+ * filter aggregation whose filter is the AND of all OTHER selections (its own selection is
54
+ * dropped so the column stays wide). post_filter = AND of ALL selections, narrowing hits/total
55
+ * only. This lets each selected facet column show the full set of option counts while all
56
+ * other columns narrow to the selection — in a single request.
30
57
  */
31
- export declare function toSearchIndexQuery(queryBundleRequest: QueryBundleRequest, searchIndexId: string, columnModels?: ColumnModel[]): SearchIndexQuery;
58
+ export declare function toSearchIndexQuery(queryBundleRequest: QueryBundleRequest, searchIndexId: string, columnModels?: ColumnModel[], searchQueryConfig?: SearchQueryConfig): SearchIndexQuery;
32
59
  /**
33
60
  * Converts a SearchQueryResults (the actual API response) into a QueryResultBundle
34
61
  * so that existing subcomponents (FacetFilterControls, RowSetView, etc.) work unchanged.
@@ -39,7 +66,7 @@ export declare function toSearchIndexQuery(queryBundleRequest: QueryBundleReques
39
66
  * - aggregationResults → facets (parsed from opaque OpenSearch aggregation JSON)
40
67
  */
41
68
  export declare function searchQueryResultsToQueryResultBundle(results: SearchQueryResults | undefined, query: SearchIndexQuery, columnModels?: ColumnModel[], selectedFacets?: (FacetColumnValuesRequest | FacetColumnRangeRequest)[]): QueryResultBundle;
42
- export declare function getSearchQueryUseQueryOptions(queryBundleRequest: QueryBundleRequest, keyFactory: KeyFactory, accessToken: string | undefined, searchIndexId: string, columnModels?: ColumnModel[]): SearchTableQueryUseQueryOptions;
69
+ export declare function getSearchQueryUseQueryOptions(queryBundleRequest: QueryBundleRequest, keyFactory: KeyFactory, accessToken: string | undefined, searchIndexId: string, columnModels?: ColumnModel[], searchQueryConfig?: SearchQueryConfig): SearchTableQueryUseQueryOptions;
43
70
  /**
44
71
  * Returns a stable callback that fetches autocomplete suggestions for a search input
45
72
  * using the synchronous `POST /search/autocomplete` endpoint.
@@ -56,5 +83,5 @@ export declare function useGetSuggestionsForSearchIndex(searchIndexId: string, a
56
83
  * standard Table Query API) but return data in the same QueryResultBundle format, allowing
57
84
  * all existing subcomponents (FacetFilterControls, RowSetView, etc.) to work unchanged.
58
85
  */
59
- export declare function useSearchQueryUseQueryOptions(queryBundleRequest: QueryBundleRequest, searchIndexId: string, synapseId?: string): SearchTableQueryUseQueryOptions;
86
+ export declare function useSearchQueryUseQueryOptions(queryBundleRequest: QueryBundleRequest, searchIndexId: string, synapseId?: string, searchQueryConfig?: SearchQueryConfig): SearchTableQueryUseQueryOptions;
60
87
  //# sourceMappingURL=SearchQueryUseQueryOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchQueryUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapper/SearchQueryUseQueryOptions.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,WAAW,EAEX,uBAAuB,EAIvB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EAIP,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAGV,gBAAgB,EAChB,kBAAkB,EAElB,kBAAkB,EAEnB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAI9B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AA6BzD;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,mBAAmB,EAAE,uBAAuB,CAC1C,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,MAAM,GAAG,SAAS,CACnB,CAAA;IACD,2BAA2B,EAAE,uBAAuB,CAClD,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,YAAY,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,EACxE,QAAQ,EACR,MAAM,GAAG,MAAM,GAAG,SAAS,CAC5B,CAAA;IACD,yBAAyB,EAAE,uBAAuB,CAChD,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAC1D,kBAAkB,EAClB,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CACvC,CAAA;CACF,CAAA;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EACpE,QAAQ,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,GACrE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,gBAAgB,CAmHlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,KAAK,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,WAAW,EAAE,EAC5B,cAAc,CAAC,EAAE,CAAC,wBAAwB,GAAG,uBAAuB,CAAC,EAAE,GACtE,iBAAiB,CA6InB;AAED,wBAAgB,6BAA6B,CAC3C,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,WAAW,EAAE,GAC3B,+BAA+B,CAwIjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,qBAAqB,EAAE,MAAM,GAAG,SAAS,GACxC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAoC3C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,+BAA+B,CAmBjC"}
1
+ {"version":3,"file":"SearchQueryUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapper/SearchQueryUseQueryOptions.ts"],"names":[],"mappings":"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"}