Spaces:
Sleeping
Sleeping
Italianize terminology: board → direttivo across all display labels
Browse filesLabels only — stored values (role='board', URL params, JS vars) unchanged
to preserve existing questionnaire data.
Changes:
- questionnaire_index.html: title, subtitle, ruolo option label
- club_hub.html: meta, invite section, completion gauge
- dashboard_hybrid.html: hero text, card headers
- questionnaire_schema.py: docstring
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
questionnaire_schema.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
"""
|
| 2 |
Schema questionari Rooting Future.
|
| 3 |
-
Struttura dati per i form digitali compilati dal
|
| 4 |
Ogni questionario corrisponde a un DOCX originale.
|
| 5 |
"""
|
| 6 |
|
|
|
|
| 1 |
"""
|
| 2 |
Schema questionari Rooting Future.
|
| 3 |
+
Struttura dati per i form digitali compilati dal Direttivo.
|
| 4 |
Ogni questionario corrisponde a un DOCX originale.
|
| 5 |
"""
|
| 6 |
|
templates/club_hub.html
CHANGED
|
@@ -224,7 +224,7 @@
|
|
| 224 |
{% if profile and profile.sede %}
|
| 225 |
<span class="club-meta-item">📍 {{ profile.sede }}</span>
|
| 226 |
{% endif %}
|
| 227 |
-
<span class="club-meta-item">👥 {{ member_count }} membro/i nel
|
| 228 |
<span class="club-meta-item">📝 {{ total_q_filled }}/{{ total_q_possible }} questionari completati</span>
|
| 229 |
</div>
|
| 230 |
</div>
|
|
@@ -241,7 +241,7 @@
|
|
| 241 |
<h3>🚀 Genera Piano Strategico</h3>
|
| 242 |
<p>
|
| 243 |
{% if total_q_filled == 0 %}
|
| 244 |
-
Nessun questionario completato. Invita i
|
| 245 |
{% elif total_q_filled < 3 %}
|
| 246 |
{{ total_q_filled }} questionari compilati — puoi già generare o raccogliere più risposte.
|
| 247 |
{% else %}
|
|
@@ -269,7 +269,7 @@
|
|
| 269 |
<div class="gauge">
|
| 270 |
{% set pct = (total_q_filled / total_q_possible * 100) | int if total_q_possible > 0 else 0 %}
|
| 271 |
<div class="gauge-label">
|
| 272 |
-
<span>Completamento
|
| 273 |
<span>{{ pct }}%</span>
|
| 274 |
</div>
|
| 275 |
<div class="gauge-bar"><div class="gauge-fill" style="width: {{ pct }}%"></div></div>
|
|
@@ -303,9 +303,9 @@
|
|
| 303 |
<div style="display: flex; flex-direction: column; gap: 1rem;">
|
| 304 |
<!-- Invite -->
|
| 305 |
<div class="section-card">
|
| 306 |
-
<h2>🔗 Link Invito
|
| 307 |
<p style="font-size: 0.85rem; color: var(--text-muted); margin-bottom: 0.75rem;">
|
| 308 |
-
Condividi con i
|
| 309 |
</p>
|
| 310 |
<div class="invite-box">
|
| 311 |
<div class="invite-label">Link questionari</div>
|
|
|
|
| 224 |
{% if profile and profile.sede %}
|
| 225 |
<span class="club-meta-item">📍 {{ profile.sede }}</span>
|
| 226 |
{% endif %}
|
| 227 |
+
<span class="club-meta-item">👥 {{ member_count }} membro/i nel direttivo</span>
|
| 228 |
<span class="club-meta-item">📝 {{ total_q_filled }}/{{ total_q_possible }} questionari completati</span>
|
| 229 |
</div>
|
| 230 |
</div>
|
|
|
|
| 241 |
<h3>🚀 Genera Piano Strategico</h3>
|
| 242 |
<p>
|
| 243 |
{% if total_q_filled == 0 %}
|
| 244 |
+
Nessun questionario completato. Invita i dirigenti del club.
|
| 245 |
{% elif total_q_filled < 3 %}
|
| 246 |
{{ total_q_filled }} questionari compilati — puoi già generare o raccogliere più risposte.
|
| 247 |
{% else %}
|
|
|
|
| 269 |
<div class="gauge">
|
| 270 |
{% set pct = (total_q_filled / total_q_possible * 100) | int if total_q_possible > 0 else 0 %}
|
| 271 |
<div class="gauge-label">
|
| 272 |
+
<span>Completamento direttivo</span>
|
| 273 |
<span>{{ pct }}%</span>
|
| 274 |
</div>
|
| 275 |
<div class="gauge-bar"><div class="gauge-fill" style="width: {{ pct }}%"></div></div>
|
|
|
|
| 303 |
<div style="display: flex; flex-direction: column; gap: 1rem;">
|
| 304 |
<!-- Invite -->
|
| 305 |
<div class="section-card">
|
| 306 |
+
<h2>🔗 Link Invito Direttivo</h2>
|
| 307 |
<p style="font-size: 0.85rem; color: var(--text-muted); margin-bottom: 0.75rem;">
|
| 308 |
+
Condividi con i dirigenti del club per raccogliere le loro risposte ai questionari.
|
| 309 |
</p>
|
| 310 |
<div class="invite-box">
|
| 311 |
<div class="invite-label">Link questionari</div>
|
templates/dashboard_hybrid.html
CHANGED
|
@@ -370,11 +370,11 @@
|
|
| 370 |
<div class="hero-top">
|
| 371 |
<div>
|
| 372 |
<h2>🏟️ Club Hub — Flusso Digitale</h2>
|
| 373 |
-
<p>Raccogli le risposte del
|
| 374 |
<div class="hero-badges">
|
| 375 |
<span class="badge badge-green">✓ Questionari digitali</span>
|
| 376 |
<span class="badge badge-blue">✓ Multi-agente AI</span>
|
| 377 |
-
<span class="badge badge-amber">{{ q_filled_count }}
|
| 378 |
</div>
|
| 379 |
</div>
|
| 380 |
<div class="hero-actions">
|
|
@@ -399,7 +399,7 @@
|
|
| 399 |
<div class="grid2">
|
| 400 |
<!-- Questionari overview -->
|
| 401 |
<div class="card">
|
| 402 |
-
<div class="card-h">📋 Questionari</div>
|
| 403 |
<div class="q-list">
|
| 404 |
{% set q_icons = [
|
| 405 |
('identita', '🏟️', 'Identità Club'),
|
|
@@ -417,7 +417,7 @@
|
|
| 417 |
{% endfor %}
|
| 418 |
</div>
|
| 419 |
<div style="margin-top:0.875rem;">
|
| 420 |
-
<div class="card-h" style="margin-bottom:0.5rem;">🔗 Link invito
|
| 421 |
<div class="invite-row">
|
| 422 |
<div class="invite-url" id="inviteUrl">{{ request.host_url }}questionnaires</div>
|
| 423 |
<button class="btn btn-ghost btn-sm" onclick="copyInvite()">📋</button>
|
|
|
|
| 370 |
<div class="hero-top">
|
| 371 |
<div>
|
| 372 |
<h2>🏟️ Club Hub — Flusso Digitale</h2>
|
| 373 |
+
<p>Raccogli le risposte del direttivo tramite questionari digitali, poi genera il piano strategico con un click.</p>
|
| 374 |
<div class="hero-badges">
|
| 375 |
<span class="badge badge-green">✓ Questionari digitali</span>
|
| 376 |
<span class="badge badge-blue">✓ Multi-agente AI</span>
|
| 377 |
+
<span class="badge badge-amber">{{ q_filled_count }} questionari compilati</span>
|
| 378 |
</div>
|
| 379 |
</div>
|
| 380 |
<div class="hero-actions">
|
|
|
|
| 399 |
<div class="grid2">
|
| 400 |
<!-- Questionari overview -->
|
| 401 |
<div class="card">
|
| 402 |
+
<div class="card-h">📋 Questionari Direttivo</div>
|
| 403 |
<div class="q-list">
|
| 404 |
{% set q_icons = [
|
| 405 |
('identita', '🏟️', 'Identità Club'),
|
|
|
|
| 417 |
{% endfor %}
|
| 418 |
</div>
|
| 419 |
<div style="margin-top:0.875rem;">
|
| 420 |
+
<div class="card-h" style="margin-bottom:0.5rem;">🔗 Link invito direttivo</div>
|
| 421 |
<div class="invite-row">
|
| 422 |
<div class="invite-url" id="inviteUrl">{{ request.host_url }}questionnaires</div>
|
| 423 |
<button class="btn btn-ghost btn-sm" onclick="copyInvite()">📋</button>
|
templates/questionnaire_index.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
-
<title>Questionari
|
| 7 |
<link rel="manifest" href="/static/manifest.json">
|
| 8 |
<meta name="theme-color" content="#1a365d">
|
| 9 |
<style>
|
|
@@ -83,7 +83,7 @@
|
|
| 83 |
<body>
|
| 84 |
<div class="header">
|
| 85 |
<h1>🌱 Rooting Future</h1>
|
| 86 |
-
<p>Questionari Strategici per il
|
| 87 |
<div style="margin-top: 10px; display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;">
|
| 88 |
<a href="{{ url_for('index') }}" style="color:rgba(255,255,255,0.7); font-size:0.8rem; text-decoration:none; padding:4px 12px; border:1px solid rgba(255,255,255,0.3); border-radius:16px;">Dashboard</a>
|
| 89 |
<a href="{{ url_for('club_profile') }}" style="color:rgba(255,255,255,0.7); font-size:0.8rem; text-decoration:none; padding:4px 12px; border:1px solid rgba(255,255,255,0.3); border-radius:16px;">🏟️ Profilo Club</a>
|
|
@@ -98,7 +98,7 @@
|
|
| 98 |
<div class="field">
|
| 99 |
<label>Ruolo</label>
|
| 100 |
<select id="memberRole">
|
| 101 |
-
<option value="board" {% if member_role == 'board' %}selected{% endif %}>
|
| 102 |
<option value="collaboratore" {% if member_role == 'collaboratore' %}selected{% endif %}>Collaboratore</option>
|
| 103 |
</select>
|
| 104 |
</div>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Questionari Direttivo - Rooting Future</title>
|
| 7 |
<link rel="manifest" href="/static/manifest.json">
|
| 8 |
<meta name="theme-color" content="#1a365d">
|
| 9 |
<style>
|
|
|
|
| 83 |
<body>
|
| 84 |
<div class="header">
|
| 85 |
<h1>🌱 Rooting Future</h1>
|
| 86 |
+
<p>Questionari Strategici per il Direttivo</p>
|
| 87 |
<div style="margin-top: 10px; display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;">
|
| 88 |
<a href="{{ url_for('index') }}" style="color:rgba(255,255,255,0.7); font-size:0.8rem; text-decoration:none; padding:4px 12px; border:1px solid rgba(255,255,255,0.3); border-radius:16px;">Dashboard</a>
|
| 89 |
<a href="{{ url_for('club_profile') }}" style="color:rgba(255,255,255,0.7); font-size:0.8rem; text-decoration:none; padding:4px 12px; border:1px solid rgba(255,255,255,0.3); border-radius:16px;">🏟️ Profilo Club</a>
|
|
|
|
| 98 |
<div class="field">
|
| 99 |
<label>Ruolo</label>
|
| 100 |
<select id="memberRole">
|
| 101 |
+
<option value="board" {% if member_role == 'board' %}selected{% endif %}>Direttivo</option>
|
| 102 |
<option value="collaboratore" {% if member_role == 'collaboratore' %}selected{% endif %}>Collaboratore</option>
|
| 103 |
</select>
|
| 104 |
</div>
|