From 16514bf462a5c4f0272626c9024e3fae99f3844f Mon Sep 17 00:00:00 2001 From: Honza Pokorny Date: Wed, 21 Feb 2018 13:28:30 -0400 Subject: [PATCH] eslint: use as-needed for arrow-body-style When a function that is introduced by an arrow, don't insert a return statement and its required curly braces when not needed. Bad: const f = () => { return 1; } Good: const f = () => 1 This patch consists of a change to .eslintrc, and automatically fixed files (via eslint --fix). Change-Id: I6afc3f91ee2cc44ae149e482d5633876c85c3cff --- .eslintrc | 1 + .../EnvironmentConfigurationActions.tests.js | 7 +- src/__tests__/actions/NodesActions.tests.js | 92 ++++---- .../actions/ParametersActions.tests.js | 14 +- src/__tests__/actions/PlansActions.tests.js | 41 ++-- src/__tests__/actions/StacksActions.tests.js | 14 +- .../actions/ValidationsActions.tests.js | 14 +- src/__tests__/actions/utils.js | 8 +- .../actions/workflowExecutionActions.tests.js | 14 +- .../components/ui/tables/DataTable.tests.js | 4 +- .../services/HeatApiService.tests.js | 7 +- src/js/components/UserAuthenticator.js | 12 +- .../deployment/DeploymentConfirmation.js | 30 ++- .../components/deployment/DeploymentDetail.js | 50 ++--- .../deployment/StackResourcesTable.js | 8 +- .../deployment_plan/ConfigurePlanStep.js | 28 ++- .../deployment_plan/DeploymentPlanStep.js | 28 ++- .../deployment_plan/HardwareStep.js | 12 +- .../EnvironmentCheckBox.js | 30 ++- src/js/components/i18n/I18nDropdown.js | 18 +- src/js/components/i18n/I18nProvider.js | 18 +- src/js/components/login/LanguageInput.js | 12 +- src/js/components/login/Login.js | 12 +- .../nodes/NodesListView/NodeExtendedInfo.js | 28 ++- src/js/components/nodes/NodesTable.js | 8 +- .../nodes/NodesToolbar/NodesToolbar.js | 38 ++-- .../nodes/registerNodes/NodesFileUpload.js | 34 ++- .../nodes/registerNodes/RegisterNodeFields.js | 212 +++++++++--------- .../nodes/registerNodes/RegisterNodesForm.js | 30 ++- .../notifications/NotificationsToaster.js | 8 +- .../parameters/ParameterInputList.js | 24 +- src/js/components/parameters/Parameters.js | 20 +- .../components/parameters/ParametersForm.js | 15 +- .../parameters/ParametersSidebar.js | 24 +- src/js/components/plan/PlanFileInput.js | 50 ++--- src/js/components/roles/NodesAssignment.js | 64 +++--- src/js/components/roles/RoleServices.js | 27 +-- src/js/components/ui/NavTab.js | 26 +-- src/js/components/ui/Toolbar/ToolbarInputs.js | 56 +++-- .../components/ui/dropdown/DropdownKebab.js | 22 +- src/js/components/ui/dropdown/MenuItemLink.js | 28 ++- src/js/components/ui/forms/FormErrorList.js | 12 +- .../ui/reduxForm/HorizontalCheckBox.js | 34 ++- .../ui/reduxForm/HorizontalInput.js | 34 ++- .../ui/reduxForm/HorizontalSelect.js | 46 ++-- .../ui/reduxForm/NodePickerInput.js | 22 +- src/js/components/ui/tables/DataTable.js | 4 +- src/js/components/ui/tables/DataTableRow.js | 8 +- src/js/components/validations/Validation.js | 32 ++- .../validations/ValidationDetail.js | 14 +- .../components/validations/ValidationsList.js | 62 +++-- .../validations/ValidationsToolbar.js | 29 +-- .../environmentConfigurationReducer.js | 8 +- src/js/reducers/filtersReducer.js | 11 +- src/js/selectors/environmentConfiguration.js | 34 ++- src/js/selectors/filters.js | 4 +- src/js/selectors/nodes.js | 8 +- src/js/selectors/notifications.js | 4 +- src/js/selectors/parameters.js | 50 ++--- src/js/selectors/plans.js | 7 +- src/js/selectors/stacks.js | 13 +- src/js/selectors/validations.js | 37 ++- src/js/utils/nodes.js | 5 +- 63 files changed, 753 insertions(+), 913 deletions(-) diff --git a/.eslintrc b/.eslintrc index 5b711a93..011bab67 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,5 +1,6 @@ { "rules": { + "arrow-body-style": [2, "as-needed"], "default-case": 0, "linebreak-style": [2, "unix"], "no-cond-assign": [2, "except-parens"], diff --git a/src/__tests__/actions/EnvironmentConfigurationActions.tests.js b/src/__tests__/actions/EnvironmentConfigurationActions.tests.js index 09ebbaaf..6a8e13a2 100644 --- a/src/__tests__/actions/EnvironmentConfigurationActions.tests.js +++ b/src/__tests__/actions/EnvironmentConfigurationActions.tests.js @@ -121,8 +121,8 @@ describe('updateEnvironmentConfiguration', () => { NotificationActions.notify = jest.fn(() => ({ type: 'NOTIFY' })); }); - it('dispatches actions', () => { - return store + it('dispatches actions', () => + store .dispatch( EnvironmentConfigurationActions.updateEnvironmentConfiguration('myPlan') ) @@ -140,6 +140,5 @@ describe('updateEnvironmentConfiguration', () => { stopSubmit('environmentConfigurationForm'), NotificationActions.notify({ type: 'NOTIFY' }) ]); - }); - }); + })); }); diff --git a/src/__tests__/actions/NodesActions.tests.js b/src/__tests__/actions/NodesActions.tests.js index fb1e3529..67d4aee6 100644 --- a/src/__tests__/actions/NodesActions.tests.js +++ b/src/__tests__/actions/NodesActions.tests.js @@ -177,18 +177,15 @@ describe('Fetching Introspection data success', () => { .mockReturnValue(() => Promise.resolve(response)); }); - it('dispatches fetchNodeIntrospectionDataSuccess', () => { - return store - .dispatch(NodesActions.fetchNodeIntrospectionData(nodeId)) - .then(() => { - expect( - IronicInspectorApiService.getIntrospectionData - ).toHaveBeenCalledWith(nodeId); - expect(store.getActions()).toEqual([ - NodesActions.fetchNodeIntrospectionDataSuccess(nodeId, response) - ]); - }); - }); + it('dispatches fetchNodeIntrospectionDataSuccess', () => + store.dispatch(NodesActions.fetchNodeIntrospectionData(nodeId)).then(() => { + expect( + IronicInspectorApiService.getIntrospectionData + ).toHaveBeenCalledWith(nodeId); + expect(store.getActions()).toEqual([ + NodesActions.fetchNodeIntrospectionDataSuccess(nodeId, response) + ]); + })); }); describe('Fetching Introspection data error', () => { @@ -208,18 +205,15 @@ describe('Fetching Introspection data error', () => { ErrorActions.handleErrors = jest.fn().mockReturnValue(() => {}); }); - it('dispatches fetchNodeIntrospectionDataFailed', () => { - return store - .dispatch(NodesActions.fetchNodeIntrospectionData(nodeId)) - .then(() => { - expect( - IronicInspectorApiService.getIntrospectionData - ).toHaveBeenCalledWith(nodeId); - expect(store.getActions()).toEqual([ - NodesActions.fetchNodeIntrospectionDataFailed(nodeId) - ]); - }); - }); + it('dispatches fetchNodeIntrospectionDataFailed', () => + store.dispatch(NodesActions.fetchNodeIntrospectionData(nodeId)).then(() => { + expect( + IronicInspectorApiService.getIntrospectionData + ).toHaveBeenCalledWith(nodeId); + expect(store.getActions()).toEqual([ + NodesActions.fetchNodeIntrospectionDataFailed(nodeId) + ]); + })); }); describe('Asynchronous Introspect Nodes Action', () => { @@ -235,22 +229,19 @@ describe('Asynchronous Introspect Nodes Action', () => { .mockReturnValue(() => {}); }); - it('dispatches startOperation', () => { - return store - .dispatch(NodesActions.startNodesIntrospection(nodeIds)) - .then(() => { - expect(MistralApiService.runWorkflow).toHaveBeenCalledWith( - MistralConstants.BAREMETAL_INTROSPECT, - { - node_uuids: nodeIds - } - ); - expect(NodesActions.pollNodeslistDuringProgress).toHaveBeenCalled(); - expect(store.getActions()).toEqual([ - NodesActions.startOperation(nodeIds) - ]); - }); - }); + it('dispatches startOperation', () => + store.dispatch(NodesActions.startNodesIntrospection(nodeIds)).then(() => { + expect(MistralApiService.runWorkflow).toHaveBeenCalledWith( + MistralConstants.BAREMETAL_INTROSPECT, + { + node_uuids: nodeIds + } + ); + expect(NodesActions.pollNodeslistDuringProgress).toHaveBeenCalled(); + expect(store.getActions()).toEqual([ + NodesActions.startOperation(nodeIds) + ]); + })); }); describe('nodesIntrospectionFinished', () => { @@ -327,8 +318,8 @@ describe('startProvideNodes Action', () => { .mockReturnValue(() => {}); }); - it('dispatches actions', () => { - return store.dispatch(NodesActions.startProvideNodes(nodeIds)).then(() => { + it('dispatches actions', () => + store.dispatch(NodesActions.startProvideNodes(nodeIds)).then(() => { expect(MistralApiService.runWorkflow).toHaveBeenCalledWith( MistralConstants.BAREMETAL_PROVIDE, { @@ -339,8 +330,7 @@ describe('startProvideNodes Action', () => { expect(store.getActions()).toEqual([ NodesActions.startOperation(nodeIds) ]); - }); - }); + })); }); describe('provideNodesFinished', () => { @@ -402,14 +392,13 @@ describe('Update Node thunk action', () => { .mockReturnValue(() => Promise.resolve({ uuid: 'someId' })); }); - it('dispatches required actions', () => { - return store.dispatch(NodesActions.updateNode(nodePatch)).then(() => { + it('dispatches required actions', () => + store.dispatch(NodesActions.updateNode(nodePatch)).then(() => { expect(store.getActions()).toEqual([ NodesActions.updateNodePending('someId'), NodesActions.updateNodeSuccess({ uuid: 'someId' }) ]); - }); - }); + })); }); describe('Delete Nodes thunk action', () => { @@ -422,12 +411,11 @@ describe('Delete Nodes thunk action', () => { .mockReturnValue(() => Promise.resolve()); }); - it('successfully deletes a set of nodes', () => { - return store.dispatch(NodesActions.deleteNodes(nodeIds)).then(() => { + it('successfully deletes a set of nodes', () => + store.dispatch(NodesActions.deleteNodes(nodeIds)).then(() => { expect(store.getActions()).toEqual([ NodesActions.startOperation(nodeIds), NodesActions.deleteNodeSuccess(nodeIds[0]) ]); - }); - }); + })); }); diff --git a/src/__tests__/actions/ParametersActions.tests.js b/src/__tests__/actions/ParametersActions.tests.js index 6192f97e..1969a546 100644 --- a/src/__tests__/actions/ParametersActions.tests.js +++ b/src/__tests__/actions/ParametersActions.tests.js @@ -77,8 +77,8 @@ describe('ParametersActions', () => { .mockReturnValue(() => Promise.resolve(responseBody)); }); - it('dispatches actions', () => { - return store + it('dispatches actions', () => + store .dispatch(ParametersActions.fetchParameters('overcloud')) .then(() => { expect(MistralApiService.runAction).toHaveBeenCalled(); @@ -86,8 +86,7 @@ describe('ParametersActions', () => { ParametersActions.fetchParametersPending(), ParametersActions.fetchParametersSuccess(normalizedResponse) ]); - }); - }); + })); }); describe('updateParameters (fail)', () => { @@ -101,8 +100,8 @@ describe('ParametersActions', () => { ErrorActions.handleErrors = jest.fn().mockReturnValue(() => {}); }); - it('calls required actions', () => { - return store + it('calls required actions', () => + store .dispatch( ParametersActions.updateParameters('overcloud', { foo: 'bar' }) ) @@ -123,7 +122,6 @@ describe('ParametersActions', () => { } }) ]); - }); - }); + })); }); }); diff --git a/src/__tests__/actions/PlansActions.tests.js b/src/__tests__/actions/PlansActions.tests.js index b98b4265..cc090f59 100644 --- a/src/__tests__/actions/PlansActions.tests.js +++ b/src/__tests__/actions/PlansActions.tests.js @@ -36,8 +36,8 @@ describe('PlansActions', () => { .mockReturnValue(() => Promise.resolve()); }); - it('dispatches actions', () => { - return store + it('dispatches actions', () => + store .dispatch( PlansActions.updatePlan('somecloud', { someFile: { contents: 'file contents' } @@ -48,8 +48,7 @@ describe('PlansActions', () => { expect(store.getActions()).toEqual([ PlansActions.updatePlanPending('somecloud') ]); - }); - }); + })); }); describe('createPlan', () => { @@ -67,15 +66,10 @@ describe('PlansActions', () => { .mockReturnValue(() => Promise.resolve()); }); - it('dispatches actions', () => { - return store - .dispatch(PlansActions.createPlan('somecloud', {})) - .then(() => { - expect(store.getActions()).toEqual([ - PlansActions.createPlanPending() - ]); - }); - }); + it('dispatches actions', () => + store.dispatch(PlansActions.createPlan('somecloud', {})).then(() => { + expect(store.getActions()).toEqual([PlansActions.createPlanPending()]); + })); }); describe('deletePlans', () => { @@ -87,8 +81,8 @@ describe('PlansActions', () => { .mockReturnValue(() => Promise.resolve()); }); - it('dispatches actions', () => { - return store + it('dispatches actions', () => + store .dispatch(PlansActions.deletePlan('somecloud', mockHistory)) .then(() => { expect(store.getActions().map(action => action.type)).toEqual([ @@ -96,8 +90,7 @@ describe('PlansActions', () => { 'DELETE_PLAN_SUCCESS', 'NOTIFY' ]); - }); - }); + })); }); describe('fetchPlans', () => { @@ -124,15 +117,14 @@ describe('PlansActions', () => { .mockReturnValue(() => Promise.resolve(apiResponseMistral)); }); - it('dispatches actions', () => { - return store.dispatch(PlansActions.fetchPlans()).then(() => { + it('dispatches actions', () => + store.dispatch(PlansActions.fetchPlans()).then(() => { expect(MistralApiService.runAction).toHaveBeenCalled(); expect(store.getActions()).toEqual([ PlansActions.requestPlans(), PlansActions.receivePlans(expectedPlans) ]); - }); - }); + })); }); describe('fetchPlan', () => { @@ -152,14 +144,13 @@ describe('PlansActions', () => { .mockReturnValue(() => Promise.resolve(apiResponse)); }); - it('dispatches actions', () => { - return store.dispatch(PlansActions.fetchPlan('overcloud')).then(() => { + it('dispatches actions', () => + store.dispatch(PlansActions.fetchPlan('overcloud')).then(() => { expect(SwiftApiService.getContainer).toHaveBeenCalled(); expect(store.getActions()).toEqual([ PlansActions.requestPlan(), PlansActions.receivePlan('overcloud', normalizedResponse) ]); - }); - }); + })); }); }); diff --git a/src/__tests__/actions/StacksActions.tests.js b/src/__tests__/actions/StacksActions.tests.js index 88476deb..fbebb503 100644 --- a/src/__tests__/actions/StacksActions.tests.js +++ b/src/__tests__/actions/StacksActions.tests.js @@ -35,15 +35,14 @@ describe('StacksActions', () => { .mockReturnValue(() => Promise.resolve(serviceResponse)); }); - it('dispatches actions', () => { - return store.dispatch(StacksActions.fetchStacks()).then(() => { + it('dispatches actions', () => + store.dispatch(StacksActions.fetchStacks()).then(() => { expect(HeatApiService.getStacks).toHaveBeenCalled(); expect(store.getActions()).toEqual([ StacksActions.fetchStacksPending(), StacksActions.fetchStacksSuccess(normalizedStacks) ]); - }); - }); + })); }); describe('fetchStacks (failed)', () => { @@ -56,15 +55,14 @@ describe('StacksActions', () => { ErrorActions.handleErrors = jest.fn().mockReturnValue(() => {}); }); - it('dispatches actions', () => { - return store.dispatch(StacksActions.fetchStacks()).then(() => { + it('dispatches actions', () => + store.dispatch(StacksActions.fetchStacks()).then(() => { expect(HeatApiService.getStacks).toHaveBeenCalled(); expect(store.getActions()).toEqual([ StacksActions.fetchStacksPending(), StacksActions.fetchStacksFailed() ]); - }); - }); + })); }); // describe('fetchStacks (failed)', () => { diff --git a/src/__tests__/actions/ValidationsActions.tests.js b/src/__tests__/actions/ValidationsActions.tests.js index a4a7e7d9..39e4379f 100644 --- a/src/__tests__/actions/ValidationsActions.tests.js +++ b/src/__tests__/actions/ValidationsActions.tests.js @@ -81,8 +81,8 @@ describe('FetchValidations action', () => { .mockReturnValue(() => Promise.resolve(response)); }); - it('dispatches appropriate actions and normalizes the response', () => { - return store.dispatch(ValidationsActions.fetchValidations()).then(() => { + it('dispatches appropriate actions and normalizes the response', () => + store.dispatch(ValidationsActions.fetchValidations()).then(() => { expect(MistralApiService.runAction).toHaveBeenCalledWith( MistralConstants.VALIDATIONS_LIST ); @@ -90,8 +90,7 @@ describe('FetchValidations action', () => { ValidationsActions.fetchValidationsPending(), ValidationsActions.fetchValidationsSuccess(normalizedResponse) ]); - }); - }); + })); }); describe('RunValidation action', () => { @@ -118,8 +117,8 @@ describe('RunValidation action', () => { .mockReturnValue(() => Promise.resolve(addWorkflowExecutionResponse)); }); - it('dispatches appropriate actions', () => { - return store + it('dispatches appropriate actions', () => + store .dispatch(ValidationsActions.runValidation('512e', 'overcloud')) .then(() => { expect(MistralApiService.runWorkflow).toHaveBeenCalledWith( @@ -134,8 +133,7 @@ describe('RunValidation action', () => { addWorkflowExecutionResponse ) ]); - }); - }); + })); }); // TODO(jtomasek): this test compares 2 immutable records and even though they're the same diff --git a/src/__tests__/actions/utils.js b/src/__tests__/actions/utils.js index 6533b1a9..24be4dbe 100644 --- a/src/__tests__/actions/utils.js +++ b/src/__tests__/actions/utils.js @@ -18,11 +18,9 @@ import configureMockStore from 'redux-mock-store'; import thunkMiddleware from 'redux-thunk'; export const mockGetIntl = { - getIntl: () => { - return { - formatMessage: msgObj => msgObj.defaultMessage - }; - } + getIntl: () => ({ + formatMessage: msgObj => msgObj.defaultMessage + }) }; export const mockStore = configureMockStore([ diff --git a/src/__tests__/actions/workflowExecutionActions.tests.js b/src/__tests__/actions/workflowExecutionActions.tests.js index ebe2d053..56523f55 100644 --- a/src/__tests__/actions/workflowExecutionActions.tests.js +++ b/src/__tests__/actions/workflowExecutionActions.tests.js @@ -45,8 +45,8 @@ describe('fetchWorkflowExecutions action', () => { .mockReturnValue(() => Promise.resolve(response)); }); - it('dispatches appropriate actions and normalizes the response', () => { - return store + it('dispatches appropriate actions and normalizes the response', () => + store .dispatch(WorkflowExecutionsActions.fetchWorkflowExecutions()) .then(() => { expect(MistralApiService.getWorkflowExecutions).toHaveBeenCalled(); @@ -56,8 +56,7 @@ describe('fetchWorkflowExecutions action', () => { normalizedResponse ) ]); - }); - }); + })); }); describe('updateWorkflowExecution action', () => { @@ -69,8 +68,8 @@ describe('updateWorkflowExecution action', () => { .mockReturnValue(() => Promise.resolve()); }); - it('dispatches appropriate actions', () => { - return store + it('dispatches appropriate actions', () => + store .dispatch( WorkflowExecutionsActions.updateWorkflowExecution('512e', { state: 'PAUSED' @@ -87,6 +86,5 @@ describe('updateWorkflowExecution action', () => { }), WorkflowExecutionsActions.addWorkflowExecution() ]); - }); - }); + })); }); diff --git a/src/__tests__/components/ui/tables/DataTable.tests.js b/src/__tests__/components/ui/tables/DataTable.tests.js index 6faae0da..99391000 100644 --- a/src/__tests__/components/ui/tables/DataTable.tests.js +++ b/src/__tests__/components/ui/tables/DataTable.tests.js @@ -34,9 +34,7 @@ const mockNoRowsRenderer = function() { return 'There are no items in data'; }; -const mockOnFilter = () => { - return 'Filtering Happened'; -}; +const mockOnFilter = () => 'Filtering Happened'; describe('DataTable component', () => { let DataTableVdom, DataTableInstance; diff --git a/src/__tests__/services/HeatApiService.tests.js b/src/__tests__/services/HeatApiService.tests.js index 306a9747..036376ca 100644 --- a/src/__tests__/services/HeatApiService.tests.js +++ b/src/__tests__/services/HeatApiService.tests.js @@ -35,8 +35,8 @@ describe('HeatApiService', () => { .mockReturnValue(() => Promise.resolve(apiResponse)); }); - it('returns a stack object based on ', () => { - return store.dispatch(HeatApiService.getStacks()).then(result => { + it('returns a stack object based on ', () => + store.dispatch(HeatApiService.getStacks()).then(result => { expect(HeatApiService.defaultRequest).toHaveBeenCalled(); expect(result).toEqual({ stacks: [ @@ -44,7 +44,6 @@ describe('HeatApiService', () => { { stack_name: 'anothercloud', stack_status: 'CREATE_FAILED' } ] }); - }); - }); + })); }); }); diff --git a/src/js/components/UserAuthenticator.js b/src/js/components/UserAuthenticator.js index ed695ab5..707de6fe 100644 --- a/src/js/components/UserAuthenticator.js +++ b/src/js/components/UserAuthenticator.js @@ -87,13 +87,11 @@ UserAuthenticator.propTypes = { location: PropTypes.object.isRequired }; -const mapStateToProps = state => { - return { - isAuthenticated: state.login.isAuthenticated, - isAuthenticating: state.login.isAuthenticating, - keystoneAuthTokenId: state.login.tokenId - }; -}; +const mapStateToProps = state => ({ + isAuthenticated: state.login.isAuthenticated, + isAuthenticating: state.login.isAuthenticating, + keystoneAuthTokenId: state.login.tokenId +}); const mapDispatchToProps = dispatch => ({ authenticateUserViaToken: tokenId => diff --git a/src/js/components/deployment/DeploymentConfirmation.js b/src/js/components/deployment/DeploymentConfirmation.js index 581e3d3c..53f4f711 100644 --- a/src/js/components/deployment/DeploymentConfirmation.js +++ b/src/js/components/deployment/DeploymentConfirmation.js @@ -134,23 +134,21 @@ ValidationsWarning.propTypes = { }; export const DeployButton = injectIntl( - ({ deploy, disabled, intl, isRequestingPlanDeploy }) => { - return ( - - ); - } + + + + ) ); DeployButton.propTypes = { deploy: PropTypes.func.isRequired, diff --git a/src/js/components/deployment/DeploymentDetail.js b/src/js/components/deployment/DeploymentDetail.js index b58e8a36..e006ee4a 100644 --- a/src/js/components/deployment/DeploymentDetail.js +++ b/src/js/components/deployment/DeploymentDetail.js @@ -173,34 +173,30 @@ DeploymentDetail.propTypes = { stacksLoaded: PropTypes.bool.isRequired }; -const mapStateToProps = state => { - return { - allPreDeploymentValidationsSuccessful: allPreDeploymentValidationsSuccessful( - state - ), - currentPlan: getCurrentPlan(state), - currentPlanName: getCurrentPlanName(state), - currentStack: getCurrentStack(state), - currentStackDeploymentProgress: getCurrentStackDeploymentProgress(state), - currentStackResources: state.stacks.resources, - currentStackResourcesLoaded: state.stacks.resourcesLoaded, - environmentConfigurationSummary: getEnvironmentConfigurationSummary(state), - overcloudInfo: getOvercloudInfo(state), - stacksLoaded: state.stacks.isLoaded - }; -}; +const mapStateToProps = state => ({ + allPreDeploymentValidationsSuccessful: allPreDeploymentValidationsSuccessful( + state + ), + currentPlan: getCurrentPlan(state), + currentPlanName: getCurrentPlanName(state), + currentStack: getCurrentStack(state), + currentStackDeploymentProgress: getCurrentStackDeploymentProgress(state), + currentStackResources: state.stacks.resources, + currentStackResourcesLoaded: state.stacks.resourcesLoaded, + environmentConfigurationSummary: getEnvironmentConfigurationSummary(state), + overcloudInfo: getOvercloudInfo(state), + stacksLoaded: state.stacks.isLoaded +}); -const mapDispatchToProps = dispatch => { - return { - deployPlan: planName => dispatch(PlanActions.deployPlan(planName)), - fetchStackResources: stack => - dispatch(StacksActions.fetchResources(stack.stack_name, stack.id)), - runPreDeploymentValidations: planName => - dispatch( - ValidationsActions.runValidationGroups(['pre-deployment'], planName) - ) - }; -}; +const mapDispatchToProps = dispatch => ({ + deployPlan: planName => dispatch(PlanActions.deployPlan(planName)), + fetchStackResources: stack => + dispatch(StacksActions.fetchResources(stack.stack_name, stack.id)), + runPreDeploymentValidations: planName => + dispatch( + ValidationsActions.runValidationGroups(['pre-deployment'], planName) + ) +}); export default injectIntl( connect(mapStateToProps, mapDispatchToProps)(DeploymentDetail) diff --git a/src/js/components/deployment/StackResourcesTable.js b/src/js/components/deployment/StackResourcesTable.js index c4020c6f..561750d7 100644 --- a/src/js/components/deployment/StackResourcesTable.js +++ b/src/js/components/deployment/StackResourcesTable.js @@ -87,11 +87,9 @@ class StackResourcesTable extends React.Component { let dataKeys = ['resource_name', 'resource_status']; return filterString ? data.filter(row => { - let result = dataKeys.filter(dataKey => { - return row[dataKey] - .toLowerCase() - .includes(filterString.toLowerCase()); - }); + let result = dataKeys.filter(dataKey => + row[dataKey].toLowerCase().includes(filterString.toLowerCase()) + ); return result.length > 0; }) : data; diff --git a/src/js/components/deployment_plan/ConfigurePlanStep.js b/src/js/components/deployment_plan/ConfigurePlanStep.js index 1061ff0d..221dd05c 100644 --- a/src/js/components/deployment_plan/ConfigurePlanStep.js +++ b/src/js/components/deployment_plan/ConfigurePlanStep.js @@ -28,21 +28,19 @@ const messages = defineMessages({ } }); -const ConfigurePlanStep = props => { - return ( -
- -
- - - -
- ); -}; +const ConfigurePlanStep = props => ( +
+ +
+ + + +
+); ConfigurePlanStep.propTypes = { fetchEnvironmentConfiguration: PropTypes.func.isRequired, isFetching: PropTypes.bool.isRequired, diff --git a/src/js/components/deployment_plan/DeploymentPlanStep.js b/src/js/components/deployment_plan/DeploymentPlanStep.js index cae1985a..c6cd19d8 100644 --- a/src/js/components/deployment_plan/DeploymentPlanStep.js +++ b/src/js/components/deployment_plan/DeploymentPlanStep.js @@ -17,21 +17,19 @@ import React from 'react'; import PropTypes from 'prop-types'; -export const DeploymentPlanStep = ({ children, disabled, title, tooltip }) => { - return ( -
  • -

    - {title} - {tooltip ? ( - - - - ) : null} -

    - {children} -
  • - ); -}; +export const DeploymentPlanStep = ({ children, disabled, title, tooltip }) => ( +
  • +

    + {title} + {tooltip ? ( + + + + ) : null} +

    + {children} +
  • +); DeploymentPlanStep.propTypes = { children: PropTypes.node, diff --git a/src/js/components/deployment_plan/HardwareStep.js b/src/js/components/deployment_plan/HardwareStep.js index abe0ee83..6d434248 100644 --- a/src/js/components/deployment_plan/HardwareStep.js +++ b/src/js/components/deployment_plan/HardwareStep.js @@ -25,12 +25,10 @@ const messages = defineMessages({ } }); -const HardwareStep = () => { - return ( - - - - ); -}; +const HardwareStep = () => ( + + + +); export default HardwareStep; diff --git a/src/js/components/environment_configuration/EnvironmentCheckBox.js b/src/js/components/environment_configuration/EnvironmentCheckBox.js index 68eab959..96f49ebc 100644 --- a/src/js/components/environment_configuration/EnvironmentCheckBox.js +++ b/src/js/components/environment_configuration/EnvironmentCheckBox.js @@ -40,22 +40,20 @@ const EnvironmentCheckBox = ({ meta, required, ...rest -}) => { - return ( - - - - {label} - - - - - - ); -}; +}) => ( + + + + {label} + + + + + +); EnvironmentCheckBox.propTypes = { description: PropTypes.node, id: PropTypes.string.isRequired, diff --git a/src/js/components/i18n/I18nDropdown.js b/src/js/components/i18n/I18nDropdown.js index 10f3adaf..9ffcf958 100644 --- a/src/js/components/i18n/I18nDropdown.js +++ b/src/js/components/i18n/I18nDropdown.js @@ -71,18 +71,14 @@ I18nDropdown.propTypes = { languages: ImmutablePropTypes.map.isRequired }; -const mapStateToProps = state => { - return { - languages: getEnabledLanguages(state), - currentLanguage: getCurrentLanguage(state) - }; -}; +const mapStateToProps = state => ({ + languages: getEnabledLanguages(state), + currentLanguage: getCurrentLanguage(state) +}); -const mapDispatchToProps = dispatch => { - return { - chooseLanguage: language => dispatch(I18nActions.chooseLanguage(language)) - }; -}; +const mapDispatchToProps = dispatch => ({ + chooseLanguage: language => dispatch(I18nActions.chooseLanguage(language)) +}); export default injectIntl( connect(mapStateToProps, mapDispatchToProps)(I18nDropdown) diff --git a/src/js/components/i18n/I18nProvider.js b/src/js/components/i18n/I18nProvider.js index d5273b7d..96e9add7 100644 --- a/src/js/components/i18n/I18nProvider.js +++ b/src/js/components/i18n/I18nProvider.js @@ -58,17 +58,13 @@ I18nProvider.defaultProps = { messages: {} }; -const mapDispatchToProps = dispatch => { - return { - detectLanguage: language => dispatch(I18nActions.detectLanguage(language)) - }; -}; +const mapDispatchToProps = dispatch => ({ + detectLanguage: language => dispatch(I18nActions.detectLanguage(language)) +}); -const mapStateToProps = state => { - return { - language: getCurrentLanguage(state), - messages: getCurrentLanguageMessages(state) - }; -}; +const mapStateToProps = state => ({ + language: getCurrentLanguage(state), + messages: getCurrentLanguageMessages(state) +}); export default connect(mapStateToProps, mapDispatchToProps)(I18nProvider); diff --git a/src/js/components/login/LanguageInput.js b/src/js/components/login/LanguageInput.js index 4eabdcd5..12236c2e 100644 --- a/src/js/components/login/LanguageInput.js +++ b/src/js/components/login/LanguageInput.js @@ -22,13 +22,11 @@ import { injectIntl } from 'react-intl'; class LanguageInput extends React.Component { _renderOptions() { return this.props.languages - .map((langName, langKey) => { - return ( - - ); - }) + .map((langName, langKey) => ( + + )) .toList(); } diff --git a/src/js/components/login/Login.js b/src/js/components/login/Login.js index c2871831..d7d2f601 100644 --- a/src/js/components/login/Login.js +++ b/src/js/components/login/Login.js @@ -226,12 +226,10 @@ function mapStateToProps(state) { }; } -const mapDispatchToProps = dispatch => { - return { - chooseLanguage: language => dispatch(I18nActions.chooseLanguage(language)), - authenticateUser: (formData, formFields, nextPath) => - dispatch(LoginActions.authenticateUser(formData, formFields, nextPath)) - }; -}; +const mapDispatchToProps = dispatch => ({ + chooseLanguage: language => dispatch(I18nActions.chooseLanguage(language)), + authenticateUser: (formData, formFields, nextPath) => + dispatch(LoginActions.authenticateUser(formData, formFields, nextPath)) +}); export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(Login)); diff --git a/src/js/components/nodes/NodesListView/NodeExtendedInfo.js b/src/js/components/nodes/NodesListView/NodeExtendedInfo.js index f1bb0aef..c63c7f91 100644 --- a/src/js/components/nodes/NodesListView/NodeExtendedInfo.js +++ b/src/js/components/nodes/NodesListView/NodeExtendedInfo.js @@ -118,21 +118,19 @@ class NodeExtendedInfo extends React.Component {
    {node .getIn(['introspectionData', 'interfaces']) - .map((ifc, k) => { - return ( -
    - {k} -{' '} - - {ifc.get('mac')} - {' '} - |{' '} - - {ifc.get('ip')} - - {ifc.get('pxe') && '| PXE'} -
    - ); - }) + .map((ifc, k) => ( +
    + {k} -{' '} + + {ifc.get('mac')} + {' '} + |{' '} + + {ifc.get('ip')} + + {ifc.get('pxe') && '| PXE'} +
    + )) .toList()}
    diff --git a/src/js/components/nodes/NodesTable.js b/src/js/components/nodes/NodesTable.js index d40bf766..0ab85f7d 100644 --- a/src/js/components/nodes/NodesTable.js +++ b/src/js/components/nodes/NodesTable.js @@ -130,11 +130,9 @@ class NodesTable extends React.Component { let dataKeys = ['name']; return filterString ? data.filter(row => { - let result = dataKeys.filter(dataKey => { - return row[dataKey] - .toLowerCase() - .includes(filterString.toLowerCase()); - }); + let result = dataKeys.filter(dataKey => + row[dataKey].toLowerCase().includes(filterString.toLowerCase()) + ); return result.length > 0; }) : data; diff --git a/src/js/components/nodes/NodesToolbar/NodesToolbar.js b/src/js/components/nodes/NodesToolbar/NodesToolbar.js index 7132bec8..a8ac253d 100644 --- a/src/js/components/nodes/NodesToolbar/NodesToolbar.js +++ b/src/js/components/nodes/NodesToolbar/NodesToolbar.js @@ -183,27 +183,23 @@ NodesToolbar.propTypes = { submitNodesToolbarForm: PropTypes.func.isRequired, updateFilter: PropTypes.func.isRequired }; -const mapDispatchToProps = dispatch => { - return { - clearActiveFilters: () => dispatch(clearActiveFilters('nodesToolbar')), - deleteActiveFilter: uuid => - dispatch(deleteActiveFilter('nodesToolbar', uuid)), - submitNodesToolbarForm: () => dispatch(submit('nodesToolbar')), - addActiveFilter: data => dispatch(addActiveFilter('nodesToolbar', data)), - updateFilter: data => dispatch(updateFilter('nodesToolbar', data)) - }; -}; -const mapStateToProps = state => { - return { - activeFilters: getActiveFilters(state, 'nodesToolbar'), - filteredNodesCount: getFilteredNodes(state).size, - filteredNodes: getFilteredNodes(state), - nodesToolbarFilter: getFilterByName(state, 'nodesToolbar').delete( - 'activeFilters' - ), - nodesCount: getNodes(state).size - }; -}; +const mapDispatchToProps = dispatch => ({ + clearActiveFilters: () => dispatch(clearActiveFilters('nodesToolbar')), + deleteActiveFilter: uuid => + dispatch(deleteActiveFilter('nodesToolbar', uuid)), + submitNodesToolbarForm: () => dispatch(submit('nodesToolbar')), + addActiveFilter: data => dispatch(addActiveFilter('nodesToolbar', data)), + updateFilter: data => dispatch(updateFilter('nodesToolbar', data)) +}); +const mapStateToProps = state => ({ + activeFilters: getActiveFilters(state, 'nodesToolbar'), + filteredNodesCount: getFilteredNodes(state).size, + filteredNodes: getFilteredNodes(state), + nodesToolbarFilter: getFilterByName(state, 'nodesToolbar').delete( + 'activeFilters' + ), + nodesCount: getNodes(state).size +}); export default injectIntl( connect(mapStateToProps, mapDispatchToProps)(NodesToolbar) ); diff --git a/src/js/components/nodes/registerNodes/NodesFileUpload.js b/src/js/components/nodes/registerNodes/NodesFileUpload.js index 6a4c41b7..4d90a9be 100644 --- a/src/js/components/nodes/registerNodes/NodesFileUpload.js +++ b/src/js/components/nodes/registerNodes/NodesFileUpload.js @@ -65,24 +65,22 @@ class NodesFileUpload extends React.Component { const file = event.target.files[0]; const reader = new FileReader(); - reader.onload = (f => { - return e => { - if (file.name.match(/(\.json)$/)) { - this.addNodesFromInstackenvJSON(e.target.result); - } else if (file.name.match(/(\.csv)$/)) { - // TODO(jtomasek): add CSV file support - // this.addNodesFromCSV(e.target.result); - notify({ - title: formatMessage(messages.csvUnsupported), - message: formatMessage(messages.selectedFileUnsupported) - }); - } else { - notify({ - title: formatMessage(messages.unsupportedFileFormat), - message: formatMessage(messages.provideCsvOrInstackenvJson) - }); - } - }; + reader.onload = (f => e => { + if (file.name.match(/(\.json)$/)) { + this.addNodesFromInstackenvJSON(e.target.result); + } else if (file.name.match(/(\.csv)$/)) { + // TODO(jtomasek): add CSV file support + // this.addNodesFromCSV(e.target.result); + notify({ + title: formatMessage(messages.csvUnsupported), + message: formatMessage(messages.selectedFileUnsupported) + }); + } else { + notify({ + title: formatMessage(messages.unsupportedFileFormat), + message: formatMessage(messages.provideCsvOrInstackenvJson) + }); + } })(file); reader.readAsText(file); this.refs.regNodesUploadFileForm.reset(); diff --git a/src/js/components/nodes/registerNodes/RegisterNodeFields.js b/src/js/components/nodes/registerNodes/RegisterNodeFields.js index bfd96864..aac4be43 100644 --- a/src/js/components/nodes/registerNodes/RegisterNodeFields.js +++ b/src/js/components/nodes/registerNodes/RegisterNodeFields.js @@ -114,114 +114,112 @@ const RegisterNodeFields = ({ node, intl: { formatMessage }, selectedDriver -}) => { - return ( -
    -

    - -

    -
    - -
    -
    - - {['pxe_ipmitool', 'pxe_drac'].map((value, index) => ( - - ))} - - {renderDriverFields(selectedDriver, node)} -
    -
    - - {[undefined, 'x86_64', 'i386'].map((value, index) => ( - - ))} - - ': 0, +}) => ( +
    +

    + +

    +
    + - ': 0, - allowBlank: true - })} - /> - ': 0, - allowBlank: true - })} - /> -
    -
    - value.split(',')} - required - /> -
    -
    - ); -}; + }), + length({ max: 255 }) + ]} + /> +
    +
    + + {['pxe_ipmitool', 'pxe_drac'].map((value, index) => ( + + ))} + + {renderDriverFields(selectedDriver, node)} +
    +
    + + {[undefined, 'x86_64', 'i386'].map((value, index) => ( + + ))} + + ': 0, + allowBlank: true + })} + /> + ': 0, + allowBlank: true + })} + /> + ': 0, + allowBlank: true + })} + /> +
    +
    + value.split(',')} + required + /> +
    +
    +); RegisterNodeFields.propTypes = { intl: PropTypes.object.isRequired, node: PropTypes.string.isRequired, diff --git a/src/js/components/nodes/registerNodes/RegisterNodesForm.js b/src/js/components/nodes/registerNodes/RegisterNodesForm.js index 9ef25ddc..bc724f21 100644 --- a/src/js/components/nodes/registerNodes/RegisterNodesForm.js +++ b/src/js/components/nodes/registerNodes/RegisterNodesForm.js @@ -36,23 +36,19 @@ const messages = defineMessages({ } }); -export const RegisterNodesTabPanes = ({ fields, meta, selectedNodeIndex }) => { - return ( -
    - {fields.map((node, index, fields) => { - return ( - - - - ); - })} -
    - ); -}; +export const RegisterNodesTabPanes = ({ fields, meta, selectedNodeIndex }) => ( +
    + {fields.map((node, index, fields) => ( + + + + ))} +
    +); RegisterNodesTabPanes.propTypes = { fields: PropTypes.object.isRequired, meta: PropTypes.object.isRequired, diff --git a/src/js/components/notifications/NotificationsToaster.js b/src/js/components/notifications/NotificationsToaster.js index cbc70ded..8a6b9177 100644 --- a/src/js/components/notifications/NotificationsToaster.js +++ b/src/js/components/notifications/NotificationsToaster.js @@ -42,8 +42,9 @@ class NotificationsToaster extends React.Component { } renderNotifications() { - return this.props.notifications.toList().map(notification => { - return ( + return this.props.notifications + .toList() + .map(notification => ( - ); - }); + )); } render() { diff --git a/src/js/components/parameters/ParameterInputList.js b/src/js/components/parameters/ParameterInputList.js index 9e515f56..8c630690 100644 --- a/src/js/components/parameters/ParameterInputList.js +++ b/src/js/components/parameters/ParameterInputList.js @@ -36,19 +36,17 @@ class ParameterInputList extends React.Component { this.props.emptyParametersMessage || this.props.intl.formatMessage(messages.noParameters); - const parameters = this.props.parameters.map(parameter => { - return ( - - ); - }); + const parameters = this.props.parameters.map(parameter => ( + + )); if (parameters.isEmpty()) { return ( diff --git a/src/js/components/parameters/Parameters.js b/src/js/components/parameters/Parameters.js index 290bf63a..cfc88caa 100644 --- a/src/js/components/parameters/Parameters.js +++ b/src/js/components/parameters/Parameters.js @@ -66,17 +66,15 @@ class Parameters extends React.Component { ); } else { - return this.props.enabledEnvironments.toList().map(environment => { - return ( - - - - ); - }); + return this.props.enabledEnvironments.toList().map(environment => ( + + + + )); } } diff --git a/src/js/components/parameters/ParametersForm.js b/src/js/components/parameters/ParametersForm.js index d9916f45..bf472537 100644 --- a/src/js/components/parameters/ParametersForm.js +++ b/src/js/components/parameters/ParametersForm.js @@ -166,8 +166,8 @@ const convertJsonTypeParameterValueToString = value => // accept empty string as valid value ['', undefined].includes(value) ? '' : JSON.stringify(value); -const getFormInitialValues = parameters => { - return parameters +const getFormInitialValues = parameters => + parameters .map(p => { const value = p.value === undefined ? p.default : p.value; if (p.type.toLowerCase() === 'json') { @@ -177,22 +177,20 @@ const getFormInitialValues = parameters => { } }) .toJS(); -}; /** * Filter out non updated parameters, so only parameters which have been actually changed * get sent to updateparameters */ -const filterFormData = (values, initialValues) => { - return pickBy(values, (value, key) => !isEqual(value, initialValues[key])); -}; +const filterFormData = (values, initialValues) => + pickBy(values, (value, key) => !isEqual(value, initialValues[key])); /** * Json parameter values are sent as string, this function parses them and checks if they're object * or array. Also, parameters with undefined value are set to null */ -const parseJsonTypeValues = (values, parameters) => { - return mapValues(values, (value, key) => { +const parseJsonTypeValues = (values, parameters) => + mapValues(values, (value, key) => { if (parameters.get(key).type.toLowerCase() === 'json') { try { return JSON.parse(value); @@ -202,7 +200,6 @@ const parseJsonTypeValues = (values, parameters) => { } return value === undefined ? null : value; }); -}; const handleSubmit = ( { saveAndClose, ...values }, diff --git a/src/js/components/parameters/ParametersSidebar.js b/src/js/components/parameters/ParametersSidebar.js index 4e719e21..d88417bc 100644 --- a/src/js/components/parameters/ParametersSidebar.js +++ b/src/js/components/parameters/ParametersSidebar.js @@ -49,19 +49,17 @@ const ParametersSidebar = ({
  • - {enabledEnvironments.map(environment => { - return ( - - activateTab(environment.file)} - title={environment.file} - > - {environment.title} - - - ); - })} + {enabledEnvironments.map(environment => ( + + activateTab(environment.file)} + title={environment.file} + > + {environment.title} + + + ))} ); diff --git a/src/js/components/plan/PlanFileInput.js b/src/js/components/plan/PlanFileInput.js index 1aac5848..5214f82a 100644 --- a/src/js/components/plan/PlanFileInput.js +++ b/src/js/components/plan/PlanFileInput.js @@ -52,36 +52,32 @@ class PlanFileInput extends React.Component { let reader = new FileReader(); let file = inputFiles[i]; - reader.onerror = (f => { - return e => { - this.setState({ - unreadableFile: f.webkitRelativePath - }); - }; + reader.onerror = (f => e => { + this.setState({ + unreadableFile: f.webkitRelativePath + }); })(file); - reader.onload = (f => { - return e => { - const filePath = f.webkitRelativePath.replace(/^[^\/]*\//, ''); - if (!filePath.match(IGNORED_FILE_PATHS)) { - let obj = { - name: filePath, - content: e.target.result - }; - files.push(obj); - } - processedFilesCount += 1; - this.setState( - { progress: Math.round(100 / l * processedFilesCount) }, - () => { - // if the last file is processed, setValue -> triggers onChange on Formsy - if (processedFilesCount === l) { - this.props.setValue(files); - this.setState({ progress: 0 }); - } + reader.onload = (f => e => { + const filePath = f.webkitRelativePath.replace(/^[^\/]*\//, ''); + if (!filePath.match(IGNORED_FILE_PATHS)) { + let obj = { + name: filePath, + content: e.target.result + }; + files.push(obj); + } + processedFilesCount += 1; + this.setState( + { progress: Math.round(100 / l * processedFilesCount) }, + () => { + // if the last file is processed, setValue -> triggers onChange on Formsy + if (processedFilesCount === l) { + this.props.setValue(files); + this.setState({ progress: 0 }); } - ); - }; + } + ); })(file); reader.readAsText(file); } diff --git a/src/js/components/roles/NodesAssignment.js b/src/js/components/roles/NodesAssignment.js index 06f87e26..efeafdd2 100644 --- a/src/js/components/roles/NodesAssignment.js +++ b/src/js/components/roles/NodesAssignment.js @@ -38,33 +38,31 @@ const NodesAssignment = ({ nodeCountParametersByRole, roles, updateNodesAssignment -}) => { - return ( - -
    - {roles.toList().map(role => { - return ( - - ); - })} -
    -
    - ); -}; +}) => ( + +
    + {roles + .toList() + .map(role => ( + + ))} +
    +
    +); NodesAssignment.propTypes = { assignedNodesCountsByRole: ImmutablePropTypes.map.isRequired, availableNodesCountsByRole: ImmutablePropTypes.map.isRequired, @@ -82,12 +80,10 @@ const mapStateToProps = state => ({ roles: getRoles(state) }); -const mapDispatchToProps = dispatch => { - return { - updateNodesAssignment: (currentPlanName, data) => { - dispatch(ParametersActions.updateNodesAssignment(currentPlanName, data)); - } - }; -}; +const mapDispatchToProps = dispatch => ({ + updateNodesAssignment: (currentPlanName, data) => { + dispatch(ParametersActions.updateNodesAssignment(currentPlanName, data)); + } +}); export default connect(mapStateToProps, mapDispatchToProps)(NodesAssignment); diff --git a/src/js/components/roles/RoleServices.js b/src/js/components/roles/RoleServices.js index 00ec9a1c..99233738 100644 --- a/src/js/components/roles/RoleServices.js +++ b/src/js/components/roles/RoleServices.js @@ -53,22 +53,17 @@ class RoleServices extends React.Component { } renderServiceTabs() { - return this.props.services.toList().map(service => { - return ( - - - {service.type.split('::').pop()} - - - ); - }); + return this.props.services.toList().map(service => ( + + + {service.type.split('::').pop()} + + + )); } render() { diff --git a/src/js/components/ui/NavTab.js b/src/js/components/ui/NavTab.js index fa819dbd..477e0458 100644 --- a/src/js/components/ui/NavTab.js +++ b/src/js/components/ui/NavTab.js @@ -18,20 +18,18 @@ import PropTypes from 'prop-types'; import React from 'react'; import { Link, Route } from 'react-router-dom'; -const NavTab = ({ activeClassName, children, to, exact, location, id }) => { - return ( - ( -
  • - {children} -
  • - )} - /> - ); -}; +const NavTab = ({ activeClassName, children, to, exact, location, id }) => ( + ( +
  • + {children} +
  • + )} + /> +); NavTab.propTypes = { activeClassName: PropTypes.string.isRequired, children: PropTypes.node, diff --git a/src/js/components/ui/Toolbar/ToolbarInputs.js b/src/js/components/ui/Toolbar/ToolbarInputs.js index e63adea9..807432f1 100644 --- a/src/js/components/ui/Toolbar/ToolbarInputs.js +++ b/src/js/components/ui/Toolbar/ToolbarInputs.js @@ -18,18 +18,16 @@ import { Button } from 'react-bootstrap'; import PropTypes from 'prop-types'; import React from 'react'; -export const SortDirectionInput = ({ input: { onChange, value }, title }) => { - return ( - - ); -}; +export const SortDirectionInput = ({ input: { onChange, value }, title }) => ( + +); SortDirectionInput.propTypes = { children: PropTypes.node, input: PropTypes.object.isRequired, @@ -50,24 +48,22 @@ const getIconClass = optionKey => { export const ContentViewSelectorInput = ({ input: { onChange, value }, options -}) => { - return ( -
    - {Object.keys(options).map(k => ( - - ))} -
    - ); -}; +}) => ( +
    + {Object.keys(options).map(k => ( + + ))} +
    +); ContentViewSelectorInput.propTypes = { input: PropTypes.object.isRequired, options: PropTypes.object.isRequired diff --git a/src/js/components/ui/dropdown/DropdownKebab.js b/src/js/components/ui/dropdown/DropdownKebab.js index b54eb0ef..7e2fc059 100644 --- a/src/js/components/ui/dropdown/DropdownKebab.js +++ b/src/js/components/ui/dropdown/DropdownKebab.js @@ -18,20 +18,14 @@ import { Dropdown } from 'react-bootstrap'; import PropTypes from 'prop-types'; import React from 'react'; -const DropdownKebab = ({ children, id, pullRight }) => { - return ( - - e.stopPropagation()} - > - - - {children} - - ); -}; +const DropdownKebab = ({ children, id, pullRight }) => ( + + e.stopPropagation()}> + + + {children} + +); DropdownKebab.propTypes = { children: PropTypes.node, id: PropTypes.string.isRequired, diff --git a/src/js/components/ui/dropdown/MenuItemLink.js b/src/js/components/ui/dropdown/MenuItemLink.js index 83c25c07..d3577af4 100644 --- a/src/js/components/ui/dropdown/MenuItemLink.js +++ b/src/js/components/ui/dropdown/MenuItemLink.js @@ -18,21 +18,19 @@ import PropTypes from 'prop-types'; import React from 'react'; import { Link, Route } from 'react-router-dom'; -const MenuItemLink = ({ children, to, exact, location, ...rest }) => { - return ( - ( -
  • e.stopPropagation()}> - - {children} - -
  • - )} - /> - ); -}; +const MenuItemLink = ({ children, to, exact, location, ...rest }) => ( + ( +
  • e.stopPropagation()}> + + {children} + +
  • + )} + /> +); MenuItemLink.propTypes = { children: PropTypes.node, diff --git a/src/js/components/ui/forms/FormErrorList.js b/src/js/components/ui/forms/FormErrorList.js index d4b767cc..8945ab51 100644 --- a/src/js/components/ui/forms/FormErrorList.js +++ b/src/js/components/ui/forms/FormErrorList.js @@ -22,13 +22,11 @@ export default class FormErrorList extends React.Component { renderErrors() { const { errors } = this.props; if (errors.length > 1) { - const errorList = errors.map((error, index) => { - return ( -
  • - {error.title} {error.message} -
  • - ); - }); + const errorList = errors.map((error, index) => ( +
  • + {error.title} {error.message} +
  • + )); return (
    {`${errors.length} Errors Found:`} diff --git a/src/js/components/ui/reduxForm/HorizontalCheckBox.js b/src/js/components/ui/reduxForm/HorizontalCheckBox.js index 686c3f9e..9bb0edde 100644 --- a/src/js/components/ui/reduxForm/HorizontalCheckBox.js +++ b/src/js/components/ui/reduxForm/HorizontalCheckBox.js @@ -32,24 +32,22 @@ const HorizontalCheckBox = ({ meta, required, ...rest -}) => { - return ( - - - {label} - - - - - - - - ); -}; +}) => ( + + + {label} + + + + + + + +); HorizontalCheckBox.propTypes = { description: PropTypes.node, id: PropTypes.string.isRequired, diff --git a/src/js/components/ui/reduxForm/HorizontalInput.js b/src/js/components/ui/reduxForm/HorizontalInput.js index ee09a5ad..6475c9c4 100644 --- a/src/js/components/ui/reduxForm/HorizontalInput.js +++ b/src/js/components/ui/reduxForm/HorizontalInput.js @@ -32,24 +32,22 @@ const HorizontalInput = ({ meta, required, ...rest -}) => { - return ( - - - {label} - - - - - - - - ); -}; +}) => ( + + + {label} + + + + + + + +); HorizontalInput.propTypes = { description: PropTypes.node, id: PropTypes.string.isRequired, diff --git a/src/js/components/ui/reduxForm/HorizontalSelect.js b/src/js/components/ui/reduxForm/HorizontalSelect.js index 5f2869cb..f63b3d39 100644 --- a/src/js/components/ui/reduxForm/HorizontalSelect.js +++ b/src/js/components/ui/reduxForm/HorizontalSelect.js @@ -33,31 +33,29 @@ const HorizontalSelect = ({ meta, required, ...rest -}) => { - return ( - - ( + + + {label} + + + - {label} - - - - {children} - - - - - - ); -}; + {children} + + + + + +); HorizontalSelect.propTypes = { children: PropTypes.node, description: PropTypes.node, diff --git a/src/js/components/ui/reduxForm/NodePickerInput.js b/src/js/components/ui/reduxForm/NodePickerInput.js index d53892e2..9d9234de 100644 --- a/src/js/components/ui/reduxForm/NodePickerInput.js +++ b/src/js/components/ui/reduxForm/NodePickerInput.js @@ -70,18 +70,16 @@ NodePickerInput.defaultProps = { }; export default NodePickerInput; -const PickerArrow = ({ direction, disabled, onClick }) => { - return ( - - ); -}; +const PickerArrow = ({ direction, disabled, onClick }) => ( + +); PickerArrow.propTypes = { direction: PropTypes.oneOf(['up', 'down']).isRequired, disabled: PropTypes.bool.isRequired, diff --git a/src/js/components/ui/tables/DataTable.js b/src/js/components/ui/tables/DataTable.js index 89ce1b43..574ccd3e 100644 --- a/src/js/components/ui/tables/DataTable.js +++ b/src/js/components/ui/tables/DataTable.js @@ -83,9 +83,7 @@ class DataTable extends React.Component { render() { let columns = this._getColumns(); - let headers = columns.map(column => { - return column.props.header; - }); + let headers = columns.map(column => column.props.header); let rows = []; for (var i = 0; i < this.props.rowsCount; ++i) { diff --git a/src/js/components/ui/tables/DataTableRow.js b/src/js/components/ui/tables/DataTableRow.js index 585dcca7..e39ea56c 100644 --- a/src/js/components/ui/tables/DataTableRow.js +++ b/src/js/components/ui/tables/DataTableRow.js @@ -19,12 +19,12 @@ import React from 'react'; export default class DataTableRow extends React.Component { render() { - let cells = this.props.columns.map((column, index) => { - return React.cloneElement(column.props.cell, { + let cells = this.props.columns.map((column, index) => + React.cloneElement(column.props.cell, { rowIndex: this.props.index, key: index - }); - }); + }) + ); return {cells}; } } diff --git a/src/js/components/validations/Validation.js b/src/js/components/validations/Validation.js index a0516a86..858ba892 100644 --- a/src/js/components/validations/Validation.js +++ b/src/js/components/validations/Validation.js @@ -50,23 +50,21 @@ export default class Validation extends React.Component { } renderValidationGroups() { - return this.props.groups.map(group => { - return ( -
    - - this.props.addActiveFilter({ - filterBy: 'group', - filterString: group - }) - } - > - {group} - -
    - ); - }); + return this.props.groups.map(group => ( +
    + + this.props.addActiveFilter({ + filterBy: 'group', + filterString: group + }) + } + > + {group} + +
    + )); } render() { diff --git a/src/js/components/validations/ValidationDetail.js b/src/js/components/validations/ValidationDetail.js index 400f3b2b..0c56fa7b 100644 --- a/src/js/components/validations/ValidationDetail.js +++ b/src/js/components/validations/ValidationDetail.js @@ -86,14 +86,12 @@ class ValidationDetail extends React.Component { } renderValidationGroups() { - return this.props.groups.map(group => { - return ( - - {group} -   - - ); - }); + return this.props.groups.map(group => ( + + {group} +   + + )); } renderValidationOutput() { diff --git a/src/js/components/validations/ValidationsList.js b/src/js/components/validations/ValidationsList.js index d5ce5c44..c741b5e1 100644 --- a/src/js/components/validations/ValidationsList.js +++ b/src/js/components/validations/ValidationsList.js @@ -117,8 +117,9 @@ class ValidationsList extends React.Component { ); } else { - return validations.toList().map(validation => { - return ( + return validations + .toList() + .map(validation => ( - ); - }); + )); } } @@ -226,36 +226,32 @@ ValidationsList.propTypes = { validationsLoaded: PropTypes.bool.isRequired }; -const mapDispatchToProps = dispatch => { - return { - addActiveFilter: data => - dispatch(addActiveFilter('validationsToolbar', data)), - fetchValidations: () => dispatch(ValidationsActions.fetchValidations()), - fetchWorkflowExecutions: () => - dispatch(WorkflowExecutionsActions.fetchWorkflowExecutions()), - runValidation: (id, currentPlanName) => { - dispatch(ValidationsActions.runValidation(id, currentPlanName)); - }, - stopValidation: executionId => { - dispatch( - WorkflowExecutionsActions.updateWorkflowExecution(executionId, { - state: 'PAUSED' - }) - ); - } - }; -}; +const mapDispatchToProps = dispatch => ({ + addActiveFilter: data => + dispatch(addActiveFilter('validationsToolbar', data)), + fetchValidations: () => dispatch(ValidationsActions.fetchValidations()), + fetchWorkflowExecutions: () => + dispatch(WorkflowExecutionsActions.fetchWorkflowExecutions()), + runValidation: (id, currentPlanName) => { + dispatch(ValidationsActions.runValidation(id, currentPlanName)); + }, + stopValidation: executionId => { + dispatch( + WorkflowExecutionsActions.updateWorkflowExecution(executionId, { + state: 'PAUSED' + }) + ); + } +}); -const mapStateToProps = state => { - return { - executionsLoaded: state.executions.get('executionsLoaded'), - isFetchingValidations: state.validations.get('isFetching'), - validations: getFilteredValidations(state), - validationsLoaded: state.validations.get('validationsLoaded'), - currentPlanName: getCurrentPlanName(state), - showValidations: state.validations.showValidations - }; -}; +const mapStateToProps = state => ({ + executionsLoaded: state.executions.get('executionsLoaded'), + isFetchingValidations: state.validations.get('isFetching'), + validations: getFilteredValidations(state), + validationsLoaded: state.validations.get('validationsLoaded'), + currentPlanName: getCurrentPlanName(state), + showValidations: state.validations.showValidations +}); export default injectIntl( connect(mapStateToProps, mapDispatchToProps)(ValidationsList) diff --git a/src/js/components/validations/ValidationsToolbar.js b/src/js/components/validations/ValidationsToolbar.js index 97e9066d..c641ec7c 100644 --- a/src/js/components/validations/ValidationsToolbar.js +++ b/src/js/components/validations/ValidationsToolbar.js @@ -140,23 +140,18 @@ ValidationsToolbar.propTypes = { intl: PropTypes.object, validationsCount: PropTypes.number.isRequired }; -const mapDispatchToProps = dispatch => { - return { - addActiveFilter: data => - dispatch(addActiveFilter('validationsToolbar', data)), - clearActiveFilters: () => - dispatch(clearActiveFilters('validationsToolbar')), - deleteActiveFilter: uuid => - dispatch(deleteActiveFilter('validationsToolbar', uuid)) - }; -}; -const mapStateToProps = state => { - return { - activeFilters: getActiveFilters(state, 'validationsToolbar'), - filteredValidationsCount: getFilteredValidations(state).size, - validationsCount: getValidationsWithResults(state).size - }; -}; +const mapDispatchToProps = dispatch => ({ + addActiveFilter: data => + dispatch(addActiveFilter('validationsToolbar', data)), + clearActiveFilters: () => dispatch(clearActiveFilters('validationsToolbar')), + deleteActiveFilter: uuid => + dispatch(deleteActiveFilter('validationsToolbar', uuid)) +}); +const mapStateToProps = state => ({ + activeFilters: getActiveFilters(state, 'validationsToolbar'), + filteredValidationsCount: getFilteredValidations(state).size, + validationsCount: getValidationsWithResults(state).size +}); export default injectIntl( connect(mapStateToProps, mapDispatchToProps)(ValidationsToolbar) ); diff --git a/src/js/reducers/environmentConfigurationReducer.js b/src/js/reducers/environmentConfigurationReducer.js index cf9d5527..351991bc 100644 --- a/src/js/reducers/environmentConfigurationReducer.js +++ b/src/js/reducers/environmentConfigurationReducer.js @@ -50,12 +50,12 @@ export default function environmentConfigurationReducer( case EnvironmentConfigurationConstants.UPDATE_ENVIRONMENT_CONFIGURATION_SUCCESS: { const enabledEnvs = fromJS(action.payload); - const updatedEnvs = state.environments.map(environment => { - return environment.set( + const updatedEnvs = state.environments.map(environment => + environment.set( 'enabled', enabledEnvs.includes(environment.get('file')) - ); - }); + ) + ); return state.set('environments', updatedEnvs); } diff --git a/src/js/reducers/filtersReducer.js b/src/js/reducers/filtersReducer.js index 316cde02..911e3775 100644 --- a/src/js/reducers/filtersReducer.js +++ b/src/js/reducers/filtersReducer.js @@ -30,11 +30,12 @@ export default function filtersReducer(state = initialState, action) { // Don't add a new filter if there already is one with the same // filterBy and filterString. if ( - state.getIn([filter, 'activeFilters']).filter(value => { - return ( - value.filterBy === filterBy && value.filterString === filterString - ); - }).size > 0 + state + .getIn([filter, 'activeFilters']) + .filter( + value => + value.filterBy === filterBy && value.filterString === filterString + ).size > 0 ) { return state; } diff --git a/src/js/selectors/environmentConfiguration.js b/src/js/selectors/environmentConfiguration.js index 21686688..91a538e8 100644 --- a/src/js/selectors/environmentConfiguration.js +++ b/src/js/selectors/environmentConfiguration.js @@ -30,17 +30,16 @@ export const getEnvironment = (state, environmentFileName) => export const getEnabledEnvironments = createSelector( getEnvironments, - environments => { - return environments.filter(environment => environment.get('enabled')); - } + environments => environments.filter(environment => environment.get('enabled')) ); export const getEnvironmentConfigurationSummary = createSelector( getEnabledEnvironments, environments => { - const titlesList = environments.reduce((titlesList, environment) => { - return titlesList.push(environment.get('title')); - }, List()); + const titlesList = environments.reduce( + (titlesList, environment) => titlesList.push(environment.get('title')), + List() + ); return titlesList.toArray().join(', '); } ); @@ -50,17 +49,16 @@ export const getEnvironmentConfigurationSummary = createSelector( */ export const getTopicsTree = createSelector( [topics, environmentGroups, getEnvironments], - (topics, environmentGroups, environments) => { - return topics.map(topic => { - return topic.update('environment_groups', envGroups => { - return envGroups.map(envGroup => { - return environmentGroups + (topics, environmentGroups, environments) => + topics.map(topic => + topic.update('environment_groups', envGroups => + envGroups.map(envGroup => + environmentGroups .get(envGroup) - .update('environments', envs => { - return environments.filter((p, k) => envs.includes(k)); - }); - }); - }); - }); - } + .update('environments', envs => + environments.filter((p, k) => envs.includes(k)) + ) + ) + ) + ) ); diff --git a/src/js/selectors/filters.js b/src/js/selectors/filters.js index 090a6b26..3d8a3d2e 100644 --- a/src/js/selectors/filters.js +++ b/src/js/selectors/filters.js @@ -16,9 +16,7 @@ import { createSelector } from 'reselect'; -export const getFilterByName = (state, filterName) => { - return state.filters[filterName]; -}; +export const getFilterByName = (state, filterName) => state.filters[filterName]; export const getActiveFilters = createSelector(getFilterByName, filter => filter.get('activeFilters') diff --git a/src/js/selectors/nodes.js b/src/js/selectors/nodes.js index c16fdc24..1a2bebd5 100644 --- a/src/js/selectors/nodes.js +++ b/src/js/selectors/nodes.js @@ -103,11 +103,11 @@ export const getFilteredNodes = createSelector( .update(nodes => nodesToolbarFilter.get('activeFilters').reduce( (filteredNodes, filter) => - filteredNodes.filter(node => { - return getNodePropertyString(node, filter.filterBy) + filteredNodes.filter(node => + getNodePropertyString(node, filter.filterBy) .toLowerCase() - .includes(filter.filterString.toLowerCase()); - }), + .includes(filter.filterString.toLowerCase()) + ), nodes ) ) diff --git a/src/js/selectors/notifications.js b/src/js/selectors/notifications.js index 1cc4af43..2b58b22e 100644 --- a/src/js/selectors/notifications.js +++ b/src/js/selectors/notifications.js @@ -20,7 +20,5 @@ const notifications = state => state.notifications.get('all'); export const getNonViewedNotifications = createSelector( notifications, - notifications => { - return notifications.filterNot(notification => notification.viewed); - } + notifications => notifications.filterNot(notification => notification.viewed) ); diff --git a/src/js/selectors/parameters.js b/src/js/selectors/parameters.js index bef8793c..49bc81b8 100644 --- a/src/js/selectors/parameters.js +++ b/src/js/selectors/parameters.js @@ -126,30 +126,27 @@ export const getRoleNetworkConfig = createSelector( export const getEnvironmentParameters = createSelector( [getParametersExclInternal, getResources, getEnvironment], - (parameters, resources, environment) => { - return ( - resources - // get list of resources from environment resource_registry - .filter(r => environment.resourceRegistry.keySeq().includes(r.type)) - // collect parameter names from those resources - .reduce( - (result, resource) => - result.union( - _extractParameters( - resource.parameters, - resource.resources, - resources - ) - ), - Set() - ) - // add parameters from environment's 'parameters' section to the list - .union(environment.parameterDefaults.keySeq()) - .toMap() - // convert list of parameter names to map of actual parameter records - .update(filterParameters(parameters)) - ); - } + (parameters, resources, environment) => + resources + // get list of resources from environment resource_registry + .filter(r => environment.resourceRegistry.keySeq().includes(r.type)) + // collect parameter names from those resources + .reduce( + (result, resource) => + result.union( + _extractParameters( + resource.parameters, + resource.resources, + resources + ) + ), + Set() + ) + // add parameters from environment's 'parameters' section to the list + .union(environment.parameterDefaults.keySeq()) + .toMap() + // convert list of parameter names to map of actual parameter records + .update(filterParameters(parameters)) ); /** @@ -195,8 +192,8 @@ export const getResourceParametersDeep = createSelector( /** * Recursively extracts Parameter names from a Resource and it's nested Resources */ -const _extractParameters = (parameters, nestedResources, allResources) => { - return nestedResources.reduce((pars, res) => { +const _extractParameters = (parameters, nestedResources, allResources) => + nestedResources.reduce((pars, res) => { const resource = allResources.get(res); return _extractParameters( pars @@ -207,4 +204,3 @@ const _extractParameters = (parameters, nestedResources, allResources) => { allResources ); }, parameters); -}; diff --git a/src/js/selectors/plans.js b/src/js/selectors/plans.js index 7ac9957a..117c28f7 100644 --- a/src/js/selectors/plans.js +++ b/src/js/selectors/plans.js @@ -40,9 +40,6 @@ export const getPlans = createSelector(plans, plans => plans); // TODO(jtomasek): update this to list 3 last used plans export const getAllPlansButCurrent = createSelector( [plans, getCurrentPlanName], - (plans, currentPlanName) => { - return plans - .filter(plan => plan.name != currentPlanName) - .sortBy(plan => plan.name); - } + (plans, currentPlanName) => + plans.filter(plan => plan.name != currentPlanName).sortBy(plan => plan.name) ); diff --git a/src/js/selectors/stacks.js b/src/js/selectors/stacks.js index 0713038e..7d227d19 100644 --- a/src/js/selectors/stacks.js +++ b/src/js/selectors/stacks.js @@ -41,13 +41,12 @@ export const getCurrentStack = createSelector( */ export const getCurrentStackDeploymentInProgress = createSelector( [stacksSelector, getCurrentPlanName], - (stacks, currentPlanName) => { - return [ + (stacks, currentPlanName) => + [ stackStates.CREATE_IN_PROGRESS, stackStates.UPDATE_IN_PROGRESS, stackStates.DELETE_IN_PROGRESS - ].includes(stacks.get(currentPlanName, new Stack()).stack_status); - } + ].includes(stacks.get(currentPlanName, new Stack()).stack_status) ); /** @@ -58,9 +57,9 @@ export const getCurrentStackDeploymentProgress = createSelector( resources => { let allResources = resources.size; if (allResources > 0) { - let completeResources = resources.filter(r => { - return r.resource_status === 'CREATE_COMPLETE'; - }).size; + let completeResources = resources.filter( + r => r.resource_status === 'CREATE_COMPLETE' + ).size; return Math.ceil(completeResources / allResources * 100); } return 0; diff --git a/src/js/selectors/validations.js b/src/js/selectors/validations.js index ecf48694..390011f4 100644 --- a/src/js/selectors/validations.js +++ b/src/js/selectors/validations.js @@ -49,14 +49,13 @@ export const getValidationExecutionsForCurrentPlan = createSelector( */ export const getValidationsWithResults = createSelector( [validations, getValidationExecutionsForCurrentPlan], - (validations, results) => { - return validations.map(validation => { + (validations, results) => + validations.map(validation => { const validationResults = getValidationResults(validation.id, results); return validation .set('results', validationResults) .set('status', getValidationStatus(validationResults)); - }); - } + }) ); /** @@ -114,29 +113,25 @@ export const getValidationStatusCounts = createSelector( * Helper function to get the most recent time a plan has been updated or * created. */ -export const getMostRecentPlanUpdate = (executions, planName) => { - return ( - executions - .filter( - execution => - [MistralConstants.PLAN_UPDATE, MistralConstants.PLAN_CREATE].includes( - execution.workflow_name - ) && execution.getIn(['input', 'container']) === planName - ) - .map(execution => execution.get('updated_at')) - .sort() - .last() || 0 - ); -}; +export const getMostRecentPlanUpdate = (executions, planName) => + executions + .filter( + execution => + [MistralConstants.PLAN_UPDATE, MistralConstants.PLAN_CREATE].includes( + execution.workflow_name + ) && execution.getIn(['input', 'container']) === planName + ) + .map(execution => execution.get('updated_at')) + .sort() + .last() || 0; /** * Helper function to get a validation results by validation name */ -const getValidationResults = (validationId, results) => { - return results.filter( +const getValidationResults = (validationId, results) => + results.filter( result => result.getIn(['input', 'validation_name']) === validationId ); -}; /** * Helper function to determine validation status based on validation's results diff --git a/src/js/utils/nodes.js b/src/js/utils/nodes.js index 6998d206..c35f575b 100644 --- a/src/js/utils/nodes.js +++ b/src/js/utils/nodes.js @@ -29,8 +29,8 @@ export const parseNodeCapabilities = capabilities => { /** * Convert Node's capabilities object to string */ -export const stringifyNodeCapabilities = capabilities => { - return Object.keys(capabilities) +export const stringifyNodeCapabilities = capabilities => + Object.keys(capabilities) .reduce((caps, key) => { if (!capabilities[key]) { return caps; @@ -40,7 +40,6 @@ export const stringifyNodeCapabilities = capabilities => { } }, []) .join(','); -}; /** * Set or update Node capability