Repository: incubator-atlas
Updated Branches:
  refs/heads/master 208e90b1a -> b15aa4007


ATLAS-664 UI: Add Support for Versioning / History (Kalyanikashikar via 
yhemanth)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/b15aa400
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/b15aa400
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/b15aa400

Branch: refs/heads/master
Commit: b15aa4007efbf4cf5d74a68175b85cfab8d4b7c1
Parents: 208e90b
Author: Hemanth Yamijala <[email protected]>
Authored: Wed Jun 1 17:14:49 2016 +0530
Committer: Hemanth Yamijala <[email protected]>
Committed: Wed Jun 1 17:14:49 2016 +0530

----------------------------------------------------------------------
 dashboardv2/public/css/scss/main.scss           |  13 ++-
 dashboardv2/public/css/scss/override.scss       |  23 ++++-
 dashboardv2/public/css/scss/tree.scss           |   2 +-
 .../audit/CreateAuditTableLayoutView_tmpl.html  |   7 +-
 .../detail_page/DetailPageLayoutView_tmpl.html  |   4 +
 .../search/SearchDetailLayoutView_tmpl.html     |   2 +-
 .../public/js/utils/CommonViewFunction.js       |  80 +++++++++++++++
 dashboardv2/public/js/utils/Globals.js          |   7 ++
 .../js/views/audit/AuditTableLayoutView.js      |  50 +++++----
 .../views/audit/CreateAuditTableLayoutView.js   | 102 ++++++-------------
 .../views/detail_page/DetailPageLayoutView.js   |  11 ++
 .../views/entity/EntityDetailTableLayoutView.js |  87 +---------------
 .../public/js/views/schema/SchemaLayoutView.js  |   4 +-
 .../js/views/search/SearchDetailLayoutView.js   |  10 +-
 .../js/views/search/SearchResultLayoutView.js   |   5 +-
 release-log.txt                                 |   1 +
 16 files changed, 220 insertions(+), 188 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/css/scss/main.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/main.scss 
b/dashboardv2/public/css/scss/main.scss
index 82d1a32..9aece8f 100644
--- a/dashboardv2/public/css/scss/main.scss
+++ b/dashboardv2/public/css/scss/main.scss
@@ -27,7 +27,7 @@ $color_puerto_rico_approx: #3dd4af;
 $color_star_dust_approx: #9a9a9a;
 $color_mirage_approx: #1c1e2a;
 $concrete: #f2f2f2;
-//fonts
+$lightGrey:#e1e2e4; //fonts
 $font_0: Source Sans Pro;
 $font_1: sans-serif;
 $font_2: FontAwesome;
@@ -132,6 +132,7 @@ ul {
 }
 
 .table {
+    background-color: $white;
     .table {
         width: auto;
     }
@@ -155,3 +156,13 @@ ul {
     bottom: 0;
     display: none;
 }
+
+.auditCreateBtn {
+    background-color: #359f89;
+    color: white;
+    cursor: pointer;
+}
+
+.aditCreateBtn {
+    cursor: pointer;
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/css/scss/override.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/override.scss 
b/dashboardv2/public/css/scss/override.scss
index dabc13e..67dafaf 100644
--- a/dashboardv2/public/css/scss/override.scss
+++ b/dashboardv2/public/css/scss/override.scss
@@ -41,15 +41,32 @@
 }
 
 .table-quickMenu {
-    border: 1px #ddd solid;
+    border: thin $lightGrey solid;
+    border-collapse: separate;
+    border-radius: 6px;
+    box-shadow: 0px 0px 4px #d8d8d8;
     overflow: visible !important;
 }
 
 .table-quickMenu>thead>tr>th {
-    border-bottom-width: 0px;
-    padding: 24px 8px;
+    border-width: thin;
+    border-color: $action_gray;
+    border-bottom-style: solid;
+    box-shadow: none;
+    padding: 20px 30px;
     background-color: transparent;
     text-align: left;
+    font-weight: 800;
+    font-size: 14px;
+    letter-spacing: 0.25px;
+    color: rgba(52, 52, 52, 1);
+}
+
+.table-quickMenu > tbody > tr > td {
+    border-color: $color_gallery_approx;
+    color: #333333;
+    font-weight: 100;
+    padding: 15px 30px;
 }
 
 .backgrid-paginator ul > li > a:hover,

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/css/scss/tree.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/tree.scss 
b/dashboardv2/public/css/scss/tree.scss
index dc05b09..b4755ec 100644
--- a/dashboardv2/public/css/scss/tree.scss
+++ b/dashboardv2/public/css/scss/tree.scss
@@ -47,7 +47,7 @@
                     max-width: 93%;
                 }
             }
