aboutsummaryrefslogtreecommitdiffstats
path: root/ui-react/src/components/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'ui-react/src/components/dialogs')
-rw-r--r--ui-react/src/components/dialogs/Loop/DeployLoopModal.js36
-rw-r--r--ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js30
-rw-r--r--ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.test.js21
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