Initial commit: InviteMe production redesign

This commit is contained in:
InviteMe Developer
2026-09-01 11:04:21 +03:00
commit 6060c22ff3
71 changed files with 6912 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
{% extends "base.html" %}
{% block title %}Проверка приглашения — InviteMe{% endblock %}
{% block content %}
<div class="checkin-container">
<header class="page-header"><div><div class="eyebrow">Операционный режим</div><h1 class="page-title">Контроль входа</h1><p class="page-subtitle">Сканируйте QR-код или быстро найдите гостя по имени.</p></div>{% if checkin_event %}<span class="badge bg-success">● {{ checkin_event.name }}</span>{% endif %}</header>
{% if active_events %}
<div class="row justify-content-center mb-4">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<h5 class="card-title">Выберите мероприятие</h5>
<form method="POST" action="{{ url_for('main.check_in', token=token) }}">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div class="mb-3">
<select id="event-select" name="event_id" class="form-select" data-auto-submit>
<option value="">-- Мероприятие --</option>
{% for event in active_events %}
<option value="{{ event.id }}" {% if checkin_event and checkin_event.id == event.id %}selected{% endif %}>
{{ event.name }}
</option>
{% endfor %}
</select>
</div>
<noscript><button type="submit" class="btn btn-primary">Выбрать</button></noscript>
</form>
</div>
</div>
</div>
</div>
{% endif %}
{% if checkin_event %}
<div class="alert alert-info">Работаем с мероприятием: <strong>{{ checkin_event.name }}</strong></div>
{% endif %}
<div class="checkin-grid">
<div>
<div class="card h-100">
<div class="card-body">
<div class="eyebrow">Камера</div><h2 class="h5 card-title">Сканировать QR-код</h2>
<div class="mb-3">
<label for="camera-select" class="form-label">Камера</label>
<select id="camera-select" class="form-select">
<option value="">-- Выберите камеру --</option>
</select>
</div>
<div id="qr-reader" class="qr-reader"></div>
<button id="start-scan" class="btn btn-primary w-100 mt-2">Включить камеру</button>
<button id="stop-scan" class="btn btn-secondary w-100 mt-2 d-none">Выключить камеру</button>
</div>
</div>
</div>
<div>
<div class="card h-100">
<div class="card-body">
<div class="eyebrow">Ручной поиск</div><h2 class="h5 card-title">Найти гостя по ФИО</h2>
<input type="text" id="search-input" class="form-control" placeholder="Введите фамилию..." autocomplete="off">
<div id="search-results" class="list-group mt-2"></div>
</div>
</div>
</div>
</div>
<div id="guest-card" class="card mt-4 d-none">
<div class="card-body text-center">
<img id="guest-photo" src="" alt="Фото гостя" class="guest-photo mb-3">
<h2 id="guest-name" class="card-title"></h2>
<p id="guest-department" class="lead"></p>
<p id="guest-position" class="text-muted"></p>
<p id="guest-email" class="text-muted"></p>
<p id="guest-event" class="text-info"></p>
<div id="check-in-status" class="alert d-none"></div>
<button id="check-in-btn" class="btn btn-success btn-lg w-100">Отметить вход</button>
<button id="undo-check-in-btn" class="btn btn-outline-warning w-100 mt-2 d-none">Отменить отметку входа</button>
<button id="reset-btn" class="btn btn-outline-secondary w-100 mt-2">Сбросить</button>
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="https://unpkg.com/html5-qrcode@2.3.8/html5-qrcode.min.js"
integrity="sha384-c9d8RFSL+u3exBOJ4Yp3HUJXS4znl9f+z66d1y54ig+ea249SpqR+w1wyvXz/lk+"
crossorigin="anonymous"></script>
<script src="{{ url_for('static', filename='js/checkin.js') }}"></script>
{% endblock %}