-            &.parentChiled {
+            &.parentChild {
                 ul {
                     padding-left: 9%;
                 }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git 
a/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html 
b/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
index 97c3b5c..52a0919 100644
--- a/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
@@ -14,13 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<table class="table table-quickMenu">
+<table class="table table-bordered table-striped" data-id="tableAudit">
     <thead>
-        <tr>
-            <th>Key</th>
-            <th>Value</th>
+        <tr data-id="auditHeaderValue">
         </tr>
     </thead>
     <tbody data-id="auditValue">
     </tbody>
 </table>
+<h3 data-id="noData" style="display:none">No details to show</h3>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git 
a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html 
b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index 46e22b7..90f77b0 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -58,6 +58,7 @@
                     <!--  <li role="presentation"><a href="#profile" 
aria-controls="profile" role="tab" data-toggle="tab">Acceptable Use</a></li> -->
                     <li role="presentation"><a href="#tab-tagTable" 
aria-controls="tab-tagTable" role="tab" data-toggle="tab">Tags</a></li>
                     <li role="presentation"><a href="#tab-termTable" 
aria-controls="tab-termTable" role="tab" data-toggle="tab">Terms</a></li>
+                    <li role="presentation" class="tab"><a href="#tab-audit" 
aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
                     <li role="presentation" class="tab schemaTable" 
style="display:none"><a href="#tab-schema" aria-controls="tab-schema" 
role="tab" data-toggle="tab">Schema</a></li>
                 </ul>
                 <div class="tab-content">
@@ -70,6 +71,9 @@
                     <div id="tab-termTable" role="tabpanel" class="tab-pane">
                         <div id="r_termTableLayoutView"></div>
                     </div>
+                    <div id="tab-audit" role="tabpanel" class="tab-pane">
+                        <div id="r_auditTableLayoutView"></div>
+                    </div>
                     <div id="tab-schema" role="tabpanel" class="tab-pane">
                         <div id="r_schemaTableLayoutView"></div>
                     </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git 
a/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html 
b/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
index 49d4fc6..3fd1b7a 100644
--- a/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="container-fluid">
+<div class="container-fluid gray-bg">
     <div class="row">
         <div class="col-sm-10 col-sm-offset-1">
             <div class="atlast-tabbable">

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/utils/CommonViewFunction.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js 
b/dashboardv2/public/js/utils/CommonViewFunction.js
index e2f1d4c..3baeb34 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -90,5 +90,85 @@ define(['require', 'utils/Utils', 'modules/Modal'], 
function(require, Utils, Mod
             }
         });
     };
