add dr, dh flags
This commit is contained in:
@@ -15,9 +15,11 @@ const statusCodeIcons = {
|
||||
}
|
||||
|
||||
exports.helpers = {
|
||||
flagsString: (flags) => flags?.join(","),
|
||||
flagsString: (flags) => {
|
||||
return flags != null ? Array.from(flags).join(",") : ''
|
||||
},
|
||||
plus1: (i) => Number(i)+1,
|
||||
positions: () => ["P", "C", "1B", "2B", "3B", "SS", "LF", "CF", "RF", "EH", "DH"],
|
||||
positions: () => ["P", "C", "1B", "2B", "3B", "SS", "LF", "CF", "RF", "EH", "DH", "DR"],
|
||||
defense_positions: () => ["C", "1B", "2B", "3B", "SS", "LF", "CF", "RF", "P"],
|
||||
avail_status_code_icon: (status_code) => {
|
||||
const icon_classes = {
|
||||
@@ -39,7 +41,21 @@ exports.helpers = {
|
||||
return `<button class="Button Button--smallSquare ${button_classes[status_code]}" type="button"><span class="">${statusCodeIcons[status_code]}</span></button>`
|
||||
},
|
||||
positionLabelWithoutFlags: (label) => {
|
||||
return label.replace(/(.*?)\s\[(.*?)\]/, "$1");
|
||||
const {positionLabelWithoutFlags} = parsePositionLabel(label);
|
||||
return positionLabelWithoutFlags
|
||||
},
|
||||
positionLabelWithoutPOFlag: (label) => {
|
||||
const {positionLabelWithoutFlags, positionFlags} = parsePositionLabel(label);
|
||||
positionFlags.delete('PO')
|
||||
return compilePositionLabel(positionLabelWithoutFlags, positionFlags)
|
||||
},
|
||||
positionFlags: (label)=> {
|
||||
const {positionFlags} = parsePositionLabel(label);
|
||||
return `[${Array.from(positionFlags).join(",")}]`
|
||||
},
|
||||
hasPositionFlags: (label) => {
|
||||
const {positionLabelWithoutFlags, positionFlags} = parsePositionLabel(label);
|
||||
return positionFlags.size > 0;
|
||||
},
|
||||
comparePositionWithFlags: (labelWithoutFlags, eventLineupEntry, options) => {
|
||||
labelWithFlags = eventLineupEntry?.label
|
||||
@@ -52,12 +68,12 @@ exports.helpers = {
|
||||
isInStartingLineup: (member) => {
|
||||
if (member.benchcoach.eventLineupEntry == null || member.benchcoach.eventLineupEntry.label == '') return false;
|
||||
const {positionFlags} = parsePositionLabel(member.benchcoach.eventLineupEntry?.label);
|
||||
return (positionFlags != "PO")
|
||||
return (!positionFlags.has("PO"))
|
||||
},
|
||||
isInPositionOnly: (member) => {
|
||||
if (!member.benchcoach || member.benchcoach.eventLineupEntry == null) return false;
|
||||
const {positionFlags} = parsePositionLabel(member.benchcoach.eventLineupEntry?.label);
|
||||
return (member.benchcoach.eventLineupEntry != null && positionFlags == "PO")
|
||||
return (member.benchcoach.eventLineupEntry != null && positionFlags.has("PO"))
|
||||
},
|
||||
isInBench: (member) => {
|
||||
if ((member.benchcoach.eventLineupEntry != null && member.benchcoach.eventLineupEntry.label != '') || member.isNonPlayer) return false;
|
||||
@@ -143,29 +159,39 @@ exports.postEventLineup = async (req,res) => {
|
||||
if (body.memberId == null) {res.status(400).end();return}
|
||||
await Promise.all(req.promises);
|
||||
const eventLineupEntries = req.event_lineup.eventLineupEntries
|
||||
const {newEventLineupEntries} = processPostedEventLineupEntries(body, eventLineupEntries, req.event_lineup)
|
||||
const {newEventLineupEntries, deleteEventLineupEntries} = processPostedEventLineupEntries(body, eventLineupEntries, req.event_lineup)
|
||||
newEventLineupEntries.forEach(e=>{
|
||||
teamsnap.saveEventLineupEntry(e)
|
||||
})
|
||||
deleteEventLineupEntries.forEach(e=>{
|
||||
teamsnap.deleteEventLineupEntry(e)
|
||||
})
|
||||
|
||||
eventLineup = await teamsnap.loadEventLineups(req.params.event_id)
|
||||
res.status(201).end()
|
||||
}
|
||||
|
||||
const processPostedEventLineupEntries = (body, eventLineupEntries, eventLineup) => {
|
||||
const newEventLineupEntries = []
|
||||
const deleteEventLineupEntries = []
|
||||
|
||||
body.memberId.forEach((memberId, i)=>{
|
||||
const lineupEntryId = body.eventLineupEntryId[i]
|
||||
const lineupEntryLabel = body.label[i]
|
||||
const lineupEntrySequence = body.sequence[i]
|
||||
const lineupEntryFlags = body.flags[i]
|
||||
if (lineupEntryId != '') {
|
||||
if (lineupEntryId != '' && lineupEntryLabel != '') {
|
||||
// Update lineup entry
|
||||
const eventLineupEntry = eventLineupEntries.find((e)=>e.id==Number(lineupEntryId))
|
||||
eventLineupEntry.sequence = lineupEntrySequence
|
||||
eventLineupEntry.label = compilePositionLabel(lineupEntryLabel, lineupEntryFlags)
|
||||
newEventLineupEntries.push(eventLineupEntry)
|
||||
}
|
||||
else if (lineupEntryId != '') {
|
||||
// Delete lineup entry
|
||||
const eventLineupEntry = eventLineupEntries.find((e)=>e.id==Number(lineupEntryId))
|
||||
deleteEventLineupEntries.push(eventLineupEntry)
|
||||
}
|
||||
else if (lineupEntryLabel != '') {
|
||||
// Create lineup entry
|
||||
const eventLineupEntry = teamsnap.createEventLineupEntry()
|
||||
@@ -179,5 +205,5 @@ const processPostedEventLineupEntries = (body, eventLineupEntries, eventLineup)
|
||||
// Skip lineup entry
|
||||
}
|
||||
})
|
||||
return {newEventLineupEntries, eventLineupEntries}
|
||||
return {newEventLineupEntries, eventLineupEntries, deleteEventLineupEntries}
|
||||
}
|
||||
Reference in New Issue
Block a user