diff options
| -rw-r--r-- | src/routes/frontend.ts | 22 | ||||
| -rwxr-xr-x | views/event.handlebars | 14 | 
2 files changed, 32 insertions, 4 deletions
diff --git a/src/routes/frontend.ts b/src/routes/frontend.ts index cc97ab8..23418df 100644 --- a/src/routes/frontend.ts +++ b/src/routes/frontend.ts @@ -159,6 +159,24 @@ router.get("/:eventID", async (req: Request, res: Response) => {                  }                  return acc;              }, 0) || 0; +        const visibleAttendees = event.attendees?.filter( +            (attendee) => attendee.visibility === "public", +        ); +        const hiddenAttendees = event.attendees?.filter( +            (attendee) => attendee.visibility === "private", +        ); +        const numberOfHiddenAttendees = event.attendees?.reduce( +            (acc, attendee) => { +                if ( +                    attendee.status === "attending" && +                    attendee.visibility === "private" +                ) { +                    return acc + (attendee.number || 1); +                } +                return acc; +            }, +            0, +        );          if (event.maxAttendees) {              spotsRemaining = event.maxAttendees - numberOfAttendees;              if (spotsRemaining <= 0) { @@ -189,8 +207,10 @@ router.get("/:eventID", async (req: Request, res: Response) => {                  title: event.name,                  escapedName: escapedName,                  eventData: event, -                eventAttendees: eventAttendees, +                visibleAttendees, +                hiddenAttendees,                  numberOfAttendees, +                numberOfHiddenAttendees,                  spotsRemaining: spotsRemaining,                  noMoreSpots: noMoreSpots,                  eventStartISO: eventStartISO, diff --git a/views/event.handlebars b/views/event.handlebars index 999a12b..4a732e2 100755 --- a/views/event.handlebars +++ b/views/event.handlebars @@ -131,7 +131,7 @@  {{#if eventData.usersCanAttend}}  <div class="card mb-4" id="eventAttendees"> -  <h5 class="card-header">Attendees {{#if eventAttendees}}({{numberOfAttendees}}){{/if}} +  <h5 class="card-header">Attendees {{#if numberOfAttendees}}({{numberOfAttendees}}){{/if}}      <div class="btn-group" role="group" aria-label="Attendance controls">        {{#unless noMoreSpots}}          <button type="button" id="attendEvent" class="btn btn-success" data-event-id="{{eventData.id}}"><i class="fas fa-user-plus"></i> Add me</button> @@ -147,12 +147,20 @@          <div class="alert alert-warning text-center" id="attendees-alert">{{spotsRemaining}} {{plural spotsRemaining "spot(s)"}} remaining - add yourself now!</div>        {{/if}}      {{/if}} -    {{#if eventAttendees}} +    {{#if visibleAttendees}}        <ul class="attendeesList"> -        {{#each eventAttendees}} +        {{#each visibleAttendees}}            <li{{#if ../editingEnabled}} data-attendee-name="{{this.name}}" data-attendee-id="{{this._id}}"{{/if}}><span class="attendee-name">{{this.name}}</span>{{#if ../editingEnabled}} <a href="#" class="remove-attendee" data-toggle="modal" data-target="#removeAttendeeModal" title="Remove user from event"><i class="fas fa-user-times"></i></a>{{/if}}</li>          {{/each}} +        {{#if editingEnabled}} +          {{#each visibleAttendees}} +            <li{{#if ../editingEnabled}} data-attendee-name="{{this.name}}" data-attendee-id="{{this._id}}"{{/if}}><span class="attendee-name">{{this.name}} (Hidden from public list)</span>{{#if ../editingEnabled}} <a href="#" class="remove-attendee" data-toggle="modal" data-target="#removeAttendeeModal" title="Remove user from event"><i class="fas fa-user-times"></i></a>{{/if}}</li> +          {{/each}} +        {{/if}}        </ul> +      {{#if numberOfHiddenAttendees}} +        <p class="text-center text-muted mb-0">+{{numberOfHiddenAttendees}} hidden attendee{{plural numberOfHiddenAttendees ""}}</p> +      {{/if}}      {{else}}        <p class="text-center text-muted mb-0">No attendees yet!</p>      {{/if}}  | 
