diff options
Diffstat (limited to 'gui-clamp/ui-react/src/components/dialogs/ACM/utils')
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 |