From 8e806aae327b3179a26e6627fd42c80f6ec615f4 Mon Sep 17 00:00:00 2001
From: sameer79 <findsameershaikh@yahoo.co.in>
Date: Wed, 9 Oct 2019 17:35:12 +0530
Subject: [PATCH] ATLAS-3439: Add User-defined properties in entity details
 page.

---
 dashboardv2/public/css/scss/common.scss            |  47 +++++-
 dashboardv2/public/css/scss/override.scss          |   3 +-
 dashboardv2/public/css/scss/panel.scss             |  35 +++-
 .../detail_page/DetailPageLayoutView_tmpl.html     |  15 +-
 .../entity/EntityDetailTableLayoutView_tmpl.html   |  44 +++--
 .../entity/EntityUserDefineItemView_tmpl.html      |  45 +++++
 .../entity/EntityUserDefineView_tmpl.html          |  65 ++++++++
 .../templates/search/AdvancedSearchInfo_tmpl.html  |   2 +-
 .../js/views/detail_page/DetailPageLayoutView.js   |  12 +-
 .../js/views/entity/EntityDetailTableLayoutView.js |   2 +-
 .../js/views/entity/EntityUserDefineItemView.js    |  98 +++++++++++
 .../public/js/views/entity/EntityUserDefineView.js | 184 +++++++++++++++++++++
 dashboardv3/public/css/scss/common.scss            |  43 +++++
 dashboardv3/public/css/scss/panel.scss             |  35 +++-
 dashboardv3/public/css/scss/table.scss             |   1 +
 .../detail_page/DetailPageLayoutView_tmpl.html     |  15 +-
 .../entity/EntityDetailTableLayoutView_tmpl.html   |  44 +++--
 .../entity/EntityUserDefineItemView_tmpl.html      |  45 +++++
 .../entity/EntityUserDefineView_tmpl.html          |  65 ++++++++
 .../js/views/detail_page/DetailPageLayoutView.js   |  12 +-
 .../js/views/entity/EntityDetailTableLayoutView.js |   2 +-
 .../js/views/entity/EntityUserDefineItemView.js    |  98 +++++++++++
 .../public/js/views/entity/EntityUserDefineView.js | 184 +++++++++++++++++++++
 23 files changed, 1042 insertions(+), 54 deletions(-)
 create mode 100644 dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html
 create mode 100644 dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html
 create mode 100644 dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
 create mode 100644 dashboardv2/public/js/views/entity/EntityUserDefineView.js
 create mode 100644 dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html
 create mode 100644 dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html
 create mode 100644 dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
 create mode 100644 dashboardv3/public/js/views/entity/EntityUserDefineView.js

diff --git a/dashboardv2/public/css/scss/common.scss b/dashboardv2/public/css/scss/common.scss
index d42e5a9..b24c3c3 100644
--- a/dashboardv2/public/css/scss/common.scss
+++ b/dashboardv2/public/css/scss/common.scss
@@ -15,7 +15,7 @@
 // limitations under the License.
 
 
-/* common.scss */ 
+/* common.scss */
 
 .readOnly {
 
@@ -201,4 +201,47 @@ pre {
     .panel-default>.panel-heading {
         cursor: pointer;
     }
-}
\ No newline at end of file
+}
+
+.custom-table {
+    width: 100%;
+
+    .custom-tr {
+        margin-left: 15px;
+        margin-right: 15px;
+
+        .custom-col-0,
+        .custom-col-1,
+        .custom-col-2 {
+            vertical-align: top;
+            display: inline-block;
+
+            textarea {
+                resize: vertical;
+                height: 34px;
+                min-height: 34px;
+                max-height: 70px;
+            }
+        }
+
+
+        .custom-col-0{
+            text-align: center;
+            vertical-align: middle;
+            width: 2%;
+        }
+
+        .custom-col-1{
+            width: 43%;
+        }
+
+        .custom-col-2{
+            text-align: center;
+            width: 10%;
+        }
+    }
+}
+
+.errorMsg {
+    color: $red;
+}
diff --git a/dashboardv2/public/css/scss/override.scss b/dashboardv2/public/css/scss/override.scss
index c8a1d89..c95ee58 100644
--- a/dashboardv2/public/css/scss/override.scss
+++ b/dashboardv2/public/css/scss/override.scss
@@ -128,6 +128,7 @@ td {
     pre.scroll-y {
         max-height: 200px;
         overflow-y: auto;
+        word-break: break-word;
     }
 }
 
@@ -469,4 +470,4 @@ div.columnmanager-dropdown-container {
 
 .w30 {
     width: 30% !important;
-}
\ No newline at end of file
+}
diff --git a/dashboardv2/public/css/scss/panel.scss b/dashboardv2/public/css/scss/panel.scss
index c1ac042..52b3dbe 100644
--- a/dashboardv2/public/css/scss/panel.scss
+++ b/dashboardv2/public/css/scss/panel.scss
@@ -118,4 +118,37 @@
             }
         }
     }
