<!--
 * 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="typeSystemTreeViewPage" data-id="typeSystemTreeViewPage" class="systemTypeTree" style="height: calc(100vh - 180px); width: 100%; position: relative;overflow: hidden;">
    <div class="box-panel size-lg type-node-details fix-box slide-from-right lineage-node-detail">
        <div class="header clearfix">
            <div class="typeDetailHeader">
                <h4 style="padding-right: 67px;"><span data-id="typeName"></span></h4>
                <div class="pretty p-switch p-fill" style="position: absolute;top: 13px;right: 32px;">
                    <input type="checkbox" data-id="noValueToggle" title="Show empty values" />
                    <div class="state p-primary">
                        <label></label>
                    </div>
                </div>
                <span data-id="box-close" class="btn btn-sm btn-close "><i class="fa fa-close"></i></span>
            </div>
            <div class="typeAttrDetailHeader" style="display: none;">
                <span data-id="box-back" class="btn btn-sm btn-close" style="left: 0px; right: auto;"><i class="fa fa-angle-left"></i></span>
                <h4 style="padding-left: 27px;"><span data-id="typeAttrDetailHeader"></span></h4>
            </div>
        </div>
        <div class="body">
            <table class="table bold-key">
                <tbody data-id="nodeDetailTable" class="hide-empty-value"></tbody>
            </table>
            <div data-id="attribute-table" style="height: calc(100vh - 60px);display: none">
                <pre class="code-block" style="height: 100%"></pre>
            </div>
        </div>
    </div>
    <div class="fontLoader">
        <i class="fa fa-refresh fa-spin-custom"></i>
    </div>
    <div class="box-panel filter-box">
        <div class="header clearfix">
            <h4>Filters</h4>
            <span data-id="box-close" class="btn btn-sm btn-close"><i class="fa fa-close"></i></span>
        </div>
        <div class="body">
            <div class="form-group text-left col-sm-12">
                <select data-id="filterServiceType"></select>
            </div>
        </div>
    </div>
    <div class="box-panel search-box">
        <div class="header clearfix">
            <h4>Search</h4>
            <span data-id="box-close" class="btn btn-sm btn-close"><i class="fa fa-close"></i></span>
        </div>
        <div class="body">
            <div class="col-sm-12 no-padding">
                <div class="srchType clearfix">
                    <div class="">
                        <div class="col-sm-12 no-padding temFilter">
                            <select data-id="typeSearch"></select>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="box-panel setting-box">
        <div class="header clearfix">
            <h4>Settings</h4>
            <span data-id="box-close" class="btn btn-sm btn-close"><i class="fa fa-close"></i></span>
        </div>
        <div class="body">
            <div class="showOnlyHoverPath form-group text-left col-sm-12">
                <div class="pretty p-switch p-fill">
                    <input type="checkbox" checked class="pull-left" data-id="showOnlyHoverPath" value="" />
                    <div class="state p-primary">
                        <label>On hover show current path</label>
                    </div>
                </div>
            </div>
            <div class="showTooltip form-group text-left col-sm-12">
                <div class="pretty p-switch p-fill">
                    <input type="checkbox" class="pull-left" data-id="showTooltip" value="" />
                    <div class="state p-primary">
                        <label>Show node details on hover</label>
                    </div>
                </div>
            </div>
            <div class="showTooltip form-group text-left col-sm-12">
                <div class="pretty p-switch p-fill">
                    <input type="checkbox" class="pull-left" data-id="labelFullName" value="" id="labelFullName"/>
                    <div class="state p-primary">
                        <label>Display fullname</label>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="graph-button-group pull-right">
        <div>
            <button data-id="reset" class="btn btn-action btn-gray btn-sm" title="Reset">
                <i class="fa fa-retweet"></i>
            </button>
        </div>
        <div>
            <button data-id="saveSvg" class="btn btn-action btn-gray btn-sm" title="Export to PNG">
                <i class="fa fa-camera"></i>
            </button>
        </div>
        <div>
            <button type="button" data-id="setting-toggler" title="Settings" class="btn btn-action btn-gray btn-sm">
                <i class="fa fa-gear"></i>
            </button>
        </div>
        <div>
            <button type="button" data-id="filter-toggler" title="Filter" class="btn btn-action btn-gray btn-sm"><i class="fa fa-filter"></i></button>
        </div>
        <div>
            <button type="button" data-id="search-toggler" title="Search" class="btn btn-action btn-gray btn-sm"><i class="fa fa-search"></i></button>
        </div>
        <div class="btn-group">
            <button type="button" class="btn btn-action btn-gray btn-sm" title="Zoom In" data-id="zoom-in">
                <i class="fa fa-search-plus"></i>
            </button>
            <button type="button" class="btn btn-action btn-gray btn-sm" title="Zoom Out" data-id="zoom-out">
                <i class="fa fa-search-minus"></i>
            </button>
        </div>
        <div>
            <button type="button" data-id="fullScreen-toggler" title="Full screen" class="btn btn-action btn-gray btn-sm">
                <i class="fa fa-expand"></i>
            </button>
        </div>
    </div>
    <svg class="main" width="100%" height="100%">
    </svg>
    <!--  <div id="mini" class="mini-map-type-system">
        <svg class="mini" width="100%" height="100%">
        </svg>
    </div> -->
</div>