UNPKG

synapse-react-client

Version:

[![Build Status](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client.svg?branch=main)](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synaps

171 lines (170 loc) 6.1 kB
import * as React from 'react'; import { AsynchronousJobStatus, QueryBundleRequest, QueryResultBundle } from '../utils/synapseTypes/'; import { SynapseClientError } from '../utils/SynapseClient'; /** * TODO: SWC-5612 - Replace token prop with SynapseContext.accessToken * * This wasn't done because Enzyme's shallow renderer is not currently * compatible with the `contextType` field in the React 16+ context API. * * This can be fixed by rewriting tests to not rely on the shallow renderer. * * See here: https://github.com/enzymejs/enzyme/issues/1553 */ export declare type QueryWrapperProps = { visibleColumnCount?: number; initQueryRequest: QueryBundleRequest; rgbIndex?: number; token?: string; facet?: string; unitDescription?: string; facetAliases?: Record<string, string>; loadNow?: boolean; showBarChart?: boolean; componentIndex?: number; shouldDeepLink?: boolean; hiddenColumns?: string[]; lockedFacet?: LockedFacet; defaultShowFacetVisualization?: boolean; children?: (queryWrapperChildProps: QueryWrapperChildProps) => React.ReactNode | React.ReactNode[]; }; export declare type TopLevelControlsState = { showFacetVisualization: boolean; showFacetFilter: boolean; showColumnFilter: boolean; showSearchBar: boolean; showDownloadConfirmation: boolean; showColumnSelectDropdown: boolean; }; export declare type SearchQuery = { columnName: string; searchText: string; }; export declare type QueryWrapperState = { isAllFilterSelectedForFacet: Record<string, boolean>; data: QueryResultBundle | undefined; isLoadingNewData: boolean; isLoading: boolean; lastQueryRequest: QueryBundleRequest; hasMoreData: boolean; lastFacetSelection: FacetSelection; chartSelectionIndex: number; asyncJobStatus?: AsynchronousJobStatus; facetAliases?: Record<string, string>; loadNowStarted: boolean; topLevelControlsState?: TopLevelControlsState; isColumnSelected: string[]; selectedRowIndices?: number[]; error: SynapseClientError | undefined; }; export declare type LockedFacet = { facet?: string; value?: string; }; export declare type FacetSelection = { columnName: string; facetValue: string; selector: string; }; export declare type QueryWrapperChildProps = { isAllFilterSelectedForFacet?: Record<string, boolean>; isLoading?: boolean; token?: string; entityId?: string; isLoadingNewData?: boolean; executeQueryRequest?: (param: QueryBundleRequest) => void; executeInitialQueryRequest?: () => void; getNextPageOfData?: (queryRequest: QueryBundleRequest) => void; getLastQueryRequest?: () => QueryBundleRequest; getInitQueryRequest?: () => QueryBundleRequest; data?: QueryResultBundle; facet?: string; updateParentState?: <K extends keyof QueryWrapperState>(param: Pick<QueryWrapperState, K>) => void; rgbIndex?: number; unitDescription?: string; facetAliases?: Record<string, string>; lastFacetSelection?: FacetSelection; chartSelectionIndex?: number; asyncJobStatus?: AsynchronousJobStatus; showBarChart?: boolean; hasMoreData?: boolean; topLevelControlsState?: TopLevelControlsState; isColumnSelected?: string[]; selectedRowIndices?: number[]; error?: SynapseClientError | undefined; lockedFacet?: LockedFacet; }; export declare const QUERY_FILTERS_EXPANDED_CSS: string; export declare const QUERY_FILTERS_COLLAPSED_CSS: string; /** * Class wraps around any Synapse views that are dependent on a query bundle * Those classes then take in as props: * * @class QueryWrapper * @extends {React.Component} */ export default class QueryWrapper extends React.Component<QueryWrapperProps, QueryWrapperState> { private componentIndex; constructor(props: QueryWrapperProps); /** * Compute default query request * * @memberof QueryWrapper */ componentDidMount(): void; /** * @memberof QueryWrapper */ componentDidUpdate(prevProps: QueryWrapperProps): void; /** * Pass down a deep clone (so no side affects on the child's part) of the * last query request made * * @returns * @memberof QueryWrapper */ getLastQueryRequest(): QueryBundleRequest; /** * Pass down a deep clone (so no side affects on the child's part) of the * first query request made * * @returns * @memberof QueryWrapper */ getInitQueryRequest(): QueryBundleRequest; /** * Execute the given query * * @param {*} queryRequest Query request as specified by * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/table/Query.html * @memberof QueryWrapper */ executeQueryRequest(queryRequest: QueryBundleRequest): Promise<void>; /** * Grab the next page of data, pulling in 25 more rows. * * @param {*} queryRequest Query request as specified by * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/table/Query.html * @memberof QueryWrapper */ getNextPageOfData(queryRequest: QueryBundleRequest): Promise<void>; /** * Execute the initial query passed into the component * * @param {*} queryRequest Query request as specified by * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/table/Query.html * @memberof QueryWrapper */ executeInitialQueryRequest(initQueryRequest?: QueryBundleRequest): void; updateParentState<K extends keyof QueryWrapperState>(update: Pick<QueryWrapperState, K>): void; /** * remove a particular facet name (e.g. study) and its all possible values based on the parameter specified in the url * this is to remove the facet from the charts, search and filter. * @return data: QueryResultBundle */ removeLockedFacetData(): QueryResultBundle | undefined; /** * Render the children without any formatting */ render(): JSX.Element; }