diff --git a/Signum.React/Scripts/Finder.tsx b/Signum.React/Scripts/Finder.tsx index c05884afff..4c94297746 100644 --- a/Signum.React/Scripts/Finder.tsx +++ b/Signum.React/Scripts/Finder.tsx @@ -1283,7 +1283,7 @@ export interface QuerySettings { entityFormatter?: EntityFormatter; getViewPromise?: (e: ModifiableEntity | null) => (undefined | string | Navigator.ViewPromise); onDoubleClick?: (e: React.MouseEvent, row: ResultRow) => void; - simpleFilterBuilder?: (qd: QueryDescription, initialFilterOptions: FilterOptionParsed[]) => React.ReactElement | undefined; + simpleFilterBuilder?: (qd: QueryDescription, initialFilterOptions: FilterOptionParsed[], refresh: () => void) => React.ReactElement | undefined; onFind?: (fo: FindOptions, mo?: ModalFindOptions) => Promise | undefined>; onFindMany?: (fo: FindOptions, mo?: ModalFindOptions) => Promise[] | undefined>; onExplore?: (fo: FindOptions, mo?: ModalFindOptions) => Promise; diff --git a/Signum.React/Scripts/Search.tsx b/Signum.React/Scripts/Search.tsx index 15b672dda1..8f1ffdd03b 100644 --- a/Signum.React/Scripts/Search.tsx +++ b/Signum.React/Scripts/Search.tsx @@ -1,4 +1,4 @@ -import { FindOptions, ColumnOption, ColumnOptionsMode, FilterOption, FilterOperation, FilterOptionParsed, FindOptionsParsed, OrderOption, OrderType, Pagination, PaginationMode, ResultTable, isFilterGroupOption, isFilterGroupOptionParsed, FilterConditionOptionParsed } from './FindOptions' +import { FindOptions, ColumnOption, ColumnOptionsMode, FilterOption, FilterOperation, FilterOptionParsed, FindOptionsParsed, OrderOption, OrderType, Pagination, PaginationMode, ResultTable, isFilterGroupOption, isFilterGroupOptionParsed, FilterConditionOptionParsed } from './FindOptions' export { FindOptions, ColumnOption, ColumnOptionsMode, FilterOption, FilterOperation, FilterOptionParsed, FindOptionsParsed, OrderOption, OrderType, Pagination, PaginationMode, ResultTable }; import EntityLink, { EntityLinkProps } from './SearchControl/EntityLink' @@ -14,13 +14,22 @@ import ValueSearchControl, { ValueSearchControlProps } from './SearchControl/Val export { ValueSearchControl, ValueSearchControlProps }; import ValueSearchControlLine, { ValueSearchControlLineProps } from './SearchControl/ValueSearchControlLine' +import { QueryTokenString } from './Reflection'; export { ValueSearchControlLine, ValueSearchControlLineProps }; -export function extractFilterValue(filters: FilterOptionParsed[], token: string, operation: FilterOperation): any { - var f = filters.filter(f => !isFilterGroupOptionParsed(f) && f.token!.fullKey == token && f.operation == operation).firstOrNull() as FilterConditionOptionParsed | undefined; - if (!f) +export function extractFilterValue(filters: FilterOptionParsed[], token: string | QueryTokenString, operation: FilterOperation): any { + + var f = extractFilter(filters, token, operation); + + return f && f.value; +} + +export function extractFilter(filters: FilterOptionParsed[], token: string | QueryTokenString, operation: FilterOperation): FilterOptionParsed | null { + var f = filters.filter(f => !isFilterGroupOptionParsed(f) && f.token!.fullKey == token.toString() && f.operation == operation).firstOrNull() as FilterConditionOptionParsed | undefined; + if (!f) { return null; + } filters.remove(f); - return f.value; + return f; } diff --git a/Signum.React/Scripts/SearchControl/SearchControlLoaded.tsx b/Signum.React/Scripts/SearchControl/SearchControlLoaded.tsx index 186df070fe..183840a9fa 100644 --- a/Signum.React/Scripts/SearchControl/SearchControlLoaded.tsx +++ b/Signum.React/Scripts/SearchControl/SearchControlLoaded.tsx @@ -71,7 +71,7 @@ export interface SearchControlLoadedProps { avoidChangeUrl: boolean; refreshKey: string | number | undefined; - simpleFilterBuilder?: (qd: QueryDescription, initialFilterOptions: FilterOptionParsed[]) => React.ReactElement | undefined; + simpleFilterBuilder?: (qd: QueryDescription, initialFilterOptions: FilterOptionParsed[], search: () => void) => React.ReactElement | undefined; onCreate?: () => void; onDoubleClick?: (e: React.MouseEvent, row: ResultRow) => void; onNavigated?: (lite: Lite) => void; @@ -124,8 +124,8 @@ export default class SearchControlLoaded extends React.Component this.doSearchPage1()) : + qs && qs.simpleFilterBuilder ? qs.simpleFilterBuilder(qd, fo.filterOptions, () => this.doSearchPage1()) : undefined; if (sfb) {