aboutsummaryrefslogtreecommitdiffstats
path: root/gui-clamp/ui-react/src/components/dialogs/ACM/utils
diff options
context:
space:
mode:
Diffstat (limited to 'gui-clamp/ui-react/src/components/dialogs/ACM/utils')
-rw-r--r--gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js178
-rw-r--r--gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js94
-rw-r--r--gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js177
-rw-r--r--gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js54
4 files changed, 0 insertions, 503 deletions
diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js
deleted file mode 100644
index 2d98598..0000000
--- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.js
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-import { JSONEditor } from "@json-editor/json-editor";
-import { Alert } from "react-bootstrap";
-import React from "react";
-
-const CommissioningUtils = {
- makeSchemaForCommonProperties: (commonProps) => {
- const commonPropsArr = Object.entries(commonProps)
-
- const newSchemaObject = {}
-
- newSchemaObject.title = "CommonProperties"
- newSchemaObject.type = "object"
- newSchemaObject.properties = {}
-
- commonPropsArr.forEach(([templateKey, template]) => {
-
- const propertiesObject = {}
- Object.entries(template.properties).forEach(([propKey, prop]) => {
-
- propertiesObject[propKey] = {
- type: CommissioningUtils.getType(prop.type)
- }
-
- })
- newSchemaObject.properties[templateKey] = {
- options: {
- "collapsed": true
- },
- properties: propertiesObject
- }
- })
-
- return newSchemaObject
- },
- getType: (propertyType) => {
- switch (propertyType)
- {
- case "string":
- return "string"
- case "integer":
- return "integer"
- case "list":
- return "array"
- case "object":
- return "object"
- default:
- return "object"
- }
- },
- createJsonEditor: (toscaModel, editorData) => {
- JSONEditor.defaults.options.collapse = false;
-
- return new JSONEditor(document.getElementById("editor"),
- {
- schema: toscaModel,
- startval: editorData,
- theme: 'bootstrap4',
- iconlib: 'fontawesome5',
- object_layout: 'normal',
- disable_properties: false,
- disable_edit_json: true,
- disable_array_reorder: true,
- disable_array_delete_last_row: true,
- disable_array_delete_all_rows: false,
- array_controls_top: true,
- keep_oneof_values: false,
- collapsed: false,
- show_errors: 'always',
- display_required_only: false,
- show_opt_in: false,
- prompt_before_delete: true,
- required_by_default: false,
- })
- },
- renderJsonEditor: async (template, commonProps) => {
-
- const fullTemplate = await template.json()
-
- let toscaInitialValues
- const allNodeTemplates = fullTemplate.topology_template.node_templates
- const shortenedNodeTemplatesObjectStartValues = {}
- // Get the common properties to construct a schema
- // Get valid start values at the same time
- const commonNodeTemplatesJson = await commonProps.json().then(data => {
- const nodeTemplatesArray = Object.entries(data)
- const shortenedNodeTemplatesObject = {}
- nodeTemplatesArray.forEach(([key, temp]) => {
- const currentNodeTemplate = allNodeTemplates[key]
- const propertiesObject = {
- properties: temp.properties
- }
-
- shortenedNodeTemplatesObject[key] = propertiesObject
-
- const propertiesStartValues = {}
-
- // Get all the existing start values to populate the properties in the schema
- Object.entries(propertiesObject.properties).forEach(([propKey, prop]) => {
- propertiesStartValues[propKey] = currentNodeTemplate.properties[propKey]
- })
-
- shortenedNodeTemplatesObjectStartValues[key] = propertiesStartValues
-
- })
-
- toscaInitialValues = shortenedNodeTemplatesObjectStartValues;
- return shortenedNodeTemplatesObject;
- })
-
- const propertySchema = CommissioningUtils.makeSchemaForCommonProperties(commonNodeTemplatesJson);
-
- const editorTemp = CommissioningUtils.createJsonEditor(propertySchema, shortenedNodeTemplatesObjectStartValues);
-
- return {
- fullTemplate: fullTemplate,
- propertySchema: propertySchema,
- editorTemp: editorTemp,
- toscaInitialValues: toscaInitialValues
- }
- },
- getAlertMessages: async (response) => {
- if (response.ok) {
- return(<Alert variant="success">
- <Alert.Heading>Commissioning Success</Alert.Heading>
- <p>Altered Template was Successfully Uploaded</p>
- <hr/>
- </Alert>);
- }
- else {
- return(<Alert variant="danger">
- <Alert.Heading>Commissioning Failure</Alert.Heading>
- <p>Updated Template Failed to Upload</p>
- <p>Status code: { await response.status }: { response.statusText }</p>
- <p>Response Text: { await response.text() }</p>
- <hr/>
- </Alert>);
- }
- },
-
- updateTemplate: async (userAddedCommonPropValues, fullToscaTemplate) => {
- const nodeTemplates = fullToscaTemplate.topology_template.node_templates
- const commonPropertyDataEntries = Object.entries(userAddedCommonPropValues)
-
- // This replaces the values for properties in the full tosca template
- // that will be sent up to the api with the entries the user provided.
- commonPropertyDataEntries.forEach(([templateKey, values]) => {
- Object.entries(values).forEach(([propKey, propVal]) => {
- nodeTemplates[templateKey].properties[propKey] = propVal
- })
- })
-
- fullToscaTemplate.topology_template.node_templates = nodeTemplates
-
- alert('Changes saved. Commission When Ready...')
- return fullToscaTemplate
- }
-}
-
-export default CommissioningUtils;
diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js
deleted file mode 100644
index 8304ecb..0000000
--- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/CommissioningUtils.test.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-import commonProps from "../testFiles/commonProps.json";
-import fullTemp from "../testFiles/fullTemplate.json";
-import CommissioningUtils from "./CommissioningUtils";
-import React from "react";
-
-const commonProperties = JSON.parse(JSON.stringify(commonProps))
-const fullTemplate = JSON.parse(JSON.stringify(fullTemp))
-
-describe('Verify CommissioningUtils', () => {
-
- const fullTemplatePromise = {
- ok: true,
- status: 200,
- text: () => "OK",
- json: () => {
- return Promise.resolve(fullTemplate)
- }
- }
-
- const commonPropertiesPromise = {
- ok: true,
- status: 200,
- text: () => "OK",
- json: () => {
- return Promise.resolve(commonProperties)
- }
- }
-
- it('test renderJsonEditor output is correct', async () => {
- // Have to mock "editor" dom element for json editor to work in testing
- document.body.innerHTML = '<div id="editor"></div>';
-
- await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).editorTemp).toBeTruthy()
- await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).fullTemplate).toBeTruthy()
- await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).propertySchema).toBeTruthy()
- await expect((await CommissioningUtils.renderJsonEditor(fullTemplatePromise, commonPropertiesPromise)).toscaInitialValues).toBeTruthy()
- })
-
- it('test the getType method object type', () => {
- expect(CommissioningUtils.getType("object")).toBe("object")
- })
-
- it('test getAlertMessages with response ok', async () => {
- const response = {
- ok: true,
- status: 200,
- text: () => {
- return Promise.resolve("OK")
- },
- json: () => {
- return Promise.resolve("{}")
- }
- }
-
- await expect(JSON.stringify(await CommissioningUtils.getAlertMessages(response))).toContain("Commissioning Success")
- })
-
- it('test getAlertMessages with response not ok', async () => {
- const response = {
- ok: false,
- status: 200,
- text: () => {
- return Promise.resolve("Error")
- },
- json: () => {
- return Promise.resolve("{}")
- }
- }
-
- await expect(JSON.stringify(await CommissioningUtils.getAlertMessages(response))).toContain("Commissioning Failure")
- })
-
-
- }
-)
diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js
deleted file mode 100644
index 1e33edb..0000000
--- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.js
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- *
- *
- */
-
-import { JSONEditor } from "@json-editor/json-editor";
-
-const InstantiationUtils = {
-
- parseInstantiationList: (acmList) => {
- const parsedAcmList = [];
-
- acmList.map((instance, index) => {
-
- const acmObj = {
- index,
- name: instance['name'],
- version: instance['version'],
- orderedState: instance['orderedState'],
- currentState: instance['state'],
- disableDelete: instance['state'] !== 'UNINITIALISED',
- disableEdit: instance['state'] !== 'UNINITIALISED'
- }
-
- parsedAcmList.push(acmObj);
- });
-
- return parsedAcmList;
- },
-
- makeSchemaForInstanceProperties: (instanceProps) => {
- const instancePropsArray = Object.entries(instanceProps);
-
- const newSchemaObject = {};
-
- newSchemaObject.title = "InstanceProperties";
- newSchemaObject.type = "object";
- newSchemaObject.properties = {};
-
- instancePropsArray.forEach(([key, value]) => {
-
- const propertiesObject = {};
-
- Object.entries(value.properties).forEach(([pKey, pValue]) => {
- propertiesObject[pKey] = {
- type: InstantiationUtils.getType(pValue.type)
- }
- });
-
- newSchemaObject.properties[key] = {
- options: {
- "collapsed": true
- },
- properties: propertiesObject
- }
- });
-
- return newSchemaObject;
- },
-
- parseJsonSchema: async (template, instanceProperties) => {
- const fullTemplate = await template.json();
-
- const filteredInitialValues = {};
-
- const allInstanceProperties = await instanceProperties.json().then(properties => {
- const filteredTemplateObj = {};
- const propertiesTemplateArray = Object.entries(properties);
-
- propertiesTemplateArray.forEach(([key, value]) => {
- const propertiesObj = {
- properties: value.properties
- }
-
- const propValues = {};
- filteredTemplateObj[key] = propertiesObj;
-
- const jsonNodeSchemaKey = fullTemplate.topology_template.node_templates[key];
-
- Object.entries(propertiesObj.properties).forEach(([pKey, pValue]) => {
- propValues[pKey] = jsonNodeSchemaKey.properties[pKey];
- });
-
- filteredInitialValues[key] = propValues;
- });
-
- return filteredTemplateObj;
- });
-
- const propertySchema = InstantiationUtils.makeSchemaForInstanceProperties(allInstanceProperties);
-
- const jsonEditor = InstantiationUtils.createJsonEditor(propertySchema, filteredInitialValues);
-
- return {
- fullTemplate: fullTemplate,
- jsonEditor: jsonEditor
- }
- },
-
- getType: (pType) => {
- switch (pType) {
- case "map":
- return "string";
- case "string":
- return "string";
- case "integer":
- return "integer";
- case "list":
- return "array";
- case "object":
- return "object";
- default:
- return "object";
- }
- },
-
- createJsonEditor: (fullSchema, instanceProperties) => {
- JSONEditor.defaults.options.collapse = true;
-
- return new JSONEditor(document.getElementById("editor"),
- {
- schema: fullSchema,
- startval: instanceProperties,
- theme: 'bootstrap4',
- iconlib: 'fontawesome5',
- object_layout: 'normal',
- disable_properties: false,
- disable_edit_json: false,
- disable_array_reorder: true,
- disable_array_delete_last_row: true,
- disable_array_delete_all_rows: false,
- array_controls_top: true,
- keep_oneof_values: false,
- collapsed: true,
- show_errors: 'always',
- display_required_only: false,
- show_opt_in: false,
- prompt_before_delete: true,
- required_by_default: false,
- });
- },
-
- updateTemplate: (instanceName, jsonEditorValues, fullTemplate) => {
- const nodeTemplates = fullTemplate.topology_template.node_templates;
- const instanceDataProperties = Object.entries(jsonEditorValues);
-
- instanceDataProperties.forEach(([key, value]) => {
- const nodeTemplatesKey = nodeTemplates[key]
- Object.entries(value).forEach(([pKey, pValue]) => {
- nodeTemplatesKey.properties[pKey] = pValue
- });
- });
-
- fullTemplate.topology_template.node_templates = nodeTemplates;
- fullTemplate.name = instanceName;
-
- return fullTemplate;
- }
-}
-
-export default InstantiationUtils; \ No newline at end of file
diff --git a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js b/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js
deleted file mode 100644
index 4077ff8..0000000
--- a/gui-clamp/ui-react/src/components/dialogs/ACM/utils/InstantiationUtils.test.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-import InstantiationUtils from "./InstantiationUtils";
-import instanceProps from "../testFiles/instanceProps.json";
-import fullTemp from "../testFiles/fullTemplate.json";
-
-const instanceProperties = JSON.parse(JSON.stringify(instanceProps))
-const fullTemplate = JSON.parse(JSON.stringify(fullTemp))
-
-describe('Verify InstantiationUtils', () => {
-
- const fullTemplatePromise = {
- ok: true,
- status: 200,
- text: () => "OK",
- json: () => {
- return Promise.resolve(fullTemplate)
- }
- }
-
- const instancePropertiesPromise = {
- ok: true,
- status: 200,
- text: () => "OK",
- json: () => {
- return Promise.resolve(instanceProperties)
- }
- }
-
- it('test parseJsonSchema output is correct', async () => {
- // Have to mock "editor" dom element for json editor to work in testing
- document.body.innerHTML = '<div id="editor"></div>';
-
- await expect((await InstantiationUtils.parseJsonSchema(fullTemplatePromise, instancePropertiesPromise)).jsonEditor).toBeTruthy()
- await expect((await InstantiationUtils.parseJsonSchema(fullTemplatePromise, instancePropertiesPromise)).fullTemplate).toBeTruthy()
- })
-}); \ No newline at end of file