<!DOCTYPE html>
<!--

Licensed 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.

-->
<html lang="en">
  <head>
    <title>Browse Database</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <link rel="stylesheet" href="style/layout.css" type="text/css">
    <script src="script/json2.js"></script>
    <script src="script/sha1.js"></script>
    <script src="script/jquery.js"></script>
    <script src="script/jquery.couch.js"></script>
    <script src="script/jquery.dialog.js"></script>
    <script src="script/futon.js"></script>
    <script src="script/jquery.resizer.js"></script>
    <script src="script/jquery.suggest.js"></script>
    <script src="script/futon.browse.js"></script>
    <script src="script/futon.format.js"></script>
    <script>
      var page = new $.futon.CouchDatabasePage();
      $.futon.navigation.ready(function() {
        this.addDatabase(page.db.name);
        this.updateSelection(location.pathname, "?" + page.db.name);
      });

      $(function() {
        if (page.redirecting) return;
        $("h1 strong").text(page.db.name);
        var viewPath = page.viewName || "_all_docs";
        if (viewPath != "_temp_view" && viewPath != "_design_docs") {
          viewPath = $.map(viewPath.split("/"), function (part) {
            return encodeURIComponent(part);
          }).join("/");

          $("h1 a.raw").attr("href", "/" + encodeURIComponent(page.db.name) +
            "/" + viewPath);
        }

        $("#viewcode span").click(function() {
          $("#viewcode").toggleClass("collapsed");
        });
        $("#viewcode button.run").click(function() {
          page.updateDocumentListing();
        });
        $("#viewcode button.revert").click(function() {
          page.revertViewChanges();
        });
        $("#viewcode button.save").click(function() {
          page.saveViewChanges();
        });
        $("#viewcode button.saveas").click(function() {
          page.saveViewAs();
        });
        $("#viewcode textarea").makeResizable({
          always: true,
          grippie: $("#viewcode .bottom"),
          vertical: true
        });
        $("#viewcode td.map").makeResizable({
          always: true,
          grippie: $("#viewcode td.splitter"),
          horizontal: true
        });

        // Restore preferences/state
        $("#documents thead th.key").toggleClass("desc", !!$.futon.storage.get("desc"));
        var reduce = !!$.futon.storage.get("reduce");
        $("#reduce :checkbox")[0].checked = reduce;
        $("#grouplevel select").val(parseInt($.futon.storage.get("group_level")));
        $("#grouplevel").toggleClass("disabled", !reduce).find("select").each(function() {
          this.disabled = !reduce;
        });

        $("#perpage").val(parseInt($.futon.storage.get("per_page")));

        var staleViews = !!$.futon.storage.get("stale");
        $("#staleviews :checkbox")[0].checked = staleViews;

        page.populateViewsMenu();
        page.populateViewEditor();
        if (page.isTempView) {
          $("#viewcode").show().removeClass("collapsed").find("textarea")[0].focus();
          $("#documents").hide();
        }

        $("#switch select").change(function() {
          var viewName = $(this).val();
          if (!viewName) $.futon.storage.del("view");
          location.href = "?" + encodeURIComponent(page.db.name) +
            (viewName ? "/" + viewName  : "");
        });
        $("#staleviews :checkbox").click(function() {
          $.futon.storage.set("stale", this.checked);
        });
        $("#documents thead th.key span").click(function() {
          $(this).closest("th").toggleClass("desc");
          page.updateDocumentListing();
        });
        $("#grouplevel select").change(function() {
          page.updateDocumentListing();
          $.futon.storage.set("group_level", this.value);
        });
        $("#reduce :checkbox").click(function() {
          page.updateDocumentListing();
          var cb = this;
          $("#grouplevel").toggleClass("disabled", !cb.checked).find("select").each(function() {
            this.disabled = !cb.checked;
          });
          $.futon.storage.set("reduce", this.checked);
        });
        $("#perpage").change(function() {
          page.updateDocumentListing();
          $.futon.storage.set("per_page", this.value);
        });
        $("#toolbar button.add").click(page.newDocument);
        $("#toolbar button.compact").click(page.compactAndCleanup);
        $("#toolbar button.delete").click(page.deleteDatabase);
        $("#toolbar button.security").click(page.databaseSecurity);

        $('#jumpto input').suggest(function(text, callback) {
          page.db.allDocs({
            limit: 10, startkey: text, endkey: text + 'zzz',
            success: function(docs) {
              var matches = [];
              for (var i = 0; i < docs.rows.length; i++) {
                if (docs.rows[i].id.indexOf(text) == 0) {
                  matches[i] = docs.rows[i].id;
                }
              }
              callback(matches);
            }
          });
        }).keypress(function(e) {
          if (e.keyCode == 13) {
            page.jumpToDocument($(this).val());
          }
        });
      });
    </script>
  </head>

  <body><div id="wrap">
    <h1>
      <a href="index.html">Overview</a>
      <strong>?</strong>
      <a class="raw" title="Raw view"></a>
    </h1>
    <div id="content">
      <div id="staleviews">
        <label>Stale views
           <input name="staleviews" type="checkbox" />
        </label>
      </div>
      <div id="switch">
        <label>View: <select autocomplete="false">
          <option value="_all_docs">All documents</option>
          <option value="_design_docs">Design documents</option>
          <option value="_temp_view">Temporary view…</option>
        </select></label>
      </div>
      <div id="jumpto">
        <label>Jump to:
          <input type="text" name="docid" placeholder="Document ID" autocomplete="off" />
        </label>
      </div>
      <ul id="toolbar">
        <li><button class="add">New Document</button></li>
        <li><button class="security userAdmin serverAdmin">Security…</button></li>
        <li><button class="compact">Compact &amp; Cleanup…</button></li>
        <li><button class="delete serverAdmin">Delete Database…</button></li>
      </ul>

      <div id="viewcode" class="collapsed" style="display: none">
        <div class="top">
          <a id="designdoc-link"></a>
          <span id="view-toggle">View Code</span>
        </div>
        <table summary="View functions" cellspacing="0"><tr>
          <td class="code map">
            <label for="viewcode_map">Map Function:</label>
            <textarea id="viewcode_map" class="map" rows="5" cols="20" spellcheck="false" wrap="off"></textarea>
          </td>
          <td class="splitter"></td>
          <td class="code reduce">
            <label for="viewcode_reduce">Reduce Function (optional):</label>
            <textarea id="viewcode_reduce" class="reduce" rows="5" cols="20" spellcheck="false" wrap="off"></textarea>
          </td>
        </tr></table>
        <div class="bottom">
          <button class="save" type="button" disabled>Save</button>
          <button class="saveas" type="button">Save As…</button>
          <button class="revert" type="button" disabled>Revert</button>
          <button class="run" type="button">Run</button>
          <label>Language: <select id="language"></select></label>
        </div>
      </div>
      <p id="tempwarn">
        <strong>Warning</strong>: Please note that temporary views are not
        suitable for use in production, as they are really slow for any
        database with more than a few dozen documents. You can use a temporary
        view to experiment with view functions, but switch to a permanent view
        before using them in an application.
      </p>

      <table id="documents" class="listing" cellspacing="0">
        <caption>Documents</caption>
        <thead>
          <tr>
            <th class="key">
              <label id="grouplevel">
                Grouping: <select>
                  <option value="0">none</option>
                  <option value="1">level 1</option>
                  <option value="2">level 2</option>
                  <option value="3">level 3</option>
                  <option value="4">level 4</option>
                  <option value="5">level 5</option>
                  <option value="6">level 6</option>
                  <option value="7">level 7</option>
                  <option value="8">level 8</option>
                  <option value="9">level 9</option>
                  <option value="100" selected>exact</option>
                </select>
              </label>
              <span>Key</span>
            </th>
            <th class="value">
              <label id="reduce"><input type="checkbox" autocomplete="off" checked> Reduce</label>
              Value
            </th>
          </tr>
        </thead>
        <tbody class="content">
        </tbody>
        <tbody class="footer">
          <tr>
            <td colspan="4">
              <div id="paging">
                <a class="prev">← Previous Page</a> |
                <label>Rows per page: <select id="perpage">
                  <option selected>10</option>
                  <option>25</option>
                  <option>50</option>
                  <option>100</option>
                </select></label> |
                <a class="next">Next Page →</a>
              </div>
              <span></span>
            </td>
          </tr>
        </tbody>
      </table>
      <p id="viewrequestduration">
        View request duration: <span class="timestamp"></span>
      </p>
    </div>
  </div></body>
</html>
