Commit 0901714a by Hemanth Yamijala

ATLAS-865 Edit description functionality for Tags (kevalbhatt18 via yhemanth)

parent 395296ce
......@@ -138,7 +138,7 @@ button:focus {
}
}
.btn-taxanomyBack {
.btn-atlasAction {
background-color: $transparent;
color: $color_keppel_approx;
margin-bottom: 10px;
......@@ -148,6 +148,10 @@ button:focus {
background-color: $color_keppel_approx;
color: $white;
}
&:focus {
background-color: $transparent;
color: $color_keppel_approx;
}
}
.input-spacing {
......
/* graph.scss */
/* .graph-bg svg {
background-image: linear-gradient(to right, $black -10px, rgba(0, 0, 0, 0) 1px), linear-gradient($black -10px, $color_cararra_approx 1px);
background-size: 10px 10px;
......@@ -66,7 +67,7 @@ g.type-TK > rect {
}
.edgePath path {
stroke: $black;
stroke: #cccccc;
}
.zoomButtonGroup {
......
......@@ -2,7 +2,7 @@
//common color
$white: #fff;
$action_gray:#ccc;
$action_gray:#999999;
$color_keppel_approx: #37bb9b;
$color_gallery_approx: #eee;
$gray: #808080;
......@@ -144,6 +144,7 @@ ul {
#sideNav-wrapper {
color: $white;
font-size: 16px !important;
}
.contentLoading {
......@@ -157,12 +158,17 @@ ul {
display: none;
}
.auditCreateBtn {
background-color: #359f89;
color: white;
cursor: pointer;
}
.aditCreateBtn {
.auditDetailBtn {
padding: 5px 10px;
font-size: 14px;
line-height: 1;
color: $color_jungle_green_approx;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 4px;
font-weight: 100;
background-color: $transparent;
border: 1px solid $color_jungle_green_approx;
cursor: pointer;
}
//tag.scss
/* Tree View */
.tag-tree {
padding: 0;
overflow: auto;
......@@ -10,7 +7,7 @@
cursor: pointer;
&.parent-node {
position: relative;
margin-top: 10px;
margin-top: 5px;
/* margin-bottom: 5px; */
border-radius: 4px;
&:hover {
......@@ -106,7 +103,6 @@
border: 1px $tag_color solid;
color: $tag_color;
font-size: 14px;
text-transform: uppercase;
border-radius: 4px;
margin-right: 3px;
margin-bottom: 3px;
......@@ -212,7 +208,7 @@ form-control .tagInpput {
}
.termTagLine {
border-top: 1px solid $action_gray;
border-top: none;
}
.tagTerm {
......
......@@ -131,3 +131,11 @@
padding: 8px;
cursor: pointer;
}
.addTermDiable {
border-color: #FF0000 !important;
}
.alertTerm {
color: #FF0000 !important;
}
......@@ -25,7 +25,7 @@ define(['require',
var VLineageList = BaseCollection.extend(
//Prototypal attributes
{
url: Globals.baseURL + 'api/atlas/lineage/assetName/outputs/graph',
url: Globals.baseURL,
model: VLineage,
......
......@@ -23,7 +23,7 @@ define(['require',
'use strict';
var VLineage = VBaseModel.extend({
urlRoot: Globals.baseURL + 'api/atlas/lineage/assetName/outputs/graph',
urlRoot: Globals.baseURL,
defaults: {},
......
......@@ -18,6 +18,7 @@
<!-- <h4 style="margin-bottom:30px">Add Term</h4> -->
<div class="form-group">
<input class="form-control" data-id="termName" placeholder="Add subterm" autofocus>
<p class='alertTerm' style='display:none'>Term name should not have spaces</p>
</div>
<div class="form-group">
<textarea class="form-control" data-id="termDetail" placeholder="Description"></textarea>
......
......@@ -18,8 +18,8 @@
<select type="text" class="form-control" data-id="searchTermInput" placeholder="Search term"></select>
</div>
<div class="clearfix">
<button class="btn btn-taxanomyBack btn-atlas pull-left" data-id="backTaxanomy"><i class="fa fa-chevron-left"></i> Back</button>
<button class="btn btn-taxanomyBack btn-atlas pull-right" data-id="refreshTaxanomy"><i class="fa fa-refresh"></i> Refresh</button>
<button class="btn btn-atlasAction btn-atlas pull-left" data-id="backTaxanomy"><i class="fa fa-chevron-left"></i> Back</button>
<button class="btn btn-atlasAction btn-atlas pull-right" onclick="this.blur();" data-id="refreshTaxanomy"><i class="fa fa-refresh"></i> Refresh</button>
</div>
<div class="">
<ul class="taxonomyTree">
......
......@@ -16,7 +16,7 @@
-->
<div class="page-title clearfix">
<div class="row">
<a href="javascript:void(0);" class="backButton" data-id="backButton"><i class="fa fa-chevron-left"> Back To Result</i></a>
<a href="javascript:void(0);" class="backButton" data-id="backButton"><i class="fa fa-chevron-left"></i> Back To Result</a>
</div>
<h1><span data-id="title"></span><!-- <small>Bookmark</small> <button data-id="editButton" class="btn btn-default pull-right editbutton" id="editText"><i class="fa fa-pencil"></i></button> --></h1>
<div data-id="editBox" style="margin-bottom:10px;">
......@@ -44,7 +44,7 @@
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<div class="atlast-tabbable">
<div class="panel panel-default lineageLayout" style="display:none">
<div class="panel panel-default lineageLayout">
<div id="r_lineageLayoutView"></div>
</div>
</div>
......
......@@ -21,10 +21,6 @@
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="panel-body graph-bg" align="center">
<!-- <div class="temp">
<i class="glyphicon glyphicon-plus"></i>
<i class="glyphicon glyphicon-minus"></i>
</div> -->
<div class="graph" id="tree-container">
</div>
<div style="position:relative">
......
......@@ -18,5 +18,6 @@
<div class="fontLoader">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<span class="searchResult" style=" font-size: 16px;"></span>
<div id="r_searchResultTableLayoutView" class="searchTable"></div>
</div>
......@@ -15,9 +15,16 @@
* limitations under the License.
-->
<div class="page-title clearfix">
<h1><span data-id="title"></span>
<!-- <small>8 Asset</small><button data-id="editButton" class="hide btn btn-default pull-right editbutton" data-id="editText"><i class="fa fa-pencil"></i></button>--></h1>
<p data-id="description"></p>
<h1><span data-id="title"></span></h1>
<button data-id="editButton" class="btn btn-default pull-right editbutton" id="editText"><i class="fa fa-pencil"></i></button>
<p class="sub-title" data-id="description">Description</p>
<div data-id="editBox" style="margin-bottom:10px; display:none">
<textarea class="well well-sm col-sm-12" data-id="descriptionTextArea"></textarea>
<div class="clearfix" align="right">
<button class="btn btn-atlas cancel" data-id="cancelButton">Cancel</button>
<button class="btn btn-atlas ok" data-id="publishButton">Publish</button>
</div>
</div>
<div data-id="showAttribute">
</div>
<div class="dropdown addTag-dropdown" data-id="addTagListBtn">
......@@ -26,6 +33,4 @@
<div class="addTagPlus" data-id="addTagPlus" style="display: none"><i class="fa fa-plus"></i></div>
</div>
</div>
<div data-id="editBox" style="margin-bottom:10px; display:none">
</div>
</div>
......@@ -14,7 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
<div class="clearfix"><a href="javascript:void(0)" data-id="createTag"><i class="fa fa-plus"></i> Create Tag</a></div>
<div class="clearfix">
<button class="btn btn-atlasAction btn-atlas pull-left" data-id="createTag"><i class="fa fa-plus"></i> Create Tag</button>
<button class="btn btn-atlasAction btn-atlas pull-right" data-id="refreshTag" onclick="this.blur();"><i class="fa fa-refresh"></i> Refresh</button>
</div>
<!-- <a href="javascript:void(0)" data-id="createTag"><i class="fa fa-plus"></i> Create Tag</a></div> -->
<hr>
<input type="text" class="form-control" data-id="offlineSearchTag" placeholder="Search Tags...">
<ul class="tag-tree" data-id="tagsParent">
......
......@@ -16,7 +16,7 @@
* limitations under the License.
*/
define(['require', 'utils/Utils', 'modules/Modal'], function(require, Utils, Modal) {
define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages'], function(require, Utils, Modal, Messages) {
'use strict';
var CommonViewFunction = {};
......@@ -31,7 +31,7 @@ define(['require', 'utils/Utils', 'modules/Modal'], function(require, Utils, Mod
}
}
var modal = new Modal({
title: 'Are you sure you want to delete ?',
title: Messages.deleteTitle,
okText: 'Delete',
htmlContent: msg,
cancelText: "Cancel",
......@@ -49,20 +49,20 @@ define(['require', 'utils/Utils', 'modules/Modal'], function(require, Utils, Mod
tagModel.deleteTag(options.guid, options.tagName, {
beforeSend: function() {},
success: function(data) {
var msg = "Tag " + name.name + " has been deleted successfully";
var msg = "Tag " + name.name + Messages.deleteSuccessMessage;
if (data.traitName) {
var tagOrTerm = Utils.checkTagOrTerm(data.traitName);
if (tagOrTerm.term) {
msg = "Term " + data.traitName + " has been deleted successfully";
msg = "Term " + data.traitName + Messages.deleteSuccessMessage;
} else {
msg = "Tag " + data.traitName + " has been deleted successfully";
msg = "Tag " + data.traitName + Messages.deleteSuccessMessage;
}
} else {
var tagOrTerm = Utils.checkTagOrTerm(options.tagName);
if (tagOrTerm.term) {
msg = "Term " + data.traitName + " has been deleted successfully";
msg = "Term " + data.traitName + Messages.deleteSuccessMessage;
} else {
msg = "Tag " + data.traitName + " has been deleted successfully";
msg = "Tag " + data.traitName + Messages.deleteSuccessMessage;
}
}
Utils.notifySuccess({
......@@ -77,7 +77,7 @@ define(['require', 'utils/Utils', 'modules/Modal'], function(require, Utils, Mod
},
error: function(error, data, status) {
var message = options.tagName + " could not be deleted";
var message = options.tagName + Messages.deleteErrorMessage;
if (data.error) {
message = data.error;
}
......
/**
* 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'], function(require) {
'use strict';
var Messages = {
addSuccessMessage: " has been created successfully",
addErrorMessage: " could not be Created",
addTermToEntitySuccessMessage: " has been added to entity",
deleteTitle: "Are you sure you want to delete ?",
deleteSuccessMessage: " has been deleted successfully",
deleteErrorMessage: " could not be deleted",
addAttributeSuccessMessage: "Tag attribute is added successfully",
updateTagDescriptionMessage: "Tag description is updated successfully"
};
return Messages;
});
......@@ -135,7 +135,7 @@ define(['require',
sortable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
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>';
return '<div class="label label-success auditDetailBtn" data-id="auditCreate" data-action="' + Globals.auditAction[model.attributes.action] + '" disabled="' + that.detailBtnDisable + '" data-modalId="' + model.get('eventKey') + '">Detail</div>';
}
})
},
......
......@@ -21,8 +21,9 @@ define(['require',
'hbs!tmpl/business_catalog/BusinessCatalogLayoutView_tmpl',
'utils/Utils',
'collection/VCatalogList',
'utils/CommonViewFunction'
], function(require, Backbone, BusinessCatalogLayoutViewTmpl, Utils, VCatalogList, CommonViewFunction) {
'utils/CommonViewFunction',
'utils/Messages'
], function(require, Backbone, BusinessCatalogLayoutViewTmpl, Utils, VCatalogList, CommonViewFunction, Messages) {
'use strict';
var BusinessCatalogLayoutView = Backbone.Marionette.LayoutView.extend(
......@@ -343,12 +344,12 @@ define(['require',
model: new that.parentCollection.model()
});
var modal = new Modal({
title: 'Add Term',
title: 'Create a new subterm',
content: view,
okCloses: true,
showFooter: true,
allowCancel: true,
okText: 'Create',
okText: 'Add',
}).open();
modal.$el.find('button.ok').attr('disabled', true);
modal.on('ok', function() {
......@@ -357,8 +358,12 @@ define(['require',
view.ui.termName.on('keyup', function() {
if (this.value.indexOf(' ') >= 0) {
modal.$el.find('button.ok').prop('disabled', true);
view.ui.termName.addClass("addTermDiable");
view.$('.alertTerm').show();
} else {
modal.$el.find('button.ok').prop('disabled', false);
view.ui.termName.removeClass("addTermDiable");
view.$('.alertTerm').hide();
}
});
......@@ -380,12 +385,12 @@ define(['require',
that.forwardClick(undefined, true, url);
//that.fetchCollection(that.url);
Utils.notifySuccess({
content: "Term " + view.ui.termName.val() + " Created successfully"
content: "Term " + view.ui.termName.val() + Messages.addSuccessMessage
});
},
error: function(model, response) {
Utils.notifyError({
content: "Term " + view.ui.termName.val() + " could not be Created"
content: "Term " + view.ui.termName.val() + Messages.addErrorMessage
});
},
complete: function() {
......@@ -415,13 +420,13 @@ define(['require',
beforeSend: function() {},
success: function(data) {
Utils.notifySuccess({
content: "Term " + termName + " has been deleted successfully"
content: "Term " + termName + Messages.deleteSuccessMessage
});
var termURL = url.split("/").slice(0, -2).join("/");
that.forwardClick(undefined, true, termURL);
},
error: function(error, data, status) {
var message = "Term " + termName + " could not be deleted";
var message = "Term " + termName + Messages.deleteErrorMessage;
if (data.error) {
message = data.error;
}
......@@ -537,7 +542,7 @@ define(['require',
model: new that.parentCollection.model()
});
var modal = new Modal({
title: 'Default taxonomy',
title: 'Taxonomy',
content: view,
okCloses: true,
showFooter: true,
......@@ -548,14 +553,17 @@ define(['require',
modal.on('ok', function() {
that.saveDefaultTaxonomy(view);
});
view.ui.termName.attr("placeholder", "Default taxonomy name");
view.ui.termName.attr("placeholder", "Enter Taxonomy Name");
view.ui.termName.on('keyup', function() {
if (this.value.indexOf(' ') >= 0) {
modal.$el.find('button.ok').prop('disabled', true);
view.ui.termName.addClass("addTermDiable");
view.$('.alertTerm').show();
} else {
modal.$el.find('button.ok').prop('disabled', false);
view.ui.termName.removeClass("addTermDiable");
view.$('.alertTerm').hide();
}
});
view.on('closeModal', function() {
modal.trigger('cancel');
......@@ -572,12 +580,12 @@ define(['require',
that.fetchCollection(view.model.url, true);
that.forwardClick(undefined, undefined, view.model.url);
Utils.notifySuccess({
content: "Default taxonomy" + view.ui.termName.val() + " Created successfully"
content: "Default taxonomy" + view.ui.termName.val() + Messages.addSuccessMessage
});
},
error: function(error, data, status) {
Utils.notifyError({
content: "Default taxonomy " + view.ui.termName.val() + " could not be Created"
content: "Default taxonomy " + view.ui.termName.val() + Messages.addErrorMessage
});
},
complete: function() {
......
......@@ -66,23 +66,18 @@ define(['require',
},
bindEvents: function() {
this.listenTo(this.inputCollection, 'reset', function() {
$('.lineageLayout').show();
this.generateData(this.inputCollection, 'input');
this.outputCollection.fetch({ reset: true });
}, this);
this.listenTo(this.outputCollection, 'reset', function() {
$('.lineageLayout').show();
this.generateData(this.outputCollection, 'output');
this.outputState = true;
}, this);
this.listenTo(this.outputCollection, 'error', function() {
this.$('.fontLoader').hide();
$('.lineageLayout').hide();
this.addNoDataMessage();
}, this);
this.listenTo(this.inputCollection, 'error', function() {
this.$('.fontLoader').hide();
this.$('.lineageLayout').hide();
this.addNoDataMessage();
}, this);
},
onRender: function() {
......@@ -105,6 +100,11 @@ define(['require',
fetchGraphData: function() {
this.inputCollection.fetch({ reset: true });
},
addNoDataMessage: function() {
//this.$('svg').height('100');
this.$('svg').html('<text x="' + (this.$('svg').width() - 150) / 2 + '" y="' + this.$('svg').height() / 2 + '" fill="black">No lineage data found</text>');
this.$('.fontLoader').hide();
},
generateData: function(collection, type) {
var that = this;
......@@ -140,9 +140,7 @@ define(['require',
if (that.edgesAndvertices) {
that.createGraph(that.edgesAndvertices, that.startingPoint);
} else if (this.outputState && !that.edgesAndvertices) {
that.$('svg').height('100');
that.$('svg').html('<text x="' + (that.$('svg').width() - 150) / 2 + '" y="' + that.$('svg').height() / 2 + '" fill="black">No lineage data found</text>');
that.$('.fontLoader').hide();
that.addNoDataMessage();
}
}
}
......@@ -231,7 +229,7 @@ define(['require',
_.each(startingPoint, function(val, key, obj) {
_.each(edgesAndvertices.edges[val], function(val1) {
if (val && val1) {
that.g.setEdge(val, val1);
that.g.setEdge(val, val1, { 'arrowhead': "arrowPoint", lineInterpolate: 'basis' });
}
createRemaningEdge(edgesAndvertices.edges, val1);
});
......@@ -241,7 +239,7 @@ define(['require',
if (obj[starting] && obj[starting].length) {
_.each(obj[starting], function(val, key) {
if (starting && val) {
that.g.setEdge(starting, val);
that.g.setEdge(starting, val, { 'arrowhead': "arrowPoint", lineInterpolate: 'basis' });
}
createRemaningEdge(obj, val);
});
......@@ -258,6 +256,26 @@ define(['require',
if (this.outputState) {
// Create the renderer
var render = new dagreD3.render();
// Add our custom arrow (a hollow-point)
render.arrows().arrowPoint = function normal(parent, id, edge, type) {
var marker = parent.append("marker")
.attr("id", id)
.attr("viewBox", "0 0 10 10")
.attr("refX", 9)
.attr("refY", 5)
.attr("markerUnits", "strokeWidth")
.attr("markerWidth", 10)
.attr("markerHeight", 8)
.attr("orient", "auto");
var path = marker.append("path")
.attr("d", "M 0 0 L 10 5 L 0 10 z")
.style("stroke-width", 1)
.style("stroke-dasharray", "1,0")
.style("fill", "#cccccc")
.style("stroke", "#cccccc");
dagreD3.util.applyStyle(path, edge[type + "Style"]);
};
render.shapes().img = function circle(parent, bbox, node) {
//var r = Math.max(bbox.width, bbox.height) / 2,
var shapeSvg = parent.insert("image")
......@@ -278,17 +296,17 @@ define(['require',
}
}
}
}).attr("x", "-20px")
.attr("y", "-20px")
.attr("width", "40px")
.attr("height", "40px");
}).attr("x", "-12px")
.attr("y", "-12px")
.attr("width", "24px")
.attr("height", "24px");
/*shapeSvg = parent.insert("circle", ":first-child")
.attr("x", 35)
.attr("y", 35)
.attr("r", 20);*/
node.intersect = function(point) {
//return dagreD3.intersect.circle(node, points, point);
return dagreD3.intersect.circle(node, 20, point);
return dagreD3.intersect.circle(node, 13, point);
};
return shapeSvg;
};
......
......@@ -131,7 +131,9 @@ define(['require',
});*/
}
if (this.value.dslChecked == "true") {
this.ui.searchType.prop("checked", this.value.dslChecked).trigger("change")
this.ui.searchType.prop("checked", true).trigger("change")
} else {
this.ui.searchType.prop("checked", false).trigger("change")
}
}
this.bindEvents(arr);
......
......@@ -116,6 +116,7 @@ define(['require',
this.checkTableFetch();
}
this.renderTableLayoutView();
this.$('.searchResult').html(this.searchCollection.fullCollection.length + ' result for <b>' + this.searchCollection.queryParams.query + '</b>');
}, this);
this.listenTo(this.searchCollection, "error", function(value, responseData) {
this.$('.fontLoader').hide();
......@@ -148,6 +149,7 @@ define(['require',
fetchCollection: function(value) {
this.$('.fontLoader').show();
this.$('.searchTable').hide();
this.$('.searchResult').html('');
if (value) {
if (value.searchType) {
this.searchCollection.url = "/api/atlas/discovery/search/" + value.searchType;
......
......@@ -22,8 +22,9 @@ define(['require',
'utils/Utils',
'views/tag/AddTagAttributeView',
'collection/VCommonList',
'models/VTag'
], function(require, Backbone, TagAttributeDetailLayoutViewTmpl, Utils, AddTagAttributeView, VCommonList, VTag) {
'models/VTag',
'utils/Messages'
], function(require, Backbone, TagAttributeDetailLayoutViewTmpl, Utils, AddTagAttributeView, VCommonList, VTag, Messages) {
'use strict';
var TagAttributeDetailLayoutView = Backbone.Marionette.LayoutView.extend(
......@@ -45,12 +46,27 @@ define(['require',
addTagtext: '[data-id="addTagtext"]',
addTagPlus: '[data-id="addTagPlus"]',
description: '[data-id="description"]',
descriptionTextArea: '[data-id="descriptionTextArea"]',
publishButton: '[data-id="publishButton"]',
},
/** ui events hash */
events: function() {
var events = {};
events["click " + this.ui.editButton] = function() {
this.ui.editButton.hide();
this.ui.description.hide();
this.ui.editBox.show();
this.ui.descriptionTextArea.focus();
this.ui.publishButton.prop('disabled', true);
if (this.ui.description.text().length) {
this.ui.descriptionTextArea.val(this.ui.description.text());
}
};
events["keyup " + this.ui.descriptionTextArea] = 'textAreaChangeEvent';
events["click " + this.ui.cancelButton] = 'onCancelButtonClick';
events["click " + this.ui.addAttrBtn] = 'onClickAddAttribute';
events["click " + this.ui.addTagListBtn] = 'onClickAddTagBtn';
events["click " + this.ui.publishButton] = 'onPublishClick';
return events;
},
/**
......@@ -97,26 +113,17 @@ define(['require',
onRender: function() {
this.ui.title.html('<span>' + this.tag + '</span>');
this.ui.saveButton.attr("disabled", "true");
this.ui.publishButton.prop('disabled', true);
},
onSaveButton: function(ref) {
onSaveButton: function(saveObject, message) {
var that = this,
tagModel = new VTag(),
attributeName = $(ref.el).find("input").val();
this.tagCollection.first().get('traitTypes')[0].attributeDefinitions.push({
"name": attributeName,
"dataTypeName": "string",
"multiplicity": "optional",
"isComposite": false,
"isUnique": false,
"isIndexable": true,
"reverseAttributeName": null
});
tagModel.set(this.tagCollection.first().toJSON()).save(null, {
tagModel = new VTag();
tagModel.set(saveObject).save(null, {
type: "PUT",
success: function(model, response) {
that.tagCollection.fetch({ reset: true });
Utils.notifySuccess({
content: " Attribute has been Updated"
content: message
});
},
error: function(model, response) {
......@@ -144,12 +151,41 @@ define(['require',
allowCancel: true,
}).open();
modal.on('ok', function() {
that.onSaveButton(view);
var attributeName = $(view.el).find("input").val();
that.tagCollection.first().get('traitTypes')[0].attributeDefinitions.push({
"name": attributeName,
"dataTypeName": "string",
"multiplicity": "optional",
"isComposite": false,
"isUniquvar e": false,
"isIndexable": true,
"reverseAttributeName": null
});
that.onSaveButton(that.tagCollection.first().toJSON(), Messages.addAttributeSuccessMessage);
});
modal.on('closeModal', function() {
modal.trigger('cancel');
});
});
},
onCancelButtonClick: function() {
this.ui.description.show();
this.ui.editButton.show();
this.ui.editBox.hide();
},
textAreaChangeEvent: function() {
if (this.tagCollection.first().get('traitTypes')[0].typeDescription == this.ui.descriptionTextArea.val()) {
this.ui.publishButton.prop('disabled', true);
} else {
this.ui.publishButton.prop('disabled', false);
}
},
onPublishClick: function() {
this.tagCollection.first().get('traitTypes')[0].typeDescription = this.ui.descriptionTextArea.val();
this.onSaveButton(this.tagCollection.first().toJSON(), Messages.updateTagDescriptionMessage);
this.ui.description.show();
this.ui.editButton.show();
this.ui.editBox.hide();
}
});
return TagAttributeDetailLayoutView;
......
......@@ -22,7 +22,8 @@ define(['require',
'collection/VTagList',
'collection/VEntityList',
'utils/Utils',
], function(require, Backbone, TagLayoutViewTmpl, VTagList, VEntityList, Utils) {
'utils/Messages'
], function(require, Backbone, TagLayoutViewTmpl, VTagList, VEntityList, Utils, Messages) {
'use strict';
var TagLayoutView = Backbone.Marionette.LayoutView.extend(
......@@ -41,7 +42,8 @@ define(['require',
createTag: "[data-id='createTag']",
tags: "[data-id='tags']",
offLineSearchTag: "[data-id='offlineSearchTag']",
deleteTerm: "[data-id='deleteTerm']"
deleteTerm: "[data-id='deleteTerm']",
refreshTag: '[data-id="refreshTag"]'
},
/** ui events hash */
......@@ -55,6 +57,7 @@ define(['require',
// events["click " + this.ui.referesh] = 'refereshClick';
events["keyup " + this.ui.offLineSearchTag] = 'offlineSearchTag';
events["click " + this.ui.deleteTerm] = 'onDeleteTerm';
events['click ' + this.ui.refreshTag] = 'fetchCollections';
return events;
},
/**
......@@ -228,7 +231,7 @@ define(['require',
that.fetchCollections();
that.setUrl('#!/tag/tagAttribute/' + ref.ui.tagName.val(), true);
Utils.notifySuccess({
content: that.name + " has been created"
content: "Tag " + that.name + Messages.addSuccessMessage
});
that.collection.reset([]);
},
......
......@@ -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-865 Edit description functionality for Tags (kevalbhatt18 via yhemanth)
ATLAS-820 Kerberized env: Authentication failing (nixonrodrigues via yhemanth)
ATLAS-852 Change Default landing page to taxonomy (kevalbhatt18 via yhemanth)
ATLAS-858 Unable to delete terms via API which are 3 or more levels deep (jspeidel via sumasai)
......
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