<!--
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="analysis">

  <div class="block analysis-error" id="analysis-handler-missing" ng-show="isHandlerMissing">
    <div class="head">This Functionality requires the <code>/analysis/field</code> Handler to be registered and active!</div>
  </div>

  <div class="block analysis-error" id="analysis-error" ng-show="analysisError">
    <div class="body">{{analysisError}}</div>
  </div>

  <div id="analysis-holder">

    <div id="field-analysis">

      <form method="get">

        <ul class="clearfix">

          <li class="index">

            <label for="analysis_fieldvalue_index">Field Value (Index)</label>
            <textarea name="analysis.fieldvalue" id="analysis_fieldvalue_index" ng-model="indexText"></textarea>

          </li>

          <li class="query">

            <label for="analysis_fieldvalue_query">Field Value (Query)</label>
            <textarea name="analysis.query" id="analysis_fieldvalue_query" ng-model="queryText"></textarea>

          </li>

          <li class="settings-holder clearfix">
            <div class="settings clearfix">
              <label for="type_or_name">Analyse Fieldname / FieldType:</label>
              <select style="width:130px" chosen ng-change="changeFieldOrType()" id="type_or_name" ng-model="fieldOrType" ng-options="f.value as f.label group by f.group for f in fieldsAndTypes"></select>

              <a id="tor_schema" ng-href="#/{{core}}/schema?{{schemaBrowserUrl}}"><span>Schema Browser</span>&nbsp;</a>

              <div class="buttons clearfix">

                <button type="submit" ng-click="updateQueryString()"><span>Analyse Values</span></button>

                <div class="verbose_output" ng-class="{active:verbose}">
                  <a ng-click="toggleVerbose()">Verbose Output</a>
                </div>

              </div>

            </div>
          </li>

        </ul>

      </form>

    </div>

    <div id="analysis-result" class="clearfix verbose_output">
      <div ng-class="key" ng-repeat="(key, type) in result">
        <table border="0" cellspacing="0" cellpadding="0">
          <tbody ng-repeat="component in type">
            <tr class="step">
              <td class="part analyzer">
                <div>
                  <abbr title="{{component.name}}">{{component.short}}</abbr>
                </div>
              </td>

              <td class="part legend" ng-show="verbose">
                <div class="holder">
                  <table border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td>
                        <table border="0" cellspacing="0" cellpadding="0">
                          <tr ng-repeat="caption in component.captions" class="{{generate_class_name( short_key )}}">
                            <td>{{ caption }}</td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                  </table>
                </div>
              </td>
              <td class="part data" ng-class="{spacer:token.blank}" colspan="1" ng-repeat="token in component.tokens track by token.index">
                <div class="holder" ng-hide="token.blank">
                  <table border="0" cellspacing="0" cellpadding="0">
                    <tbody>
                      <tr class="details">
                        <td class="details">
                          <table border="0" cellspacing="0" cellpadding="0">
                            <tbody>
                              <tr class="{{value.name}}" ng-repeat="value in token.keys" ng-show="verbose || value.name=='text'">
                                <td>{{value.value}}</td>
                              </tr>
                            </tbody>
                          </table>
                        </td>
                      </tr>
                    </tbody>
                  </table>
                </div>
                <div class="holder" ng-show="token.blank">&nbsp;</div>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>

</div>
