将星级筛选改回任意搜索而不是范围搜索

This commit is contained in:
枫谷剑仙 2023-02-22 19:53:14 +08:00
parent 45d066a4f5
commit 790ef63c0f
5 changed files with 41 additions and 79 deletions

View File

@ -862,16 +862,16 @@ var formation = new Formation(teamsCount,5);
</div>
<div class="rare-div"><!--稀有星级-->
<div class="rare-list">
<input type="radio" class="rare-radio" name="rare-low" value="1" checked/><div class="rare-icon" data-rare-icon="1"></div><input type="radio" class="rare-radio" name="rare-high" value="1" />
<input type="radio" class="rare-radio" name="rare-low" value="2" /><div class="rare-icon" data-rare-icon="2"></div><input type="radio" class="rare-radio" name="rare-high" value="2" />
<input type="radio" class="rare-radio" name="rare-low" value="3" /><div class="rare-icon" data-rare-icon="3"></div><input type="radio" class="rare-radio" name="rare-high" value="3" />
<input type="radio" class="rare-radio" name="rare-low" value="4" /><div class="rare-icon" data-rare-icon="4"></div><input type="radio" class="rare-radio" name="rare-high" value="4" />
<input type="radio" class="rare-radio" name="rare-low" value="5" /><div class="rare-icon" data-rare-icon="5"></div><input type="radio" class="rare-radio" name="rare-high" value="5" />
<input type="radio" class="rare-radio" name="rare-low" value="6" /><div class="rare-icon" data-rare-icon="6"></div><input type="radio" class="rare-radio" name="rare-high" value="6" />
<input type="radio" class="rare-radio" name="rare-low" value="7" /><div class="rare-icon" data-rare-icon="7"></div><input type="radio" class="rare-radio" name="rare-high" value="7" />
<input type="radio" class="rare-radio" name="rare-low" value="8" /><div class="rare-icon" data-rare-icon="8"></div><input type="radio" class="rare-radio" name="rare-high" value="8" />
<input type="radio" class="rare-radio" name="rare-low" value="9" /><div class="rare-icon" data-rare-icon="9"></div><input type="radio" class="rare-radio" name="rare-high" value="9" />
<input type="radio" class="rare-radio" name="rare-low" value="10" /><div class="rare-icon" data-rare-icon="10"></div><input type="radio" class="rare-radio" name="rare-high" value="10" checked/>
<input type="checkbox" class="rare-check" name="search-rare" value="1" id="search-rare-1" checked /><label class="rare-icon" data-rare-icon="1" for="search-rare-1"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="2" id="search-rare-2" checked /><label class="rare-icon" data-rare-icon="2" for="search-rare-2"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="3" id="search-rare-3" checked /><label class="rare-icon" data-rare-icon="3" for="search-rare-3"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="4" id="search-rare-4" checked /><label class="rare-icon" data-rare-icon="4" for="search-rare-4"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="5" id="search-rare-5" checked /><label class="rare-icon" data-rare-icon="5" for="search-rare-5"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="6" id="search-rare-6" checked /><label class="rare-icon" data-rare-icon="6" for="search-rare-6"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="7" id="search-rare-7" checked /><label class="rare-icon" data-rare-icon="7" for="search-rare-7"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="8" id="search-rare-8" checked /><label class="rare-icon" data-rare-icon="8" for="search-rare-8"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="9" id="search-rare-9" checked /><label class="rare-icon" data-rare-icon="9" for="search-rare-9"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="10" id="search-rare-10" checked /><label class="rare-icon" data-rare-icon="10" for="search-rare-10"></label>
</div>
<button class="rare-clear brown-button"></button>
</div>

View File

