-
-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Category dashboard with collapsible filters #934
base: main
Are you sure you want to change the base?
Changes from all commits
d3987bf
b21cc6e
04628eb
07171f7
c312252
706d6f0
fa8c689
e58f7ce
7f837c1
6b24d96
cf7c0e8
bf11a13
ce8df02
bc5af01
b74de3b
728d42f
0d062cc
aea33e1
7aaf182
fea35f0
c16fe45
3987516
5a45a40
d67c907
7820ed5
cd10b24
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,11 @@ | |
"name": "Technology Report", | ||
"summary": "The Core Web Vitals Technology Report is a dashboard combining the powers of real-user experiences in the [Chrome User Experience Report (CrUX)](https://developers.google.com/web/tools/chrome-user-experience-report/) dataset with web technology detections available in HTTP Archive, to allow analysis of the way websites are both built and experienced.", | ||
"config": { | ||
"default_apps": { | ||
"drilldown": [ "ALL" ], | ||
"comparison": [ "ALL", "WordPress", "Wix", "Next.js" ] | ||
}, | ||
"default_category": "CMS", | ||
"cwv_subcategories": [ | ||
"CLS", | ||
"LCP", | ||
|
@@ -39,7 +44,7 @@ | |
"id": "landing", | ||
"title": "Technology Report", | ||
"subtitle": "Report", | ||
"description": "This is placeholder text about how the report works", | ||
"description": "", | ||
"data": {}, | ||
"filters": { | ||
"technologies": ["WordPress", "Squarespace", "Drupal"] | ||
|
@@ -263,7 +268,7 @@ | |
}, | ||
"good_cwv_timeseries": { | ||
"title": "Good Core Web Vitals over time", | ||
"description": "Placeholder - combination of several metrics", | ||
"description": "The percentage of origins passing all three Core Web Vitals (LCP, INP, CLS) with a good experience. Note that if an origin is missing INP data, it's assessed based on the performance of the remaining metrics.", | ||
"id": "good_cwv_timeseries", | ||
"endpoint": "vitals", | ||
"metric": "good_pct", | ||
|
@@ -425,7 +430,7 @@ | |
}, | ||
"lighthouse_timeseries": { | ||
"title": "Lighthouse over time", | ||
"description": "Placeholder text", | ||
"description": "", | ||
"id": "lighthouse_timeseries", | ||
"endpoint": "lighthouse", | ||
"metric": "median_score_pct", | ||
|
@@ -557,7 +562,7 @@ | |
}, | ||
"weight_timeseries": { | ||
"title": "Weight over time", | ||
"description": "Placeholder text", | ||
"description": "", | ||
"id": "weight_timeseries", | ||
"summary": true, | ||
"endpoint": "pageWeight", | ||
|
@@ -695,7 +700,8 @@ | |
"#E24070" | ||
], | ||
"overrides": { | ||
"WordPress": "#fff000" | ||
"WordPress": "#3858e9", | ||
"ALL": "#69797e" | ||
} | ||
}, | ||
"default": { | ||
|
@@ -857,7 +863,7 @@ | |
}, | ||
"lighthouse_timeseries": { | ||
"title": "Lighthouse over time", | ||
"description": "Placeholder text", | ||
"description": "", | ||
"id": "lighthouse_timeseries", | ||
"endpoint": "lighthouse", | ||
"metric": "median_score_pct", | ||
|
@@ -952,7 +958,7 @@ | |
}, | ||
"weight_timeseries": { | ||
"title": "Page weight over time", | ||
"description": "Placeholder text", | ||
"description": "", | ||
"id": "weight_timeseries", | ||
"endpoint": "pageWeight", | ||
"metric": "median_bytes", | ||
|
@@ -1047,7 +1053,7 @@ | |
}, | ||
"adoption_timeseries": { | ||
"title": "Origins over time", | ||
"description": "Placeholder text", | ||
"description": "", | ||
"id": "adoption_timeseries", | ||
"endpoint": "adoption", | ||
"metric": "origins", | ||
|
@@ -1118,6 +1124,106 @@ | |
} | ||
}, | ||
"description": "Comparison placeholder" | ||
}, | ||
"category": { | ||
"id": "category", | ||
"title": "Categories", | ||
"subtitle": "Technology Report", | ||
"config": { | ||
"default": { | ||
"category": "CMS", | ||
"app": ["ALL", "WordPress", "Drupal"], | ||
"series": { | ||
"breakdown": "app" | ||
} | ||
}, | ||
"summary": [ | ||
{ | ||
"endpoint": "category", | ||
"metric": "origins", | ||
"label": "Origins", | ||
"description": "Origins analyzed in this category.", | ||
"key": "info" | ||
}, | ||
{ | ||
"endpoint": "category", | ||
"metric": "technologies", | ||
"label": "Technologies", | ||
"description": "Amount of technologies in this category.", | ||
"key": "info" | ||
} | ||
], | ||
"tech_comparison_summary": { | ||
"id": "tech_comparison_summary", | ||
"table": { | ||
"caption": "Summary", | ||
"key": "technologies", | ||
"columns": [ | ||
{ | ||
"key": "selectTech", | ||
"name": "Select technology", | ||
"hiddenName": true, | ||
"type": "checkbox" | ||
}, | ||
{ | ||
"key": "technology", | ||
"name": "Tech", | ||
"type": "heading" | ||
}, | ||
{ | ||
"key": "origins", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In addition to the number of origins, I think a primary use case for this data would be to see the proportion of origins that adopt this category relative to all origins that adopt this category. For example, there are 3.2M WordPress origins and the /categories endpoint says that there are 8.8M origins in the CMS category, so we could show that "market share" value as 36%. What do you think would be the best way to show the 36% stat? It could be a new column, combined with the # of origins somehow, or replace the # origin column entirely. Alternatively, would you hate a pie chart at the top of the page? Aside: I suspect the 8.8M number is wrong as it's double-counting origins that use multiple CMSs. WordPress market share should be more like 75% of the CMS category. This is something we'll need to fix in BigQuery. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If a primary use case is to see the market share, I'm inclined to say replace the origins with the market share, so the table doesn't become overcrowded with info. The other numbers in the table (% of good CWV etc) feel more important than the absolute number of origins to provide a summary of the category data as well, so if a column has to be hidden to make space for the market share, I think origins is the safest one to remove.
What about just for the top 5/top 10 technologies within a category? I fear anything more than a handful of items will become too busy/hard to read, at which point it's not very useful anymore and the table becomes a better alternative.
If some origins can have multiple CMSes, then adding all the market share percentages can end up being more than 100%, and a pie chart doesn't work anymore? So if that's the case, a different way of highlighting the top techs within a category might be better? → Sounds like marketshare might be better for a follow-up issue & PR as well, so we can think through the specifics of it a bit more? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SGTM There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
"name": "Origins", | ||
"breakdown": "subcategory", | ||
"subcategory": "adoption", | ||
"endpoint": "adoption", | ||
"metric": "origins" | ||
}, | ||
{ | ||
"key": "good_pct", | ||
"name": "Good CWV", | ||
"breakdown": "subcategory", | ||
"subcategory": "overall", | ||
"suffix": "%", | ||
"className": "main-cell pct-value", | ||
"endpoint": "vitals", | ||
"metric": "good_pct" | ||
}, | ||
{ | ||
"key": "good_pct", | ||
"name": "LCP", | ||
"breakdown": "subcategory", | ||
"subcategory": "LCP", | ||
"suffix": "%", | ||
"endpoint": "vitals", | ||
"metric": "good_pct" | ||
}, | ||
{ | ||
"key": "good_pct", | ||
"name": "INP", | ||
"breakdown": "subcategory", | ||
"subcategory": "INP", | ||
"suffix": "%", | ||
"endpoint": "vitals", | ||
"metric": "good_pct" | ||
}, | ||
{ | ||
"key": "good_pct", | ||
"name": "CLS", | ||
"breakdown": "subcategory", | ||
"subcategory": "CLS", | ||
"suffix": "%", | ||
"endpoint": "vitals", | ||
"metric": "good_pct" | ||
}, | ||
{ | ||
"key": "client", | ||
"name": "Client", | ||
"className": "client" | ||
} | ||
] | ||
} | ||
} | ||
} | ||
} | ||
}, | ||
|
||
|
@@ -1145,6 +1251,9 @@ | |
} | ||
}, | ||
"vitals": { | ||
"general": { | ||
"description": "Each of the Core Web Vitals represents a distinct facet of the user experience, is measurable in the field, and reflects the real-world experience of a critical user-centric outcome. A good threshold to measure is the 75th percentile of page loads, segmented across mobile and desktop devices." | ||
}, | ||
"overall": { | ||
"label": "Overall Core Web Vitals", | ||
"title": "Passes Core Web Vitals", | ||
|
@@ -1178,23 +1287,29 @@ | |
} | ||
}, | ||
"pageWeight": { | ||
"general": { | ||
"description": "" | ||
}, | ||
"images": { | ||
"title": "Image Weight", | ||
"description": "todo" | ||
"description": "" | ||
}, | ||
"js": { | ||
"title": "JavaScript Transfer Size", | ||
"description": "todo" | ||
"description": "" | ||
}, | ||
"total": { | ||
"title": "Total Page Weight", | ||
"description": "todo" | ||
"description": "" | ||
} | ||
}, | ||
"adoption": { | ||
"general": { | ||
"description": "" | ||
}, | ||
"adoption": { | ||
"title": "Adoption", | ||
"description": "Todo" | ||
"description": "The amount of origins using this technology over time." | ||
} | ||
} | ||
}, | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Values appear as
3222201
which can be harder to read. Could we format with commas, ie3,222,201
? It'd also be helpful for comparing values if the text in this column is right-aligned, like a spreadsheet.