<!--
 * 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="back-button" title="Back to search page">
        <i class="fa fa-angle-left" data-id="backButton"></i>
    </div>
    <div class="fontLoader">
        <i class="fa fa-refresh fa-spin-custom"></i>
    </div>
    <div class="entityDetail form-horizontal col-sm-12">
        <h1 class="title">
            <div data-id="entityIcon" class="entity-icon-box"></div>
            <span data-id="title"></span>
        </h1> {{#if entityUpdate}}
        <div data-id="editButtonContainer" class="pull-right"></div>
        {{/if}}
        <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">
                    <i class="fa fa-plus"> </i>
                </button>
            </div>
        </div>
        <div class="form-group termBox col-md-12">
            <span class="control-label-sm-pr pull-left">Term:</span>
            <div class="pull-left" data-id="termList">
                <button class="btn btn-action btn-sm" title="Add Term" data-id="addTerm">
                    <i class="fa fa-plus"> </i>
                </button>
            </div>
        </div>
        <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>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12 default-tab">
            <ul class="nav nav-tabs" data-id="tab-list">
                <li role="properties" class="tab active"><a href="#tab-details" aria-controls="tab-details" role="tab" data-toggle="tab">Properties</a></li>
                <li role="lineage" class="tab lineageGraph" style="display:none"><a href="#tab-lineage" aria-controls="tab-lineage" role="tab" data-toggle="tab">Lineage</a></li>
                <li role="relationship" class="tab"><a href="#tab-relationship" aria-controls="tab-relationship" role="tab" data-toggle="tab">Relationships</a></li>
                <li role="classification"><a href="#tab-tagTable" aria-controls="tab-tagTable" role="tab" data-toggle="tab">Classifications</a></li>
                <li role="audit" class="tab"><a href="#tab-audit" aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
                <li role="raudits" class="tab replicationTab" style="display:none"><a href="#tab-raudit" aria-controls="tab-raudit" role="tab" data-toggle="tab">Export/Import Audits</a></li>
                <li role="schema" class="tab schemaTable" style="display:none"><a href="#tab-schema" aria-controls="tab-schema" role="tab" data-toggle="tab">Schema</a></li>
                <li role="profile" class="tab profileTab" style="display:none"><a href="#tab-profile" aria-controls="tab-profile" role="tab" data-toggle="tab">Profile</a></li>
            </ul>
        </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>
                </div>
                <div class="col-md-6">
                    <div id="r_entityUserDefineView"></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>
        <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>
        <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>
        <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>
        <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>
        <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>
        <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>
    </div>
</div>
</div>
