UNPKG

synapse-react-client

Version:

[![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synapse-react-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettie

214 lines (213 loc) 6.83 kB
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