Add a customValidation method to PolicyModal
[clamp.git] / ui-react / src / utils / OnapUtils.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2020 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  *
22  */
23
24 export default class OnapUtils {
25
26         constructor() {
27                 this.clickBlocked = false;
28         }
29
30         static jsonEditorErrorFormatter(errors) {
31
32                 let messages = [];
33                 let messagesOutputString = null;
34
35                 // errors is an array of JSON Editor "error" objects, where each
36                 // object looks like this:
37
38                 //      {
39                 //              message: "Please populate the required property "Threshold""
40                 //              path: "root.signatures.0"
41                 //              property: "required"
42                 //      }
43
44                 // In this function we concatenate all the messages, removing any duplicates,
45                 // and adding a newline between each message. The result returned is a single
46                 // string that can be displayed to the user in an alert message
47
48                 if (!Array.isArray(errors)) {
49                         console.error('jsoneEditorErrorFormatter was passed a non-array argument');
50                 } else {
51                         for (let ii=0; ii < errors.length; ++ii) {
52                                 if (!messages.includes(errors[ii].message)) {
53                                         messages.push(errors[ii].message);
54                                         if (messagesOutputString) {
55                                                 messagesOutputString += '\n' + errors[ii].message;
56                                         } else {
57                                                 messagesOutputString = errors[ii].message;
58                                         }
59                                 }
60                         }
61                 }
62
63                 return messagesOutputString;
64         }
65 }