-}
\ No newline at end of file
+}
+
+.panel-default.custom-panel>.panel-heading {
+    color: $black;
+    cursor: pointer;
+    border-bottom: none;
+    display: inline-block;
+
+    .panel-title {
+        font-weight: normal;
+        a:hover {
+            color: $black;
+            opacity: 0.7;
+        }
+    }
+    .btn-group {
+        margin-top: 3px;
+    }
+}
+
+.panel-default.custom-panel>.panel-actions {
+    float: right;
+    margin-top: 15px;
+    button {
+        margin-right: 10px;
+    }
+}
+
+.panel-default.custom-panel>.panel-collapse>.panel-body {
+    border-top: none;
+}
+.panel-default.custom-panel>.panel-heading > .btn-group > button {
+    color: $black;
+}
diff --git a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index c395799..d35debc 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -65,9 +65,16 @@
 <div>
     <div class="tab-content">
         <div id="tab-details" role="properties" class="tab-pane active animated fadeIn">
-            <div id="r_entityDetailTableLayoutView">
-                <div class="fontLoader-relative">
-                    <i class="fa fa-refresh fa-spin-custom"></i>
+            <div class="row">
+                <div class="col-md-6">
+                    <div id="r_entityDetailTableLayoutView">
+                        <div class="fontLoader-relative">
+                            <i class="fa fa-refresh fa-spin-custom"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-6">
+                    <div id="r_entityUserDefineView"></div>
                 </div>
             </div>
         </div>
@@ -122,4 +129,4 @@
         </div>
     </div>
 </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/dashboardv2/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html
index 1c01077..18a9435 100644
--- a/dashboardv2/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html
@@ -14,23 +14,33 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="entity-detail-table">
-    <div class="entity-detail-table-toggle">
-        <div class="pretty p-switch p-fill">
-            <input type="checkbox" data-id="noValueToggle" />
-            <div class="state p-primary">
-                <label>Show Empty Values</label>
+<div class="panel-group" id="accordion">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="entity">
+        <div class="panel-heading" data-toggle="collapse" href="#collapse1" aria-expanded="true" style="width: 58%">
+            <h4 class="panel-title">
+                <a>Technical properties </a>
+            </h4>
+            <div class="btn-group pull-left">
+                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
+            </div>
+        </div>
+        <div class="panel-actions">
+            <div class="pretty p-switch p-fill">
+                <input type="checkbox" data-id="noValueToggle" />
+                <div class="state p-primary">
+                    <label>Show Empty Values</label>
+                </div>
+            </div>
+        </div>
+        <div id="collapse1" class="panel-collapse collapse in">
+            <div class="panel-body">
+                    <div class="entity-detail-table">
+                        <table class="table">
+                            <tbody data-id="detailValue" class="hide-empty-value">
+                            </tbody>
+                        </table>
+                    </div>
             </div>
         </div>
     </div>
