start project

This commit is contained in:
Hemmat
2026-08-07 21:17:17 +03:30
commit ea1e1eead6
121 changed files with 8108 additions and 0 deletions
@@ -0,0 +1,4 @@
<div class="border border-warn/30 dark:border-warn-dark/30 bg-warn/5 dark:bg-warn-dark/10 rounded-lg p-3 text-sm">
<span class="font-data">{{ log_file.filename }}</span>
<span class="text-muted dark:text-muted-dark">matches an already-uploaded file (status: {{ log_file.status }}); skipped re-upload.</span>
</div>
@@ -0,0 +1,3 @@
<div class="border border-danger/30 dark:border-danger-dark/30 bg-danger/5 dark:bg-danger-dark/10 rounded-lg p-3 text-sm text-danger dark:text-danger-dark">
{{ message }}
</div>
@@ -0,0 +1,10 @@
<div id="upload-status-{{ log_file.id }}"
hx-get="{{ url_for('uploads.upload_status', log_file_id=log_file.id) }}"
hx-trigger="every 1s" hx-swap="outerHTML"
class="border border-line dark:border-line-dark rounded-lg p-3 bg-paper dark:bg-paper-dark">
<div class="flex items-center gap-2 text-sm">
<svg class="w-4 h-4 text-muted dark:text-muted-dark animate-spin"><use href="/static/dist/icons.svg#loader-circle"/></svg>
<span class="font-data">{{ log_file.filename }}</span>
<span class="text-muted dark:text-muted-dark">— queued, starting shortly…</span>
</div>
</div>
@@ -0,0 +1,7 @@
<div id="upload-status-{{ log_file.id }}" class="border border-ok/30 dark:border-ok-dark/30 bg-ok/5 dark:bg-ok-dark/10 rounded-lg p-3">
<div class="flex items-center gap-2 text-sm">
<span class="w-2 h-2 rounded-full bg-ok dark:bg-ok-dark shrink-0"></span>
<span class="font-data">{{ log_file.filename }}</span>
<span class="text-ok dark:text-ok-dark">— done, {{ "{:,}".format(log_file.processed_lines) }} lines analyzed</span>
</div>
</div>
@@ -0,0 +1,7 @@
<div id="upload-status-{{ log_file.id }}" class="border border-danger/30 dark:border-danger-dark/30 bg-danger/5 dark:bg-danger-dark/10 rounded-lg p-3">
<div class="flex items-center gap-2 text-sm">
<span class="w-2 h-2 rounded-full bg-danger dark:bg-danger-dark shrink-0"></span>
<span class="font-data">{{ log_file.filename }}</span>
</div>
<p class="text-danger dark:text-danger-dark text-xs mt-1">{{ log_file.error_message }}</p>
</div>
@@ -0,0 +1,19 @@
{% set pct = ((log_file.processed_lines / log_file.total_lines) * 100) if log_file.total_lines else None %}
<div id="upload-status-{{ log_file.id }}"
hx-get="{{ url_for('uploads.upload_status', log_file_id=log_file.id) }}"
hx-trigger="every 1s" hx-swap="outerHTML"
class="border border-line dark:border-line-dark rounded-lg p-3 bg-paper dark:bg-paper-dark">
<div class="flex items-center justify-between text-sm mb-2">
<span class="font-data">{{ log_file.filename }}</span>
<span class="font-data text-muted dark:text-muted-dark">
{% if pct is not none %}{{ pct | round(0) | int }}%{% else %}analyzing…{% endif %}
</span>
</div>
<div class="w-full h-2 rounded-full bg-line dark:bg-line-dark overflow-hidden">
<div class="h-full rounded-full bg-accent dark:bg-accent-dark transition-all duration-500 ease-out"
style="width: {{ pct | round(1) if pct is not none else 8 }}%"></div>
</div>
<p class="text-xs text-muted dark:text-muted-dark mt-1.5 font-data">
{{ "{:,}".format(log_file.processed_lines) }}{% if log_file.total_lines %} / {{ "{:,}".format(log_file.total_lines) }}{% endif %} lines
</p>
</div>