You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2016/12/16 15:10:55 UTC
incubator-atlas git commit: ATLAS-1371: create/edit tag dialog to
allow choosing of data-type for attributes
Repository: incubator-atlas
Updated Branches:
refs/heads/master b305ba505 -> b3efebc96
ATLAS-1371: create/edit tag dialog to allow choosing of data-type for attributes
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/b3efebc9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/b3efebc9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/b3efebc9
Branch: refs/heads/master
Commit: b3efebc9690774750d7bfa5fe43d27328746f75a
Parents: b305ba5
Author: kalyanikk <ka...@freestoneinfotech.com>
Authored: Fri Dec 16 18:10:51 2016 +0530
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Fri Dec 16 07:10:35 2016 -0800
----------------------------------------------------------------------
dashboardv2/public/js/models/VTag.js | 4 +-
.../templates/tag/AddTagAttributeView_tmpl.html | 6 +-
.../tag/TagAttributeItemView_tmpl.html | 37 ++++++++++
.../templates/tag/createTagLayoutView_tmpl.html | 18 +++--
dashboardv2/public/js/utils/UrlLinks.js | 4 +-
.../public/js/views/tag/AddTagAttributeView.js | 66 +++++++++++++----
.../public/js/views/tag/CreateTagLayoutView.js | 43 ++++++++++-
.../views/tag/TagAttributeDetailLayoutView.js | 76 ++++++++++++--------
.../public/js/views/tag/TagAttributeItemView.js | 70 ++++++++++++++++++
.../public/js/views/tag/TagLayoutView.js | 30 +++++++-
release-log.txt | 1 +
11 files changed, 299 insertions(+), 56 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/models/VTag.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/models/VTag.js b/dashboardv2/public/js/models/VTag.js
index 2938572..73cf3c8 100644
--- a/dashboardv2/public/js/models/VTag.js
+++ b/dashboardv2/public/js/models/VTag.js
@@ -49,8 +49,8 @@ define(['require',
}, options);
return this.constructor.nonCrudOperation.call(this, url, 'DELETE', options);
},
- saveTagAttribute: function(name, options) {
- var url = UrlLinks.typesClassicationApiUrl(name);
+ saveTagAttribute: function(guid, options) {
+ var url = UrlLinks.typesClassicationApiUrl(null, guid);
options = _.extend({
contentType: 'application/json',
dataType: 'json'
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/templates/tag/AddTagAttributeView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/AddTagAttributeView_tmpl.html b/dashboardv2/public/js/templates/tag/AddTagAttributeView_tmpl.html
index a62b079..f6e1aac 100644
--- a/dashboardv2/public/js/templates/tag/AddTagAttributeView_tmpl.html
+++ b/dashboardv2/public/js/templates/tag/AddTagAttributeView_tmpl.html
@@ -16,8 +16,10 @@
-->
<div class="row row-margin-bottom">
<div class="col-sm-12">
- <div class="form-group">
- <input type="text" class="form-control row-margin-top" name="name" data-id="attributeId" autofocus placeholder="Attribute name" required="" value={{name}}>
+ <div class="clearfix">
+ <button type="button" class="btn btn-success btn-sm pull-right" data-id="attributeData"><i class="fa fa-plus"></i> Add New Attribute</button>
+ </div>
+ <div class="form-group" data-id="addAttributeDiv">
</div>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/templates/tag/TagAttributeItemView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/TagAttributeItemView_tmpl.html b/dashboardv2/public/js/templates/tag/TagAttributeItemView_tmpl.html
new file mode 100644
index 0000000..dfd2b72
--- /dev/null
+++ b/dashboardv2/public/js/templates/tag/TagAttributeItemView_tmpl.html
@@ -0,0 +1,37 @@
+<!--
+ * 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="row">
+ <div class="col-md-7 attrTopMargin">
+ <input class="form-control attributeInput" data-id="attributeInput" placeholder="Attribute name">
+ </input>
+ </div>
+ <div class="col-md-3 attrTopMargin">
+ <select class="form-control dataTypeSelector" data-id="dataTypeSelector">
+ <option selected="selected">string</option>
+ <option>boolean</option>
+ <option>byte</option>
+ <option>short</option>
+ <option>int</option>
+ <option>float</option>
+ <option>double</option>
+ <option>date</option>
+ </select>
+ </div>
+ <div class="col-md-2 attrTopMargin attributePlusData" align="right">
+ <button type="button" class="btn btn-danger btn-sm closeInput" data-id="close"><i class="fa fa-times"></i></button>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html b/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
index 8fa0ccc..668b09d 100644
--- a/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
-<form name="tagDefinitionform" class="css-form">
+<form name="tagDefinitionform" class="css-form" data-id="createTagForm">
<!-- <h4 style="margin-bottom:30px"></h4> -->
<div class="form-group">
{{#if create}}
@@ -27,9 +27,19 @@
<input class="form-control row-margin-bottom" data-id="description" value="{{description}}" placeholder="Description">
</input>
{{#if create}}
- <span class="row-margin-bottom">Select tags to inherit attributes(optional)</span>
- <p class="attributeText">Attributes define additional properties for the tag</p>
- <select class="form-control" data-id="parentTagList" multiple="multiple"></select>
+ <div class="row row-margin-bottom">
+ <div class="col-md-12">
+ <span>Select tags to inherit attributes(optional)</span>
+ <p class="attributeText">Attributes define additional properties for the tag</p>
+ <select class="form-control" data-id="parentTagList" multiple="multiple"></select>
+ </div>
+ </div>
+ <div class="clearfix">
+ <span class="pull-left">Attributes(optional)</span>
+ <button type="button" class="btn btn-success btn-sm pull-right" data-id="attributeData"><i class="fa fa-plus"></i> Add New Attribute</button>
+ </div>
{{/if}}
+ <div data-id="addAttributeDiv">
+ </div>
</div>
</form>
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/utils/UrlLinks.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/UrlLinks.js b/dashboardv2/public/js/utils/UrlLinks.js
index 4071b07..901de5a 100644
--- a/dashboardv2/public/js/utils/UrlLinks.js
+++ b/dashboardv2/public/js/utils/UrlLinks.js
@@ -52,10 +52,12 @@ define(['require', 'utils/Enums'], function(require, Enums) {
entityCollectionaudit: function(guid) {
return this.baseUrl + '/entities/' + guid + '/audit';
},
- typesClassicationApiUrl: function(name) {
+ typesClassicationApiUrl: function(name, guid) {
var typeUrl = this.baseUrlV2 + '/types/classificationdef'
if (name) {
return typeUrl + '/name/' + name;
+ } else if (guid) {
+ return typeUrl + '/guid/' + guid;
} else {
return typeUrl;
}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/views/tag/AddTagAttributeView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/AddTagAttributeView.js b/dashboardv2/public/js/views/tag/AddTagAttributeView.js
index 6d38162..3108279 100644
--- a/dashboardv2/public/js/views/tag/AddTagAttributeView.js
+++ b/dashboardv2/public/js/views/tag/AddTagAttributeView.js
@@ -1,4 +1,3 @@
-
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -20,36 +19,77 @@
define(['require',
'backbone',
'hbs!tmpl/tag/AddTagAttributeView_tmpl',
+ 'views/tag/TagAttributeItemView',
-], function(require, Backbone, AddTagAttributeView_tmpl) {
+], function(require, Backbone, AddTagAttributeView_tmpl, TagAttributeItemView) {
'use strict';
- return Backbone.Marionette.LayoutView.extend(
+ return Backbone.Marionette.CompositeView.extend(
/** @lends GlobalExclusionListView */
{
template: AddTagAttributeView_tmpl,
+ templateHelpers: function() {
+ return {
+ create: this.create,
+ description: this.description
+ };
+ },
+
+ childView: TagAttributeItemView,
- /** Layout sub regions */
- regions: {},
+ childViewContainer: "[data-id='addAttributeDiv']",
+ childViewOptions: function() {
+ return {
+ // saveButton: this.ui.saveButton,
+ parentView: this
+ };
+ },
/** ui selector cache */
ui: {
close: "[data-id='close']",
- attributeId: "[data-id='attributeId']"
+ attributeId: "[data-id='attributeId']",
+ attributeData: "[data-id='attributeData']",
+ addAttributeDiv: "[data-id='addAttributeDiv']"
},
events: function() {
var events = {};
+ events["click " + this.ui.attributeData] = "onClickAddAttriBtn";
return events;
},
- /**
- * intialize a new GlobalExclusionComponentView Layout
- * @constructs
- */
initialize: function(options) {
- this.parentView = options.parentView;
+ // this.parentView = options.parentView;
+ this.collection = new Backbone.Collection();
+ this.collectionAttribute();
+ },
+ onRender: function() {
+ this.ui.addAttributeDiv.find('.closeInput').hide();
+ if (!('placeholder' in HTMLInputElement.prototype)) {
+ this.ui.addAttributeDiv.find('input,textarea').placeholder();
+ }
+ },
+ bindEvents: function() {},
+ collectionAttribute: function() {
+ this.collection.add(new Backbone.Model({
+ "name": "",
+ "typeName": "string",
+ "isOptional": true,
+ "cardinality": "SINGLE",
+ "valuesMinCount": 0,
+ "valuesMaxCount": 1,
+ "isUnique": false,
+ "isIndexable": false
+ }));
},
- onRender: function() {},
- bindEvents: function() {}
+ onClickAddAttriBtn: function() {
+ if (this.ui.addAttributeDiv.find("input").length > 0) {
+ this.ui.addAttributeDiv.find('.closeInput').show();
+ };
+ this.collectionAttribute();
+ if (!('placeholder' in HTMLInputElement.prototype)) {
+ this.ui.addAttributeDiv.find('input,textarea').placeholder();
+ }
+ }
});
});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
index fee04b5..bf8f88d 100644
--- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
@@ -20,10 +20,11 @@ define(['require',
'backbone',
'hbs!tmpl/tag/createTagLayoutView_tmpl',
'utils/Utils',
+ 'views/tag/TagAttributeItemView',
'platform'
-], function(require, Backbone, CreateTagLayoutViewTmpl, Utils, platform) {
+], function(require, Backbone, CreateTagLayoutViewTmpl, Utils, TagAttributeItemView, platform) {
- var CreateTagLayoutView = Backbone.Marionette.LayoutView.extend(
+ var CreateTagLayoutView = Backbone.Marionette.CompositeView.extend(
/** @lends CreateTagLayoutView */
{
_viewName: 'CreateTagLayoutView',
@@ -40,16 +41,30 @@ define(['require',
/** Layout sub regions */
regions: {},
+ childView: TagAttributeItemView,
+
+ childViewContainer: "[data-id='addAttributeDiv']",
+
+ childViewOptions: function() {
+ return {
+ // saveButton: this.ui.saveButton,
+ parentView: this
+ };
+ },
/** ui selector cache */
ui: {
tagName: "[data-id='tagName']",
parentTag: "[data-id='parentTagList']",
description: "[data-id='description']",
- title: "[data-id='title']"
+ title: "[data-id='title']",
+ attributeData: "[data-id='attributeData']",
+ addAttributeDiv: "[data-id='addAttributeDiv']",
+ createTagForm: '[data-id="createTagForm"]'
},
/** ui events hash */
events: function() {
var events = {};
+ events["click " + this.ui.attributeData] = "onClickAddAttriBtn";
return events;
},
/**
@@ -65,6 +80,7 @@ define(['require',
} else {
this.create = true;
}
+ this.collection = new Backbone.Collection();
},
bindEvents: function() {},
onRender: function() {
@@ -73,6 +89,9 @@ define(['require',
} else {
this.ui.title.html('<span>' + this.tag + '</span>');
}
+ if (!('placeholder' in HTMLInputElement.prototype)) {
+ this.ui.createTagForm.find('input,textarea').placeholder();
+ }
},
tagCollectionList: function() {
var str = '',
@@ -91,6 +110,24 @@ define(['require',
allowClear: true
});
}
+ },
+ collectionAttribute: function() {
+ this.collection.add(new Backbone.Model({
+ "name": "",
+ "typeName": "string",
+ "isOptional": true,
+ "cardinality": "SINGLE",
+ "valuesMinCount": 0,
+ "valuesMaxCount": 1,
+ "isUnique": false,
+ "isIndexable": false
+ }));
+ },
+ onClickAddAttriBtn: function() {
+ this.collectionAttribute();
+ if (!('placeholder' in HTMLInputElement.prototype)) {
+ this.ui.addAttributeDiv.find('input,textarea').placeholder();
+ }
}
});
return CreateTagLayoutView;
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
index 4dc8c38..6c3cfe4 100644
--- a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
@@ -48,7 +48,7 @@ define(['require',
addTagPlus: '[data-id="addTagPlus"]',
description: '[data-id="description"]',
descriptionTextArea: '[data-id="descriptionTextArea"]',
- publishButton: '[data-id="publishButton"]',
+ publishButton: '[data-id="publishButton"]'
},
/** ui events hash */
events: function() {
@@ -68,7 +68,7 @@ define(['require',
},
bindEvents: function() {
this.listenTo(this.collection, 'reset', function() {
- this.model = this.collection.findWhere({ name: this.tag });
+ this.model = this.collection.fullCollection.findWhere({ name: this.tag });
this.renderTagDetail();
}, this);
this.listenTo(this.tagCollection, 'error', function(error, response) {
@@ -82,7 +82,7 @@ define(['require',
},
onRender: function() {
if (this.collection.models.length && !this.model) {
- this.model = this.collection.findWhere({ name: this.tag });
+ this.model = this.collection.fullCollection.findWhere({ name: this.tag });
this.renderTagDetail();
}
this.bindEvents();
@@ -111,7 +111,25 @@ define(['require',
},
onSaveButton: function(saveObject, message) {
var that = this;
- this.model.saveTagAttribute(this.model.get('name'), {
+ var validate = true;
+ if (this.modal.$el.find(".attributeInput").length > 1) {
+ this.modal.$el.find(".attributeInput").each(function() {
+ if ($(this).val() === "") {
+ $(this).css('borderColor', "red")
+ validate = false;
+ }
+ });
+ }
+ this.modal.$el.find(".attributeInput").keyup(function() {
+ $(this).css('borderColor', "#e8e9ee");
+ });
+ if (!validate) {
+ Utils.notifyInfo({
+ content: "Please fill the attributes or delete the input box"
+ });
+ return;
+ }
+ this.model.saveTagAttribute(this.model.get('guid'), {
data: JSON.stringify(saveObject),
success: function(model, response) {
that.model.set(model);
@@ -119,6 +137,7 @@ define(['require',
Utils.notifySuccess({
content: message
});
+ that.modal.close();
},
error: function(model, response) {
if (response.responseJSON && response.responseJSON.error) {
@@ -135,33 +154,34 @@ define(['require',
'modules/Modal'
],
function(AddTagAttributeView, Modal) {
- var view = new AddTagAttributeView(),
- modal = new Modal({
- title: 'Add Attribute',
- content: view,
- cancelText: "Cancel",
- okText: 'Add',
- allowCancel: true,
- }).open();
- modal.on('ok', function() {
- var attributeName = $(view.el).find("input").val();
- var attributes = _.clone(that.model.get('attributeDefs'));
- if (!_.isArray(attributes)) {
- attributes = [attributes];
+ var view = new AddTagAttributeView();
+ that.modal = new Modal({
+ title: 'Add Attribute',
+ content: view,
+ cancelText: "Cancel",
+ okText: 'Add',
+ okCloses: false,
+ allowCancel: true,
+ }).open();
+ that.modal.$el.find('button.ok').attr("disabled", "true");
+ $(view.ui.addAttributeDiv).on('keyup', that.modal.$el.find('attributeInput'), function(e) {
+ if ((e.keyCode == 8 || e.keyCode == 46 || e.keyCode == 32) && e.target.value.trim() == "") {
+ that.modal.$el.find('button.ok').attr("disabled", "disabled");
+ } else {
+ that.modal.$el.find('button.ok').removeAttr("disabled");
}
- attributes.push({
- "name": attributeName,
- "typeName": "string",
- "cardinality": "SINGLE",
- "isUnique": false,
- "indexable": true,
- "isOptional":true
+ });
+ that.modal.on('ok', function() {
+ var newAttributeList = view.collection.toJSON();
+ var saveJSON = JSON.parse(JSON.stringify(that.model.toJSON()));
+ var oldAttributeList = saveJSON.attributeDefs;
+ _.each(newAttributeList, function(obj) {
+ oldAttributeList.push(obj);
});
- var saveData = _.extend(that.model.toJSON(), { 'attributeDefs': attributes });
- that.onSaveButton(saveData, Messages.addAttributeSuccessMessage);
+ that.onSaveButton(saveJSON, Messages.addAttributeSuccessMessage);
});
- modal.on('closeModal', function() {
- modal.trigger('cancel');
+ that.modal.on('closeModal', function() {
+ that.modal.trigger('cancel');
});
});
},
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/views/tag/TagAttributeItemView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagAttributeItemView.js b/dashboardv2/public/js/views/tag/TagAttributeItemView.js
new file mode 100644
index 0000000..2482543
--- /dev/null
+++ b/dashboardv2/public/js/views/tag/TagAttributeItemView.js
@@ -0,0 +1,70 @@
+/*
+ * 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/tag/TagAttributeItemView_tmpl'
+
+], function(require, Backbone, TagAttributeItemViewTmpl) {
+ 'use strict';
+
+ return Backbone.Marionette.ItemView.extend(
+ /** @lends GlobalExclusionListView */
+ {
+
+ template: TagAttributeItemViewTmpl,
+
+ /** Layout sub regions */
+ regions: {},
+
+ /** ui selector cache */
+ ui: {
+ attributeInput: "[data-id='attributeInput']",
+ close: "[data-id='close']",
+ dataTypeSelector: "[data-id='dataTypeSelector']",
+ },
+ /** ui events hash */
+ events: function() {
+ var events = {};
+ events["keyup " + this.ui.attributeInput] = function(e) {
+ this.model.set({ "name": e.target.value.trim() });
+ };
+ events["change " + this.ui.dataTypeSelector] = function(e) {
+ this.model.set({ "typeName": e.target.value.trim() });
+ };
+ events["click " + this.ui.close] = 'onCloseButton';
+ return events;
+ },
+
+ /**
+ * intialize a new GlobalExclusionComponentView Layout
+ * @constructs
+ */
+ initialize: function(options) {
+ this.parentView = options.parentView;
+ },
+ onRender: function() {
+
+ },
+ bindEvents: function() {},
+ onCloseButton: function() {
+ if (this.parentView.collection.models.length > 0) {
+ this.model.destroy();
+ }
+ }
+ });
+});
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/dashboardv2/public/js/views/tag/TagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
index 1994951..6997658 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -178,6 +178,7 @@ define(['require',
title: 'Create a new tag',
content: view,
cancelText: "Cancel",
+ okCloses: false,
okText: 'Create',
allowCancel: true,
}).open();
@@ -198,27 +199,50 @@ define(['require',
});
});
modal.on('ok', function() {
- that.onCreateButton(view);
+ that.onCreateButton(view, modal);
});
modal.on('closeModal', function() {
modal.trigger('cancel');
});
});
},
- onCreateButton: function(ref) {
+ onCreateButton: function(ref, modal) {
var that = this;
+ var validate = true;
+ if (modal.$el.find(".attributeInput").length > 0) {
+ modal.$el.find(".attributeInput").each(function() {
+ if ($(this).val() === "") {
+ $(this).css('borderColor', "red")
+ validate = false;
+ }
+ });
+ }
+ modal.$el.find(".attributeInput").keyup(function() {
+ $(this).css('borderColor', "#e8e9ee");
+ });
+ if (!validate) {
+ Utils.notifyInfo({
+ content: "Please fill the attributes or delete the input box"
+ });
+ return;
+ }
this.name = ref.ui.tagName.val();
this.description = ref.ui.description.val();
var superTypes = [];
if (ref.ui.parentTag.val() && ref.ui.parentTag.val()) {
superTypes = ref.ui.parentTag.val();
}
+ var attributeObj = ref.collection.toJSON();
+ if (ref.collection.length === 1 && ref.collection.first().get("name") === "") {
+ attributeObj = [];
+ }
this.json = {
'name': this.name,
'description': this.description,
"typeVersion": "2",
"version": "2",
'superTypes': superTypes.length ? superTypes : [],
+ "attributeDefs": attributeObj
};
new this.collection.model().set(this.json).save(null, {
success: function(model, response) {
@@ -229,7 +253,7 @@ define(['require',
Utils.notifySuccess({
content: "Tag " + that.name + Messages.addSuccessMessage
});
-
+ modal.trigger('cancel');
},
error: function(model, response) {
if (response.responseJSON && response.responseJSON.error) {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b3efebc9/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index f63842f..15e042d 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -9,6 +9,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-1371 create/edit tag dialog to allow choosing of data-type for attributes (Kalyanikashikar via mneethiraj)
ATLAS-1395 Lineage improvement for tooltip (kevalbhatt via mneethiraj)
ATLAS-1193 UI to create/update entities (Kalyanikashikar via mneethiraj)
ATLAS-1304 Redundant code removal and code simplification (apoorvnaik via mneethiraj)