synapse-react-client
Version:
[](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [](https://badge.fury.io/js/synaps
171 lines (170 loc) • 6.1 kB
TypeScript
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;
}