feat: implement dependent projects + members breakdown/filter (#6395)

* feat: implement dependent project breakdown

* implement dependent project type filter

* feat: show dependent on column if there are multiple projects selected

* feat: different tooltip for when both project version and dependent breakdowns are on

* feat: implement dependents query filter

* feat: add project icon to query filter

* fix: dont show dependent on column when project breakdown is selected

* feat: add org icon

* remove: dependent on project column and project version project column

* refactor: pnpm prepr

* fix: all project selection gets unselected when reload page

* pnpm prepr

* fix: still using old search formatter

* feat: implement projects in table click to link to project page

* feat: handle analytics values that dont have a dependent project as a "No dependent" row

* pnpm prepr

* feat: remove org icon for dependents projects and change unknown label

* feat: do not include unknown rows for showing top 8

* feat: separate out no dependents based on download reason

* fix: use compatible dependencies for query filter options

* feat: implement members breakdown/filter frontend (#6470)

* feat: add link to user in table

* fix: do not allow breakdowns to occur without shared stats

* pnpm prepr

* fix: i18n and passing params for formatter
This commit is contained in:
Truman Gao
2026-06-22 18:09:00 +00:00
committed by GitHub
parent 23edb2351d
commit 1f8b1bd2bb
46 changed files with 1710 additions and 254 deletions
@@ -313,6 +313,7 @@ export namespace Labrinth {
export type ProjectDownloadsField =
| 'project_id'
| 'version_id'
| 'dependent_project_id'
| 'user_agent'
| 'domain'
| 'country'
@@ -328,7 +329,7 @@ export namespace Labrinth {
| 'game_version'
| 'country'
export type ProjectRevenueField = 'project_id'
export type ProjectRevenueField = 'project_id' | 'user_id'
export type DownloadReason = 'standalone' | 'dependency' | 'modpack' | 'update'
@@ -347,6 +348,7 @@ export namespace Labrinth {
export type ProjectDownloadsFilters = {
version_id?: string[]
dependent_project_id?: string[]
domain?: string[]
user_agent?: string[]
monetized?: boolean[]
@@ -363,7 +365,9 @@ export namespace Labrinth {
country?: string[]
}
export type ProjectRevenueFilters = Record<string, never>
export type ProjectRevenueFilters = {
user_id?: string[]
}
export type AffiliateCodeClicksFilters = {
affiliate_code_id?: string[]
@@ -379,6 +383,8 @@ export namespace Labrinth {
export type FetchResponse = {
metrics: TimeSlice[]
projects: Record<string, Projects.v3.Project>
users: Record<string, Users.v3.User>
project_events: ProjectAnalyticsEvent[]
}
@@ -462,6 +468,7 @@ export namespace Labrinth {
user_agent?: string
domain?: string
version_id?: string
dependent_project_id?: string
country?: string
monetized?: boolean
reason?: DownloadReason
@@ -479,6 +486,7 @@ export namespace Labrinth {
}
export type ProjectRevenue = {
user_id?: string
revenue: string
}