Files
d9f9e0c461 UX: New visualizations for new reports (#34)
This adds some new visualizations and styles and reports and cleans up
some existing styles and class names.

Daily activity rhythm 

<img width="1588" height="412" alt="image"
src="https://github.com/user-attachments/assets/0c7980e4-7bb6-4e08-9957-24c3c5718572"
/>


Helping new members

<img width="1456" height="310" alt="image"
src="https://github.com/user-attachments/assets/096a13da-ab63-45d4-9b68-53a01df62a78"
/>

Chat activity 

<img width="1442" height="926" alt="image"
src="https://github.com/user-attachments/assets/07ce2cab-1963-4918-a9ff-805c251a1377"
/>

Assigns 

<img width="1388" height="844" alt="image"
src="https://github.com/user-attachments/assets/ee49c6ee-2da6-4bfa-b500-715ed7ceb13a"
/>

AI usage 

<img width="1442" height="1254" alt="image"
src="https://github.com/user-attachments/assets/b382bffb-010d-4072-9144-cb7e6a8680e3"
/>

Invitations 

<img width="1486" height="1346" alt="image"
src="https://github.com/user-attachments/assets/020f68a9-69d2-46ed-9f38-b0d5e98d02de"
/>

Writing analysis

<img width="917" height="409" alt="image"
src="https://github.com/user-attachments/assets/1147427c-513f-4737-8f28-99bfc6f4aff9"
/>

---------

Co-authored-by: awesomerobot <[email protected]>
Co-authored-by: Martin Brennan <[email protected]>
2025-12-02 09:41:30 -05:00

119 lines
4.1 KiB
Plaintext

import Component from "@glimmer/component";
import { concat } from "@ember/helper";
import avatar from "discourse/helpers/bound-avatar-template";
import number from "discourse/helpers/number";
import { i18n } from "discourse-i18n";
export default class Invites extends Component {
get mostActiveInvitee() {
return this.args.report.data.most_active_invitee;
}
<template>
<div class="rewind-report-page --invites">
<div class="guest-book">
<div class="guest-book__cover">
<div class="guest-book__title">
{{i18n "discourse_rewind.reports.invites.guest_book_title"}}
</div>
<div class="guest-book__subtitle">
{{i18n "discourse_rewind.reports.invites.guest_book_subtitle"}}
</div>
</div>
<div class="guest-book__page">
<div class="guest-book__entry">
<div class="guest-book__entry-label">
{{i18n "discourse_rewind.reports.invites.label_invitations_sent"}}
</div>
<div class="guest-book__entry-value">
{{number @report.data.total_invites}}
</div>
</div>
<div class="guest-book__entry">
<div class="guest-book__entry-label">
{{i18n "discourse_rewind.reports.invites.label_guests_joined"}}
</div>
<div class="guest-book__entry-value">
{{number @report.data.redeemed_count}}
</div>
</div>
<div class="guest-book__entry">
<div class="guest-book__entry-label">
{{i18n "discourse_rewind.reports.invites.label_acceptance_rate"}}
</div>
<div class="guest-book__entry-value">
{{@report.data.redemption_rate}}%
</div>
</div>
<div class="guest-book__divider"></div>
<div class="guest-book__section-title">
{{i18n "discourse_rewind.reports.invites.section_contributions"}}
</div>
<div class="guest-book__entry --small">
<div class="guest-book__entry-label">
{{i18n "discourse_rewind.reports.invites.label_posts_written"}}
</div>
<div class="guest-book__entry-value">
{{number @report.data.invitee_post_count}}
</div>
</div>
<div class="guest-book__entry --small">
<div class="guest-book__entry-label">
{{i18n "discourse_rewind.reports.invites.label_topics_started"}}
</div>
<div class="guest-book__entry-value">
{{number @report.data.invitee_topic_count}}
</div>
</div>
<div class="guest-book__entry --small">
<div class="guest-book__entry-label">
{{i18n "discourse_rewind.reports.invites.label_likes_given"}}
</div>
<div class="guest-book__entry-value">
{{number @report.data.invitee_like_count}}
</div>
</div>
{{#if this.mostActiveInvitee}}
<div class="guest-book__divider"></div>
<div class="guest-book__section-title">
{{i18n "discourse_rewind.reports.invites.section_most_active"}}
</div>
<a
href={{concat "/u/" this.mostActiveInvitee.username}}
class="guest-book__signature"
>
{{avatar
this.mostActiveInvitee.avatar_template
"large"
username=this.mostActiveInvitee.username
name=this.mostActiveInvitee.name
}}
<div class="guest-book__signature-info">
<span class="guest-book__signature-name">
{{this.mostActiveInvitee.username}}
</span>
{{#if this.mostActiveInvitee.name}}
<span class="guest-book__signature-realname">
{{this.mostActiveInvitee.name}}
</span>
{{/if}}
</div>
</a>
{{/if}}
</div>
</div>
</div>
</template>
}