@ -679,7 +679,7 @@ function calculateAbility_max(id, solo, teamsCount, maxLevel = 110) {
}
}
//搜索卡片用
function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rares:[rareLow, rareHigh], awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent}) {
function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rares, awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent}) {
let cardsRange = cards.concat(); //这里需要复制一份原来的数组不然若无筛选后面的排序会改变初始Cards
if (canAssist) cardsRange = cardsRange.filter(card=>card.canAssist);
if (canLv110) cardsRange = cardsRange.filter(card=>card.limitBreakIncr>0);
@ -716,14 +716,13 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare
}
//类型
if (types.length > 0) {
cardsRange = cardsRange.filter(({types: cTypes}) =>
//所有type都满足或只需要满足一个type
types[typeAndOr ? 'every' : 'some'](t => cTypes.includes(t))
);
//所有type都满足或只需要满足一个type
let logicFunc = typeAndOr ? Array.prototype.every : Array.prototype.some;
cardsRange = cardsRange.filter(({types: cTypes}) => logicFunc.call(types, t => cTypes.includes(t)));
}
//稀有度
if (rareLow !== 1 || rareHigh !== 10) { //不是1~10时才进行筛选
cardsRange = cardsRange.filter(({rarity}) => rarity >= rareLow && rarity <= rareHigh);
if (rares.length < 10) { //不是1~10时才进行筛选
cardsRange = cardsRange.filter(({rarity}) => rares.includes(rarity));
}
//觉醒
let searchAwokens = [];

View File

@ -3539,45 +3539,12 @@ function initialize() {
//稀有度筛选
const s_rareDiv = searchBox.querySelector(".rare-div");
const s_rareLst = s_rareDiv.querySelector(".rare-list");
const s_rareIcons = Array.from(s_rareLst.querySelectorAll(".rare-icon"));
const s_rareLows = Array.from(s_rareLst.querySelectorAll("input[name='rare-low']"));
const s_rareHighs = Array.from(s_rareLst.querySelectorAll("input[name='rare-high']"));
function s_rareIcons_onclick()
{
const thisValue = parseInt(this.getAttribute("data-rare-icon"),10);
const radioLow = s_rareLows.find(radio=>radio.checked);
const radioHigh = s_rareHighs.find(radio=>radio.checked);
const rangeLow = radioLow ? parseInt(radioLow.value,10) : 1;
const rangeHigh = radioHigh ? parseInt(radioHigh.value,10) : 10;
s_rareLows.find(radio=>parseInt(radio.value,10) == (
rangeLow != rangeHigh ?
thisValue :
(
thisValue == rangeLow ?
1 :
Math.min(thisValue,rangeLow)
)
)).checked = true;
s_rareHighs.find(radio=>parseInt(radio.value,10) == (
rangeLow != rangeHigh ?
thisValue :
(
thisValue == rangeLow ?
10 :
Math.max(thisValue,rangeHigh)
)
)).checked = true;
}
s_rareIcons.forEach(icon=>icon.onclick = s_rareIcons_onclick);
const s_rareChecks = Array.from(s_rareLst.querySelectorAll("input[name='search-rare']"));
const s_rareClear = s_rareDiv.querySelector(".rare-clear");
s_rareClear.onclick = function(){
s_rareLows[0].checked = true;
s_rareHighs[s_rareHighs.length-1].checked = true;
s_rareChecks.forEach(i => i.checked = true);
}
//const s_rare = s_rareLi.map(li=>li.querySelector(".rare-check")); //checkbox集合
const s_awokensDiv = searchBox.querySelector(".awoken-div");
const s_awokensUl = s_awokensDiv.querySelector(":scope .all-awokens .awoken-ul");
const s_awokensLi = Array.from(s_awokensUl.querySelectorAll(".awoken-count"));
@ -3923,7 +3890,7 @@ function initialize() {
s_add_show_abilities_with_awoken.onchange = reShowSearch;
//恢复搜索状态
searchBox.recoverySearchStatus = function({attrs, fixMainColor, types, typeAndOr, rares:[rareLow, rareHigh], awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent, specialFilters}) {
searchBox.recoverySearchStatus = function({attrs, fixMainColor, types, typeAndOr, rares, awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent, specialFilters}) {
//属性这里是用的2进制写
attrs.forEach((attr, ai)=>{
const attr_list = s_attr_lists[ai];
@ -3934,8 +3901,7 @@ function initialize() {
s_fixMainColor.checked = fixMainColor;
s_types.filter(opt=>types.includes(parseInt(opt.value,10))).forEach(opt=>opt.checked = true);
s_typeAndOr.checked = typeAndOr;
(s_rareLows.find(opt=>parseInt(opt.value,10) == rareLow) || s_rareLows[0]).checked = true;
(s_rareHighs.find(opt=>parseInt(opt.value,10) == rareHigh) || s_rareHighs[s_rareHighs.length-1]).checked = true;
s_rareChecks.filter(opt=>rares.includes(parseInt(opt.value,10))).forEach(opt=>opt.checked = true);
s_selectedAwokensUl.innerHTML = "";
//添加觉醒
@ -3971,10 +3937,7 @@ function initialize() {
searchBox.getSearchOptions = function(){
const attrs = s_attr_lists.map(list=>parseInt(returnRadiosValue(list), 2) || 0);
const types = returnCheckBoxsValues(s_types).map(Str2Int);
const rares = [
parseInt(returnRadiosValue(s_rareLows), 10),
parseInt(returnRadiosValue(s_rareHighs), 10),
];
const rares = returnCheckBoxsValues(s_rareChecks).map(Str2Int);
const sawokens = returnCheckBoxsValues(s_sawokens).map(Str2Int);
const awokens = s_awokensIcons.filter(btn => parseInt(btn.getAttribute("data-awoken-count"), 10) > 0).map(btn => {
return {

View File

@ -697,16 +697,16 @@ var formation = new Formation(teamsCount,6);
</div>
<div class="rare-div"><!--稀有星级-->
<div class="rare-list">
<input type="radio" class="rare-radio" name="rare-low" value="1" checked/><div class="rare-icon" data-rare-icon="1"></div><input type="radio" class="rare-radio" name="rare-high" value="1" />
<input type="radio" class="rare-radio" name="rare-low" value="2" /><div class="rare-icon" data-rare-icon="2"></div><input type="radio" class="rare-radio" name="rare-high" value="2" />
<input type="radio" class="rare-radio" name="rare-low" value="3" /><div class="rare-icon" data-rare-icon="3"></div><input type="radio" class="rare-radio" name="rare-high" value="3" />
<input type="radio" class="rare-radio" name="rare-low" value="4" /><div class="rare-icon" data-rare-icon="4"></div><input type="radio" class="rare-radio" name="rare-high" value="4" />
<input type="radio" class="rare-radio" name="rare-low" value="5" /><div class="rare-icon" data-rare-icon="5"></div><input type="radio" class="rare-radio" name="rare-high" value="5" />
<input type="radio" class="rare-radio" name="rare-low" value="6" /><div class="rare-icon" data-rare-icon="6"></div><input type="radio" class="rare-radio" name="rare-high" value="6" />
<input type="radio" class="rare-radio" name="rare-low" value="7" /><div class="rare-icon" data-rare-icon="7"></div><input type="radio" class="rare-radio" name="rare-high" value="7" />
<input type="radio" class="rare-radio" name="rare-low" value="8" /><div class="rare-icon" data-rare-icon="8"></div><input type="radio" class="rare-radio" name="rare-high" value="8" />
<input type="radio" class="rare-radio" name="rare-low" value="9" /><div class="rare-icon" data-rare-icon="9"></div><input type="radio" class="rare-radio" name="rare-high" value="9" />
<input type="radio" class="rare-radio" name="rare-low" value="10" /><div class="rare-icon" data-rare-icon="10"></div><input type="radio" class="rare-radio" name="rare-high" value="10" checked/>
<input type="checkbox" class="rare-check" name="search-rare" value="1" id="search-rare-1" checked /><label class="rare-icon" data-rare-icon="1" for="search-rare-1"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="2" id="search-rare-2" checked /><label class="rare-icon" data-rare-icon="2" for="search-rare-2"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="3" id="search-rare-3" checked /><label class="rare-icon" data-rare-icon="3" for="search-rare-3"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="4" id="search-rare-4" checked /><label class="rare-icon" data-rare-icon="4" for="search-rare-4"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="5" id="search-rare-5" checked /><label class="rare-icon" data-rare-icon="5" for="search-rare-5"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="6" id="search-rare-6" checked /><label class="rare-icon" data-rare-icon="6" for="search-rare-6"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="7" id="search-rare-7" checked /><label class="rare-icon" data-rare-icon="7" for="search-rare-7"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="8" id="search-rare-8" checked /><label class="rare-icon" data-rare-icon="8" for="search-rare-8"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="9" id="search-rare-9" checked /><label class="rare-icon" data-rare-icon="9" for="search-rare-9"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="10" id="search-rare-10" checked /><label class="rare-icon" data-rare-icon="10" for="search-rare-10"></label>
</div>
<button class="rare-clear brown-button"></button>
</div>

View File

@ -1783,16 +1783,16 @@ var formation = new Formation(teamsCount,6);
</div>
<div class="rare-div"><!--稀有星级-->
<div class="rare-list">
<input type="radio" class="rare-radio" name="rare-low" value="1" checked/><div class="rare-icon" data-rare-icon="1"></div><input type="radio" class="rare-radio" name="rare-high" value="1" />
<input type="radio" class="rare-radio" name="rare-low" value="2" /><div class="rare-icon" data-rare-icon="2"></div><input type="radio" class="rare-radio" name="rare-high" value="2" />
<input type="radio" class="rare-radio" name="rare-low" value="3" /><div class="rare-icon" data-rare-icon="3"></div><input type="radio" class="rare-radio" name="rare-high" value="3" />
<input type="radio" class="rare-radio" name="rare-low" value="4" /><div class="rare-icon" data-rare-icon="4"></div><input type="radio" class="rare-radio" name="rare-high" value="4" />
<input type="radio" class="rare-radio" name="rare-low" value="5" /><div class="rare-icon" data-rare-icon="5"></div><input type="radio" class="rare-radio" name="rare-high" value="5" />
<input type="radio" class="rare-radio" name="rare-low" value="6" /><div class="rare-icon" data-rare-icon="6"></div><input type="radio" class="rare-radio" name="rare-high" value="6" />
<input type="radio" class="rare-radio" name="rare-low" value="7" /><div class="rare-icon" data-rare-icon="7"></div><input type="radio" class="rare-radio" name="rare-high" value="7" />
<input type="radio" class="rare-radio" name="rare-low" value="8" /><div class="rare-icon" data-rare-icon="8"></div><input type="radio" class="rare-radio" name="rare-high" value="8" />
<input type="radio" class="rare-radio" name="rare-low" value="9" /><div class="rare-icon" data-rare-icon="9"></div><input type="radio" class="rare-radio" name="rare-high" value="9" />
<input type="radio" class="rare-radio" name="rare-low" value="10" /><div class="rare-icon" data-rare-icon="10"></div><input type="radio" class="rare-radio" name="rare-high" value="10" checked/>
<input type="checkbox" class="rare-check" name="search-rare" value="1" id="search-rare-1" checked /><label class="rare-icon" data-rare-icon="1" for="search-rare-1"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="2" id="search-rare-2" checked /><label class="rare-icon" data-rare-icon="2" for="search-rare-2"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="3" id="search-rare-3" checked /><label class="rare-icon" data-rare-icon="3" for="search-rare-3"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="4" id="search-rare-4" checked /><label class="rare-icon" data-rare-icon="4" for="search-rare-4"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="5" id="search-rare-5" checked /><label class="rare-icon" data-rare-icon="5" for="search-rare-5"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="6" id="search-rare-6" checked /><label class="rare-icon" data-rare-icon="6" for="search-rare-6"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="7" id="search-rare-7" checked /><label class="rare-icon" data-rare-icon="7" for="search-rare-7"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="8" id="search-rare-8" checked /><label class="rare-icon" data-rare-icon="8" for="search-rare-8"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="9" id="search-rare-9" checked /><label class="rare-icon" data-rare-icon="9" for="search-rare-9"></label>
<input type="checkbox" class="rare-check" name="search-rare" value="10" id="search-rare-10" checked /><label class="rare-icon" data-rare-icon="10" for="search-rare-10"></label>
</div>
<button class="rare-clear brown-button"></button>
</div>