<!--
 * 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="row row-margin-bottom">
    <div class="col-sm-12" style="margin:15px 0px;">
        <div class="row">
            <div class="col-md-9" style="margin-top: 5px;">
                <span class="pull-left">Basic</span>
                <label class="switch pull-left">
                    <input type="checkbox" class="switch-input" name="queryType" value="text" />
                    <span class="switch-slider"></span>
                </label>
                <span class="pull-left">Advanced</span>
                <span class="advancedInfo" data-id="advancedInfo"><i class="fa fa-question-circle-o"></i></span>
            </div>
            <div class="col-md-3">
                <button type="button" class="btn btn-atlasAction btn-atlas pull-right typeLOV" title="Refresh" data-id="refreshBtn"><i class="fa fa-refresh"></i></button>
            </div>
        </div>
    </div>
    <div class="col-sm-12">
        <div class="form-group">
            <div class="srchType clearfix">
                <span class="srchTitle">Search By Type</span>
                <div class="">
                    <div class="col-sm-10 no-padding temFilter">
                        <select data-id="typeLOV"></select>
                    </div>
                    <div class="col-sm-2 no-padding temFilterBtn">
                        <button type="button" class="btn btn-atlasAction btn-atlas pull-right typeLOV" title="Entity Attribute Filter" data-id="typeAttrFilter"><i class="fa fa-filter"></i></button>
                    </div>
                </div>
            </div>
            <div class="srchType tagBox clearfix">
                <span class="srchTitle">Search By Tag</span>
                <div>
                    <div class="col-sm-10 no-padding">
                        <select data-id="tagLOV"></select>
                    </div>
                    <div class="col-sm-2 no-padding">
                        <button type="button" class="btn btn-atlasAction btn-atlas pull-right" title="Tag Attribute Filter" data-id="tagAttrFilter"><i class="fa fa-filter"></i></button>
                    </div>
                </div>
            </div>
            <div class="srchType">
                <span class="srchTitle">Search By Query</span>
                <input type="text" class="form-control" data-id="searchInput" placeholder="Search using a query string: e.g. sales_fact" style="margin: 5px 0px;">
            </div>
        </div>
        <div class="clearAdvanceSearch" data-id="clearSearch">Clear</div>
        <button type="button" class="btn btn-atlas advanceSearchBtn" data-id="searchBtn" disabled="disabled">Search</button>
    </div>
    <div id="searchResult"></div>
</div>
