From 7769d0303e1fc5bbf74716e02e16f6a1a292e64b Mon Sep 17 00:00:00 2001 From: lelemm <lelemm@gmail.com> Date: Fri, 23 Aug 2024 12:21:09 -0300 Subject: [PATCH] "has tags" filter (#3290) * new tag filter * fixes * release notes * fixes for the rules modal * more fixes * linter * visual regression fixes * review suggestions * missing this change --- ...nsactions-by-category-1-chromium-linux.png | Bin 10416 -> 11409 bytes ...nsactions-by-category-2-chromium-linux.png | Bin 10545 -> 11493 bytes ...nsactions-by-category-3-chromium-linux.png | Bin 10516 -> 11495 bytes .../components/filters/FilterExpression.tsx | 3 +- .../src/components/filters/FiltersMenu.jsx | 5 +- .../components/filters/updateFilterReducer.ts | 3 +- .../src/components/modals/EditRule.jsx | 2 +- .../reports/reports/CustomReport.tsx | 2 +- .../transactions/TransactionList.jsx | 6 +-- .../loot-core/src/server/accounts/rules.ts | 48 ++++++++++++++++++ .../src/server/accounts/transaction-rules.ts | 13 +++++ packages/loot-core/src/shared/rules.ts | 18 ++++++- packages/loot-core/src/types/models/rule.d.ts | 2 + upcoming-release-notes/3290.md | 6 +++ 14 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 upcoming-release-notes/3290.md diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-1-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-1-chromium-linux.png index 4a682c1f0ed07e7f0cd771fe8e89e1439e202cdb..a099f6a117abe1106202058efae675b955f3c28b 100644 GIT binary patch literal 11409 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 T$^hMCjG?NesaUP>_QU@J3#QRm literal 10416 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 diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-2-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-2-chromium-linux.png index f98e9d0f63e8864efa00d4a9be038a01762b653e..1b27a5bcb6320ca94a324961eb2c7391da039ef6 100644 GIT binary patch literal 11493 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 GKmRx39Pg?C literal 10545 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 diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-3-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-3-chromium-linux.png index 6e51c3f9faf7d2549527b57d34884efbe9408d28..8fc889f31be72822c673d068bd2dd2d688a0af6f 100644 GIT binary patch literal 11495 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 literal 10516 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 diff --git a/packages/desktop-client/src/components/filters/FilterExpression.tsx b/packages/desktop-client/src/components/filters/FilterExpression.tsx index d649fd09c..34df7694a 100644 --- a/packages/desktop-client/src/components/filters/FilterExpression.tsx +++ b/packages/desktop-client/src/components/filters/FilterExpression.tsx @@ -79,7 +79,8 @@ export function FilterExpression<T extends RuleConditionEntity>({ valueIsRaw={ op === 'contains' || op === 'matches' || - op === 'doesNotContain' + op === 'doesNotContain' || + op === 'hasTags' } /> </> diff --git a/packages/desktop-client/src/components/filters/FiltersMenu.jsx b/packages/desktop-client/src/components/filters/FiltersMenu.jsx index 61720dff6..8baacffe9 100644 --- a/packages/desktop-client/src/components/filters/FiltersMenu.jsx +++ b/packages/desktop-client/src/components/filters/FiltersMenu.jsx @@ -201,7 +201,10 @@ function ConfigureField({ subfield={subfield} type={ type === 'id' && - (op === 'contains' || op === 'matches' || op === 'doesNotContain') + (op === 'contains' || + op === 'matches' || + op === 'doesNotContain' || + op === 'hasTags') ? 'string' : type } diff --git a/packages/desktop-client/src/components/filters/updateFilterReducer.ts b/packages/desktop-client/src/components/filters/updateFilterReducer.ts index 5cb372736..4f6286f83 100644 --- a/packages/desktop-client/src/components/filters/updateFilterReducer.ts +++ b/packages/desktop-client/src/components/filters/updateFilterReducer.ts @@ -18,7 +18,8 @@ export function updateFilterReducer( action.op === 'matches' || action.op === 'is' || action.op === 'doesNotContain' || - action.op === 'isNot') + action.op === 'isNot' || + action.op === 'hasTags') ) { // Clear out the value if switching between contains or // is/oneof for the id or string type diff --git a/packages/desktop-client/src/components/modals/EditRule.jsx b/packages/desktop-client/src/components/modals/EditRule.jsx index b896846fc..c36e331dc 100644 --- a/packages/desktop-client/src/components/modals/EditRule.jsx +++ b/packages/desktop-client/src/components/modals/EditRule.jsx @@ -116,7 +116,7 @@ export function OpSelect({ // TODO: Add matches op support for payees, accounts, categories. .filter(op => type === 'id' - ? !['contains', 'matches', 'doesNotContain'].includes(op) + ? !['contains', 'matches', 'doesNotContain', 'hasTags'].includes(op) : true, ) .map(op => [op, formatOp(op, type)]); diff --git a/packages/desktop-client/src/components/reports/reports/CustomReport.tsx b/packages/desktop-client/src/components/reports/reports/CustomReport.tsx index c0ed86303..df09f6eed 100644 --- a/packages/desktop-client/src/components/reports/reports/CustomReport.tsx +++ b/packages/desktop-client/src/components/reports/reports/CustomReport.tsx @@ -155,7 +155,7 @@ export function CustomReport() { !!conditions.find( ({ field, op }) => field === 'category' && - ['contains', 'doesNotContain', 'matches'].includes(op), + ['contains', 'doesNotContain', 'matches', 'hasTags'].includes(op), ) || conditions.filter(({ field }) => field === 'category').length >= 2; const setSelectedCategories = (newCategories: CategoryEntity[]) => { diff --git a/packages/desktop-client/src/components/transactions/TransactionList.jsx b/packages/desktop-client/src/components/transactions/TransactionList.jsx index 9b3eb7895..14fee62c9 100644 --- a/packages/desktop-client/src/components/transactions/TransactionList.jsx +++ b/packages/desktop-client/src/components/transactions/TransactionList.jsx @@ -1,8 +1,6 @@ import React, { useRef, useCallback, useLayoutEffect } from 'react'; import { useDispatch } from 'react-redux'; -import escapeRegExp from 'lodash/escapeRegExp'; - import { pushModal } from 'loot-core/client/actions'; import { send } from 'loot-core/src/platform/client/fetch'; import { @@ -191,8 +189,8 @@ export function TransactionList({ const onNotesTagClick = useCallback(tag => { onApplyFilter({ field: 'notes', - op: 'matches', - value: `(^|\\s|\\w)${escapeRegExp(tag)}($|\\s|#)`, + op: 'hasTags', + value: tag, type: 'string', }); }); diff --git a/packages/loot-core/src/server/accounts/rules.ts b/packages/loot-core/src/server/accounts/rules.ts index 467dc7bc8..e97fa8ef2 100644 --- a/packages/loot-core/src/server/accounts/rules.ts +++ b/packages/loot-core/src/server/accounts/rules.ts @@ -147,6 +147,46 @@ const CONDITION_TYPES = { }, }, string: { + ops: [ + 'is', + 'contains', + 'matches', + 'oneOf', + 'isNot', + 'doesNotContain', + 'notOneOf', + 'hasTags', + ], + nullable: true, + parse(op, value, fieldName) { + if (op === 'oneOf' || op === 'notOneOf') { + assert( + Array.isArray(value), + 'no-empty-array', + `oneOf must have an array value (field: ${fieldName}): ${JSON.stringify( + value, + )}`, + ); + return value.filter(Boolean).map(val => val.toLowerCase()); + } + + if ( + op === 'contains' || + op === 'matches' || + op === 'doesNotContain' || + op === 'hasTags' + ) { + assert( + typeof value === 'string' && value.length > 0, + 'no-empty-string', + `contains must have non-empty string (field: ${fieldName})`, + ); + } + + return value.toLowerCase(); + }, + }, + imported_payee: { ops: [ 'is', 'contains', @@ -379,6 +419,13 @@ export class Condition { return false; } return this.value.indexOf(fieldValue) !== -1; + + case 'hasTags': + if (fieldValue === null) { + return false; + } + return fieldValue.indexOf(this.value) !== -1; + case 'notOneOf': if (fieldValue === null) { return false; @@ -863,6 +910,7 @@ const OP_SCORES: Record<RuleConditionEntity['op'], number> = { contains: 0, doesNotContain: 0, matches: 0, + hasTags: 0, }; function computeScore(rule) { diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index 66024acf8..e22697ea4 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -472,6 +472,19 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return { id: null }; } return { $or: values.map(v => apply(field, '$eq', v)) }; + + case 'hasTags': + const tagValues = value + .split(/(?<!#)(#[\w\d\p{Emoji}-]+)(?=\s|$)/gu) + .filter(tag => tag.startsWith('#')); + + return { + $and: tagValues.map(v => { + const regex = new RegExp(`(^|\\s)${v}(\\s|$)`); + return apply(field, '$regexp', regex.source); + }), + }; + case 'notOneOf': const notValues = value; if (notValues.length === 0) { diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index b920d1b0c..76eaa2926 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -17,6 +17,7 @@ export const TYPE_INFO = { 'isNot', 'doesNotContain', 'notOneOf', + 'hasTags', ], nullable: true, }, @@ -25,6 +26,19 @@ export const TYPE_INFO = { nullable: false, }, string: { + ops: [ + 'is', + 'contains', + 'matches', + 'oneOf', + 'isNot', + 'doesNotContain', + 'notOneOf', + 'hasTags', + ], + nullable: true, + }, + imported_payee: { ops: [ 'is', 'contains', @@ -48,7 +62,7 @@ export const TYPE_INFO = { export const FIELD_TYPES = new Map( Object.entries({ - imported_payee: 'string', + imported_payee: 'imported_payee', payee: 'id', date: 'date', notes: 'string', @@ -107,6 +121,8 @@ export function friendlyOp(op, type?) { return 'is between'; case 'contains': return 'contains'; + case 'hasTags': + return 'has tag(s)'; case 'matches': return 'matches'; case 'doesNotContain': diff --git a/packages/loot-core/src/types/models/rule.d.ts b/packages/loot-core/src/types/models/rule.d.ts index 3c61ebf70..bacb94ca5 100644 --- a/packages/loot-core/src/types/models/rule.d.ts +++ b/packages/loot-core/src/types/models/rule.d.ts @@ -25,6 +25,7 @@ export type RuleConditionOp = | 'lte' | 'contains' | 'doesNotContain' + | 'hasTags' | 'matches'; type FieldValueTypes = { @@ -96,6 +97,7 @@ export type RuleConditionEntity = | 'contains' | 'doesNotContain' | 'matches' + | 'hasTags' > | BaseConditionEntity< 'payee', diff --git a/upcoming-release-notes/3290.md b/upcoming-release-notes/3290.md new file mode 100644 index 000000000..5cbcce408 --- /dev/null +++ b/upcoming-release-notes/3290.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [lelemm] +--- + +Add new 'has tag(s)' filter to filter note tags. -- GitLab