65 lines
4.5 KiB
HTML
65 lines
4.5 KiB
HTML
{% extends "base.html" %}
|
||
{% block title %}Запуски · MIEM Employees{% endblock %}
|
||
{% block content %}
|
||
<section class="panel">
|
||
<div class="progress-panel__header">
|
||
<h2 class="panel__title">Запуски парсинга</h2>
|
||
<form method="post" action="/admin/runs"><button class="button" type="submit">Запустить парсинг</button></form>
|
||
</div>
|
||
{% set run = runs[0] if runs else none %}
|
||
{% if run %}
|
||
{% set processed = run.parsed_count + run.skipped_count + run.error_count %}
|
||
{% set percent = ((processed / run.found_count) * 100) | round(1) if run.found_count else 0 %}
|
||
<div class="progress-panel" data-progress-panel>
|
||
<div class="progress-panel__meta">
|
||
<span data-progress-status>{{ run.status_display }}</span>
|
||
<span>обработано: <span data-progress-processed>{{ processed }}</span> / <span data-progress-found>{{ run.found_count }}</span></span>
|
||
<span>без изменений: <span data-progress-skipped>{{ run.skipped_count }}</span></span>
|
||
<span>ошибок: <span data-progress-errors>{{ run.error_count }}</span></span>
|
||
</div>
|
||
<div class="progress-bar" role="progressbar" aria-label="Прогресс парсинга" aria-valuemin="0" aria-valuemax="100" aria-valuenow="{{ percent }}" aria-valuetext="{{ percent }}%">
|
||
<div class="progress-bar__fill" data-progress-fill style="width: {{ percent }}%"></div>
|
||
</div>
|
||
<div class="progress-panel__percent"><span data-progress-percent>{{ percent }}</span>%</div>
|
||
<p class="progress-panel__error" data-progress-error role="status" hidden>Не удалось обновить прогресс. <button class="button button--ghost button--compact" type="button" data-progress-retry>Повторить</button></p>
|
||
</div>
|
||
{% else %}
|
||
<div class="progress-panel" data-progress-panel>
|
||
<div class="progress-panel__meta">
|
||
<span data-progress-status>Ожидание</span>
|
||
<span>обработано: <span data-progress-processed>0</span> / <span data-progress-found>0</span></span>
|
||
<span>без изменений: <span data-progress-skipped>0</span></span>
|
||
<span>ошибок: <span data-progress-errors>0</span></span>
|
||
</div>
|
||
<div class="progress-bar" role="progressbar" aria-label="Прогресс парсинга" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" aria-valuetext="0%">
|
||
<div class="progress-bar__fill" data-progress-fill style="width: 0%"></div>
|
||
</div>
|
||
<div class="progress-panel__percent"><span data-progress-percent>0</span>%</div>
|
||
<p class="progress-panel__error" data-progress-error role="status" hidden>Не удалось обновить прогресс. <button class="button button--ghost button--compact" type="button" data-progress-retry>Повторить</button></p>
|
||
</div>
|
||
{% endif %}
|
||
<table class="table">
|
||
<thead><tr><th class="table__head">ID</th><th class="table__head">Статус</th><th class="table__head">Найдено</th><th class="table__head">Обработано</th><th class="table__head">Без изменений</th><th class="table__head">Новые</th><th class="table__head">Ошибки</th><th class="table__head">Уволены</th><th class="table__head">Старт</th></tr></thead>
|
||
<tbody>
|
||
{% for run in runs %}
|
||
<tr class="table__row"><td class="table__cell"><a class="admin__link" href="/admin/runs/{{ run.id }}">{{ run.id }}</a></td><td class="table__cell">{{ run.status_display }}</td><td class="table__cell">{{ run.found_count }}</td><td class="table__cell">{{ run.parsed_count }}</td><td class="table__cell">{{ run.skipped_count }}</td><td class="table__cell">{{ run.new_count }}</td><td class="table__cell">{{ run.error_count }}</td><td class="table__cell">{{ run.dismissed_count }}</td><td class="table__cell">{{ run.started_display }}</td></tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
<section class="panel">
|
||
<h2 class="panel__title">Последние ошибки</h2>
|
||
<table class="table">
|
||
<thead><tr><th class="table__head">Запуск</th><th class="table__head">Профиль</th><th class="table__head">Ошибка</th></tr></thead>
|
||
<tbody>
|
||
{% for error in errors %}
|
||
<tr><td class="table__cell">{{ error.crawl_run_id }}</td><td class="table__cell">{{ error.profile_url }}</td><td class="table__cell">{{ error.error_type }}: {{ error.message }}</td></tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
{% endblock %}
|
||
{% block scripts %}
|
||
<script src="/static/admin.js"></script>
|
||
{% endblock %}
|