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';
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();
}
if (errors.length !== 0) {
console.error("Errors detected during config policy data validation ", errors);
- alert(errors);
+ this.props.showAlert(errors);
}
else {
console.info("NO validation errors found in config policy data");
return liel;
}
});
- JSONEditor.defaults.options.theme = 'myBootstrap4';
- JSONEditor.defaults.options.object_layout = 'grid';
- JSONEditor.defaults.options.disable_properties = true;
- JSONEditor.defaults.options.disable_edit_json = false;
- JSONEditor.defaults.options.disable_array_reorder = true;
- JSONEditor.defaults.options.disable_array_delete_last_row = true;
- JSONEditor.defaults.options.disable_array_delete_all_rows = false;
- JSONEditor.defaults.options.array_controls_top=true;
- JSONEditor.defaults.options.show_errors = 'always';
- JSONEditor.defaults.options.keep_oneof_values=false;
- JSONEditor.defaults.options.collapsed=true;
- //JSONEditor.defaults.options.template = 'default';
}
-
+
renderJsonEditor() {
console.debug("Rendering OperationalPolicyModal");
var schema_json = this.state.loopCache.getOperationalPolicyJsonSchema();
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"),
+ {
+ schema: schema_json.schema,
+ startval: operationalPoliciesData,
+ theme: 'myBootstrap4',
+ object_layout: 'grid',
+ disable_properties: true,
+ disable_edit_json: false,
+ disable_array_reorder: true,
+ disable_array_delete_last_row: true,
+ disable_array_delete_all_rows: false,
+ array_controls_top: true,
+ show_errors: 'always',
+ keep_oneof_values: false,
+ collapsed:true
+ })
+ })
+ }
+
+ 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() {
<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>