Data tab added

This commit is contained in:
Behzad Mehrabi 2022-04-08 12:19:01 +04:30
parent 5c4721acf0
commit b31b83010a
5 changed files with 74 additions and 1 deletions

View File

@ -0,0 +1,53 @@
import React from 'react';
import { createSelector, Selector } from '@reduxjs/toolkit';
import { QueryStatus } from '@reduxjs/toolkit/dist/query';
import { RtkResourceInfo } from '../types';
import { TreeView } from './TreeView';
import { identity } from '../utils/object';
type FormattedQuery =
| { status: QueryStatus.fulfilled; data: unknown }
| {
status: QueryStatus.rejected;
error: unknown;
}
| {
status: QueryStatus.uninitialized | QueryStatus.pending;
};
const selectFormattedQuery: Selector<RtkResourceInfo, FormattedQuery> =
createSelector<
[(identity: RtkResourceInfo) => RtkResourceInfo],
FormattedQuery
>(identity, ({ state }: RtkResourceInfo): FormattedQuery => {
if (state.status === 'fulfilled') {
return {
status: state.status,
data: state.data,
};
}
if (state.status === 'rejected') {
return {
status: state.status,
error: state.error,
};
}
return {
status: state.status,
};
});
export interface QueryPreviewDataProps {
resInfo: RtkResourceInfo;
isWideLayout: boolean;
}
function QueryPreviewData({ resInfo, isWideLayout }: QueryPreviewDataProps) {
const formattedQuery = selectFormattedQuery(resInfo);
return <TreeView data={formattedQuery} isWideLayout={isWideLayout} />;
}
export default QueryPreviewData;

View File

@ -33,6 +33,9 @@ import {
QueryPreviewActionsProps, QueryPreviewActionsProps,
} from '../components/QueryPreviewActions'; } from '../components/QueryPreviewActions';
import { isTabVisible } from '../utils/tabs'; import { isTabVisible } from '../utils/tabs';
import QueryPreviewData, {
QueryPreviewDataProps,
} from '../components/QueryPreviewData';
export interface QueryPreviewProps<S = unknown> { export interface QueryPreviewProps<S = unknown> {
readonly selectedTab: QueryPreviewTabs; readonly selectedTab: QueryPreviewTabs;
@ -61,6 +64,11 @@ const MappedQueryPreviewTags = mapProps<
isWideLayout, isWideLayout,
}))(QueryPreviewTags); }))(QueryPreviewTags);
const MappedQueryPreviewData = mapProps<
QueryPreviewTabProps,
QueryPreviewDataProps
>(({ resInfo, isWideLayout }) => ({ resInfo, isWideLayout }))(QueryPreviewData);
const MappedQueryPreviewInfo = mapProps< const MappedQueryPreviewInfo = mapProps<
QueryPreviewTabProps, QueryPreviewTabProps,
QueryPreviewInfoProps QueryPreviewInfoProps
@ -93,6 +101,16 @@ const MappedQueryPreviewActions = mapProps<
const tabs: ReadonlyArray< const tabs: ReadonlyArray<
TabOption<QueryPreviewTabs, QueryPreviewTabProps, RtkResourceInfo['type']> TabOption<QueryPreviewTabs, QueryPreviewTabProps, RtkResourceInfo['type']>
> = [ > = [
{
label: 'Data',
value: QueryPreviewTabs.queryData,
component: MappedQueryPreviewData,
visible: {
query: true,
mutation: true,
default: true,
},
},
{ {
label: 'Query', label: 'Query',
value: QueryPreviewTabs.queryinfo, value: QueryPreviewTabs.queryinfo,

View File

@ -20,7 +20,7 @@ const initialState: RtkQueryMonitorState = {
queryFilter: QueryFilters.queryKey, queryFilter: QueryFilters.queryKey,
}, },
}, },
selectedPreviewTab: QueryPreviewTabs.queryinfo, selectedPreviewTab: QueryPreviewTabs.queryData,
selectedQueryKey: null, selectedQueryKey: null,
}; };

View File

@ -262,6 +262,7 @@ export function createInspectorSelectors<S>(): InspectorSelectors<S> {
[QueryPreviewTabs.querySubscriptions]: Object.keys(subscriptions ?? {}) [QueryPreviewTabs.querySubscriptions]: Object.keys(subscriptions ?? {})
.length, .length,
[QueryPreviewTabs.apiConfig]: 0, [QueryPreviewTabs.apiConfig]: 0,
[QueryPreviewTabs.queryData]: 0,
[QueryPreviewTabs.queryinfo]: 0, [QueryPreviewTabs.queryinfo]: 0,
[QueryPreviewTabs.actions]: actions.length, [QueryPreviewTabs.actions]: actions.length,
}; };

View File

@ -8,6 +8,7 @@ import type { QueryComparators } from './utils/comparators';
import type { QueryFilters } from './utils/filters'; import type { QueryFilters } from './utils/filters';
export enum QueryPreviewTabs { export enum QueryPreviewTabs {
queryData,
queryinfo, queryinfo,
apiConfig, apiConfig,
querySubscriptions, querySubscriptions,