45 lines
2.1 KiB
HTML
45 lines
2.1 KiB
HTML
{# POST /api/catalog — crate::pages::analytics::ui::CatalogFragment #}
|
|
{% if tables.is_empty() %}
|
|
<p class="hint">{{ nav.tr("analytics-no-tables") }}</p>
|
|
{% else %}
|
|
<p class="schema-summary">{{ nav.tr_count("analytics-tables-available", "count", tables.len() as i64) }}</p>
|
|
<div class="catalog-tables">
|
|
{% for table in tables %}
|
|
<details class="catalog-table">
|
|
<summary>
|
|
<code>{{ table.name }}</code>
|
|
</summary>
|
|
<button type="button" class="starter-query" data-sql="{{ table.starter_query }}"
|
|
x-on:click="sql = $el.dataset.sql; $refs.sql.focus()">{{ nav.tr("analytics-use-starter") }}</button>
|
|
<ul class="columns">
|
|
{% for column in table.columns %}
|
|
<li>
|
|
<button type="button" class="column-name" data-insert="{{ column.insert_text }}"
|
|
x-on:click="$refs.sql.setRangeText($el.dataset.insert, $refs.sql.selectionStart, $refs.sql.selectionEnd, 'end'); sql = $refs.sql.value; $refs.sql.focus()">{{ column.name }}</button>
|
|
<span>{{ column.details }}</span>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% if !table.links.is_empty() %}
|
|
<div class="links">
|
|
<span>{{ nav.tr("analytics-links") }}</span>
|
|
<ul>
|
|
{% for link in table.links %}
|
|
<li><code>{{ link.source_column }}</code> → <code>{{ link.linked_table }}</code>{% if link.required %} ({{ nav.tr("analytics-required") }}){% endif %}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
{% endif %}
|
|
</details>
|
|
{% endfor %}
|
|
</div>
|
|
<details class="llm-context">
|
|
<summary>{{ nav.tr("analytics-llm-context") }}</summary>
|
|
<p class="hint">{{ nav.tr("analytics-llm-hint") }}</p>
|
|
<textarea x-ref="llmSchema" readonly>{{ llm_context }}</textarea>
|
|
<button type="button" class="secondary"
|
|
x-on:click="navigator.clipboard.writeText($refs.llmSchema.value); copied = true">{{ nav.tr("analytics-copy-context") }}</button>
|
|
<span class="hint" x-show="copied" x-cloak>{{ nav.tr("analytics-copied") }}</span>
|
|
</details>
|
|
{% endif %}
|