<!--
 * 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="">
    <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>
        <div id="r_searchQuery">
            <div class="panel panel-default" id="filterPanel">
                <div class="panel-heading clearfix">
                    <h4 class="panel-title pull-left">Type,Tag filter/s</h4>
                    <div class="btn-group pull-right">
                        <button type="button" id="expand_collapse_panel" class="expand_collapse_panel" title="Collapse"><i class="fa fa-chevron-up" aria-hidden="true"></i></button>
                    </div>
                </div>
                <div id="panel_body" class="panel-body collapse in" align="center">
                    <p class="filterQuery" id="filterQuery"></p>
                </div>
            </div>
        </div>
    </div>
    <div class="ellipsis" style="display: none;"><span class="searchResult" style=" font-size: 16px;"></span>
        <a href="javascript:void(0)" class="inputAssignTag multiSelectTerm btnAssign" style="display:none" data-id="addTerm"><i class="fa fa-folder-o"></i> Assign Term</a>
        <a href="javascript:void(0)" class="inputAssignTag multiSelectTag assignTag btnAssign" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i> Assign Tag</a>
    </div>
    <div class="searchTable">
        <div data-id="containerCheckBox" style="display: none;">
            <input type="checkbox" id="inputLabel" class="checkbox-inline" name="queryType" value="text" name="check" value="1" data-id="checkDeletedEntity" />
            <label class="checkbox-inline" for="inputLabel">
                <b>Include historical entities</b></label>
        </div>
        <span style="display: none;" class="labelShowRecord pull-left" data-id="pageRecordText"></span>
        <div data-id="paginationDiv" style="display:none">
            <ul class="pager pull-right">
                <li>
                    <button type="button" class="btn" data-id="previousData" disabled=true>Previous</button>
                </li>
                <li>
                    <button type="button" class="btn" data-id="nextData">Next</button>
                </li>
            </ul>
        </div>
        <div id="r_searchResultTableLayoutView">
            {{#if entityCreate}}
            <div class="entityLink" style="display:none">
                <h1><b>{{searchType}}</b></h1>
                <p class="entityLink">Search Atlas for existing entities or
                    <a href="javascript:void(0)" data-id='createEntity'> create new entity </a>
                </p>
            </div>
            {{/if}}
        </div>
    </div>
</div>
