Skip to content
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

Add oversight to tools #38

Open
wants to merge 2,932 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2932 commits
Select commit Hold shift + click to select a range
e6f0ed2
feat(oversight): distinguish between engaged and converted
trieloff Jul 10, 2024
53cc6c8
feat(oversight): report engagement rate by default
trieloff Jul 10, 2024
8d3a828
feat(oversight): list additional known consent vendors
trieloff Jul 10, 2024
3d655e8
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 11, 2024
530e540
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 11, 2024
110d1fc
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 11, 2024
27a78df
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 11, 2024
aeedd0c
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 12, 2024
8271b91
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 12, 2024
86ce8c3
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 12, 2024
fb2e1c4
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 12, 2024
08b5567
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 12, 2024
f85a764
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 12, 2024
6163cf1
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 13, 2024
d16a14d
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 13, 2024
9fcfdc2
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 13, 2024
3fd5d4e
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 14, 2024
cfe63fc
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 14, 2024
2f6e397
Merge branch 'main' of https://github.com/adobe/helix-website
trieloff Jul 15, 2024
d57de19
fix(rum-explorer) use a cached value of the conversion spec
akalfas Jun 26, 2024
65a0c9c
fix(rum-explorer) use loops instead of reduce for tTest
akalfas Jun 26, 2024
9b1a723
fix(rum-explorer) no need to iterate over all events
akalfas Jul 1, 2024
0cd267f
feat: only render the necessary
kptdobe Jul 11, 2024
57adc83
feat(list-facet): defer metrics calculations
trieloff Jul 15, 2024
b2f4976
feat: defer conversions computation
kptdobe Jul 12, 2024
73e0aaa
feat: defer CWV loading
kptdobe Jul 12, 2024
ad5bab1
fix(rum-explorer) cache network calls to bundles
akalfas Jul 1, 2024
6f14d18
fix(rum-explorer) keep cached between views
akalfas Jul 2, 2024
cf01b44
Revert "fix(rum-explorer) no need to iterate over all events"
akalfas Jul 12, 2024
592ccc5
Revert "fix(rum-explorer) keep cached between views"
akalfas Jul 12, 2024
6c22fd4
Revert "fix(rum-explorer) cache network calls to bundles"
akalfas Jul 12, 2024
502e5e8
refactor(rum-cruncher): naming and jsdocs of function for mean and va…
trieloff Jul 15, 2024
536b990
Merge pull request #603 from adobe/oversight-all-perf
trieloff Jul 15, 2024
807007e
Merge pull request #597 from adobe/default-enagement
trieloff Jul 15, 2024
d73fb23
feat(rum-explorer): major performance improvements (#601)
kptdobe Jul 15, 2024
508f392
chore(tools): add a small tool to help adjust changes from rum to ove…
trieloff Jul 15, 2024
3ce3b1d
fix: remove gradient (#602)
kptdobe Jul 15, 2024
a9c3c61
feat(oversight): classify traffic acquisition
trieloff Jul 15, 2024
40c2e28
fix(oversight): remove special handling of utm parameter
trieloff Jul 15, 2024
ce0e27b
feat(oversight): display traffic sources
trieloff Jul 15, 2024
dffe419
fix(oversight): remove drilldown for traffic source
trieloff Jul 15, 2024
453b73d
fix(oversight): more number format tweaks
trieloff Jul 15, 2024
8c7c874
fix(oversight): guard against empty iterator
trieloff Jul 15, 2024
650db28
refactor(sankey): use new traffic source classification
trieloff Jul 15, 2024
955273b
feat(oversight): classify incoming traffic by paid, owned, earned in …
trieloff Jul 15, 2024
3776328
feat(oversight): improve detection of earned and owned in sankey diagram
trieloff Jul 15, 2024
2303a10
fix(oversight): fix both cases of numberformat updates
trieloff Jul 16, 2024
ffad5c1
feat(oversight): prettier pie charts, with more functionality
trieloff Jul 16, 2024
6cd8df4
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 16, 2024
7c8e7a8
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 16, 2024
1a7278e
feat: restore "original" explorer UI (#604)
kptdobe Jul 16, 2024
2f2a3a4
test(acquisition): unit tests
ekremney Jul 16, 2024
f5b98b7
Merge pull request #608 from ekremney/classify-acquisition-tests
trieloff Jul 16, 2024
d24705a
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 16, 2024
5d24dc3
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 16, 2024
fc71abf
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 16, 2024
f091e97
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 17, 2024
150d1b8
Merge pull request #605 from adobe/classify-acquisition
trieloff Jul 17, 2024
eb6fc9c
Merge branch 'main' into oversight-pies
trieloff Jul 17, 2024
ab89c83
feat(oversight): add ability to drill down to acquisition source
trieloff Jul 17, 2024
bd241e3
Merge pull request #607 from adobe/oversight-pies
trieloff Jul 17, 2024
cf5d339
feat(oversight): hide common prefixes in list facet
trieloff Jul 17, 2024
8300771
feat(oversight): censor numbers, hex codes, base64, and uuids in link…
trieloff Jul 17, 2024
9cca5c1
fix(oversight): prevent key metrics from breaking
trieloff Jul 17, 2024
4e42074
feat(oversight): censor more agressively
trieloff Jul 17, 2024
064de03
feat(oversight): show / if there is nothing left but the prefix
trieloff Jul 17, 2024
0a5254b
feat(rum-oversight): cleanup backport (#610)
kptdobe Jul 17, 2024
7bfd161
feat(rum-admin): org manager (#606)
maxakuru Jul 17, 2024
8e2e55e
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 17, 2024
da3ed89
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 17, 2024
3784ccc
fix(rum-explorer): compute conversions (#611)
kptdobe Jul 18, 2024
230fcec
feat: remove unused focus (#612)
kptdobe Jul 18, 2024
b6d2676
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 18, 2024
2a7720d
fix: un-matched filter (#614)
kptdobe Jul 18, 2024
fe962bb
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 18, 2024
3647ea9
feat: remove unuset focus in oversight (#613)
kptdobe Jul 18, 2024
c43e7ef
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 18, 2024
44f2e25
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 18, 2024
a1c9ca5
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 19, 2024
26ca1c3
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 21, 2024
b265971
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 22, 2024
8ce8c04
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 22, 2024
568f410
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 22, 2024
fb6fa0b
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 22, 2024
617b8f5
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 23, 2024
b9422ad
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 23, 2024
86d95bb
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 23, 2024
e950241
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 24, 2024
1da246a
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 24, 2024
23d28c3
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 24, 2024
957284b
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 25, 2024
6894f3e
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 25, 2024
0aca410
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 26, 2024
d0423ac
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 27, 2024
6e373e3
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 28, 2024
0510bfc
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 29, 2024
9c083cd
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 29, 2024
9b94976
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 29, 2024
e5f3529
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 29, 2024
4e67d4d
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 29, 2024
48d2bd7
fix(oversight): more robust default parameters for list view
trieloff Jul 30, 2024
171fb9c
Merge branch 'main' into oversight-censor-urls
trieloff Jul 31, 2024
b3ab528
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 31, 2024
c01abb6
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 31, 2024
b658e6b
chore(docs): update admin API docs [skip ci]
invalid-email-address Jul 31, 2024
d1e5ec5
fix(oversight): don't break key metrics
trieloff Aug 2, 2024
43692a5
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 2, 2024
3da3a31
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 3, 2024
36138a5
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 4, 2024
4efb061
Merge branch 'main' into oversight-censor-urls
trieloff Aug 5, 2024
9738fc8
Merge pull request #609 from adobe/oversight-censor-urls
trieloff Aug 5, 2024
223b82b
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 6, 2024
2986f82
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 7, 2024
6dfbc2c
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 7, 2024
5713054
feat(sidekick-generator): show project in document title (#617)
rofe Aug 7, 2024
f2b281e
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 8, 2024
29c540f
fix: allow special domains (not url) (#618)
kptdobe Aug 8, 2024
23c14bd
feat(rum-explorer): ui tweaks (#619)
kptdobe Aug 8, 2024
d7607bc
fix(rum-explorer): media are the same (#620)
kptdobe Aug 8, 2024
ff82858
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 8, 2024
e379efe
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 8, 2024
6faf5cc
feat(rum-explorer): improve reduce in skyline
karlpauls Aug 9, 2024
003a613
feat(rum-explorer): split draw from loadData
karlpauls Aug 9, 2024
a6e85be
feat(rum-explorer): use find instead of reduce in acquisition
karlpauls Aug 9, 2024
4b1e387
feat(rum-explorer): improve matching in consent
karlpauls Aug 9, 2024
69a4087
feat(rum-explorer): improve applyFilter
karlpauls Aug 9, 2024
cec8c40
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 10, 2024
68a8d5e
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 10, 2024
7c2684b
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 11, 2024
b4fda33
feat: host type facet (#621)
kptdobe Aug 12, 2024
689cf00
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 12, 2024
c998c2a
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 12, 2024
b1ea13c
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 12, 2024
1176bd7
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 13, 2024
26c800f
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 13, 2024
585e869
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 13, 2024
492a457
feat(rum-explorer): improve get totals by replacing a reduce with a copy
karlpauls Aug 13, 2024
38c062c
chore: test google indexing
davidnuescheler Aug 13, 2024
9cfc18d
chore: remove bg color
davidnuescheler Aug 13, 2024
573dd88
Merge pull request #624 from adobe/index-test
davidnuescheler Aug 13, 2024
8b05daa
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 13, 2024
268c955
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 14, 2024
cae6b3e
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 14, 2024
c076608
feat(rum-explorer): unroll scoreCWV loop in util
karlpauls Aug 14, 2024
a4b0d42
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 14, 2024
cc526bc
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 14, 2024
8fbdd6f
chore: trying to bypass googles scripts.js cache
davidnuescheler Aug 14, 2024
510cf04
chore: trying to bypass googles scripts.js cache
davidnuescheler Aug 14, 2024
7d3e9dc
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 15, 2024
7e77f97
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 15, 2024
eea9578
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 15, 2024
ca96e48
chore: move into separate file
davidnuescheler Aug 15, 2024
942fe56
Merge pull request #632 from adobe/index-test
davidnuescheler Aug 15, 2024
c2035a6
chore: change counter
davidnuescheler Aug 15, 2024
7e74b01
Merge pull request #633 from adobe/index-test
davidnuescheler Aug 15, 2024
c92d397
set fstab url to helix5 one
tripodsan Aug 16, 2024
bbe0779
set fstab url to helix5 one
tripodsan Aug 16, 2024
36dfaf6
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 16, 2024
6fd76ab
chore: meta test
davidnuescheler Aug 16, 2024
c2411d9
Merge pull request #634 from adobe/index-test
davidnuescheler Aug 16, 2024
a274481
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 17, 2024
1395c99
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 17, 2024
43b01de
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 18, 2024
19f527f
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 18, 2024
7ded7ad
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 19, 2024
8d95785
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 19, 2024
06f37a2
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 19, 2024
05c780e
feat(rum-oversight): host type facet (#623)
kptdobe Aug 19, 2024
b6e8b2f
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 19, 2024
a61aa76
feat: add filtering to card list used for block party. change sort to…
shsteimer Aug 19, 2024
b6c2c09
fix: add check to class adding to avoid 'undefined'
shsteimer Aug 19, 2024
a118555
Merge pull request #635 from adobe/card-list-block-party
shsteimer Aug 20, 2024
7431f49
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 20, 2024
7f0aa5c
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 20, 2024
61614df
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 21, 2024
b4fb093
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 21, 2024
f6d9406
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 22, 2024
ddbb33a
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 22, 2024
73c1c7d
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 22, 2024
86b0ff7
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 22, 2024
fc82cf7
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 22, 2024
67d7ba2
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 23, 2024
ea801a1
feat(labs): support links in lab text
trieloff Aug 23, 2024
bd9e235
fix(labs): link styling
trieloff Aug 23, 2024
fa71324
feat(labs): better styling on homepage
trieloff Aug 23, 2024
f1a0d5a
chore: after last modified fixes
davidnuescheler Aug 23, 2024
103ce00
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 24, 2024
e68424b
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 24, 2024
51a1cb0
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 25, 2024
0180e22
Merge pull request #626 from karlpauls/totals
trieloff Aug 26, 2024
f5265b7
fix(oversight): dial back the censorship a bit, one large UK newspape…
trieloff Aug 26, 2024
9b7abd4
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 26, 2024
6f670ed
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 26, 2024
4c3636c
Merge pull request #637 from adobe/index-test
davidnuescheler Aug 26, 2024
8e285d1
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 27, 2024
136881a
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 27, 2024
6702008
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 27, 2024
bc405b6
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 28, 2024
9fb1302
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 28, 2024
9c6ff19
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 28, 2024
cc55c91
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 29, 2024
7e7b0c7
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 29, 2024
6cbc970
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 29, 2024
71744e3
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 29, 2024
89c2038
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 30, 2024
5afdf09
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 30, 2024
9346f80
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 30, 2024
6b00f3b
Merge pull request #636 from adobe/labs-links
trieloff Aug 30, 2024
b157d03
Merge pull request #627 from karlpauls/filter
trieloff Aug 30, 2024
42bf2f5
Merge pull request #625 from karlpauls/slicerdraw
trieloff Aug 30, 2024
2e602f0
Merge pull request #628 from karlpauls/consentmatching
trieloff Aug 30, 2024
c09a881
Merge pull request #629 from karlpauls/skylinereduce
trieloff Aug 30, 2024
fbf1eba
Merge pull request #630 from karlpauls/utilunroll
trieloff Aug 30, 2024
da8d866
Merge pull request #631 from karlpauls/acquisitionreduce
trieloff Aug 30, 2024
584c42c
feat(cruncher): add support for negative combiners: `none` and `never`
trieloff Aug 30, 2024
ef4e061
feat(oversight): allow excluding urls from the filter set by specifyi…
trieloff Aug 30, 2024
3908011
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 30, 2024
02499bb
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 30, 2024
95b00c4
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 31, 2024
2e6f0c4
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 31, 2024
774d0e2
chore(docs): update admin API docs [skip ci]
invalid-email-address Aug 31, 2024
4bad0d8
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 1, 2024
44bb679
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 1, 2024
00cd642
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 1, 2024
0f8116f
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 2, 2024
b39e359
fix(cruncher): keep facet combiners in separate object
trieloff Sep 2, 2024
3d50604
feat(list-facet): allow excluding elements from filter (if negative f…
trieloff Sep 2, 2024
22dbc04
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 3, 2024
41b2976
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 3, 2024
e019ca2
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 3, 2024
94db8e9
fix(slicer): support indeterminate clicks
trieloff Sep 4, 2024
39793c8
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 4, 2024
406c014
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 5, 2024
b15e28d
fix(cruncher): do not let negative facets affect the values of the mi…
trieloff Sep 5, 2024
21dddbf
feat(list-facet): better styling for deselected values
trieloff Sep 5, 2024
f990f32
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 5, 2024
8da4f46
chore(rum): display fix for favicon for aggregates with `:` (#641)
davidnuescheler Sep 6, 2024
e32fa86
feat(rum): add org aggregate handling (#642)
maxakuru Sep 6, 2024
b9b0054
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 6, 2024
389d470
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 7, 2024
30ed77f
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 7, 2024
a782ed2
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 7, 2024
d6fa75b
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 8, 2024
6c421c4
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 8, 2024
ec6b804
chore(docs): update admin API docs [skip ci]
invalid-email-address Sep 9, 2024
4fb3621
Merge pull request #639 from adobe/negative-facet
trieloff Sep 9, 2024
74d91b4
Merge branch 'main' into oversight-trampoline
trieloff Sep 9, 2024
4b3d6f8
Merge pull request #640 from adobe/oversight-trampoline
trieloff Sep 9, 2024
f1e5d64
Add 'temp/' from commit '4b3d6f85214a042f00a2a49925429eeaa116a538'
trieloff Sep 9, 2024
66953e3
Add tools/oversight from helix-website
trieloff Sep 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 150 additions & 0 deletions tools/oversight/acquisition.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
/*
* Copyright 2024 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
* OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
const vendorClassifications = [
{ regex: /google|googleads|google-ads|google_search|google_deman|adwords|dv360|gdn|doubleclick|dbm|gmb/i, result: 'google' },
{ regex: /instagram|ig/i, result: 'instagram' },
{ regex: /facebook|fb|meta/i, result: 'facebook' },
{ regex: /bing/i, result: 'bing' },
{ regex: /tiktok/i, result: 'tiktok' },
{ regex: /youtube|yt/i, result: 'youtube' },
{ regex: /linkedin/i, result: 'linkedin' },
{ regex: /twitter/i, result: 'x' },
{ regex: /snapchat/i, result: 'snapchat' },
{ regex: /microsoft/i, result: 'microsoft' },
{ regex: /pinterest/i, result: 'pinterest' },
{ regex: /reddit/i, result: 'reddit' },
{ regex: /spotify/i, result: 'spotify' },
{ regex: /criteo/i, result: 'criteo' },
{ regex: /taboola/i, result: 'taboola' },
{ regex: /outbrain/i, result: 'outbrain' },
{ regex: /yahoo/i, result: 'yahoo' },
{ regex: /marketo/i, result: 'marketo' },
{ regex: /eloqua/i, result: 'eloqua' },
{ regex: /substack/i, result: 'substack' },
{ regex: /line/i, result: 'line' },
{ regex: /yext/i, result: 'yext' },
{ regex: /teads/i, result: 'teads' },
{ regex: /yandex/i, result: 'yandex' },
{ regex: /baidu/i, result: 'baidu' },
{ regex: /amazon|ctv/i, result: 'amazon' },
{ regex: /direct/i, result: 'direct' },
];

/* is the vendor paid or owned */
const vendorTypeLookup = {
yext: 'paid',
reddit: 'paid',
tiktok: 'paid',
amazon: 'paid',
direct: 'earned',
};

const categoryClassifications = [
{ regex: /search|sem|sea$/i, result: 'search' },
{ regex: /display|programmatic|banner|gdn|dbm/i, result: 'display' },
{ regex: /video|dv360|tv/i, result: 'video' },
{ regex: /email|newsletter/i, result: 'email' },
{ regex: /social|bio/i, result: 'social' },
{ regex: /affiliate/i, result: 'affiliate' },
{ regex: /local|gmb/i, result: 'local' },
{ regex: /sms/i, result: 'sms' },
{ regex: /qr/i, result: 'qr' },
{ regex: /push/i, result: 'push' },
{ regex: /print/i, result: 'print' },
{ regex: /web/i, result: 'web' },
];

const paidOwnedClassifications = [
{ regex: /cpc|ppc|paid|cpm|cpv|banner|display|programmatic|affiliate|^sea$|ads|dv360/i, result: 'paid' },
// "organic" is treated as "owned" as it is not paid and not earned
// (noone puts UTM tags on real organic traffic)
{ regex: /email|newsletter|hs_email|organic|sms|qr|qrcode|print|website|web|linkin.bio/i, result: 'owned' },
{ regex: /push/i, result: 'owned' },
{ regex: /gmb/i, result: '' },
// { regex: /social/i, result: 'earned' },
];

const vendorCategoryLookup = {
google: 'search',
bing: 'search',
yahoo: 'search',
facebook: 'social',
instagram: 'social',
linkedin: 'social',
x: 'social',
snapchat: 'social',
pinterest: 'social',
reddit: 'social',
youtube: 'video',
spotify: 'display',
yext: 'local',
line: 'social',
substack: 'email',
outbrain: 'display',
taboola: 'display',
criteo: 'display',
eloqua: 'email',
microsoft: 'display',
marketo: 'email',
tiktok: 'video',
amazon: 'display',
yandex: 'search',
baidu: 'search',
direct: 'direct',
};

const categoryTypeLookup = {
search: 'paid',
display: 'paid',
affiliate: 'paid',
email: 'owned',
web: 'owned',
sms: 'owned',
qr: 'owned',
print: 'owned',
};

export function vendor(origin) {
const result = vendorClassifications.find(({ regex }) => regex.test(origin));
return result ? result.result : '';
}

function category(origin, vendorResult) {
const categoryResult = categoryClassifications.find(({ regex }) => regex.test(origin));

if (categoryResult) return categoryResult.result;
return vendorCategoryLookup[vendorResult] || '';
}

function paidowned(origin, vendorResult, categoryResult) {
const paidOwnedResult = paidOwnedClassifications.find(({ regex }) => regex.test(origin));

if (paidOwnedResult) return paidOwnedResult.result;
return vendorTypeLookup[vendorResult] || categoryTypeLookup[categoryResult] || '';
}

export function classifyAcquisition(origin, isPaid = false) {
const vendorResult = vendor(origin);
const categoryResult = category(origin, vendorResult);
const paidOwnedResult = isPaid
? (typeof isPaid === 'string' && isPaid) || 'paid'
: paidowned(origin, vendorResult, categoryResult);

let result = paidOwnedResult;
if (categoryResult || vendorResult) {
result += `:${categoryResult}`;
}
if (vendorResult) {
result += `:${vendorResult}`;
}
return result;
}
194 changes: 194 additions & 0 deletions tools/oversight/charts/barchart.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
import {
Chart, LinearScale, registerables,
// eslint-disable-next-line import/no-unresolved, import/extensions
} from 'chartjs';
import AbstractChart from './chart.js';
import {
toHumanReadable, scoreBundle, cwvInterpolationFn, cssVariable,
} from '../utils.js';

Chart.register(LinearScale, ...registerables);

const INTERPOLATION_THRESHOLD = 10;
export default class BarChart extends AbstractChart {
defineSeries() {
const { dataChunks } = this;

dataChunks.addSeries('goodCWV', (bundle) => (scoreBundle(bundle) === 'good' ? bundle.weight : undefined));
dataChunks.addSeries('poorCWV', (bundle) => (scoreBundle(bundle) === 'poor' ? bundle.weight : undefined));
dataChunks.addSeries('niCWV', (bundle) => (scoreBundle(bundle) === 'ni' ? bundle.weight : undefined));
dataChunks.addSeries('noCWV', (bundle) => (scoreBundle(bundle) === null ? bundle.weight : undefined));

// interpolated series
dataChunks.addInterpolation(
'iGoodCWV', // name of the series
['goodCWV', 'niCWV', 'poorCWV', 'noCWV'], // calculate from these series
cwvInterpolationFn('goodCWV'), // interpolation function
);

dataChunks.addInterpolation(
'iNiCWV',
['goodCWV', 'niCWV', 'poorCWV', 'noCWV'],
cwvInterpolationFn('niCWV'),
);

dataChunks.addInterpolation(
'iPoorCWV',
['goodCWV', 'niCWV', 'poorCWV', 'noCWV'],
cwvInterpolationFn('poorCWV'),
);

dataChunks.addInterpolation(
'iNoCWV',
['goodCWV', 'niCWV', 'poorCWV', 'noCWV'],
({
goodCWV, niCWV, poorCWV, noCWV,
}) => {
const valueCount = goodCWV.count + niCWV.count + poorCWV.count;
if (valueCount < INTERPOLATION_THRESHOLD) {
// not enough data to interpolate the other values, so
// we report as if there are no CWV at all
const totalWeight = goodCWV.weight + niCWV.weight + poorCWV.weight + noCWV.weight;
return totalWeight;
}
return 0;
},
);
}

async draw() {
let params = new URL(window.location.href).searchParams;

if (this.dataChunks.filtered.length < 1000) {
this.elems.lowDataWarning.ariaHidden = 'false';
} else {
this.elems.lowDataWarning.ariaHidden = 'true';
}

this.defineSeries();

if (!params.get('drilldown')) {
const u = new URL(window.location.href);
u.searchParams.set('drilldown', 'url');
window.history.replaceState({}, '', u);
params = u.searchParams;
}

const drilldown = params.get('drilldown');

const drilldowns = {
url: (bundle) => bundle.domain || bundle.url,
'click.source': (bundle) => bundle.events
.filter((event) => event.checkpoint === 'click')
.filter((event) => event.source)
.map((event) => event.source),
'click.target': (bundle) => bundle.events
.filter((event) => event.checkpoint === 'click')
.filter((event) => event.target)
.map((event) => event.target),
};

const drilldownFn = (bundle) => (typeof drilldowns[drilldown] === 'function'
? drilldowns[drilldown](bundle)
: bundle.events
.filter((event) => event.checkpoint === drilldown.split('.')[0])
.map((event) => event[drilldown.split('.')[1]])
.filter((value) => value));

this.dataChunks.group((bundle) => drilldownFn(bundle));
const topgroups = Object.entries(this.dataChunks.aggregates)
.sort(([, a], [, b]) => b.pageViews.sum - a.pageViews.sum)
.slice(0, 30);
this.chart.data.labels = topgroups.map(([path]) => path);

// clear the data
this.chart.data.datasets.forEach((dataset) => {
dataset.data = [];
});
// set new data
this.chart.data.labels.forEach((path) => {
this.chart.data.datasets[0].data.push(this.dataChunks.aggregates[path].iNoCWV.weight);
this.chart.data.datasets[1].data.push(this.dataChunks.aggregates[path].iGoodCWV.weight);
this.chart.data.datasets[2].data.push(this.dataChunks.aggregates[path].iNiCWV.weight);
this.chart.data.datasets[3].data.push(this.dataChunks.aggregates[path].iPoorCWV.weight);
});

this.chart.update();
}

render() {
// eslint-disable-next-line no-undef
this.chart = new Chart(this.elems.canvas, {
type: 'bar',
data: {
labels: [],
datasets: [{
label: 'No CVW',
backgroundColor: cssVariable('--spectrum-gray-600'),
data: [],
},
{
label: 'Good',
backgroundColor: cssVariable('--spectrum-green-600'),
data: [],
},
{
label: 'Needs Improvement',
backgroundColor: cssVariable('--spectrum-orange-600'),
data: [],
},
{
label: 'Poor',
backgroundColor: cssVariable('--spectrum-red-600'),
data: [],
}],
},
options: {
indexAxis: 'y',
maintainAspectRatio: false,
plugins: {
legend: {
display: false,
},
customCanvasBackgroundColor: {
color: 'white',
},
},
interaction: {
mode: 'y',
},
animation: {
duration: 300,
},
datasets: {
bar: {
barPercentage: 1,
categoryPercentage: 0.9,
borderSkipped: false,
borderRadius: {
topLeft: 3,
topRight: 3,
bottomLeft: 3,
bottomRight: 3,
},
},
},
responsive: true,
scales: {
x: {
stacked: true,
ticks: {
callback: (value) => toHumanReadable(value),
},
},
y: {
stacked: true,
grid: {
display: false,
},
},
},
},
});
}
}
24 changes: 24 additions & 0 deletions tools/oversight/charts/chart.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
export default class AbstractChart {
constructor(dataChunks, elems) {
this.chartConfig = {};
this.dataChunks = dataChunks;
this.elems = elems;
this.chart = {};
}

set config(config) {
this.chartConfig = config;
}

get config() {
return this.chartConfig || {};
}

render() {
throw new Error('render method must be implemented', this);
}

async draw() {
throw new Error('draw method must be implemented', this);
}
}
Loading