style("text/css").
table {
border-collapse: collapse;
position: relative;
text-align: left;
width: 100%;
}
tr.gray th {
background: lightgray;
}
th, td {
padding: 2px;
}
th {
position: sticky;
top: 0;
}
table
tr(class="gray")
th Name
th Group
th NoProf
th Size
th Ammo
size
th Type
th Speed
th Reach
th Rof
th Range
th Strength
th Small
Medium
th Large
th Knockdown
th Category
th Book
th Printing
- let processedWeapons = new Set()
- let keys = Object.keys(data).sort()
each key in keys
- let weaponList = data[key]
if processedWeapons.has(weaponList)
- continue
- processedWeapons.add(weaponList)
- let nameColor = weaponList.every( (ele,i,arr) => ele.name === arr[0].name) ? "white" : "orange"
- let groupColor = weaponList.every( (ele,i,arr) => ele.group === arr[0].group) ? "white" : "orange"
- let noProfColor = weaponList.every( (ele,i,arr) => ele.noProf === arr[0].noProf) ? "white" : "orange"
- let sizeColor = weaponList.every( (ele,i,arr) => ele.size === arr[0].size) ? "white" : "orange"
- let ammoColor = weaponList.every( (ele,i,arr) => ele['ammo-size'] === arr[0]['ammo-size']) ? "white" : "orange"
- let typeColor = weaponList.every( (ele,i,arr) => ele.type === arr[0].type) ? "white" : "orange"
- let speedColor = weaponList.every( (ele,i,arr) => ele.speed === arr[0].speed) ? "white" : "orange"
- let rofColor = weaponList.every( (ele,i,arr) => ele.rof === arr[0].rof) ? "white" : "orange"
- let strengthColor = weaponList.every( (ele,i,arr) => ele.strength === arr[0].strength) ? "white" : "orange"
- let smallColor = weaponList.every( (ele,i,arr) => ele['small-medium'] === arr[0]['small-medium']) ? "white" : "orange"
- let largeColor = weaponList.every( (ele,i,arr) => ele.large === arr[0].large) ? "white" : "orange"
- let categoryColor = weaponList.every( (ele,i,arr) => ele.category.join() === arr[0].category.join() ) ? "white" : "orange"
each priority in booksPriority
- let weapon = weaponList.find(w => w.book.includes(priority.book))
if !weapon
- continue
- let rangeColor
if priority.book.startsWith('Player\'s Option:')
- rangeColor = weaponList.filter(w => w.book.some(b => b.startsWith('Player\'s Option:'))).every((ele,i,arr) => ele.range === arr[0].range) ? "white" : "orange"
else
- rangeColor = weaponList.filter(w => w.book.some(b => !b.startsWith('Player\'s Option:'))).every((ele,i,arr) => ele.range === arr[0].range) ? "white" : "orange"
tr
td(style=`background-color:${nameColor}`) #{weapon.name}
td(style=`background-color:${groupColor}`) #{weapon.group}
td(style=`background-color:${noProfColor}`) #{weapon.noProf}
td(style=`background-color:${sizeColor}`) #{weapon.size}
td(style=`background-color:${ammoColor}`) #{weapon['ammo-size']}
td(style=`background-color:${typeColor}`) #{weapon.type}
td(style=`background-color:${speedColor}`) #{weapon.speed}
td #{weapon.reach}
td(style=`background-color:${rofColor}`) #{weapon.rof}
td(style=`background-color:${rangeColor}`) #{weapon.range}
td(style=`background-color:${strengthColor}`) #{weapon.strength}
td(style=`background-color:${smallColor}`) #{weapon['small-medium']}
td(style=`background-color:${largeColor}`) #{weapon.large}
td #{weapon.knockdown}
td(style=`background-color:${categoryColor}`) #{weapon.category.join(', ')}
td #{priority.book === 'PHB' ? 'Player\'s Handbook' : priority.book}
td #{priority.print}
tr
td