Skip to content

Commit a5fe201

Browse files
authored
[Redirects] improve options loading (#3472)
* improve options loading * Automatic frontend build
1 parent 63ee494 commit a5fe201

753 files changed

Lines changed: 1182 additions & 1147 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/**
2+
* This source file is available under the terms of the
3+
* Pimcore Open Core License (POCL)
4+
* Full copyright and license information is available in
5+
* LICENSE.md which is distributed with this source code.
6+
*
7+
* @copyright Copyright (c) Pimcore GmbH (https://www.pimcore.com)
8+
* @license Pimcore Open Core License (POCL)
9+
*/
10+
11+
import { useTranslation } from 'react-i18next'
12+
import {
13+
useBundleSeoRedirectListTypesQuery,
14+
useBundleSeoRedirectListStatusesQuery,
15+
useBundleSeoRedirectListPrioritiesQuery
16+
} from '../seo-api-slice-enhanced'
17+
import { type SelectOptionType } from '@Pimcore/modules/element/dynamic-types/definitions/grid-cell/utils/select-options'
18+
19+
interface OptionsHookResult {
20+
isLoading: boolean
21+
options: SelectOptionType[]
22+
}
23+
24+
export const useRedirectTypeOptions = (): OptionsHookResult => {
25+
const { t } = useTranslation()
26+
const { data, isLoading } = useBundleSeoRedirectListTypesQuery()
27+
28+
return {
29+
isLoading,
30+
options: data?.types?.map(type => ({ label: t(type), value: type })) ?? []
31+
}
32+
}
33+
34+
export const useRedirectStatusOptions = (): OptionsHookResult => {
35+
const { data, isLoading } = useBundleSeoRedirectListStatusesQuery()
36+
37+
return {
38+
isLoading,
39+
options: data?.statuses?.map(status => ({
40+
label: `${status.code} - ${status.label}`,
41+
value: status.code
42+
})) ?? []
43+
}
44+
}
45+
46+
export const useRedirectPriorityOptions = (): OptionsHookResult => {
47+
const { data, isLoading } = useBundleSeoRedirectListPrioritiesQuery()
48+
49+
return {
50+
isLoading,
51+
options: data?.priorities?.map(priority => ({
52+
label: priority.toString(),
53+
value: priority
54+
})) ?? []
55+
}
56+
}

assets/js/src/core/modules/redirects/redirects-container.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ import { ContentLayout } from '@Pimcore/components/content-layout/content-layout
1313
import { Content } from '@Pimcore/components/content/content'
1414
import { Table } from './table/table'
1515
import { Box } from '@sdk/components'
16-
import { api, useBundleSeoRedirectsGetCollectionQuery } from './seo-api-slice-enhanced'
16+
import {
17+
api,
18+
useBundleSeoRedirectsGetCollectionQuery
19+
} from './seo-api-slice-enhanced'
1720
import trackError, { ApiError } from '../app/error-handler'
1821
import { uuid } from '@sdk/utils'
1922
import { type RedirectRow, useRedirects } from './hooks/use-redirects'

assets/js/src/core/modules/redirects/table/table.tsx

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import { type RedirectRow, useRedirects } from '../hooks/use-redirects'
1616
import { type ModifiedCells } from '@sdk/modules/element'
1717
import { ActionsCell } from './actions-cell'
1818
import {
19-
useBundleSeoRedirectListTypesQuery,
20-
useBundleSeoRedirectListStatusesQuery,
21-
useBundleSeoRedirectListPrioritiesQuery
22-
} from '../seo-api-slice-enhanced'
19+
useRedirectTypeOptions,
20+
useRedirectStatusOptions,
21+
useRedirectPriorityOptions
22+
} from '../hooks/use-redirect-options'
2323
import { useSites } from '@Pimcore/modules/document/hooks/use-sites'
2424
import { type Site } from '@Pimcore/modules/document/document-api-slice-enhanced'
2525

@@ -36,9 +36,6 @@ export const Table = ({ onSortingChange, sorting, redirectRows, setRedirectRows
3636
const { t } = useTranslation()
3737

3838
const { updateRedirectById } = useRedirects()
39-
const { data: typesData } = useBundleSeoRedirectListTypesQuery()
40-
const { data: statusesData } = useBundleSeoRedirectListStatusesQuery()
41-
const { data: prioritiesData } = useBundleSeoRedirectListPrioritiesQuery()
4239
const { getAllSites } = useSites()
4340

4441
const [modifiedCells, setModifiedCells] = useState<ModifiedCells>([])
@@ -49,36 +46,15 @@ export const Table = ({ onSortingChange, sorting, redirectRows, setRedirectRows
4946
label: t(site.domain)
5047
}))
5148

52-
const typeOptions = useMemo(() =>
53-
typesData?.types?.map(type => ({ label: t(type), value: type })) ?? [],
54-
[typesData]
55-
)
56-
57-
const statusOptions = useMemo(() =>
58-
statusesData?.statuses?.map(status => ({
59-
label: `${status.code} - ${status.label}`,
60-
value: status.code
61-
})) ?? [],
62-
[statusesData]
63-
)
64-
65-
const priorityOptions = useMemo(() =>
66-
prioritiesData?.priorities?.map(priority => ({
67-
label: priority.toString(),
68-
value: priority
69-
})) ?? [],
70-
[prioritiesData]
71-
)
72-
7349
const columnHelper = createColumnHelper<RedirectWithActions>()
7450

75-
const tableColumns = [
51+
const tableColumns = useMemo(() => [
7652
columnHelper.accessor('type', {
7753
header: t('redirects.type'),
7854
meta: {
7955
type: 'select',
8056
editable: true,
81-
config: { options: typeOptions }
57+
config: { useOptionsHook: () => useRedirectTypeOptions() }
8258
},
8359
size: 120
8460
}),
@@ -115,7 +91,7 @@ export const Table = ({ onSortingChange, sorting, redirectRows, setRedirectRows
11591
meta: {
11692
type: 'select',
11793
editable: true,
118-
config: { options: statusOptions }
94+
config: { useOptionsHook: () => useRedirectStatusOptions() }
11995
},
12096
size: 100
12197
}),
@@ -124,7 +100,7 @@ export const Table = ({ onSortingChange, sorting, redirectRows, setRedirectRows
124100
meta: {
125101
type: 'select',
126102
editable: true,
127-
config: { options: priorityOptions }
103+
config: { useOptionsHook: () => useRedirectPriorityOptions() }
128104
},
129105
size: 80
130106
}),
@@ -159,7 +135,7 @@ export const Table = ({ onSortingChange, sorting, redirectRows, setRedirectRows
159135
/>
160136
)
161137
})
162-
]
138+
], [siteOptions, t])
163139

164140
const onUpdateCellData = async ({
165141
columnId,

public/build/1459a344-094f-4481-9c2f-c0ec256bb4fc/entrypoints.json

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/e9c2f3d7-c6e5-42eb-8aa4-da5bd0d8bdb9/exposeRemote.js renamed to public/build/1459a344-094f-4481-9c2f-c0ec256bb4fc/exposeRemote.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/e9c2f3d7-c6e5-42eb-8aa4-da5bd0d8bdb9/index.html renamed to public/build/1459a344-094f-4481-9c2f-c0ec256bb4fc/index.html

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)