From 09bde833253fcc6e825055d187c3e37710569482 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 20:36:45 +0200 Subject: [PATCH] feat(suitbuilder): CD0/CD1/CD2 allowed-tier checkboxes (replace dead crit min/max) Co-Authored-By: Claude Opus 4.8 --- static/suitbuilder.css | 12 +++++++++++- static/suitbuilder.html | 8 ++++---- static/suitbuilder.js | 12 +++++++----- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/static/suitbuilder.css b/static/suitbuilder.css index ef6bb4d2..a3bef448 100644 --- a/static/suitbuilder.css +++ b/static/suitbuilder.css @@ -1529,4 +1529,14 @@ body { color: #95a5a6; font-size: 10px; margin-left: auto; -} \ No newline at end of file +} + +.cd-toggle { + display: inline-flex; + align-items: center; + gap: 4px; + margin-right: 10px; + font-weight: normal; + cursor: pointer; +} +.cd-toggle input { margin: 0; } \ No newline at end of file diff --git a/static/suitbuilder.html b/static/suitbuilder.html index 5ede36cc..9868ad4e 100644 --- a/static/suitbuilder.html +++ b/static/suitbuilder.html @@ -51,10 +51,10 @@
- - - - - + + + +
diff --git a/static/suitbuilder.js b/static/suitbuilder.js index f523134b..066ea81e 100644 --- a/static/suitbuilder.js +++ b/static/suitbuilder.js @@ -307,8 +307,11 @@ function gatherConstraints() { characters: selectedCharacters, min_armor: document.getElementById('minArmor').value || null, max_armor: document.getElementById('maxArmor').value || null, - min_crit_damage: document.getElementById('minCritDmg').value || null, - max_crit_damage: document.getElementById('maxCritDmg').value || null, + allowed_crit_damage: [ + document.getElementById('allowCD0').checked ? 0 : null, + document.getElementById('allowCD1').checked ? 1 : null, + document.getElementById('allowCD2').checked ? 2 : null, + ].filter(v => v !== null), min_damage_rating: document.getElementById('minDmgRating').value || null, max_damage_rating: document.getElementById('maxDmgRating').value || null, @@ -357,7 +360,7 @@ function validateConstraints(constraints) { if (!constraints.primary_set && !constraints.secondary_set && constraints.legendary_cantrips.length === 0 && constraints.protection_spells.length === 0 && - !constraints.min_armor && !constraints.min_crit_damage && !constraints.min_damage_rating) { + !constraints.min_armor && !constraints.min_damage_rating) { alert('Please specify at least one constraint (equipment sets, cantrips, legendary wards, or rating minimums).'); return false; } @@ -383,8 +386,7 @@ async function streamOptimalSuits(constraints) { include_inventory: constraints.include_inventory, min_armor: constraints.min_armor ? parseInt(constraints.min_armor) : null, max_armor: constraints.max_armor ? parseInt(constraints.max_armor) : null, - min_crit_damage: constraints.min_crit_damage ? parseInt(constraints.min_crit_damage) : null, - max_crit_damage: constraints.max_crit_damage ? parseInt(constraints.max_crit_damage) : null, + allowed_crit_damage: constraints.allowed_crit_damage, min_damage_rating: constraints.min_damage_rating ? parseInt(constraints.min_damage_rating) : null, max_damage_rating: constraints.max_damage_rating ? parseInt(constraints.max_damage_rating) : null, max_results: 10,