module RosterHelper def roster_person_avatar(person, team, size: 96) primary = team.effective_primary_color secondary = team.effective_secondary_color style = "--avatar-primary:#{primary};--avatar-secondary:#{secondary};width:#{size}px;height:#{size}px" if person.photo_url.present? image_tag person.photo_url, alt: person.full_name, class: "roster-avatar roster-avatar--photo", style: style, width: size, height: size else tag.div( person.initials, class: "roster-avatar roster-avatar--placeholder", style: "#{style};font-size:#{(size * 0.34).round}px", aria: { label: person.full_name } ) end end def roster_category_options TeamRosterMember::DISPLAY_ORDER.map do |cat| [TeamRosterMember::CATEGORY_LABELS[cat], cat] end end def roster_player_role_options(selected = nil) options_for_select( [["— Seleziona ruolo —", ""]] + TeamRosterMember::VOLLEYBALL_PLAYER_ROLES.map { |r| [r, r] }, selected ) end end