<!--
 * 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="{{modalID}}" class="form-group clearfix business-metadata-attr">
    <div class="form-group">
        <div class="col-sm-12 attributePlusData " align="right">
            <button type="button" class="btn btn-danger btn-sm closeInput" data-id="close"><i class="fa fa-times"></i></button>
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-3 required" for="name">Name</label>
        <div class="col-sm-8">
            <input class="form-control attributeInput require" data-id="attributeInput" placeholder="Attribute name">
            </input>
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-3 required" for="type">Type</label>
        <div class="col-sm-8">
            <select class="form-control dataTypeSelector" data-id="dataTypeSelector">
                <option selected="selected">string</option>
                <option>boolean</option>
                <option>byte</option>
                <option>short</option>
                <option>int</option>
                <option>float</option>
                <option>double</option>
                <option>long</option>
                <option>date</option>
                <option>enumeration</option>
            </select>
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-3 required" for="type">Search Weight</label>
        <div class="col-sm-6">
            <select class="form-control searchWeightSelector" data-id="searchWeightSelector">
                <option>0</option>
                <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option selected="selected">5</option>
                <option>6</option>
                <option>7</option>
                <option>8</option>
                <option>9</option>
                <option>10</option>
            </select>
        </div>
        <label class="control-label">
            <i class="fa fa-question-circle help-btn" title="<div><span><i class='fa fa-arrow-up'></i> the search weight for the attribute,<i class='fa fa-arrow-up'></i> the entity in the topmost search results when searched for by that attribute</span><h6><u>Applicable Ranges</u></h6><ul style='padding:0px'><li>Quick search: <b>0 - 10</b></li><li>Suggestion: <b>8 - 10</b></li></ul></div>" data-html="true"></i>
        </label>
    </div>
    <div class="form-group" data-id="multiValueSelect">
        <label class="control-label col-sm-3" for="multiValSelect">Enable Multivalues</label>
        <div class="col-sm-8">
            <input type="checkbox" class="form-check-input multi-value-select" data-id="multiValueSelectStatus">
        </div>
    </div>
    <div class="form-group enumtype-container" data-id="enumTypeSelectorContainer">
        <div class="">
            <label class="control-label col-sm-3 required" for="enumType">Enum Name</label>
            <div class="col-sm-5">
                <select class="form-control enumTypeSelector require" data-id="enumTypeSelector" multiple="false">
                </select>
            </div>
            <div class="col-sm-3">
                <button type="button" class="btn btn-action btn-sm" data-id="createNewEnum" data-action="" title="Create/Update Enum"> <i class="fa fa-pencil"></i> Enum</button>
            </div>
        </div>
    </div>
    <div class="form-group enumvalue-container" data-id="enumValueSelectorContainer">
        <div class="">
            <label class="control-label col-sm-3 required" for="enumVal">Enum Value</label>
            <div class="col-sm-8">
                <select class="form-control enumValueSelector" data-id="enumValueSelector" multiple="true">
                </select>
            </div>
        </div>
    </div>
    <div class="form-group" data-id="stringLengthContainer">
        <div class="stringlength-container">
            <label class="control-label col-sm-3 required" for="name">Max length</label>
            <div class="col-sm-8">
                <input type="number" class="form-control stringLengthVal require" data-id="stringLength" placeholder="Maximum length">
            </div>
        </div>
    </div>
    <div class="form-group entity-businessMetadata-selector">
        <label class="control-label col-sm-3" for="name">Applicable Types</label>
        <div class="col-sm-8">
            <select class="form-control entityTypeSelector" data-id="entityTypeSelector" multiple="multiple">
            </select>
        </div>
    </div>
</div>