Commit fc7d3009 by kevalbhatt Committed by Madhan Neethiraj

ATLAS-1756: UI update to allow user to edit tag attribute values

parent b2bee2cc
......@@ -188,6 +188,9 @@ ul {
background-color: $transparent;
border: 1px solid $color_jungle_green_approx;
cursor: pointer;
&+.auditDetailBtn {
margin-left: 5px;
}
}
.add-seperator {
......@@ -315,6 +318,10 @@ ul {
&.editbutton[data-id="editButton"] {
display: none !important;
}
&[data-id="delete"],
&[data-id="edit"] {
display: none;
}
}
}
......@@ -340,3 +347,39 @@ ul {
.no-padding {
padding: 0px !important;
}
.no-padding-bottom {
padding-bottom: 0px !important;
}
.no-padding-top {
padding-top: 0px !important;
}
.no-padding-left {
padding-left: 0px !important;
}
.no-padding-right {
padding-right: 0px !important;
}
.no-margin {
margin: 0px !important;
}
.no-margin-bottom {
margin-bottom: 0px !important;
}
.no-margin-top {
margin-top: 0px !important;
}
.no-margin-left {
margin-left: 0px !important;
}
.no-margin-right {
margin-right: 0px !important;
}
......@@ -168,15 +168,19 @@ require(['App',
'select2'
], function(App, Router, CommonViewFunction, Globals, UrlLinks, VEntityList, VTagList) {
var that = this;
this.asyncFetchCounter = 3;
this.asyncFetchCounter = 4;
this.entityDefCollection = new VEntityList();
this.entityDefCollection.url = UrlLinks.entitiesDefApiUrl();
this.typeHeaders = new VTagList();
this.typeHeaders.url = UrlLinks.typesApiUrl();
this.enumDefCollection = new VTagList();
this.enumDefCollection.url = UrlLinks.enumDefApiUrl();
this.enumDefCollection.modelAttrName = "enumDefs";
App.appRouter = new Router({
entityDefCollection: this.entityDefCollection,
typeHeaders: this.typeHeaders
typeHeaders: this.typeHeaders,
enumDefCollection: this.enumDefCollection
});
var startApp = function() {
......@@ -228,4 +232,11 @@ require(['App',
startApp();
}
});
this.enumDefCollection.fetch({
skipDefaultError: true,
complete: function() {
--that.asyncFetchCounter;
startApp();
}
});
});
......@@ -52,8 +52,8 @@ define(['require',
return this.constructor.nonCrudOperation.call(this, url, 'GET', options);
},
saveTraitsEntity: function(options) {
var url = UrlLinks.entitiesTraitsApiUrl();
saveTraitsEntity: function(token, options) {
var url = UrlLinks.entitiesTraitsApiUrl(token);
options = _.extend({
contentType: 'application/json',
dataType: 'json'
......
......@@ -42,12 +42,17 @@ define([
'*actions': 'defaultAction'
},
initialize: function(options) {
_.extend(this, _.pick(options, 'entityDefCollection', 'typeHeaders'));
_.extend(this, _.pick(options, 'entityDefCollection', 'typeHeaders', 'enumDefCollection'));
this.showRegions();
this.bindCommonEvents();
this.listenTo(this, 'route', this.postRouteExecute, this);
this.tagCollection = new VTagList();
this.searchVent = new Backbone.Wreqr.EventAggregator();
this.preFetchedCollectionLists = {
'entityDefCollection': this.entityDefCollection,
'typeHeaders': this.typeHeaders,
'enumDefCollection': this.enumDefCollection
}
},
bindCommonEvents: function() {
var that = this;
......@@ -110,17 +115,29 @@ define([
var paramObj = Utils.getUrlState.getQueryParams();
this.collection = new VCatalogList();
this.collection.url = url;
App.rNHeader.show(new BusinessCatalogHeader({ 'url': url, 'collection': this.collection }));
App.rNHeader.show(new BusinessCatalogHeader(
_.extend({
'url': url,
'collection': this.collection
}, that.preFetchedCollectionLists)
));
if (!App.rSideNav.currentView) {
App.rSideNav.show(new SideNavLayoutView({ 'url': url, 'collection': that.tagCollection, 'typeHeaders': that.typeHeaders }));
App.rSideNav.show(new SideNavLayoutView(
_.extend({
'url': url,
'collection': that.tagCollection
}, that.preFetchedCollectionLists)
));
} else {
App.rSideNav.currentView.RBusinessCatalogLayoutView.currentView.manualRender("/" + url);
App.rSideNav.currentView.selectTab();
}
App.rNContent.show(new BusinessCatalogDetailLayoutView({
'url': url,
'collection': this.collection
}));
App.rNContent.show(new BusinessCatalogDetailLayoutView(
_.extend({
'url': url,
'collection': this.collection
}, that.preFetchedCollectionLists)
));
this.collection.fetch({ reset: true });
} else {
that.defaultAction()
......@@ -139,16 +156,18 @@ define([
this.entityCollection = new VEntityList([], {});
App.rNHeader.show(new Header());
if (!App.rSideNav.currentView) {
App.rSideNav.show(new SideNavLayoutView({ 'collection': that.tagCollection, 'typeHeaders': that.typeHeaders }));
App.rSideNav.show(new SideNavLayoutView(
_.extend({
'collection': that.tagCollection,
}, that.preFetchedCollectionLists)
));
} else {
App.rSideNav.currentView.selectTab();
}
App.rNContent.show(new DetailPageLayoutView({
App.rNContent.show(new DetailPageLayoutView(_.extend({
'collection': this.entityCollection,
'id': id,
'entityDefCollection': that.entityDefCollection,
'typeHeaders': that.typeHeaders
}));
}, that.preFetchedCollectionLists)));
this.entityCollection.url = UrlLinks.entitiesApiUrl(id);
this.entityCollection.fetch({ reset: true });
});
......@@ -164,23 +183,24 @@ define([
], function(Header, BusinessCatalogLayoutView, SideNavLayoutView, TagDetailLayoutView) {
App.rNHeader.show(new Header());
if (!App.rSideNav.currentView) {
App.rSideNav.show(new SideNavLayoutView({
'tag': tagName,
'typeHeaders': that.typeHeaders,
'collection': that.tagCollection
}));
App.rSideNav.show(new SideNavLayoutView(
_.extend({
'tag': tagName,
'collection': that.tagCollection
}, that.preFetchedCollectionLists)
));
} else {
App.rSideNav.currentView.RTagLayoutView.currentView.manualRender(tagName);
App.rSideNav.currentView.selectTab();
}
if (tagName) {
App.rNContent.show(new TagDetailLayoutView({
'tag': tagName,
'entityDefCollection': that.entityDefCollection,
'collection': that.tagCollection,
'typeHeaders': that.typeHeaders
}));
App.rNContent.show(new TagDetailLayoutView(
_.extend({
'tag': tagName,
'collection': that.tagCollection,
}, that.preFetchedCollectionLists)
));
}
});
},
......@@ -195,10 +215,11 @@ define([
var paramObj = Utils.getUrlState.getQueryParams();
App.rNHeader.show(new Header());
if (!App.rSideNav.currentView) {
App.rSideNav.show(new SideNavLayoutView({
'collection': that.tagCollection,
'typeHeaders': that.typeHeaders
}));
App.rSideNav.show(new SideNavLayoutView(
_.extend({
'collection': that.tagCollection
}, that.preFetchedCollectionLists)
));
} else {
App.rSideNav.currentView.selectTab();
if (Utils.getUrlState.isTagTab()) {
......@@ -208,12 +229,12 @@ define([
}
}
if (Globals.entityCreate && Utils.getUrlState.isSearchTab()) {
App.rNContent.show(new SearchDetailLayoutView({
'value': paramObj,
'entityDefCollection': that.entityDefCollection,
'initialView': true,
'typeHeaders': that.typeHeaders
}))
App.rNContent.show(new SearchDetailLayoutView(
_.extend({
'value': paramObj,
'initialView': true
}, that.preFetchedCollectionLists)
));
} else {
App.rNContent.$el.html("");
App.rNContent.destroy();
......@@ -231,23 +252,24 @@ define([
var paramObj = Utils.getUrlState.getQueryParams();
App.rNHeader.show(new Header());
if (!App.rSideNav.currentView) {
App.rSideNav.show(new SideNavLayoutView({
'value': paramObj,
'collection': that.tagCollection,
'searchVent': that.searchVent,
'typeHeaders': that.typeHeaders
}));
App.rSideNav.show(new SideNavLayoutView(
_.extend({
'value': paramObj,
'collection': that.tagCollection,
'searchVent': that.searchVent
}, that.preFetchedCollectionLists)
));
} else {
App.rSideNav.currentView.RSearchLayoutView.currentView.manualRender(paramObj);
}
App.rSideNav.currentView.selectTab();
App.rNContent.show(new SearchDetailLayoutView({
'value': paramObj,
'entityDefCollection': that.entityDefCollection,
'typeHeaders': that.typeHeaders,
'searchVent': that.searchVent,
'initialView': (paramObj.type || (paramObj.dslChecked == "true" ? "" : paramObj.tag) || (paramObj.query ? paramObj.query.trim() : "")).length === 0
}));
App.rNContent.show(new SearchDetailLayoutView(
_.extend({
'value': paramObj,
'searchVent': that.searchVent,
'initialView': (paramObj.type || (paramObj.dslChecked == "true" ? "" : paramObj.tag) || (paramObj.query ? paramObj.query.trim() : "")).length === 0
}, that.preFetchedCollectionLists)
));
});
},
defaultAction: function(actions) {
......
......@@ -16,8 +16,11 @@
-->
<div>
<div class="form-group hide">
{{#if tagModel}}
<h4>{{tagModel.typeName}}</h4> {{else}}
<select class="form-control row-margin-bottom" data-id="addTagOptions" required>
</select>
{{/if}}
</div>
<div class="row modalHeight">
<div class="col-sm-12">
......
......@@ -52,6 +52,14 @@ define(['require', 'utils/Enums'], function(require, Enums) {
return entitieDefUrl.defs + '?type=entity';
}
},
enumDefApiUrl: function(name) {
var enumDefApiUrl = this.typedefsUrl();
if (name) {
return enumDefApiUrl.def + '/name/' + name + '?type=enum';
} else {
return enumDefApiUrl.defs + '?type=enum';
}
},
entitiesTraitsApiUrl: function(token) {
if (token) {
return this.baseUrlV2 + '/entity/guid/' + token + '/classifications';
......
......@@ -104,7 +104,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'collection', 'id', 'entityDefCollection', 'typeHeaders'));
_.extend(this, _.pick(options, 'collection', 'id', 'entityDefCollection', 'typeHeaders', 'enumDefCollection'));
this.bindEvents();
},
bindEvents: function() {
......@@ -171,7 +171,8 @@ define(['require',
entityName: this.name,
typeHeaders: this.typeHeaders,
entityDefCollection: this.entityDefCollection,
fetchCollection: this.fetchCollection.bind(that)
fetchCollection: this.fetchCollection.bind(that),
enumDefCollection: this.enumDefCollection
}
this.getEntityDef(obj);
this.renderTagTableLayoutView(obj);
......@@ -325,7 +326,8 @@ define(['require',
that.fetchCollection();
},
showLoader: that.showLoader.bind(that),
hideLoader: that.hideLoader.bind(that)
hideLoader: that.hideLoader.bind(that),
enumDefCollection: that.enumDefCollection
});
view.modal.on('ok', function() {
Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail'));
......
......@@ -48,8 +48,7 @@ define(['require',
showMoreLess: '[data-id="showMoreLess"]',
showMoreLessTerm: '[data-id="showMoreLessTerm"]',
addAssignTag: "[data-id='addAssignTag']",
checkDeletedEntity: "[data-id='checkDeletedEntity']",
checkDeletedEntity: "[data-id='checkDeletedEntity']"
},
/** ui events hash */
events: function() {
......@@ -95,7 +94,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'guid', 'entityDefCollection', 'attribute', 'referredEntities', 'fetchCollection'));
_.extend(this, _.pick(options, 'guid', 'entityDefCollection', 'attribute', 'referredEntities', 'fetchCollection', 'enumDefCollection'));
this.schemaCollection = new VSchemaList([], {});
this.commonTableOptions = {
collection: this.schemaCollection,
......@@ -228,7 +227,7 @@ define(['require',
// return this;
// }
});
var columns = new columnCollection(that.getSchemaTableColumns());
var columns = new columnCollection(that.getSchemaTableColumns(deleteEnity));
//columns.setPositions().sort();
that.RSchemaTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
columns: columns
......@@ -247,7 +246,7 @@ define(['require',
});
});
},
getSchemaTableColumns: function() {
getSchemaTableColumns: function(deleteEnity) {
var that = this,
col = {
Check: {
......@@ -271,7 +270,7 @@ define(['require',
var value = model.get('attributes')[key];
if (key === "name" && model.get('guid')) {
var nameHtml = '<a href="#!/detailPage/' + model.get('guid') + '">' + value + '</a>';
if (model.get('status') && Enums.entityStateReadOnly[model.get('status')]) {
if (model.get('status') && Enums.entityStateReadOnly[model.get('status')] && deleteEnity) {
nameHtml += '<button type="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 {
......@@ -369,7 +368,8 @@ define(['require',
that.arr = [];
},
hideLoader: that.hideLoader.bind(that),
showLoader: that.showLoader.bind(that)
showLoader: that.showLoader.bind(that),
enumDefCollection: that.enumDefCollection
});
// view.saveTagData = function() {
//override saveTagData function
......
......@@ -43,7 +43,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'initialView', 'entityDefCollection', 'typeHeaders', 'searchVent'));
_.extend(this, _.pick(options, 'value', 'initialView', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection'));
},
bindEvents: function() {},
onRender: function() {
......@@ -61,7 +61,8 @@ define(['require',
initialView: that.initialView,
entityDefCollection: that.entityDefCollection,
typeHeaders: that.typeHeaders,
searchVent: that.searchVent
searchVent: that.searchVent,
enumDefCollection: that.enumDefCollection
}));
}
});
......
......@@ -126,7 +126,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'initialView', 'entityDefCollection', 'typeHeaders', 'searchVent'));
_.extend(this, _.pick(options, 'value', 'initialView', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection'));
var pagination = "";
this.entityModel = new VEntity();
this.searchCollection = new VSearchList();
......@@ -490,7 +490,8 @@ define(['require',
},
tagList: that.getTagList(guid, multiple),
showLoader: that.showLoader.bind(that),
hideLoader: that.hideLoader.bind(that)
hideLoader: that.hideLoader.bind(that),
enumDefCollection: that.enumDefCollection
});
});
},
......
......@@ -43,6 +43,7 @@ define(['require',
detailValue: "[data-id='detailValue']",
addTag: "[data-id='addTag']",
deleteTag: "[data-id='delete']",
editTag: "[data-id='edit']",
},
/** ui events hash */
events: function() {
......@@ -53,6 +54,9 @@ define(['require',
events["click " + this.ui.deleteTag] = function(e) {
this.deleteTagDataModal(e);
};
events["click " + this.ui.editTag] = function(e) {
this.editTagDataModal(e);
};
return events;
},
/**
......@@ -60,7 +64,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'entity', 'guid', 'term', 'entityName', 'fetchCollection'));
_.extend(this, _.pick(options, 'entity', 'guid', 'term', 'entityName', 'fetchCollection', 'enumDefCollection'));
this.collectionObject = this.entity;
this.tagTermCollection = new VTagList();
var tagorterm = _.toArray(this.collectionObject.classifications),
......@@ -151,7 +155,7 @@ define(['require',
sortable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
return '<a href="javascript:void(0)"><i class="fa fa-trash" data-id="delete" data-name="' + model.get('typeName') + '"></i></a>';
return '<button class="btn btn-atlasAction btn-atlas no-margin-bottom typeLOV" data-id="delete" data-name="' + model.get('typeName') + '"><i class="fa fa-trash"></i></button> <button class="btn btn-atlasAction btn-atlas no-margin-bottom typeLOV" data-id="edit" data-name="' + model.get('typeName') + '"><i class="fa fa-pencil"></i></button>';
}
})
},
......@@ -164,7 +168,8 @@ define(['require',
require(['views/tag/addTagModalView'], function(AddTagModalView) {
var view = new AddTagModalView({
guid: that.guid,
modalCollection: that.collection
modalCollection: that.collection,
enumDefCollection: that.enumDefCollection
});
// view.saveTagData = function() {
//override saveTagData function
......@@ -218,6 +223,23 @@ define(['require',
}
});
},
editTagDataModal: function(e) {
var that = this,
tagName = $(e.currentTarget).data('name'),
tagModel = _.findWhere(that.collectionObject.classifications, { typeName: tagName });
require([
'views/tag/addTagModalView'
], function(AddTagModalView) {
var view = new AddTagModalView({
'tagModel': tagModel,
callback: function() {
that.fetchCollection();
},
guid: that.guid,
'enumDefCollection': that.enumDefCollection
});
});
}
});
return TagDetailTableLayoutView;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment