Display VLM Entities Order by name

Issue-ID: SDC-1750
Change-Id: Ia73fa82b4f67530502df4fb4dfdcf9bb4ca2040c
Signed-off-by: svishnev <shlomo-stanisla.vishnevetskiy@amdocs.com>
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js
index d97f682..93e9348 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/LicenseModelConstants.js
@@ -36,3 +36,5 @@
         { enum: thresholdUnitType.PERCENTAGE, title: '%' }
     ]
 };
+
+export const SORTING_PROPERTY_NAME = 'name';
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js
index 5fcdad9..a148e6a 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsEditor.js
@@ -1,22 +1,24 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js';
 import EntitlementPoolsEditorView from './EntitlementPoolsEditorView.jsx';
 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 import LimitEditorActionHelper from '../limits/LimitEditorActionHelper.js';
 
@@ -25,7 +27,7 @@
         data,
         genericFieldInfo,
         formReady,
-        limitsList
+        limitsList = []
     } = entitlementPool.entitlementPoolEditor;
 
     let isFormValid = ValidationHelper.checkFormValid(genericFieldInfo);
@@ -51,7 +53,7 @@
         isFormValid,
         formReady,
         EPNames,
-        limitsList
+        limitsList: sortByStringProperty(limitsList, SORTING_PROPERTY_NAME)
     };
 };
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
index 819fb7d..4679b9e 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js
@@ -1,25 +1,27 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import EntitlementPoolsActionHelper from './EntitlementPoolsActionHelper.js';
 import EntitlementPoolsListEditorView, {
     generateConfirmationMsg
 } from './EntitlementPoolsListEditorView.jsx';
 import { actionTypes as globalMoadlActions } from 'nfvo-components/modal/GlobalModalConstants.js';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 const mapStateToProps = ({
     licenseModel: { entitlementPool, licenseModelEditor }
@@ -30,7 +32,10 @@
 
     return {
         vendorName,
-        entitlementPoolsList,
+        entitlementPoolsList: sortByStringProperty(
+            entitlementPoolsList,
+            SORTING_PROPERTY_NAME
+        ),
         isDisplayModal: Boolean(data),
         isModalInEditMode: Boolean(data && data.id)
     };
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js
index 55e2710..8d41b97 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js
@@ -1,25 +1,27 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import FeatureGroupsActionHelper from './FeatureGroupsActionHelper.js';
 import FeatureGroupListEditorView, {
     generateConfirmationMsg
 } from './FeatureGroupListEditorView.jsx';
 import i18n from 'nfvo-utils/i18n/i18n.js';
 import { actionTypes as globalMoadlActions } from 'nfvo-components/modal/GlobalModalConstants.js';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 export const mapStateToProps = ({
     licenseModel: { featureGroup, licenseModelEditor }
@@ -34,7 +36,10 @@
             show: Boolean(data),
             editMode: Boolean(data && data.id)
         },
-        featureGroupsList
+        featureGroupsList: sortByStringProperty(
+            featureGroupsList,
+            SORTING_PROPERTY_NAME
+        )
     };
 };
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js
index cba3973..fcb83b4 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js
@@ -1,23 +1,25 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import LicenseAgreementActionHelper from './LicenseAgreementActionHelper.js';
 import LicenseAgreementListEditorView from './LicenseAgreementListEditorView.jsx';
 import { actionTypes as globalMoadlActions } from 'nfvo-components/modal/GlobalModalConstants.js';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 const mapStateToProps = ({
     licenseModel: { licenseAgreement, licenseModelEditor }
@@ -29,7 +31,10 @@
     return {
         vendorName,
         version,
-        licenseAgreementList,
+        licenseAgreementList: sortByStringProperty(
+            licenseAgreementList,
+            SORTING_PROPERTY_NAME
+        ),
         isDisplayModal: Boolean(data),
         isModalInEditMode: Boolean(data && data.id)
     };
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js
index fa62bba..b4ad2e9 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsEditor.js
@@ -1,30 +1,32 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import LicenseKeyGroupsActionHelper from './LicenseKeyGroupsActionHelper.js';
 import LicenseKeyGroupsEditorView from './LicenseKeyGroupsEditorView.jsx';
 import LimitEditorActionHelper from '../limits/LimitEditorActionHelper.js';
 import ValidationHelper from 'sdc-app/common/helpers/ValidationHelper.js';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 const mapStateToProps = ({ licenseModel: { licenseKeyGroup } }) => {
     let {
         data,
         genericFieldInfo,
         formReady,
-        limitsList
+        limitsList = []
     } = licenseKeyGroup.licenseKeyGroupsEditor;
 
     let previousData,
@@ -50,7 +52,7 @@
         isFormValid,
         formReady,
         LKGNames,
-        limitsList
+        limitsList: sortByStringProperty(limitsList, SORTING_PROPERTY_NAME)
     };
 };
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js
index 6151c59..514e9b8 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js
@@ -1,20 +1,21 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
 import i18n from 'nfvo-utils/i18n/i18n.js';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 
 import { actionTypes as globalMoadlActions } from 'nfvo-components/modal/GlobalModalConstants.js';
 
@@ -22,6 +23,7 @@
 import LicenseKeyGroupsListEditorView, {
     generateConfirmationMsg
 } from './LicenseKeyGroupsListEditorView.jsx';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 const mapStateToProps = ({
     licenseModel: { licenseKeyGroup, licenseModelEditor }
@@ -32,7 +34,10 @@
 
     return {
         vendorName,
-        licenseKeyGroupsList,
+        licenseKeyGroupsList: sortByStringProperty(
+            licenseKeyGroupsList,
+            SORTING_PROPERTY_NAME
+        ),
         isDisplayModal: Boolean(data),
         isModalInEditMode: Boolean(data && data.id)
     };
diff --git a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverview.js b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverview.js
index 2b10e42..572b029 100644
--- a/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverview.js
+++ b/openecomp-ui/src/sdc-app/onboarding/licenseModel/overview/LicenseModelOverview.js
@@ -1,19 +1,20 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- *
- * 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.
- */
+/*
+* Copyright © 2016-2018 European Support Limited
+*
+* 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.
+*/
 import { connect } from 'react-redux';
+import sortByStringProperty from 'nfvo-utils/sortByStringProperty.js';
 import LicenseModelActionHelper from 'sdc-app/onboarding/licenseModel/LicenseModelActionHelper.js';
 import LicenseModelOverviewView from './LicenseModelOverviewView.jsx';
 import {
@@ -21,6 +22,7 @@
     selectedButton
 } from './LicenseModelOverviewConstants.js';
 import licenseModelOverviewActionHelper from './licenseModelOverviewActionHelper.js';
+import { SORTING_PROPERTY_NAME } from 'sdc-app/onboarding/licenseModel/LicenseModelConstants.js';
 
 export const mapStateToProps = ({
     licenseModel: {
@@ -78,12 +80,24 @@
                 ...curFeatureGroup,
                 itemType: overviewEditorHeaders.FEATURE_GROUP,
                 children: [
-                    ...(entitlementPoolsIds.length
-                        ? entitlementPoolsIds.reduce(reduceEntitlementPools, [])
-                        : []),
-                    ...(licenseKeyGroupsIds.length
-                        ? licenseKeyGroupsIds.reduce(reduceLicenseKeyGroups, [])
-                        : [])
+                    ...sortByStringProperty(
+                        entitlementPoolsIds.length
+                            ? entitlementPoolsIds.reduce(
+                                  reduceEntitlementPools,
+                                  []
+                              )
+                            : [],
+                        SORTING_PROPERTY_NAME
+                    ),
+                    ...sortByStringProperty(
+                        licenseKeyGroupsIds.length
+                            ? licenseKeyGroupsIds.reduce(
+                                  reduceLicenseKeyGroups,
+                                  []
+                              )
+                            : [],
+                        SORTING_PROPERTY_NAME
+                    )
                 ]
             });
         }
@@ -145,7 +159,10 @@
             ...licenseAgreement,
             itemType: overviewEditorHeaders.LICENSE_AGREEMENT,
             children: featureGroupsIds.length
-                ? featureGroupsIds.reduce(reduceFeatureGroups, [])
+                ? sortByStringProperty(
+                      featureGroupsIds.reduce(reduceFeatureGroups, []),
+                      SORTING_PROPERTY_NAME
+                  )
                 : []
         };
     };
@@ -177,15 +194,29 @@
     }
 
     let orphanDataList = [
-        ...featureGroup.featureGroupsList.reduce(checkFG, []),
-        ...entitlementPool.entitlementPoolsList.reduce(checkEP, []),
-        ...licenseKeyGroup.licenseKeyGroupsList.reduce(checkLG, [])
+        ...sortByStringProperty(
+            featureGroup.featureGroupsList.reduce(checkFG, []),
+            SORTING_PROPERTY_NAME
+        ),
+        ...sortByStringProperty(
+            entitlementPool.entitlementPoolsList.reduce(checkEP, []),
+            SORTING_PROPERTY_NAME
+        ),
+        ...sortByStringProperty(
+            licenseKeyGroup.licenseKeyGroupsList.reduce(checkLG, []),
+            SORTING_PROPERTY_NAME
+        )
     ];
 
     licensingDataList =
         licenseAgreement.licenseAgreementList &&
         licenseAgreement.licenseAgreementList.length
-            ? licenseAgreement.licenseAgreementList.map(mapLicenseAgreementData)
+            ? sortByStringProperty(
+                  licenseAgreement.licenseAgreementList.map(
+                      mapLicenseAgreementData
+                  ),
+                  SORTING_PROPERTY_NAME
+              )
             : [];
     let selectedTab = licenseModelOverview.selectedTab;
     // on first entry, we will decide what tab to open depending on data. if there are no connections, we will open the orphans