| <!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 & 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> |