Add view selector to search with group-by#80779
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@ikevin127 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: af0ff4c28b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
I was thinking that we'd have the view mode as an exposed filter even when they don't have a group-by selected. And then if they choose View:Bar that we auto-select |
|
Yeah, agreed. I think that's what we landed on for discoverability. |
|
One thing to note is that we won't or shouldn't show the |
|
Should we not show it or still show it but then not render the graph and instead show an error if a non-time group-by is used? |
We agreed in person to handle this in a follow up PR, to keep progress regular and since I just finished building this behavior. |
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index 4ac80dc2..5ec8590f 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -7072,7 +7072,7 @@ Fordere Spesendetails wie Belege und Beschreibungen an, lege Limits und Standard
allMatchingItemsSelected: 'Alle passenden Elemente ausgewählt',
},
topSpenders: 'Top-Ausgaben',
- view: {label: 'Ansehen', table: 'Tabelle', bar: 'Bar'},
+ view: {label: 'Anzeigen', table: 'Tabelle', bar: 'Leiste'},
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: 'Von',
[CONST.SEARCH.GROUP_BY.CARD]: 'Karten',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 31962b8e..d21e24bc 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -7084,7 +7084,7 @@ Exigez des informations de dépense comme les reçus et les descriptions, défin
allMatchingItemsSelected: 'Tous les éléments correspondants sont sélectionnés',
},
topSpenders: 'Plus gros dépensiers',
- view: {label: 'Afficher', table: 'Tableau', bar: 'Barre'},
+ view: {label: 'Afficher', table: 'Tableau', bar: 'Bar'},
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: 'De',
[CONST.SEARCH.GROUP_BY.CARD]: 'Cartes',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 3764c7a0..d105fd04 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -7065,9 +7065,9 @@ Richiedi dettagli di spesa come ricevute e descrizioni, imposta limiti e valori
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: 'Da',
[CONST.SEARCH.GROUP_BY.CARD]: 'Carte',
- [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Esportazioni',
+ [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Esportazioni', //_/\__/_/ \_,_/\__/\__/\_,_/
[CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorie',
- [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Commercianti',
+ [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Esercenti',
[CONST.SEARCH.GROUP_BY.TAG]: 'Tag',
[CONST.SEARCH.GROUP_BY.MONTH]: 'Mesi',
[CONST.SEARCH.GROUP_BY.WEEK]: 'Settimane',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index cdccc205..ac66e412 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -7005,10 +7005,10 @@ ${reportName}
[CONST.SEARCH.GROUP_BY.FROM]: '差出人',
[CONST.SEARCH.GROUP_BY.CARD]: 'カード',
[CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'エクスポート',
- [CONST.SEARCH.GROUP_BY.CATEGORY]: 'カテゴリー',
+ [CONST.SEARCH.GROUP_BY.CATEGORY]: 'カテゴリ',
[CONST.SEARCH.GROUP_BY.MERCHANT]: '加盟店',
[CONST.SEARCH.GROUP_BY.TAG]: 'タグ',
- [CONST.SEARCH.GROUP_BY.MONTH]: '月',
+ [CONST.SEARCH.GROUP_BY.MONTH]: '月数',
[CONST.SEARCH.GROUP_BY.WEEK]: '週',
[CONST.SEARCH.GROUP_BY.YEAR]: '年',
[CONST.SEARCH.GROUP_BY.QUARTER]: '四半期',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 96dd172b..5fb23416 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -7044,13 +7044,13 @@ Vraag verplichte uitgavedetails zoals bonnetjes en beschrijvingen, stel limieten
allMatchingItemsSelected: 'Alle overeenkomende items geselecteerd',
},
topSpenders: 'Grootste uitgaven',
- view: {label: 'Bekijken', table: 'Tabel', bar: 'Bar'},
+ view: {label: 'Bekijken', table: 'Tabel', bar: 'Balk'},
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: 'Van',
[CONST.SEARCH.GROUP_BY.CARD]: 'Kaarten',
- [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exporten',
+ [CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: 'Exporten', //_/\__/_/ \_,_/\__/\__/\_,_/
[CONST.SEARCH.GROUP_BY.CATEGORY]: 'Categorieën',
- [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Handelaars',
+ [CONST.SEARCH.GROUP_BY.MERCHANT]: 'Winkels',
[CONST.SEARCH.GROUP_BY.TAG]: 'Tags',
[CONST.SEARCH.GROUP_BY.MONTH]: 'Maanden',
[CONST.SEARCH.GROUP_BY.WEEK]: 'Weken',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 1b0cbe9f..47dc5ec4 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -7033,7 +7033,7 @@ Exija detalhes de despesas como recibos e descrições, defina limites e padrõe
allMatchingItemsSelected: 'Todos os itens correspondentes selecionados',
},
topSpenders: 'Maiores gastadores',
- view: {label: 'Ver', table: 'Tabela', bar: 'Bar'},
+ view: {label: 'Visualizar', table: 'Tabela', bar: 'Barra'},
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: 'De',
[CONST.SEARCH.GROUP_BY.CARD]: 'Cartões',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 949cbc4e..d93e103b 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -6880,15 +6880,16 @@ ${reportName}
allMatchingItemsSelected: '已选择所有匹配的项目',
},
topSpenders: '最高支出者',
- view: {label: '查看', table: '表格', bar: '栏'},
+ view: {label: '查看', table: '表格', bar: '酒吧'},
chartTitles: {
[CONST.SEARCH.GROUP_BY.FROM]: '来自',
[CONST.SEARCH.GROUP_BY.CARD]: '卡片',
+ //_/\__/_/ \_,_/\__/\__/\_,_/
[CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID]: '导出',
[CONST.SEARCH.GROUP_BY.CATEGORY]: '类别',
[CONST.SEARCH.GROUP_BY.MERCHANT]: '商家',
[CONST.SEARCH.GROUP_BY.TAG]: '标签',
- [CONST.SEARCH.GROUP_BY.MONTH]: '月份',
+ [CONST.SEARCH.GROUP_BY.MONTH]: '月',
[CONST.SEARCH.GROUP_BY.WEEK]: '周',
[CONST.SEARCH.GROUP_BY.YEAR]: '年',
[CONST.SEARCH.GROUP_BY.QUARTER]: '季度',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
Hey, I noticed you changed some webpack configuration files. This can break production builds. Did you remember to run a production build locally to verify they still work? |
|
Merged #80534, taking us off hold. |
|
@codex review |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc5b69b168
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/neil-marcellini in version: 9.3.11-16 🚀
|
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.3.12-1 🚀
|
Explanation of Change
Add a selector for the "view" mode of search results when a group-by filter is set. Right now it only supports table and bar modes, and is on HOLD until we support rendering of bar charts.
Fixed Issues
$ #80640
PROPOSAL:
Tests
Basic test
view:barview:table2026-01-29_16-40-49.mp4
View only present with group by on filters page
2026-01-29_16-45-44.mp4
Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps./** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)Screenshots/Videos
See above, changes are platform independent.
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari