<!--
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="query" class="clearfix">

  <div id="form">
    <form>
      <label for="qt" title="Request handler in solrconfig.xml.">
        <a rel="help">Request-Handler (qt)</a>
      </label>
      <input type="text" ng-model="qt" id="qt" placeholder="/select" value="/select" title="Request handler in solrconfig.xml.">

      <fieldset class="common">
        <legend>common</legend>
        <div class="fieldset">

        <label for="q" title="The query string.">
          q
        </label>
        <textarea name="q" ng-model="val['q']" id="q" title="The query string.">*:*</textarea>

        <label for="qOp" title="The query operator.">
          q.op
        </label>
        <select ng-model="val['q.op']" id="qOp" name="q.op" title="The query operator.">
          <option value="AND">AND</option>
          <option value="OR">OR</option>
        </select>

        <label for="fq" title="Filter query.">
          <a rel="help">fq</a>
        </label>
        <div class="multiple" id="fq">
          <div class="row clearfix" ng-repeat="filter in filters">
            <input type="text" ng-model="filter.fq" name="fq" title="Filter query.">
            <div class="buttons">
              <a class="rem" ng-click="removeFilter($index)"><span></span></a>
              <a class="add" ng-click="addFilter($index)"><span></span></a>
            </div>
          </div>
        </div>

        <label for="sort" title="Sort field or function with asc|desc.">
          <a rel="help">sort</a>
        </label>
        <input type="text" ng-model="val['sort']" id="sort" name="sort" title="Sort field or function with asc|desc.">

        <label for="start" title="Number of leading documents to skip and number of documents to return after 'start'. (Integers)">
          <a rel="help">start</a>,
          <a rel="help">rows</a>
        </label>
        <div class="clearfix">
          <input type="text" name="start" ng-model="val['start']" id="start" placeholder="0" pattern="[0-9]+" title="Number of leading documents to skip. (Integer)">
          <input type="text" name="rows" ng-model="val['rows']" id="rows" placeholder="10" pattern="[0-9]+" title="Number of documents to return after 'start'. (Integer)">
        </div>

        <label for="fl" title="Field list, comma separated.">
          <a rel="help">fl</a>
        </label>
        <input type="text" ng-model="val['fl']" name="fl" id="fl" value="" title="Field list, comma separated.">

        <label for="df" title="Default search field">
          <a rel="help">df</a>
        </label>
        <input type="text" ng-model="val['df']" name="df" id="df" value="" title="Default search field">

        <label for="wt" title="The writer type (response format).">
          <a rel="help">wt</a>
        </label>
        <select name="wt" ng-model="val['wt']" id="wt" title="The writer type (response format).">
          <option ng-selected="selected" value=''>------</option>
          <option>json</option>
          <option>xml</option>
          <option>python</option>
          <option>ruby</option>
          <option>php</option>
          <option>csv</option>
        </select>

        <label for="indent" class="checkbox" title="Enable indenting of results.">
          <input type="checkbox" ng-model="val['indent']" name="indent" id="indent" title="Enable indenting of results." ng-true-value="true" ng-false-value="false">
          indent on
        </label>

        </div>
      </fieldset>

      <fieldset class="debugQuery optional">
        <legend>
          <label for="debugQuery" class="checkbox" title="Show timing and diagnostics.">
            <input type="checkbox" ng-model="val['debugQuery']" name="debugQuery" id="debugQuery" value="true">
            debugQuery
          </label>
        </legend>
        <div class="fieldset" ng-show="isDebugQuery">

        <label for="debug_explain_structured" class="checkbox" title="Show Score explanations as nested structures.">
          <input type="checkbox" ng-model="val['debug.explain.structured']" name="debug.explain.structured" id="debug_explain_structured" value="true">
          debug.explain.structured
        </label>

        </div>
      </fieldset>

      <fieldset class="dismax optional">
        <legend>
          <label for="defType" class="checkbox" title="Choose defType">
            defType
            <select ng-model="val['defType']" name="defType" id="defType">
              <option ng-selected="selected" value=''>lucene</option>
              <option>dismax</option>
              <option>edismax</option>
            </select>
          </label>
        </legend>

        <div class="fieldset" ng-show="val['defType']!=''">
          <label for="q_alt" title="Alternate query when 'q' is absent.">q.alt</label>
          <input type="text" ng-model="val['q.alt']" name="q.alt" id="q_alt"  title="Alternate query when 'q' is absent.">

          <label for="qf" title="Query fields with optional boosts.">qf</label>
          <input type="text" ng-model="val['qf']" name="qf" id="qf" title="Query fields with optional boosts.">

          <label for="mm" title="Min-should-match expression.">mm</label>
          <input type="text" ng-model="val['mm']" name="mm" id="mm" title="Min-should-match expression.">

          <label for="pf" title="Phrase boosted fields.">pf</label>
          <input type="text" ng-model="val['pf']" name="pf" id="pf" title="Phrase boosted fields.">

          <label for="ps" title="Phrase boost slop.">ps</label>
          <input type="text" ng-model="val['ps']" name="ps" id="ps" title="Phrase boost slop.">

          <label for="qs" title="Query string phrase slop.">qs</label>
          <input type="text" ng-model="val['qs']" name="qs" id="qs" title="Query string phrase slop.">

          <label for="tie" title="Score tie-breaker. Try 0.1.">tie</label>
          <input type="text" ng-model="val['tie']" name="tie" id="tie" title="Score tie-breaker. Try 0.1.">

          <label for="bq" title="Boost query.">bq</label>
          <input type="text" ng-model="val['bq']" name="bq" id="bq" title="Boost query.">

          <label for="bf" title="Boost function (added).">bf</label>
          <input type="text" ng-model="val['bf']" name="bf" id="bf" title="Boost function (added).">
          <div ng-show="val['defType']=='edismax'">
            <label for="uf" title="User Fields">uf</label>
            <input type="text" ng-model="val['uf']" name="uf" id="uf" title="User Fields">

            <label for="pf2" title="bigram phrase boost fields">pf2</label>
            <input type="text" ng-model="val['pf2']" name="pf2" id="pf2" title="bigram phrase boost fields">

            <label for="pf3" title="trigram phrase boost fields">pf3</label>
            <input type="text" ng-model="val['pf3']" name="pf3" id="pf3" title="trigram phrase boost fields">

            <label for="ps2" title="phrase slop for bigram phrases">ps2</label>
            <input type="text" ng-model="val['ps2']" name="ps2" id="ps2" title="phrase slop for bigram phrases">

            <label for="ps3" title="phrase slop for trigram phrases">ps3</label>
            <input type="text" ng-model="val['ps3']" name="ps3" id="ps3" title="phrase slop for trigram phrases">

            <label for="boost" title="multiplicative boost function">boost</label>
            <input type="text" ng-model="val['boost']" name="boost" id="boost" title="multiplicative boost function">

            <label for="stopwords" class="checkbox" title="remove stopwords from mandatory 'matching' component">
              <input type="checkbox" ng-model="val['stopwords']" name="stopwords" id="stopwords">
              stopwords
            </label>

            <label for="lowercaseOperators" class="checkbox" title="Enable lower-case 'and' and 'or' as operators">
              <input type="checkbox" ng-model="val['lowercaseOperators']" name="lowercaseOperators" id="lowercaseOperators">
              lowercaseOperators
            </label>
          </div>
        </div>
      </fieldset>

      <fieldset class="hl optional">
        <legend>
          <label for="hl" class="checkbox" title="Enable highlighting.">
            <input type="checkbox" ng-model="val['hl']" name="hl" id="hl" value="true">
            hl
          </label>
        </legend>
        <div class="fieldset" ng-show="val['hl']">

        <label for="hl_fl" title="Fields to highlight on.">hl.fl</label>
        <input type="text" ng-model="val['hl.fl']" name="hl.fl" id="hl_fl" value="" title="Fields to highlight on.">

        <label for="hl_simple_pre">hl.simple.pre</label>
        <input type="text" ng-model="val['hl.simple.pre']" name="hl.simple.pre" id="hl_simple_pre" value="<em>">

        <label for="hl_simple_post">hl.simple.post</label>
        <input type="text" ng-model="val['hl.simple.post']"  name="hl.simple.post" id="hl_simple_post" value="</em>">

        <label for="hl_requireFieldMatch" class="checkbox">
          <input type="checkbox" ng-model="val['hl.requireFieldMatch']" name="hl.requireFieldMatch" id="hl_requireFieldMatch" value="true">
          hl.requireFieldMatch
        </label>

        <label for="hl_usePhraseHighlighter" class="checkbox">
          <input type="checkbox" ng-model="val['hl.usePhraseHighLighter']" name="hl.usePhraseHighlighter" id="hl_usePhraseHighlighter" value="true">
          hl.usePhraseHighlighter
        </label>

        <label for="hl_highlightMultiTerm" class="checkbox">
          <input type="checkbox" ng-model="val['hl.highlightMultiTerm']" name="hl.highlightMultiTerm" id="hl_highlightMultiTerm" value="true">
          hl.highlightMultiTerm
        </label>

        </div>
      </fieldset>

      <fieldset class="facet optional">
        <legend>
          <label for="facet" class="checkbox" title="Enable faceting.">
            <input type="checkbox" ng-model="val['facet']" name="facet" id="facet">
            facet
          </label>
        </legend>
        <div class="fieldset" ng-show="val['facet']">

          <label for="facet_query">facet.query</label>
          <textarea ng-model="val['facet.query']" name="facet.query" id="facet_query"></textarea>

          <label for="facet_field">facet.field</label>
          <input type="text" ng-model="val['facet.field']" name="facet.field" id="facet_field">

          <label for="facet_prefix">facet.prefix</label>
          <input type="text" ng-model="val['facet.prefix']" name="facet.prefix" id="facet_prefix">

          <label for="facet_contains">facet.contains</label>
          <input type="text" ng-model="val['facet.contains']" name="facet.contains" id="facet_contains">

          <label for="facet_contains_ignoreCase" class="checkbox">
            <input type="checkbox" ng-model="val['facet.contains.ignoreCase']" name="facet.contains.ignoreCase" id="facet_contains_ignoreCase">
            facet.contains.ignoreCase
          </label>

          <label for="facet_limit">facet.limit</label>
          <input type="text" ng-model="val['facet.limit']" name="facet.limit" id="facet_limit">

          <label for="facet_matches">facet.matches</label>
          <input type="text" ng-model="val['facet.matches']" name="facet.matches" id="facet_matches">

          <label for="facet_sort">facet.sort</label>
          <select ng-model="val['facet.sort']" id="facet_sort" name="facet.sort" title="Ordering of the facet field constraints">
            <option ng-selected="selected" value="">------</option>
            <option value="count">count</option>
            <option value="index">index</option>
          </select>

          <label for="facet_mincount">facet.mincount</label>
          <input type="text" ng-model="val['facet.mincount']" name="facet.mincount" id="facet_mincount">

          <label for="facet_missing" class="checkbox">
            <input type="checkbox" ng-model="val['facet.missing']" name="facet.missing" id="facet_missing">
            facet.missing
          </label>
        </div>
      </fieldset>

      <fieldset class="spatial optional">
        <legend>
          <label for="spatial" class="checkbox" title="Show spatial options">
            <input type="checkbox" ng-model="val['spatial']" name="spatial" id="spatial">
            spatial
          </label>
        </legend>
        <div class="fieldset" ng-show="val['spatial']">

        <label for="pt">pt</label>
        <input type="text" ng-model="val['spatial.pt']" name="pt" id="pt">

        <label for="sfield">sfield</label>
        <input type="text" ng-model="val['spatial.sfield']" name="sfield" id="sfield">

        <label for="d">d</label>
        <input type="text" ng-model="val['spatial.d']" name="d" id="d">

        </div>
      </fieldset>

      <fieldset class="spellcheck optional">
        <legend>
          <label for="spellcheck" class="checkbox" title="Enable spellchecking.">
            <input type="checkbox" ng-model="val['spellcheck']" name="spellcheck" id="spellcheck">
            spellcheck
          </label>
        </legend>
        <div class="fieldset" ng-show="val['spellcheck']">

        <label for="spellcheck_build" class="checkbox">
          <input type="checkbox" ng-model="val['spellcheck.build']" name="spellcheck.build" id="spellcheck_build" value="true">
          spellcheck.build
        </label>

        <label for="spellcheck_reload" class="checkbox">
          <input type="checkbox" ng-model="val['spellcheck.reload']" name="spellcheck.reload" id="spellcheck_reload" value="true">
          spellcheck.reload
        </label>

        <label for="spellcheck_q">spellcheck.q</label>
        <input type="text" ng-model="val['spellcheck.q']" name="spellcheck.q" id="spellcheck_q">

        <label for="spellcheck_dictionary">spellcheck.dictionary</label>
        <input type="text" ng-model="val['spellcheck.dictionary']" name="spellcheck.dictionary" id="spellcheck_dictionary">

        <label for="spellcheck_count">spellcheck.count</label>
        <input type="text" ng-model="val['spellcheck.count']" name="spellcheck.count" id="spellcheck_count">

        <label for="spellcheck_onlyMorePopular" class="checkbox">
          <input type="checkbox" ng-model="val['spellcheck.onlyMorePopular']" name="spellcheck.onlyMorePopular" id="spellcheck_onlyMorePopular" value="true">
          spellcheck.onlyMorePopular
        </label>

        <label for="spellcheck_extendedResults" class="checkbox">
          <input type="checkbox" ng-model="val['spellcheck.extendedResults']" name="spellcheck.extendedResults" id="spellcheck_extendedResults" value="true">
          spellcheck.extendedResults
        </label>

        <label for="spellcheck_collate" class="checkbox">
          <input type="checkbox" ng-model="val['spellcheck.collate']" name="spellcheck.collate" id="spellcheck_collate" value="true">
          spellcheck.collate
        </label>

        <label for="spellcheck_maxCollations">spellcheck.maxCollations</label>
        <input type="text" ng-model="val['spellcheck.maxCollations']" name="spellcheck.maxCollations" id="spellcheck_maxCollations">

        <label for="spellcheck_maxCollationTries">spellcheck.maxCollationTries</label>
        <input type="text" ng-model="val['spellcheck.maxCollationTries']" name="spellcheck.maxCollationTries" id="spellcheck_maxCollationTries">

        <label for="spellcheck_accuracy">spellcheck.accuracy</label>
        <input type="text" ng-model="val['spellcheck.accuracy']" name="spellcheck.accuracy" id="spellcheck_accuracy">
       </div>
      </fieldset>
      <fieldset class="additional optional">
        <label for="custom_parameters">
          <a rel="help">Raw Query Parameters</a>
        </label>
        <input type="text" ng-model="rawParams" id="custom_parameters" value="" placeholder="key1=val1&amp;key2=val2">
      </fieldset>

      <button type="submit" ng-click="doQuery()">Execute Query</button>
    </form>
  </div>

  <div id="result">
    <div ng-show="response.data" id="response">
      <a id="url" class="address-bar" ng-href="{{url}}">{{hostPortContext}}{{url}}</a>
      <pre class="syntax language-{{lang}}"><code ng-bind-html="response.data | highlight:lang | unsafe"></code></pre>
    </div>
  </div>
</div>
