<!--
 * 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="graph-toolbar clearfix"></div> -->
<div class="white-bg no-padding lineage-box">
    <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="hideProcessContainer form-group text-left col-sm-12">
                <div class="pretty p-switch p-fill">
                    <input type="checkbox" class="pull-left" data-id="checkHideProcess" value="" />
                    <div class="state p-primary">
                        <label>Hide Process</label>
                    </div>
                </div>
            </div>
            <div class="hideDeletedContainer form-group text-left col-sm-12">
                <div class="pretty p-switch p-fill">
                    <input type="checkbox" data-id="checkDeletedEntity" value="" />
                    <div class="state p-primary">
                        <label>Hide Deleted Entity</label>
                    </div>
                </div>
            </div>
            <div class="depth-container form-group select2-mini">
                <label class="control-label col-sm-4">Depth:</label>
                <div class="col-sm-4 no-padding">
                    <select data-id="selectDepth" class="form-control"></select>
                </div>
            </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">
                    <label class="srchTitle">Search Lineage Entity: </label>
                    <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 full name</label>
                    </div>
                </div>
            </div>
            {{#if compactLineageEnabled}}
            <div class="showTooltip text-left col-sm-12">
                <div class="nodeCount-container">
                    <label class="col-sm-8 no-padding">Nodes On Demand</label>
                    <div class="col-sm-4 no-padding">
                        <select data-id="selectNodeCount" class="form-control"></select>
                    </div>
                </div>
            </div>
            {{/if}}
        </div>
    </div>
    <div class="graph-button-group pull-right">
        <div>
            <button data-id="resetLineage" class="btn btn-action btn-gray btn-sm" title="Realign Lineage">
                <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 lineageZoomButton" 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 lineageZoomButton" 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 fullscreen_lineage">
                <i class="fa fa-expand"></i>
            </button>
        </div>
    </div>
    <div class="fontLoader">
        <i class="fa fa-refresh fa-spin-custom"></i>
    </div>
    <div class="legends pull-left" style="height: 25px; padding: 2px;"></div>
    <div class="svg" style="height: 100%; width: 100%"></div>
</div>
<div class="box-panel size-lg slide-from-right lineage-node-detail fix-box">
    <div class="header clearfix">
        <h4><span data-id="typeName"></span></h4>
        <span data-id="box-close" class="btn btn-sm btn-close lineage-node-detail-close"><i class="fa fa-close"></i></span>
        <span data-id="box-close" class="btn btn-sm btn-close lineage-node-detail-close"><i class="fa fa-close"></i></span>
    </div>
    <div class="body">
        <table class="table bold-key">
            <tbody data-id="nodeDetailTable"></tbody>
        </table>
    </div>
</div>
<div class="hidden-svg"></div>