[] = [
+ {
+ id: 'God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableRowRemoveButton',
+ label: t('judo.action.remove', { defaultValue: 'Remove' }) as string,
+ icon: ,
+ isCRUD: true,
+ disabled: (
+ row: ViewGalaxyStored,
+ isLoading: boolean,
+ getSelectedRows: () => ViewGalaxyStored[],
+ ownerdata?: any,
+ ): boolean => (getSelectedRows && getSelectedRows().length > 0) || isLoading,
+ action: actions.removeAction
+ ? async (rowData) => {
+ await actions.removeAction!(rowData);
+ }
+ : undefined,
+ },
+ {
+ id: 'God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableRowDeleteButton',
+ label: t('View.Galaxy.Table.Delete', { defaultValue: 'Delete' }) as string,
+ icon: ,
+ isCRUD: true,
+ disabled: (
+ row: ViewGalaxyStored,
+ isLoading: boolean,
+ getSelectedRows: () => ViewGalaxyStored[],
+ ownerdata?: any,
+ ): boolean =>
+ (getSelectedRows && getSelectedRows().length > 0) ||
+ (typeof row.__deleteable === 'boolean' && !row.__deleteable) ||
+ isLoading,
+ action: actions.rowDeleteAction
+ ? async (rowData) => {
+ await actions.rowDeleteAction!(rowData);
+ }
+ : undefined,
+ },
+ {
+ id: 'God/(esm/_uqp7kDV3Ee-rMcMaep1uNQ)/OperationFormTableRowCallOperationButton/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTable)',
+ label: t('View.Galaxy.Table.createDarkMatter', { defaultValue: 'createDarkMatter' }) as string,
+ icon: ,
+ disabled: (
+ row: ViewGalaxyStored,
+ isLoading: boolean,
+ getSelectedRows: () => ViewGalaxyStored[],
+ ownerdata?: any,
+ ): boolean => (getSelectedRows && getSelectedRows().length > 0) || isLoading,
+ action: actions.createDarkMatterAction
+ ? async (rowData) => {
+ await actions.createDarkMatterAction!(rowData);
+ }
+ : undefined,
+ },
+ {
+ id: 'God/(esm/_uqqioTV3Ee-rMcMaep1uNQ)/OperationFormTableRowCallOperationButton/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTable)',
+ label: t('View.Galaxy.Table.createIntergalacticDust', { defaultValue: 'createIntergalacticDust' }) as string,
+ icon: ,
+ disabled: (
+ row: ViewGalaxyStored,
+ isLoading: boolean,
+ getSelectedRows: () => ViewGalaxyStored[],
+ ownerdata?: any,
+ ): boolean => (getSelectedRows && getSelectedRows().length > 0) || isLoading,
+ action: actions.createIntergalacticDustAction
+ ? async (rowData) => {
+ await actions.createIntergalacticDustAction!(rowData);
+ }
+ : undefined,
+ },
+ {
+ id: 'God/(esm/_uqqiozV3Ee-rMcMaep1uNQ)/OperationFormTableRowCallOperationButton/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTable)',
+ label: t('View.Galaxy.Table.createInterstellarMedium', { defaultValue: 'createInterstellarMedium' }) as string,
+ icon: ,
+ disabled: (
+ row: ViewGalaxyStored,
+ isLoading: boolean,
+ getSelectedRows: () => ViewGalaxyStored[],
+ ownerdata?: any,
+ ): boolean => (getSelectedRows && getSelectedRows().length > 0) || isLoading,
+ action: actions.createInterstellarMediumAction
+ ? async (rowData) => {
+ await actions.createInterstellarMediumAction!(rowData);
+ }
+ : undefined,
+ },
+ ];
+
+ const filterOptions: FilterOption[] = [
+ {
+ id: 'God/(esm/_8AiKcE7tEeycO-gUAWxcVg)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'name',
+ label: t('View.Galaxy.Table.name', { defaultValue: 'Name' }) as string,
+ filterType: FilterType.string,
+ },
+
+ {
+ id: 'God/(esm/_EIBPIFjXEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'real',
+ label: t('View.Galaxy.Table.real', { defaultValue: 'Real' }) as string,
+ filterType: FilterType.trinaryLogic,
+ },
+
+ {
+ id: 'God/(esm/_Vne4AFjJEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'constellation',
+ label: t('View.Galaxy.Table.constellation', { defaultValue: 'Constellation' }) as string,
+ filterType: FilterType.string,
+ },
+
+ {
+ id: 'God/(esm/_Vnh7UFjJEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'magnitude',
+ label: t('View.Galaxy.Table.magnitude', { defaultValue: 'Magnitude' }) as string,
+ filterType: FilterType.numeric,
+ },
+
+ {
+ id: 'God/(esm/_Vnh7UVjJEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'nakedEye',
+ label: t('View.Galaxy.Table.nakedEye', { defaultValue: 'Naked Eye' }) as string,
+ filterType: FilterType.trinaryLogic,
+ },
+
+ {
+ id: 'God/(esm/_cE_G8FjJEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'darkMatter',
+ label: t('View.Galaxy.Table.darkMatter', { defaultValue: 'Dark Matter' }) as string,
+ filterType: FilterType.numeric,
+ },
+
+ {
+ id: 'God/(esm/_cFAVEFjJEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'intergalacticDust',
+ label: t('View.Galaxy.Table.intergalacticDust', { defaultValue: 'Intergalactic Dust' }) as string,
+ filterType: FilterType.numeric,
+ },
+
+ {
+ id: 'God/(esm/_cFA8IFjJEeyV2_3ibolaNQ)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'interstellarMedium',
+ label: t('View.Galaxy.Table.interstellarMedium', { defaultValue: 'Interstellar Medium' }) as string,
+ filterType: FilterType.numeric,
+ },
+
+ {
+ id: 'God/(esm/_ihOqMBMcEe2_DOUDKkB20Q)/TableColumnFilter/(discriminator/God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable)',
+ attributeName: 'discovered',
+ label: t('View.Galaxy.Table.discovered', { defaultValue: 'Discovered' }) as string,
+ filterType: FilterType.dateTime,
+ },
+ ];
+
+ return (
+
+
+ uniqueId={`God/(esm/_YT0hQE7rEeycO-gUAWxcVg)/TransferObjectTableTable-${uniqueId}`}
+ dataProp={[]}
+ defaultSortParamsForTable={[
+ { field: 'name', sort: 'asc' },
+ { field: 'magnitude', sort: 'desc' },
+ ]}
+ tablePageLimit={25}
+ tableColumns={columns}
+ tableRowActions={rowActions}
+ tableFilterOptions={filterOptions}
+ isOwnerLoading={isOwnerLoading}
+ validationError={validationError}
+ actions={actions}
+ dataElementId={'God/(esm/_YTkpoE7rEeycO-gUAWxcVg)/ClassType'}
+ crudOperationsDisplayed={1}
+ transferOperationsDisplayed={0}
+ onRowClick={
+ actions.openPageAction
+ ? async (params: GridRowParams) => await actions.openPageAction!(params.row, false)
+ : undefined
+ }
+ sidekickComponentFilter={sidekickComponentFilter}
+ containerHasTable={true}
+ maskAction={actions.getMask!}
+ fetch={actions.refreshAction}
+ refreshCounter={refreshCounter}
+ toolBarActions={toolBarActions}
+ additionalToolbarButtons={actions?.AdditionalToolbarButtons}
+ tableHasSelectorColumn={true}
+ enabledByName=""
+ relationName=""
+ filtersSerializer={filtersSerializer}
+ />
+
+ );
+}
diff --git a/judo-ui-react-itest/ActionGroupTestPro/action_group_test_pro__god/src/test/resources/snapshots/frontend-react/src/pages/God/God/Galaxies/AccessTablePage/index.tsx.snapshot b/judo-ui-react-itest/ActionGroupTestPro/action_group_test_pro__god/src/test/resources/snapshots/frontend-react/src/pages/God/God/Galaxies/AccessTablePage/index.tsx.snapshot
new file mode 100644
index 00000000..3fc2e9ae
--- /dev/null
+++ b/judo-ui-react-itest/ActionGroupTestPro/action_group_test_pro__god/src/test/resources/snapshots/frontend-react/src/pages/God/God/Galaxies/AccessTablePage/index.tsx.snapshot
@@ -0,0 +1,299 @@
+//////////////////////////////////////////////////////////////////////////////
+// G E N E R A T E D S O U R C E
+// --------------------------------
+// Factory expression: #getPagesForRouting(#application)
+// Path expression: 'src/pages/'+#pagePath(#self)+'/index.tsx'
+// Template name: actor/src/pages/index.tsx
+// Template file: actor/src/pages/index.tsx.hbs
+
+import type { GridFilterModel } from '@mui/x-data-grid-pro';
+import { OBJECTCLASS } from '@pandino/pandino-api';
+import { useTrackService } from '@pandino/react-hooks';
+import { Suspense, lazy, useCallback, useMemo, useRef, useState } from 'react';
+import type { Dispatch, FC, ReactNode, SetStateAction } from 'react';
+import { useTranslation } from 'react-i18next';
+import { v4 as uuidv4 } from 'uuid';
+import { useJudoNavigation } from '~/components';
+import type { Filter, FilterOption } from '~/components-api';
+import { useConfirmDialog, useFilterDialog } from '~/components/dialog';
+import type { ViewGalaxyTablePageActions, ViewGalaxyTablePageProps } from '~/containers/View/Galaxy/Table/types';
+import { useGodGodGalaxiesAccessFormPage } from '~/dialogs/God/God/Galaxies/AccessFormPage/hooks';
+import { useViewGalaxyTableCreateDarkMatterInputForm } from '~/dialogs/View/Galaxy/Table/CreateDarkMatter/Input/Form/hooks';
+import { useViewGalaxyTableCreateIntergalacticDustInputForm } from '~/dialogs/View/Galaxy/Table/CreateIntergalacticDust/Input/Form/hooks';
+import { useViewGalaxyTableCreateInterstellarMediumInputForm } from '~/dialogs/View/Galaxy/Table/CreateInterstellarMedium/Input/Form/hooks';
+import { useCRUDDialog, useSnacks, useViewData } from '~/hooks';
+import { routeToGodGodGalaxiesAccessViewPage } from '~/routes';
+import type { JudoIdentifiable } from '~/services/data-api/common/JudoIdentifiable';
+import { draftIdentifierPrefix } from '~/services/data-api/common/utils';
+import type { ViewGalaxy, ViewGalaxyStored } from '~/services/data-api/model/ViewGalaxy';
+import type { ViewGalaxyQueryCustomizer } from '~/services/data-api/rest/ViewGalaxyQueryCustomizer';
+import type { JudoRestResponse } from '~/services/data-api/rest/requestResponse';
+import { GodServiceForGalaxiesImpl } from '~/services/data-axios/GodServiceForGalaxiesImpl';
+import { judoAxiosProvider } from '~/services/data-axios/JudoAxiosProvider';
+import { PageContainerTransition } from '~/theme/animations';
+import { getValue, processQueryCustomizer, setValue, simpleCloneDeep, useErrorHandler } from '~/utilities';
+import type { DialogResult } from '~/utilities';
+import { type ViewGalaxyTableViewModel, ViewGalaxyTableViewModelContext } from './context';
+import type { ViewGalaxyTableActionsHook } from './customization';
+import { GOD_GOD_GALAXIES_ACCESS_TABLE_PAGE_ACTIONS_HOOK_INTERFACE_KEY } from './customization';
+import type { ViewGalaxyTablePageActionsExtended } from './types';
+
+const ViewGalaxyTablePageContainer = lazy(() => import('~/containers/View/Galaxy/Table/ViewGalaxyTablePageContainer'));
+
+// XMIID: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTablePageDefinition
+// Name: God::God::galaxies::AccessTablePage
+export default function GodGodGalaxiesAccessTablePage() {
+ const dataPath = '';
+ const isDraft = false;
+ const owner = useRef(null);
+
+ // Services
+ const godServiceForGalaxiesImpl = useMemo(() => new GodServiceForGalaxiesImpl(judoAxiosProvider), []);
+
+ // Hooks section
+ const { t } = useTranslation();
+ const { showSuccessSnack, showErrorSnack } = useSnacks();
+ const { navigate, back: navigateBack } = useJudoNavigation();
+ const { openFilterDialog } = useFilterDialog();
+ const { openConfirmDialog } = useConfirmDialog();
+ const { setLatestViewData, setRouterPageData } = useViewData();
+ const handleError = useErrorHandler();
+ const openCRUDDialog = useCRUDDialog();
+
+ // State section
+ const [isLoading, setIsLoading] = useState(false);
+ const [editMode, setEditMode] = useState(false);
+ const [refreshCounter, setRefreshCounter] = useState(0);
+ const [data, setData] = useState([]);
+
+ // Masks
+ const getMask: () => string = () => {
+ return '{constellation,darkMatter,discovered,intergalacticDust,interstellarMedium,magnitude,nakedEye,name,real}';
+ };
+
+ // Private actions
+ const submit = async () => {};
+ const refresh = async (forced = false) => {
+ setRefreshCounter((prev) => prev + 1);
+ };
+ const produceDataAdjustedOwner = useCallback(() => {
+ const copy = simpleCloneDeep(owner.current);
+ setValue(copy, dataPath, simpleCloneDeep(data));
+ return copy;
+ }, [data, owner]);
+
+ // Validation
+
+ // Pandino Action overrides
+ const { service: customActionsHook } = useTrackService(
+ `(${OBJECTCLASS}=${GOD_GOD_GALAXIES_ACCESS_TABLE_PAGE_ACTIONS_HOOK_INTERFACE_KEY})`,
+ );
+ const customActions: ViewGalaxyTablePageActionsExtended | undefined = customActionsHook?.(data, editMode);
+
+ // Dialog hooks
+ const openGodGodGalaxiesAccessFormPage = useGodGodGalaxiesAccessFormPage();
+ const openViewGalaxyTableCreateDarkMatterInputForm = useViewGalaxyTableCreateDarkMatterInputForm();
+ const openViewGalaxyTableCreateIntergalacticDustInputForm = useViewGalaxyTableCreateIntergalacticDustInputForm();
+ const openViewGalaxyTableCreateInterstellarMediumInputForm = useViewGalaxyTableCreateInterstellarMediumInputForm();
+
+ // Action section
+ const getPageTitle = (): string => {
+ return t('View.Galaxy.Table', { defaultValue: 'Galaxies' });
+ };
+ // BackAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableBackAction
+ const backAction = async () => {
+ navigateBack();
+ };
+ // BulkDeleteAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableBulkDeleteAction
+ const bulkDeleteAction = async (selectedRows: ViewGalaxyStored[]): Promise>> => {
+ return new Promise((resolve) => {
+ openCRUDDialog({
+ dialogTitle: t('judo.action.bulk-delete', { defaultValue: 'Delete' }),
+ itemTitleFn: (item) => (actions?.getRowRepresentation ? actions.getRowRepresentation(item) : item.name!),
+ selectedItems: selectedRows,
+ action: async (item, successHandler: () => void, errorHandler: (error: any) => void) => {
+ try {
+ await godServiceForGalaxiesImpl.delete(item);
+ successHandler();
+ } catch (error) {
+ errorHandler(error);
+ }
+ },
+ autoCloseOnSuccess: true,
+ onClose: async (needsRefresh) => {
+ if (needsRefresh) {
+ setRefreshCounter((prev) => prev + 1);
+ resolve({
+ result: 'delete',
+ data: [],
+ });
+ } else {
+ resolve({
+ result: 'close',
+ data: [],
+ });
+ }
+ },
+ });
+ });
+ };
+ // OpenCreateFormAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableCreateAction
+ const openCreateFormAction = async () => {
+ const {
+ result,
+ data: returnedData,
+ openCreated,
+ } = await openGodGodGalaxiesAccessFormPage({
+ ownerData: produceDataAdjustedOwner(),
+ isDraft: false,
+ dataPath: `${dataPath ? dataPath + '.' : ''}`,
+ });
+ if (result === 'submit') {
+ setRefreshCounter((prev) => prev + 1);
+ }
+ if (openCreated && returnedData) {
+ await openPageAction(returnedData!);
+ }
+ };
+ // RowDeleteAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableRowDeleteAction
+ const rowDeleteAction = async (target: ViewGalaxyStored) => {
+ try {
+ const confirmed = await openConfirmDialog(
+ 'row-delete-action',
+ t('judo.modal.confirm.confirm-delete', {
+ defaultValue: 'Are you sure you would like to delete the selected element?',
+ }),
+ t('judo.modal.confirm.confirm-title', { defaultValue: 'Confirm action' }),
+ );
+ if (confirmed) {
+ await godServiceForGalaxiesImpl.delete(target);
+ showSuccessSnack(t('judo.action.delete.success', { defaultValue: 'Delete successful' }));
+ setRefreshCounter((prev) => prev + 1);
+ }
+ } catch (error) {
+ handleError(error, undefined, target);
+ }
+ };
+ // FilterAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableTableFilterAction
+ const filterAction = async (
+ id: string,
+ filterOptions: FilterOption[],
+ model?: GridFilterModel,
+ filters?: Filter[],
+ ): Promise<{ model?: GridFilterModel; filters?: Filter[] }> => {
+ const newFilters = await openFilterDialog(id, filterOptions, filters);
+ return {
+ filters: newFilters,
+ };
+ };
+ // RefreshAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableTableRefreshAction
+ const refreshAction = async (
+ queryCustomizer: ViewGalaxyQueryCustomizer,
+ ): Promise> => {
+ try {
+ setIsLoading(true);
+ setEditMode(false);
+ return godServiceForGalaxiesImpl.list(undefined, queryCustomizer);
+ } catch (error) {
+ handleError(error);
+ setLatestViewData(null);
+ setRouterPageData(null);
+ return Promise.reject(error);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+ // OpenPageAction: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTableRowViewAction
+ const openPageAction = async (target: ViewGalaxyStored, isDraftParam?: boolean) => {
+ // if the `target` is missing we are likely navigating to a relation table page, in which case we need the owner's id
+ navigate(routeToGodGodGalaxiesAccessViewPage((target as ViewGalaxyStored)!.__signedIdentifier));
+ };
+ // OpenOperationInputFormAction: God/(esm/_uqp7kDV3Ee-rMcMaep1uNQ)/OperationFormTableRowCallAction/(discriminator/God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTablePageDefinition)
+ const createDarkMatterAction = async (
+ target: ViewGalaxyStored,
+ isDraft?: boolean,
+ ownerValidation?: (target: any) => Promise,
+ ) => {
+ const { result, data: returnedData } = await openViewGalaxyTableCreateDarkMatterInputForm({
+ ownerData: target,
+ });
+ if (result === 'submit') {
+ await refresh();
+ }
+ };
+ // OpenOperationInputFormAction: God/(esm/_uqqioTV3Ee-rMcMaep1uNQ)/OperationFormTableRowCallAction/(discriminator/God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTablePageDefinition)
+ const createIntergalacticDustAction = async (
+ target: ViewGalaxyStored,
+ isDraft?: boolean,
+ ownerValidation?: (target: any) => Promise,
+ ) => {
+ const { result, data: returnedData } = await openViewGalaxyTableCreateIntergalacticDustInputForm({
+ ownerData: target,
+ });
+ if (result === 'submit') {
+ await refresh();
+ }
+ };
+ // OpenOperationInputFormAction: God/(esm/_uqqiozV3Ee-rMcMaep1uNQ)/OperationFormTableRowCallAction/(discriminator/God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessTablePageDefinition)
+ const createInterstellarMediumAction = async (
+ target: ViewGalaxyStored,
+ isDraft?: boolean,
+ ownerValidation?: (target: any) => Promise,
+ ) => {
+ const { result, data: returnedData } = await openViewGalaxyTableCreateInterstellarMediumInputForm({
+ ownerData: target,
+ });
+ if (result === 'submit') {
+ await refresh();
+ }
+ };
+
+ const actions: ViewGalaxyTablePageActions = {
+ getPageTitle,
+ backAction,
+ bulkDeleteAction,
+ openCreateFormAction,
+ rowDeleteAction,
+ filterAction,
+ refreshAction,
+ openPageAction,
+ createDarkMatterAction,
+ createIntergalacticDustAction,
+ createInterstellarMediumAction,
+ getMask,
+ ...(customActions ?? {}),
+ };
+
+ // ViewModel setup
+ const viewModel: ViewGalaxyTableViewModel = {
+ actions,
+ isLoading,
+ setIsLoading,
+ refreshCounter,
+ editMode,
+ setEditMode,
+ refresh,
+ };
+
+ // Effect section
+
+ return (
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/judo-ui-react-itest/ActionGroupTestPro/action_group_test_pro__god/src/test/resources/snapshots/frontend-react/src/pages/God/God/Galaxies/AccessViewPage/index.tsx.snapshot b/judo-ui-react-itest/ActionGroupTestPro/action_group_test_pro__god/src/test/resources/snapshots/frontend-react/src/pages/God/God/Galaxies/AccessViewPage/index.tsx.snapshot
new file mode 100644
index 00000000..07e4dcef
--- /dev/null
+++ b/judo-ui-react-itest/ActionGroupTestPro/action_group_test_pro__god/src/test/resources/snapshots/frontend-react/src/pages/God/God/Galaxies/AccessViewPage/index.tsx.snapshot
@@ -0,0 +1,603 @@
+//////////////////////////////////////////////////////////////////////////////
+// G E N E R A T E D S O U R C E
+// --------------------------------
+// Factory expression: #getPagesForRouting(#application)
+// Path expression: 'src/pages/'+#pagePath(#self)+'/index.tsx'
+// Template name: actor/src/pages/index.tsx
+// Template file: actor/src/pages/index.tsx.hbs
+
+import type { GridFilterModel } from '@mui/x-data-grid-pro';
+import { OBJECTCLASS } from '@pandino/pandino-api';
+import { useTrackService } from '@pandino/react-hooks';
+import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from 'react';
+import type { Dispatch, FC, ReactNode, SetStateAction } from 'react';
+import { useTranslation } from 'react-i18next';
+import { useParams } from 'react-router-dom';
+import { v4 as uuidv4 } from 'uuid';
+import { useJudoNavigation } from '~/components';
+import type { Filter, FilterOption } from '~/components-api';
+import { useConfirmDialog, useFilterDialog } from '~/components/dialog';
+import type { ViewGalaxyViewPageActions, ViewGalaxyViewPageProps } from '~/containers/View/Galaxy/View/types';
+import { useViewGalaxyAstronomerRelationFormPage } from '~/dialogs/View/Galaxy/Astronomer/RelationFormPage/hooks';
+import { useViewGalaxyStarsRelationFormPage } from '~/dialogs/View/Galaxy/Stars/RelationFormPage/hooks';
+import { useViewGalaxyStarsRelationViewPage } from '~/dialogs/View/Galaxy/Stars/RelationViewPage/hooks';
+import { useViewGalaxyViewCreateDarkMatterInputForm } from '~/dialogs/View/Galaxy/View/CreateDarkMatter/Input/Form/hooks';
+import { useViewGalaxyViewCreateIntergalacticDustInputForm } from '~/dialogs/View/Galaxy/View/CreateIntergalacticDust/Input/Form/hooks';
+import { useViewGalaxyViewCreateInterstellarMediumInputForm } from '~/dialogs/View/Galaxy/View/CreateInterstellarMedium/Input/Form/hooks';
+import { useViewGalaxyViewGroupDiscovererAstronomerLinkSetSelectorPage } from '~/dialogs/View/Galaxy/View/Group/Discoverer/Astronomer/LinkSetSelectorPage/hooks';
+import { useCRUDDialog, useSnacks, useViewData } from '~/hooks';
+import { routeToViewGalaxyAstronomerRelationViewPage } from '~/routes';
+import { routeToViewGalaxyMatterRelationTablePage } from '~/routes';
+import type { JudoIdentifiable } from '~/services/data-api/common/JudoIdentifiable';
+import { draftIdentifierPrefix } from '~/services/data-api/common/utils';
+import type { ViewAstronomer, ViewAstronomerStored } from '~/services/data-api/model/ViewAstronomer';
+import type { ViewGalaxy, ViewGalaxyStored } from '~/services/data-api/model/ViewGalaxy';
+import type { ViewMatter, ViewMatterStored } from '~/services/data-api/model/ViewMatter';
+import type { ViewStar, ViewStarStored } from '~/services/data-api/model/ViewStar';
+import type { ViewAstronomerQueryCustomizer } from '~/services/data-api/rest/ViewAstronomerQueryCustomizer';
+import type { ViewGalaxyQueryCustomizer } from '~/services/data-api/rest/ViewGalaxyQueryCustomizer';
+import type { ViewMatterQueryCustomizer } from '~/services/data-api/rest/ViewMatterQueryCustomizer';
+import type { ViewStarQueryCustomizer } from '~/services/data-api/rest/ViewStarQueryCustomizer';
+import type { JudoRestResponse } from '~/services/data-api/rest/requestResponse';
+import { GodServiceForGalaxiesImpl } from '~/services/data-axios/GodServiceForGalaxiesImpl';
+import { judoAxiosProvider } from '~/services/data-axios/JudoAxiosProvider';
+import { PageContainerTransition } from '~/theme/animations';
+import {
+ fileHandling,
+ getValue,
+ processQueryCustomizer,
+ setValue,
+ simpleCloneDeep,
+ useErrorHandler,
+} from '~/utilities';
+import type { DialogResult } from '~/utilities';
+import { type ViewGalaxyViewViewModel, ViewGalaxyViewViewModelContext } from './context';
+import type { ViewGalaxyViewActionsHook } from './customization';
+import { GOD_GOD_GALAXIES_ACCESS_VIEW_PAGE_ACTIONS_HOOK_INTERFACE_KEY } from './customization';
+import type { ViewGalaxyViewPageActionsExtended } from './types';
+
+const ViewGalaxyViewPageContainer = lazy(() => import('~/containers/View/Galaxy/View/ViewGalaxyViewPageContainer'));
+
+// XMIID: God/(esm/_4pyPkM_cEe6fibzd7gNETg)/AccessViewPageDefinition
+// Name: God::God::galaxies::AccessViewPage
+export default function GodGodGalaxiesAccessViewPage() {
+ const dataPath = '';
+ const isDraft = false;
+ const owner = useRef(null);
+
+ // Router params section
+ const { signedIdentifier } = useParams();
+
+ // Services
+ const godServiceForGalaxiesImpl = useMemo(() => new GodServiceForGalaxiesImpl(judoAxiosProvider), []);
+
+ // Hooks section
+ const { t } = useTranslation();
+ const { showSuccessSnack, showErrorSnack } = useSnacks();
+ const { navigate, back: navigateBack } = useJudoNavigation();
+ const { openFilterDialog } = useFilterDialog();
+ const { openConfirmDialog } = useConfirmDialog();
+ const { setLatestViewData, setRouterPageData } = useViewData();
+ const handleError = useErrorHandler();
+ const openCRUDDialog = useCRUDDialog();
+ const { exportFile } = fileHandling();
+
+ // State section
+ const [isLoading, setIsLoading] = useState(false);
+ const [editMode, setEditMode] = useState(false);
+ const [refreshCounter, setRefreshCounter] = useState(0);
+ const [data, setData] = useState({ __signedIdentifier: signedIdentifier } as ViewGalaxyStored);
+ const [validation, setValidation] = useState