Skip to content

Commit

Permalink
fix(graphCard): ent-3507 expose start, end for date query (#589)
Browse files Browse the repository at this point in the history
* graphCard, expose start, end query to allow alt granularity dropdown
* openshiftView, productView, Rhel, Satellite, props updates
* viewReducer, queryTypes, graphCardSelectors, expose start, end query
  • Loading branch information
cdcabrera committed Apr 13, 2021
1 parent 5ef05fe commit bd3b2fa
Show file tree
Hide file tree
Showing 18 changed files with 196 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ exports[`GraphCard Component should render a non-connected component: non-connec
dataSets={Array []}
domain={Object {}}
height={275}
key="chart_{\\"granularity\\":\\"daily\\"}"
key="chart_{\\"granularity\\":\\"daily\\",\\"ending\\":\\"2021-02-24T23:59:59.999Z\\",\\"beginning\\":\\"2021-01-25T00:00:00.000Z\\"}"
padding={
Object {
"bottom": 75,
Expand Down Expand Up @@ -290,7 +290,7 @@ exports[`GraphCard Component should render multiple states: error with 403 statu
}
domain={Object {}}
height={275}
key="chart_{\\"granularity\\":\\"daily\\"}"
key="chart_{\\"granularity\\":\\"daily\\",\\"ending\\":\\"2019-06-26T23:59:59.999Z\\",\\"beginning\\":\\"2019-05-25T00:00:00.000Z\\"}"
padding={
Object {
"bottom": 75,
Expand Down Expand Up @@ -411,7 +411,7 @@ exports[`GraphCard Component should render multiple states: error with 500 statu
}
domain={Object {}}
height={275}
key="chart_{\\"granularity\\":\\"daily\\"}"
key="chart_{\\"granularity\\":\\"daily\\",\\"ending\\":\\"2019-06-26T23:59:59.999Z\\",\\"beginning\\":\\"2019-05-25T00:00:00.000Z\\"}"
padding={
Object {
"bottom": 75,
Expand Down Expand Up @@ -532,7 +532,7 @@ exports[`GraphCard Component should render multiple states: fulfilled 1`] = `
}
domain={Object {}}
height={275}
key="chart_{\\"granularity\\":\\"daily\\"}"
key="chart_{\\"granularity\\":\\"daily\\",\\"ending\\":\\"2019-06-26T23:59:59.999Z\\",\\"beginning\\":\\"2019-05-25T00:00:00.000Z\\"}"
padding={
Object {
"bottom": 75,
Expand Down
24 changes: 20 additions & 4 deletions src/components/graphCard/__tests__/graphCard.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ import {
describe('GraphCard Component', () => {
it('should render a non-connected component', () => {
const props = {
query: { [RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY },
query: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.END_DATE]: '2021-02-24T23:59:59.999Z',
[RHSM_API_QUERY_TYPES.START_DATE]: '2021-01-25T00:00:00.000Z'
},
productId: 'lorem'
};
const component = shallow(<GraphCard {...props} />);
Expand All @@ -20,7 +24,11 @@ describe('GraphCard Component', () => {

it('should render multiple states', () => {
const props = {
query: { [RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY },
query: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.END_DATE]: '2019-06-26T23:59:59.999Z',
[RHSM_API_QUERY_TYPES.START_DATE]: '2019-05-25T00:00:00.000Z'
},
productId: 'lorem',
graphData: {
physicalSockets: [
Expand Down Expand Up @@ -91,7 +99,11 @@ describe('GraphCard Component', () => {
id: 'thresholdLoremIpsumSockets'
}
],
query: { [RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY },
query: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.END_DATE]: '2019-06-26T23:59:59.999Z',
[RHSM_API_QUERY_TYPES.START_DATE]: '2019-05-25T00:00:00.000Z'
},
productId: 'lorem',
graphData: {
loremIpsumSockets: [
Expand Down Expand Up @@ -155,7 +167,11 @@ describe('GraphCard Component', () => {

it('should return an empty render when disabled', () => {
const props = {
query: { [RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY },
query: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.END_DATE]: '2021-02-24T23:59:59.999Z',
[RHSM_API_QUERY_TYPES.START_DATE]: '2021-01-25T00:00:00.000Z'
},
isDisabled: true,
productId: 'lorem'
};
Expand Down
18 changes: 7 additions & 11 deletions src/components/graphCard/graphCard.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Card, CardTitle, CardHeader, CardActions, CardBody, Title } from '@patt
import { chart_color_green_300 as chartColorGreenDark } from '@patternfly/react-tokens';
import _isEqual from 'lodash/isEqual';
import { connect, reduxActions, reduxSelectors } from '../../redux';
import { helpers, dateHelpers } from '../../common';
import { helpers } from '../../common';
import { RHSM_API_QUERY_GRANULARITY_TYPES as GRANULARITY_TYPES, RHSM_API_QUERY_TYPES } from '../../types/rhsmApiTypes';
import { graphCardHelpers } from './graphCardHelpers';
import GraphCardChartTooltip from './graphCardChartTooltip';
Expand Down Expand Up @@ -42,16 +42,10 @@ class GraphCard extends React.Component {
onUpdateGraphData = () => {
const { getGraphReportsCapacity, isDisabled, productId, query } = this.props;
const graphGranularity = this.getQueryGranularity();
const { [RHSM_API_QUERY_TYPES.START_DATE]: startDate, [RHSM_API_QUERY_TYPES.END_DATE]: endDate } = query;

if (!isDisabled && graphGranularity && productId) {
const { startDate, endDate } = dateHelpers.getRangedDateTime(graphGranularity);
const graphQuery = {
[RHSM_API_QUERY_TYPES.START_DATE]: startDate.toISOString(),
[RHSM_API_QUERY_TYPES.END_DATE]: endDate.toISOString(),
...query
};

getGraphReportsCapacity(productId, graphQuery);
if (!isDisabled && graphGranularity && startDate && endDate && productId) {
getGraphReportsCapacity(productId, query);
}
};

Expand Down Expand Up @@ -206,7 +200,9 @@ GraphCard.propTypes = {
getGraphReportsCapacity: PropTypes.func,
graphData: PropTypes.object,
query: PropTypes.shape({
[RHSM_API_QUERY_TYPES.GRANULARITY]: PropTypes.oneOf([...Object.values(GRANULARITY_TYPES)]).isRequired
[RHSM_API_QUERY_TYPES.GRANULARITY]: PropTypes.oneOf([...Object.values(GRANULARITY_TYPES)]).isRequired,
[RHSM_API_QUERY_TYPES.START_DATE]: PropTypes.string.isRequired,
[RHSM_API_QUERY_TYPES.END_DATE]: PropTypes.string.isRequired
}).isRequired,
isDisabled: PropTypes.bool,
pending: PropTypes.bool,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ exports[`OpenshiftView Component should display an alternate graph on query-stri
productLabel="OpenShift"
query={
Object {
"beginning": "2019-06-20T00:00:00.000Z",
"ending": "2019-07-20T23:59:59.999Z",
"granularity": "daily",
}
}
Expand Down Expand Up @@ -280,6 +282,8 @@ exports[`OpenshiftView Component should have a fallback title: title 1`] = `
productLabel="OpenShift"
query={
Object {
"beginning": "2019-06-20T00:00:00.000Z",
"ending": "2019-07-20T23:59:59.999Z",
"granularity": "daily",
}
}
Expand Down Expand Up @@ -907,6 +911,8 @@ exports[`OpenshiftView Component should render a non-connected component: non-co
productLabel="OpenShift"
query={
Object {
"beginning": "2019-06-20T00:00:00.000Z",
"ending": "2019-07-20T23:59:59.999Z",
"granularity": "daily",
}
}
Expand Down
10 changes: 7 additions & 3 deletions src/components/openshiftView/openshiftView.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import InventoryList from '../inventoryList/inventoryList';
import InventorySubscriptions from '../inventorySubscriptions/inventorySubscriptions';
import InventoryTabs, { InventoryTab } from '../inventoryTabs/inventoryTabs';
import BannerMessages from '../bannerMessages/bannerMessages';
import { helpers } from '../../common';
import { helpers, dateHelpers } from '../../common';
import { translate } from '../i18n/i18n';

/**
Expand Down Expand Up @@ -148,7 +148,9 @@ class OpenshiftView extends React.Component {
OpenshiftView.propTypes = {
query: PropTypes.object,
graphTallyQuery: PropTypes.shape({
[RHSM_API_QUERY_TYPES.GRANULARITY]: PropTypes.oneOf([...Object.values(GRANULARITY_TYPES)])
[RHSM_API_QUERY_TYPES.GRANULARITY]: PropTypes.oneOf([...Object.values(GRANULARITY_TYPES)]),
[RHSM_API_QUERY_TYPES.START_DATE]: PropTypes.string,
[RHSM_API_QUERY_TYPES.END_DATE]: PropTypes.string
}),
inventoryHostsQuery: PropTypes.shape({
[RHSM_API_QUERY_TYPES.LIMIT]: PropTypes.number,
Expand Down Expand Up @@ -196,7 +198,9 @@ OpenshiftView.defaultProps = {
[RHSM_API_QUERY_TYPES.UOM]: RHSM_API_QUERY_UOM_TYPES.CORES
},
graphTallyQuery: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.START_DATE]: dateHelpers.getRangedDateTime(GRANULARITY_TYPES.DAILY).startDate.toISOString(),
[RHSM_API_QUERY_TYPES.END_DATE]: dateHelpers.getRangedDateTime(GRANULARITY_TYPES.DAILY).endDate.toISOString()
},
inventoryHostsQuery: {
[RHSM_API_QUERY_TYPES.SORT]: RHSM_API_QUERY_SORT_TYPES.LAST_SEEN,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ exports[`ProductViewRhel Component should render a non-connected component: non-
productConfig={
Object {
"graphTallyQuery": Object {
"beginning": "2019-06-20T00:00:00.000Z",
"ending": "2019-07-20T23:59:59.999Z",
"granularity": "daily",
},
"initialGraphFilters": Array [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ exports[`ProductViewSatellite Component should render a non-connected component:
productConfig={
Object {
"graphTallyQuery": Object {
"beginning": "2019-06-20T00:00:00.000Z",
"ending": "2019-07-20T23:59:59.999Z",
"granularity": "daily",
},
"initialGraphFilters": Array [
Expand Down
4 changes: 3 additions & 1 deletion src/components/productView/productView.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ const ProductView = ({ productConfig, routeDetail, t }) => {
ProductView.propTypes = {
productConfig: PropTypes.shape({
graphTallyQuery: PropTypes.shape({
[RHSM_API_QUERY_TYPES.GRANULARITY]: PropTypes.oneOf([...Object.values(GRANULARITY_TYPES)])
[RHSM_API_QUERY_TYPES.GRANULARITY]: PropTypes.oneOf([...Object.values(GRANULARITY_TYPES)]),
[RHSM_API_QUERY_TYPES.START_DATE]: PropTypes.string,
[RHSM_API_QUERY_TYPES.END_DATE]: PropTypes.string
}),
inventoryHostsQuery: PropTypes.shape({
[RHSM_API_QUERY_TYPES.LIMIT]: PropTypes.number,
Expand Down
6 changes: 4 additions & 2 deletions src/components/productView/productViewRhel.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
} from '../../types/rhsmApiTypes';
import { ConnectedProductView, ProductView } from './productView';
import { translate } from '../i18n/i18n';
import { helpers } from '../../common';
import { dateHelpers, helpers } from '../../common';

/**
* A Red Hat Enterprise Linux configured view, and related system architectures.
Expand Down Expand Up @@ -57,7 +57,9 @@ ProductViewRhel.defaultProps = {
productConfig: {
query: {},
graphTallyQuery: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.START_DATE]: dateHelpers.getRangedDateTime(GRANULARITY_TYPES.DAILY).startDate.toISOString(),
[RHSM_API_QUERY_TYPES.END_DATE]: dateHelpers.getRangedDateTime(GRANULARITY_TYPES.DAILY).endDate.toISOString()
},
inventoryHostsQuery: {
[RHSM_API_QUERY_TYPES.SORT]: RHSM_API_QUERY_SORT_TYPES.LAST_SEEN,
Expand Down
6 changes: 4 additions & 2 deletions src/components/productView/productViewSatellite.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
} from '../../types/rhsmApiTypes';
import { ConnectedProductView, ProductView } from './productView';
import { translate } from '../i18n/i18n';
import { helpers } from '../../common';
import { dateHelpers, helpers } from '../../common';

/**
* A Red Hat Satellite configured view, and related system architectures.
Expand Down Expand Up @@ -57,7 +57,9 @@ ProductViewSatellite.defaultProps = {
productConfig: {
query: {},
graphTallyQuery: {
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY
[RHSM_API_QUERY_TYPES.GRANULARITY]: GRANULARITY_TYPES.DAILY,
[RHSM_API_QUERY_TYPES.START_DATE]: dateHelpers.getRangedDateTime(GRANULARITY_TYPES.DAILY).startDate.toISOString(),
[RHSM_API_QUERY_TYPES.END_DATE]: dateHelpers.getRangedDateTime(GRANULARITY_TYPES.DAILY).endDate.toISOString()
},
inventoryHostsQuery: {
[RHSM_API_QUERY_TYPES.SORT]: RHSM_API_QUERY_SORT_TYPES.LAST_SEEN,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,23 @@ Array [
exports[`ToolbarFieldGranularity Component should handle updating granularity through redux state: dispatch granularity 1`] = `
Array [
Array [
Object {
"granularity": "daily",
"type": "SET_QUERY_RHSM_granularity",
"viewId": "toolbarFieldGranularity",
},
Array [
Object {
"granularity": "daily",
"type": "SET_QUERY_RHSM_granularity",
"viewId": "toolbarFieldGranularity",
},
Object {
"beginning": "2019-06-20T00:00:00.000Z",
"type": "SET_QUERY_RHSM_beginning",
"viewId": "toolbarFieldGranularity",
},
Object {
"ending": "2019-07-20T23:59:59.999Z",
"type": "SET_QUERY_RHSM_ending",
"viewId": "toolbarFieldGranularity",
},
],
],
]
`;
Expand Down
27 changes: 21 additions & 6 deletions src/components/toolbar/toolbarFieldGranularity.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import { reduxTypes, store, useSelector } from '../../redux';
import { Select } from '../form/select';
import { RHSM_API_QUERY_GRANULARITY_TYPES as FIELD_TYPES, RHSM_API_QUERY_TYPES } from '../../types/rhsmApiTypes';
import { dateHelpers } from '../../common';
import { translate } from '../i18n/i18n';

/**
Expand Down Expand Up @@ -42,12 +43,26 @@ const ToolbarFieldGranularity = ({ options, t, value, viewId }) => {
* @param {object} event
* @returns {void}
*/
const onSelect = event =>
store.dispatch({
type: reduxTypes.query.SET_QUERY_RHSM_TYPES[RHSM_API_QUERY_TYPES.GRANULARITY],
viewId,
[RHSM_API_QUERY_TYPES.GRANULARITY]: event.value
});
const onSelect = event => {
const { startDate, endDate } = dateHelpers.getRangedDateTime(event.value);
store.dispatch([
{
type: reduxTypes.query.SET_QUERY_RHSM_TYPES[RHSM_API_QUERY_TYPES.GRANULARITY],
viewId,
[RHSM_API_QUERY_TYPES.GRANULARITY]: event.value
},
{
type: reduxTypes.query.SET_QUERY_RHSM_TYPES[RHSM_API_QUERY_TYPES.START_DATE],
viewId,
[RHSM_API_QUERY_TYPES.START_DATE]: startDate.toISOString()
},
{
type: reduxTypes.query.SET_QUERY_RHSM_TYPES[RHSM_API_QUERY_TYPES.END_DATE],
viewId,
[RHSM_API_QUERY_TYPES.END_DATE]: endDate.toISOString()
}
]);
};

return (
<Select
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,64 @@ Object {
}
`;

exports[`ViewReducer should handle specific defined types: defined type SET_QUERY_RHSM_beginning 1`] = `
Object {
"result": Object {
"graphTallyQuery": Object {
"test_id": Object {
"beginning": "2018-02-01T00:00:00.000Z",
},
},
"inventoryGuestsQuery": Object {},
"inventoryHostsQuery": Object {
"test_id": Object {
"dir": "dolor desc direction",
"offset": 30,
"sort": "dolor sort",
},
},
"inventorySubscriptionsQuery": Object {
"test_id": Object {
"dir": "ipsum desc direction",
"offset": 20,
"sort": "ipsum sort",
},
},
"query": Object {},
},
"type": "SET_QUERY_RHSM_beginning",
}
`;

exports[`ViewReducer should handle specific defined types: defined type SET_QUERY_RHSM_ending 1`] = `
Object {
"result": Object {
"graphTallyQuery": Object {
"test_id": Object {
"ending": "2021-02-01T23:59:59.999Z",
},
},
"inventoryGuestsQuery": Object {},
"inventoryHostsQuery": Object {
"test_id": Object {
"dir": "dolor desc direction",
"offset": 30,
"sort": "dolor sort",
},
},
"inventorySubscriptionsQuery": Object {
"test_id": Object {
"dir": "ipsum desc direction",
"offset": 20,
"sort": "ipsum sort",
},
},
"query": Object {},
},
"type": "SET_QUERY_RHSM_ending",
}
`;

exports[`ViewReducer should handle specific defined types: defined type SET_QUERY_RHSM_granularity 1`] = `
Object {
"result": Object {
Expand Down
2 changes: 2 additions & 0 deletions src/redux/reducers/__tests__/viewReducer.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ describe('ViewReducer', () => {
[RHSM_API_QUERY_TYPES.DIRECTION]: 'lorem asc direction',
[RHSM_API_QUERY_TYPES.DISPLAY_NAME]: 'lorem name',
[RHSM_API_QUERY_TYPES.GRANULARITY]: 'lorem granularity',
[RHSM_API_QUERY_TYPES.END_DATE]: '2021-02-01T23:59:59.999Z',
[RHSM_API_QUERY_TYPES.START_DATE]: '2018-02-01T00:00:00.000Z',
[RHSM_API_QUERY_TYPES.LIMIT]: 10,
[RHSM_API_QUERY_TYPES.OFFSET]: 10,
[RHSM_API_QUERY_TYPES.SORT]: 'lorem sort',
Expand Down
Loading

0 comments on commit bd3b2fa

Please sign in to comment.