changer le nombre de lignes et de colonnes
This commit is contained in:
parent
351e8387bb
commit
9546ac4d97
41
index.php
41
index.php
@ -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>
|
||||||
|
12
script.js
12
script.js
@ -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();
|
||||||
|
};
|
||||||
|
}
|
52
style.css
52
style.css
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user