Commit 6b100410 by kevalbhatt Committed by Sarath Subramanian

ATLAS-3415 : UI : Beta UI : Improvements for left side tree view

parent 15e5bedb
......@@ -47,6 +47,10 @@
}
}
}
.dropdown-toggle {
width: 15px;
}
}
.filter-tree-content {
......@@ -164,6 +168,7 @@
.dropdown-menu {
min-width: 182px;
left: -155px;
&>li {
padding: 3px 15px;
......@@ -177,18 +182,40 @@
background-color: $color_havelock_blue_approx;
color: #fff !important;
}
span {
color: #fff !important;
}
}
a {
display: inline-block;
padding: 0px 3px;
}
span {
color: #686868;
margin-left: 10px;
}
}
}
.custom-filter {
.fa {
font-size: 12px;
.fa-circle-thin:after {
font-family: Source Sans Pro, sans-serif;
position: absolute;
left: 0px;
margin-left: 9px;
font-size: 11px;
font-weight: bold;
}
.advance-tree:after {
content: "A";
}
.basic-tree:after {
content: "B";
}
}
......
......@@ -18,16 +18,19 @@
<div class="panel-heading dash-button-icon" data-toggle="collapse" aria-expanded="true" href="#c_classfication">
<i class="ec-icon fa"></i>
<h4 class="panel-title">Classifications</h4>
<div class="btn-group pull-right menu-items">
<div class="btn-group pull-right">
<!-- <button type="button" class="typeRefresh" data-id="groupOrFlatTreeView" data-type="classification" title="Show flat tree">
<i class="fa fa-sitemap"></i>
</button> -->
<button type="button" class="typeRefresh" data-id="refreshTree" data-type="classification" title="Refresh">
<i class="fa fa-refresh"></i>
</button>
<button type="button" class="typeRefresh" data-id="showEmptyClassifications" title="Show unused classification">
<i class="fa fa-toggle-off"></i>
</button>
<button type="button" data-id="createTag" data-type="classification" title="Create Classification">
<!-- <button type="button" data-id="createTag" data-type="classification" title="Create Classification">
<i class="fa fa-plus"></i>
</button>
</button> -->
<!-- <ul class="dropdown-menu right-align tree-menu">
<li data-id="createTag"><i class="fa fa-plus"></i><a>Create Classification</a></li>
<li data-id="showEmptyClassifications"><i class="fa fa-check-circle"></i> <a>Show Empty</a></li>
......@@ -35,6 +38,19 @@
<!-- <button data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" data-id="tagMenu">
<i class="fa fa-ellipsis-v"></i>
</button> -->
<button type="button" class="typeRefresh dropdown">
<div class=" btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-v"></i>
</div>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<li data-id="groupOrFlatTreeView" data-type="classification"> <i class="fa fa-list-ul"></i><span>Show flat tree</span>
</li>
<!-- <li data-id="showEmptyClassifications" data-type="classification"> <i class="fa fa-toggle-off"></i><span>Show unused classification</span>
</li> -->
<li data-id="createTag" data-type="classification"> <i class="fa fa-plus"></i><span>Create Classification</span>
</li>
</ul>
</button>
</div>
</div>
<div id="c_classfication" class="panel-collapse collapse jstree-with-action in">
......
......@@ -18,13 +18,27 @@
<div class="panel-heading dash-button-icon" data-toggle="collapse" aria-expanded="true" href="#c_customFilter">
<i class="ec-icon fa"></i>
<h4 class="panel-title">Custom Filters</h4>
<div class="btn-group pull-right menu-items">
<div class="btn-group pull-right ">
<button type="button" class="typeRefresh" data-id="groupOrFlatTreeView" data-type="customFilter" title="Show all">
<i class="fa fa-sitemap"></i>
</button>
<button type="button" class="typeRefresh" data-id="refreshTree" data-type="CustomFilter" title="Refresh">
<i class="fa fa-refresh"></i>
</button>
<button type="button" class="typeRefresh" data-id="showCustomFilter" title="Show Advanced search">
<!-- <button type="button" class="typeRefresh" data-id="showCustomFilter" title="Show Advanced search">
<i class="fa fa-toggle-on switch-button"></i>
</button>
</button> -->
<!-- <button type="button" class="typeRefresh dropdown">
<div class=" btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-v"></i>
</div>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<li data-id="groupOrFlatTreeView" data-type="customFilter"> <i class="fa fa-sitemap"></i><span>Show flat tree</span>
</li>
<li data-id="refreshTree" data-type="customFilter"><i class="fa fa-refresh"></i><span>Refresh</span>
</li>
</ul>
</button> -->
</div>
</div>
<div id="c_customFilter" class="panel-collapse collapse jstree-with-action in">
......
......@@ -18,10 +18,10 @@
<div class="panel-heading dash-button-icon" data-toggle="collapse" aria-expanded="true" href="#c_entity">
<i class="ec-icon fa"></i>
<h4 class="panel-title">Entities</h4>
<div class="btn-group pull-right menu-items">
<button type="button" class="typeRefresh" data-id="groupOrFlatTreeView" data-type="entity" title="Show group tree">
<i class="fa fa-sitemap group-tree-deactivate"></i>
</button>
<div class="btn-group pull-right">
<!-- <button type="button" class="typeRefresh" data-id="groupOrFlatTreeView" data-type="entity" title="Show flat tree">
<i class="fa fa-sitemap"></i>
</button> -->
<button type="button" class="typeRefresh" data-id="refreshTree" data-type="entity" title="Refresh">
<i class="fa fa-refresh"></i>
</button>
......@@ -33,9 +33,19 @@
<button type="button" class="typeRefresh" data-id="showEmptyServiceType" data-type="entity" title="Show empty service types">
<i class="fa fa-toggle-off"></i>
</button>
<!-- <button class="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button">
<button type="button" class="typeRefresh dropdown">
<div class=" btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-v"></i>
</button> -->
</div>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<li data-id="groupOrFlatTreeView" data-type="entity"> <i class="fa fa-list-ul"></i><span>Show flat tree</span>
</li>
<!-- <li data-id="showEmptyServiceType" data-type="entity"> <i class="fa fa-toggle-off"></i><span >Show empty service types</span>
</li>
<li data-id="refreshTree" data-type="entity"><i class="fa fa-refresh"></i><span >Refresh</span>
</li> -->
</ul>
</button>
</div>
</div>
<div id="c_entity" class="panel-collapse collapse jstree-with-action in">
......
......@@ -18,7 +18,7 @@
<div class="panel-heading dash-button-icon" data-toggle="collapse" aria-expanded="true" href="#c_term">
<i class="ec-icon fa"></i>
<h4 class="panel-title">Glossaries</h4>
<div class="btn-group pull-right menu-items">
<div class="btn-group pull-right">
<button type="button" class="typeRefresh" data-id="refreshTree" data-type="term" title="Refresh"><i class="fa fa-refresh"></i></button>
<!-- <ul class="dropdown-menu right-align tree-menu">
<li data-id="createGlossary"><i class="fa fa-plus"></i> <a>Create Glossary</a></li>
......@@ -26,8 +26,23 @@
<button type="button" class="typeRefresh" data-id="showGlossaryType" title="Show Category">
<i class="fa fa-toggle-on switch-button"></i>
</button>
<button title="Create Glossary" type="button" data-id="createGlossary"><i class="fa fa-plus"></i></button>
<!-- <button title="Create Glossary" type="button" data-id="createGlossary">
<i class="fa fa-plus"></i>
</button> -->
<!-- <button data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" data-id="termMenu"><i class="fa fa-ellipsis-v"></i></button> -->
<button type="button" class="typeRefresh dropdown">
<div class=" btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-v"></i>
</div>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- <li data-id="showGlossaryType" data-type="term"> <i class="fa fa-toggle-on switch-button"></i><span>Show Category</span>
</li> -->
<!-- <li data-id="refreshTree" data-type="term"><i class="fa fa-refresh"></i><span>Refresh</span>
</li> -->
<li data-id="createGlossary" data-type="term"> <i class="fa fa-plus"></i><span>Create Glossary</span>
</li>
</ul>
</button>
</div>
</div>
<div id="c_term" class="panel-collapse collapse jstree-with-action in">
......
......@@ -19,7 +19,7 @@
<tr>
<td>
<ul class="nav navbar-nav">
<a href="#/"><img src="img/atlas-logo-beta-side.png" class="logo"></a>
<a href="#/"><img src="img/atlas-logo-beta-ui.png" class="logo"></a>
</ul>
</td>
<td class="global-search-container">
......
......@@ -157,7 +157,9 @@ define(['require',
}
});
}
that.glossaryCollection.trigger("update:details", { data: that.data });
that.options.categoryEvent.trigger("Success:TermRename", true);
// that.glossaryCollection.trigger("test");
// that.glossaryCollection.trigger("update:details", { data: that.data });
}
that.data = data;
that.renderDetails(that.data);
......
......@@ -36,6 +36,7 @@ define([
ui: {
//refresh
refreshTree: '[data-id="refreshTree"]',
groupOrFlatTree: '[data-id="groupOrFlatTreeView"]',
// menuItems: '.menu-items>ul>li',
......@@ -70,10 +71,24 @@ define([
events["click " + this.ui.showEmptyClassifications] = function(e) {
var getTreeData, displayText;
e.stopPropagation();
this.isEmptyClassification = !this.isEmptyClassification;
this.classificationSwitchBtnUpdate();
};
events["click " + this.ui.groupOrFlatTree] = function(e) {
var type = $(e.currentTarget).data("type");
e.stopPropagation();
this.isGroupView = !this.isGroupView;
// this.ui.groupOrFlatTree.attr("data-original-title", (this.isGroupView ? "Show flat tree" : "Show group tree"));
this.ui.groupOrFlatTree.tooltip('hide');
// this.ui.groupOrFlatTree.find("i").toggleClass("group-tree-deactivate");
this.ui.groupOrFlatTree.find("i").toggleClass("fa-sitemap fa-list-ul");
this.ui.groupOrFlatTree.find("span").html(this.isGroupView ? "Show flat tree" : "Show group tree");
that.ui[type + "SearchTree"].jstree(true).destroy();
that.renderClassificationTree();
};
return events;
},
initialize: function(options) {
......@@ -97,6 +112,7 @@ define([
this.isEmptyClassification = true;
this.entityTreeData = {};
this.tagId = null;
this.isGroupView = true;
},
onRender: function() {
this.renderClassificationTree();
......@@ -147,6 +163,7 @@ define([
this.ui.showEmptyClassifications.attr("data-original-title", (this.isEmptyClassification ? "Show" : "Hide") + " unused classification");
this.ui.showEmptyClassifications.tooltip('hide');
this.ui.showEmptyClassifications.find("i").toggleClass("fa-toggle-on fa-toggle-off");
this.ui.showEmptyClassifications.find("span").html((this.isEmptyClassification ? "Show" : "Hide") + " unused classification");
this.ui.classificationSearchTree.jstree(true).refresh();
},
createClassificationAction: function() {
......@@ -293,29 +310,30 @@ define([
collection = (options && options.collection) || this.classificationDefCollection.fullCollection,
listOfParents = [],
listWithEmptyParents = [],
listWithEmptyParentsFlatView = [],
flatViewList = [],
isSelectedChild = false,
openClassificationNodesState = function(treeDate) {
if (treeDate.length == 1) {
// if (treeDate.length == 1) {
_.each(treeDate, function(model) {
model.state['opeaned'] = true;
model.state['opened'] = true;
})
}
// }
},
generateNode = function(nodeOptions, options, isChild) {
var nodeStructure = {
text: nodeOptions.name,
name: nodeOptions.name,
children: getChildren({
children: that.isGroupView ? getChildren({
children: isChild ? nodeOptions.model.subTypes : nodeOptions.model.get("subTypes"),
parent: isChild ? options.parentName : nodeOptions.name
}),
}) : null,
type: isChild ? nodeOptions.children.get("category") : nodeOptions.model.get("category"),
id: isChild ? nodeOptions.children.get("guid") : nodeOptions.model.get("guid"),
icon: "fa fa-tag",
gType: "Classification",
}
return nodeStructure;
},
getChildren = function(options) {
......@@ -346,13 +364,14 @@ define([
},
nodeProperties = {
parent: options.parentName,
text: tagname,
guid: child.get("guid"),
model: child,
state: { selected: isSelectedChild }
state: { selected: isSelectedChild, opened: true }
},
isChild = true,
getNodeDetails = generateNode(nodeDetails, options, isChild),
classificationNode = (_.extend(nodeProperties, getNodeDetails));
classificationNode = (_.extend(getNodeDetails, nodeProperties));
data.push(classificationNode);
if (that.isEmptyClassification) {
var isTagEntityCount = _.isNaN(tagEntityCount) ? 0 : tagEntityCount;
......@@ -368,7 +387,6 @@ define([
}
collection.each(function(model) {
var modelJSON = model.toJSON();
if (modelJSON.superTypes.length == 0) {
var name = modelJSON.name;
var tagEntityCount = that.entityCountObj.tag.tagEntities[name];
var tagname = tagEntityCount ? name + " (" + _.numberFormatWithComa(tagEntityCount) + ")" : name,
......@@ -389,24 +407,36 @@ define([
text: tagname,
state: {
disabled: tagEntityCount == 0 ? true : false,
selected: isSelected
selected: isSelected,
opened: true
}
},
isChild = false,
getParentNodeDetails = generateNode(parentNodeDetails, model, isChild),
getParentNodeDetails,
classificationParentNode, getParentFlatView, classificationParentFlatView;
if (modelJSON.superTypes.length == 0) {
getParentNodeDetails = generateNode(parentNodeDetails, model, isChild);
classificationParentNode = (_.extend(getParentNodeDetails, parentNodeProperties));
listOfParents.push(classificationParentNode);
}
getParentFlatView = generateNode(parentNodeDetails, model);
classificationParentFlatView = (_.extend(getParentFlatView, parentNodeProperties));
flatViewList.push(classificationParentFlatView);
if (that.isEmptyClassification) {
var isTagEntityCount = _.isNaN(tagEntityCount) ? 0 : tagEntityCount;
if (isTagEntityCount) {
if (modelJSON.superTypes.length == 0) {
listWithEmptyParents.push(classificationParentNode);
}
listWithEmptyParentsFlatView.push(classificationParentFlatView);
}
}
});
var classificationData = that.isEmptyClassification ? listWithEmptyParents : listOfParents;
openClassificationNodesState(classificationData);
var classificationTreeData = that.isEmptyClassification ? listWithEmptyParents : listOfParents;
var flatViewClassificaton = that.isEmptyClassification ? listWithEmptyParentsFlatView : flatViewList;
var classificationData = that.isGroupView ? classificationTreeData : flatViewClassificaton;
// openClassificationNodesState(classificationData);
return classificationData;
},
generateSearchTree: function(options) {
......@@ -435,9 +465,9 @@ define([
},
node_customize: {
default: function(el) {
if ($(el).find(".fa-ellipsis-h").length === 0) {
// if ($(el).find(".fa-ellipsis-h").length === 0) {
$(el).append('<div class="tools"><i class="fa fa-ellipsis-h classificationPopover" rel="popover"></i></div>');
}
// }
}
},
core: {
......
......@@ -42,6 +42,7 @@ define([
ui: {
//refresh
refreshTree: '[data-id="refreshTree"]',
groupOrFlatTree: '[data-id="groupOrFlatTreeView"]',
customFilterSearchTree: '[data-id="customFilterSearchTree"]',
showCustomFilter: '[data-id="showCustomFilter"]'
......@@ -64,6 +65,17 @@ define([
that.isBasic = !that.isBasic;
this.customFilterSwitchBtnUpdate();
};
events["click " + this.ui.groupOrFlatTree] = function(e) {
var type = $(e.currentTarget).data("type");
e.stopPropagation();
this.isGroupView = !this.isGroupView;
this.ui.groupOrFlatTree.attr("data-original-title", (this.isGroupView ? "Show all" : "Show type"));
this.ui.groupOrFlatTree.tooltip('hide');
this.ui.groupOrFlatTree.find("i").toggleClass("group-tree-deactivate");
this.ui.groupOrFlatTree.find("span").html(this.isGroupView ? "Show flat tree" : "Show group tree");
that.ui[type + "SearchTree"].jstree(true).destroy();
that.renderCustomFilter();
};
return events;
},
......@@ -125,6 +137,7 @@ define([
this.customFilterData = null;
this.isBasic = true;
this.customFilterId = null;
this.isGroupView = true;
},
onRender: function() {
this.renderCustomFilter();
......@@ -176,7 +189,18 @@ define([
getEntityTreeConfig = function(opt) {
return {
plugins: ["search", "core", "sort", "conditionalselect", "changed", "wholerow", "node_customize"],
conditionalselect: function(node) {
var type = node.original.type;
if (type == "customFilterFolder") {
if (node.children.length) {
return false;
} else {
return true;
}
} else {
return true;
}
},
state: { opened: true },
search: {
show_only_matches: true,
......@@ -193,7 +217,6 @@ define([
multiple: false,
data: function(node, cb) {
if (node.id === "#") {
var testData = that.getCustomFilterTree();
cb(that.getCustomFilterTree());
}
}
......@@ -249,6 +272,7 @@ define([
var that = this,
customFilterBasicList = [],
customFilterAdvanceList = [],
allCustomFilter = [],
customFilterBasicTreeData = that.saveSearchBaiscCollection.fullCollection.models,
customFilterAdvanceTreeData = that.saveSearchAdvanceCollection.fullCollection.models,
openClassificationNodesState = function(treeDate) {
......@@ -259,12 +283,13 @@ define([
}
},
generateNode = function(nodeOptions) {
var searchType = nodeOptions.get('searchType');
var nodeStructure = {
text: nodeOptions.get('name'),
name: nodeOptions.get('name'),
type: "customFilter",
id: nodeOptions.get('guid'),
icon: "fa fa-search",
icon: (searchType === 'BASIC' ? "fa fa-circle-thin basic-tree" : "fa fa-circle-thin advance-tree"),
gType: "CustomFilter",
model: nodeOptions
}
......@@ -274,11 +299,32 @@ define([
that.customFilterId = null;
_.each(customFilterBasicTreeData, function(filterNode) {
customFilterBasicList.push(generateNode(filterNode));
allCustomFilter.push(generateNode(filterNode));
});
_.each(customFilterAdvanceTreeData, function(filterNode) {
customFilterAdvanceList.push(generateNode(filterNode));
allCustomFilter.push(generateNode(filterNode));
});
var customFilterList = that.isBasic ? customFilterBasicList : customFilterAdvanceList;
// var customFilterList = that.isBasic ? customFilterBasicList : customFilterAdvanceList;
var treeView = [{
icon: "fa fa-folder-o",
gType: "customFilter",
type: "customFilterFolder",
children: customFilterBasicList,
text: "Basic Search",
name: "Basic Search",
state: { opened: true }
}, {
icon: "fa fa-folder-o",
gType: "customFilter",
type: "customFilterFolder",
children: customFilterAdvanceList,
text: "Advance Search",
name: "Advance Search",
state: { opened: true }
}];
var customFilterList = that.isGroupView ? treeView : allCustomFilter;
return customFilterList;
},
onNodeSelect: function(nodeData) {
......@@ -289,11 +335,13 @@ define([
that.customFilterId = selectedNodeId;
if (options && options.model) {
var searchParameters = options.model.get('searchParameters'),
searchType = options.model.get('searchType'),
params = CommonViewFunction.generateUrlFromSaveSearchObject({
value: { "searchParameters": searchParameters },
classificationDefCollection: that.classificationDefCollection,
entityDefCollection: that.entityDefCollection
});
searchType === 'ADVANCED' ? that.isBasic = false : that.isBasic = true;
_.extend({}, this.options.value, params),
Utils.setUrl({
......
......@@ -61,6 +61,7 @@ define([
// show and hide entities and classifications with 0 numbers
events["click " + this.ui.showEmptyServiceType] = function(e) {
e.stopPropagation();
this.isEmptyServicetype = !this.isEmptyServicetype;
this.entitySwitchBtnUpdate();
};
......@@ -69,9 +70,12 @@ define([
var type = $(e.currentTarget).data("type");
e.stopPropagation();
this.isGroupView = !this.isGroupView;
this.ui.groupOrFlatTree.attr("data-original-title", (this.isGroupView ? "Show flat tree" : "Show group tree"));
// this.ui.groupOrFlatTree.attr("data-original-title", (this.isGroupView ? "Show flat tree" : "Show group tree"));
this.ui.groupOrFlatTree.tooltip('hide');
this.ui.groupOrFlatTree.find("i").toggleClass("group-tree-deactivate");
// this.ui.groupOrFlatTree.find("i").toggleClass("group-tree-deactivate");
this.ui.groupOrFlatTree.find("i").toggleClass("fa-sitemap fa-list-ul");
this.ui.groupOrFlatTree.find("span").html(this.isGroupView ? "Show flat tree" : "Show group tree");
that.ui[type + "SearchTree"].jstree(true).destroy();
that.renderEntityTree();
};
......@@ -121,7 +125,7 @@ define([
this.isEmptyServicetype = true;
this.entityTreeData = {};
this.typeId = null;
this.isGroupView = false;
this.isGroupView = true;
},
onRender: function() {
this.renderEntityTree();
......@@ -158,6 +162,7 @@ define([
this.ui.showEmptyServiceType.attr("data-original-title", (this.isEmptyServicetype ? "Show" : "Hide") + " empty service types");
this.ui.showEmptyServiceType.tooltip('hide');
this.ui.showEmptyServiceType.find("i").toggleClass("fa-toggle-on fa-toggle-off");
// this.ui.showEmptyServiceType.find("span").html((this.isEmptyServicetype ? "Show" : "Hide") + " empty service types");
this.ui.entitySearchTree.jstree(true).refresh();
},
manualRender: function(options) {
......@@ -173,7 +178,6 @@ define([
var dataFound = this.typeHeaders.fullCollection.find(function(obj) {
return obj.get("name") === that.options.value.type
});
if (dataFound) {
if ((this.typeId && this.typeId !== dataFound.get("guid")) || this.typeId === null) {
if (this.typeId) {
......
......@@ -74,6 +74,7 @@ define([
events["click " + this.ui.showGlossaryType] = function(e) {
var getTreeData, displayText;
e.stopPropagation();
this.isTermView = !this.isTermView;
this.glossarySwitchBtnUpdate();
};
......@@ -93,6 +94,12 @@ define([
},
this
);
if (this.options.categoryEvent) {
this.options.categoryEvent.on("Success:TermRename", function(options) {
that.refresh();
})
}
$('body').on('click', '.termPopoverOptions li, .categoryPopoverOptions li', function(e) {
that.$('.termPopover,.categoryPopover').popover('hide');
that[$(this).find('a').data('fn')](e)
......@@ -103,6 +110,7 @@ define([
this.ui.showGlossaryType.attr("data-original-title", (this.isTermView ? "Show Category" : "Show Term"));
this.ui.showGlossaryType.tooltip('hide');
this.ui.showGlossaryType.find("i").toggleClass("switch-button");
// this.ui.showGlossaryType.find("span").html(this.isTermView ? "Show Category" : "Show Term");
this.ui.termSearchTree.jstree(true).refresh();
//this.showDefaultPage();
// if(this.isTermView){
......@@ -146,6 +154,10 @@ define([
this.fetchGlossary();
},
onBeforeDestroy: function() {
this.options.categoryEvent.off("Success:TermRename")
},
getViewType: function() {
if (this.options.value) {
this.isTermView = this.options.value.viewType ? this.options.value.viewType == "term" ? true : false : true;
......
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