synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
214 lines (213 loc) • 6.83 kB
JavaScript
import { jsx as h, Fragment as y } from "react/jsx-runtime";
import { createElement as v } from "react";
import "../../../utils/PermissionLevelToAccessType.js";
import { VALUE_NOT_SET as $, FRIENDLY_VALUE_NOT_SET as C } from "../../../utils/SynapseConstants.js";
import "../../../synapse-client/SynapseClient.js";
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
import "@sage-bionetworks/synapse-types";
import "../../../utils/functions/EntityTypeUtils.js";
import "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "../../../utils/context/SynapseContext.js";
import "use-deep-compare-effect";
import "@tanstack/react-query";
import "@tanstack/query-core";
import "lodash-es/isEmpty";
import "lodash-es/isEqual";
import "lodash-es/xorWith";
import "@mui/material";
import "@sage-bionetworks/synapse-client";
import { isColumnSingleValueQueryFilter as P, isColumnMultiValueFunctionQueryFilter as R, isTextMatchesQueryFilter as L, isFacetColumnValuesRequest as S, isFacetColumnRangeRequest as V } from "../../../utils/types/IsType.js";
import "../../../utils/hooks/useCookiePreferences.js";
import "../../../utils/hooks/useSourceAppConfigs.js";
import "universal-cookie";
import "../../../utils/AppUtils/session/ApplicationSessionContext.js";
import "../../../utils/context/FullContextProvider.js";
import "../../../utils/context/DocumentMetadataContext.js";
import '../../../style/components/_spinner.css';/* empty css */
import "react-router";
import N from "pluralize";
import { useQueryContext as k } from "../../QueryContext/QueryContext.js";
import { useGetQueryMetadata as E } from "../../QueryWrapper/useGetQueryMetadata.js";
import { useQueryVisualizationContext as M } from "../../QueryVisualizationWrapper/QueryVisualizationContext.js";
import Q from "./SelectionCriteriaPill.js";
import { getSearchTextFromBooleanModeSearchExpression as _ } from "../../FullTextSearch/FullTextSearchUtils.js";
const g = 4;
function I(n, e, r, l) {
const { getColumnDisplayName: u } = l;
if (n.values.length > g || !r) {
const o = `${N(
u(n.columnName)
)} (${n.values.length.toLocaleString()})`;
return [
{
key: `queryFilter-${n.concreteType}-${n.columnName}`,
innerText: o,
tooltipText: o,
onRemoveFilter: () => {
e.removeQueryFilter(n);
}
}
];
}
return n.values.map((o) => {
let m = o;
o?.startsWith("%") && o?.endsWith("%") && (m = m.substring(1, m.length - 1)), m = l.getDisplayValue(
m,
r.columnType
);
const i = `${u(
n.columnName
)}: ${m}`;
return {
key: `queryFilter-${n.concreteType}-${n.columnName}-${o}`,
innerText: i,
tooltipText: i,
onRemoveFilter: () => {
e.removeValueFromQueryFilter(n, o);
}
};
});
}
function U(n, e) {
let r = n.searchExpression;
return n.searchMode == "BOOLEAN" && (r = _(
n.searchExpression
)), {
key: `queryFilter-${n.concreteType}-${n.searchExpression}`,
innerText: r,
tooltipText: `Text matches: "${r}"`,
onRemoveFilter: () => {
e.removeQueryFilter(n);
}
};
}
function A(n, e, r, l, u) {
return n.flatMap((o) => {
if (P(o) || R(o)) {
const m = r.find(
(i) => i.name === o.columnName
);
return o.columnName.toLowerCase() === u?.columnName?.toLowerCase() ? [] : I(
o,
e,
m,
l
);
} else return L(o) ? [U(o, e)] : (console.log("Unknown query filter type", o), []);
});
}
function T(n, e) {
return n == null && e == null ? "Any value" : n == null ? `Up to ${e}` : e == null ? `${n} or greater` : n === $ && e === $ ? C : `${n} - ${e}`;
}
function D(n, e, r, l, u) {
return n.flatMap((o) => {
if (o.columnName.toLowerCase() === u?.columnName?.toLowerCase())
return [];
const m = r.find(
(t) => t.name === o.columnName
), { getColumnDisplayName: i, getDisplayValue: p } = l;
if (S(o)) {
if (o.facetValues.length > g || !m) {
const t = `${N(
i(
o.columnName,
o.jsonPath
)
)} (${o.facetValues.length.toLocaleString()})`;
return [
{
key: `facet-${o.concreteType}-${o.columnName}`,
innerText: t,
tooltipText: t,
onRemoveFilter: () => {
e.removeSelectedFacet(o);
}
}
];
}
return o.facetValues.map((t) => {
const a = p(t, m.columnType);
return {
key: `facet-${o.concreteType}-${o.columnName}-${t}`,
innerText: a,
tooltipText: `${i(
o.columnName,
o.jsonPath
)}: ${a}`,
onRemoveFilter: () => {
e.removeValueFromSelectedFacet(o, t);
}
};
});
} else if (V(o)) {
const { combineRangeFacetConfig: t } = e;
if (t && (o.columnName == t.minFacetColumn || o.columnName == t.maxFacetColumn)) {
if (o.columnName == t.minFacetColumn)
return [];
{
const c = o, f = n.find(
(x) => x.columnName == t.minFacetColumn
), s = T(c.min, f.max);
return [
{
key: `facet-${o.concreteType}-${o.columnName}-${s}`,
innerText: s,
tooltipText: `${t.label}: ${s}`,
onRemoveFilter: () => {
e.removeSelectedFacet([f, c]);
}
}
];
}
}
const a = T(
o.min,
o.max
);
return [
{
key: `facet-${o.concreteType}-${o.columnName}-${o.min}-${o.max}`,
innerText: a,
tooltipText: `${i(
o.columnName,
o.jsonPath
)}: ${a}`,
onRemoveFilter: () => {
e.removeSelectedFacet(o);
}
}
];
} else
return console.log(
"Unknown facet type",
o.concreteType
), [];
});
}
function ho() {
const n = k(), e = n.lockedColumn, r = M(), { currentQueryRequest: l } = n, { data: u } = E(), o = A(
l.query?.additionalFilters ?? [],
n,
u?.columnModels || [],
r,
e
), m = D(
l.query.selectedFacets ?? [],
n,
u?.columnModels || [],
r,
e
), i = [...o, ...m];
return /* @__PURE__ */ h(y, { children: i.map((p) => {
const t = encodeURIComponent(p.key);
return /* @__PURE__ */ v(Q, { ...p, key: t });
}) });
}
export {
ho as default,
U as getPillPropsFromTextMatchesQueryFilter
};
//# sourceMappingURL=SelectionCriteriaPills.js.map