diff options
Diffstat (limited to 'google_appengine/google/appengine/ext/admin/templates/datastore.html')
-rw-r--r-- | google_appengine/google/appengine/ext/admin/templates/datastore.html | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/google_appengine/google/appengine/ext/admin/templates/datastore.html b/google_appengine/google/appengine/ext/admin/templates/datastore.html new file mode 100644 index 0000000..4ef5ef2 --- /dev/null +++ b/google_appengine/google/appengine/ext/admin/templates/datastore.html @@ -0,0 +1,183 @@ +{% extends "base.html" %} + +{% block title %}{{ application_name }} Development Console - Datastore Viewer{% endblock %} + +{% block head %} + <style type="text/css">{% include "css/datastore.css" %}</style> + <style type="text/css">{% include "css/pager.css" %}</style> + <script type="text/javascript"> + //<![CDATA[ + + {% if in_production %} + function manageCreateButton() { + var input = document.getElementById("kind_input"); + var button = document.getElementById("create_button"); + if (input && button) { + if (input.value.length == 0) { + button.disabled = true; + } else { + button.disabled = false; + } + } + } + {% endif %} + + {% if entities %} + function checkAllEntities() { + var allCheckBox = document.getElementById("allkeys"); + var check = allCheckBox.checked; + for (var i = 1; i <= {{ entities|length }}; i++) { + var box = document.getElementById("key" + i); + if (box) + box.checked = check; + } + updateDeleteButtonAndCheckbox(); + } + + function updateDeleteButtonAndCheckbox() { + var button = document.getElementById("delete_button"); + var uncheck = false; + var disable = true; + for (var i = 1; i <= {{ entities|length }}; i++) { + var box = document.getElementById("key" + i); + if (box) { + if (box.checked) { + disable = false; + } else { + uncheck = true; + } + } + } + button.disabled = disable; + if (uncheck) + document.getElementById("allkeys").checked = false; + } + {% endif %} + + //]]> + </script> +{% endblock %} + +{% block body %} + <h3>Datastore Viewer</h3> + + {% if in_production %} + <div id="hint"> + The <a href="http://appengine.google.com/datastore/explorer?&app_id={{ application_name }}">Admin Console Data Viewer</a> + allows you to run GQL queries and much more! + </div> + {% endif %} + + {% if message %} + <div id="message"> + {{ message }} + </div> + {% endif %} + + {% if entities %} + <div id="pagetotal"> + Results <span class="count">{{ start|add:1 }}</span> - <span class="count">{{ entities|length|add:start }}</span> of <span class="count">{{ total }}</span> + </div> + {% endif %} + + {% if kinds or in_production %} + <form action="{{ request.path }}" method="get"> + <div id="datastore_search"> + <span class="field"> + <span class="name">Entity Kind:</span> + <span class="value"> + {% if in_production %} + <input id="kind_input" name="kind" type="text" size="8" value="{{ kind|escape }}" onkeyup="manageCreateButton()" onkeydown="manageCreateButton()"/> + {% else %} + <select name="kind" id="kind_input"> + {% for a_kind in kinds %} + <option value="{{ a_kind|escape }}"{% ifequal a_kind kind %} selected="selected"{% endifequal %}>{{ a_kind|escape }}</option> + {% endfor %} + </select> + {% endif %} + </span> + </span> + <span class="buttons"> + <input type="submit" value="List Entities"/> + <input type="button" id="create_button" onclick="location.href='{{ datastore_edit_path }}?kind=' + encodeURIComponent(document.getElementById('kind_input').value) + '&next={{ request.uri|urlencode }}'" value="Create New Entity"/> + </span> + </div> + </form> + {% else %} + <div id="datastore_empty"> + The datastore is empty. You need to add data programatically before you can use this tool to view and edit it. + </div> + {% endif %} + + {% if entities %} + <form action="{{ datastore_batch_edit_path }}" method="post"> + <input type="hidden" name="kind" value="{{ kind|escape }}"/> + <input type="hidden" name="numkeys" value="{{ entities|length }}"/> + <input type="hidden" name="next" value="{{ start_base_url }}"/> + <input type="hidden" name="action" value="Delete"/> + <table class="entities"> + <thead> + <tr> + <th><input id="allkeys" type="checkbox" onclick="checkAllEntities();"/></th> + <th>Key</th> + <th>ID</th> + <th>Key Name</th> + {% for header in headers %} + <th style="cursor: pointer" onclick="document.location.href='{{ order_base_url }}&order={% ifequal order header.name %}-{% endifequal %}{{ header.name|urlencode }}&order_type={{ header.type|urlencode }}'"><a href="{{ order_base_url }}&order={% ifequal order header.name %}-{% endifequal %}{{ header.name|urlencode }}&order_type={{ header.type|urlencode }}" onclick="return false">{{ header.name }}</a></th> + {% endfor %} + </tr> + {% for entity in entities %} + <tr class="{% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}"> + <td><input id="key{{ forloop.counter }}" type="checkbox" name="key{{ forloop.counter }}" value="{{ entity.key|escape }}" onclick="updateDeleteButtonAndCheckbox();"/></td> + <td onclick="location.href='{{ entity.edit_uri|escape }}'"><a href="{{ entity.edit_uri|escape }}" title="Edit entity #{{ entity.key|escape }}" onclick="return false">{{ entity.shortened_key|escape }}</a></td> + <td> + {% if entity.key_id %} + {{entity.key_id}} + {% endif %} + </td> + <td> + {% if entity.key_name %} + {{entity.key_name}} + {% endif %} + </td> + {% for attribute in entity.attributes %} + <td onclick="location.href='{{ entity.edit_uri|escape }}&focus={{ attribute.name|urlencode }}'">{{ attribute.short_value|truncatewords:20|escape }}</td> + {% endfor %} + </tr> + {% endfor %} + </table> + <div class="entities g-section g-tpl-50-50"> + <div class="g-unit g-first"> + <div id="entities-control"><input id="delete_button" type="submit" value="Delete" onclick="return confirm('Are you sure you wish to delete these entities?')" /></div> + </div> + <div class="g-unit"> + <div id="entities-pager"> + {% if pages %} + {% include "pager.html" %} + {% endif %} + </div> + </div> + </div> + </form> + {% else %} + {% if kind %} + <p style="font-size: medium">Sorry, there are no entities of kind "{{ kind|escape }}" in your datastore.</p> + {% endif %} + {% endif %} +{% endblock %} + +{% block final %} + <script type="text/javascript"> + //<![CDATA[ + + {% if in_production %} + manageCreateButton(); + {% endif %} + updateDeleteButtonAndCheckbox(); + document.getElementById("kind_input").focus(); + + //]]> + </script> +{% endblock %} + + |