Skip to content

Commit cdd3880

Browse files
DOMA-2807 added search by properties in hints table page
1 parent b056147 commit cdd3880

File tree

2 files changed

+46
-8
lines changed

2 files changed

+46
-8
lines changed

apps/condo/domains/ticket/components/TicketPropertyHint/SettingsContent.tsx

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ import { getPageIndexFromOffset, getTableScrollConfig, parseQuery } from '@condo
1919
import ActionBar from '@condo/domains/common/components/ActionBar'
2020
import { Button } from '@condo/domains/common/components/Button'
2121
import { useQueryMappers } from '@condo/domains/common/hooks/useQueryMappers'
22-
import { useTicketPropertyHintTableFilters } from '@condo/domains/ticket/hooks/useTicketPropertyHintTableFilters'
22+
import {
23+
useTicketPropertyHintPropertyFilters,
24+
useTicketPropertyHintTableFilters,
25+
} from '@condo/domains/ticket/hooks/useTicketPropertyHintTableFilters'
2326
import { useTicketPropertyHintTableColumns } from '@condo/domains/ticket/hooks/useTicketPropertyHintTableColumns'
24-
import { TicketPropertyHint } from '@condo/domains/ticket/utils/clientSchema'
27+
import { TicketPropertyHint, TicketPropertyHintProperty } from '@condo/domains/ticket/utils/clientSchema'
2528
import { IFilters } from '@condo/domains/ticket/utils/helpers'
2629

2730
const SORTABLE_PROPERTIES = ['name']
@@ -51,13 +54,34 @@ export const SettingsContent = () => {
5154
const router = useRouter()
5255
const { filters, sorters, offset } = parseQuery(router.query)
5356

54-
const filtersMeta = useTicketPropertyHintTableFilters()
57+
const currentPageIndex = getPageIndexFromOffset(offset, DEFAULT_PAGE_SIZE)
58+
59+
const ticketPropertyHintPropertyFiltersMeta = useTicketPropertyHintPropertyFilters()
60+
const {
61+
filtersToWhere: filtersTicketPropertyHintPropertyToWhere,
62+
} = useQueryMappers(ticketPropertyHintPropertyFiltersMeta, SORTABLE_PROPERTIES)
63+
const searchTicketPropertyHintPropertiesQuery = { ...filtersTicketPropertyHintPropertyToWhere(filters), organization: { id: userOrganizationId } }
64+
65+
const { objs: ticketPropertyHintProperties } = TicketPropertyHintProperty.useObjects({
66+
where: searchTicketPropertyHintPropertiesQuery,
67+
})
5568

69+
const hintIds = useMemo(() => ticketPropertyHintProperties.map(obj => obj.ticketPropertyHint.id),
70+
[ticketPropertyHintProperties])
71+
72+
const filtersMeta = useTicketPropertyHintTableFilters()
5673
const { filtersToWhere, sortersToSortBy } = useQueryMappers(filtersMeta, SORTABLE_PROPERTIES)
57-
const searchTicketPropertyHintsQuery = { ...filtersToWhere(filters), organization: { id: userOrganizationId } }
58-
const currentPageIndex = getPageIndexFromOffset(offset, DEFAULT_PAGE_SIZE)
5974
const sortBy = sortersToSortBy(sorters, TICKET_HINTS_DEFAULT_SORT_BY) as SortTicketPropertyHintsBy[]
6075

76+
const searchTicketPropertyHintsQuery = {
77+
OR: [
78+
{
79+
id_in: hintIds,
80+
...filtersToWhere(filters),
81+
},
82+
],
83+
organization: { id: userOrganizationId },
84+
}
6185
const {
6286
loading: isTicketPropertyHintsFetching,
6387
count: total,
@@ -67,8 +91,6 @@ export const SettingsContent = () => {
6791
where: searchTicketPropertyHintsQuery,
6892
first: DEFAULT_PAGE_SIZE,
6993
skip: (currentPageIndex - 1) * DEFAULT_PAGE_SIZE,
70-
}, {
71-
fetchPolicy: 'network-only',
7294
})
7395

7496
const tableColumns = useTicketPropertyHintTableColumns(filtersMeta, ticketPropertyHints)

apps/condo/domains/ticket/hooks/useTicketPropertyHintTableFilters.tsx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,26 @@
11
import { useMemo } from 'react'
22

3-
import { TicketPropertyHintWhereInput } from '@app/condo/schema'
3+
import { TicketPropertyHintPropertyWhereInput, TicketPropertyHintWhereInput } from '@app/condo/schema'
44

55
import { getStringContainsFilter } from '@condo/domains/common/utils/tables.utils'
66
import { FiltersMeta } from '@condo/domains/common/utils/filters.utils'
77

8+
const filterAddress = getStringContainsFilter(['property', 'address'])
9+
10+
export const useTicketPropertyHintPropertyFilters = (): Array<FiltersMeta<TicketPropertyHintPropertyWhereInput>> => {
11+
return useMemo(() => {
12+
return [
13+
{
14+
keyword: 'search',
15+
filters: [
16+
filterAddress,
17+
],
18+
combineType: 'OR',
19+
},
20+
]
21+
}, [])
22+
}
23+
824
const filterName = getStringContainsFilter('name')
925

1026
export const useTicketPropertyHintTableFilters = (): Array<FiltersMeta<TicketPropertyHintWhereInput>> => {

0 commit comments

Comments
 (0)