summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenise sur Lya <sekhmet@lya>2021-07-30 16:22:13 +0200
committerDenise sur Lya <sekhmet@lya>2021-07-30 16:22:13 +0200
commitf117ca68597265f74f1c87d96dc2538f7fca50e9 (patch)
tree063105714b8e753dadec792095f73c599aa985c5
parent0b5642d46400b878e4aedc6d809f7ff10b1f9a01 (diff)
downloadbingo-f117ca68597265f74f1c87d96dc2538f7fca50e9.tar.gz
bingo-f117ca68597265f74f1c87d96dc2538f7fca50e9.tar.zst
bingo-f117ca68597265f74f1c87d96dc2538f7fca50e9.zip
sauvegarde du jeu en cours + divers
-rw-r--r--app.py21
-rw-r--r--config.py5
-rw-r--r--data_textes.py24
-rw-r--r--static/outilspage.js55
-rw-r--r--templates/base.html1
-rw-r--r--templates/custom.html4
-rw-r--r--templates/index.html16
7 files changed, 85 insertions, 41 deletions
diff --git a/app.py b/app.py
index a434f9e..806280b 100644
--- a/app.py
+++ b/app.py
@@ -34,7 +34,7 @@ app = flask.Flask(__name__)
34@app.route('/', methods=["GET", "POST"]) 34@app.route('/', methods=["GET", "POST"])
35def index(): 35def index():
36 liste_err = e.initialise_erreurs() 36 liste_err = e.initialise_erreurs()
37 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo) 37 tablecomplete = data.lire_fichier_csv_simple(CONFIG["fichier_bingo"])
38 38
39 conf = DEFAUT.copy() 39 conf = DEFAUT.copy()
40 idg = flask.request.args.get("grille", "") # Id de grille passée en param (ou pas) 40 idg = flask.request.args.get("grille", "") # Id de grille passée en param (ou pas)
@@ -60,31 +60,36 @@ def index():
60 60
61 chainecode = g.encode_grille(conf, bingo, liste_err) 61 chainecode = g.encode_grille(conf, bingo, liste_err)
62 62
63 return flask.render_template("index.html", bingo=bingo, chainecode=chainecode, conf=conf, e=liste_err[0]+liste_err[1]+liste_err[2]) 63 # Récupérer la partie sauvegardée si il y a
64 sauvegarde = flask.request.args.get("sauv","")
65 return flask.render_template("index.html", bingo=bingo, chainecode=chainecode, conf=conf, sauv=sauvegarde, e=liste_err[0]+liste_err[1]+liste_err[2])
64 66
65 67
66@app.route('/custom') 68@app.route('/custom')
67def custom(): 69def custom():
68 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo)
69 categ, tableqr = data.extraire_textes_par_cat(tablecomplete)
70 liste_err = e.initialise_erreurs() 70 liste_err = e.initialise_erreurs()
71
72 tablecomplete = data.lire_fichier_csv_simple(CONFIG["fichier_bingo"])
73 categ, tableqr = data.extraire_textes_par_cat(tablecomplete)
74
71 nombre_categ = [len(elt) for elt in tableqr] 75 nombre_categ = [len(elt) for elt in tableqr]
76 nbdata = len(tablecomplete)
72 print(nombre_categ) 77 print(nombre_categ)
73 return flask.render_template("custom.html", DEFAUT=DEFAUT,CONFIG=CONFIG, nbdata=len(tablecomplete), categ=categ, nbparcat = nombre_categ, e=liste_err[0]+liste_err[1]+liste_err[2]) 78 return flask.render_template("custom.html", DEFAUT=DEFAUT,CONFIG=CONFIG, nbdata=nbdata, categ=categ, nbparcat = nombre_categ, e=liste_err[0]+liste_err[1]+liste_err[2])
74 79
75@app.route('/apropos') 80@app.route('/apropos')
76def apropos(): 81def apropos():
77 #liste_err = e.initialise_erreurs() 82 #liste_err = e.initialise_erreurs()
78 table_version = data.lire_fichier_csv_simple(data.fichier_changelog) 83 table_version = data.lire_fichier_csv_simple(CONFIG["fichier_changelog"])
79 84
80 85
81 return flask.render_template("apropos.html", version = table_version) 86 return flask.render_template("apropos.html", version = table_version)
82 87
83# Liste de toutes les 88# Liste de toutes les répliques
84@app.route('/liste') 89@app.route('/liste')
85def liste(): 90def liste():
86 #liste_err = e.initialise_erreurs() 91 #liste_err = e.initialise_erreurs()
87 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo) 92 tablecomplete = data.lire_fichier_csv_simple(CONFIG["fichier_bingo"])
88 categ, tableqr = data.extraire_textes_par_cat(tablecomplete) 93 categ, tableqr = data.extraire_textes_par_cat(tablecomplete)
89 94
90 return flask.render_template("liste.html", lcateg = categ, tableqr=tableqr) 95 return flask.render_template("liste.html", lcateg = categ, tableqr=tableqr)
diff --git a/config.py b/config.py
index e42e8ba..119b644 100644
--- a/config.py
+++ b/config.py
@@ -31,3 +31,8 @@ CONFIG["maxlignes"] = 20
31CONFIG["minlignes"] = 1 31CONFIG["minlignes"] = 1
32CONFIG["maxcolonnes"] = 20 32CONFIG["maxcolonnes"] = 20
33CONFIG["mincolonnes"] = 1 33CONFIG["mincolonnes"] = 1
34
35# chemins
36CONFIG["chemin_data"] = "data/"
37CONFIG["fichier_bingo"] = CONFIG["chemin_data"]+"bingo_data.txt"
38CONFIG["fichier_changelog"] = CONFIG["chemin_data"]+"changelog_data.txt"
diff --git a/data_textes.py b/data_textes.py
index a0728b8..4257b58 100644
--- a/data_textes.py
+++ b/data_textes.py
@@ -6,26 +6,11 @@ Created on Mon Jul 26 22:50:08 2021
6@author: sekhmet 6@author: sekhmet
7""" 7"""
8 8
9#liste_textes = [
10# "Tu vas pas l'allaiter jusqu'à [âge quelconque] !",
11# "Tu es sûre que tu as assez de lait ?",
12# "Quand est-ce que tu vas lui donner du lait normal ?",
13# "Il/elle fait ses nuits ?",
14# "Il/elle dort encore avec vous ?",
15# "Laisse le/la pleurer il/elle finira bien par dormir (et/ou ça lui fera les poumons).",
16# "Ton lait n'est pas/plus assez nourrissant.",
17# "Il/elle doit apprendre à se détacher de maman.",
18# "Tu as pris combien de kilos ?",
19# "Donne lui un biberon, il/elle fera ses nuits.",
20# "Tu arrêteras quand il/elle aura des dents, puisqu'il/elle va te mordre",
21#
22# ]
23
24import csv 9import csv
25 10
26chemin_data = "data/" 11#chemin_data = "data/"
27fichier_bingo = chemin_data+"bingo_data.txt" 12#fichier_bingo = chemin_data+"bingo_data.txt"
28fichier_changelog = chemin_data+"changelog_data.txt" 13#fichier_changelog = chemin_data+"changelog_data.txt"
29# Au format : catégorie, phrase, réponses. 14# Au format : catégorie, phrase, réponses.
30 15
31#fichier_FAQ = chemin_data+"FAQ_data.txt" 16#fichier_FAQ = chemin_data+"FAQ_data.txt"
@@ -88,6 +73,3 @@ def extraire_qr(table, listecateg):
88 table2.append(ligne[1:]) 73 table2.append(ligne[1:])
89 return table2 74 return table2
90 75
91
92
93#liste_cat, liste_textes = extraire_textes_par_cat(lire_fichier_csv_simple(fichier_bingo)) \ No newline at end of file
diff --git a/static/outilspage.js b/static/outilspage.js
index 15c043d..0fee4ba 100644
--- a/static/outilspage.js
+++ b/static/outilspage.js
@@ -11,6 +11,7 @@ function validecase(elem) {
11 elem.style.backgroundColor = couleur_valide ; 11 elem.style.backgroundColor = couleur_valide ;
12 detectelignes() ; 12 detectelignes() ;
13 } 13 }
14 sauvegarde_jeu() ;
14 15
15} 16}
16 17
@@ -26,6 +27,7 @@ function effacegrille() {
26 } 27 }
27 } 28 }
28 metscore(0) ; 29 metscore(0) ;
30 sauvegarde_jeu() ;
29} 31}
30 32
31// mettre à jour le score si on veut 33// mettre à jour le score si on veut
@@ -156,6 +158,8 @@ function detectelignes(elem) {
156 158
157 159
158/* Outils divers */ 160/* Outils divers */
161
162/* Ajouter un champ pour mettre une phrase perso */
159function ajouter_phrase_perso() { 163function ajouter_phrase_perso() {
160 var ul = document.getElementById("liste_phrases_add") ; 164 var ul = document.getElementById("liste_phrases_add") ;
161 var nb = ul.children.length ; 165 var nb = ul.children.length ;
@@ -165,6 +169,7 @@ function ajouter_phrase_perso() {
165 169
166} 170}
167 171
172/* Fait tourner l'affichage des phrases */
168function alterne_phrase_reponse(elem) { 173function alterne_phrase_reponse(elem) {
169 var liste = elem.children ; 174 var liste = elem.children ;
170 // qui est actif ? 175 // qui est actif ?
@@ -176,12 +181,6 @@ function alterne_phrase_reponse(elem) {
176 } 181 }
177 182
178 } 183 }
179 /*
180 if(elem.getElementsByClassName("phrase")[0].style.display == "none"){
181 affiche_phrase(elem)
182 } else {
183 affiche_reponse(elem)
184 }*/
185} 184}
186 185
187function affiche_reponse(elem) { 186function affiche_reponse(elem) {
@@ -198,6 +197,50 @@ function affiche_phrase(elem) {
198 for (var i=0; i<ltemp.length; i++) ltemp[i].style.display = "none" ; 197 for (var i=0; i<ltemp.length; i++) ltemp[i].style.display = "none" ;
199} 198}
200 199
200// Sauvegarde le jeu en cours sous forme de chaîne avec des 0 et des 1
201// puis met ça dans l'url d'id "permalien_infosjeu"
202function sauvegarde_jeu() {
203 var table=document.getElementById("grille") ;
204 var listelignes = table.getElementsByTagName("tr") ;
205 var chaine = "" ;
206 var i, j ;
207 for(i=0; i<listelignes.length; i++) {
208 for(j=0; j<listelignes[i].children.length; j++) {
209 //alert("bla") ;
210 if (listelignes[i].children[j].style.backgroundColor == couleur_valide) {
211 chaine=chaine + "1" ;
212 } else {
213 chaine = chaine + "0" ;
214 }
215 }
216
217 }
218
219 // Sauvegarder le permalien
220 var url = document.getElementById("permalien").href ;
221 //alert(url+"&sauv="+chaine) ;
222 document.getElementById("permalien_infosjeu").href = url+"&sauv="+chaine ;
223}
224
225/* L'inverse : prend la chaine avec les 0 et les 1 et modifie le tableau en conséquence.
226 * On recalcule le score dans la foulée */
227function charge_jeu(chaine) {
228 //alert(chaine) ;
229 var table=document.getElementById("grille") ;
230 var listelignes = table.getElementsByTagName("tr") ;
231 var i,j
232 var indice = 0 ; // savoir où on en est dans la chaine
233
234 for(i=0; i<listelignes.length; i++) {
235 for(j=0; j<listelignes[i].children.length; j++) {
236 //alert("bla") ;
237 if(chaine[indice] == "1") validecase(listelignes[i].children[j]) ;
238 indice = indice + 1 ;
239 }
240 }
241}
242
243
201/* Url à mettre : on ajoute ce qu'il y a là à l'URL actuelle */ 244/* Url à mettre : on ajoute ce qu'il y a là à l'URL actuelle */
202function met_url(aajouter) { 245function met_url(aajouter) {
203 let url = new URL(window.location.href) ; 246 let url = new URL(window.location.href) ;
diff --git a/templates/base.html b/templates/base.html
index ee9aa18..a3f57d1 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -11,7 +11,6 @@
11 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 11 <meta name="viewport" content="width=device-width, initial-scale=1.0">
12 12
13 </head> 13 </head>
14
15 <body> 14 <body>
16 15
17 {% block contenu %}{% endblock %} 16 {% block contenu %}{% endblock %}
diff --git a/templates/custom.html b/templates/custom.html
index caf7d6b..1ad1324 100644
--- a/templates/custom.html
+++ b/templates/custom.html
@@ -21,7 +21,7 @@
21 <li>Titre de la page : <input class="texte" type="text" name="titre" value="{{ DEFAUT.titre }}"></li> 21 <li>Titre de la page : <input class="texte" type="text" name="titre" value="{{ DEFAUT.titre }}"></li>
22 <li>Nombre de lignes : <input class="data" type="number" min="{{ CONFIG.minlignes }}" max="{{ CONFIG.maxlignes}}" name="nblignes" value="{{ DEFAUT.nblignes }}"></li> 22 <li>Nombre de lignes : <input class="data" type="number" min="{{ CONFIG.minlignes }}" max="{{ CONFIG.maxlignes}}" name="nblignes" value="{{ DEFAUT.nblignes }}"></li>
23 <li>Nombre de colonnes : <input class="data" type="number" min="{{ CONFIG.mincolonnes }}" max="{{ CONFIG.maxcolonnes }}" name="nbcolonnes" value="{{ DEFAUT.nbcolonnes }}"></li> 23 <li>Nombre de colonnes : <input class="data" type="number" min="{{ CONFIG.mincolonnes }}" max="{{ CONFIG.maxcolonnes }}" name="nbcolonnes" value="{{ DEFAUT.nbcolonnes }}"></li>
24 <li>Nombre de cases vides : <input class="data" type="number" min="0" name="nbcasesvides" value="{{ DEFAUT.nbcasesvides }}"> <span class="petit">Remarque : s'il n'y a pas assez de données, la grille sera automatiquement complétée par des cases vides. Il y a actuellement {{ nbdata }} entrées disponibles.</span></li> 24 <li>Nombre de cases vides : <input class="data" type="number" min="0" name="nbcasesvides" value="{{ DEFAUT.nbcasesvides }}"> <span class="petit">Remarque : s'il n'y a pas assez de données, la grille sera automatiquement complétée par des cases vides.</span></li>
25 25
26 <li>Proposer les réponses : <input type="checkbox" name="reponses_presentes" {% if DEFAUT.reponses_presentes %} checked{% endif %}></li> 26 <li>Proposer les réponses : <input type="checkbox" name="reponses_presentes" {% if DEFAUT.reponses_presentes %} checked{% endif %}></li>
27 27
@@ -30,7 +30,7 @@
30 </ul> 30 </ul>
31 </li> 31 </li>
32 32
33 <li>Choisir les catégories de remarques : 33 <li>Choisir les catégories de remarques ({{ nbdata }} au total):
34 <ul> 34 <ul>
35 {% for cat in categ %} 35 {% for cat in categ %}
36 <li>{{ cat }} <input type="checkbox" name="categorie_{{cat}}" checked> ({{ nbparcat[loop.index -1] }} phrase(s))</li> 36 <li>{{ cat }} <input type="checkbox" name="categorie_{{cat}}" checked> ({{ nbparcat[loop.index -1] }} phrase(s))</li>
diff --git a/templates/index.html b/templates/index.html
index 8dde34d..f97ec5f 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,5 +1,7 @@
1{% extends "base.html" %} 1{% extends "base.html" %}
2{% block contenu %} 2{% block contenu %}
3
4
3<script> 5<script>
4/* Calcul des scores */ 6/* Calcul des scores */
5var scoreCase = {{ conf.score.case }}; 7var scoreCase = {{ conf.score.case }};
@@ -9,6 +11,11 @@ var scoreDiagonale = {{ conf.score.diagonale }} ;
9 11
10/*URL */ 12/*URL */
11//met_url('?grille={{ chainecode }}') 13//met_url('?grille={{ chainecode }}')
14
15window.onload = function charger() {
16 charge_jeu("{{ sauv }}")
17}
18
12</script> 19</script>
13 20
14<h1>{{ conf.titre }}</h1> 21<h1>{{ conf.titre }}</h1>
@@ -26,9 +33,9 @@ var scoreDiagonale = {{ conf.score.diagonale }} ;
26 33
27<div id="contenu"> 34<div id="contenu">
28 35
29<p>Cochez la case dès que vous entendez une réplique idiote !</p> 36<p>Clique sur la case dès que tu entends une de ces répliques idiotes et essaie de faire le meilleur score !</p>
30{% if conf.reponses_presentes %} 37{% if conf.reponses_presentes %}
31<p>Un deuxième clic permet d'afficher (ou de masquer) une réponse épique !</p>{%endif %} 38<p>Un deuxième clic permet d'afficher (ou de masquer) une réponse épique (ou pas).</p>{%endif %}
32<table id="grille"> 39<table id="grille">
33{% for ligne in bingo %} 40{% for ligne in bingo %}
34<tr>{% for elt in ligne %} 41<tr>{% for elt in ligne %}
@@ -53,10 +60,13 @@ var scoreDiagonale = {{ conf.score.diagonale }} ;
53<p onclick="effacegrille()" class="cliquable">Effacer la grille</p> 60<p onclick="effacegrille()" class="cliquable">Effacer la grille</p>
54 61
55<hr> 62<hr>
56<a href="/?grille={{ chainecode }}">Lien permanent vers cette grille</a> 63<a href="/?grille={{ chainecode }}" id="permalien">Lien permanent (grille vide)</a> |
64<a href="/?grille={{ chainecode }}" id="permalien_infosjeu">Lien permanent (grille remplie)</a>
57 65
58 66
59</div> 67</div>
60 68
61 69
70
71
62{% endblock %} 72{% endblock %}