diff --git a/src/AdminUI.css b/src/AdminUI.css index a84f55b..0c75396 100644 --- a/src/AdminUI.css +++ b/src/AdminUI.css @@ -76,11 +76,15 @@ .guests { display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - gap: 5px 0px; + grid-template-columns: 1fr 1fr auto auto; + &.extra { + grid-template-columns: 1fr 1fr auto auto 1fr; + } + gap: 8px 8px; overflow: auto; } .guests .header { + width: 100%; background-color: unset!important; justify-self: center; justify-content: center; @@ -108,23 +112,35 @@ span.lg { } .guests > div { background-color: lightgrey!important ; - padding: 8px; cursor: pointer; overflow: auto; } -.guests>div:nth-child(8n+5), -.guests>div:nth-child(8n+6), -.guests>div:nth-child(8n+7), -.guests>div:nth-child(8n+8) { +.guests.extra>div:nth-child(10n+6), +.guests.extra>div:nth-child(10n+7), +.guests.extra>div:nth-child(10n+8), +.guests.extra>div:nth-child(10n+9), +.guests.extra>div:nth-child(10n+10) { background-color: #c5c5c5!important; } +.guests.extra>div:nth-child(10n+11), +.guests.extra>div:nth-child(10n+12), +.guests.extra>div:nth-child(10n+13) +.guests.extra>div:nth-child(10n+14) +.guests.extra>div:nth-child(10n+15) { + background-color: #dedede!important; +} + .guests>div:nth-child(8n+9), .guests>div:nth-child(8n+10), .guests>div:nth-child(8n+11), .guests>div:nth-child(8n+12) { + background-color: #c5c5c5!important; +} +.guests>div:nth-child(8n+13), +.guests>div:nth-child(8n+14) +.guests>div:nth-child(8n+15) +.guests>div:nth-child(8n+16) { background-color: #dedede!important; -; - } .partyname { @@ -218,4 +234,19 @@ dialog > div label { .coming-maybe { font-style: italic; color: blue; -} \ No newline at end of file +} +.extraTable { + display: grid; + grid-template-columns: repeat(var(--num-columns), 1fr); + height: 100%; + width: 100%; + gap: 5px; + &> div { + background-color: #e8e8e8; + text-align: center; + } + &.heading> div { + background-color: #b6b6b6; + text-align: center; + } +} diff --git a/src/AdminUI.tsx b/src/AdminUI.tsx index d64f247..07cc139 100644 --- a/src/AdminUI.tsx +++ b/src/AdminUI.tsx @@ -101,7 +101,7 @@ export const AdminUI: React.FC = () => {
Edit Parties
- {partyList.map((p, i)=> <> + {partyList.map((p, _i)=> <> {p.name} @@ -218,9 +218,12 @@ export const PartyUI: React.FC<{ party: ResponseCreateParty, adminToken: string, ], [guests]); const genderstring = `${genderCount[0]} ${genderCount[1]} ${genderCount[2] !== 0 ? genderCount[2] : ""}`; + const numExtraColumns = Object.keys(party.allowed_extra).length; + const hasExtras = numExtraColumns > 0; + return <>
-
+
Token
Name
Gender
{genderstring}
@@ -229,11 +232,18 @@ export const PartyUI: React.FC<{ party: ResponseCreateParty, adminToken: string, {confirmations[1]} {confirmations[2]}
+ { hasExtras ? +
Extras
{Object.keys(party.allowed_extra).map((k,i) =>
{k}
)}
+ :null + } {guests.map((guest, index) =>
{ e.preventDefault(); exportPartyLink(guest); }} onClick={() => editUser(guest)}>{guest.token}
{ e.preventDefault(); exportPartyLink(guest); }} onClick={() => editUser(guest)}>{guest.name}
{ e.preventDefault(); exportPartyLink(guest); }} onClick={() => editUser(guest)}>{guest.grammatical_gender}
{ e.preventDefault(); exportPartyLink(guest); }} onClick={() => editUser(guest)}>{guest.coming ?? "?"}
+ {hasExtras ? +
{ e.preventDefault(); exportPartyLink(guest); }} onClick={() => editUser(guest)}/>
+ : null}
)}
@@ -248,4 +258,13 @@ export const PartyUI: React.FC<{ party: ResponseCreateParty, adminToken: string,
; -}; \ No newline at end of file +}; + +export const ExtraTable : React.FC<{guest: Person, party: ResponseCreateParty} & React.HTMLProps> = ({guest, party}) => { + const numExtraColumns = Object.keys(party.allowed_extra).length; + return
+ {Object.keys(party.allowed_extra).map((k, i) =>
+ {guest.extra[k]?? ""} +
)} +
+}