home

Menu
  • ripgrep search

datasette/datasette/templates/query.html

{% extends "base.html" %}
 
{% block title %}{{ database }}{% if query and query.sql %}: {{ query.sql }}{% endif %}{% endblock %}
 
{% block extra_head %}
{{- super() -}}
{% if columns %}
<style>
@media only screen and (max-width: 576px) {
{% for column in columns %}
    .rows-and-columns td:nth-of-type({{ loop.index }}):before { content: "{{ column|escape_css_string }}"; }
{% endfor %}
}
</style>
{% endif %}
{% include "_codemirror.html" %}
{% endblock %}
 
{% block body_class %}query db-{{ database|to_css_class }}{% if canned_query %} query-{{ canned_query|to_css_class }}{% endif %}{% endblock %}
 
{% block crumbs %}
{{ crumbs.nav(request=request, database=database) }}
{% endblock %}
 
{% block content %}
 
{% if canned_query_write and db_is_immutable %}
    <p class="message-error">This query cannot be executed because the database is immutable.</p>
{% endif %}
 
<h1 style="padding-left: 10px; border-left: 10px solid #{{ database_color }}">{{ metadata.title or database }}{% if canned_query and not metadata.title %}: {{ canned_query }}{% endif %}{% if private %} 🔒{% endif %}</h1>
 
{% block description_source_license %}{% include "_description_source_license.html" %}{% endblock %}
 
<form class="sql" action="{{ urls.database(database) }}{% if canned_query %}/{{ canned_query }}{% endif %}" method="{% if canned_query_write %}post{% else %}get{% endif %}">
    <h3>Custom SQL query{% if display_rows %} returning {% if truncated %}more than {% endif %}{{ "{:,}".format(display_rows|length) }} row{% if display_rows|length == 1 %}{% else %}s{% endif %}{% endif %}{% if not query_error %}
        <span class="show-hide-sql">(<a href="{{ show_hide_link }}">{{ show_hide_text }}</a>)</span>
    {% endif %}</h3>
    {% if error %}
        <p class="message-error">{{ error }}</p>
    {% endif %}
    {% if not hide_sql %}
        {% if editable and allow_execute_sql %}
            <p><textarea id="sql-editor" name="sql"{% if query and query.sql %} style="height: {{ query.sql.split("\n")|length + 2 }}em"{% endif %}
            >{% if query and query.sql %}{{ query.sql }}{% else %}select * from {{ tables[0].name|escape_sqlite }}{% endif %}</textarea></p>
        {% else %}
            <pre id="sql-query">{% if query %}{{ query.sql }}{% endif %}</pre>
        {% endif %}
    {% else %}
        {% if not canned_query %}
            <input type="hidden" name="sql"
                value="{% if query and query.sql %}{{ query.sql }}{% else %}select * from {{ tables[0].name|escape_sqlite }}{% endif %}"
            >
        {% endif %}
    {% endif %}
    {% if named_parameter_values %}
        <h3>Query parameters</h3>
        {% for name, value in named_parameter_values.items() %}
            <p><label for="qp{{ loop.index }}">{{ name }}</label> <input type="text" id="qp{{ loop.index }}" name="{{ name }}" value="{{ value }}"></p>
        {% endfor %}
    {% endif %}
    <p>
        {% if not hide_sql %}<button id="sql-format" type="button" hidden>Format SQL</button>{% endif %}
        {% if canned_query_write %}<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">{% endif %}
        <input type="submit" value="Run SQL"{% if canned_query_write and db_is_immutable %} disabled{% endif %}>
        {{ show_hide_hidden }}
        {% if canned_query and edit_sql_url %}<a href="{{ edit_sql_url }}" class="canned-query-edit-sql">Edit SQL</a>{% endif %}
    </p>
</form>
 
{% if display_rows %}
<p class="export-links">This data as {% for name, url in renderers.items() %}<a href="{{ url }}">{{ name }}</a>{{ ", " if not loop.last }}{% endfor %}, <a href="{{ url_csv }}">CSV</a></p>
<div class="table-wrapper"><table class="rows-and-columns">
    <thead>
        <tr>
            {% for column in columns %}<th class="col-{{ column|to_css_class }}" scope="col">{{ column }}</th>{% endfor %}
        </tr>
    </thead>
    <tbody>
    {% for row in display_rows %}
        <tr>
            {% for column, td in zip(columns, row) %}
                <td class="col-{{ column|to_css_class }}">{{ td }}</td>
            {% endfor %}
        </tr>
    {% endfor %}
    </tbody>
</table></div>
{% else %}
    {% if not canned_query_write and not error %}
        <p class="zero-results">0 results</p>
    {% endif %}
{% endif %}
 
{% include "_codemirror_foot.html" %}
 
{% endblock %}
 
Powered by Datasette