Okay, so changed my sheet to this <div>
<span style="margin-left: 20px;"><b>Skills: </b><span name="attr_npc_skills" style="font-style: italic;"></span>
<h3>- Skills -</h3>
<fieldset class="repeating_skills">
<input type="checkbox" class="skill-edit-btn">
<span class="skill-edit">
<input type="text" name="attr_skillname" class="skill-name" value="Skill Name"></input>
<select name="attr_skill_roll" class="skill-roll">
<option value="S/D">S/D</option>
<option value="S/F">S/F</option>
<option value="W">W</option>
</select>
<select name="attr_skill_level" class="skill-rank">
<option value="Trained">Trained</option>
<option value="Apprentice">Apprentice</option>
<option value="Journeyman">Journeyman</option>
<option value="Master">Master</option>
</select>
</span>
<span class="skill-display">
<span name="attr_skillname" class="sp-skill-name"></span>
<span name="attr_skill_roll" class="sp-skill-roll"></span>
<span name="attr_skill_level" class="sp-skill-rank"></span>
</span>
</fieldset>
</div>
Since it's what's going in my real sheet. This works: <script type="text/worker">
on('change:repeating_skills remove:repeating_skills', () => {
getSectionIDs('repeating_skills', (idarray) => {
getAttrs(idarray.map((id) => `repeating_skills_${id}_skillname`), (values) => {
setAttrs({
npc_skills: idarray.map((id) => values[`repeating_skills_${id}_skillname`]).join(', '),
});
});
});
});
// ... etc
</script>
And gives the name of each skill like this: Attack, Archery Of course, it's in the same order the skills were added to the sheet, not the order you dragged them to, but that's fine. This does NOT work: <script type="text/worker">
on('change:repeating_skills remove:repeating_skills', () => {
getSectionIDs('repeating_skills', (idarray) => {
getAttrs([idarray.map((id) => `repeating_skills_${id}_skillname`),
idarray.map((id) => `repeating_skills_${id}_skill_level`)], (values) => {
setAttrs({
npc_skills: idarray.map((id) => values[`repeating_skills_${id}_skillname`]).join(', '),
});
});
});
});
// ... etc
</script>
What am I doing wrong this time? Goal: if skill_level is Apprentice, Journeyman, Master, list skill as "name [A]" else just as "name" (can't grab both sets of values, so can't even start with logic yet. EDIT: The following works, but it requires nesting. I'll likely leave it be, but in case you're finding this on a searchL on('change:repeating_skills remove:repeating_skills', () => {
getSectionIDs('repeating_skills', (idarray) => {
getAttrs(idarray.map((id) => `repeating_skills_${id}_skillname`), (values) => {
getAttrs(idarray.map((id) => `repeating_skills_${id}_skill_level`), (levels) => {
var skills = '';
var level = '';
for(var i = 0; i < idarray.length; i++ ){
skills += idarray.map((id) => values[`repeating_skills_${id}_skillname`])[i];
level = idarray.map((id) => levels[`repeating_skills_${id}_skill_level`])[i];
lev = level.charAt(0);
// higher level
if (lev != 'T') {
skills += ' [' + lev + ']'
}
// need a comma...
if (i < idarray.length - 1) {
skills += ", ";
}
}
setAttrs({npc_skills: skills});
});
});
});
});