brouillon4
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| brouillon4 [2026/04/21 15:45] – nanaki | brouillon4 [2026/04/21 21:02] (Version actuelle) – nanaki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | < | + | |
| - | < | + | |
| - | < | + | < |
| - | <meta charset=" | + | |
| - | < | + | |
| < | < | ||
| body { font-family: | body { font-family: | ||
| - | h3 { text-align: center; } | ||
| - | |||
| - | .controls { display: | ||
| - | .table-container | + | .controls |
| - | table { width: 100%; border-collapse: collapse; } | + | # |
| - | th, td { padding: 6px; border: 1px solid #ccc; } | + | |
| - | th { background: #f2f2f2; cursor: | + | |
| - | tr:nth-child(even) { background: #fafafa; } | + | |
| - | /* Gameplay colors */ | + | table { width:100%; border-collapse: |
| - | .offensif | + | th, td { border:1px solid #ccc; padding: |
| - | .defensif | + | th { background:# |
| - | .utilitaire | + | tr: |
| - | .controle | + | |
| - | /* Race colors */ | + | .offensif |
| - | .race-Communs | + | .defensif |
| - | .race-Nain | + | .utilitaire |
| - | .race-Géant | + | .malediction |
| - | .race-Olympien | + | |
| - | .race-HS { color: | + | |
| - | .race-Elfe { color:green; } | + | |
| - | .lvl { padding:2px 6px; border-radius: | + | .lvl { padding:2px 6px; border-radius: |
| .lvl-1 { background:# | .lvl-1 { background:# | ||
| .lvl-2 { background:# | .lvl-2 { background:# | ||
| - | .lvl-3 { background:# | + | |
| - | .lvl-4 { background:# | + | |
| </ | </ | ||
| - | </ | ||
| - | < | ||
| - | <h3>Compétences</h3> | + | <div id=" |
| + | Points utilisés : <span id=" | ||
| + | </div> | ||
| <div class=" | <div class=" | ||
| + | |||
| <select id=" | <select id=" | ||
| - | <option value=" | + | <option value=" |
| <option value=" | <option value=" | ||
| - | <option value=" | ||
| - | <option value=" | ||
| - | <option value=" | ||
| - | <option value=" | ||
| - | <option value=" | ||
| </ | </ | ||
| <select id=" | <select id=" | ||
| <option value=" | <option value=" | ||
| - | <option value=" | + | <option value=" |
| - | <option value=" | + | |
| <option value=" | <option value=" | ||
| - | <option value=" | + | <option value=" |
| - | <option value=" | + | |
| </ | </ | ||
| - | <select id="levelFilter"> | + | <select id="effectFilter"> |
| - | <option value=" | + | <option value=" |
| - | <option value=" | + | <option value=" |
| - | <option value=" | + | <option value=" |
| - | <option value=" | + | <option value=" |
| - | <option value=" | + | |
| </ | </ | ||
| + | |||
| + | <input type=" | ||
| + | |||
| </ | </ | ||
| - | <div class=" | ||
| <table id=" | <table id=" | ||
| < | < | ||
| <tr> | <tr> | ||
| - | < | + | <th>Choix</ |
| - | < | + | <th>Race</ |
| - | < | + | <th>Nom</ |
| - | < | + | <th>Type</th> |
| < | < | ||
| - | <th>Cible / Portée</ | + | < |
| - | <th onclick=" | + | |
| </tr> | </tr> | ||
| </ | </ | ||
| + | |||
| < | < | ||
| - | <tr class=" | + | <!-- AUTO IMPORT SORTS --> |
| - | <td class=" | + | |
| - | <td>Arme improvisée</td> | + | <tr class=" |
| - | <td>Distance</td> | + | <td>< |
| - | <td>2 PM</td> | + | |
| - | <td>-4 toucher, -2 dégâts</td> | + | |
| - | <td>Ennemi / 2+</ | + | |
| - | < | + | |
| </tr> | </tr> | ||
| - | <tr class=" | + | <tr class=" |
| - | <td class=" | + | <td>< |
| - | <td>Attaque précise</td> | + | |
| - | <td>CAC</td> | + | |
| - | <td>2 PM</td> | + | |
| - | < | + | |
| - | <td>Ennemi / Contact</ | + | |
| - | < | + | |
| </tr> | </tr> | ||
| - | <tr class=" | + | <tr class=" |
| - | <td class=" | + | <td>< |
| - | <td>Exploration</td> | + | |
| - | <td>Furtivité</td> | + | |
| - | <td>Toutes actions</td> | + | |
| - | <td>+X perception</td> | + | |
| - | <td>Soi / -</ | + | |
| - | < | + | |
| </tr> | </tr> | ||
| - | <tr class=" | + | <tr class=" |
| - | <td class=" | + | <td>< |
| - | <td>Encaisser</td> | + | |
| - | <td>Survie</td> | + | |
| - | <td>6 PM</td> | + | |
| - | <td>Gain Encaisse</ | + | |
| - | < | + | |
| - | <td><span class=" | + | |
| </tr> | </tr> | ||
| - | <tr class=" | + | <tr class=" |
| - | <td class=" | + | < |
| - | <td>Arcane ajustée</ | + | </ |
| - | < | + | |
| - | <td>6 PM</ | + | <tr class=" |
| - | <td>Avantage au toucher</ | + | <td>< |
| - | <td>Ennemi | + | </ |
| - | < | + | |
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | <td><input type=" | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- NIVEAU 2 exemples --> | ||
| + | |||
| + | <tr class=" | ||
| + | <td><input type=" | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | <td><input type=" | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | <td><input type=" | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- NIVEAU 3 --> | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- NIVEAU 4 exemples --> | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <!-- NIVEAU 5 --> | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <tr class=" | ||
| + | < | ||
| </tr> | </tr> | ||
| </ | </ | ||
| </ | </ | ||
| - | </ | ||
| < | < | ||
| + | const maxPoints = 15; | ||
| + | |||
| const raceFilter = document.getElementById(" | const raceFilter = document.getElementById(" | ||
| const typeFilter = document.getElementById(" | const typeFilter = document.getElementById(" | ||
| - | const levelFilter | + | const effectFilter |
| + | const search = document.getElementById(" | ||
| const rows = document.querySelectorAll("# | const rows = document.querySelectorAll("# | ||
| + | const checkboxes = document.querySelectorAll(" | ||
| + | const pointsDisplay = document.getElementById(" | ||
| - | function | + | function |
| - | | + | |
| - | const race = raceFilter.value; | + | |
| - | const type = typeFilter.value; | + | |
| - | const level = levelFilter.value; | + | |
| - | const matchRace = race === " | + | checkboxes.forEach(cb => { |
| - | const matchType | + | |
| - | | + | |
| - | + | ||
| - | row.style.display = (matchRace && matchType && matchLevel) ? "" | + | |
| }); | }); | ||
| + | |||
| + | if(total > maxPoints){ | ||
| + | e.target.checked = false; | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | pointsDisplay.textContent = total; | ||
| + | |||
| + | if(total >= maxPoints){ | ||
| + | checkboxes.forEach(cb => { | ||
| + | if(!cb.checked) cb.disabled = true; | ||
| + | }); | ||
| + | } else { | ||
| + | checkboxes.forEach(cb => cb.disabled = false); | ||
| + | } | ||
| } | } | ||
| - | raceFilter.addEventListener(" | + | checkboxes.forEach(cb => cb.addEventListener(" |
| - | typeFilter.addEventListener(" | + | |
| - | levelFilter.addEventListener(" | + | |
| - | function | + | function |
| - | const table = document.getElementById(" | + | const term = search.value.toLowerCase(); |
| - | const tbody = table.tBodies[0]; | + | |
| - | const rowsArray = Array.from(tbody.rows); | + | |
| - | | + | |
| - | | + | |
| + | | ||
| + | const typeOk = typeFilter.value===" | ||
| + | const effectOk = effectFilter.value===" | ||
| + | const textOk = row.innerText.toLowerCase().includes(term); | ||
| + | |||
| + | row.style.display = (raceOk && typeOk && effectOk && textOk) ? "" | ||
| }); | }); | ||
| + | } | ||
| + | |||
| + | raceFilter.onchange = filter; | ||
| + | typeFilter.onchange = filter; | ||
| + | effectFilter.onchange = filter; | ||
| + | search.oninput = filter; | ||
| + | |||
| + | function sortTable(col){ | ||
| + | const tbody = document.querySelector("# | ||
| + | const rowsArr = Array.from(tbody.rows); | ||
| + | |||
| + | rowsArr.sort((a, | ||
| - | | + | |
| } | } | ||
| </ | </ | ||
| - | </ | ||
| </ | </ | ||
brouillon4.1776779122.txt.gz · Dernière modification : 2026/04/21 15:45 de nanaki
