Commit 718b42d9 by kevalbhatt

ATLAS-3748 : UI: Add new UI feature into Classic UI

parent 1f871efb
// 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.
/* business-metadata */
.business-metadata-tree-parent {
padding: 0px;
>li:first-child {
font-weight: 600;
}
.business-metadata-tree-child {
&.entity-detail-table table {
td {
&:nth-child(1) {
width: 35%;
}
word-break: break-word;
}
}
padding-left: 5px;
margin-top: 10px;
font-weight: 100;
}
}
.business-metadata-options.dropdown {
.dropdown-menu {
min-width: 100px;
.dropdown-item {
display: block;
width: 100%;
padding: .25rem 1.5rem;
clear: both;
font-weight: 400;
color: $color_jungle_green_approx;
text-align: inherit;
white-space: nowrap;
background-color: transparent;
border: 0;
}
}
}
.business-metadata-options.dropdown.open {
.btn-action {
background-color: $color_jungle_green_approx;
border: 1px solid $color_jungle_green_approx;
color: #fff !important;
}
}
.business-metadata-details,
.admin-details {
.expandable .attr-details {
max-height: 300px;
overflow: auto;
margin-left: 30px;
width: calc(100% - 30px);
}
.admin-type-dropdown {
width: 100px;
}
.expandable .admin-attr-details {
max-height: 100px;
margin-left: 20px;
width: calc(100% - 27px);
}
}
.tab-pane {
.business-metadata-attr-page {
position: absolute;
top: 62px;
left: 0px;
padding: 20px;
background-color: $white;
width: 100%;
height: inherit;
}
}
.business-metadata-attr-page {
.form-horizontal {
padding: 10px 22px;
// border: 1px solid #DEDEDE;
.control-label-sm {
padding-top: 3px;
}
.control-label-sm-pl {
@extend .control-label-sm;
padding-left: 10px;
}
.control-label-sm-pr {
@extend .control-label-sm;
padding-right: 10px;
}
.business-metadata-attr {
border: 1px solid #DEDEDE;
padding: 10px 20px
}
}
}
.business-metadata-attr-fontLoader {
position: absolute;
top: 50%;
left: 50%;
display: none;
}
.business-metadata-attr-tableOverlay {
position: absolute;
width: 100%;
height: 100%;
background: #808080;
z-index: 99;
display: none;
opacity: 0.2;
}
.business-metadata-details {
.backgrid {
td.expandable-content {
max-width: none;
background: #f8f8f8;
div {
table {
width: 100%;
}
}
}
tbody>tr:last-child>td {
border-bottom: none;
}
}
}
.business-metadata-attr-page {
.modal-footer {
text-align: center;
}
}
.remove-from-list {
.select2-results__option[aria-selected=true] {
display: none;
}
}
.business-metadata-detail-attr {
margin-bottom: 0px;
box-shadow: none;
.panel-heading {
color: #686868 !important;
font-size: 13px;
padding: 0;
.panel-title {
font-size: 14px;
a:hover {
color: #686868 !important;
opacity: 1 !important;
}
}
}
.btn-group>button {
color: #686868 !important;
}
}
\ No newline at end of file
......@@ -274,6 +274,15 @@ pre {
float: left;
}
.errorValidate {
border-color: red !important;
}
.errorValidate+span .select2-selection {
border-color: red !important;
}
.button-loader {
position: relative;
padding-left: 22px !important;
......
......@@ -72,64 +72,23 @@
}
}
.switch.pull-left {
margin-right: 8px;
}
.modal-content {
border-radius: 10px;
}
.table-quickMenu {
border: thin $lightGrey solid;
border-collapse: separate;
border-radius: 6px;
box-shadow: 0px 0px 4px #d8d8d8;
overflow: scroll !important;
max-height: 500px;
width: 100%;
.resizeHandler {
&.grid-draggable {
background-color: $color_jungle_green_approx !important;
}
.modal-full-screen {
width: 80%;
height: 80vh;
&:hover {
border-left: 1px solid #d2d2d2;
}
.modal-content {
height: inherit;
width: 100%;
}
>thead>tr>th {
border-width: thin;
border-color: $color_jungle_green_approx;
border-bottom-style: solid;
box-shadow: none;
padding: 20px 15px;
background-color: transparent;
text-align: left;
font-weight: 800;
border-top: 0;
font-size: 14px;
letter-spacing: 0.25px;
color: rgba(52, 52, 52, 1);
}
>tbody>tr>td {
border-color: $color_gallery_approx;
color: #333333;
font-weight: 100;
padding: 10px 15px;
}
}
td {
.switch.pull-left {
margin-right: 8px;
}
div.scroll-y,
pre.scroll-y {
max-height: 200px;
overflow-y: auto;
word-break: break-word;
}
.modal-content {
border-radius: 10px;
}
......@@ -262,7 +221,7 @@ td {
}
.popover {
z-index: 99;
z-index: 1000;
}
.popover-content {
......@@ -284,6 +243,7 @@ td {
.tab-content>.tab-pane.active {
overflow-x: hidden;
overflow: initial;
}
.advancedInfo {
......@@ -404,6 +364,10 @@ div.columnmanager-visibilitycontrol {
}
div.columnmanager-dropdown-container {
.columnmanager-dropdown-item {
padding: 2px 13px;
}
&.open {
overflow: auto;
width: auto;
......@@ -496,4 +460,34 @@ div.columnmanager-dropdown-container {
.w30 {
width: 30% !important;
}
.query-builder .error-container {
cursor: pointer;
}
.renderable {
.glyphicon {
color: $color_jungle_green_approx;
font-size: large;
font-weight: bold;
}
}
.backgrid-internal-table {
th,
td {
display: table-cell;
}
}
.table-hover>tbody>tr:hover {
background-color: #fafafa;
}
.input-group {
.form-control {
z-index: 1;
}
}
\ No newline at end of file
......@@ -283,4 +283,56 @@ hr.hr-filter {
}
}
}
}
.attributeResultContainer {
&.overlay {
z-index: 3;
}
.attribute-filter-container {
position: absolute;
z-index: 3;
left: 21px;
width: 75%;
right: 0;
// display: none;
background: $white;
box-shadow: 0px 13px 34px -13px grey;
padding: 15px;
transition: all ease 0.3s;
&.no-attr {
.filter-box {
display: inline-block;
padding: 0px 15px;
}
}
.filter-box {
padding: 5px;
}
.entity-detail-table-toggle {
display: inline-block;
}
.pretty.p-switch.p-fill input:checked~.state.p-primary:before {
background-color: #38bb9b !important;
}
.pretty.p-switch input:checked~.state.p-primary:before {
border-color: #38bb9b;
}
.panel {
border: none;
}
.attribute-result-footer,
.attribute-edit-footer {
text-align: right;
}
}
}
\ No newline at end of file
......@@ -34,5 +34,6 @@
@import "profile-table.scss";
@import "glossary.scss";
@import "wizard.scss";
@import "business-metadata.scss";
@import "stats.scss";
@import "override.scss";
\ No newline at end of file
......@@ -68,7 +68,7 @@ ul.tabs li.tab {
overflow: hidden;
&.active {
padding: 25px;
padding: 15px 20px;
opacity: 1;
height: auto;
overflow: auto;
......@@ -136,10 +136,6 @@ ul.tabs li.tab {
}
}
.tab-pane {
padding: 25px;
}
.atlast-tabbable {
margin: 25px 0;
......@@ -185,6 +181,7 @@ ul.tabs li.tab {
&.active {
>a {
color: $color_jungle_green_approx;
// background: $color_white_lilac_approx;
}
}
......
......@@ -36,12 +36,6 @@ tr.empty {
}
}
.table-action-btn {
position: absolute;
right: 0px;
top: -5px;
}
.entity-detail-table,
.relationship-detail-table {
position: relative;
......@@ -56,7 +50,7 @@ tr.empty {
.entity-detail-table-toggle {
position: absolute;
right: 0;
top: 18px;
top: 7px;
}
table {
......@@ -73,11 +67,6 @@ tr.empty {
white-space: normal;
}
th.renderable.html-cell,
td.renderable.html-cell {
min-width: 250px;
}
.select-all-header-cell,
.select-row-cell {
width: 42px;
......@@ -189,26 +178,40 @@ tr.empty {
}
}
>thead>tr>th {
border-width: thin;
border-color: $color_jungle_green_approx;
border-bottom-style: solid;
box-shadow: none;
padding: 12px 15px !important;
background-color: transparent;
text-align: left;
font-weight: 800;
border-top: 0;
font-size: 14px;
letter-spacing: 0.25px;
color: rgba(52, 52, 52, 1);
>thead>tr {
background: #eeeeee;
&>th {
border-width: thin;
// border-color: $color_jungle_green_approx;
border-bottom-style: solid;
box-shadow: none;
padding: 6px 15px !important;
background-color: transparent;
text-align: left;
font-weight: 800;
border-top: 0;
font-size: 14px;
letter-spacing: 0.25px;
color: #6a6a6a;
&.no-capitalize {
text-transform: none !important;
}
}
>td {
border-color: $color_gallery_approx;
color: #333333;
font-weight: 100;
padding: 9px 15px;
}
}
>tbody>tr>td {
border-color: $color_gallery_approx;
color: #333333;
font-weight: 100;
padding: 9px 15px;
&.select-row-cell {
text-align: center;
}
}
}
......@@ -246,4 +249,14 @@ td {
float: left;
}
}
}
.auditStatusContainer {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.auditStatusContainer>div {
flex-grow: 1;
}
\ No newline at end of file
......@@ -83,6 +83,21 @@ header.atlas-header {
}
}
#new-page-wrapper {
height: calc(100vh - 63px);
overflow: auto;
padding-top: 15px !important;
padding-bottom: 10px !important;
&>div {
height: 100%;
}
}
.full-parent-width {
height: 100%;
}
.sidebar-brand {
padding-left: 6px !important;
......@@ -136,8 +151,7 @@ header.atlas-header {
}
.page-title {
background-color: $color_white_lilac_approx;
padding: 15px 15px 0px 15px;
padding: 0px 15px 0px 15px;
.title {
padding-top: 0;
......@@ -296,12 +310,9 @@ hr[size="10"] {
}
}
@media (min-width: 768px) {
.col-sm-custom {
//width: 92%;
margin: 25px 25px 0px;
position: relative;
}
.col-sm-custom {
margin: 15px 25px 0px;
position: relative;
}
.no-padding {
......@@ -524,6 +535,17 @@ hr[size="10"] {
}
}
.tooltip-inner {
max-width: none;
color: #2c2c2c;
background-color: #f9f9f9;
box-shadow: 0px 0px 3px 0px #8080806b;
}
.tooltip.bottom .tooltip-arrow {
border-bottom-color: #000;
}
td.searchTableName:hover {
.isIncomplete {
&.show.search-result-page {
......@@ -611,6 +633,62 @@ td.searchTableName:hover {
}
}
.dropdown-menu.multi-level {
.dropdown-submenu {
position: relative;
&>a:after {
display: none;
content: " ";
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 5px 5px 0px;
border-right-color: #ccc;
position: absolute;
left: 8px;
top: calc(50% - 5px);
}
&>a:hover:after {
display: block;
}
&>.dropdown-menu {
top: 0;
left: -100%;
width: 100%;
margin-top: -6px;
margin-left: -1px;
-webkit-border-radius: 0 6px 6px 6px;
-moz-border-radius: 0 6px 6px;
border-radius: 0 6px 6px 6px;
}
&:hover>.dropdown-menu {
display: block;
}
}
}
.select2-results__option {
&.select2-results__option--highlighted {
.option-title-light {
color: #eaeaea;
}
}
.option-title-light {
font-size: 12px;
color: #a4a4a4;
}
}
.dropzone {
border-radius: 10px;
border: 2px dashed $color_havelock_blue_approx;
......
......@@ -78,7 +78,7 @@
<div id="sideNav-wrapper"></div>
</div>
<div id="page-content-wrapper" class="page-content-wrapper">
<header id="new-header" class="clearfix"></header>
<div id="new-header" class="clearfix"></div>
<div id="new-page-wrapper">
<div>
<div class="initialLoading"></div>
......
......@@ -130,6 +130,9 @@ define(['require',
nonCrudOperation: function(url, requestMethod, options) {
var that = this;
options['beforeSend'] = CommonViewFunction.addRestCsrfCustomHeader;
if (options.data && typeof options.data === "object") {
options.data = JSON.stringify(options.data);
}
return Backbone.sync.call(this, null, this, _.extend({
url: url,
type: requestMethod
......
......@@ -54,6 +54,14 @@ define(['require',
} catch (e) {
console.log(e);
}
},
getAdminData: function(options) {
var url = UrlLinks.adminApiUrl();
options = _.extend({
contentType: 'application/json',
dataType: 'json'
}, options);
return this.constructor.nonCrudOperation.call(this, url, 'POST', options);
}
},
//Static Class Members
......
......@@ -44,6 +44,7 @@ require.config({
*/
'waitSeconds': 0,
'shim': {
'backbone': {
'deps': ['underscore', 'jquery'],
......@@ -203,25 +204,35 @@ require(['App',
'select2'
], function(App, Router, Helper, CommonViewFunction, Globals, UrlLinks, VEntityList, VTagList, Enums) {
var that = this;
this.asyncFetchCounter = 6 + (Enums.addOnEntities.length + 1);
this.asyncFetchCounter = 7 + (Enums.addOnEntities.length + 1);
// entity
this.entityDefCollection = new VEntityList();
this.entityDefCollection.url = UrlLinks.entitiesDefApiUrl();
// typeHeaders
this.typeHeaders = new VTagList();
this.typeHeaders.url = UrlLinks.typesApiUrl();
// enum
this.enumDefCollection = new VTagList();
this.enumDefCollection.url = UrlLinks.enumDefApiUrl();
this.enumDefCollection.modelAttrName = "enumDefs";
// classfication
this.classificationDefCollection = new VTagList();
// metric
this.metricCollection = new VTagList();
this.metricCollection.url = UrlLinks.metricsApiUrl();
this.metricCollection.modelAttrName = "data";
// businessMetadata
this.businessMetadataDefCollection = new VEntityList();
this.businessMetadataDefCollection.url = UrlLinks.businessMetadataDefApiUrl();
this.businessMetadataDefCollection.modelAttrName = "businessMetadataDefs";
App.appRouter = new Router({
entityDefCollection: this.entityDefCollection,
typeHeaders: this.typeHeaders,
enumDefCollection: this.enumDefCollection,
classificationDefCollection: this.classificationDefCollection,
metricCollection: this.metricCollection
metricCollection: this.metricCollection,
businessMetadataDefCollection: this.businessMetadataDefCollection
});
var startApp = function() {
......@@ -309,6 +320,17 @@ require(['App',
}
});
this.businessMetadataDefCollection.fetch({
complete: function() {
that.businessMetadataDefCollection.fullCollection.comparator = function(model) {
return model.get('name').toLowerCase();
};
that.businessMetadataDefCollection.fullCollection.sort({ silent: true });
--that.asyncFetchCounter;
startApp();
}
});
Enums.addOnEntities.forEach(function(addOnEntity) {
CommonViewFunction.fetchRootEntityAttributes({
url: UrlLinks.rootEntityDefUrl(addOnEntity),
......@@ -322,7 +344,7 @@ require(['App',
CommonViewFunction.fetchRootClassificationAttributes({
url: UrlLinks.rootClassificationDefUrl(Enums.addOnClassification[0]),
classification: Enums.addOnClassification[0],
classification: Enums.addOnClassification,
callback: function() {
--that.asyncFetchCounter;
startApp();
......
......@@ -57,6 +57,9 @@ define(['require', 'utils/Utils', 'backbone', 'utils/CommonViewFunction'], funct
nonCrudOperation: function(url, requestMethod, options) {
var that = this;
options['beforeSend'] = CommonViewFunction.addRestCsrfCustomHeader;
if (options.data && typeof options.data === "object") {
options.data = JSON.stringify(options.data);
}
return Backbone.sync.call(this, null, this, _.extend({
url: url,
type: requestMethod
......
......@@ -95,6 +95,26 @@ define(['require',
dataType: 'json'
}, options);
return this.constructor.nonCrudOperation.call(this, url, "POST", options);
},
saveBusinessMetadata: function(options) {
var url = UrlLinks.businessMetadataDefApiUrl();
options = _.extend({
contentType: 'application/json',
dataType: 'json'
}, options);
return this.constructor.nonCrudOperation.call(this, url, '', options);
},
deleteBusinessMetadata: function(options) {
var url = UrlLinks.businessMetadataDefApiUrl(options.typeName);
return this.constructor.nonCrudOperation.call(this, url, 'DELETE', options);
},
saveBusinessMetadataEntity: function(guid, options) {
var url = UrlLinks.entitiesBusinessMetadataApiUrl(guid);
options = _.extend({
contentType: 'application/json',
dataType: 'json'
}, options);
return this.constructor.nonCrudOperation.call(this, url, 'POST', options);
}
}, {});
return VEntity;
......
......@@ -89,6 +89,12 @@ define(['require',
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
break;
case 'isEmpty':
return (_.isEmpty(v1)) ? options.fn(this) : options.inverse(this);
break;
case 'has':
return (_.has(v1, v2)) ? options.fn(this) : options.inverse(this);
break;
default:
return options.inverse(this);
break;
......
......@@ -30,20 +30,27 @@ define([
var AppRouter = Backbone.Router.extend({
routes: {
// Define some URL routes
'': 'defaultAction',
'!/': 'tagAttributePageLoad',
'!/tag/tagAttribute/(*name)': 'tagAttributePageLoad',
'!/search/searchResult': 'searchResult',
'!/detailPage/:id': 'detailPage',
'!/tag': 'commonAction',
'!/search': 'commonAction',
'!/glossary': 'commonAction',
'!/glossary/:id': 'glossaryDetailPage',
"": "defaultAction",
"!/": "tagAttributePageLoad",
// Search
"!/search": "commonAction",
"!/search/searchResult": "searchResult",
// Tag
"!/tag": "commonAction",
"!/tag/tagAttribute/(*name)": "tagAttributePageLoad",
// Glossary
"!/glossary": "commonAction",
"!/glossary/:id": "glossaryDetailPage",
// Details
"!/detailPage/:id": "detailPage",
//Administrator page
'!/administrator': 'administrator',
'!/administrator/businessMetadata/:id': 'businessMetadataDetailPage',
// Default
'*actions': 'defaultAction'
},
initialize: function(options) {
_.extend(this, _.pick(options, 'entityDefCollection', 'typeHeaders', 'enumDefCollection', 'classificationDefCollection', 'metricCollection'));
_.extend(this, _.pick(options, 'entityDefCollection', 'typeHeaders', 'enumDefCollection', 'classificationDefCollection', 'metricCollection', 'businessMetadataDefCollection'));
this.showRegions();
this.bindCommonEvents();
this.listenTo(this, 'route', this.postRouteExecute, this);
......@@ -59,7 +66,8 @@ define([
'enumDefCollection': this.enumDefCollection,
'classificationDefCollection': this.classificationDefCollection,
'glossaryCollection': this.glossaryCollection,
'metricCollection': this.metricCollection
'metricCollection': this.metricCollection,
'businessMetadataDefCollection': this.businessMetadataDefCollection
}
this.sharedObj = {
searchTableColumns: {},
......@@ -292,6 +300,69 @@ define([
}
});
},
administrator: function() {
var that = this;
require(["views/site/Header", "views/site/SideNavLayoutView", 'views/administrator/AdministratorLayoutView'], function(Header, SideNavLayoutView, AdministratorLayoutView) {
var value = Utils.getUrlState.getQueryParams(),
paramObj = Utils.getUrlState.getQueryParams();
that.renderViewIfNotExists(that.getHeaderOptions(Header));
that.renderViewIfNotExists({
view: App.rSideNav,
manualRender: function() {
this.view.currentView.selectTab();
if (Utils.getUrlState.isTagTab()) {
this.view.currentView.RTagLayoutView.currentView.manualRender();
} else if (Utils.getUrlState.isGlossaryTab()) {
this.view.currentView.RGlossaryLayoutView.currentView.manualRender(_.extend({ "isTrigger": true }, { "value": paramObj }));
}
},
render: function() {
return new SideNavLayoutView(
_.extend({
'searchVent': that.searchVent
}, that.preFetchedCollectionLists, that.sharedObj)
)
}
});
paramObj = _.extend({ value: value, guid: null }, that.preFetchedCollectionLists, that.sharedObj);
App.rNContent.show(new AdministratorLayoutView(paramObj));
});
},
businessMetadataDetailPage: function(guid) {
var that = this;
require(["views/site/Header", "views/site/SideNavLayoutView", "views/business_metadata/BusinessMetadataContainerLayoutView", ], function(Header, SideNavLayoutView, BusinessMetadataContainerLayoutView) {
var paramObj = Utils.getUrlState.getQueryParams();
that.renderViewIfNotExists(that.getHeaderOptions(Header));
var options = _.extend({
guid: guid,
value: paramObj,
searchVent: that.searchVent,
categoryEvent: that.categoryEvent
},
that.preFetchedCollectionLists,
that.sharedObj
)
that.renderViewIfNotExists({
view: App.rSideNav,
manualRender: function() {
this.view.currentView.selectTab();
if (Utils.getUrlState.isTagTab()) {
this.view.currentView.RTagLayoutView.currentView.manualRender();
} else if (Utils.getUrlState.isGlossaryTab()) {
this.view.currentView.RGlossaryLayoutView.currentView.manualRender(_.extend({ "isTrigger": true }, { "value": paramObj }));
}
},
render: function() {
return new SideNavLayoutView(
_.extend({
'searchVent': that.searchVent
}, that.preFetchedCollectionLists, that.sharedObj)
)
}
});
App.rNContent.show(new BusinessMetadataContainerLayoutView(options));
});
},
searchResult: function() {
var that = this;
require([
......
<!--
* 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="clearfix">
<div class="col-sm-12 default-tab">
<ul class="nav nav-tabs" data-id="tab-list">
<li role="businessMetadata" class="tab active"><a href="#tab-businessMetadata" aria-controls="tab-businessMetadata" role="tab" data-toggle="tab">Business Metadata</a></li>
<li role="enum"><a href="#tab-enum" aria-controls="tab-enum" role="tab" data-toggle="tab">Enumerations</a></li>
<li role="audit"><a href="#tab-audit" aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
</ul>
</div>
</div>
<div class="tab-content admin-details">
<div id="tab-businessMetadata" role="businessMetadata" class="tab-pane active animated fadeIn">
<div id="r_businessMetadataTableLayoutView">
</div>
</div>
<div id="tab-enum" role="enum" class="tab-pane animated fadeIn">
<div id="r_enumTableLayoutView">
</div>
</div>
<div id="tab-audit" role="audit" class="tab-pane animated fadeIn">
<div id="r_adminTableLayoutView">
</div>
</div>
</div>
</div>
\ No newline at end of file
<!--
* 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="tab-content admin-details">
<div id="tab-audit" role="adminaudit">
<div id="r_auditTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="position-relative">
<div class="tableOverlay"></div>
<!-- Not for table Loader its only for initial loading -->
<div class="fontLoader">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="attributeResultContainer form-group ">
<button class="btn-action btn-sm attribute-filter-text" data-id='adminAttrFilter'> <i class="fa fa-angle-right"></i> Filters</button>
<div class="attribute-filter-container hide">
<div class="panel panel-default expand_collapse_panel-icon" data-id="adminRegion">
<div class="panel-heading" data-toggle="collapse" href="#collapseAdmin" aria-expanded="true">
<h4 class="panel-title">
<a>Admin</a>
</h4>
<div class="btn-group pull-right">
<button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
</div>
</div>
<div id="collapseAdmin" class="panel-collapse collapse in">
<div class="panel-body">
<div id='r_attributeQueryBuilderAdmin' class='attribute-querybuilder'>
<div class='fontLoader-relative show'><i class='fa fa-refresh fa-spin-custom'></i></div>
</div>
</div>
</div>
</div>
<div class='attribute-result-footer'>
<div type="ok" class="btn btn-atlas ok search" data-id='attrApply'>Apply</div>
<div type="ok" class="btn btn-atlas ok" data-id='attrClose'>Close</div>
</div>
</div>
<div class="pull-right admin-type-dropdown">
<select class="pull-right form-controlrow-margin-bottom" data-id="adminType"></select>
</div>
</div>
<div class="auditTable" style="display: none">
<div class='attr-filter-overlay hide'></div>
<div id="r_adminAuditTableLayoutView"></div>
</div>
</div>
</div>
<div class="no-data" data-id="showDefault">
<div class="position-relative thick-border">
<div style="padding-top: 20px; " class="table-responsive tableBorder">
<table class="table table-hover backgrid table-quickMenu">
<tbody>
<tr class="empty">
<td colspan="16"><span>No Records found!</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
......@@ -21,12 +21,12 @@
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="auditTable" style="display: none">
<div>
<span class="labelShowRecord pull-left" data-id="pageRecordText"></span>
</div>
<div id="r_auditTableLayoutView"></div>
<div class="pagination-box">
<div class="backgrid-paginator pull-right">
<div class="pagination-box row">
<div class="col-sm-4">
<span class="labelShowRecord pull-left" data-id="pageRecordText"></span>
</div>
<div class="col-sm-8 backgrid-paginator">
<ul>
<li>
<button type="button" data-id="previousAuditData" title="Previous" disabled=true>
......
......@@ -15,8 +15,8 @@
* limitations under the License.
-->
<h4 style="word-break: break-word;" data-id="name"></h4>
<div class="panel-group server-stats-container statsContainer " id="accordion">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="detailsAttribute">
<div class="panel-group server-stats-container auditStatusContainer clearfix" id="accordion">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="detailsAttribute">
<div class="panel-heading" data-toggle="collapse" href="#detailAttributeTableCollapse" aria-expanded="true">
<h4 class="panel-title">
<a>Properties </a>
......@@ -37,7 +37,7 @@
</div>
</div>
</div>
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="attributeDetails">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="attributeDetails">
<div class="panel-heading" data-toggle="collapse" href="#attributeTableCollapse" aria-expanded="true">
<h4 class="panel-title">
<a data-id="panel-attr-heading">Technical properties </a>
......@@ -58,7 +58,7 @@
</div>
</div>
</div>
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="relationShipAttributeDetails">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="relationShipAttributeDetails">
<div class="panel-heading" data-toggle="collapse" href="#relationShipAttributeTableCollapse" aria-expanded="true">
<h4 class="panel-title">
<a>Relationship properties </a>
......@@ -79,7 +79,7 @@
</div>
</div>
</div>
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="customAttributeDetails">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="customAttributeDetails">
<div class="panel-heading" data-toggle="collapse" href="#customAttributeCollapse" aria-expanded="true">
<h4 class="panel-title">
<a>User-defined properties </a>
......@@ -100,7 +100,7 @@
</div>
</div>
</div>
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="labelsDetails">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="labelsDetails">
<div class="panel-heading" data-toggle="collapse" href="#labelsTableCollapse" aria-expanded="true">
<h4 class="panel-title">
<a>Labels</a>
......
<!--
* 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="business-metadata-attr-page" data-id="businessMetadataAttrPage">
<div class="business-metadata-attr-tableOverlay"></div>
<div class=" modal-header" data-id="businessMetadataAttrPageHeader">
<h4 class="modal-title" data-id="businessMetadataAttrPageTitle"></h4>
</div>
<div id="r_modal">
</div>
<div class="business-metadata-attr-fontLoader">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<!-- <div class="modal-footer " data-id="modalFooter">
<button type="button" class="btn btn-action cancel" data-id="businessMetadataAttrPageCancle">Cancel</button>
<button type="button" class="btn btn-atlas ok" data-id="businessMetadataAttrPageOk">Ok</button>
</div> -->
</div>
<div class="business-metadata-details" data-id="businessMetadataDetailPage">
<div class="position-relative">
<div class="pull-right inline-content-fr no-padding-left">
<div class="inline" data-id="colManager"></div>
<div class="inline">
<button type="button" data-id="addAttribute" title="Create Business Metadata Attribute" class="btn btn-action btn-sm pull-right btn-loader" style="margin-bottom: 10px;" data-action="createBusinessMetadata">
<i class='fa fa-plus'></i> Attributes
</button></div>
</div>
<div class="tableOverlay"></div>
<div class='attr-filter-overlay hide'></div>
<div class="auditTable business-metadata-details">
<div id="r_businessMetadataAttrTableLayoutView"></div>
</div>
</div>
</div>
\ No newline at end of file
<!--
* 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 id="{{modalID}}" class="form-group clearfix business-metadata-attr">
<div class="form-group">
<div class="col-sm-12 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>
<div class="form-group">
<label class="control-label col-sm-3 required" for="name">Name</label>
<div class="col-sm-8">
<input class="form-control attributeInput require" data-id="attributeInput" placeholder="Attribute name">
</input>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-3 required" for="type">Type</label>
<div class="col-sm-8">
<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>long</option>
<option>date</option>
<option>enumeration</option>
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-3 required" for="type">Search Weight</label>
<div class="col-sm-8">
<select class="form-control searchWeightSelector" data-id="searchWeightSelector">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option selected="selected">5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
</select>
</div>
</div>
<div class="form-group" data-id="multiValueSelect">
<label class="control-label col-sm-3" for="multiValSelect">Enable Multivalues</label>
<div class="col-sm-8">
<input type="checkbox" class="form-check-input multi-value-select" data-id="multiValueSelectStatus">
</div>
</div>
<div class="form-group enumtype-container" data-id="enumTypeSelectorContainer">
<div class="">
<label class="control-label col-sm-3 required" for="enumType">Enum Name</label>
<div class="col-sm-5">
<select class="form-control enumTypeSelector require" data-id="enumTypeSelector" multiple="false">
</select>
</div>
<div class="col-sm-3">
<button type="button" class="btn btn-action btn-sm" data-id="createNewEnum" data-action="" title="Create/Update Enum"> <i class="fa fa-pencil"></i> Enum</button>
</div>
</div>
</div>
<div class="form-group enumvalue-container" data-id="enumValueSelectorContainer">
<div class="">
<label class="control-label col-sm-3 required" for="enumVal">Enum Value</label>
<div class="col-sm-8">
<select class="form-control enumValueSelector" data-id="enumValueSelector" multiple="true">
</select>
</div>
</div>
</div>
<div class="form-group" data-id="stringLengthContainer">
<div class="stringlength-container">
<label class="control-label col-sm-3 required" for="name">Max length</label>
<div class="col-sm-8">
<input type="number" class="form-control stringLengthVal require" data-id="stringLength" placeholder="Maximum length">
</div>
</div>
</div>
<div class="form-group entity-businessMetadata-selector">
<label class="control-label col-sm-3" for="name">Applicable Types</label>
<div class="col-sm-8">
<select class="form-control entityTypeSelector" data-id="entityTypeSelector" multiple="multiple">
</select>
</div>
</div>
</div>
\ No newline at end of file
<!--
* 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>
<div id="r_businessMetadataDetailContainer"></div>
<div id="r_businessMetadataAttrContainer" class="col-sm-12"></div>
</div>
\ No newline at end of file
<!--
* 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="page-title clearfix">
<div class="fontLoader">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="tagDetail clearfix form-horizontal col-sm-12">
<h1 class="title"><span data-id="title"></span></h1>
<p class="form-group col-sm-12" data-id="description"></p>
</div>
</div>
</div>
\ No newline at end of file
<!--
* 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="business-metadata-attr-page" data-id="businessMetadataAttrPage">
<div class="business-metadata-attr-tableOverlay"></div>
<div class=" modal-header" data-id="businessMetadataAttrPageHeader">
<h4 class="modal-title" data-id="businessMetadataAttrPageTitle"></h4>
</div>
<div id="r_modal">
</div>
<div class="business-metadata-attr-fontLoader">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<!-- <div class="modal-footer " data-id="modalFooter">
<button type="button" class="btn btn-action cancel" data-id="businessMetadataAttrPageCancle">Cancel</button>
<button type="button" class="btn btn-atlas ok" data-id="businessMetadataAttrPageOk">Ok</button>
</div> -->
</div>
<div class="business-metadata-details" data-id="businessMetadataDetailPage">
<div class="position-relative">
<div class="pull-right inline-content-fr no-padding-left">
<div class="inline" data-id="colManager"></div>
<div class="inline">
<button type="button" data-id="createBusinessMetadata" title="Create Business Metadata" class="btn btn-action btn-sm pull-right btn-loader" style="margin-bottom: 10px;" data-action="createBusinessMetadata">
<i class='fa fa-plus'></i> Create Business Metadata
</button></div>
</div>
<div class="tableOverlay"></div>
<div class='attr-filter-overlay hide'></div>
<div class="auditTable business-metadata-details">
<div id="r_businessMetadataTableLayoutView"></div>
</div>
</div>
</div>
\ No newline at end of file
<!--
* 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="fontLoader">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<form class="hide form-horizontal" data-id="createForm" style="width: 70%;margin: 0 auto;">
{{#if fromTable}}
<div class="form-group">
<label class="control-label col-sm-2 {{#if create}}required{{/if}}" for="name">Name</label>
{{#if create}}
<div class="col-sm-10">
<input class="form-control businessMetadata-name require" data-id="name" placeholder="Name(required)" autofocus />
</div>
{{else}}
<span class="ellipsis-with-margin control-label text-left col-sm-10" data-id="title"></span> {{/if}}
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="description">Description</label>
<div class="col-sm-10">
<input class="form-control" data-id="description" value="{{description}}" placeholder="Description" />
</div>
</div>
{{/if}}
<div class="form-group">
<!-- <h4 class="col-sm-6">Attributes</h4> -->
{{#if isEditAttr}}
<div class="col-sm-12 no-padding-left">
<button title="Add Business Metadata attribute" type="button" class="btn btn-action btn-sm pull-left" data-id="attributeData"><i class="fa fa-plus"></i> Add Business Metadata attribute</button>
</div>
{{/if}}
</div>
<div data-id="addAttributeDiv">
</div>
</div>
</form>
<div class="modal-footer " data-id="modalFooter">
<button type="button" class="btn btn-action cancel" data-id="businessMetadataAttrPageCancle">Cancel</button>
<button type="button" class="btn btn-atlas ok" data-id="businessMetadataAttrPageOk">Ok</button>
</div>
\ No newline at end of file
<!--
* 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="form-horizontal form-group clearfix enum-attr">
<div class="form-group" data-id="enumTypeSelectorContainer">
<label class="control-label col-sm-3 required" for="enumType">Enum Name</label>
<div class="col-sm-8">
<select class="form-control enumTypeSelector" data-id="enumSelector">
</select>
</div>
</div>
<div class="form-group " data-id="enumValueSelectorContainer">
<label class="control-label col-sm-3 required" for="enumVal">Enum Value</label>
<div class="col-sm-8">
<select class="form-control enumValueSelector" data-id="valueSelector" multiple="multiple">
</select>
</div>
</div>
<div class="form-group " data-id="enumFooter">
<label class="control-label col-sm-3" for="enumVal"></label>
<div class="col-sm-8">
<button type="button" data-id="enumCancleBtn" class="btn btn-action cancel">Cancel</button>
<button type="button" data-id="enumOkBtn" class="btn btn-atlas ok">Update</button>
</div>
</div>
</div>
\ No newline at end of file
......@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
<div class="modal-dialog {{mainClass}} " style="width:{{width}}" role="document">
<div class="modal-dialog {{mainClass}}{{modal-full-screen}} " style="width:{{width}}" role="document">
<div class="modal-content">
{{#if title}}
<div class="modal-header">
......
......@@ -22,11 +22,7 @@
{{/unless}}
</div>
</div>
{{#if includePagination}}
<div class="clearfix banded">
<div data-id="r_footerRecords" class="margin-top-10"></div>
</div>
{{/if}} {{#if includeAtlasPagination}}
{{#if includeAtlasPagination}}
<div class="row form-group pagination-box filter-box">
<div class="col-sm-4">
<span class="labelShowRecord pull-left" data-id="pageRecordText"> </span>
......@@ -43,7 +39,10 @@
</div>
{{#if includePagination}}
<div class="row clearfix banded pagination-box">
<div class="col-sm-offset-4 col-sm-8">
<div class="col-sm-4">
<div data-id="r_footerRecords" class="margin-top-10"></div>
</div>
<div class="col-sm-8">
<div class="inline-content-fr">
<div data-id="r_pagination" data-id="paginationDiv" class="inline"></div>
{{#if includeGotoPage}}
......
......@@ -19,13 +19,13 @@
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="entityDetail form-horizontal col-sm-12">
<h1 class="title row isIncomplete">
<h1 class="title isIncomplete">
<div data-id="entityIcon" class="entity-icon-box position-relative"></div>
<span data-id="title"></span>
</h1> {{#if entityUpdate}}
<!-- <div data-id="editButtonContainer" class="pull-right"></div> -->
{{/if}}
<div class="form-group">
<div class="form-group col-md-12">
<span class="control-label-sm-pr pull-left">Classifications:</span>
<div class="pull-left" data-id="tagList">
<button class="btn btn-action btn-sm" title="Add Classification" data-id="addTag">
......@@ -33,7 +33,7 @@
</button>
</div>
</div>
<div class="form-group termBox">
<div class="form-group termBox col-md-12">
<span class="control-label-sm-pr pull-left">Terms:</span>
<div class="pull-left" data-id="termList">
<button class="btn btn-action btn-sm" title="Add Term" data-id="addTerm">
......@@ -41,7 +41,7 @@
</button>
</div>
</div>
<div class="form-group" style="display: none;" data-id="propagatedTagDiv">
<div class="form-group col-md-12" style="display: none;" data-id="propagatedTagDiv">
<span class="control-label-sm-pr pull-left">Propagated Classifications:</span>
<div class="pull-left" data-id="propagatedTagList">
</div>
......@@ -62,70 +62,81 @@
</div>
</div>
</div>
<div>
<div class="tab-content">
<div id="tab-details" role="properties" class="tab-pane active animated fadeIn">
<div class="row">
<div class="col-md-6">
<div id="r_entityDetailTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
<div class="tab-content">
<div id="tab-details" role="properties" class="tab-pane active animated fadeIn">
<div class="row">
<div class="col-md-6">
<div id="r_entityDetailTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div class="col-md-6">
<div id="r_entityUserDefineView"></div>
<div id="r_entityLabelDefineView"></div>
</div>
<div class="col-md-6 loader-row">
<div id="r_entityUserDefineView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="r_entityLabelDefineView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="r_entityBusinessMetadataView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
</div>
</div>
<div id="tab-lineage" role="lineage" class="tab-pane animated fadeIn">
<div id="r_lineageLayoutView" class="animated position-relative" align="center">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-lineage" role="lineage" class="tab-pane animated fadeIn">
<div id="r_lineageLayoutView" class="animated position-relative" align="center">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-relationship" role="relationship" class="tab-pane animated fadeIn">
<div id="r_relationshipLayoutView" class="animated position-relative">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-relationship" role="relationship" class="tab-pane animated fadeIn">
<div id="r_relationshipLayoutView" class="animated position-relative">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-tagTable" role="classification" class="tab-pane animated fadeIn">
<div id="r_tagTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-tagTable" role="classification" class="tab-pane animated fadeIn">
<div id="r_tagTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-audit" role="audit" class="tab-pane animated fadeIn">
<div id="r_auditTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-audit" role="audit" class="tab-pane animated fadeIn">
<div id="r_auditTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-raudit" role="raudits" class="tab-pane">
<div id="r_replicationAuditTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-raudit" role="raudits" class="tab-pane">
<div id="r_replicationAuditTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-schema" role="schema" class="tab-pane animated fadeIn">
<div id="r_schemaTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-schema" role="schema" class="tab-pane animated fadeIn">
<div id="r_schemaTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-profile" role="profile" class="tab-pane animated fadeIn">
<div id="r_profileLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-profile" role="profile" class="tab-pane animated fadeIn">
<div id="r_profileLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
</div>
......
<!--
* 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.
-->
{{#ifCond model "has" "isNew"}}
<table class="custom-table" style="font-weight: 100;">
<tr class="custom-tr">
<td class="custom-col-1">
{{{callmyfunction getBusinessMetadataDroupdown businessMetadataCollection}}}
</td>
<td class="custom-col-0"> : </td>
<td class="custom-col-1" data-id="value">
<input type="text" data-key disabled class="form-control">
</td>
<td class="custom-col-2 btn-group">
<button class="btn btn-default btn-sm" data-id="deleteItem">
<i class="fa fa-minus"> </i>
</button>
<button class="btn btn-default btn-sm" data-id="addItem">
<i class="fa fa-plus"> </i>
</button>
</td>
</tr>
</table>
{{else}}
<hr />
<ul class="business-metadata-tree-parent">
<li>{{model.__internal_UI_businessMetadataName}}</li>
<li class="business-metadata-tree-child" data-id="businessMetadataTreeChild">
</li>
</ul>
{{/ifCond}}
\ No newline at end of file
<!--
* 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="panel panel-default custom-panel expand_collapse_panel-icon">
<div class="panel-heading" data-toggle="collapse" href="#businessMetadataCollapse" aria-expanded="false" style="width: 70%;">
<h4 class="panel-title">
<a>Business Metadata</a>
</h4>
<div class="btn-group pull-left">
<button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
</div>
</div>
<div class="panel-actions">
<button class="btn btn-action btn-sm" data-id="addBusinessMetadata">Add</button>
<button class="btn btn-action btn-sm" style="display: none;" data-id="saveBusinessMetadata">Save</button>
<button class="btn btn-action btn-sm" style="display: none;" data-id="cancel">Cancel</button>
</div>
<div id="businessMetadataCollapse" class="panel-collapse collapse">
<div class="panel-body">
<div data-id="businessMetadataTree"></div>
<div class="editBox" style="display: none;">
<div class="form-group">
<a href="javascript:void(0)" class="btn btn-action btn-sm" data-id="addItem" data-type="addAttrButton">Add New Attribute</a>
</div>
<ul class="business-metadata-tree-parent" data-id="itemView"></ul>
</div>
</div>
</div>
</div>
\ No newline at end of file
......@@ -72,30 +72,28 @@
{{/if}}
</div>
</div>
<div class="container-fluid">
{{#if isTermView}}
<div class="tab-content">
<div id="tab-entities" role="entities" class="tab-pane active animated fadeIn">
<div id="r_searchResultLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
{{#if isTermView}}
<div class="tab-content">
<div id="tab-entities" role="entities" class="tab-pane active animated fadeIn">
<div id="r_searchResultLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-tagTable" role="classification" class="tab-pane animated fadeIn">
<div id="r_tagTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-tagTable" role="classification" class="tab-pane animated fadeIn">
<div id="r_tagTableLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-relatedTerm" role="relatedTerm" class="tab-pane animated fadeIn">
<div id="r_relationLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
<div id="tab-relatedTerm" role="relatedTerm" class="tab-pane animated fadeIn">
<div id="r_relationLayoutView">
<div class="fontLoader-relative">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
</div>
{{/if}}
</div>
\ No newline at end of file
</div>
{{/if}}
\ No newline at end of file
......@@ -16,7 +16,7 @@
-->
<div class="position-relative">
<div class="tableOverlay"></div>
<div class="inline-content-fr table-action-btn">
<div class="inline-content-fr">
<div class="clearfix inline">
<a href="javascript:void(0)" title="Assign Classification" class="inputAssignTag multiSelectTag assignTag btn btn-action btn-sm" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i>&nbsp;Classification</a>
</div>
......
......@@ -14,12 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
<div class="container-fluid gray-bg">
<div class="container-fluid">
<div class="row">
<div class="col-sm-custom">
<div class="atlast-tabbable">
<div id="r_searchResultLayoutView"></div>
</div>
<div id="r_searchResultLayoutView"></div>
</div>
</div>
</div>
\ No newline at end of file
......@@ -15,7 +15,7 @@
* limitations under the License.
-->
<div id="r_queryBuilder">
<div class="fontLoader">
<div class="fontLoader-relative show">
<i class="fa fa-refresh fa-spin-custom"></i>
</div>
</div>
......@@ -36,12 +36,9 @@
</div>
</div>
</div>
<div class="{{#unless isGlossaryView}}row well{{/unless}}" style="padding-top: 0px;">
<div style="padding-top: 0px;">
<div class="row form-group pagination-box filter-box" style="display: none;">
<div class="col-sm-3">
<span class="labelShowRecord pull-left" data-id="pageRecordText"> </span>
</div>
<div class="col-sm-9 inline-content-fr no-padding-left">
<div class="col-sm-12 inline-content-fr no-padding-left">
<div class="inline" data-id="colManager"></div>
<div class="inline">
<a href="javascript:void(0)" class="multiSelectTag assignTag btn btn-action btn-sm" style="display:none" title="Assign Classification" data-id="addAssignTag"><i class="fa fa-plus"></i>&nbsp;Classification</a>
......@@ -80,13 +77,16 @@
</div>
{{/if}}
</div>
<div class="row pagination-box searach-result-pagination" style="display: none">
<div class="col-sm-offset-4 col-sm-8">
<div class="pagination-box searach-result-pagination row" style="display: none">
<div class="col-sm-4">
<span class="labelShowRecord pull-left" data-id="pageRecordText"> </span>
</div>
<div class="col-sm-8">
<div class="inline-content-fr">
<div class="backgrid-paginator inline">
<ul class="" data-id="paginationDiv" style="display:none">
<li>
<button type="button" data-id="previousData" title="Previous" disabled=true>
<button type="button" data-id="previousData" title="Previous" disabled="true">
<i class="fa fa-angle-left" aria-hidden="true"></i>
</button>
</li>
......@@ -104,7 +104,9 @@
<div class="input-group" data-id="goToPageDiv">
<input type="text" class="form-control number-input" data-id="gotoPage" placeholder="Goto Page" />
<span class="input-group-btn">
<button class="btn btn-default" type="button" data-id="gotoPagebtn" title="Goto Page" disabled="disabled">Go!</button>
<button class="btn btn-default" type="button" data-id="gotoPagebtn" title="Goto Page" disabled="disabled">
Go!
</button>
</span>
</div>
</div>
......@@ -112,8 +114,7 @@
<div class="inline-content">
<span class="control-label-sm inline ">Page Limit :</span>
<div class="inline" style="width: 80px;">
<select data-id="showPage" multiple="multiple" class="form-control">
</select>
<select data-id="showPage" multiple="multiple" class="form-control"> </select>
</div>
</div>
</div>
......
......@@ -22,7 +22,7 @@
<li>
<a href="javascript:void(0);" data-id="menuHamburger"><i class="fa fa-bars"></i></a>
</li>
<li class="details-backbutton"><a href="javascript:void(0);" data-id="backButton"><i class="fa fa-chevron-left"></i> Back To Results</a></li>
<li class="details-backbutton"><a href="javascript:void(0);" data-id="backButton"><i class="fa fa-chevron-left"></i><span> Back To Results</span></a></li>
</ul>
</td>
<td class="global-search-container">
......@@ -41,6 +41,7 @@
<td>
<a href="javascript:void(0);" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="user-dropdown"><i class="fa fa-user user-circle "></i><span class="userName"></span></a>
<ul class="dropdown-menu pull-right multi-level">
<li><a href="javascript:void(0)" data-id='administrator'>Administration</a></li>
<li class="aboutAtlas"><a href="javascript:void(0)">About</a></li>
<li role="separator" class="divider"></li>
<li><a data-id="uiSwitch" href="javascript:void(0)">Switch to New</a></li>
......
......@@ -16,12 +16,10 @@
-->
<div id="r_TagAttributeDetailLayoutView">
</div>
<div class="container-fluid gray-bg">
<div class="container-fluid">
<div class="row">
<div class="col-sm-custom">
<div class="atlast-tabbable">
<div id="r_searchResultLayoutView"></div>
</div>
<div id="r_searchResultLayoutView"></div>
</div>
</div>
</div>
\ No newline at end of file
......@@ -16,7 +16,7 @@
-->
<div class="position-relative">
<div class="tableOverlay"></div>
<div class="inline-content-fr table-action-btn">
<div class="inline-content-fr">
<div class="inline">
<label class="checkbox-inline btn">
<input type="checkbox" data-id="checkPropagtedTag" class="input" checked="true" name="queryType" value="text" name="check" value="1" /> Show Propagated Classifications</label>
......
......@@ -28,7 +28,8 @@ define(["require"], function(require) {
stateChanged: false,
tagUrl: "#!/tag",
searchUrl: "#!/search",
glossaryUrl: "#!/glossary"
glossaryUrl: "#!/glossary",
administratorUrl: "#!/administrator"
},
detailPageState: {}
};
......
......@@ -113,6 +113,81 @@ define(['require',
$("body").on('click', '.btn', function() {
$(this).blur();
});
$.fn.select2.amd.define("TagHideDeleteButtonAdapter", [
"select2/utils",
"select2/selection/multiple",
"select2/selection/placeholder",
"select2/selection/eventRelay",
"select2/selection/search",
],
function(Utils, MultipleSelection, Placeholder, EventRelay, SelectionSearch) {
// Decorates MultipleSelection with Placeholder
var adapter = Utils.Decorate(MultipleSelection, Placeholder);
adapter = Utils.Decorate(adapter, SelectionSearch);
adapter = Utils.Decorate(adapter, EventRelay);
adapter.prototype.render = function() {
// Use selection-box from SingleSelection adapter
// This implementation overrides the default implementation
var $search = $(
'<li class="select2-search select2-search--inline">' +
'<input class="select2-search__field" type="search" tabindex="-1"' +
' autocomplete="off" autocorrect="off" autocapitalize="none"' +
' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
'</li>'
);
this.$searchContainer = $search;
this.$search = $search.find('input');
var $selection = MultipleSelection.prototype.render.call(this);
this._transferTabIndex();
return $selection;
};
adapter.prototype.update = function(data) {
// copy and modify SingleSelection adapter
var that = this;
this.clear();
if (data.length === 0) {
this.$selection.find('.select2-selection__rendered')
.append(this.$searchContainer);
this.$search.attr('placeholder', this.options.get("placeholder"));
return;
}
this.$search.attr('placeholder', '');
var $rendered = this.$selection.find('.select2-selection__rendered'),
$selectionContainer = [];
if (data.length > 0) {
_.each(data, function(obj) {
var $container = $('<li class="select2-selection__choice"></li>'),
formatted = that.display(obj, $rendered),
$remove = $('<span class="select2-selection__choice__remove" role="presentation">&times;</span>'),
allowRemoveAttr = $(obj.element).data("allowremove"),
allowRemove = obj.allowRemove === undefined ? allowRemoveAttr : obj.allowRemove;
if (allowRemove === undefined || allowRemove !== false) {
$container.append($remove);
}
$container.data("data", obj);
$container.append(formatted);
$selectionContainer.push($container);
});
Utils.appendMany($rendered, $selectionContainer);
}
var searchHadFocus = this.$search[0] == document.activeElement;
this.$search.attr('placeholder', '');
this.$selection.find('.select2-selection__rendered')
.append(this.$searchContainer);
this.resizeSearch();
if (searchHadFocus) {
this.$search.focus();
}
};
return adapter;
});
if ($.fn.select2) {
$.fn.select2.amd.define("ServiceTypeFilterDropdownAdapter", [
......
......@@ -96,7 +96,9 @@ define(['require', 'utils/Utils', 'marionette', 'backgrid', 'asBreadcrumbs', 'jq
});
}
if (modelValue.get('width')) that.$el.find('.' + modelValue.get('name')).css('min-width', modelValue.get('width') + 'px');
if (modelValue.get('fixWidth')) that.$el.find('.' + modelValue.get('name')).css('width', modelValue.get('fixWidth') + 'px');
if (modelValue.get('toolTip')) that.$el.find('.' + modelValue.get('name')).attr('title', modelValue.get('toolTip'));
if (modelValue.get('headerClassName')) that.$el.find('.' + modelValue.get('name').replace(".", "\\.")).addClass(modelValue.get('headerClassName'));
});
return this;
}
......@@ -162,6 +164,95 @@ define(['require', 'utils/Utils', 'marionette', 'backgrid', 'asBreadcrumbs', 'jq
return this;
};
/*
backgrid-expandable-cell
https://github.com/cime/backgrid-expandable-cell
Copyright (c) 2014 Andrej Cimperšek
Licensed under the MIT @license.
*/
Backgrid.ExpandableCell = Backgrid.Cell.extend({
accordion: true,
toggle: '<i style="cursor: pointer;" class="glyphicon toggle pull-left"></i>',
toggleClass: 'toggle',
toggleExpandedClass: 'fa fa-angle-down',
toggleCollapsedClass: 'fa fa-angle-right',
trClass: 'expandable',
tdClass: 'expandable-content',
events: {
'click': 'setToggle'
},
initialize: function(options) {
if (options.accordion) {
this.accordion = options.accordion;
}
this.column = options.column;
if (!(this.column instanceof Backgrid.Column)) {
this.column = new Backgrid.Column(this.column);
}
var column = this.column,
model = this.model,
$el = this.$el;
if (Backgrid.callByNeed(column.renderable(), column, model)) $el.addClass("renderable");
},
render: function() {
/* follow along with the original render really... */
this.$el.empty();
this.$toggleEl = $(this.toggle).addClass(this.toggleClass).addClass(this.toggleCollapsedClass);
this.$el.append(this.$toggleEl);
this.delegateEvents();
return this;
},
setToggle: function() {
var detailsRow = this.$el.data('details');
var toggle = this.$toggleEl;
/* if there's details data already stored, then we'll remove it */
if (detailsRow) {
$(detailsRow).remove();
this.$el.data('details', null);
toggle.removeClass(this.toggleExpandedClass).addClass(this.toggleCollapsedClass);
} else {
if (this.accordion) {
var table = this.$el.closest('table');
$('.' + this.toggleClass, table).filter('.' + this.toggleExpandedClass).click();
}
var renderableColumns = this.$el.closest('table').find('th.renderable').length;
var isRenderable = false;
var cellClass = this.tdClass;
if (Backgrid.callByNeed(this.column.renderable(), this.column, this.model)) {
isRenderable = true;
cellClass += ' renderable';
}
/* build a jquery object for the new row... */
detailsRow = $('<tr class="' + this.trClass + '"></td><td class="' + cellClass + '" colspan="' + (renderableColumns - 1) + '"></td></tr>');
/* Inject new row */
this.$el.closest('tr').after(detailsRow);
/* Call expand function */
this.column.get('expand')(detailsRow.find('td.' + this.tdClass), this.model);
this.$el.data('details', detailsRow);
toggle.removeClass(this.toggleCollapsedClass).addClass(this.toggleExpandedClass);
}
return this;
}
});
// Backgrid patch
Backgrid.Header.prototype.initialize = BackgridHeaderInitializeMethod;
......
......@@ -37,12 +37,18 @@ define(['require', 'utils/Enums', 'utils/Utils', 'underscore'], function(require
classificationDefApiUrl: function(name) {
return this.getDefApiUrl('classification', name);
},
businessMetadataDefApiUrl: function(name) {
return this.getDefApiUrl('business_metadata', name);
},
enumDefApiUrl: function(name) {
return this.getDefApiUrl('enum', name);
},
metricsApiUrl: function() {
return this.baseUrl + '/admin/metrics'
},
migrationStatusApiUrl: function() {
return this.baseUrl + '/admin/status'
},
rootEntityDefUrl: function(name) {
return this.baseUrlV2 + '/types/entitydef/name/' + name;
},
......@@ -99,6 +105,11 @@ define(['require', 'utils/Enums', 'utils/Utils', 'underscore'], function(require
return this.baseUrlV2 + '/entity/bulk/classification';
}
},
entitiesBusinessMetadataApiUrl: function(guid) {
if (guid) {
return this.baseUrlV2 + '/entity/guid/' + guid + '/businessmetadata?isOverwrite=true';
}
},
entityCollectionaudit: function(guid) {
return this.baseUrlV2 + '/entity/' + guid + '/audit';
},
......@@ -232,6 +243,9 @@ define(['require', 'utils/Enums', 'utils/Utils', 'underscore'], function(require
},
sessionApiUrl: function() {
return this.baseUrl + '/admin/session';
},
adminApiUrl: function() {
return this.baseUrl + '/admin/audits';
}
});
......
......@@ -352,6 +352,8 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
urlUpdate['searchUrl'] = options.url;
} else if (Utils.getUrlState.isGlossaryTab(options.url)) {
urlUpdate['glossaryUrl'] = options.url;
} else if (Utils.getUrlState.isAdministratorTab(options.url)) {
urlUpdate['administratorUrl'] = options.url;
}
$.extend(Globals.saveApplicationState.tabState, urlUpdate);
}
......@@ -387,12 +389,22 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
matchString: "tag"
});
},
isBSDetail: function(url) {
var quey = this.getQueryUrl(url);
return (quey.queyParams[0].indexOf("administrator/businessMetadata")) > -1 ? true : false;
},
isSearchTab: function(url) {
return this.checkTabUrl({
url: url,
matchString: "search"
});
},
isAdministratorTab: function(url) {
return this.checkTabUrl({
url: url,
matchString: "administrator"
});
},
isGlossaryTab: function(url) {
return this.checkTabUrl({
url: url,
......@@ -552,6 +564,27 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
}
}
Utils.backButtonClick = function() {
var queryParams = Utils.getUrlState.getQueryParams(),
urlPath = "searchUrl";
if (queryParams && queryParams.from) {
if (queryParams.from == "classification") {
urlPath = "tagUrl";
} else if (queryParams.from == "glossary") {
urlPath = "glossaryUrl";
} else if (queryParams.from == "bm") {
urlPath = "administratorUrl";
}
}
Utils.setUrl({
url: Globals.saveApplicationState.tabState[urlPath],
mergeBrowserUrl: false,
trigger: true,
updateTabState: true
});
}
Utils.showTitleLoader = function(loaderEl, titleBoxEl) {
loaderEl.css ? loaderEl.css({
'display': 'block',
......
/**
* 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/administrator/AdministratorLayoutView_tmpl',
'collection/VEntityList',
'models/VSearch',
'utils/Utils',
'utils/Enums',
'utils/UrlLinks',
'utils/CommonViewFunction'
], function(require, Backbone, AdministratorLayoutView_tmpl, VEntityList, VSearch, Utils, Enums, UrlLinks, CommonViewFunction) {
'use strict';
var AdministratorLayoutView = Backbone.Marionette.LayoutView.extend(
/** @lends AuditTableLayoutView */
{
_viewName: 'AdministratorLayoutView',
template: AdministratorLayoutView_tmpl,
/** Layout sub regions */
regions: {
RBusinessMetadataTableLayoutView: "#r_businessMetadataTableLayoutView",
REnumTableLayoutView: '#r_enumTableLayoutView',
RAdminTableLayoutView: '#r_adminTableLayoutView'
},
/** ui selector cache */
ui: {
tablist: '[data-id="tab-list"] li'
},
/** ui events hash */
events: function() {
var events = {};
events["click " + this.ui.tablist] = function(e) {
var tabValue = $(e.currentTarget).attr('role');
Utils.setUrl({
url: Utils.getUrlState.getQueryUrl().queyParams[0],
urlParams: { tabActive: tabValue || 'properties' },
mergeBrowserUrl: false,
trigger: false,
updateTabState: true
});
};
return events;
},
/**
* intialize a new AuditTableLayoutView Layout
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'entityDefCollection', 'businessMetadataDefCollection', 'enumDefCollection', 'searchTableFilters'));
},
onShow: function() {
if (this.value && this.value.tabActive) {
this.$('.nav.nav-tabs').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
this.$('.tab-content').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
$("html, body").animate({ scrollTop: (this.$('.tab-content').offset().top + 1200) }, 1000);
}
},
bindEvents: function() {
this.renderEnumLayoutView();
this.renderAdminLayoutView();
},
onRender: function() {
this.renderBusinessMetadataLayoutView();
this.bindEvents();
},
renderBusinessMetadataLayoutView: function(obj) {
var that = this;
require(['views/business_metadata/BusinessMetadataTableLayoutView'], function(BusinessMetadataTableLayoutView) {
that.RBusinessMetadataTableLayoutView.show(new BusinessMetadataTableLayoutView({ businessMetadataDefCollection: that.businessMetadataDefCollection, entityDefCollection: that.entityDefCollection }));
});
},
renderEnumLayoutView: function(obj) {
var that = this;
require(["views/business_metadata/EnumCreateUpdateItemView"], function(EnumCreateUpdateItemView) {
var view = new EnumCreateUpdateItemView({
enumDefCollection: that.enumDefCollection,
businessMetadataDefCollection: that.businessMetadataDefCollection
});
that.REnumTableLayoutView.show(view);
});
},
renderAdminLayoutView: function(obj) {
var that = this;
require(["views/audit/AdminAuditTableLayoutView"], function(AdminAuditTableLayoutView) {
var view = new AdminAuditTableLayoutView({
searchTableFilters: that.searchTableFilters,
entityDefCollection: that.entityDefCollection,
enumDefCollection: that.enumDefCollection
});
that.RAdminTableLayoutView.show(view);
});
}
});
return AdministratorLayoutView;
});
\ No newline at end of file
......@@ -179,6 +179,32 @@ define(['require',
getAuditTableColumns: function() {
var that = this;
return this.entityCollection.constructor.getTableCols({
tool: {
label: "",
cell: "html",
editable: false,
sortable: false,
fixWidth: "20",
cell: Backgrid.ExpandableCell,
accordion: false,
expand: function(el, model) {
el.attr('colspan', '4');
require([
'views/audit/CreateAuditTableLayoutView',
], function(CreateAuditTableLayoutView) {
that.action = model.get('action');
// $(el.target).attr('disabled', true);
var eventModel = that.entityCollection.fullCollection.findWhere({ 'eventKey': model.get('eventKey') }).toJSON(),
collectionModel = new that.entityCollection.model(eventModel),
view = new CreateAuditTableLayoutView({ guid: that.guid, entityModel: collectionModel, action: that.action, entity: that.entity, entityName: that.entityName, attributeDefs: that.attributeDefs });
view.render();
$(el).append($('<div>').html(view.$el));
});
}
},
user: {
label: "Users",
cell: "html",
......@@ -207,19 +233,7 @@ define(['require',
}
}
})
},
tool: {
label: "Tools",
cell: "html",
editable: false,
sortable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
return '<div class="btn btn-action btn-sm" data-id="auditCreate" data-action="' + Enums.auditAction[model.get('action')] + '" data-modalId="' + model.get('eventKey') + '">Detail</div>';
}
})
},
}
}, this.entityCollection);
},
......
......@@ -124,11 +124,7 @@ define(['require',
relationshipAttributes = parseDetailsObject.relationshipAttributes;
if (attributesDetails) {
that.ui.attributeDetails.removeClass('hide');
if (that.action.includes("Classification") || that.action.includes("Business Attribute") != -1) {
that.ui.panelAttrHeading.html("Properties ");
} else {
that.ui.panelAttrHeading.html("Technical properties ");
}
that.action.indexOf("Classification") === -1 ? that.ui.panelAttrHeading.html("Technical properties ") : that.ui.panelAttrHeading.html("Properties ");
var attrTable = that.createTableWithValues(attributesDetails);
that.ui.attributeCard.html(
attrTable);
......@@ -178,4 +174,4 @@ define(['require',
}
});
return CreateAuditTableLayoutView;
});
});
\ No newline at end of file
/**
* 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/business_metadata/BusinessMetadataContainerLayoutView_tmpl"
], function(require, Backbone, BusinessMetadataContainerLayoutViewTmpl) {
"use strict";
var BusinessMetadataContainerLayoutView = Backbone.Marionette.LayoutView.extend(
/** @lends BusinessMetadataContainerLayoutView */
{
_viewName: "BusinessMetadataContainerLayoutView",
template: BusinessMetadataContainerLayoutViewTmpl,
/** Layout sub regions */
regions: {
RBusinessMetadataDetailContainer: "#r_businessMetadataDetailContainer",
RBusinessMetadataAttrContainer: "#r_businessMetadataAttrContainer"
},
/** ui selector cache */
ui: {},
/** ui events hash */
events: function() {},
/**
* intialize a new TagLayoutView Layout
* @constructs
*/
initialize: function(options) {
_.extend(this, options);
},
bindEvents: function() {},
onRender: function() {
this.updateView();
},
updateView: function() {
this.model = this.businessMetadataDefCollection.fullCollection.findWhere({ guid: this.guid });
this.renderBusinessMetadataDetailLayoutView();
this.renderBusinessMetadataAttrLayoutView();
},
renderBusinessMetadataDetailLayoutView: function() {
var that = this;
require(["views/business_metadata/BusinessMetadataDetailLayoutView"], function(BusinessMetadataDetailLayoutView) {
if (that.isDestroyed) {
return;
}
that.RBusinessMetadataDetailContainer.show(new BusinessMetadataDetailLayoutView({
businessMetadataDefCollection: that.businessMetadataDefCollection,
guid: that.guid,
model: that.model,
enumDefCollection: that.enumDefCollection,
typeHeaders: that.typeHeaders
}));
});
},
renderBusinessMetadataAttrLayoutView: function() {
var that = this;
require(["views/business_metadata/BusinessMetadataAttrTableLayoutView"], function(BusinessMetadataAttrTableLayoutView) {
if (that.isDestroyed) {
return;
}
that.RBusinessMetadataAttrContainer.show(new BusinessMetadataAttrTableLayoutView({
businessMetadataDefCollection: that.businessMetadataDefCollection,
model: that.model,
guid: that.guid,
typeHeaders: that.typeHeaders,
enumDefCollection: that.enumDefCollection,
entityDefCollection: that.entityDefCollection
}));
});
}
}
);
return BusinessMetadataContainerLayoutView;
});
\ No newline at end of file
/**
* 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/business_metadata/BusinessMetadataDetailLayoutView_tmpl',
'utils/Utils',
], function(require, Backbone, BusinessMetadataDetailLayoutViewTmpl, Utils) {
'use strict';
var BusinessMetadataDetailLayoutView = Backbone.Marionette.LayoutView.extend(
/** @lends BusinessMetadataDetailLayoutView */
{
template: BusinessMetadataDetailLayoutViewTmpl,
/** Layout sub regions */
regions: {},
/** ui selector cache */
ui: {
title: '[data-id="title"]',
description: '[data-id="description"]'
},
/** ui events hash */
events: function() {
var events = {};
return events;
},
/**
* intialize a new BusinessMetadataDetailLayoutView Layout
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'model'));
$('body').addClass("detail-page");
},
onRender: function() {
this.renderDetail();
},
renderDetail: function() {
this.ui.title.html('<span>' + this.model.get('name') + '</span>');
if (this.model.get('description')) {
this.ui.description.text((this.model.get('description')));
}
},
onDestroy: function() {
if (!Utils.getUrlState.isBSDetail()) {
$('body').removeClass("detail-page");
}
}
});
return BusinessMetadataDetailLayoutView;
});
\ No newline at end of file
......@@ -46,7 +46,8 @@ define(['require',
RProfileLayoutView: "#r_profileLayoutView",
RRelationshipLayoutView: "#r_relationshipLayoutView",
REntityUserDefineView: "#r_entityUserDefineView",
REntityLabelDefineView: "#r_entityLabelDefineView"
REntityLabelDefineView: "#r_entityLabelDefineView",
REntityBusinessMetadataView: "#r_entityBusinessMetadataView"
},
/** ui selector cache */
ui: {
......@@ -108,6 +109,7 @@ define(['require',
});
};
return events;
},
/**
......@@ -115,7 +117,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'collection', 'id', 'entityDefCollection', 'typeHeaders', 'enumDefCollection', 'classificationDefCollection', 'glossaryCollection'));
_.extend(this, _.pick(options, 'value', 'collection', 'id', 'entityDefCollection', 'typeHeaders', 'enumDefCollection', 'classificationDefCollection', 'glossaryCollection', 'businessMetadataDefCollection', 'searchVent'));
$('body').addClass("detail-page");
},
bindEvents: function() {
......@@ -242,6 +244,8 @@ define(['require',
enumDefCollection: this.enumDefCollection,
classificationDefCollection: this.classificationDefCollection,
glossaryCollection: this.glossaryCollection,
businessMetadataCollection: this.activeEntityDef.get('businessAttributeDefs'),
searchVent: this.searchVent,
attributeDefs: (function() {
return that.getEntityDef(collectionJSON);
})(),
......@@ -253,6 +257,9 @@ define(['require',
this.renderEntityDetailTableLayoutView(obj);
this.renderEntityUserDefineView(obj);
this.renderEntityLabelDefineView(obj);
if (obj.businessMetadataCollection) {
this.renderEntityBusinessMetadataView(obj);
}
this.renderRelationshipLayoutView(obj);
this.renderAuditTableLayoutView(obj);
this.renderTagTableLayoutView(obj);
......@@ -371,6 +378,9 @@ define(['require',
hideLoader: that.hideLoader.bind(that),
tagName: tagName,
callback: function() {
if (that.searchVent) {
that.searchVent.trigger("Classification:Count:Update");
}
that.fetchCollection();
}
}));
......@@ -454,6 +464,9 @@ define(['require',
guid: that.id,
tagList: tagList,
callback: function() {
if (that.searchVent) {
that.searchVent.trigger("Classification:Count:Update");
}
that.fetchCollection();
},
showLoader: that.showLoader.bind(that),
......@@ -506,6 +519,12 @@ define(['require',
that.REntityLabelDefineView.show(new EntityLabelDefineView(obj));
});
},
renderEntityBusinessMetadataView: function(obj) {
var that = this;
require(['views/entity/EntityBusinessMetaDataView'], function(EntityBusinessMetaDataView) {
that.REntityBusinessMetadataView.show(new EntityBusinessMetaDataView(obj));
});
},
renderTagTableLayoutView: function(obj) {
var that = this;
require(['views/tag/TagDetailTableLayoutView'], function(TagDetailTableLayoutView) {
......
......@@ -51,6 +51,8 @@ define(['require',
events: function() {
var events = {};
events["click " + this.ui.noValueToggle] = function() {
this.showAllProperties = !this.showAllProperties;
this.ui.noValueToggle.attr("data-original-title", (this.showAllProperties ? "Hide" : "Show") + " empty values");
Utils.togglePropertyRelationshipTableEmptyValues({
"inputType": this.ui.noValueToggle,
"tableEl": this.ui.detailValue
......@@ -66,6 +68,7 @@ define(['require',
initialize: function(options) {
_.extend(this, _.pick(options, 'entity', 'typeHeaders', 'attributeDefs', 'attributes', 'editEntity', 'guid', 'entityDefCollection', 'searchVent', 'fetchCollection'));
this.entityModel = new VEntity({});
this.showAllProperties = false;
},
bindEvents: function() {},
onRender: function() {
......
......@@ -90,10 +90,13 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'typeHeaders', 'searchVent', 'entityDefCollection', 'enumDefCollection', 'classificationDefCollection', 'searchTableColumns', 'searchTableFilters', 'metricCollection'));
_.extend(this, _.pick(options, 'value', 'typeHeaders', 'searchVent', 'entityDefCollection', 'enumDefCollection', 'classificationDefCollection', 'businessMetadataDefCollection', 'searchTableColumns', 'searchTableFilters', 'metricCollection'));
this.type = "basic";
this.entityCountObj = _.first(this.metricCollection.toJSON());
this.filterTypeSelected = [];
this.selectedFilter = {
'basic': [],
'dsl': []
}
var param = Utils.getUrlState.getQueryParams();
this.query = {
dsl: {
......@@ -426,7 +429,9 @@ define(['require',
entityDefCollection: that.entityDefCollection,
enumDefCollection: that.enumDefCollection,
classificationDefCollection: that.classificationDefCollection,
searchTableFilters: that.searchTableFilters
businessMetadataDefCollection: that.businessMetadataDefCollection,
searchTableFilters: that.searchTableFilters,
});
that.attrModal.on('ok', function(scope, e) {
that.okAttrFilterButton(e);
......@@ -490,8 +495,9 @@ define(['require',
serviceArr.push(serviceType);
}
});
_.each(_.uniq(serviceArr), function(service) {
serviceStr += '<li><div class="pretty p-switch p-fill"><input type="checkbox" class="pull-left" data-value="' + (service) + '" value="" ' + (_.contains(that.filterTypeSelected, service) ? "checked" : "") + '/><div class="state p-primary"><label>' + (service.toUpperCase()) + '</label></div></div></li>';
serviceStr += '<li><div class="pretty p-switch p-fill"><input type="checkbox" class="pull-left" data-value="' + (service) + '" value="" ' + (_.contains(that.selectedFilter[that.type], service) ? "checked" : "") + '/><div class="state p-primary"><label>' + (service.toUpperCase()) + '</label></div></div></li>';
});
var templt = serviceStr + '<hr class="hr-filter"/><div class="text-right"><div class="divider"></div><button class="btn btn-action btn-sm filterDone">Done</button></div>';
return templt;
......@@ -500,6 +506,9 @@ define(['require',
var that = this;
var serviceTypeToBefiltered = (options && options.filterList);
var isTypeOnly = options && options.isTypeOnly;
if (this.selectedFilter[this.type].length) {
serviceTypeToBefiltered = this.selectedFilter[this.type];
}
this.ui.typeLov.empty();
var typeStr = '<option></option>',
tagStr = typeStr,
......@@ -564,14 +573,14 @@ define(['require',
allowClear: true,
getFilterBox: this.getFilterBox.bind(this),
onFilterSubmit: function(options) {
that.filterTypeSelected = options.filterVal;
that.selectedFilter[that.type] = options.filterVal;
that.renderTypeTagList({ "filterList": options.filterVal, isTypeOnly: true })
}
});
typeLovSelect2.on("select2:close", function() {
typeLovSelect2.trigger("hideFilter");
});
if (typeLovSelect2 && serviceTypeToBefiltered) {
if (typeLovSelect2 && isTypeOnly) {
typeLovSelect2.select2('open').trigger("change", { 'manual': true });
}
if (that.setInitialEntityVal) {
......@@ -778,7 +787,7 @@ define(['require',
}
},
clearSearchData: function() {
this.filterTypeSelected = [];
this.selectedFilter[this.type] = [];
this.renderTypeTagList();
this.updateQueryObject();
this.ui.typeLov.val("").trigger("change");
......
......@@ -52,7 +52,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection', 'classificationDefCollection', 'tag', 'searchTableFilters'));
_.extend(this, _.pick(options, 'value', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection', 'classificationDefCollection', 'businessMetadataDefCollection', 'tag', 'searchTableFilters'));
this.bindEvents();
var that = this;
this.modal = new Modal({
......@@ -82,13 +82,13 @@ define(['require',
});
},
onRender: function() {
this.$('.fontLoader').show();
var obj = {
value: this.value,
searchVent: this.searchVent,
entityDefCollection: this.entityDefCollection,
enumDefCollection: this.enumDefCollection,
classificationDefCollection: this.classificationDefCollection,
businessMetadataDefCollection: this.businessMetadataDefCollection,
searchTableFilters: this.searchTableFilters,
typeHeaders: this.typeHeaders
}
......
......@@ -147,7 +147,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
_.extend(this, _.pick(options, 'value', 'guid', 'initialView', 'isTypeTagNotExists', 'classificationDefCollection', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection', 'tagCollection', 'searchTableColumns', 'isTableDropDisable', 'fromView', 'glossaryCollection', 'termName'));
_.extend(this, _.pick(options, 'value', 'guid', 'initialView', 'isTypeTagNotExists', 'classificationDefCollection', 'entityDefCollection', 'typeHeaders', 'searchVent', 'enumDefCollection', 'tagCollection', 'searchTableColumns', 'isTableDropDisable', 'fromView', 'glossaryCollection', 'termName', 'businessMetadataDefCollection'));
this.entityModel = new VEntity();
this.searchCollection = new VSearchList();
this.limit = 25;
......@@ -543,7 +543,6 @@ define(['require',
Globals.searchApiCallRef = this.searchCollection.fetch(apiObj);
}
}
},
tableRender: function(options) {
var that = this,
......@@ -644,7 +643,6 @@ define(['require',
if (this.value && this.value.searchType === "basic" && this.searchTableColumns && (this.searchTableColumns[this.value.type] !== undefined)) {
columnToShow = this.searchTableColumns[this.value.type] == null ? [] : this.searchTableColumns[this.value.type];
}
col['Check'] = {
name: "selected",
label: "Select",
......@@ -729,8 +727,6 @@ define(['require',
}
})
};
if (this.value && this.value.profileDBView) {
col['createTime'] = {
label: "Date Created",
......@@ -749,7 +745,6 @@ define(['require',
}
}
if (this.value && !this.value.profileDBView) {
col['description'] = {
label: "Description",
cell: "String",
......@@ -791,7 +786,23 @@ define(['require',
if (this.value && this.value.searchType === "basic") {
var def = this.entityDefCollection.fullCollection.find({ name: this.value.type }),
systemAttr = [];
systemAttr = [],
businessMetadataAttr = [],
businessAttributes = {};
if (this.value.type == "_ALL_ENTITY_TYPES") {
this.businessMetadataDefCollection.each(function(model) {
var sortedAttributes = model.get('attributeDefs') || null,
name = model.get('name');
if (sortedAttributes) {
sortedAttributes = _.sortBy(sortedAttributes, function(obj) {
return obj.name;
});
businessAttributes[name] = $.extend(true, {}, sortedAttributes);
}
})
} else {
businessAttributes = def ? ($.extend(true, {}, def.get('businessAttributeDefs')) || null) : null;
}
if (def || Globals[this.value.type] || (
this.value.tag ?
Globals[this.value.tag] ?
......@@ -806,6 +817,17 @@ define(['require',
systemAttr = (Globals[this.value.tag] || Globals[Enums.addOnClassification[0]]).attributeDefs;
}
attrObj = attrObj.concat(systemAttr);
if (businessAttributes) {
_.each(businessAttributes, function(businessMetadata, businessMetadataName) {
_.each(businessMetadata, function(attr, index) {
var attribute = attr;
attribute.isBusinessAttributes = true;
attribute.name = businessMetadataName + '.' + attribute.name;
businessMetadataAttr.push(attribute);
})
})
}
attrObj = attrObj.concat(businessMetadataAttr);
_.each(attrObj, function(obj, key) {
var key = obj.name,
isRenderable = _.contains(columnToShow, key),
......@@ -820,7 +842,7 @@ define(['require',
return;
}
col[obj.name] = {
label: Enums.systemAttributes[obj.name] ? Enums.systemAttributes[obj.name] : _.escape(obj.name).capitalize(),
label: Enums.systemAttributes[obj.name] ? Enums.systemAttributes[obj.name] : (_.escape(obj.isBusinessAttributes ? obj.name : obj.name.capitalize())),
cell: "Html",
headerCell: Backgrid.HeaderHTMLDecodeCell,
editable: false,
......@@ -828,6 +850,7 @@ define(['require',
orderable: true,
sortable: isSortable,
renderable: isRenderable,
headerClassName: obj.isBusinessAttributes ? "no-capitalize" : "",
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
var modelObj = model.toJSON();
......
......@@ -35,27 +35,13 @@ define(['require',
globalSearch: "[data-id='globalSearch']",
clearGlobalSearch: "[data-id='clearGlobalSearch']",
signOut: "[data-id='signOut']",
administrator: "[data-id='administrator']",
uiSwitch: "[data-id='uiSwitch']"
},
events: function() {
var events = {};
events['click ' + this.ui.backButton] = function() {
var queryParams = Utils.getUrlState.getQueryParams(),
urlPath = "searchUrl";
if (queryParams && queryParams.from) {
if (queryParams.from == "classification") {
urlPath = "tagUrl";
} else if (queryParams.from == "glossary") {
urlPath = "glossaryUrl";
}
}
Utils.setUrl({
url: Globals.saveApplicationState.tabState[urlPath],
mergeBrowserUrl: false,
trigger: true,
updateTabState: true
});
Utils.backButtonClick();
};
events['click ' + this.ui.clearGlobalSearch] = function() {
this.ui.globalSearch.val("");
......@@ -82,6 +68,14 @@ define(['require',
}
window.location.href = path;
};
events['click ' + this.ui.administrator] = function() {
Utils.setUrl({
url: "#!/administrator",
mergeBrowserUrl: false,
trigger: true,
updateTabState: true
});
};
return events;
},
......@@ -90,7 +84,7 @@ define(['require',
},
setSearchBoxWidth: function(options) {
var atlasHeaderWidth = this.$el.find(".atlas-header").width(),
minusWidth = Utils.getUrlState.isDetailPage() ? 413 : 263;
minusWidth = (Utils.getUrlState.isDetailPage() || Utils.getUrlState.isBSDetail()) ? 413 : 263;
if (options && options.updateWidth) {
atlasHeaderWidth = options.updateWidth(atlasHeaderWidth);
}
......
......@@ -116,7 +116,7 @@ define(['require',
that.$('.tabs').find('li a[aria-controls="tab-' + view + '"]').parents('li').addClass('active').siblings().removeClass('active');
that.$('.tab-content').find('div#tab-' + view).addClass('active').siblings().removeClass('active');
};
if (Utils.getUrlState.isSearchTab() || Utils.getUrlState.isInitial()) {
if (Utils.getUrlState.isSearchTab() || Utils.getUrlState.isInitial() || Utils.getUrlState.isAdministratorTab()) {
activeTab({ "view": "search" });
} else if (Utils.getUrlState.isTagTab()) {
activeTab({ "view": "classification" });
......@@ -134,7 +134,7 @@ define(['require',
}
activeTab({ "view": view });
}
},
}
});
return SideNavLayoutView;
});
\ No newline at end of file
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