+    CommonViewFunction.propertyTable = function(valueObject, scope) {
+        var table = "",
+            fetchInputOutputValue = function(id) {
+                var that = this;
+                scope.model.getEntity(id, {
+                    beforeSend: function() {},
+                    success: function(data) {
+                        var value = "";
+                        if (data.definition.values.name) {
+                            value = data.definition.values.name;
+                        } else {
+                            value = data.GUID;
+                        }
+
+                        scope.$('td div[data-id="' + data.GUID + 
'"]').html('<a href="#!/detailPage/' + data.GUID + '">' + value + '</a>');
+                    },
+                    error: function(error, data, status) {},
+                    complete: function() {}
+                });
+            }
+        _.keys(valueObject).map(function(key) {
+            var keyValue = valueObject[key];
+            if (_.isArray(keyValue)) {
+                var subLink = "";
+                for (var i = 0; i < keyValue.length; i++) {
+                    var inputOutputField = keyValue[i],
+                        id = undefined;
+                    if (_.isObject(inputOutputField.id)) {
+                        id = inputOutputField.id.id;
+                    } else {
+                        id = inputOutputField.id;
+                    }
+                    if (id) {
+                        fetchInputOutputValue(id);
+                        subLink += '<div data-id="' + id + '"></div>';
+                    } else {
+                        subLink += '<div></div>';
+                    }
+                }
+                table += '<tr><td>' + key + '</td><td>' + subLink + 
'</td></tr>';
+            } else if (_.isObject(keyValue)) {
+                var id = undefined;
+                if (_.isObject(keyValue.id)) {
+                    id = keyValue.id.id;
+                } else {
+                    id = keyValue.id;
+                }
+                if (id) {
+                    fetchInputOutputValue(id);
+                    table += '<tr><td>' + key + '</td><td><div data-id="' + id 
+ '"></div></td></tr>';
+                } else {
+                    var stringArr = [];
+                    _.each(keyValue, function(val, key) {
+                        var value = "";
+                        if (_.isObject(val)) {
+                            value = JSON.stringify(val);
+                        } else {
+                            value = val;
+                        }
+                        var attrName = "<span>" + key + " : " + value + 
"</span>";
+                        stringArr.push(attrName);
+                    });
+                    var jointValues = stringArr.join(", ");
+                    if (jointValues.length) {
+                        table += '<tr><td>' + key + '</td><td><div>' + 
jointValues + '</div></td></tr>';
+                    } else {
+                        table += '<tr><td>' + key + '</td><td></td></tr>';
+                    }
+                }
+            } else {
+                if (key == "createTime" || key == "lastAccessTime" || key == 
"retention") {
+                    table += '<tr><td>' + key + '</td><td>' + new 
Date(valueObject[key]) + '</td></tr>';
+                } else {
+                    table += '<tr><td>' + key + '</td><td>' + valueObject[key] 
+ '</td></tr>';
+                }
+
+            }
+        });
+        return table;
+    }
     return CommonViewFunction;
 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/utils/Globals.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Globals.js 
b/dashboardv2/public/js/utils/Globals.js
index 14a41e5..078881e 100644
--- a/dashboardv2/public/js/utils/Globals.js
+++ b/dashboardv2/public/js/utils/Globals.js
@@ -34,6 +34,13 @@ define(['require'], function(require) {
         },
         detailPageState: {}
     };
+    Globals.auditAction = {
+        ENTITY_CREATE: "Entity Created",
+        ENTITY_UPDATE: "Entity Updated",
+        ENTITY_DELETE: "Entity Deleted",
+        TAG_ADD: "Tag Added",
+        TAG_DELETE: "Tag Deleted"
+    }
 
     return Globals;
 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/audit/AuditTableLayoutView.js 
b/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
index 1c1c0b1..9ac622c 100644
--- a/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
+++ b/dashboardv2/public/js/views/audit/AuditTableLayoutView.js
@@ -20,8 +20,8 @@ define(['require',
     'backbone',
     'hbs!tmpl/audit/AuditTableLayoutView_tmpl',
     'collection/VEntityList',
-    'moment'
-], function(require, Backbone, AuditTableLayoutView_tmpl, VEntityList, moment) 
{
+    'utils/Globals'
+], function(require, Backbone, AuditTableLayoutView_tmpl, VEntityList, 
Globals) {
     'use strict';
 
     var AuditTableLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -61,11 +61,11 @@ define(['require',
                 this.commonTableOptions = {
                     collection: this.entityCollection,
                     includeFilter: false,
-                    includePagination: false,
-                    includePageSize: false,
+                    includePagination: true,
+                    includePageSize: true,
                     includeFooterRecords: true,
                     gridOpts: {
-                        className: "table table-striped table-condensed 
backgrid table-quickMenu",
+                        className: "table table-hover backgrid 
table-quickMenu",
                         emptyText: 'No records found!'
                     },
                     filterOpts: {},
@@ -88,10 +88,7 @@ define(['require',
                     var cols = new 
Backgrid.Columns(that.getAuditTableColumns());
                     that.RAuditTableLayoutView.show(new 
TableLayout(_.extend({}, that.commonTableOptions, {
                         globalVent: that.globalVent,
-                        columns: cols,
-                        gridOpts: {
-                            className: "table table-quickMenu",
-                        },
+                        columns: cols
                     })));
                 });
             },
@@ -99,41 +96,52 @@ define(['require',
                 var that = this;
                 return this.entityCollection.constructor.getTableCols({
                     user: {
-                        label: "User",
+                        label: "Users",
                         cell: "html",
                         editable: false,
                         sortable: false,
                     },
                     timestamp: {
                         label: "Timestamp",
-                        cell: "time",
+                        cell: "html",
                         editable: false,
                         sortable: false,
                         formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
                             fromRaw: function(rawValue, model) {
-                                return moment(rawValue).format("YYYY-MM-DD 
HH:mm:ss,SSS");
+                                return new Date(rawValue);
                             }
                         })
                     },
                     action: {
-                        label: "Action",
+                        label: "Actions",
                         cell: "html",
                         editable: false,
-                        sortable: false
+                        sortable: false,
+                        formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                that.detailBtnDisable = false;
+                                if (Globals.auditAction[rawValue]) {
+                                    return Globals.auditAction[rawValue]
+                                } else {
+                                    return rawValue
+                                }
+                            }
+                        })
                     },
                     tool: {
-                        label: "Tool",
+                        label: "Tools",
                         cell: "html",
                         editable: false,
                         sortable: false,
                         formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
                             fromRaw: function(rawValue, model) {
-                                return '<div class="label label-success 
auditCreateBtn" data-id="auditCreate">Create</div>';
+                                return '<div class="label label-success 
aditCreateBtn" data-id="auditCreate" data-action="' + 
Globals.auditAction[model.attributes.action] + '" disabled="' + 
that.detailBtnDisable + '" data-modalId="' + model.get('eventKey') + 
'">Detail</div>';
                             }
                         })
                     },
 
                 }, this.entityCollection);
