Initial commit: aplicatie de cantarire si etichetare
Aplicatie Flask + SQLite pentru productie alimentara: cantarirea componentelor unui produs finit si tiparirea etichetei prin QZ Tray. - produse finite (retete) formate din componente cantarite - designer vizual de etichete (mm/px, zona sigura, campuri variabile, cod QR cu continut din mai multe bucati) - legare produs finit -> sablon de eticheta - navigare pe doua taburi: Cantarire / Setari - administrare: componente, produse finite, sabloane, campuri, istoric - backup, resetare baza de date, checklist de pregatire, /healthz - CLI de administrare si serviciu systemd pentru productie - vendor/syncpulse-scale-bridge (GPL-3.0-or-later) pentru citirea cantarului
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<!doctype html>
|
||||
<html lang="ro">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}Cântărire și etichetare{% endblock %}</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/app.css') }}">
|
||||
{% block head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
{% set admin_blueprints = ['history', 'recipes', 'components', 'label_templates', 'fields',
|
||||
'monitor'] %}
|
||||
{% set in_settings = request.blueprint in admin_blueprints
|
||||
or request.endpoint == 'main.settings_page' %}
|
||||
<header class="topbar">
|
||||
<a class="brand" href="{{ url_for('main.dashboard') }}">
|
||||
<span class="brand-mark">CE</span>
|
||||
<span class="brand-text">Cântărire & Etichetare</span>
|
||||
</a>
|
||||
<nav class="nav">
|
||||
<a href="{{ url_for('main.dashboard') }}"
|
||||
class="{{ 'active' if request.endpoint == 'main.dashboard' }}">Cântărire</a>
|
||||
<a href="{{ url_for('main.settings_page') }}"
|
||||
class="{{ 'active' if in_settings }}">Setări</a>
|
||||
</nav>
|
||||
<button class="qz-pill" type="button" data-qz-pill data-qz-connect
|
||||
title="Starea conexiunii QZ Tray">
|
||||
<span class="qz-dot"></span>
|
||||
<span data-qz-status>QZ Tray: se verifică…</span>
|
||||
</button>
|
||||
</header>
|
||||
|
||||
{% if in_settings %}
|
||||
<nav class="subnav" aria-label="Secțiuni de administrare">
|
||||
<div class="subnav-inner">
|
||||
<a href="{{ url_for('main.settings_page') }}"
|
||||
class="{{ 'active' if request.endpoint == 'main.settings_page' }}">Generale</a>
|
||||
<a href="{{ url_for('components.index') }}"
|
||||
class="{{ 'active' if request.blueprint == 'components' }}">Componente</a>
|
||||
<a href="{{ url_for('recipes.index') }}"
|
||||
class="{{ 'active' if request.blueprint == 'recipes' }}">Produse finite</a>
|
||||
<a href="{{ url_for('label_templates.index') }}"
|
||||
class="{{ 'active' if request.blueprint == 'label_templates' }}">Șabloane</a>
|
||||
<a href="{{ url_for('fields.index') }}"
|
||||
class="{{ 'active' if request.blueprint == 'fields' }}">Câmpuri</a>
|
||||
<a href="{{ url_for('history.index') }}"
|
||||
class="{{ 'active' if request.blueprint == 'history' }}">Istoric</a>
|
||||
<a href="{{ url_for('monitor.index') }}"
|
||||
class="{{ 'active' if request.blueprint == 'monitor' }}">Monitor serial</a>
|
||||
</div>
|
||||
</nav>
|
||||
{% endif %}
|
||||
|
||||
<main class="container">
|
||||
{% with messages = get_flashed_messages(with_categories=true) %}
|
||||
{% if messages %}
|
||||
<div class="flash-stack">
|
||||
{% for category, message in messages %}
|
||||
<div class="flash flash-{{ category }}">{{ message }}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>Cântărire & Etichetare v{{ app_version }}</span>
|
||||
<span>Produse finite · SyncPulse Scale Bridge · QZ Tray</span>
|
||||
</footer>
|
||||
|
||||
{% block scripts %}{% endblock %}
|
||||
<script src="{{ url_for('static', filename='js/vendor/qz-tray.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/qz-print.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user