<!--
 * 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="back-button" title="Back to search page">
        <i class="fa fa-angle-left" data-id="backButton"></i>
    </div>
    <div data-id="details" class="clearfix form-horizontal col-sm-12">
        <h1 class="title"><span data-id="title"></span></h1>
        <button type="button" data-id="editButton" class="btn btn-sm btn-action pull-right"><i class="fa fa-pencil"></i></button>
        <div class="form-group short-description-container">
            <span class="pull-left text-muted">Short Description:&nbsp;</span>
            <div class="pull-left">
                <p data-id="shortDescription"></p>
            </div>
        </div>
        <div class="form-group long-description-container">
            <span class="pull-left text-muted">Long Description:&nbsp;</span>
            <div class="isTextTypeBtn-wrapper pull-right">
                <span class="text-muted pull-left">Formatted</span>
                <label class="switch pull-left">
                    <input type="checkbox" class="switch-input" name="textType" value="text">
                    <span class="switch-slider"></span>
                </label>
                <span class="text-muted">Plain</span>
            </div>
            <div class="glossary-longdescription-wrapper form-control">
                <div class="long-description" name="longDescription" data-id="longDescription" disabled></div>
            </div>
        </div>
        {{#if isTermView}}
        <div class="form-group col-sm-12">
            <span class="control-label-sm-pr pull-left">Classifications:</span>
            <div class="pull-left" data-id="tagListTerm">
                <button class="btn btn-action btn-sm" title="Add Classification" data-id="addTagTerm">
                    <i class="fa fa-plus"> </i>
                </button>
            </div>
        </div>
        <div class="form-group col-sm-12">
            <span class="control-label-sm-pr pull-left">Categories:</span>
            <div class="pull-left" data-id="categoryList">
                <button class="btn btn-action btn-sm" title="Add Category" data-id="addCategory">
                    <i class="fa fa-plus"> </i>
                </button>
            </div>
        </div>
        {{/if}} {{#if isCategoryView}}
        <div class="form-group col-sm-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">
                    <i class="fa fa-plus"> </i>
                </button>
            </div>
        </div>
        {{/if}} {{#if isTermView}}
        <div class="row">
            <div class="col-sm-12 default-tab no-padding">
                <ul class="nav nav-tabs" data-id="tab-list">
                    <li role="entities" class="tab active"><a href="#tab-entities" aria-controls="tab-entities" role="tab" data-toggle="tab">Entities</a></li>
                    <li role="entities" class="tab"><a href="#tab-entitiesProperties" aria-controls="tab-entities" role="tab" data-toggle="tab">Properties</a></li>
                    <li role="classification"><a href="#tab-tagTable" aria-controls="tab-tagTable" role="tab" data-toggle="tab">Classifications</a></li>
                    <li role="relatedTerm"><a href="#tab-relatedTerm" aria-controls="tab-relatedTerm" role="tab" data-toggle="tab">Related Terms</a></li>
                </ul>
            </div>
        </div>
        {{/if}}
    </div>
</div>
{{#if isTermView}}
<div class="tab-content">
    <div id="tab-entitiesProperties" role="entitiesProperties" class="tab-pane animated fadeIn">
        <div id="r_termProperties">
            <div class="fontLoader-relative">
                <i class="fa fa-refresh fa-spin-custom"></i>
            </div>
        </div>
    </div>
    <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>
    <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-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>
</div>
{{/if}}