+
             },
             onClickAuditCreate: function(e) {
                 var that = this;
@@ -141,14 +149,18 @@ define(['require',
                     'modules/Modal',
                     'views/audit/CreateAuditTableLayoutView',
                 ], function(Modal, CreateAuditTableLayoutView) {
-
-                    var view = new CreateAuditTableLayoutView({ guid: 
that.guid });
+                    var collectionModel = that.entityCollection.findWhere({ 
'eventKey': $(e.currentTarget).data('modalid') });
+                    that.action = $(e.target).data("action");
+                    var view = new CreateAuditTableLayoutView({ guid: 
that.guid, model: collectionModel, action: that.action });
                     var modal = new Modal({
-                        title: 'Create',
+                        title: that.action,
                         content: view,
                         okCloses: true,
                         showFooter: true,
                     }).open();
+                    view.on('closeModal', function() {
+                        modal.trigger('cancel');
+                    });
                 });
             }
         });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js 
b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
index 4c19b74..65f5341 100644
--- a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -19,8 +19,9 @@
 define(['require',
     'backbone',
     'hbs!tmpl/audit/CreateAuditTableLayoutView_tmpl',
-    'collection/VEntityList'
-], function(require, Backbone, CreateAuditTableLayoutViewTmpl, VEntityList) {
+    'utils/Globals',
+    'utils/CommonViewFunction'
+], function(require, Backbone, CreateAuditTableLayoutViewTmpl, Globals, 
CommonViewFunction) {
     'use strict';
 
     var CreateAuditTableLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -37,6 +38,9 @@ define(['require',
             ui: {
                 auditValue: "[data-id='auditValue']",
                 auditCreate: "[data-id='auditCreate']",
+                noData: "[data-id='noData']",
+                tableAudit: "[data-id='tableAudit']",
+                auditHeaderValue: "[data-id='auditHeaderValue']"
             },
             /** ui events hash */
             events: function() {
@@ -45,87 +49,47 @@ define(['require',
                 return events;
             },
             /**
-             * intialize a new AuditTableLayoutView Layout
+             * intialize a new CreateAuditTableLayoutView Layout
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, 'globalVent', 'guid'));
-                this.entityCollection = new VEntityList();
-                this.entityCollection.url = "/api/atlas/entities/" + this.guid 
+ "/audit";
-                this.entityCollection.modelAttrName = "events";
-                this.entityModel = new this.entityCollection.model();
-            },
-            bindEvents: function() {
-                this.listenTo(this.entityCollection, "reset", function(value) {
-                    this.auditTableGenerate();
-                }, this);
+                _.extend(this, _.pick(options, 'globalVent', 'guid', 'model', 
'action'));
             },
+            bindEvents: function() {},
             onRender: function() {
-                this.entityCollection.fetch({ reset: true });
-                this.bindEvents();
+                this.auditTableGenerate();
             },
             auditTableGenerate: function() {
                 var that = this,
                     table = "";
-                var collectionObject = 
this.entityCollection.models[0].toJSON();
-                var appendedString = "{" + collectionObject.details + "}";
-                var auditData = 
appendedString.split('"')[0].split(':')[0].split("{")[1];
-                var detailsObject = JSON.parse(appendedString.replace("{" + 
auditData + ":", '{"' + auditData + '":'))[auditData];
-                //Append string for JSON parse
-                var valueObject = detailsObject.values;
-                _.keys(valueObject).map(function(key) {
-                    var keyValue = valueObject[key];
-                    if (_.isArray(keyValue)) {
-                        var subLink = "";
-                        for (var i = 0; i < keyValue.length; i++) {
-                            var inputOutputField = keyValue[i];
-                            if (_.isObject(inputOutputField.id)) {
-                                id = inputOutputField.id.id;
-                            } else {
-                                id = inputOutputField.id;
-                            }
-                            that.fetchInputOutputValue(id);
-                            //var coma = (i = 0) ? ('') : (',');
-                            subLink += '<div data-id="' + id + '"></div>';
-                        }
-                        table += '<tr><td>' + key + '</td><td>' + subLink + 
'</td></tr>';
-                    } else if (_.isObject(keyValue)) {
-                        var id = "";
-                        if (_.isObject(keyValue.id)) {
-                            id = keyValue.id.id;
-                        } else {
-                            id = keyValue.id;
-                        }
-                        that.fetchInputOutputValue(id);
-                        table += '<tr><td>' + key + '</td><td><div data-id="' 
+ id + '"></div></td></tr>';
+                if (this.model.get('details').search('{') >= 0) {
+                    var appendedString = "{" + this.model.get('details') + "}";
+                    var auditData = 
appendedString.split('"')[0].split(':')[0].split("{")[1];
+                    var detailsObject = JSON.parse(appendedString.replace("{" 
+ auditData + ":", '{"' + auditData + '":'))[auditData];
+                    //Append string for JSON parse
+                    var valueObject = detailsObject.values;
+                    if (this.action == Globals.auditAction.TAG_ADD) {
+                        this.ui.auditHeaderValue.html('<th>Tag</th>');
+                        this.ui.auditValue.html("<tr><td>" + 
detailsObject.typeName + "</td></tr>");
                     } else {
-                        if (key == "createTime" || key == "lastAccessTime" || 
key == "retention") {
-                            table += '<tr><td>' + key + '</td><td>' + new 
Date(valueObject[key]) + '</td></tr>';
+                        this.ui.auditHeaderValue.html('<th>Key</th><th>New 
Value</th>');
+                        table = CommonViewFunction.propertyTable(valueObject, 
this);
+                        if (table.length) {
+                            this.ui.noData.hide();
+                            this.ui.tableAudit.show();
+                            this.ui.auditValue.html(table);
                         } else {
-                            table += '<tr><td>' + key + '</td><td>' + 
valueObject[key] + '</td></tr>';
+                            this.ui.noData.show();
+                            this.ui.tableAudit.hide();
                         }
-
                     }
-                });
-                that.ui.auditValue.append(table);
+                } else if (this.action == Globals.auditAction.TAG_DELETE) {
+                    var appendedString = this.model.get('details').split(':');
+                    this.ui.auditHeaderValue.html('<th>Tag</th>');
+                    this.ui.auditValue.html("<tr><td>" + appendedString[1] + 
"</td></tr>");
+                }
+
             },
-            fetchInputOutputValue: function(id) {
-                var that = this;
-                this.entityModel.getEntity(id, {
-                    beforeSend: function() {},
-                    success: function(data) {
-                        var value = "";
-                        if (data.definition.values.name) {
-                            value = data.definition.values.name;
-                        } else {
-                            value = data.GUID;
-                        }
-                        that.$('td div[data-id="' + data.GUID + '"]').html('<a 
href="#!/detailPage/' + data.GUID + '">' + value + '</a>');
-                    },
-                    error: function(error, data, status) {},
-                    complete: function() {}
-                });
-            }
         });
     return CreateAuditTableLayoutView;
 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js 
b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index ac2d646..c138044 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -40,6 +40,7 @@ define(['require',
                 RSchemaTableLayoutView: "#r_schemaTableLayoutView",
                 RTagTableLayoutView: "#r_tagTableLayoutView",
                 RLineageLayoutView: "#r_lineageLayoutView",
+                RAuditTableLayoutView: "#r_auditTableLayoutView",
                 RTermTableLayoutView: "#r_termTableLayoutView"
 
             },
@@ -162,6 +163,7 @@ define(['require',
                     this.renderTagTableLayoutView(tagGuid);
                     this.renderLineageLayoutView(tagGuid);
                     this.renderSchemaLayoutView(tagGuid);
+                    this.renderAuditTableLayoutView(tagGuid);
                     this.renderTermTableLayoutView(tagGuid);
                 }, this);
             },
@@ -313,6 +315,15 @@ define(['require',
                     }));
                 });
             },
+            renderAuditTableLayoutView: function(tagGuid) {
+                var that = this;
+                require(['views/audit/AuditTableLayoutView'], 
function(AuditTableLayoutView) {
+                    that.RAuditTableLayoutView.show(new AuditTableLayoutView({
+                        globalVent: that.globalVent,
+                        guid: tagGuid
+                    }));
+                });
+            },
             renderTermTableLayoutView: function(tagGuid) {
                 var that = this;
                 require(['views/tag/TagDetailTableLayoutView'], 
function(TagDetailTableLayoutView) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js 
b/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
index c0ae185..e65343e 100644
--- a/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/entity/EntityDetailTableLayoutView.js
@@ -19,7 +19,8 @@
 define(['require',
     'backbone',
     'hbs!tmpl/entity/EntityDetailTableLayoutView_tmpl',
-], function(require, Backbone, EntityDetailTableLayoutView_tmpl) {
+    'utils/CommonViewFunction'
+], function(require, Backbone, EntityDetailTableLayoutView_tmpl, 
CommonViewFunction) {
     'use strict';
 
     var EntityDetailTableLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -48,7 +49,7 @@ define(['require',
             initialize: function(options) {
                 _.extend(this, _.pick(options, 'globalVent', 'collection'));
                 this.collectionObject = this.collection.toJSON();
-                this.entityModel = new this.collection.model();
+                this.model = new this.collection.model();
             },
             bindEvents: function() {},
             onRender: function() {
@@ -56,87 +57,9 @@ define(['require',
             },
             entityTableGenerate: function() {
                 var that = this,
-                    table = "",
-                    valueObject = this.collectionObject[0].values;
-                _.keys(valueObject).map(function(key) {
-                    /*  if (key == 'columns')
-                          return;*/
-                    var keyValue = valueObject[key];
-                    if (_.isArray(keyValue)) {
-                        var subLink = "";
-                        for (var i = 0; i < keyValue.length; i++) {
-                            var inputOutputField = keyValue[i],
-                                id = undefined;
-                            if (_.isObject(inputOutputField.id)) {
-                                id = inputOutputField.id.id;
-                            } else {
-                                id = inputOutputField.id;
-                            }
-                            if (id) {
-                                that.fetchInputOutputValue(id);
-                                subLink += '<div data-id="' + id + '"></div>';
-                            } else {
-                                subLink += '<div></div>';
-                            }
-                        }
-                        table += '<tr><td>' + key + '</td><td>' + subLink + 
'</td></tr>';
-                    } else if (_.isObject(keyValue)) {
-                        var id = undefined;
-                        if (_.isObject(keyValue.id)) {
-                            id = keyValue.id.id;
-                        } else {
-                            id = keyValue.id;
-                        }
-                        if (id) {
-                            that.fetchInputOutputValue(id);
-                            table += '<tr><td>' + key + '</td><td><div 
data-id="' + id + '"></div></td></tr>';
-                        } else {
-                            var stringArr = [];
-                            _.each(keyValue, function(val, key) {
-                                var value = "";
-                                if (_.isObject(val)) {
-                                    value = JSON.stringify(val);
-                                } else {
-                                    value = val;
-                                }
-                                var attrName = "<span>" + key + " : " + value 
+ "</span>";
-                                stringArr.push(attrName);
-                            });
-                            var jointValues = stringArr.join(", ");
-                            if (jointValues.length) {
-                                table += '<tr><td>' + key + '</td><td><div>' + 
jointValues + '</div></td></tr>';
-                            } else {
-                                table += '<tr><td>' + key + 
'</td><td></td></tr>';
-                            }
-                        }
-                    } else {
-                        if (key == "createTime" || key == "lastAccessTime" || 
key == "retention") {
-                            table += '<tr><td>' + key + '</td><td>' + new 
Date(valueObject[key]) + '</td></tr>';
-                        } else {
-                            table += '<tr><td>' + key + '</td><td>' + 
valueObject[key] + '</td></tr>';
-                        }
-
-                    }
-                });
+                    valueObject = this.collectionObject[0].values,
+                    table = CommonViewFunction.propertyTable(valueObject, 
this);
                 that.ui.detailValue.append(table);
-            },
-            fetchInputOutputValue: function(id) {
-                var that = this;
-                this.entityModel.getEntity(id, {
-                    beforeSend: function() {},
-                    success: function(data) {
-                        var value = "";
-                        if (data.definition.values.name) {
-                            value = data.definition.values.name;
-                        } else {
-                            value = data.GUID;
-                        }
-
-                        that.$('td div[data-id="' + data.GUID + '"]').html('<a 
href="#!/detailPage/' + data.GUID + '">' + value + '</a>');
-                    },
-                    error: function(error, data, status) {},
-                    complete: function() {}
-                });
             }
         });
     return EntityDetailTableLayoutView;

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/schema/SchemaLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js 
b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
index 6bc845b..4733b92 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -74,8 +74,8 @@ define(['require',
                 this.commonTableOptions = {
                     collection: this.schemaCollection,
                     includeFilter: false,
-                    includePagination: false,
-                    includePageSize: false,
+                    includePagination: true,
+                    includePageSize: true,
                     includeFooterRecords: true,
                     gridOpts: {
                         className: "table table-striped table-condensed 
backgrid table-quickMenu",

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/search/SearchDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchDetailLayoutView.js 
b/dashboardv2/public/js/views/search/SearchDetailLayoutView.js
index 34ccb21..0ed1c38 100644
--- a/dashboardv2/public/js/views/search/SearchDetailLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchDetailLayoutView.js
@@ -60,10 +60,12 @@ define(['require',
                             'searchType': that.value.searchType
                         };
                     }
-                    that.RSearchResultLayoutView.show(new 
SearchResultLayoutView({
-                        value: value,
-                        tag: that.tag
-                    }));
+                    if (that.RSearchResultLayoutView) {
+                        that.RSearchResultLayoutView.show(new 
SearchResultLayoutView({
+                            value: value,
+                            tag: that.tag
+                        }));
+                    }
                 });
             }
         });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/dashboardv2/public/js/views/search/SearchResultLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js 
b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index b494976..e711017 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -176,9 +176,10 @@ define(['require',
                                 } else if (model.get('name') == "owner") {
                                     model.set("position", 3, { silent: true });
                                     model.set("label", "Owner");
-                                } else {
-                                    model.set("position", ++count, { silent: 
true });
                                 }
+                                /*else {
+                                                                   
model.set("position", ++count, { silent: true });
+                                                               }*/
                             });
                             return this;
                         }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b15aa400/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 7f25604..cc85f9a 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -22,6 +22,7 @@ ATLAS-409 Atlas will not import avro tables with schema read 
from a file (dosset
 ATLAS-379 Create sqoop and falcon metadata addons 
(venkatnrangan,bvellanki,sowmyaramesh via shwethags)
 
 ALL CHANGES:
+ATLAS-664 UI: Add Support for Versioning / History (Kalyanikashikar via 
yhemanth)
 ATLAS-833 Make default build profile for External HBase and Solr (tbeerbower 
via yhemanth)
 ATLAS-841 mvn clean install of Atlas is failing python unit tests (yhemanth)
 ATLAS-834 Handle exceptions from HiveHook executor.submit() (sumasai)


Reply via email to