changer le nombre de lignes et de colonnes

This commit is contained in:
Adrien MALINGREY 2025-05-01 15:16:45 +02:00
parent 351e8387bb
commit 9546ac4d97
3 changed files with 72 additions and 33 deletions

View File

@ -15,23 +15,26 @@ if (!isset($_GET["grille"])) {
include_once "dico.php"; include_once "dico.php";
include_once "Grille.php"; include_once "Grille.php";
const HAUTEUR_DEFAUT = 7;
const HAUTEUR_PAR_DEFAUT = 6; const HAUTEUR_MIN = 2;
const LARGEUR_PAR_DEFAUT = 6; const HAUTEUR_MAX = 10;
const LARGEUR_DEFAUT = 7;
const LARGEUR_MIN = 2;
const LARGEUR_MAX = 10;
$hauteur = filter_input(INPUT_GET, 'l', FILTER_VALIDATE_INT, [ $hauteur = filter_input(INPUT_GET, 'lignes', FILTER_VALIDATE_INT, [
"options" => [ "options" => [
"default" => HAUTEUR_PAR_DEFAUT, "default" => HAUTEUR_DEFAUT,
"min_range" => 2, "min_range" => HAUTEUR_MIN,
"max_range" => 30 "max_range" => HAUTEUR_MAX
] ]
]); ]);
$largeur = filter_input(INPUT_GET, 'c', FILTER_VALIDATE_INT, [ $largeur = filter_input(INPUT_GET, 'colonnes', FILTER_VALIDATE_INT, [
"options" => [ "options" => [
"default" => LARGEUR_PAR_DEFAUT, "default" => LARGEUR_DEFAUT,
"min_range" => 2, "min_range" => LARGEUR_MIN,
"max_range" => 30 "max_range" => LARGEUR_MAX
] ]
]); ]);
@ -158,11 +161,17 @@ for ($x = 0; $x < $largeur; $x++) {
<h3 class="erreur">Erreur de génération de la grille</h3> <h3 class="erreur">Erreur de génération de la grille</h3>
<?php endif ?> <?php endif ?>
</div> </div>
<input type="hidden" id="lignes" <?php if (isset($_GET["lignes"])): ?>name="lignes" <?php endif ?>value="<?= $hauteur ?>" /> <div class="nouvelle-grille">
<input type="hidden" id="colonnes" <?php if (isset($_GET["colonnes"])): ?>name="colonnes" <?php endif ?>value="<?= $largeur ?>" /> <img src="favicon.ico">
<input type="hidden" id="solution_hashee" value="<?= $grille->hash() ?>" /> <button type="submit">
<button type="submit"><img src="favicon.ico">Nouvelle grille</button> Nouvelle grille de
<input type="number" id="lignes" name="lignes" value="<?= $hauteur ?>" min="<?=HAUTEUR_MIN?>" max="<?=HAUTEUR_MAX?>">
lignes et
<input type="number" id="colonnes" name="colonnes" value="<?= $largeur ?>" min="<?=LARGEUR_MIN?>" max="<?=LARGEUR_MAX?>">
colonnes
</button>
</div>
</form> </form>
<script src="script.js"></script> <script src="script.js"></script>

View File

@ -6,11 +6,11 @@ async function sha256(text) {
return hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
} }
const inputs = Array.from(grilleForm.querySelectorAll('input[type="text"]')); let inputs = grilleForm.querySelectorAll('.grille input')
let largeur = Number(colonnes.value); let largeur = Number(colonnes.value);
let nb_cases = inputs.length; let nb_cases = inputs.length;
let index = 0; let index = 0;
inputs.forEach((input) => { for (let input of inputs) {
input.index = index++; input.index = index++;
input.x = input.index % largeur; input.x = input.index % largeur;
input.y = Math.floor(input.index / largeur); input.y = Math.floor(input.index / largeur);
@ -76,4 +76,10 @@ inputs.forEach((input) => {
li.classList.remove("non-selectionee") li.classList.remove("non-selectionee")
} }
}; };
}); };
for (let input of grilleForm.querySelectorAll('.nouvelle-grille input')) {
input.onfocus = function (event) {
input.select();
};
}

View File

@ -63,6 +63,7 @@ h2 {
width: 2rem; width: 2rem;
height: 2rem; height: 2rem;
text-align: center; text-align: center;
vertical-align: middle;
} }
.grille td { .grille td {
@ -173,34 +174,57 @@ h2 {
text-align: center; text-align: center;
} }
button[type="submit"] { .nouvelle-grille {
width: fit-content; margin: 1em auto 0 auto;
margin: 0 auto; display: flex;
justify-content: center;
align-items: flex-end;
gap: 0.5em;
} }
button[type="submit"] { .nouvelle-grille button,
width: 100%; .nouvelle-grille input {
margin: 1em auto 0 auto;
border: none; border: none;
background: none; background: none;
color: inherit;
font-family: inherit; font-family: inherit;
font-size: 1em; font-size: 1em;
display: flex;
align-items: center;
gap: 0.5em;
justify-content: center;
} }
button[type="submit"]:hover { .nouvelle-grille button {
display: flex;
}
.nouvelle-grille button:hover {
cursor: pointer; cursor: pointer;
color: #2a6496; color: #2a6496;
}
.nouvelle-grille button:hover,
.nouvelle-grille button:hover input {
text-decoration: underline; text-decoration: underline;
} }
button[type="submit"]:active { .nouvelle-grille button:active {
color: darkorchid; color: darkorchid;
} }
.nouvelle-grille input {
-moz-appearance: textfield;
appearance: textfield;
margin: 0;
padding: 0;
text-align: center;
text-decoration: underline dotted;
width: 1em;
}
.nouvelle-grille input::-webkit-inner-spin-button,
.nouvelle-grille input::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
@media (max-width: 1024px) { @media (max-width: 1024px) {
h1.large.width { h1.large.width {
display: none; display: none;
@ -290,11 +314,11 @@ button[type="submit"]:active {
background-color: #edeeee; background-color: #edeeee;
} }
button[type="submit"]:hover { .nouvelle-grille button:hover {
color: #479fec; color: #479fec;
} }
button[type="submit"]:active { .nouvelle-grille button:active {
color: orchid; color: orchid;
} }
} }