diff options
Diffstat (limited to 'ui-react/src/components/dialogs')
3 files changed, 66 insertions, 21 deletions
diff --git a/ui-react/src/components/dialogs/Loop/DeployLoopModal.js b/ui-react/src/components/dialogs/Loop/DeployLoopModal.js index 9c9a16fe..6468e9f9 100644 --- a/ui-react/src/components/dialogs/Loop/DeployLoopModal.js +++ b/ui-react/src/components/dialogs/Loop/DeployLoopModal.js @@ -37,11 +37,9 @@ const FormStyled = styled(Form.Group)` padding: .25rem 1.5rem; ` export default class DeployLoopModal extends React.Component { - state = { - loopCache: this.props.loopCache, - temporaryPropertiesJson: JSON.parse(JSON.stringify(this.props.loopCache.getGlobalProperties())), - show: true - }; + + + constructor(props, context) { super(props, context); @@ -50,6 +48,24 @@ export default class DeployLoopModal extends React.Component { this.handleChange = this.handleChange.bind(this); this.refreshStatus = this.refreshStatus.bind(this); this.renderDeployParam = this.renderDeployParam.bind(this); + + const propertiesJson = JSON.parse(JSON.stringify(this.props.loopCache.getGlobalProperties())); + this.state = { + loopCache: this.props.loopCache, + temporaryPropertiesJson: propertiesJson, + show: true, + key: this.getInitialKeyValue(propertiesJson) + }; + } + getInitialKeyValue(temporaryPropertiesJson) { + const deployJsonList = temporaryPropertiesJson["dcaeDeployParameters"]; + let initialKey; + Object.keys(deployJsonList) + .filter((obj) => Object.keys(deployJsonList).indexOf(obj) === 0) + .map(obj => + initialKey = obj + ); + return initialKey; } componentWillReceiveProps(newProps) { this.setState({ @@ -57,14 +73,7 @@ export default class DeployLoopModal extends React.Component { show: true }); } - componentDidMount() { - const deployJsonList = this.state.temporaryPropertiesJson["dcaeDeployParameters"]; - Object.keys(deployJsonList) - .filter((obj) => Object.keys(deployJsonList).indexOf(obj) === 0) - .map(obj => - this.setState({key: obj}) - ); - } + handleClose(){ this.props.history.push('/'); } @@ -117,7 +126,6 @@ export default class DeployLoopModal extends React.Component { ); return indents; } - renderDeployParam(deployJson) { var indents = []; Object.keys(deployJson).map((item,key) => diff --git a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js index 5c5f0241..dc7c0a48 100644 --- a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js +++ b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js @@ -25,6 +25,7 @@ import React from 'react' import Button from 'react-bootstrap/Button'; import Modal from 'react-bootstrap/Modal'; import styled from 'styled-components'; +import LoopCache from '../../../api/LoopCache'; import LoopService from '../../../api/LoopService'; import JSONEditor from '@json-editor/json-editor'; @@ -45,6 +46,7 @@ export default class OperationalPolicyModal extends React.Component { this.handleClose = this.handleClose.bind(this); this.handleSave = this.handleSave.bind(this); this.renderJsonEditor = this.renderJsonEditor.bind(this); + this.handleRefresh = this.handleRefresh.bind(this); this.setDefaultJsonEditorOptions(); } @@ -114,7 +116,7 @@ export default class OperationalPolicyModal extends React.Component { console.error("NO Operational policy schema found"); return; } - var operationalPoliciesData = this.state.loopCache.getOperationalPolicies(); + var operationalPoliciesData = this.state.loopCache.getOperationalPoliciesNoJsonSchema(); this.setState({ jsonEditor: new JSONEditor(document.getElementById("editor"), @@ -122,6 +124,25 @@ export default class OperationalPolicyModal extends React.Component { }) } + handleRefresh() { + LoopService.refreshOpPolicyJson(this.state.loopCache.getLoopName()).then(data => { + var newLoopCache = new LoopCache(data); + var schema_json = newLoopCache.getOperationalPolicyJsonSchema(); + var operationalPoliciesData = newLoopCache.getOperationalPoliciesNoJsonSchema(); + document.getElementById("editor").innerHTML = ""; + this.setState({ + loopCache: newLoopCache, + jsonEditor: new JSONEditor(document.getElementById("editor"), + { schema: schema_json.schema, startval: operationalPoliciesData }) + }) + this.props.updateLoopFunction(data); + + }) + .catch(error => { + console.error("Error while refreshing the Operational Policy Json Representation"); + }); + } + render() { return ( <ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}> @@ -135,10 +156,13 @@ export default class OperationalPolicyModal extends React.Component { <Modal.Footer> <Button variant="secondary" onClick={this.handleClose}> Close - </Button> + </Button> + <Button variant="secondary" onClick={this.handleRefresh}> + Refresh + </Button> <Button variant="primary" onClick={this.handleSave}> Save Changes - </Button> + </Button> </Modal.Footer> </ModalStyled> diff --git a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.test.js b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.test.js index 9c7da310..c10c6ff0 100644 --- a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.test.js +++ b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.test.js @@ -46,9 +46,9 @@ describe('Verify OperationalPolicyModal', () => { "controlLoop": {}, "policies": [] } - } - }], - "operationalPolicySchema": {"schema": {}} + }, + "jsonRepresentation" : {"schema": {}} + }] }); const historyMock = { push: jest.fn() }; const flushPromises = () => new Promise(setImmediate); @@ -57,7 +57,7 @@ describe('Verify OperationalPolicyModal', () => { const handleClose = jest.spyOn(OperationalPolicyModal.prototype,'handleClose'); const component = mount(<OperationalPolicyModal history={historyMock} loopCache={loopCache}/>) - component.find('[variant="secondary"]').prop('onClick')(); + component.find('[variant="secondary"]').get(0).props.onClick(); expect(handleClose).toHaveBeenCalledTimes(1); expect(component.state('show')).toEqual(false); @@ -78,4 +78,17 @@ describe('Verify OperationalPolicyModal', () => { expect(component.state('show')).toEqual(false); expect(historyMock.push.mock.calls[0]).toEqual([ '/']); }); + + it('Test handleRefresh', async () => { + const updateLoopFunction = jest.fn(); + const handleRefresh = jest.spyOn(OperationalPolicyModal.prototype,'handleRefresh'); + const component = mount(<OperationalPolicyModal loopCache={loopCache} updateLoopFunction={updateLoopFunction} />) + + component.find('[variant="secondary"]').get(1).props.onClick(); + await flushPromises(); + component.update(); + + expect(handleRefresh).toHaveBeenCalledTimes(1); + expect(component.state('show')).toEqual(true); + }); });
\ No newline at end of file |