mirror of https://github.com/portainer/portainer
refactor(docker): move components to react [EE-3348] (#7084)
parent
7238372d8d
commit
46e1a01625
|
@ -3,11 +3,8 @@ import angular from 'angular';
|
||||||
import { EnvironmentStatus } from '@/portainer/environments/types';
|
import { EnvironmentStatus } from '@/portainer/environments/types';
|
||||||
|
|
||||||
import { reactModule } from './react';
|
import { reactModule } from './react';
|
||||||
import containersModule from './containers';
|
|
||||||
import { componentsModule } from './components';
|
|
||||||
import { networksModule } from './networks';
|
|
||||||
|
|
||||||
angular.module('portainer.docker', ['portainer.app', containersModule, componentsModule, networksModule, reactModule]).config([
|
angular.module('portainer.docker', ['portainer.app', reactModule]).config([
|
||||||
'$stateRegistryProvider',
|
'$stateRegistryProvider',
|
||||||
function ($stateRegistryProvider) {
|
function ($stateRegistryProvider) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
import angular from 'angular';
|
|
||||||
|
|
||||||
import { ContainerQuickActionsAngular } from './container-quick-actions';
|
|
||||||
|
|
||||||
export const componentsModule = angular
|
|
||||||
.module('portainer.docker.components', [])
|
|
||||||
.component('containerQuickActions', ContainerQuickActionsAngular).name;
|
|
|
@ -1,7 +0,0 @@
|
||||||
import angular from 'angular';
|
|
||||||
|
|
||||||
import { ContainersDatatableAngular } from './components/ContainersDatatable/ContainersDatatableContainer';
|
|
||||||
|
|
||||||
export default angular
|
|
||||||
.module('portainer.docker.containers', [])
|
|
||||||
.component('containersDatatable', ContainersDatatableAngular).name;
|
|
|
@ -1,5 +0,0 @@
|
||||||
import { react2angular } from '@/react-tools/react2angular';
|
|
||||||
|
|
||||||
import { NetworkDetailsView } from './NetworkDetailsView';
|
|
||||||
|
|
||||||
export const NetworkDetailsViewAngular = react2angular(NetworkDetailsView, []);
|
|
|
@ -1,7 +0,0 @@
|
||||||
import angular from 'angular';
|
|
||||||
|
|
||||||
import { NetworkDetailsViewAngular } from './edit';
|
|
||||||
|
|
||||||
export const networksModule = angular
|
|
||||||
.module('portainer.docker.networks', [])
|
|
||||||
.component('networkDetailsView', NetworkDetailsViewAngular).name;
|
|
|
@ -1,6 +1,29 @@
|
||||||
import angular from 'angular';
|
import angular from 'angular';
|
||||||
|
|
||||||
export const componentsModule = angular.module(
|
import { r2a } from '@/react-tools/react2angular';
|
||||||
'portainer.docker.react.components',
|
import { ContainersDatatableContainer } from '@/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableContainer';
|
||||||
[]
|
import { ContainerQuickActions } from '@/react/docker/containers/components/ContainerQuickActions';
|
||||||
).name;
|
|
||||||
|
export const componentsModule = angular
|
||||||
|
.module('portainer.docker.react.components', [])
|
||||||
|
.component(
|
||||||
|
'containersDatatable',
|
||||||
|
r2a(ContainersDatatableContainer, [
|
||||||
|
'endpoint',
|
||||||
|
'isAddActionVisible',
|
||||||
|
'dataset',
|
||||||
|
'onRefresh',
|
||||||
|
'isHostColumnVisible',
|
||||||
|
'tableKey',
|
||||||
|
])
|
||||||
|
)
|
||||||
|
.component(
|
||||||
|
'containerQuickActions',
|
||||||
|
r2a(ContainerQuickActions, [
|
||||||
|
'containerId',
|
||||||
|
'nodeName',
|
||||||
|
'state',
|
||||||
|
'status',
|
||||||
|
'taskId',
|
||||||
|
])
|
||||||
|
).name;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import angular from 'angular';
|
import angular from 'angular';
|
||||||
|
|
||||||
export const viewsModule = angular.module(
|
import { ItemView } from '@/react/docker/networks/ItemView';
|
||||||
'portainer.docker.react.views',
|
import { r2a } from '@/react-tools/react2angular';
|
||||||
[]
|
|
||||||
).name;
|
export const viewsModule = angular
|
||||||
|
.module('portainer.docker.react.views', [])
|
||||||
|
.component('networkDetailsView', r2a(ItemView, [])).name;
|
||||||
|
|
|
@ -8,7 +8,7 @@ import {
|
||||||
resumeContainer,
|
resumeContainer,
|
||||||
startContainer,
|
startContainer,
|
||||||
stopContainer,
|
stopContainer,
|
||||||
} from '@/docker/containers/containers.service';
|
} from '@/react/docker/containers/containers.service';
|
||||||
import { ContainerDetailsViewModel, ContainerStatsViewModel, ContainerViewModel } from '../models/container';
|
import { ContainerDetailsViewModel, ContainerStatsViewModel, ContainerViewModel } from '../models/container';
|
||||||
|
|
||||||
angular.module('portainer.docker').factory('ContainerService', ContainerServiceFactory);
|
angular.module('portainer.docker').factory('ContainerService', ContainerServiceFactory);
|
||||||
|
|
|
@ -13,7 +13,7 @@ import { useDebounce } from '@/portainer/hooks/useDebounce';
|
||||||
import type {
|
import type {
|
||||||
ContainersTableSettings,
|
ContainersTableSettings,
|
||||||
DockerContainer,
|
DockerContainer,
|
||||||
} from '@/docker/containers/types';
|
} from '@/react/docker/containers/types';
|
||||||
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
||||||
|
|
||||||
import { PaginationControls } from '@@/PaginationControls';
|
import { PaginationControls } from '@@/PaginationControls';
|
|
@ -4,7 +4,10 @@ import * as notifications from '@/portainer/services/notifications';
|
||||||
import { useAuthorizations, Authorized } from '@/portainer/hooks/useUser';
|
import { useAuthorizations, Authorized } from '@/portainer/hooks/useUser';
|
||||||
import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt';
|
import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt';
|
||||||
import { setPortainerAgentTargetHeader } from '@/portainer/services/http-request.helper';
|
import { setPortainerAgentTargetHeader } from '@/portainer/services/http-request.helper';
|
||||||
import type { ContainerId, DockerContainer } from '@/docker/containers/types';
|
import type {
|
||||||
|
ContainerId,
|
||||||
|
DockerContainer,
|
||||||
|
} from '@/react/docker/containers/types';
|
||||||
import {
|
import {
|
||||||
killContainer,
|
killContainer,
|
||||||
pauseContainer,
|
pauseContainer,
|
||||||
|
@ -13,7 +16,7 @@ import {
|
||||||
resumeContainer,
|
resumeContainer,
|
||||||
startContainer,
|
startContainer,
|
||||||
stopContainer,
|
stopContainer,
|
||||||
} from '@/docker/containers/containers.service';
|
} from '@/react/docker/containers/containers.service';
|
||||||
import type { EnvironmentId } from '@/portainer/environments/types';
|
import type { EnvironmentId } from '@/portainer/environments/types';
|
||||||
|
|
||||||
import { Link } from '@@/Link';
|
import { Link } from '@@/Link';
|
|
@ -1,4 +1,3 @@
|
||||||
import { react2angular } from '@/react-tools/react2angular';
|
|
||||||
import { EnvironmentProvider } from '@/portainer/environments/useEnvironment';
|
import { EnvironmentProvider } from '@/portainer/environments/useEnvironment';
|
||||||
import type { Environment } from '@/portainer/environments/types';
|
import type { Environment } from '@/portainer/environments/types';
|
||||||
|
|
||||||
|
@ -36,15 +35,3 @@ export function ContainersDatatableContainer({
|
||||||
</EnvironmentProvider>
|
</EnvironmentProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ContainersDatatableAngular = react2angular(
|
|
||||||
ContainersDatatableContainer,
|
|
||||||
[
|
|
||||||
'endpoint',
|
|
||||||
'isAddActionVisible',
|
|
||||||
'dataset',
|
|
||||||
'onRefresh',
|
|
||||||
'isHostColumnVisible',
|
|
||||||
'tableKey',
|
|
||||||
]
|
|
||||||
);
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { ContainersTableSettings } from '@/docker/containers/types';
|
import type { ContainersTableSettings } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';
|
import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';
|
||||||
import { useTableSettings } from '@@/datatables/useTableSettings';
|
import { useTableSettings } from '@@/datatables/useTableSettings';
|
|
@ -1,7 +1,7 @@
|
||||||
import { Column } from 'react-table';
|
import { Column } from 'react-table';
|
||||||
|
|
||||||
import { isoDateFromTimestamp } from '@/portainer/filters/filters';
|
import { isoDateFromTimestamp } from '@/portainer/filters/filters';
|
||||||
import type { DockerContainer } from '@/docker/containers/types';
|
import type { DockerContainer } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
export const created: Column<DockerContainer> = {
|
export const created: Column<DockerContainer> = {
|
||||||
Header: 'Created',
|
Header: 'Created',
|
|
@ -1,6 +1,6 @@
|
||||||
import { Column } from 'react-table';
|
import { Column } from 'react-table';
|
||||||
|
|
||||||
import type { DockerContainer } from '@/docker/containers/types';
|
import type { DockerContainer } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
export const host: Column<DockerContainer> = {
|
export const host: Column<DockerContainer> = {
|
||||||
Header: 'Host',
|
Header: 'Host',
|
|
@ -3,7 +3,7 @@ import { useSref } from '@uirouter/react';
|
||||||
|
|
||||||
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
||||||
import { EnvironmentStatus } from '@/portainer/environments/types';
|
import { EnvironmentStatus } from '@/portainer/environments/types';
|
||||||
import type { DockerContainer } from '@/docker/containers/types';
|
import type { DockerContainer } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
export const image: Column<DockerContainer> = {
|
export const image: Column<DockerContainer> = {
|
||||||
Header: 'Image',
|
Header: 'Image',
|
|
@ -1,6 +1,6 @@
|
||||||
import { Column } from 'react-table';
|
import { Column } from 'react-table';
|
||||||
|
|
||||||
import type { DockerContainer } from '@/docker/containers/types';
|
import type { DockerContainer } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
export const ip: Column<DockerContainer> = {
|
export const ip: Column<DockerContainer> = {
|
||||||
Header: 'IP Address',
|
Header: 'IP Address',
|
|
@ -6,7 +6,7 @@ import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
||||||
import type {
|
import type {
|
||||||
ContainersTableSettings,
|
ContainersTableSettings,
|
||||||
DockerContainer,
|
DockerContainer,
|
||||||
} from '@/docker/containers/types';
|
} from '@/react/docker/containers/types';
|
||||||
|
|
||||||
import { useTableSettings } from '@@/datatables/useTableSettings';
|
import { useTableSettings } from '@@/datatables/useTableSettings';
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Column } from 'react-table';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
|
|
||||||
import { ownershipIcon } from '@/portainer/filters/filters';
|
import { ownershipIcon } from '@/portainer/filters/filters';
|
||||||
import type { DockerContainer } from '@/docker/containers/types';
|
import type { DockerContainer } from '@/react/docker/containers/types';
|
||||||
import { ResourceControlOwnership } from '@/portainer/access-control/types';
|
import { ResourceControlOwnership } from '@/portainer/access-control/types';
|
||||||
|
|
||||||
export const ownership: Column<DockerContainer> = {
|
export const ownership: Column<DockerContainer> = {
|
|
@ -2,7 +2,7 @@ import { Column } from 'react-table';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
|
||||||
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
||||||
import type { DockerContainer, Port } from '@/docker/containers/types';
|
import type { DockerContainer, Port } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
export const ports: Column<DockerContainer> = {
|
export const ports: Column<DockerContainer> = {
|
||||||
Header: 'Published Ports',
|
Header: 'Published Ports',
|
|
@ -2,11 +2,11 @@ import { CellProps, Column } from 'react-table';
|
||||||
|
|
||||||
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
||||||
import { useAuthorizations } from '@/portainer/hooks/useUser';
|
import { useAuthorizations } from '@/portainer/hooks/useUser';
|
||||||
import { ContainerQuickActions } from '@/docker/components/container-quick-actions/ContainerQuickActions';
|
import { ContainerQuickActions } from '@/react/docker/containers/components/ContainerQuickActions/ContainerQuickActions';
|
||||||
import type {
|
import type {
|
||||||
ContainersTableSettings,
|
ContainersTableSettings,
|
||||||
DockerContainer,
|
DockerContainer,
|
||||||
} from '@/docker/containers/types';
|
} from '@/react/docker/containers/types';
|
||||||
import { EnvironmentStatus } from '@/portainer/environments/types';
|
import { EnvironmentStatus } from '@/portainer/environments/types';
|
||||||
|
|
||||||
import { useTableSettings } from '@@/datatables/useTableSettings';
|
import { useTableSettings } from '@@/datatables/useTableSettings';
|
|
@ -1,6 +1,6 @@
|
||||||
import { Column } from 'react-table';
|
import { Column } from 'react-table';
|
||||||
|
|
||||||
import type { DockerContainer } from '@/docker/containers/types';
|
import type { DockerContainer } from '@/react/docker/containers/types';
|
||||||
|
|
||||||
export const stack: Column<DockerContainer> = {
|
export const stack: Column<DockerContainer> = {
|
||||||
Header: 'Stack',
|
Header: 'Stack',
|
|
@ -5,7 +5,7 @@ import _ from 'lodash';
|
||||||
import type {
|
import type {
|
||||||
DockerContainer,
|
DockerContainer,
|
||||||
DockerContainerStatus,
|
DockerContainerStatus,
|
||||||
} from '@/docker/containers/types';
|
} from '@/react/docker/containers/types';
|
||||||
|
|
||||||
import { DefaultFilter } from '@@/datatables/Filter';
|
import { DefaultFilter } from '@@/datatables/Filter';
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
|
|
||||||
|
import { DockerContainerStatus } from '@/react/docker/containers/types';
|
||||||
import { Authorized } from '@/portainer/hooks/useUser';
|
import { Authorized } from '@/portainer/hooks/useUser';
|
||||||
import { react2angular } from '@/react-tools/react2angular';
|
import { react2angular } from '@/react-tools/react2angular';
|
||||||
import { DockerContainerStatus } from '@/docker/containers/types';
|
|
||||||
|
|
||||||
import { Link } from '@@/Link';
|
import { Link } from '@@/Link';
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { EnvironmentId } from '@/portainer/environments/types';
|
import { EnvironmentId } from '@/portainer/environments/types';
|
||||||
import PortainerError from '@/portainer/error';
|
import PortainerError from '@/portainer/error';
|
||||||
import axios from '@/portainer/services/axios';
|
import axios from '@/portainer/services/axios';
|
||||||
|
import { genericHandler } from '@/docker/rest/response/handlers';
|
||||||
|
|
||||||
import { NetworkId } from '../networks/types';
|
import { NetworkId } from '../networks/types';
|
||||||
import { genericHandler } from '../rest/response/handlers';
|
|
||||||
|
|
||||||
import { ContainerId, DockerContainer } from './types';
|
import { ContainerId, DockerContainer } from './types';
|
||||||
|
|
|
@ -7,21 +7,21 @@ import { useEnvironmentId } from '@/portainer/hooks/useEnvironmentId';
|
||||||
import { confirmDeletionAsync } from '@/portainer/services/modal.service/confirm';
|
import { confirmDeletionAsync } from '@/portainer/services/modal.service/confirm';
|
||||||
import { AccessControlPanel } from '@/portainer/access-control/AccessControlPanel/AccessControlPanel';
|
import { AccessControlPanel } from '@/portainer/access-control/AccessControlPanel/AccessControlPanel';
|
||||||
import { ResourceControlType } from '@/portainer/access-control/types';
|
import { ResourceControlType } from '@/portainer/access-control/types';
|
||||||
import { DockerContainer } from '@/docker/containers/types';
|
import { DockerContainer } from '@/react/docker/containers/types';
|
||||||
import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel';
|
import { ResourceControlViewModel } from '@/portainer/access-control/models/ResourceControlViewModel';
|
||||||
|
|
||||||
import { PageHeader } from '@@/PageHeader';
|
import { PageHeader } from '@@/PageHeader';
|
||||||
|
|
||||||
import { useNetwork, useDeleteNetwork } from '../queries';
|
import { useNetwork, useDeleteNetwork } from '../queries';
|
||||||
import { isSystemNetwork } from '../network.helper';
|
import { isSystemNetwork } from '../network.helper';
|
||||||
import { useContainers } from '../../containers/queries';
|
|
||||||
import { DockerNetwork, NetworkContainer } from '../types';
|
import { DockerNetwork, NetworkContainer } from '../types';
|
||||||
|
import { useContainers } from '../../containers/queries';
|
||||||
|
|
||||||
import { NetworkDetailsTable } from './NetworkDetailsTable';
|
import { NetworkDetailsTable } from './NetworkDetailsTable';
|
||||||
import { NetworkOptionsTable } from './NetworkOptionsTable';
|
import { NetworkOptionsTable } from './NetworkOptionsTable';
|
||||||
import { NetworkContainersTable } from './NetworkContainersTable';
|
import { NetworkContainersTable } from './NetworkContainersTable';
|
||||||
|
|
||||||
export function NetworkDetailsView() {
|
export function ItemView() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
export { ItemView } from './ItemView';
|
|
@ -1,8 +1,7 @@
|
||||||
|
import { ContainerId } from '@/react/docker/containers/types';
|
||||||
import axios, { parseAxiosError } from '@/portainer/services/axios';
|
import axios, { parseAxiosError } from '@/portainer/services/axios';
|
||||||
import { EnvironmentId } from '@/portainer/environments/types';
|
import { EnvironmentId } from '@/portainer/environments/types';
|
||||||
|
|
||||||
import { ContainerId } from '../containers/types';
|
|
||||||
|
|
||||||
import { NetworkId, DockerNetwork } from './types';
|
import { NetworkId, DockerNetwork } from './types';
|
||||||
|
|
||||||
type NetworkAction = 'connect' | 'disconnect' | 'create';
|
type NetworkAction = 'connect' | 'disconnect' | 'create';
|
|
@ -5,8 +5,7 @@ import {
|
||||||
error as notifyError,
|
error as notifyError,
|
||||||
success as notifySuccess,
|
success as notifySuccess,
|
||||||
} from '@/portainer/services/notifications';
|
} from '@/portainer/services/notifications';
|
||||||
|
import { ContainerId } from '@/react/docker/containers/types';
|
||||||
import { ContainerId } from '../containers/types';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getNetwork,
|
getNetwork,
|
Loading…
Reference in New Issue