From 56307b9d3ffd1b7ae2b099fe64d3379386ba97f7 Mon Sep 17 00:00:00 2001 From: Christina Ahrens Roberts Date: Fri, 2 Feb 2024 12:09:29 -0500 Subject: [PATCH] [WOR-1482] Move remainder of Workspaces-owned code out of src/pages/workspaces (#4626) --- .github/CODEOWNERS | 3 --- src/libs/routes.js | 4 +-- .../DashboardAuthContainer.test.tsx | 11 +++----- .../Dashboard => }/DashboardAuthContainer.tsx | 4 +-- .../{workspace => }/DashboardPublic.js | 0 .../Dashboard.ts => WorkspaceDashboard.ts} | 2 +- src/pages/workspaces/WorkspaceMigration.ts | 25 +++++++++++++++++++ .../dashboard}/AuthDomainPanel.ts | 0 .../dashboard}/AzureStorageDetails.test.ts | 2 +- .../dashboard}/AzureStorageDetails.ts | 2 +- .../dashboard}/BucketLocation.test.ts | 2 +- .../dashboard}/BucketLocation.ts | 0 .../dashboard}/CloudInformation.test.ts | 2 +- .../dashboard}/CloudInformation.ts | 6 ++--- .../dashboard}/DatasetAttributes.test.ts | 2 +- .../dashboard}/DatasetAttributes.ts | 2 +- .../dashboard}/InfoRow.ts | 0 .../dashboard}/OwnerNotice.ts | 0 .../dashboard}/RightBoxSection.test.tsx | 0 .../dashboard}/RightBoxSection.ts | 0 .../dashboard}/WorkspaceDashboard.test.tsx | 2 +- .../dashboard}/WorkspaceDashboard.ts | 18 ++++++------- .../dashboard}/WorkspaceDashboardPage.ts | 2 +- .../dashboard}/WorkspaceDescription.test.ts | 2 +- .../dashboard}/WorkspaceDescription.ts | 0 .../dashboard}/WorkspaceInformation.test.ts | 2 +- .../dashboard}/WorkspaceInformation.ts | 2 +- .../dashboard}/WorkspaceNotifications.test.ts | 2 +- .../dashboard}/WorkspaceNotifications.ts | 0 .../dashboard}/WorkspaceTags.test.ts | 2 +- .../dashboard}/WorkspaceTags.ts | 2 +- .../dashboard}/library-attributes.ts | 0 .../migration/BillingProjectList.test.ts | 4 +-- .../migration/BillingProjectList.ts | 4 +-- .../migration/BillingProjectParent.test.ts | 8 +++--- .../migration/BillingProjectParent.ts | 4 +-- .../migration/WorkspaceInformation.ts} | 25 +------------------ .../migration/WorkspaceItem.test.ts | 4 +-- .../workspaces/migration/WorkspaceItem.ts | 2 +- .../migration/migration-utils.test.ts | 2 +- .../workspaces/migration/migration-utils.ts | 0 41 files changed, 75 insertions(+), 79 deletions(-) rename src/pages/workspaces/{workspace/Dashboard => }/DashboardAuthContainer.test.tsx (90%) rename src/pages/workspaces/{workspace/Dashboard => }/DashboardAuthContainer.tsx (89%) rename src/pages/workspaces/{workspace => }/DashboardPublic.js (100%) rename src/pages/workspaces/{workspace/Dashboard/Dashboard.ts => WorkspaceDashboard.ts} (67%) create mode 100644 src/pages/workspaces/WorkspaceMigration.ts rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/AuthDomainPanel.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/AzureStorageDetails.test.ts (95%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/AzureStorageDetails.ts (96%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/BucketLocation.test.ts (98%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/BucketLocation.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/CloudInformation.test.ts (97%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/CloudInformation.ts (96%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/DatasetAttributes.test.ts (93%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/DatasetAttributes.ts (98%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/InfoRow.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/OwnerNotice.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/RightBoxSection.test.tsx (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/RightBoxSection.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceDashboard.test.tsx (96%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceDashboard.ts (79%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceDashboardPage.ts (83%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceDescription.test.ts (98%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceDescription.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceInformation.test.ts (98%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceInformation.ts (94%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceNotifications.test.ts (97%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceNotifications.ts (100%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceTags.test.ts (98%) rename src/{pages/workspaces/workspace/Dashboard => workspaces/dashboard}/WorkspaceTags.ts (97%) rename src/{pages/workspaces/workspace => workspaces/dashboard}/library-attributes.ts (100%) rename src/{pages => }/workspaces/migration/BillingProjectList.test.ts (95%) rename src/{pages => }/workspaces/migration/BillingProjectList.ts (96%) rename src/{pages => }/workspaces/migration/BillingProjectParent.test.ts (97%) rename src/{pages => }/workspaces/migration/BillingProjectParent.ts (97%) rename src/{pages/workspaces/migration/WorkspaceMigration.ts => workspaces/migration/WorkspaceInformation.ts} (78%) rename src/{pages => }/workspaces/migration/WorkspaceItem.test.ts (98%) rename src/{pages => }/workspaces/migration/WorkspaceItem.ts (99%) rename src/{pages => }/workspaces/migration/migration-utils.test.ts (99%) rename src/{pages => }/workspaces/migration/migration-utils.ts (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8165eb2e70..c8c84e64cc 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -20,9 +20,6 @@ /src/pages/LandingPage* @DataBiosphere/terra-cobranding /src/pages/billing/ @DataBiosphere/broadworkspaces-terra-ui /src/pages/workspaces/* @DataBiosphere/broadworkspaces-terra-ui -/src/pages/workspaces/migration/* @DataBiosphere/broadworkspaces-terra-ui -/src/pages/workspaces/workspace/*Dashboard* @DataBiosphere/broadworkspaces-terra-ui -/src/pages/workspaces/workspace/*Workspace* @DataBiosphere/broadworkspaces-terra-ui /src/components/*Workspace* @DataBiosphere/broadworkspaces-terra-ui /src/components/workspace-utils* @DataBiosphere/broadworkspaces-terra-ui /src/workflows-app/ @DataBiosphere/broad-workflow-management @DataBiosphere/broad-workflow-execution diff --git a/src/libs/routes.js b/src/libs/routes.js index 8978e40fe2..87beee50af 100644 --- a/src/libs/routes.js +++ b/src/libs/routes.js @@ -27,14 +27,14 @@ import * as UploadData from 'src/pages/UploadDataPage'; import * as WorkflowsList from 'src/pages/workflows/List'; import * as WorkflowDetails from 'src/pages/workflows/workflow/WorkflowDetails'; import * as WorkspaceList from 'src/pages/workspaces/List'; -import * as WorkspaceMigration from 'src/pages/workspaces/migration/WorkspaceMigration'; -import * as Dashboard from 'src/pages/workspaces/workspace/Dashboard/Dashboard'; import * as WorkspaceFiles from 'src/pages/workspaces/workspace/Files'; import * as JobHistory from 'src/pages/workspaces/workspace/JobHistory'; import * as SubmissionDetails from 'src/pages/workspaces/workspace/jobHistory/SubmissionDetails'; import * as WorkflowDashboard from 'src/pages/workspaces/workspace/jobHistory/WorkflowDashboard'; import * as Workflows from 'src/pages/workspaces/workspace/Workflows'; import * as WorkflowView from 'src/pages/workspaces/workspace/workflows/WorkflowView'; +import * as Dashboard from 'src/pages/workspaces/WorkspaceDashboard'; +import * as WorkspaceMigration from 'src/pages/workspaces/WorkspaceMigration'; import * as PrivacyPolicy from 'src/registration/privacy-policy/PrivacyPolicy'; import * as TermsOfService from 'src/registration/terms-of-service/TermsOfServicePage'; import * as WorkflowsApp from 'src/workflows-app/routes'; diff --git a/src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer.test.tsx b/src/pages/workspaces/DashboardAuthContainer.test.tsx similarity index 90% rename from src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer.test.tsx rename to src/pages/workspaces/DashboardAuthContainer.test.tsx index 37c2597dc6..32ddddba7b 100644 --- a/src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer.test.tsx +++ b/src/pages/workspaces/DashboardAuthContainer.test.tsx @@ -4,12 +4,9 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; import { Ajax } from 'src/libs/ajax'; import { AuthState, authStore } from 'src/libs/state'; -import { DashboardAuthContainer } from 'src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer'; -import { - WorkspaceDashboardPage, - WorkspaceDashboardPageProps, -} from 'src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage'; +import { DashboardAuthContainer } from 'src/pages/workspaces/DashboardAuthContainer'; import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; +import { WorkspaceDashboardPage, WorkspaceDashboardPageProps } from 'src/workspaces/dashboard/WorkspaceDashboardPage'; type AjaxContract = ReturnType; @@ -31,9 +28,9 @@ jest.mock('src/libs/nav', (): typeof import('src/libs/nav') => ({ getLink: jest.fn(), })); -type DashboardPageExports = typeof import('src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage'); +type DashboardPageExports = typeof import('src/workspaces/dashboard/WorkspaceDashboardPage'); jest.mock( - 'src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage', + 'src/workspaces/dashboard/WorkspaceDashboardPage', () => ({ WorkspaceDashboardPage: jest.fn(), diff --git a/src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer.tsx b/src/pages/workspaces/DashboardAuthContainer.tsx similarity index 89% rename from src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer.tsx rename to src/pages/workspaces/DashboardAuthContainer.tsx index ac6b283424..9f5e16505a 100644 --- a/src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer.tsx +++ b/src/pages/workspaces/DashboardAuthContainer.tsx @@ -6,8 +6,8 @@ import { Ajax } from 'src/libs/ajax'; import { useStore } from 'src/libs/react-utils'; import { authStore } from 'src/libs/state'; import SignIn from 'src/pages/SignIn'; -import { WorkspaceDashboardPage } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage'; -import DashboardPublic from 'src/pages/workspaces/workspace/DashboardPublic'; +import DashboardPublic from 'src/pages/workspaces/DashboardPublic'; +import { WorkspaceDashboardPage } from 'src/workspaces/dashboard/WorkspaceDashboardPage'; export interface DashboardAuthContainerProps { namespace: string; diff --git a/src/pages/workspaces/workspace/DashboardPublic.js b/src/pages/workspaces/DashboardPublic.js similarity index 100% rename from src/pages/workspaces/workspace/DashboardPublic.js rename to src/pages/workspaces/DashboardPublic.js diff --git a/src/pages/workspaces/workspace/Dashboard/Dashboard.ts b/src/pages/workspaces/WorkspaceDashboard.ts similarity index 67% rename from src/pages/workspaces/workspace/Dashboard/Dashboard.ts rename to src/pages/workspaces/WorkspaceDashboard.ts index afc87779d5..1033ea969f 100644 --- a/src/pages/workspaces/workspace/Dashboard/Dashboard.ts +++ b/src/pages/workspaces/WorkspaceDashboard.ts @@ -1,4 +1,4 @@ -import { DashboardAuthContainer } from 'src/pages/workspaces/workspace/Dashboard/DashboardAuthContainer'; +import { DashboardAuthContainer } from 'src/pages/workspaces/DashboardAuthContainer'; export const navPaths = [ { diff --git a/src/pages/workspaces/WorkspaceMigration.ts b/src/pages/workspaces/WorkspaceMigration.ts new file mode 100644 index 0000000000..d177805f94 --- /dev/null +++ b/src/pages/workspaces/WorkspaceMigration.ts @@ -0,0 +1,25 @@ +import { div, h } from 'react-hyperscript-helpers'; +import FooterWrapper from 'src/components/FooterWrapper'; +import TopBar from 'src/components/TopBar'; +import * as Nav from 'src/libs/nav'; +import { BillingProjectList } from 'src/workspaces/migration/BillingProjectList'; +import { MigrationInformation } from 'src/workspaces/migration/WorkspaceInformation'; + +const WorkspaceMigrationPage = () => { + return h(FooterWrapper, [ + h(TopBar, { title: 'Workspace Multi-Region Bucket Migrations', href: Nav.getLink('workspace-migration') }, []), + div({ role: 'main', style: { display: 'flex', flex: '1 1 auto', flexFlow: 'column' } }, [ + h(MigrationInformation, {}), + h(BillingProjectList, {}), + ]), + ]); +}; + +export const navPaths = [ + { + name: 'workspace-migration', + path: '/workspace-migration', + component: WorkspaceMigrationPage, + title: 'Workspace Migration', + }, +]; diff --git a/src/pages/workspaces/workspace/Dashboard/AuthDomainPanel.ts b/src/workspaces/dashboard/AuthDomainPanel.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/AuthDomainPanel.ts rename to src/workspaces/dashboard/AuthDomainPanel.ts diff --git a/src/pages/workspaces/workspace/Dashboard/AzureStorageDetails.test.ts b/src/workspaces/dashboard/AzureStorageDetails.test.ts similarity index 95% rename from src/pages/workspaces/workspace/Dashboard/AzureStorageDetails.test.ts rename to src/workspaces/dashboard/AzureStorageDetails.test.ts index f42f7ab32c..16179f5352 100644 --- a/src/pages/workspaces/workspace/Dashboard/AzureStorageDetails.test.ts +++ b/src/workspaces/dashboard/AzureStorageDetails.test.ts @@ -3,9 +3,9 @@ import { axe } from 'jest-axe'; import _ from 'lodash/fp'; import { dl, h } from 'react-hyperscript-helpers'; import { azureRegions } from 'src/libs/azure-regions'; -import { AzureStorageDetails } from 'src/pages/workspaces/workspace/Dashboard/AzureStorageDetails'; import { renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultAzureStorageOptions, defaultGoogleBucketOptions } from 'src/testing/workspace-fixtures'; +import { AzureStorageDetails } from 'src/workspaces/dashboard/AzureStorageDetails'; describe('AzureStorageDetails', () => { const azureContext = { diff --git a/src/pages/workspaces/workspace/Dashboard/AzureStorageDetails.ts b/src/workspaces/dashboard/AzureStorageDetails.ts similarity index 96% rename from src/pages/workspaces/workspace/Dashboard/AzureStorageDetails.ts rename to src/workspaces/dashboard/AzureStorageDetails.ts index 8f43ffe950..895700a860 100644 --- a/src/pages/workspaces/workspace/Dashboard/AzureStorageDetails.ts +++ b/src/workspaces/dashboard/AzureStorageDetails.ts @@ -5,8 +5,8 @@ import { TooltipCell } from 'src/components/table'; import { ReactComponent as AzureLogo } from 'src/images/azure.svg'; import { getRegionFlag, getRegionLabel } from 'src/libs/azure-utils'; import { AzureContext } from 'src/libs/workspace-utils'; -import { InfoRow } from 'src/pages/workspaces/workspace/Dashboard/InfoRow'; import { StorageDetails } from 'src/workspaces/common/state/useWorkspace'; +import { InfoRow } from 'src/workspaces/dashboard/InfoRow'; interface AzureStorageDetailsProps { azureContext: AzureContext; diff --git a/src/pages/workspaces/workspace/Dashboard/BucketLocation.test.ts b/src/workspaces/dashboard/BucketLocation.test.ts similarity index 98% rename from src/pages/workspaces/workspace/Dashboard/BucketLocation.test.ts rename to src/workspaces/dashboard/BucketLocation.test.ts index 1de7baf9f0..e6988238c5 100644 --- a/src/pages/workspaces/workspace/Dashboard/BucketLocation.test.ts +++ b/src/workspaces/dashboard/BucketLocation.test.ts @@ -7,7 +7,6 @@ import { h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; import Events, { extractWorkspaceDetails } from 'src/libs/events'; import { GoogleWorkspace } from 'src/libs/workspace-utils'; -import { BucketLocation } from 'src/pages/workspaces/workspace/Dashboard/BucketLocation'; import { renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultAzureStorageOptions, @@ -15,6 +14,7 @@ import { defaultGoogleWorkspace, mockBucketRequesterPaysError, } from 'src/testing/workspace-fixtures'; +import { BucketLocation } from 'src/workspaces/dashboard/BucketLocation'; type AjaxContract = ReturnType; diff --git a/src/pages/workspaces/workspace/Dashboard/BucketLocation.ts b/src/workspaces/dashboard/BucketLocation.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/BucketLocation.ts rename to src/workspaces/dashboard/BucketLocation.ts diff --git a/src/pages/workspaces/workspace/Dashboard/CloudInformation.test.ts b/src/workspaces/dashboard/CloudInformation.test.ts similarity index 97% rename from src/pages/workspaces/workspace/Dashboard/CloudInformation.test.ts rename to src/workspaces/dashboard/CloudInformation.test.ts index 99bc4f1932..1322b20684 100644 --- a/src/pages/workspaces/workspace/Dashboard/CloudInformation.test.ts +++ b/src/workspaces/dashboard/CloudInformation.test.ts @@ -3,7 +3,6 @@ import { asMockedFn } from '@terra-ui-packages/test-utils'; import { act, screen } from '@testing-library/react'; import { h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; -import { CloudInformation } from 'src/pages/workspaces/workspace/Dashboard/CloudInformation'; import { renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultAzureStorageOptions, @@ -12,6 +11,7 @@ import { defaultGoogleWorkspace, } from 'src/testing/workspace-fixtures'; import { StorageDetails } from 'src/workspaces/common/state/useWorkspace'; +import { CloudInformation } from 'src/workspaces/dashboard/CloudInformation'; type AjaxContract = ReturnType; type AjaxExports = typeof import('src/libs/ajax'); diff --git a/src/pages/workspaces/workspace/Dashboard/CloudInformation.ts b/src/workspaces/dashboard/CloudInformation.ts similarity index 96% rename from src/pages/workspaces/workspace/Dashboard/CloudInformation.ts rename to src/workspaces/dashboard/CloudInformation.ts index bdc34cb683..d61b7a0c56 100644 --- a/src/pages/workspaces/workspace/Dashboard/CloudInformation.ts +++ b/src/workspaces/dashboard/CloudInformation.ts @@ -19,10 +19,10 @@ import { isAzureWorkspace, isGoogleWorkspace, } from 'src/libs/workspace-utils'; -import { AzureStorageDetails } from 'src/pages/workspaces/workspace/Dashboard/AzureStorageDetails'; -import { BucketLocation } from 'src/pages/workspaces/workspace/Dashboard/BucketLocation'; -import { InfoRow } from 'src/pages/workspaces/workspace/Dashboard/InfoRow'; import { InitializedWorkspaceWrapper as Workspace, StorageDetails } from 'src/workspaces/common/state/useWorkspace'; +import { AzureStorageDetails } from 'src/workspaces/dashboard/AzureStorageDetails'; +import { BucketLocation } from 'src/workspaces/dashboard/BucketLocation'; +import { InfoRow } from 'src/workspaces/dashboard/InfoRow'; interface CloudInformationProps { storageDetails: StorageDetails; diff --git a/src/pages/workspaces/workspace/Dashboard/DatasetAttributes.test.ts b/src/workspaces/dashboard/DatasetAttributes.test.ts similarity index 93% rename from src/pages/workspaces/workspace/Dashboard/DatasetAttributes.test.ts rename to src/workspaces/dashboard/DatasetAttributes.test.ts index 3201f38b48..2a634228a2 100644 --- a/src/pages/workspaces/workspace/Dashboard/DatasetAttributes.test.ts +++ b/src/workspaces/dashboard/DatasetAttributes.test.ts @@ -1,4 +1,4 @@ -import { displayAttributeValue } from 'src/pages/workspaces/workspace/Dashboard/DatasetAttributes'; +import { displayAttributeValue } from 'src/workspaces/dashboard/DatasetAttributes'; describe('displayAttributeValue', () => { it('should join array elements with comma', () => { diff --git a/src/pages/workspaces/workspace/Dashboard/DatasetAttributes.ts b/src/workspaces/dashboard/DatasetAttributes.ts similarity index 98% rename from src/pages/workspaces/workspace/Dashboard/DatasetAttributes.ts rename to src/workspaces/dashboard/DatasetAttributes.ts index 4efafd2a9c..854cac8f29 100644 --- a/src/pages/workspaces/workspace/Dashboard/DatasetAttributes.ts +++ b/src/workspaces/dashboard/DatasetAttributes.ts @@ -7,7 +7,7 @@ import { SimpleTable } from 'src/components/table'; import * as Style from 'src/libs/style'; import { append } from 'src/libs/utils'; import { WorkspaceInfo } from 'src/libs/workspace-utils'; -import { displayConsentCodes, displayLibraryAttributes } from 'src/pages/workspaces/workspace/library-attributes'; +import { displayConsentCodes, displayLibraryAttributes } from 'src/workspaces/dashboard/library-attributes'; interface DatasetAttributesProps { attributes: WorkspaceInfo['attributes']; diff --git a/src/pages/workspaces/workspace/Dashboard/InfoRow.ts b/src/workspaces/dashboard/InfoRow.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/InfoRow.ts rename to src/workspaces/dashboard/InfoRow.ts diff --git a/src/pages/workspaces/workspace/Dashboard/OwnerNotice.ts b/src/workspaces/dashboard/OwnerNotice.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/OwnerNotice.ts rename to src/workspaces/dashboard/OwnerNotice.ts diff --git a/src/pages/workspaces/workspace/Dashboard/RightBoxSection.test.tsx b/src/workspaces/dashboard/RightBoxSection.test.tsx similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/RightBoxSection.test.tsx rename to src/workspaces/dashboard/RightBoxSection.test.tsx diff --git a/src/pages/workspaces/workspace/Dashboard/RightBoxSection.ts b/src/workspaces/dashboard/RightBoxSection.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/RightBoxSection.ts rename to src/workspaces/dashboard/RightBoxSection.ts diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard.test.tsx b/src/workspaces/dashboard/WorkspaceDashboard.test.tsx similarity index 96% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard.test.tsx rename to src/workspaces/dashboard/WorkspaceDashboard.test.tsx index 5cce2acbf8..2b5d381b78 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard.test.tsx +++ b/src/workspaces/dashboard/WorkspaceDashboard.test.tsx @@ -1,9 +1,9 @@ import { screen } from '@testing-library/react'; import React from 'react'; -import { WorkspaceDashboard } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard'; import { renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultGoogleBucketOptions, defaultGoogleWorkspace } from 'src/testing/workspace-fixtures'; import { InitializedWorkspaceWrapper as Workspace, StorageDetails } from 'src/workspaces/common/state/useWorkspace'; +import { WorkspaceDashboard } from 'src/workspaces/dashboard/WorkspaceDashboard'; describe('WorkspaceDashboard', () => { const storageDetails: StorageDetails = { diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard.ts b/src/workspaces/dashboard/WorkspaceDashboard.ts similarity index 79% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard.ts rename to src/workspaces/dashboard/WorkspaceDashboard.ts index bb3ab7c6cb..029602dba1 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard.ts +++ b/src/workspaces/dashboard/WorkspaceDashboard.ts @@ -4,16 +4,16 @@ import { forwardRef, ReactNode } from 'react'; import { div, h } from 'react-hyperscript-helpers'; import * as Style from 'src/libs/style'; import { canEditWorkspace, isGoogleWorkspace } from 'src/libs/workspace-utils'; -import { AuthDomainPanel } from 'src/pages/workspaces/workspace/Dashboard/AuthDomainPanel'; -import { CloudInformation } from 'src/pages/workspaces/workspace/Dashboard/CloudInformation'; -import { DatasetAttributes } from 'src/pages/workspaces/workspace/Dashboard/DatasetAttributes'; -import { OwnerNotice } from 'src/pages/workspaces/workspace/Dashboard/OwnerNotice'; -import { RightBoxSection } from 'src/pages/workspaces/workspace/Dashboard/RightBoxSection'; -import { WorkspaceDescription } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceDescription'; -import { WorkspaceInformation } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceInformation'; -import { WorkspaceNotifications } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications'; -import { WorkspaceTags } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceTags'; import { InitializedWorkspaceWrapper as Workspace, StorageDetails } from 'src/workspaces/common/state/useWorkspace'; +import { AuthDomainPanel } from 'src/workspaces/dashboard/AuthDomainPanel'; +import { CloudInformation } from 'src/workspaces/dashboard/CloudInformation'; +import { DatasetAttributes } from 'src/workspaces/dashboard/DatasetAttributes'; +import { OwnerNotice } from 'src/workspaces/dashboard/OwnerNotice'; +import { RightBoxSection } from 'src/workspaces/dashboard/RightBoxSection'; +import { WorkspaceDescription } from 'src/workspaces/dashboard/WorkspaceDescription'; +import { WorkspaceInformation } from 'src/workspaces/dashboard/WorkspaceInformation'; +import { WorkspaceNotifications } from 'src/workspaces/dashboard/WorkspaceNotifications'; +import { WorkspaceTags } from 'src/workspaces/dashboard/WorkspaceTags'; export interface WorkspaceDashboardProps { namespace: string; diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage.ts b/src/workspaces/dashboard/WorkspaceDashboardPage.ts similarity index 83% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage.ts rename to src/workspaces/dashboard/WorkspaceDashboardPage.ts index 6170b741eb..ea68bfab72 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceDashboardPage.ts +++ b/src/workspaces/dashboard/WorkspaceDashboardPage.ts @@ -1,7 +1,7 @@ import { ReactNode } from 'react'; import * as breadcrumbs from 'src/components/breadcrumbs'; -import { WorkspaceDashboard } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceDashboard'; import { wrapWorkspace } from 'src/workspaces/container/WorkspaceContainer'; +import { WorkspaceDashboard } from 'src/workspaces/dashboard/WorkspaceDashboard'; export interface WorkspaceDashboardPageProps { namespace: string; diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceDescription.test.ts b/src/workspaces/dashboard/WorkspaceDescription.test.ts similarity index 98% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceDescription.test.ts rename to src/workspaces/dashboard/WorkspaceDescription.test.ts index d731e57762..821f808de7 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceDescription.test.ts +++ b/src/workspaces/dashboard/WorkspaceDescription.test.ts @@ -8,9 +8,9 @@ import { MarkdownEditor } from 'src/components/markdown'; import { Ajax } from 'src/libs/ajax'; import Events, { extractWorkspaceDetails } from 'src/libs/events'; import { canEditWorkspace } from 'src/libs/workspace-utils'; -import { WorkspaceDescription } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceDescription'; import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultGoogleWorkspace } from 'src/testing/workspace-fixtures'; +import { WorkspaceDescription } from 'src/workspaces/dashboard/WorkspaceDescription'; jest.mock('src/libs/error'); diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceDescription.ts b/src/workspaces/dashboard/WorkspaceDescription.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceDescription.ts rename to src/workspaces/dashboard/WorkspaceDescription.ts diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceInformation.test.ts b/src/workspaces/dashboard/WorkspaceInformation.test.ts similarity index 98% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceInformation.test.ts rename to src/workspaces/dashboard/WorkspaceInformation.test.ts index b46fdb42c8..5412ca1cbf 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceInformation.test.ts +++ b/src/workspaces/dashboard/WorkspaceInformation.test.ts @@ -4,7 +4,6 @@ import { axe } from 'jest-axe'; import { h } from 'react-hyperscript-helpers'; import { azureRegions } from 'src/libs/azure-regions'; import { WorkspacePolicy } from 'src/libs/workspace-utils'; -import { WorkspaceInformation } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceInformation'; import { renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultAzureWorkspace, @@ -13,6 +12,7 @@ import { protectedGoogleWorkspace, regionRestrictedAzureWorkspace, } from 'src/testing/workspace-fixtures'; +import { WorkspaceInformation } from 'src/workspaces/dashboard/WorkspaceInformation'; jest.mock('src/libs/ajax'); diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceInformation.ts b/src/workspaces/dashboard/WorkspaceInformation.ts similarity index 94% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceInformation.ts rename to src/workspaces/dashboard/WorkspaceInformation.ts index 626d1145f5..70f4a2d1a5 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceInformation.ts +++ b/src/workspaces/dashboard/WorkspaceInformation.ts @@ -3,8 +3,8 @@ import _ from 'lodash/fp'; import { ReactNode } from 'react'; import { dl, h } from 'react-hyperscript-helpers'; import { getPolicyDescriptions } from 'src/libs/workspace-utils'; -import { InfoRow } from 'src/pages/workspaces/workspace/Dashboard/InfoRow'; import { InitializedWorkspaceWrapper as Workspace } from 'src/workspaces/common/state/useWorkspace'; +import { InfoRow } from 'src/workspaces/dashboard/InfoRow'; const roleString = { READER: 'Reader', diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications.test.ts b/src/workspaces/dashboard/WorkspaceNotifications.test.ts similarity index 97% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications.test.ts rename to src/workspaces/dashboard/WorkspaceNotifications.test.ts index 08a0fc5ddf..75c1c1100c 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications.test.ts +++ b/src/workspaces/dashboard/WorkspaceNotifications.test.ts @@ -5,9 +5,9 @@ import { axe } from 'jest-axe'; import { h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; import { userStore } from 'src/libs/state'; -import { WorkspaceNotifications } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications'; import { renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultGoogleWorkspace } from 'src/testing/workspace-fixtures'; +import { WorkspaceNotifications } from 'src/workspaces/dashboard/WorkspaceNotifications'; type AjaxContract = ReturnType; diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications.ts b/src/workspaces/dashboard/WorkspaceNotifications.ts similarity index 100% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceNotifications.ts rename to src/workspaces/dashboard/WorkspaceNotifications.ts diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceTags.test.ts b/src/workspaces/dashboard/WorkspaceTags.test.ts similarity index 98% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceTags.test.ts rename to src/workspaces/dashboard/WorkspaceTags.test.ts index fa0fa088ce..b2a78f2e12 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceTags.test.ts +++ b/src/workspaces/dashboard/WorkspaceTags.test.ts @@ -4,9 +4,9 @@ import userEvent from '@testing-library/user-event'; import { h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; import Events, { extractWorkspaceDetails } from 'src/libs/events'; -import { WorkspaceTags } from 'src/pages/workspaces/workspace/Dashboard/WorkspaceTags'; import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; import { defaultGoogleWorkspace } from 'src/testing/workspace-fixtures'; +import { WorkspaceTags } from 'src/workspaces/dashboard/WorkspaceTags'; type AjaxContract = ReturnType; type AjaxExports = typeof import('src/libs/ajax'); diff --git a/src/pages/workspaces/workspace/Dashboard/WorkspaceTags.ts b/src/workspaces/dashboard/WorkspaceTags.ts similarity index 97% rename from src/pages/workspaces/workspace/Dashboard/WorkspaceTags.ts rename to src/workspaces/dashboard/WorkspaceTags.ts index 1749d577c8..8f329120a7 100644 --- a/src/pages/workspaces/workspace/Dashboard/WorkspaceTags.ts +++ b/src/workspaces/dashboard/WorkspaceTags.ts @@ -11,8 +11,8 @@ import { withErrorReporting } from 'src/libs/error'; import Events, { extractWorkspaceDetails } from 'src/libs/events'; import * as Style from 'src/libs/style'; import { withBusyState } from 'src/libs/utils'; -import { RightBoxSection } from 'src/pages/workspaces/workspace/Dashboard/RightBoxSection'; import { InitializedWorkspaceWrapper as Workspace } from 'src/workspaces/common/state/useWorkspace'; +import { RightBoxSection } from 'src/workspaces/dashboard/RightBoxSection'; const styles: Record = { authDomain: { diff --git a/src/pages/workspaces/workspace/library-attributes.ts b/src/workspaces/dashboard/library-attributes.ts similarity index 100% rename from src/pages/workspaces/workspace/library-attributes.ts rename to src/workspaces/dashboard/library-attributes.ts diff --git a/src/pages/workspaces/migration/BillingProjectList.test.ts b/src/workspaces/migration/BillingProjectList.test.ts similarity index 95% rename from src/pages/workspaces/migration/BillingProjectList.test.ts rename to src/workspaces/migration/BillingProjectList.test.ts index 9cdd078ab1..7a4c662e7b 100644 --- a/src/pages/workspaces/migration/BillingProjectList.test.ts +++ b/src/workspaces/migration/BillingProjectList.test.ts @@ -2,9 +2,9 @@ import { abandonedPromise } from '@terra-ui-packages/core-utils'; import { act, screen, within } from '@testing-library/react'; import { h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; -import { BillingProjectList, inProgressRefreshRate } from 'src/pages/workspaces/migration/BillingProjectList'; -import { mockServerData } from 'src/pages/workspaces/migration/migration-utils.test'; import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; +import { BillingProjectList, inProgressRefreshRate } from 'src/workspaces/migration/BillingProjectList'; +import { mockServerData } from 'src/workspaces/migration/migration-utils.test'; type AjaxContract = ReturnType; type AjaxWorkspacesContract = AjaxContract['Workspaces']; diff --git a/src/pages/workspaces/migration/BillingProjectList.ts b/src/workspaces/migration/BillingProjectList.ts similarity index 96% rename from src/pages/workspaces/migration/BillingProjectList.ts rename to src/workspaces/migration/BillingProjectList.ts index 90eee26818..16c5090be5 100644 --- a/src/pages/workspaces/migration/BillingProjectList.ts +++ b/src/workspaces/migration/BillingProjectList.ts @@ -7,14 +7,14 @@ import colors from 'src/libs/colors'; import { reportErrorAndRethrow, withErrorIgnoring } from 'src/libs/error'; import { useCancellation, useGetter } from 'src/libs/react-utils'; import * as Utils from 'src/libs/utils'; -import { BillingProjectParent } from 'src/pages/workspaces/migration/BillingProjectParent'; +import { BillingProjectParent } from 'src/workspaces/migration/BillingProjectParent'; import { BillingProjectMigrationInfo, mergeBillingProjectMigrationInfo, mergeWorkspacesWithNamespaces, parseServerResponse, WorkspaceWithNamespace, -} from 'src/pages/workspaces/migration/migration-utils'; +} from 'src/workspaces/migration/migration-utils'; export const inProgressRefreshRate = 10000; diff --git a/src/pages/workspaces/migration/BillingProjectParent.test.ts b/src/workspaces/migration/BillingProjectParent.test.ts similarity index 97% rename from src/pages/workspaces/migration/BillingProjectParent.test.ts rename to src/workspaces/migration/BillingProjectParent.test.ts index d4b254a46b..f5d2976e04 100644 --- a/src/pages/workspaces/migration/BillingProjectParent.test.ts +++ b/src/workspaces/migration/BillingProjectParent.test.ts @@ -3,14 +3,14 @@ import userEvent from '@testing-library/user-event'; import { axe } from 'jest-axe'; import { div, h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; -import { BillingProjectParent } from 'src/pages/workspaces/migration/BillingProjectParent'; -import { WorkspaceMigrationInfo } from 'src/pages/workspaces/migration/migration-utils'; +import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; +import { BillingProjectParent } from 'src/workspaces/migration/BillingProjectParent'; +import { WorkspaceMigrationInfo } from 'src/workspaces/migration/migration-utils'; import { bpWithFailed, bpWithInProgress, bpWithSucceededAndUnscheduled, -} from 'src/pages/workspaces/migration/migration-utils.test'; -import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; +} from 'src/workspaces/migration/migration-utils.test'; type AjaxContract = ReturnType; type AjaxWorkspacesContract = AjaxContract['Workspaces']; diff --git a/src/pages/workspaces/migration/BillingProjectParent.ts b/src/workspaces/migration/BillingProjectParent.ts similarity index 97% rename from src/pages/workspaces/migration/BillingProjectParent.ts rename to src/workspaces/migration/BillingProjectParent.ts index de5756d66e..887db717d9 100644 --- a/src/pages/workspaces/migration/BillingProjectParent.ts +++ b/src/workspaces/migration/BillingProjectParent.ts @@ -16,8 +16,8 @@ import { inProgressIcon, successIcon, WorkspaceWithNamespace, -} from 'src/pages/workspaces/migration/migration-utils'; -import { WorkspaceItem } from 'src/pages/workspaces/migration/WorkspaceItem'; +} from 'src/workspaces/migration/migration-utils'; +import { WorkspaceItem } from 'src/workspaces/migration/WorkspaceItem'; import { useMemo } from 'use-memo-one'; interface MigrateAllConfirmationProps { diff --git a/src/pages/workspaces/migration/WorkspaceMigration.ts b/src/workspaces/migration/WorkspaceInformation.ts similarity index 78% rename from src/pages/workspaces/migration/WorkspaceMigration.ts rename to src/workspaces/migration/WorkspaceInformation.ts index 19a9afaf9d..b087f0dd65 100644 --- a/src/pages/workspaces/migration/WorkspaceMigration.ts +++ b/src/workspaces/migration/WorkspaceInformation.ts @@ -2,16 +2,12 @@ import { icon, Link } from '@terra-ui-packages/components'; import { useEffect, useState } from 'react'; import { div, h, h2, p } from 'react-hyperscript-helpers'; import Collapse from 'src/components/Collapse'; -import FooterWrapper from 'src/components/FooterWrapper'; -import TopBar from 'src/components/TopBar'; import colors from 'src/libs/colors'; -import * as Nav from 'src/libs/nav'; import { getLocalPref, setLocalPref } from 'src/libs/prefs'; import * as Style from 'src/libs/style'; import * as Utils from 'src/libs/utils'; -import { BillingProjectList } from 'src/pages/workspaces/migration/BillingProjectList'; -const MigrationInformation = () => { +export const MigrationInformation = () => { const persistenceId = 'multiregionBucketMigration'; const [infoPanelOpen, setInfoPanelOpen] = useState(() => getLocalPref(persistenceId)?.infoPanelOpen); @@ -69,22 +65,3 @@ const MigrationInformation = () => { ]), ]); }; - -export const WorkspaceMigrationPage = () => { - return h(FooterWrapper, [ - h(TopBar, { title: 'Workspace Multi-Region Bucket Migrations', href: Nav.getLink('workspace-migration') }, []), - div({ role: 'main', style: { display: 'flex', flex: '1 1 auto', flexFlow: 'column' } }, [ - h(MigrationInformation, {}), - h(BillingProjectList, {}), - ]), - ]); -}; - -export const navPaths = [ - { - name: 'workspace-migration', - path: '/workspace-migration', - component: WorkspaceMigrationPage, - title: 'Workspace Migration', - }, -]; diff --git a/src/pages/workspaces/migration/WorkspaceItem.test.ts b/src/workspaces/migration/WorkspaceItem.test.ts similarity index 98% rename from src/pages/workspaces/migration/WorkspaceItem.test.ts rename to src/workspaces/migration/WorkspaceItem.test.ts index 570b9f8ee8..ebef776fa8 100644 --- a/src/pages/workspaces/migration/WorkspaceItem.test.ts +++ b/src/workspaces/migration/WorkspaceItem.test.ts @@ -4,9 +4,9 @@ import userEvent from '@testing-library/user-event'; import { axe } from 'jest-axe'; import { h } from 'react-hyperscript-helpers'; import { Ajax } from 'src/libs/ajax'; -import { MigrationStep, WorkspaceMigrationInfo } from 'src/pages/workspaces/migration/migration-utils'; -import { WorkspaceItem } from 'src/pages/workspaces/migration/WorkspaceItem'; import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils'; +import { MigrationStep, WorkspaceMigrationInfo } from 'src/workspaces/migration/migration-utils'; +import { WorkspaceItem } from 'src/workspaces/migration/WorkspaceItem'; type AjaxContract = ReturnType; type AjaxWorkspacesContract = AjaxContract['Workspaces']; diff --git a/src/pages/workspaces/migration/WorkspaceItem.ts b/src/workspaces/migration/WorkspaceItem.ts similarity index 99% rename from src/pages/workspaces/migration/WorkspaceItem.ts rename to src/workspaces/migration/WorkspaceItem.ts index 76ceca4a7d..e779234d4b 100644 --- a/src/pages/workspaces/migration/WorkspaceItem.ts +++ b/src/workspaces/migration/WorkspaceItem.ts @@ -15,7 +15,7 @@ import { successIcon, WorkspaceMigrationInfo, WorkspaceWithNamespace, -} from 'src/pages/workspaces/migration/migration-utils'; +} from 'src/workspaces/migration/migration-utils'; interface MigrateConfirmationProps { onDismiss: () => void; diff --git a/src/pages/workspaces/migration/migration-utils.test.ts b/src/workspaces/migration/migration-utils.test.ts similarity index 99% rename from src/pages/workspaces/migration/migration-utils.test.ts rename to src/workspaces/migration/migration-utils.test.ts index bce822a591..ece5ca67a3 100644 --- a/src/pages/workspaces/migration/migration-utils.test.ts +++ b/src/workspaces/migration/migration-utils.test.ts @@ -6,7 +6,7 @@ import { mergeWorkspacesWithNamespaces, parseServerResponse, WorkspaceMigrationInfo, -} from 'src/pages/workspaces/migration/migration-utils'; +} from 'src/workspaces/migration/migration-utils'; export const mockServerData = { 'CARBilling-2/notmigrated': null, diff --git a/src/pages/workspaces/migration/migration-utils.ts b/src/workspaces/migration/migration-utils.ts similarity index 100% rename from src/pages/workspaces/migration/migration-utils.ts rename to src/workspaces/migration/migration-utils.ts