<!--
 * 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.
-->
<h4 style="word-break: break-word;" data-id="name"></h4>
<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>
            </h4>
            <div class="btn-group pull-left">
                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
            </div>
        </div>
        <div id="detailAttributeTableCollapse" class="panel-collapse collapse in">
            <div class="panel-body">
                <table class="table stat-table">
                    <tbody data-id="attributeDetail-card">
                        <tr class="empty text-center">
                            <td colspan="3"><span>No records found!</span></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <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={{technicalPropPanelId.anchor}} aria-expanded="true">
            <h4 class="panel-title">
                <a data-id="panel-attr-heading">Technical properties </a>
            </h4>
            <div class="btn-group pull-left">
                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
            </div>
        </div>
        <div id={{technicalPropPanelId.id}} class="panel-collapse collapse in">
            <div class="panel-body">
                <table class="table stat-table">
                    <tbody data-id="attribute-card">
                        <tr class="empty text-center">
                            <td colspan="3"><span>No records found!</span></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <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={{relationshipPropPanelId.anchor}} aria-expanded="true">
            <h4 class="panel-title">
                <a>Relationship properties </a>
            </h4>
            <div class="btn-group pull-left">
                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
            </div>
        </div>
        <div id={{relationshipPropPanelId.id}} class="panel-collapse collapse in">
            <div class="panel-body">
                <table class="table stat-table">
                    <tbody data-id="relationship-attr-card">
                        <tr class="empty text-center">
                            <td colspan="3"><span>No records found!</span></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <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={{userdefinedPropPanelId.anchor}} aria-expanded="true">
            <h4 class="panel-title">
                <a>User-defined properties </a>
            </h4>
            <div class="btn-group pull-left">
                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
            </div>
        </div>
        <div id={{userdefinedPropPanelId.id}} class="panel-collapse collapse in">
            <div class="panel-body">
                <table class="table stat-table">
                    <tbody data-id="custom-attr-card">
                        <tr class="empty text-center">
                            <td colspan="3"><span>No records found!</span></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    <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>
            </h4>
            <div class="btn-group pull-left">
                <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
            </div>
        </div>
        <div id="labelsTableCollapse" class="panel-collapse collapse in">
            <div class="panel-body">
                <div class="row">
                    <div class="col-md-12">
                        <div class="badge-container" data-id="label-card">
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<h4 data-id="noData" class="text-center hide"><i>No details to show!</i></h4>