From f54325f1c99fec1a9d06a1fab7893b7656a8398f Mon Sep 17 00:00:00 2001 From: Keval Bhatt <kbhatt@apache.org> Date: Thu, 1 Sep 2016 12:41:22 +0530 Subject: [PATCH] ATLAS-1147 UI: column name doesn't show up in schema tab for hive table (Kalyanikashikar via kevalbhatt) --- dashboardv2/public/js/views/schema/SchemaLayoutView.js | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------- release-log.txt | 1 + 2 files changed, 126 insertions(+), 67 deletions(-) diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js b/dashboardv2/public/js/views/schema/SchemaLayoutView.js index 9bd8c82..dc19619 100644 --- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js +++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js @@ -98,6 +98,7 @@ define(['require', includePagination: true, includePageSize: false, includeFooterRecords: true, + includeOrderAbleColumns: true, gridOpts: { className: "table table-hover backgrid table-quickMenu", emptyText: 'No records found!' @@ -177,12 +178,29 @@ define(['require', sortKey: "position", comparator: function(item) { return item.get(this.sortKey) || 999; + }, + setPositions: function() { + _.each(this.models, function(model, index) { + if (model.get('name') == "name") { + model.set("position", 2, { silent: true }); + model.set("label", "Name"); + } else if (model.get('name') == "description") { + model.set("position", 3, { silent: true }); + model.set("label", "Description"); + } else if (model.get('name') == "owner") { + model.set("position", 4, { silent: true }); + model.set("label", "Owner"); + } + }); + return this; } }); var columns = new columnCollection(that.getSchemaTableColumns()); + columns.setPositions().sort(); that.RTagLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, { globalVent: that.globalVent, - columns: columns + columns: columns, + includeOrderAbleColumns: true }))); that.$('.multiSelectTerm').hide(); that.$('.multiSelectTag').hide(); @@ -199,86 +217,126 @@ define(['require', }); }, getSchemaTableColumns: function() { - var that = this; - var col = {}; - if (this.schemaCollection.keyList) { - _.each(this.schemaCollection.keyList, function(obj, key) { - col[obj.name] = { - cell: "Html", - editable: false, - sortable: false, - orderable: true, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function(rawValue, model) { - if (model) { - if (!_.isArray(rawValue) && _.isObject(rawValue)) { - if (rawValue.id) { - return '<div><a href="#!/detailPage/' + rawValue.id + '">' + rawValue.$typeName$ + '</a></div>'; - } else { - return rawValue.$typeName$; - } - } else if (_.isArray(rawValue)) { - var links = ""; - _.each(rawValue, function(val, key) { - if (val.id) { - links += '<div><a href="#!/detailPage/' + val.id + '">' + val.$typeName$ + '</a></div>'; + var that = this, + col = {}, + nameCheck = false, + modelJSON = this.schemaCollection.toJSON()[0]; + for (var i = 0; i < this.schemaCollection.models.length; i++) { + var model = this.schemaCollection.models[i]; + if (model && (model.get('name') || model.get('qualifiedName'))) { + nameCheck = true; + } + } + if (nameCheck === true) { + col['name'] = { + label: "Name", + cell: "html", + editable: false, + sortable: false, + className: "searchTableName", + formatter: _.extend({}, Backgrid.CellFormatter.prototype, { + fromRaw: function(rawValue, model) { + var nameHtml = ""; + if (rawValue === undefined) { + if (model.get('qualifiedName')) { + rawValue = model.get('qualifiedName'); + } else if (model.get('$id$') && model.get('$id$').qualifiedName) { + rawValue = model.get('$id$').qualifiedName; + } else { + return ""; + } + } + if (model.get('$id$') && model.get('$id$').id) { + nameHtml = '<a href="#!/detailPage/' + model.get('$id$').id + '">' + rawValue + '</a>'; + } else { + nameHtml = '<a>' + rawValue + '</a>'; + } + if (model.get('$id$') && model.get('$id$').state && Globals.entityStateReadOnly[model.get('$id$').state]) { + nameHtml += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>'; + return '<div class="readOnly readOnlyLink">' + nameHtml + '</div>'; + } else { + return nameHtml; + } + } + }) + }; + }; + _.keys(modelJSON).map(function(key) { + if (key.indexOf("$") == -1) { + if (!(key === "qualifiedName" || key === "name")) { + col[key] = { + cell: "Html", + editable: false, + sortable: false, + orderable: true, + formatter: _.extend({}, Backgrid.CellFormatter.prototype, { + fromRaw: function(rawValue, model) { + if (model) { + if (!_.isArray(rawValue) && _.isObject(rawValue)) { + if (rawValue.id) { + return '<div><a href="#!/detailPage/' + rawValue.id + '">' + rawValue.$typeName$ + '</a></div>'; } else { - links += '<div>' + val.$typeName$ + '</div>'; + return rawValue.$typeName$; } - }); - return links; - - } else if (model.get('$id$') && model.get('$id$').id && model.get('name') == rawValue) { - return '<div><a href="#!/detailPage/' + model.get('$id$').id + '">' + rawValue + '</a></div>'; + } else if (_.isArray(rawValue)) { + var links = ""; + _.each(rawValue, function(val, key) { + if (val.id) { + links += '<div><a href="#!/detailPage/' + val.id + '">' + val.$typeName$ + '</a></div>'; + } else { + links += '<div>' + val.$typeName$ + '</div>'; + } + }); + return links; + } else { + return rawValue; + } } else { return rawValue; } - } else { - return rawValue; } - - } - }) - }; - }); - col['Check'] = { - name: "selected", - label: "", - cell: "select-row", - headerCell: "select-all", - position: 1 - }; - col['tag'] = { - label: "Tags", + }) + }; + } + } + }); + col['Check'] = { + name: "selected", + label: "", + cell: "select-row", + headerCell: "select-all", + position: 1 + }; + col['tag'] = { + label: "Tags", + cell: "Html", + editable: false, + sortable: false, + className: 'searchTag', + formatter: _.extend({}, Backgrid.CellFormatter.prototype, { + fromRaw: function(rawValue, model) { + return CommonViewFunction.tagForTable(model); + } + }) + }; + if (Globals.taxonomy) { + col['terms'] = { + label: "Terms", cell: "Html", editable: false, sortable: false, - className: 'searchTag', + orderable: true, + className: 'searchTerm', formatter: _.extend({}, Backgrid.CellFormatter.prototype, { fromRaw: function(rawValue, model) { - return CommonViewFunction.tagForTable(model); + var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model, "schema"); + if (returnObject.object) { + that.bradCrumbList.push(returnObject.object); + } + return returnObject.html; } }) }; - if (Globals.taxonomy) { - col['terms'] = { - label: "Terms", - cell: "Html", - editable: false, - sortable: false, - orderable: true, - className: 'searchTerm', - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function(rawValue, model) { - var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model, "schema"); - if (returnObject.object) { - that.bradCrumbList.push(returnObject.object); - } - return returnObject.html; - } - }) - }; - } } return this.schemaCollection.constructor.getTableCols(col, this.schemaCollection); }, diff --git a/release-log.txt b/release-log.txt index 1a1e0ca..e4b6fe1 100644 --- a/release-log.txt +++ b/release-log.txt @@ -10,6 +10,7 @@ ATLAS-1060 Add composite indexes for exact match performance improvements for al ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai) ALL CHANGES: +ATLAS-1147 UI: column name doesn't show up in schema tab for hive table (Kalyanikashikar via kevalbhatt) ATLAS-772 Ordering of columns is not maintained in schema query response, where as hive table entity response maintains the ordering (sarath.kum4r@gmail.com via kevalbhatt) ATLAS-1140 All the tag's attributes are not seen while applying a tag to entity (kevalbhatt) ATLAS-1141 UI-Issue - Tag with spaces, when searched, then it is wrongly set in search textbox. (Kalyanikashikar via kevalbhatt) -- libgit2 0.27.1