Skip to content

Commit

Permalink
perf(graphCardSelectors): expand query filters for graph (#433)
Browse files Browse the repository at this point in the history
* graphCardSelectors, apply a state query filter
* inventoryListSelectors, remove related query ToDo
* openshfitView, rhelView, graphQuery rename for consistency
  • Loading branch information
cdcabrera committed Oct 26, 2020
1 parent 37dd445 commit 48e01ea
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 13 deletions.
10 changes: 7 additions & 3 deletions src/components/openshiftView/openshiftView.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,11 @@ class OpenshiftView extends React.Component {
viewId
} = this.props;
const isC3 = location?.parsedSearch?.c3 === '';
const { graphQuery, inventoryQuery: initialInventoryQuery, toolbarQuery } = apiQueries.parseRhsmQuery(query);
const {
graphQuery: initialGraphQuery,
inventoryQuery: initialInventoryQuery,
toolbarQuery
} = apiQueries.parseRhsmQuery(query);

return (
<PageLayout>
Expand All @@ -142,7 +146,7 @@ class OpenshiftView extends React.Component {
<C3GraphCard
key={routeDetail.pathParameter}
filterGraphData={graphFilters}
query={graphQuery}
query={initialGraphQuery}
productId={routeDetail.pathParameter}
viewId={viewId}
cardTitle={t('curiosity-graph.cardHeading')}
Expand All @@ -154,7 +158,7 @@ class OpenshiftView extends React.Component {
<GraphCard
key={routeDetail.pathParameter}
filterGraphData={graphFilters}
query={graphQuery}
query={initialGraphQuery}
productId={routeDetail.pathParameter}
viewId={viewId}
cardTitle={t('curiosity-graph.cardHeading')}
Expand Down
10 changes: 7 additions & 3 deletions src/components/rhelView/rhelView.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@ class RhelView extends React.Component {
viewId
} = this.props;
const isC3 = location?.parsedSearch?.c3 === '';
const { graphQuery, inventoryQuery: initialInventoryQuery, toolbarQuery } = apiQueries.parseRhsmQuery(query);
const {
graphQuery: initialGraphQuery,
inventoryQuery: initialInventoryQuery,
toolbarQuery
} = apiQueries.parseRhsmQuery(query);

return (
<PageLayout>
Expand All @@ -66,7 +70,7 @@ class RhelView extends React.Component {
<C3GraphCard
key={routeDetail.pathParameter}
filterGraphData={initialGraphFilters}
query={graphQuery}
query={initialGraphQuery}
productId={routeDetail.pathParameter}
viewId={viewId}
cardTitle={t('curiosity-graph.socketsHeading')}
Expand All @@ -76,7 +80,7 @@ class RhelView extends React.Component {
<GraphCard
key={routeDetail.pathParameter}
filterGraphData={initialGraphFilters}
query={graphQuery}
query={initialGraphQuery}
productId={routeDetail.pathParameter}
viewId={viewId}
cardTitle={t('curiosity-graph.socketsHeading')}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ Object {
"fulfilled": false,
"graphData": Object {},
"pending": true,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down Expand Up @@ -377,6 +380,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand All @@ -387,6 +393,9 @@ Object {
"fulfilled": false,
"graphData": Object {},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand All @@ -397,6 +406,7 @@ Object {
"fulfilled": false,
"graphData": Object {},
"pending": false,
"query": Object {},
"status": undefined,
}
`;
Expand All @@ -407,6 +417,7 @@ Object {
"fulfilled": false,
"graphData": Object {},
"pending": false,
"query": Object {},
"status": undefined,
}
`;
Expand Down Expand Up @@ -562,6 +573,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down Expand Up @@ -717,6 +731,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down Expand Up @@ -872,6 +889,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down Expand Up @@ -1027,6 +1047,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down Expand Up @@ -1438,6 +1461,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down Expand Up @@ -1617,6 +1643,9 @@ Object {
],
},
"pending": false,
"query": Object {
"granularity": "daily",
},
"status": undefined,
}
`;
Expand Down
26 changes: 22 additions & 4 deletions src/redux/selectors/graphCardSelectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import _isEqual from 'lodash/isEqual';
import _camelCase from 'lodash/camelCase';
import { rhsmApiTypes, RHSM_API_QUERY_TYPES } from '../../types/rhsmApiTypes';
import { reduxHelpers } from '../common/reduxHelpers';
import { apiQueries } from '../common';

/**
* Selector cache.
Expand All @@ -25,24 +26,41 @@ const statePropsFilter = (state, props = {}) => ({
...state.graph?.reportCapacity?.[props.productId],
...{
viewId: props.viewId,
productId: props.productId,
query: props.query
productId: props.productId
}
});

/**
* Return a combined query object.
*
* @param {object} state
* @param {object} props
* @returns {object}
*/
const queryFilter = (state, props = {}) => {
const { graphQuery: query } = apiQueries.parseRhsmQuery({
...props.query,
...state.view?.query?.[props.productId],
...state.view?.query?.[props.viewId]
});

return query;
};

/**
* Create selector, transform combined state, props into a consumable graph/charting object.
*
* @type {{pending: boolean, fulfilled: boolean, graphData: object, error: boolean, status: (*|number)}}
*/
const selector = createSelector([statePropsFilter], response => {
const { viewId = null, productId = null, query = {}, metaId, metaQuery = {}, ...responseData } = response || {};
const selector = createSelector([statePropsFilter, queryFilter], (response, query = {}) => {
const { viewId = null, productId = null, metaId, metaQuery = {}, ...responseData } = response || {};

const updatedResponseData = {
error: responseData.error || false,
fulfilled: false,
pending: responseData.pending || responseData.cancelled || false,
graphData: {},
query,
status: responseData.status
};

Expand Down
3 changes: 0 additions & 3 deletions src/redux/selectors/inventoryListSelectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ const statePropsFilter = (state, props = {}) => ({
}
});

/**
* ToDo: Apply "queryFilter" functionality across selectors for consistency
*/
/**
* Return a combined query object.
*
Expand Down

0 comments on commit 48e01ea

Please sign in to comment.