-    <table class="table table-quickMenu">
-        <thead>
-            <tr>
-                <th>Key</th>
-                <th>Value</th>
-            </tr>
-        </thead>
-        <tbody data-id="detailValue" class="hide-empty-value">
-        </tbody>
-    </table>
-</div>
\ No newline at end of file
+</div>
diff --git a/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html
new file mode 100644
index 0000000..a06039f
--- /dev/null
+++ b/dashboardv2/public/js/templates/entity/EntityUserDefineItemView_tmpl.html
@@ -0,0 +1,45 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+
+<div data-id="userDefineItems">
+    <table class="custom-table">
+        {{#each items}}
+            <tr class="custom-tr">
+                <td class="custom-col-1">
+                    <input placeholder="key" type="text"  data-type="key" data-index={{@index}} class="form-control" value={{key}}></input>
+                    <p class="errorMsg"></p>
+                </td >
+                <td  class="custom-col-0"> : </td >
+                <td  class="custom-col-1">
+                    <textarea placeholder="value"  data-type="value" data-index={{@index}} class="form-control" class="form-control">{{value}}</textarea>
+                    <p class="errorMsg"></p>
+                </td >
+                <td  class="custom-col-2">
+                    <button class="btn btn-default btn-sm" title=""  data-index={{@index}} data-id="deleteItem">
+                        <i class="fa fa-minus"> </i>
+                    </button>
+                    <button class="btn btn-default btn-sm" title="" data-index={{@index}} data-id="addItem">
+                        <i class="fa fa-plus"> </i>
+                    </button>
+                </td >
+            </tr>
+        {{/each}}
+        {{#ifCond items.length "===" 0}}
+            No properties have been created yet. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a>
+        {{/ifCond}}
+    </table>
+</div>
diff --git a/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html b/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html
new file mode 100644
index 0000000..e3f4791
--- /dev/null
+++ b/dashboardv2/public/js/templates/entity/EntityUserDefineView_tmpl.html
@@ -0,0 +1,65 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="panel-group" id="accordion">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="userDefine">
+        <div class="panel-heading" data-toggle="collapse" href="#collapse2" aria-expanded="true" {{#ifCond customAttibutes.length ">" 0}} style="width: 60%" {{else}} style="width: 100%" {{/ifCond}}>
+            <h4 class="panel-title">
+                <a>User-defined properties </a>
+            </h4>
+            <div class="btn-group pull-left">
+                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
+            </div>
+        </div>
+        {{#ifCond customAttibutes.length ">" 0}}
+            <div class="panel-actions">
+                {{#ifCond readOnlyEntity "===" false}}
+                    <button class="btn btn-action btn-sm"  data-id="editAttr" data-original-title="Edit User-Defined Attributes">Edit</button>
+                {{/ifCond}}
+            </div>
+        {{/ifCond}}
+        <div id="collapse2" class="panel-collapse collapse in">
+            <div class="panel-body">
+                    <div class="row">
+                        <div class="col-md-12">
+                            <div class="entity-detail-table">
+                                <table class="table">
+                                    {{#ifCond customAttibutes.length "===" 0}}
+                                        <span>No properties have been created yet.
+                                            {{#ifCond readOnlyEntity "==" false}}
+                                                <span>To add a property, click <a href="javascript:void(0)" data-id="editAttr">here</a></span>
+                                            {{/ifCond}}
+                                        </span>
+                                    {{/ifCond}}
+                                    <tbody>
+                                        {{#each customAttibutes}}
+                                            <tr>
+                                                <td>
+                                                    <div class="scroll-y">{{key}}</div>                                              </div></td>
+                                                <td>
+                                                    <div class="scroll-y">{{value}}</div>
+                                                </td>
+                                            </tr>
+                                        {{/each}}
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/dashboardv2/public/js/templates/search/AdvancedSearchInfo_tmpl.html b/dashboardv2/public/js/templates/search/AdvancedSearchInfo_tmpl.html
index 64f1a31..7746974 100644
--- a/dashboardv2/public/js/templates/search/AdvancedSearchInfo_tmpl.html
+++ b/dashboardv2/public/js/templates/search/AdvancedSearchInfo_tmpl.html
@@ -31,6 +31,6 @@
         </li>
     </ul>
     <h5 style="padding-left: 22.5px;">
-        <a href="http://atlas.apache.org/#/SearchAdvance" target="_blank"><i class="fa fa-info-circle" aria-hidden="true"></i> &nbsp; More sample queries and use-cases</a>
+        <a href="http://atlas.apache.org/Search-Advanced.html" target="_blank"><i class="fa fa-info-circle" aria-hidden="true"></i> &nbsp; More sample queries and use-cases</a>
     </h5>
 </div>
\ No newline at end of file
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 5fe5a9e..4f48693 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -45,7 +45,8 @@ define(['require',
                 RAuditTableLayoutView: "#r_auditTableLayoutView",
                 RReplicationAuditTableLayoutView: "#r_replicationAuditTableLayoutView",
                 RProfileLayoutView: "#r_profileLayoutView",
-                RRelationshipLayoutView: "#r_relationshipLayoutView"
+                RRelationshipLayoutView: "#r_relationshipLayoutView",
+                REntityUserDefineView: "#r_entityUserDefineView",
             },
             /** ui selector cache */
             ui: {
@@ -243,6 +244,7 @@ define(['require',
                         })()
                     }
                     this.renderEntityDetailTableLayoutView(obj);
+                    this.renderEntityUserDefineView(obj);
                     this.renderRelationshipLayoutView(obj);
                     this.renderAuditTableLayoutView(obj);
                     this.renderTagTableLayoutView(obj);
@@ -484,6 +486,12 @@ define(['require',
                     that.REntityDetailTableLayoutView.show(new EntityDetailTableLayoutView(obj));
                 });
             },
+            renderEntityUserDefineView: function(obj) {
+                var that = this;
+                require(['views/entity/EntityUserDefineView'], function(EntityUserDefineView) {
+                    that.REntityUserDefineView.show(new EntityUserDefineView(obj));
+                });
+            },
             renderTagTableLayoutView: function(obj) {
                 var that = this;
                 require(['views/tag/TagDetailTableLayoutView'], function(TagDetailTableLayoutView) {
@@ -545,4 +553,4 @@ define(['require',
             }
         });
     return DetailPageLayoutView;
-});
\ No newline at end of file
+});
diff --git a/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js b/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
index 381d99e..6572292 100644
--- a/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
@@ -83,4 +83,4 @@ define(['require',
             }
         });
     return EntityDetailTableLayoutView;
-});
\ No newline at end of file
+});
diff --git a/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js b/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
new file mode 100644
index 0000000..a649ca8
--- /dev/null
+++ b/dashboardv2/public/js/views/entity/EntityUserDefineItemView.js
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+define(['require',
+    'backbone',
+    'hbs!tmpl/entity/EntityUserDefineItemView_tmpl'
+
+], function(require, Backbone, EntityUserDefineItemView_tmpl) {
+    'use strict';
+
+    return Backbone.Marionette.ItemView.extend({
+        _viewName: 'EntityUserDefineItemView',
+
+        template: EntityUserDefineItemView_tmpl,
+
+        templateHelpers: function() {
+            return {
+                items: this.items
+            };
+        },
+
+        /** Layout sub regions */
+        regions: {},
+
+        /** ui selector cache */
+        ui: {
+            itemKey: "[data-type='key']",
+            itemValue: "[data-type='value']",
+            addItem: "[data-id='addItem']",
+            deleteItem: "[data-id='deleteItem']"
+        },
+        /** ui events hash */
+        events: function() {
+            var events = {};
+            events['input ' + this.ui.itemKey] = 'onItemKeyChange';
+            events['input ' + this.ui.itemValue] = 'onItemValueChange';
+            events['click ' + this.ui.addItem] = 'onAddItemClick';
+            events['click ' + this.ui.deleteItem] = 'onDeleteItemClick';
+            return events;
+        },
+
+        /**
+         * intialize a new GlobalExclusionComponentView Layout
+         * @constructs
+         */
+        initialize: function(options) {
+            var that = this;
+            this.editMode = options.mode;
+            if (options.items.length === 0) {
+                this.items = [{ key: "", value: "", mode: this.editMode}];
+
+            } else {
+                this.items = options.items.map(function(m) {
+                    m.mode = that.editMode;
+                    return m;
+                });
+            }
+        },
+        onRender: function() {
+
+        },
+        onAddItemClick: function(e) {
+            var el = e.currentTarget;
+            this.items.splice(parseInt(el.dataset.index) + 1, 0, { key: "", value: "", mode: this.editMode});
+            this.render();
+        },
+        onDeleteItemClick: function(e) {
+            var el = e.currentTarget;
+            this.items.splice(el.dataset.index, 1);
+            this.render();
+        },
+        onItemKeyChange: function (e) {
+            var el = e.currentTarget;
+            var val = el.value;
+            this.items[ el.dataset.index].key = val;
+        },
+        onItemValueChange: function (e) {
+            var el = e.currentTarget;
+            var val = el.value;
+            this.items[ el.dataset.index].value = el.value;
+        }
+    });
+
+});
diff --git a/dashboardv2/public/js/views/entity/EntityUserDefineView.js b/dashboardv2/public/js/views/entity/EntityUserDefineView.js
new file mode 100644
index 0000000..4fc2f02
--- /dev/null
+++ b/dashboardv2/public/js/views/entity/EntityUserDefineView.js
@@ -0,0 +1,184 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+'backbone',
+'hbs!tmpl/entity/EntityUserDefineView_tmpl',
+'views/entity/EntityUserDefineItemView',
+'utils/CommonViewFunction',
+'modules/Modal',
+'models/VEntity',
+'utils/Utils',
+'utils/Enums'
+], function(require, Backbone, EntityUserDefineView_tmpl, EntityUserDefineItemView, CommonViewFunction, Modal, VEntity, Utils, Enums) {
+'use strict';
+
+    return Backbone.Marionette.LayoutView.extend({
+        _viewName: 'EntityUserDefineView',
+        template: EntityUserDefineView_tmpl,
+        templateHelpers: function() {
+            return {
+                customAttibutes: this.customAttibutes,
+                readOnlyEntity : this.readOnlyEntity
+            };
+        },
+        ui: {
+            addAttr: "[data-id='addAttr']",
+            editAttr: "[data-id='editAttr']",
+            deleteAttr: "[data-id='deleteAttr']"
+        },
+        events: function() {
+            var events = {};
+            events["click " + this.ui.editAttr] = 'onEditAttrClick';
+            return events;
+        },
+        initialize: function(options) {
+            _.extend(this, _.pick(options, 'entity'));
+            this.userDefineAttr = this.entity.customAttributes || [];
+            this.editMode = false;
+            this.readOnlyEntity = Enums.entityStateReadOnly[this.entity.status];
+            this.entityModel = new VEntity(this.entity);
+            this.generateTableFields();
+        },
+        onRender: function() {
+        },
+        bindEvents: {},
+        customAtributesFunc: function() {
+
+        },
+        generateTableFields: function() {
+            var that = this;
+            this.customAttibutes = [];
+            _.each(Object.keys(that.userDefineAttr), function(key, i) {
+                that.customAttibutes.push({
+                    key: key,
+                    value: that.userDefineAttr[key]
+                });
+            });
+        },
+        onEditAttrClick: function (e) {
+            this.editMode = true;
+            var options = {items: this.customAttibutes, mode: true};
+            var view = new EntityUserDefineItemView(options);
+            var modalObj = {
+                title: 'User-Defined Attributes',
+                content: view,
+                okText: 'Save',
+                okCloses: false,
+                cancelText: "Cancel",
+                mainClass: 'modal-lg',
+                allowCancel: true,
+            };
+           this.setAttributeModal(modalObj);
+        },
+        structureAttributes: function (list) {
+            var obj={}
+            list.map(function (o) {
+                obj[o.key] = o.value;
+            });
+            return obj;
+        },
+        saveAttributes: function (list) {
+            var that = this;
+            var entityJson = that.entityModel.toJSON();
+            var properties = that.structureAttributes(list);
+            entityJson.customAttributes = properties;
+            var payload = {entity: entityJson};
+            that.entityModel.createOreditEntity({
+                data: JSON.stringify(payload),
+                type: 'POST',
+                success: function() {
+                    var msg = "User-defined attribute(s) updated successfully";
+                    that.customAttibutes = list;
+                    Utils.notifySuccess({
+                        content: msg
+                    });
+                    that.modal && that.modal.trigger('cancel');
+                    that.render();
+                },
+                error: function (e) {
+                    that.editMode = false;
+                    Utils.notifySuccess({
+                        content: e.message
+                    });
+                    that.modal && that.modal.$el.find('button.ok').attr("disabled", false);
+                },
+                complete: function () {
+                    that.modal && that.modal.$el.find('button.ok').attr("disabled", false);
+                    that.editMode = false;
+                }
+            });
+        },
+        setAttributeModal: function(modalObj) {
+            var self = this;
+            this.modal = new Modal(modalObj);
+            this.modal.open();
+            this. modal.on('ok', function() {
+                self.modal.$el.find('button.ok').attr("disabled", true);
+                var list = self.modal.$el.find("[data-type]"),
+                    keyMap = new Map(),
+                    validation = true,
+                    hasDup = [],
+                    dataList = [];
+                Array.prototype.push.apply(dataList, self.modal.options.content.items);
+                for(var i = 0; i < list.length ; i++) {
+                    var input = list[i],
+                        type = input.dataset.type,
+                        pEl = self.modal.$el.find(input.parentElement).find('p'),
+                        classes = 'form-control',
+                        val = input.value.trim();
+                        pEl[0].innerText = "";
+
+                    if (val === '') {
+                        classes = 'form-control errorClass';
+                        validation = false;
+                        pEl[0].innerText = 'Required!';
+                    } else {
+                        if (input.tagName === 'INPUT') {
+                            var duplicates = dataList.filter(function(c) {
+                                return c.key === val;
+                            });
+                            if (keyMap.has(val) || duplicates.length > 1 ) {
+                                classes = 'form-control errorClass';
+                                hasDup.push('duplicate');
+                                pEl[0].innerText = 'Duplicate key';
+                            } else {
+                                keyMap.set(val, val);
+                            }
+                        }
+                    }
+                    input.setAttribute('class', classes);
+                }
+
+                if (validation && hasDup.length === 0) {
+                    self.saveAttributes(self.modal.options.content.items);
+                } else {
+                    self.modal.$el.find('button.ok').attr("disabled", false);
+                }
+            });
+            this.modal.on('closeModal', function() {
+                self.editMode = false;
+                self.modal.trigger('cancel');
+            });
+        },
+        enableModalButton: function () {
+            var self = this;
+            self.modal.$el.find('button.ok').attr("disabled", false);
+        }
+    });
+});
diff --git a/dashboardv3/public/css/scss/common.scss b/dashboardv3/public/css/scss/common.scss
index 26bf82a..dfe0e4f 100644
--- a/dashboardv3/public/css/scss/common.scss
+++ b/dashboardv3/public/css/scss/common.scss
@@ -201,3 +201,46 @@ pre {
     bottom: 0;
     background: white;
 }
+
+.custom-table {
+    width: 100%;
+
+    .custom-tr {
+        margin-left: 15px;
+        margin-right: 15px;
+
+        .custom-col-0,
+        .custom-col-1,
+        .custom-col-2 {
+            vertical-align: top;
+            display: inline-block;
+
+            textarea {
+                resize: vertical;
+                height: 34px;
+                min-height: 34px;
+                max-height: 70px;
+            }
+        }
+
+
+        .custom-col-0{
+            text-align: center;
+            vertical-align: middle;
+            width: 2%;
+        }
+
+        .custom-col-1{
+            width: 43%;
+        }
+
+        .custom-col-2{
+            text-align: center;
+            width: 10%;
+        }
+    }
+}
+
+.errorMsg {
+    color: $red;
+}
diff --git a/dashboardv3/public/css/scss/panel.scss b/dashboardv3/public/css/scss/panel.scss
index dfa0872..b06e63c 100644
--- a/dashboardv3/public/css/scss/panel.scss
+++ b/dashboardv3/public/css/scss/panel.scss
@@ -134,4 +134,37 @@
             }
         }
     }
-}
\ No newline at end of file
+}
+
+.panel-default.custom-panel>.panel-heading {
+    color: $black;
+    cursor: pointer;
+    border-bottom: none;
+    display: inline-block;
+
+    .panel-title {
+        font-weight: normal;
+        a:hover {
+            color: $black;
+            opacity: 0.7;
+        }
+    }
+    .btn-group {
+        margin-top: 3px;
+    }
+}
+
+.panel-default.custom-panel>.panel-actions {
+    float: right;
+    margin-top: 15px;
+    button {
+        margin-right: 10px;
+    }
+}
+
+.panel-default.custom-panel>.panel-collapse>.panel-body {
+    border-top: none;
+}
+.panel-default.custom-panel>.panel-heading > .btn-group > button {
+    color: $black;
+}
diff --git a/dashboardv3/public/css/scss/table.scss b/dashboardv3/public/css/scss/table.scss
index 0f8ca75..06fb29b 100644
--- a/dashboardv3/public/css/scss/table.scss
+++ b/dashboardv3/public/css/scss/table.scss
@@ -212,6 +212,7 @@ td {
     pre.scroll-y {
         max-height: 200px;
         overflow-y: auto;
+        word-break: break-word;
     }
 
     &.searchTableName {
diff --git a/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html b/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index 6519863..9c7cb81 100644
--- a/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -68,9 +68,16 @@
 <div>
     <div class="tab-content">
         <div id="tab-details" role="properties" class="tab-pane active animated fadeIn">
-            <div id="r_entityDetailTableLayoutView">
-                <div class="fontLoader-relative">
-                    <i class="fa fa-refresh fa-spin-custom"></i>
+            <div class="row">
+                <div class="col-md-6">
+                    <div id="r_entityDetailTableLayoutView">
+                        <div class="fontLoader-relative">
+                            <i class="fa fa-refresh fa-spin-custom"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-6">
+                    <div id="r_entityUserDefineView"></div>
                 </div>
             </div>
         </div>
@@ -125,4 +132,4 @@
         </div>
     </div>
 </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/dashboardv3/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html
index 1c01077..18a9435 100644
--- a/dashboardv3/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/entity/EntityDetailTableLayoutView_tmpl.html
@@ -14,23 +14,33 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="entity-detail-table">
-    <div class="entity-detail-table-toggle">
-        <div class="pretty p-switch p-fill">
-            <input type="checkbox" data-id="noValueToggle" />
-            <div class="state p-primary">
-                <label>Show Empty Values</label>
+<div class="panel-group" id="accordion">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="entity">
+        <div class="panel-heading" data-toggle="collapse" href="#collapse1" aria-expanded="true" style="width: 58%">
+            <h4 class="panel-title">
+                <a>Technical properties </a>
+            </h4>
+            <div class="btn-group pull-left">
+                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
+            </div>
+        </div>
+        <div class="panel-actions">
+            <div class="pretty p-switch p-fill">
+                <input type="checkbox" data-id="noValueToggle" />
+                <div class="state p-primary">
+                    <label>Show Empty Values</label>
+                </div>
+            </div>
+        </div>
+        <div id="collapse1" class="panel-collapse collapse in">
+            <div class="panel-body">
+                    <div class="entity-detail-table">
+                        <table class="table">
+                            <tbody data-id="detailValue" class="hide-empty-value">
+                            </tbody>
+                        </table>
+                    </div>
             </div>
         </div>
     </div>
-    <table class="table table-quickMenu">
-        <thead>
-            <tr>
-                <th>Key</th>
-                <th>Value</th>
-            </tr>
-        </thead>
-        <tbody data-id="detailValue" class="hide-empty-value">
-        </tbody>
-    </table>
-</div>
\ No newline at end of file
+</div>
diff --git a/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html
new file mode 100644
index 0000000..a06039f
--- /dev/null
+++ b/dashboardv3/public/js/templates/entity/EntityUserDefineItemView_tmpl.html
@@ -0,0 +1,45 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+
+<div data-id="userDefineItems">
+    <table class="custom-table">
+        {{#each items}}
+            <tr class="custom-tr">
+                <td class="custom-col-1">
+                    <input placeholder="key" type="text"  data-type="key" data-index={{@index}} class="form-control" value={{key}}></input>
+                    <p class="errorMsg"></p>
+                </td >
+                <td  class="custom-col-0"> : </td >
+                <td  class="custom-col-1">
+                    <textarea placeholder="value"  data-type="value" data-index={{@index}} class="form-control" class="form-control">{{value}}</textarea>
+                    <p class="errorMsg"></p>
+                </td >
+                <td  class="custom-col-2">
+                    <button class="btn btn-default btn-sm" title=""  data-index={{@index}} data-id="deleteItem">
+                        <i class="fa fa-minus"> </i>
+                    </button>
+                    <button class="btn btn-default btn-sm" title="" data-index={{@index}} data-id="addItem">
+                        <i class="fa fa-plus"> </i>
+                    </button>
+                </td >
+            </tr>
+        {{/each}}
+        {{#ifCond items.length "===" 0}}
+            No properties have been created yet. To add a property, click <a href="javascript:void(0)" data-id="addItem">here</a>
+        {{/ifCond}}
+    </table>
+</div>
diff --git a/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html b/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html
new file mode 100644
index 0000000..e3f4791
--- /dev/null
+++ b/dashboardv3/public/js/templates/entity/EntityUserDefineView_tmpl.html
@@ -0,0 +1,65 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="panel-group" id="accordion">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon" data-id="userDefine">
+        <div class="panel-heading" data-toggle="collapse" href="#collapse2" aria-expanded="true" {{#ifCond customAttibutes.length ">" 0}} style="width: 60%" {{else}} style="width: 100%" {{/ifCond}}>
+            <h4 class="panel-title">
+                <a>User-defined properties </a>
+            </h4>
+            <div class="btn-group pull-left">
+                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
+            </div>
+        </div>
+        {{#ifCond customAttibutes.length ">" 0}}
+            <div class="panel-actions">
+                {{#ifCond readOnlyEntity "===" false}}
+                    <button class="btn btn-action btn-sm"  data-id="editAttr" data-original-title="Edit User-Defined Attributes">Edit</button>
+                {{/ifCond}}
+            </div>
+        {{/ifCond}}
+        <div id="collapse2" class="panel-collapse collapse in">
+            <div class="panel-body">
+                    <div class="row">
+                        <div class="col-md-12">
+                            <div class="entity-detail-table">
+                                <table class="table">
+                                    {{#ifCond customAttibutes.length "===" 0}}
+                                        <span>No properties have been created yet.
+                                            {{#ifCond readOnlyEntity "==" false}}
+                                                <span>To add a property, click <a href="javascript:void(0)" data-id="editAttr">here</a></span>
+                                            {{/ifCond}}
+                                        </span>
+                                    {{/ifCond}}
+                                    <tbody>
+                                        {{#each customAttibutes}}
+                                            <tr>
+                                                <td>
+                                                    <div class="scroll-y">{{key}}</div>                                              </div></td>
+                                                <td>
+                                                    <div class="scroll-y">{{value}}</div>
+                                                </td>
+                                            </tr>
+                                        {{/each}}
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
index 682feb3..e1ab970 100644
--- a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
@@ -45,7 +45,8 @@ define(['require',
                 RAuditTableLayoutView: "#r_auditTableLayoutView",
                 RReplicationAuditTableLayoutView: "#r_replicationAuditTableLayoutView",
                 RProfileLayoutView: "#r_profileLayoutView",
-                RRelationshipLayoutView: "#r_relationshipLayoutView"
+                RRelationshipLayoutView: "#r_relationshipLayoutView",
+                REntityUserDefineView: "#r_entityUserDefineView",
             },
             /** ui selector cache */
             ui: {
@@ -249,6 +250,7 @@ define(['require',
                         })()
                     }
                     this.renderEntityDetailTableLayoutView(obj);
+                    this.renderEntityUserDefineView(obj);
                     this.renderRelationshipLayoutView(obj);
                     this.renderAuditTableLayoutView(obj);
                     this.renderTagTableLayoutView(obj);
@@ -496,6 +498,12 @@ define(['require',
                     that.REntityDetailTableLayoutView.show(new EntityDetailTableLayoutView(obj));
                 });
             },
+            renderEntityUserDefineView: function(obj) {
+                var that = this;
+                require(['views/entity/EntityUserDefineView'], function(EntityUserDefineView) {
+                    that.REntityUserDefineView.show(new EntityUserDefineView(obj));
+                });
+            },
             renderTagTableLayoutView: function(obj) {
                 var that = this;
                 require(['views/tag/TagDetailTableLayoutView'], function(TagDetailTableLayoutView) {
@@ -558,4 +566,4 @@ define(['require',
             }
         });
     return DetailPageLayoutView;
-});
\ No newline at end of file
+});
diff --git a/dashboardv3/public/js/views/entity/EntityDetailTableLayoutView.js b/dashboardv3/public/js/views/entity/EntityDetailTableLayoutView.js
index 381d99e..6572292 100644
--- a/dashboardv3/public/js/views/entity/EntityDetailTableLayoutView.js
+++ b/dashboardv3/public/js/views/entity/EntityDetailTableLayoutView.js
@@ -83,4 +83,4 @@ define(['require',
             }
         });
     return EntityDetailTableLayoutView;
-});
\ No newline at end of file
+});
diff --git a/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js b/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
new file mode 100644
index 0000000..a649ca8
--- /dev/null
+++ b/dashboardv3/public/js/views/entity/EntityUserDefineItemView.js
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+define(['require',
+    'backbone',
+    'hbs!tmpl/entity/EntityUserDefineItemView_tmpl'
+
+], function(require, Backbone, EntityUserDefineItemView_tmpl) {
+    'use strict';
+
+    return Backbone.Marionette.ItemView.extend({
+        _viewName: 'EntityUserDefineItemView',
+
+        template: EntityUserDefineItemView_tmpl,
+
+        templateHelpers: function() {
+            return {
+                items: this.items
+            };
+        },
+
+        /** Layout sub regions */
+        regions: {},
+
+        /** ui selector cache */
+        ui: {
+            itemKey: "[data-type='key']",
+            itemValue: "[data-type='value']",
+            addItem: "[data-id='addItem']",
+            deleteItem: "[data-id='deleteItem']"
+        },
+        /** ui events hash */
+        events: function() {
+            var events = {};
+            events['input ' + this.ui.itemKey] = 'onItemKeyChange';
+            events['input ' + this.ui.itemValue] = 'onItemValueChange';
+            events['click ' + this.ui.addItem] = 'onAddItemClick';
+            events['click ' + this.ui.deleteItem] = 'onDeleteItemClick';
+            return events;
+        },
+
+        /**
+         * intialize a new GlobalExclusionComponentView Layout
+         * @constructs
+         */
+        initialize: function(options) {
+            var that = this;
+            this.editMode = options.mode;
+            if (options.items.length === 0) {
+                this.items = [{ key: "", value: "", mode: this.editMode}];
+
+            } else {
+                this.items = options.items.map(function(m) {
+                    m.mode = that.editMode;
+                    return m;
+                });
+            }
+        },
+        onRender: function() {
+
+        },
+        onAddItemClick: function(e) {
+            var el = e.currentTarget;
+            this.items.splice(parseInt(el.dataset.index) + 1, 0, { key: "", value: "", mode: this.editMode});
+            this.render();
+        },
+        onDeleteItemClick: function(e) {
+            var el = e.currentTarget;
+            this.items.splice(el.dataset.index, 1);
+            this.render();
+        },
+        onItemKeyChange: function (e) {
+            var el = e.currentTarget;
+            var val = el.value;
+            this.items[ el.dataset.index].key = val;
+        },
+        onItemValueChange: function (e) {
+            var el = e.currentTarget;
+            var val = el.value;
+            this.items[ el.dataset.index].value = el.value;
+        }
+    });
+
+});
diff --git a/dashboardv3/public/js/views/entity/EntityUserDefineView.js b/dashboardv3/public/js/views/entity/EntityUserDefineView.js
new file mode 100644
index 0000000..4fc2f02
--- /dev/null
+++ b/dashboardv3/public/js/views/entity/EntityUserDefineView.js
@@ -0,0 +1,184 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+'backbone',
+'hbs!tmpl/entity/EntityUserDefineView_tmpl',
+'views/entity/EntityUserDefineItemView',
+'utils/CommonViewFunction',
+'modules/Modal',
+'models/VEntity',
+'utils/Utils',
+'utils/Enums'
+], function(require, Backbone, EntityUserDefineView_tmpl, EntityUserDefineItemView, CommonViewFunction, Modal, VEntity, Utils, Enums) {
+'use strict';
+
+    return Backbone.Marionette.LayoutView.extend({
+        _viewName: 'EntityUserDefineView',
+        template: EntityUserDefineView_tmpl,
+        templateHelpers: function() {
+            return {
+                customAttibutes: this.customAttibutes,
+                readOnlyEntity : this.readOnlyEntity
+            };
+        },
+        ui: {
+            addAttr: "[data-id='addAttr']",
+            editAttr: "[data-id='editAttr']",
+            deleteAttr: "[data-id='deleteAttr']"
+        },
+        events: function() {
+            var events = {};
+            events["click " + this.ui.editAttr] = 'onEditAttrClick';
+            return events;
+        },
+        initialize: function(options) {
+            _.extend(this, _.pick(options, 'entity'));
+            this.userDefineAttr = this.entity.customAttributes || [];
+            this.editMode = false;
+            this.readOnlyEntity = Enums.entityStateReadOnly[this.entity.status];
+            this.entityModel = new VEntity(this.entity);
+            this.generateTableFields();
+        },
+        onRender: function() {
+        },
+        bindEvents: {},
+        customAtributesFunc: function() {
+
+        },
+        generateTableFields: function() {
+            var that = this;
+            this.customAttibutes = [];
+            _.each(Object.keys(that.userDefineAttr), function(key, i) {
+                that.customAttibutes.push({
+                    key: key,
+                    value: that.userDefineAttr[key]
+                });
+            });
+        },
+        onEditAttrClick: function (e) {
+            this.editMode = true;
+            var options = {items: this.customAttibutes, mode: true};
+            var view = new EntityUserDefineItemView(options);
+            var modalObj = {
+                title: 'User-Defined Attributes',
+                content: view,
+                okText: 'Save',
+                okCloses: false,
+                cancelText: "Cancel",
+                mainClass: 'modal-lg',
+                allowCancel: true,
+            };
+           this.setAttributeModal(modalObj);
+        },
+        structureAttributes: function (list) {
+            var obj={}
+            list.map(function (o) {
+                obj[o.key] = o.value;
+            });
+            return obj;
+        },
+        saveAttributes: function (list) {
+            var that = this;
+            var entityJson = that.entityModel.toJSON();
+            var properties = that.structureAttributes(list);
+            entityJson.customAttributes = properties;
+            var payload = {entity: entityJson};
+            that.entityModel.createOreditEntity({
+                data: JSON.stringify(payload),
+                type: 'POST',
+                success: function() {
+                    var msg = "User-defined attribute(s) updated successfully";
+                    that.customAttibutes = list;
+                    Utils.notifySuccess({
+                        content: msg
+                    });
+                    that.modal && that.modal.trigger('cancel');
+                    that.render();
+                },
+                error: function (e) {
+                    that.editMode = false;
+                    Utils.notifySuccess({
+                        content: e.message
+                    });
+                    that.modal && that.modal.$el.find('button.ok').attr("disabled", false);
+                },
+                complete: function () {
+                    that.modal && that.modal.$el.find('button.ok').attr("disabled", false);
+                    that.editMode = false;
+                }
+            });
+        },
+        setAttributeModal: function(modalObj) {
+            var self = this;
+            this.modal = new Modal(modalObj);
+            this.modal.open();
+            this. modal.on('ok', function() {
+                self.modal.$el.find('button.ok').attr("disabled", true);
+                var list = self.modal.$el.find("[data-type]"),
+                    keyMap = new Map(),
+                    validation = true,
+                    hasDup = [],
+                    dataList = [];
+                Array.prototype.push.apply(dataList, self.modal.options.content.items);
+                for(var i = 0; i < list.length ; i++) {
+                    var input = list[i],
+                        type = input.dataset.type,
+                        pEl = self.modal.$el.find(input.parentElement).find('p'),
+                        classes = 'form-control',
+                        val = input.value.trim();
+                        pEl[0].innerText = "";
+
+                    if (val === '') {
+                        classes = 'form-control errorClass';
+                        validation = false;
+                        pEl[0].innerText = 'Required!';
+                    } else {
+                        if (input.tagName === 'INPUT') {
+                            var duplicates = dataList.filter(function(c) {
+                                return c.key === val;
+                            });
+                            if (keyMap.has(val) || duplicates.length > 1 ) {
+                                classes = 'form-control errorClass';
+                                hasDup.push('duplicate');
+                                pEl[0].innerText = 'Duplicate key';
+                            } else {
+                                keyMap.set(val, val);
+                            }
+                        }
+                    }
+                    input.setAttribute('class', classes);
+                }
+
+                if (validation && hasDup.length === 0) {
+                    self.saveAttributes(self.modal.options.content.items);
+                } else {
+                    self.modal.$el.find('button.ok').attr("disabled", false);
+                }
+            });
+            this.modal.on('closeModal', function() {
+                self.editMode = false;
+                self.modal.trigger('cancel');
+            });
+        },
+        enableModalButton: function () {
+            var self = this;
+            self.modal.$el.find('button.ok').attr("disabled", false);
+        }
+    });
+});
-- 
2.7.4

