{{#if @poll.hasTimes}} {{#each-in this.optionsPerDay as |jsDate count|}} {{! @glint-ignore We can be sure that count is a number because it is destructed from a Map, which values are only numbers. But somehow Glint / TypeScript is not sure about it. }} {{/each-in}} {{/if}} {{#each @poll.options as |option|}} {{/each}} {{#each this.usersSorted as |user|}} {{#each @poll.options as |option index|}} {{#let (get user.selections index) as |selection|}} {{/let}} {{/each}} {{/each}}
{{! column for name }} {{! TODO: Simplify to dateStyle="full" after upgrading to Ember Intl v6 Cannot use optionGroup.value because that's a ISO8601 day string (e.g. "2023-10-01"), which is parsed by browsers in UTC and not locale time zone. Therefore we need parse a JS Date representation of that string, which has been parsed by Luxon in correct timezone. }} {{format-date jsDate weekday="long" day="numeric" month="long" year="numeric" }}
{{! column for name }} {{#if (and @poll.isFindADate @poll.hasTimes)}} {{#if option.hasTime}} {{! @glint-ignore Narrowring is not working here correctly. Due to the only executing if `option.hasTime` is `true`, we know that `option.jsDate` cannot be `null`. But TypeScript does not support narrowing through a chain of getters currently. }} {{format-date option.jsDate timeStyle="short"}} {{/if}} {{else if @poll.isFindADate}} {{! @glint-ignore Narrowring is not working here correctly. Due to the only executing if `option.hasTime` is `true`, we know that `option.jsDate` cannot be `null`. But TypeScript does not support narrowing through a chain of getters currently. }} {{format-date option.jsDate dateStyle="full"}} {{else}} {{option.title}} {{/if}}
{{user.name}} {{#if selection.labelTranslation}} {{t selection.labelTranslation}} {{else}} {{selection.label}} {{/if}}