123 lines
5.1 KiB
HTML
123 lines
5.1 KiB
HTML
|
|
{% extends "base.html" %}
|
||
|
|
{% block title %}Planning — GMAO Collège{% endblock %}
|
||
|
|
|
||
|
|
{% block content %}
|
||
|
|
<div class="container-fluid">
|
||
|
|
<div class="row mb-4">
|
||
|
|
<div class="col-12">
|
||
|
|
<div class="d-flex justify-content-between align-items-center">
|
||
|
|
<h1><i class="bi bi-calendar3 me-2"></i>Planning {{ year }}</h1>
|
||
|
|
<div>
|
||
|
|
<a href="{{ url_for('planning.index', year=year-1) }}" class="btn btn-outline-secondary">
|
||
|
|
<i class="bi bi-chevron-left"></i> {{ year-1 }}
|
||
|
|
</a>
|
||
|
|
<a href="{{ url_for('planning.index', year=year+1) }}" class="btn btn-outline-secondary">
|
||
|
|
{{ year+1 }} <i class="bi bi-chevron-right"></i>
|
||
|
|
</a>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Statistiques -->
|
||
|
|
<div class="row mb-4">
|
||
|
|
<div class="col-md-3">
|
||
|
|
<div class="card bg-primary text-white">
|
||
|
|
<div class="card-body text-center">
|
||
|
|
<h3>{{ stats.preventive_tasks }}</h3>
|
||
|
|
<small>Tâches préventives</small>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="col-md-3">
|
||
|
|
<div class="card bg-danger text-white">
|
||
|
|
<div class="card-body text-center">
|
||
|
|
<h3>{{ stats.curative_interventions }}</h3>
|
||
|
|
<small>Interventions curatives</small>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="col-md-3">
|
||
|
|
<div class="card bg-info text-white">
|
||
|
|
<div class="card-body text-center">
|
||
|
|
<h3>{{ stats.admin_tasks }}</h3>
|
||
|
|
<small>Tâches administratives</small>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="col-md-3">
|
||
|
|
<div class="card bg-success text-white">
|
||
|
|
<div class="card-body text-center">
|
||
|
|
<h3>{{ stats.pending_items }}</h3>
|
||
|
|
<small>Éléments planifiés</small>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Légende -->
|
||
|
|
<div class="card mb-4">
|
||
|
|
<div class="card-body py-2">
|
||
|
|
<div class="d-flex flex-wrap gap-3">
|
||
|
|
<span><span class="badge bg-secondary">Week-end</span></span>
|
||
|
|
<span><span class="badge bg-dark">Vacances</span></span>
|
||
|
|
<span><span class="badge bg-warning text-dark">Congé</span></span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Calendrier -->
|
||
|
|
{% set days = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'] %}
|
||
|
|
|
||
|
|
<div class="row">
|
||
|
|
{% for month in months %}
|
||
|
|
<div class="col-lg-4 col-md-6 mb-4">
|
||
|
|
<div class="card">
|
||
|
|
<div class="card-header text-center">
|
||
|
|
<strong>{{ month.name }}</strong>
|
||
|
|
</div>
|
||
|
|
<div class="card-body p-1">
|
||
|
|
<table class="table table-sm table-bordered mb-0" style="font-size: 0.8rem;">
|
||
|
|
<thead>
|
||
|
|
<tr>
|
||
|
|
{% for day in days %}
|
||
|
|
<th class="text-center" style="width: 14.28%;">{{ day }}</th>
|
||
|
|
{% endfor %}
|
||
|
|
</tr>
|
||
|
|
</thead>
|
||
|
|
<tbody>
|
||
|
|
{% for week in month.weeks %}
|
||
|
|
<tr>
|
||
|
|
{% for day_info in week %}
|
||
|
|
{% if day_info is none %}
|
||
|
|
<td class="bg-light"></td>
|
||
|
|
{% else %}
|
||
|
|
{% set td_class = '' %}
|
||
|
|
{% if day_info.is_vacation %}
|
||
|
|
{% set td_class = 'table-dark' %}
|
||
|
|
{% elif day_info.is_leave %}
|
||
|
|
{% set td_class = 'table-warning' %}
|
||
|
|
{% elif day_info.is_weekend %}
|
||
|
|
{% set td_class = 'table-secondary' %}
|
||
|
|
{% endif %}
|
||
|
|
<td class="{{ td_class }} text-center">
|
||
|
|
{% set date_str = day_info.date.strftime('%Y-%m-%d') %}
|
||
|
|
<a href="{{ url_for('planning.day', date_str=date_str) }}"
|
||
|
|
class="text-decoration-none {{ 'text-white' if td_class else '' }}"
|
||
|
|
title="{{ day_info.vacation_name if day_info.vacation_name else '' }}">
|
||
|
|
{{ day_info.day }}
|
||
|
|
</a>
|
||
|
|
</td>
|
||
|
|
{% endif %}
|
||
|
|
{% endfor %}
|
||
|
|
</tr>
|
||
|
|
{% endfor %}
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
{% endfor %}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
{% endblock %}
|