// ==================== 辅助函数 ==================== function getSubColorClass(subText) { if (subText.includes('✅')) return 'row-sub-green'; if (subText.includes('❌')) return 'row-sub-red'; return ''; } function getGroupColorClass(groupType, isGo) { if (groupType === 'macro' || groupType === 'cooldown' || groupType === 'call') { return isGo ? 'row-group-green' : 'row-group-red'; } if (groupType === 'l1' || groupType === 'l2') { return isGo ? 'row-group-green' : ''; } if (groupType === 'prelim') { return isGo ? 'row-group-green' : ''; } return ''; } function createSpacer() { const spacer = document.createElement('tr'); spacer.className = 'board-spacer-row'; return spacer; } function formatValueHtml(html) { return html .replace(/禁止:<\/strong>/g, '禁止:') .replace(/必需:<\/strong>/g, '必需:') .replace(/当前:<\/strong>/g, '当前:'); } function addStageAndGroupRow(tbody, stageHtml, groupResultHtml, subText, valueHtml, groupRowSpan, stageRowSpan, groupType = '', isGroupGo = false) { const tr = document.createElement('tr'); if (groupType) tr.classList.add('board-row-group-' + groupType); const tdStage = document.createElement('td'); tdStage.innerHTML = stageHtml; tdStage.className = 'board-stage-cell'; if (groupType) tdStage.classList.add('group-' + groupType); tdStage.rowSpan = stageRowSpan; tr.appendChild(tdStage); const tdGroup = document.createElement('td'); tdGroup.innerHTML = groupResultHtml; tdGroup.className = 'board-group-cell'; if (groupType) tdGroup.classList.add('group-' + groupType); const groupColorClass = getGroupColorClass(groupType, isGroupGo); if (groupColorClass) tdGroup.classList.add(groupColorClass); tdGroup.rowSpan = groupRowSpan; tr.appendChild(tdGroup); const tdSub = document.createElement('td'); tdSub.textContent = subText; tdSub.className = 'board-sub-cell'; const tdVal = document.createElement('td'); tdVal.innerHTML = formatValueHtml(valueHtml); tdVal.className = 'board-value-cell'; applySubColorClass(tdSub, tdVal, subText, groupType); tr.appendChild(tdSub); tr.appendChild(tdVal); tbody.appendChild(tr); } function addRowOnlySubValue(tbody, subText, valueHtml, groupType = '') { const tr = document.createElement('tr'); if (groupType) tr.classList.add('board-row-group-' + groupType); const tdSub = document.createElement('td'); tdSub.textContent = subText; tdSub.className = 'board-sub-cell'; const tdVal = document.createElement('td'); let escapedHtml = valueHtml.replace(/<(?!\/?(strong|br)\b)/gi, '<'); tdVal.innerHTML = formatValueHtml(escapedHtml); tdVal.className = 'board-value-cell'; applySubColorClass(tdSub, tdVal, subText, groupType); tr.appendChild(tdSub); tr.appendChild(tdVal); tbody.appendChild(tr); } function addSingleRow(tbody, stageHtml, groupResult, subText, valueHtml, groupType = '', isGroupGo = false) { const tr = document.createElement('tr'); if (groupType) tr.classList.add('board-row-group-' + groupType); const tdStage = document.createElement('td'); tdStage.innerHTML = stageHtml; tdStage.className = 'board-stage-cell'; if (groupType) tdStage.classList.add('group-' + groupType); tr.appendChild(tdStage); const tdGroup = document.createElement('td'); tdGroup.textContent = groupResult; tdGroup.className = 'board-group-cell'; if (groupType) tdGroup.classList.add('group-' + groupType); const groupColorClass = getGroupColorClass(groupType, isGroupGo); if (groupColorClass) tdGroup.classList.add(groupColorClass); tr.appendChild(tdGroup); const tdSub = document.createElement('td'); tdSub.textContent = subText; tdSub.className = 'board-sub-cell'; const tdVal = document.createElement('td'); tdVal.innerHTML = formatValueHtml(valueHtml); tdVal.className = 'board-value-cell'; applySubColorClass(tdSub, tdVal, subText, groupType); tr.appendChild(tdSub); tr.appendChild(tdVal); tbody.appendChild(tr); } function applySubColorClass(tdSub, tdVal, subText, groupType) { const isPass = subText.includes('✅'); const isFail = subText.includes('❌'); // 初步筛选:只有通过时添加绿色,失败时不添加红色 if (groupType === 'prelim') { if (isPass) { tdSub.classList.add('row-sub-green'); tdVal.classList.add('row-sub-green'); } return; } // 其他阶段(macro, cooldown, call, l1, l2) if (isPass) { tdSub.classList.add('row-sub-green'); tdVal.classList.add('row-sub-green'); } else if (isFail) { tdSub.classList.add('row-sub-red'); tdVal.classList.add('row-sub-red'); } }