diff options
author | Denise sur Lya <sekhmet@lya> | 2021-07-30 16:22:13 +0200 |
---|---|---|
committer | Denise sur Lya <sekhmet@lya> | 2021-07-30 16:22:13 +0200 |
commit | f117ca68597265f74f1c87d96dc2538f7fca50e9 (patch) | |
tree | 063105714b8e753dadec792095f73c599aa985c5 | |
parent | 0b5642d46400b878e4aedc6d809f7ff10b1f9a01 (diff) | |
download | bingo-f117ca68597265f74f1c87d96dc2538f7fca50e9.tar.gz bingo-f117ca68597265f74f1c87d96dc2538f7fca50e9.tar.zst bingo-f117ca68597265f74f1c87d96dc2538f7fca50e9.zip |
sauvegarde du jeu en cours + divers
-rw-r--r-- | app.py | 21 | ||||
-rw-r--r-- | config.py | 5 | ||||
-rw-r--r-- | data_textes.py | 24 | ||||
-rw-r--r-- | static/outilspage.js | 55 | ||||
-rw-r--r-- | templates/base.html | 1 | ||||
-rw-r--r-- | templates/custom.html | 4 | ||||
-rw-r--r-- | templates/index.html | 16 |
7 files changed, 85 insertions, 41 deletions
@@ -34,7 +34,7 @@ app = flask.Flask(__name__) | |||
34 | @app.route('/', methods=["GET", "POST"]) | 34 | @app.route('/', methods=["GET", "POST"]) |
35 | def index(): | 35 | def 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') |
67 | def custom(): | 69 | def 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') |
76 | def apropos(): | 81 | def 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') |
85 | def liste(): | 90 | def 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) |
@@ -31,3 +31,8 @@ CONFIG["maxlignes"] = 20 | |||
31 | CONFIG["minlignes"] = 1 | 31 | CONFIG["minlignes"] = 1 |
32 | CONFIG["maxcolonnes"] = 20 | 32 | CONFIG["maxcolonnes"] = 20 |
33 | CONFIG["mincolonnes"] = 1 | 33 | CONFIG["mincolonnes"] = 1 |
34 | |||
35 | # chemins | ||
36 | CONFIG["chemin_data"] = "data/" | ||
37 | CONFIG["fichier_bingo"] = CONFIG["chemin_data"]+"bingo_data.txt" | ||
38 | CONFIG["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 | |||
24 | import csv | 9 | import csv |
25 | 10 | ||
26 | chemin_data = "data/" | 11 | #chemin_data = "data/" |
27 | fichier_bingo = chemin_data+"bingo_data.txt" | 12 | #fichier_bingo = chemin_data+"bingo_data.txt" |
28 | fichier_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 */ | ||
159 | function ajouter_phrase_perso() { | 163 | function 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 */ | ||
168 | function alterne_phrase_reponse(elem) { | 173 | function 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 | ||
187 | function affiche_reponse(elem) { | 186 | function 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" | ||
202 | function 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 */ | ||
227 | function 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 */ |
202 | function met_url(aajouter) { | 245 | function 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 */ |
5 | var scoreCase = {{ conf.score.case }}; | 7 | var 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 | |||
15 | window.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 %} |