Skip to content

Commit 1712204

Browse files
authored
Merge pull request Expensify#81127 from shubham1206agra/groupBy-cleanup
Fixed required columns list + Fixed parser for default sortBy and column name parsing
2 parents 8372553 + acd75cb commit 1712204

7 files changed

Lines changed: 224 additions & 21 deletions

File tree

src/libs/SearchParser/autocompleteParser.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -559,10 +559,10 @@ function peg$parse(input, options) {
559559
var peg$f78 = function() { return "groupCategory"; };
560560
var peg$f79 = function() { return "groupTag"; };
561561
var peg$f80 = function() { return "groupMerchant"; };
562-
var peg$f81 = function() { return "groupMonth"; };
563-
var peg$f82 = function() { return "groupWeek"; };
564-
var peg$f83 = function() { return "groupYear"; };
565-
var peg$f84 = function() { return "groupQuarter"; };
562+
var peg$f81 = function() { return "groupmonth"; };
563+
var peg$f82 = function() { return "groupweek"; };
564+
var peg$f83 = function() { return "groupyear"; };
565+
var peg$f84 = function() { return "groupquarter"; };
566566
var peg$f85 = function() { return "eq"; };
567567
var peg$f86 = function() { return "neq"; };
568568
var peg$f87 = function() { return "gte"; };

src/libs/SearchParser/baseRules.peggy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,10 @@ groupWithdrawalId = "group-withdrawal-id"i &wordBoundary { return "gr
146146
groupCategory = "group-category"i &wordBoundary { return "groupCategory"; }
147147
groupTag = "group-tag"i &wordBoundary { return "groupTag"; }
148148
groupMerchant = "group-merchant"i &wordBoundary { return "groupMerchant"; }
149-
groupMonth = "group-month"i &wordBoundary { return "groupMonth"; }
150-
groupWeek = "group-week"i &wordBoundary { return "groupWeek"; }
151-
groupYear = "group-year"i &wordBoundary { return "groupYear"; }
152-
groupQuarter = "group-quarter"i &wordBoundary { return "groupQuarter"; }
149+
groupMonth = "group-month"i &wordBoundary { return "groupmonth"; }
150+
groupWeek = "group-week"i &wordBoundary { return "groupweek"; }
151+
groupYear = "group-year"i &wordBoundary { return "groupyear"; }
152+
groupQuarter = "group-quarter"i &wordBoundary { return "groupquarter"; }
153153

154154

155155
operator "operator"

src/libs/SearchParser/searchParser.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -586,10 +586,10 @@ function peg$parse(input, options) {
586586
var peg$f79 = function() { return "groupCategory"; };
587587
var peg$f80 = function() { return "groupTag"; };
588588
var peg$f81 = function() { return "groupMerchant"; };
589-
var peg$f82 = function() { return "groupMonth"; };
590-
var peg$f83 = function() { return "groupWeek"; };
591-
var peg$f84 = function() { return "groupYear"; };
592-
var peg$f85 = function() { return "groupQuarter"; };
589+
var peg$f82 = function() { return "groupmonth"; };
590+
var peg$f83 = function() { return "groupweek"; };
591+
var peg$f84 = function() { return "groupyear"; };
592+
var peg$f85 = function() { return "groupquarter"; };
593593
var peg$f86 = function() { return "eq"; };
594594
var peg$f87 = function() { return "neq"; };
595595
var peg$f88 = function() { return "gte"; };
@@ -4493,11 +4493,11 @@ function peg$parse(input, options) {
44934493

44944494

44954495
const GROUP_BY_DEFAULT_SORT = {
4496-
from: "from",
4497-
card: "card",
4498-
"withdrawal-id": "withdrawn",
4496+
from: "groupFrom",
4497+
card: "groupCard",
4498+
"withdrawal-id": "groupWithdrawn",
44994499
category: "groupCategory",
4500-
tag: "tag",
4500+
tag: "groupTag",
45014501
merchant: "groupMerchant",
45024502
month: "groupmonth",
45034503
week: "groupweek",

src/libs/SearchParser/searchParser.peggy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
// per-parser initializer (code executed before every parse)
3030
{
3131
const GROUP_BY_DEFAULT_SORT = {
32-
from: "from",
33-
card: "card",
34-
"withdrawal-id": "withdrawn",
32+
from: "groupFrom",
33+
card: "groupCard",
34+
"withdrawal-id": "groupWithdrawn",
3535
category: "groupCategory",
36-
tag: "tag",
36+
tag: "groupTag",
3737
merchant: "groupMerchant",
3838
month: "groupmonth",
3939
week: "groupweek",

src/pages/Search/SearchColumnsPage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ function SearchColumnsPage() {
6565
CONST.SEARCH.TABLE_COLUMNS.GROUP_MERCHANT,
6666
CONST.SEARCH.TABLE_COLUMNS.GROUP_TAG,
6767
CONST.SEARCH.TABLE_COLUMNS.GROUP_MONTH,
68+
CONST.SEARCH.TABLE_COLUMNS.GROUP_WEEK,
69+
CONST.SEARCH.TABLE_COLUMNS.GROUP_YEAR,
70+
CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER,
6871
]);
6972

7073
const sortColumns = (columnsToSort: ColumnItem[]): ColumnItem[] => {

src/styles/utils/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1769,6 +1769,7 @@ const createStyleUtils = (theme: ThemeColors, styles: ThemeStyles) => ({
17691769
case CONST.SEARCH.TABLE_COLUMNS.GROUP_YEAR:
17701770
case CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER:
17711771
case CONST.SEARCH.TABLE_COLUMNS.TAG:
1772+
case CONST.SEARCH.TABLE_COLUMNS.GROUP_TAG:
17721773
columnWidth = {...getWidthStyle(variables.w36), ...styles.flex1};
17731774
break;
17741775
case CONST.SEARCH.TABLE_COLUMNS.TAX_AMOUNT:

tests/unit/SearchParserTest.ts

Lines changed: 200 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,126 @@ const tests = [
544544
},
545545
},
546546
},
547+
{
548+
query: 'type:expense group-by:from',
549+
expected: {
550+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
551+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
552+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM,
553+
sortOrder: CONST.SEARCH.SORT_ORDER.ASC,
554+
view: 'table',
555+
groupBy: CONST.SEARCH.GROUP_BY.FROM,
556+
filters: null,
557+
},
558+
},
559+
{
560+
query: 'type:expense group-by:card',
561+
expected: {
562+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
563+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
564+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_CARD,
565+
sortOrder: CONST.SEARCH.SORT_ORDER.ASC,
566+
view: 'table',
567+
groupBy: CONST.SEARCH.GROUP_BY.CARD,
568+
filters: null,
569+
},
570+
},
571+
{
572+
query: 'type:expense group-by:withdrawal-id',
573+
expected: {
574+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
575+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
576+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWN,
577+
sortOrder: CONST.SEARCH.SORT_ORDER.DESC,
578+
view: 'table',
579+
groupBy: CONST.SEARCH.GROUP_BY.WITHDRAWAL_ID,
580+
filters: null,
581+
},
582+
},
583+
{
584+
query: 'type:expense group-by:category',
585+
expected: {
586+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
587+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
588+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_CATEGORY,
589+
sortOrder: CONST.SEARCH.SORT_ORDER.ASC,
590+
view: 'table',
591+
groupBy: CONST.SEARCH.GROUP_BY.CATEGORY,
592+
filters: null,
593+
},
594+
},
595+
{
596+
query: 'type:expense group-by:tag',
597+
expected: {
598+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
599+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
600+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_TAG,
601+
sortOrder: CONST.SEARCH.SORT_ORDER.ASC,
602+
view: 'table',
603+
groupBy: CONST.SEARCH.GROUP_BY.TAG,
604+
filters: null,
605+
},
606+
},
607+
{
608+
query: 'type:expense group-by:merchant',
609+
expected: {
610+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
611+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
612+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_MERCHANT,
613+
sortOrder: CONST.SEARCH.SORT_ORDER.ASC,
614+
view: 'table',
615+
groupBy: CONST.SEARCH.GROUP_BY.MERCHANT,
616+
filters: null,
617+
},
618+
},
619+
{
620+
query: 'type:expense group-by:month',
621+
expected: {
622+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
623+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
624+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_MONTH,
625+
sortOrder: CONST.SEARCH.SORT_ORDER.DESC,
626+
view: 'table',
627+
groupBy: CONST.SEARCH.GROUP_BY.MONTH,
628+
filters: null,
629+
},
630+
},
631+
{
632+
query: 'type:expense group-by:week',
633+
expected: {
634+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
635+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
636+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_WEEK,
637+
sortOrder: CONST.SEARCH.SORT_ORDER.DESC,
638+
view: 'table',
639+
groupBy: CONST.SEARCH.GROUP_BY.WEEK,
640+
filters: null,
641+
},
642+
},
643+
{
644+
query: 'type:expense group-by:year',
645+
expected: {
646+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
647+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
648+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_YEAR,
649+
sortOrder: CONST.SEARCH.SORT_ORDER.DESC,
650+
view: 'table',
651+
groupBy: CONST.SEARCH.GROUP_BY.YEAR,
652+
filters: null,
653+
},
654+
},
655+
{
656+
query: 'type:expense group-by:quarter',
657+
expected: {
658+
type: CONST.SEARCH.DATA_TYPES.EXPENSE,
659+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
660+
sortBy: CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER,
661+
sortOrder: CONST.SEARCH.SORT_ORDER.DESC,
662+
view: 'table',
663+
groupBy: CONST.SEARCH.GROUP_BY.QUARTER,
664+
filters: null,
665+
},
666+
},
547667
{
548668
query: 'type:chat is:read',
549669
expected: {
@@ -815,6 +935,44 @@ const keywordTests = [
815935
},
816936
},
817937
},
938+
{
939+
query: 'columns:per-diem,drafts,draft,tax-rate,policy-name,withdrawal-id,bank-account',
940+
expected: {
941+
type: 'expense',
942+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
943+
sortBy: 'date',
944+
sortOrder: 'desc',
945+
view: 'table',
946+
columns: [
947+
'perDiem',
948+
'drafts',
949+
'drafts',
950+
CONST.SEARCH.TABLE_COLUMNS.TAX_RATE,
951+
CONST.SEARCH.TABLE_COLUMNS.POLICY_NAME,
952+
CONST.SEARCH.TABLE_COLUMNS.WITHDRAWAL_ID,
953+
CONST.SEARCH.TABLE_COLUMNS.BANK_ACCOUNT,
954+
],
955+
filters: null,
956+
},
957+
},
958+
{
959+
query: 'columns:long-report-id,exported-to,exchange-rate,reimbursable-total,non-reimbursable-total',
960+
expected: {
961+
type: 'expense',
962+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
963+
sortBy: 'date',
964+
sortOrder: 'desc',
965+
view: 'table',
966+
columns: [
967+
CONST.SEARCH.TABLE_COLUMNS.REPORT_ID,
968+
CONST.SEARCH.TABLE_COLUMNS.EXPORTED_TO,
969+
CONST.SEARCH.TABLE_COLUMNS.EXCHANGE_RATE,
970+
CONST.SEARCH.TABLE_COLUMNS.REIMBURSABLE_TOTAL,
971+
CONST.SEARCH.TABLE_COLUMNS.NON_REIMBURSABLE_TOTAL,
972+
],
973+
filters: null,
974+
},
975+
},
818976
{
819977
query: 'columns:original-amount,tax,report-id',
820978
expected: {
@@ -823,7 +981,48 @@ const keywordTests = [
823981
sortBy: 'date',
824982
sortOrder: 'desc',
825983
view: 'table',
826-
columns: ['originalamount', 'taxAmount', 'base62ReportID'],
984+
columns: [CONST.SEARCH.TABLE_COLUMNS.ORIGINAL_AMOUNT, CONST.SEARCH.TABLE_COLUMNS.TAX_AMOUNT, CONST.SEARCH.TABLE_COLUMNS.BASE_62_REPORT_ID],
985+
filters: null,
986+
},
987+
},
988+
{
989+
query: 'columns:group-from,group-expenses,group-total,group-card,group-feed,group-bank-account,group-withdrawn,group-withdrawal-id',
990+
expected: {
991+
type: 'expense',
992+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
993+
sortBy: 'date',
994+
sortOrder: 'desc',
995+
view: 'table',
996+
columns: [
997+
CONST.SEARCH.TABLE_COLUMNS.GROUP_FROM,
998+
CONST.SEARCH.TABLE_COLUMNS.GROUP_EXPENSES,
999+
CONST.SEARCH.TABLE_COLUMNS.GROUP_TOTAL,
1000+
CONST.SEARCH.TABLE_COLUMNS.GROUP_CARD,
1001+
CONST.SEARCH.TABLE_COLUMNS.GROUP_FEED,
1002+
CONST.SEARCH.TABLE_COLUMNS.GROUP_BANK_ACCOUNT,
1003+
CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWN,
1004+
CONST.SEARCH.TABLE_COLUMNS.GROUP_WITHDRAWAL_ID,
1005+
],
1006+
filters: null,
1007+
},
1008+
},
1009+
{
1010+
query: 'columns:group-category,group-tag,group-merchant,group-month,group-week,group-year,group-quarter',
1011+
expected: {
1012+
type: 'expense',
1013+
status: CONST.SEARCH.STATUS.EXPENSE.ALL,
1014+
sortBy: 'date',
1015+
sortOrder: 'desc',
1016+
view: 'table',
1017+
columns: [
1018+
CONST.SEARCH.TABLE_COLUMNS.GROUP_CATEGORY,
1019+
CONST.SEARCH.TABLE_COLUMNS.GROUP_TAG,
1020+
CONST.SEARCH.TABLE_COLUMNS.GROUP_MERCHANT,
1021+
CONST.SEARCH.TABLE_COLUMNS.GROUP_MONTH,
1022+
CONST.SEARCH.TABLE_COLUMNS.GROUP_WEEK,
1023+
CONST.SEARCH.TABLE_COLUMNS.GROUP_YEAR,
1024+
CONST.SEARCH.TABLE_COLUMNS.GROUP_QUARTER,
1025+
],
8271026
filters: null,
8281027
},
8291028
},

0 commit comments

Comments
 (0)