From 284dee046070241e7f68606eea5ef3400a1c6cdf Mon Sep 17 00:00:00 2001 From: Andrey Goncharov Date: Thu, 9 Nov 2023 05:08:16 -0800 Subject: [PATCH] Extend default list of operators for unconfigured columns Summary: It does not make too much sense to keep the unknown value conversion behind a flag. It is relatively cheap. Let's do it for all strings. Also, let's extend the list of default string operators Reviewed By: lblasa Differential Revision: D51115573 fbshipit-source-id: a62c08a90d8ddf6f23f59412c3fd981e19225e47 --- .../src/ui/PowerSearch/PowerSearchConfig.tsx | 1 - .../DataTableDefaultPowerSearchOperators.tsx | 58 ++++++------------- .../data-table/DataTableWithPowerSearch.tsx | 10 ++-- 3 files changed, 25 insertions(+), 44 deletions(-) diff --git a/desktop/flipper-plugin/src/ui/PowerSearch/PowerSearchConfig.tsx b/desktop/flipper-plugin/src/ui/PowerSearch/PowerSearchConfig.tsx index b262ca63f..67a65ca0a 100644 --- a/desktop/flipper-plugin/src/ui/PowerSearch/PowerSearchConfig.tsx +++ b/desktop/flipper-plugin/src/ui/PowerSearch/PowerSearchConfig.tsx @@ -33,7 +33,6 @@ export type StringOperatorConfig = { valueType: StringFilterValueType; key: string; label: string; - handleUnknownValues?: boolean; }; export type StringSetOperatorConfig = { diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx index 3641c88b6..82384ad18 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx @@ -8,12 +8,8 @@ */ import dayjs from 'dayjs'; -import {getFlipperLib} from 'flipper-plugin-core'; import {OperatorConfig} from '../PowerSearch'; -import { - FloatOperatorConfig, - StringOperatorConfig, -} from '../PowerSearch/PowerSearchConfig'; +import {FloatOperatorConfig} from '../PowerSearch/PowerSearchConfig'; export type PowerSearchOperatorProcessor = ( powerSearchOperatorConfig: OperatorConfig, @@ -22,29 +18,25 @@ export type PowerSearchOperatorProcessor = ( ) => boolean; export const dataTablePowerSearchOperators = { - string_contains: (handleUnknownValues?: boolean) => ({ + string_contains: () => ({ label: 'contains', key: 'string_contains', valueType: 'STRING', - handleUnknownValues, }), - string_not_contains: (handleUnknownValues?: boolean) => ({ + string_not_contains: () => ({ label: 'does not contain', key: 'string_not_contains', valueType: 'STRING', - handleUnknownValues, }), - string_matches_exactly: (handleUnknownValues?: boolean) => ({ + string_matches_exactly: () => ({ label: 'is', key: 'string_matches_exactly', valueType: 'STRING', - handleUnknownValues, }), - string_not_matches_exactly: (handleUnknownValues?: boolean) => ({ + string_not_matches_exactly: () => ({ label: 'is not', key: 'string_not_matches_exactly', valueType: 'STRING', - handleUnknownValues, }), searializable_object_contains: () => ({ label: 'contains', @@ -223,22 +215,12 @@ const tryConvertingUnknownToString = (value: unknown): string | null => { }; export const dataTablePowerSearchOperatorProcessorConfig = { - string_contains: (operator, searchValue: string, value: string) => - !!( - (operator as StringOperatorConfig).handleUnknownValues && - getFlipperLib().GK('flipper_power_search_auto_json_stringify') - ? tryConvertingUnknownToString(value) - : value - ) + string_contains: (_operator, searchValue: string, value: string) => + !!tryConvertingUnknownToString(value) ?.toLowerCase() .includes(searchValue.toLowerCase()), - string_not_contains: (operator, searchValue: string, value: string) => - !( - (operator as StringOperatorConfig).handleUnknownValues && - getFlipperLib().GK('flipper_power_search_auto_json_stringify') - ? tryConvertingUnknownToString(value) - : value - ) + string_not_contains: (_operator, searchValue: string, value: string) => + !tryConvertingUnknownToString(value) ?.toLowerCase() .includes(searchValue.toLowerCase()), searializable_object_contains: ( @@ -251,16 +233,10 @@ export const dataTablePowerSearchOperatorProcessorConfig = { searchValue: string, value: object, ) => !JSON.stringify(value).toLowerCase().includes(searchValue.toLowerCase()), - string_matches_exactly: (operator, searchValue: string, value: string) => - ((operator as StringOperatorConfig).handleUnknownValues && - getFlipperLib().GK('flipper_power_search_auto_json_stringify') - ? tryConvertingUnknownToString(value) - : value) === searchValue, - string_not_matches_exactly: (operator, searchValue: string, value: string) => - ((operator as StringOperatorConfig).handleUnknownValues && - getFlipperLib().GK('flipper_power_search_auto_json_stringify') - ? tryConvertingUnknownToString(value) - : value) !== searchValue, + string_matches_exactly: (_operator, searchValue: string, value: string) => + tryConvertingUnknownToString(value) === searchValue, + string_not_matches_exactly: (_operator, searchValue: string, value: string) => + tryConvertingUnknownToString(value) !== searchValue, // See PowerSearchStringSetTerm string_set_contains_any_of: ( _operator, @@ -268,7 +244,9 @@ export const dataTablePowerSearchOperatorProcessorConfig = { value: string, ) => searchValue.some((item) => - value.toLowerCase().includes(item.toLowerCase()), + tryConvertingUnknownToString(value) + ?.toLowerCase() + .includes(item.toLowerCase()), ), string_set_contains_none_of: ( _operator, @@ -276,7 +254,9 @@ export const dataTablePowerSearchOperatorProcessorConfig = { value: string, ) => !searchValue.some((item) => - value.toLowerCase().includes(item.toLowerCase()), + tryConvertingUnknownToString(value) + ?.toLowerCase() + .includes(item.toLowerCase()), ), int_equals: (_operator, searchValue: number, value: number) => value === searchValue, diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx index d3f6beb5e..6082a1f14 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx @@ -361,10 +361,12 @@ export function DataTable( // If no power search config provided we treat every input as a string if (!column.powerSearchConfig) { columnPowerSearchOperators = [ - dataTablePowerSearchOperators.string_contains(true), - dataTablePowerSearchOperators.string_not_contains(true), - dataTablePowerSearchOperators.string_matches_exactly(true), - dataTablePowerSearchOperators.string_not_matches_exactly(true), + dataTablePowerSearchOperators.string_contains(), + dataTablePowerSearchOperators.string_not_contains(), + dataTablePowerSearchOperators.string_matches_exactly(), + dataTablePowerSearchOperators.string_not_matches_exactly(), + dataTablePowerSearchOperators.string_set_contains_any_of(), + dataTablePowerSearchOperators.string_set_contains_none_of(), ]; } else if (Array.isArray(column.powerSearchConfig)) { columnPowerSearchOperators = column.powerSearchConfig;