96 lines
3.2 KiB
Twig
96 lines
3.2 KiB
Twig
{% extends 'layouts/base.twig' %}
|
||
|
||
{% block title %}{{ title }} — Бизнес.Точка{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||
<h1 class="h3 mb-0">{{ title }}</h1>
|
||
<a href="{{ base_url('/tasks/new') }}" class="btn btn-primary">
|
||
<i class="fa-solid fa-plus me-2"></i>Создать задачу
|
||
</a>
|
||
</div>
|
||
|
||
{# Статистика #}
|
||
<div class="row g-3 mb-4">
|
||
<div class="col-md-3">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<h5 class="card-title text-muted mb-0">Всего</h5>
|
||
<h2 class="mb-0">{{ stats.total }}</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<h5 class="card-title text-muted mb-0">Выполнено</h5>
|
||
<h2 class="mb-0 text-success">{{ stats.completed }}</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<h5 class="card-title text-muted mb-0">В ожидании</h5>
|
||
<h2 class="mb-0 text-primary">{{ stats.pending }}</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<div class="card h-100 border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<h5 class="card-title text-muted mb-0">Просрочено</h5>
|
||
<h2 class="mb-0 text-danger">{{ stats.overdue }}</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{# Переключатель видов #}
|
||
<div class="btn-group mb-4" role="group">
|
||
<a href="{{ base_url('/tasks') }}" class="btn btn-outline-primary active">
|
||
<i class="fa-solid fa-list me-2"></i>Список
|
||
</a>
|
||
<a href="{{ base_url('/tasks/kanban') }}" class="btn btn-outline-primary">
|
||
<i class="fa-solid fa-table-columns me-2"></i>Канбан
|
||
</a>
|
||
<a href="{{ base_url('/tasks/calendar') }}" class="btn btn-outline-primary">
|
||
<i class="fa-solid fa-calendar me-2"></i>Календарь
|
||
</a>
|
||
</div>
|
||
|
||
{# Таблица задач #}
|
||
<div class="card border-0 shadow-sm">
|
||
<div class="card-body p-0">
|
||
{{ tableHtml|raw }}
|
||
{# CSRF токен для AJAX запросов #}
|
||
{{ csrf_field()|raw }}
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|
||
|
||
{% block scripts %}
|
||
<script src="{{ base_url('assets/js/modules/DataTable.js') }}"></script>
|
||
<script>
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
document.querySelectorAll('.data-table').forEach(function(container) {
|
||
const id = container.id;
|
||
const url = container.dataset.url;
|
||
const perPage = parseInt(container.dataset.perPage) || 10;
|
||
|
||
if (window.dataTables && window.dataTables[id]) {
|
||
return;
|
||
}
|
||
|
||
const table = new DataTable(id, {
|
||
url: url,
|
||
perPage: perPage
|
||
});
|
||
|
||
window.dataTables = window.dataTables || {};
|
||
window.dataTables[id] = table;
|
||
});
|
||
});
|
||
</script>
|
||
{% endblock %}
|