Skip to content

Commit c41981c

Browse files
authored
[AN-160] Reorganize methods repository files (#5155)
1 parent d2ef58d commit c41981c

28 files changed

+102
-84
lines changed

src/libs/ajax/methods/Methods.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@ import _ from 'lodash/fp';
33
import * as qs from 'qs';
44
import { authOpts } from 'src/auth/auth-session';
55
import { fetchAgora, fetchOrchestration, fetchRawls } from 'src/libs/ajax/ajax-common';
6-
import { MethodQuery, MethodResponse } from 'src/libs/ajax/methods/methods-models';
7-
import { Snapshot } from 'src/snapshots/Snapshot';
6+
import {
7+
MethodConfigACL,
8+
MethodDefinition,
9+
MethodQuery,
10+
MethodResponse,
11+
Snapshot,
12+
} from 'src/libs/ajax/methods/methods-models';
813

914
export const Methods = (signal?: AbortSignal) => ({
1015
list: async (params): Promise<Snapshot[]> => {
1116
const res = await fetchAgora(`methods?${qs.stringify(params)}`, _.merge(authOpts(), { signal }));
1217
return res.json();
1318
},
1419

15-
definitions: async () => {
20+
definitions: async (): Promise<MethodDefinition[]> => {
1621
const res = await fetchAgora('methods/definitions', _.merge(authOpts(), { signal }));
1722
return res.json();
1823
},
@@ -60,12 +65,12 @@ export const Methods = (signal?: AbortSignal) => ({
6065
return res.json();
6166
},
6267

63-
permissions: async () => {
68+
permissions: async (): Promise<MethodConfigACL> => {
6469
const res = await fetchOrchestration(`api/${root}/permissions`, _.merge(authOpts(), { signal }));
6570
return res.json();
6671
},
6772

68-
setPermissions: async (payload) => {
73+
setPermissions: async (payload: MethodConfigACL): Promise<MethodConfigACL> => {
6974
const res = await fetchOrchestration(
7075
`api/${root}/permissions`,
7176
_.mergeAll([authOpts(), jsonBody(payload), { signal, method: 'POST' }])

src/libs/ajax/methods/methods-models.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
1+
/**
2+
* Type for Agora's MethodDefinition schema.
3+
*/
4+
export interface MethodDefinition {
5+
namespace: string;
6+
name: string;
7+
synopsis: string;
8+
managers: string[];
9+
public: boolean;
10+
numConfigurations: number;
11+
numSnapshots: number;
12+
entityType: string;
13+
}
14+
15+
/**
16+
* Corresponds to Agora's MethodResponse schema. Represents information about
17+
* a method snapshot in the Broad Methods Repository.
18+
*/
19+
export interface Snapshot {
20+
managers: string[];
21+
name: string;
22+
createDate: string;
23+
documentation?: string;
24+
entityType: string;
25+
snapshotComment: string;
26+
snapshotId: number;
27+
namespace: string;
28+
payload: string;
29+
url: string;
30+
public: boolean | undefined;
31+
synopsis: string;
32+
}
33+
134
/**
235
* Type for Orchestration's MethodQuery schema.
336
*
@@ -35,3 +68,14 @@ export interface MethodResponse {
3568
payload?: string;
3669
entityType?: string;
3770
}
71+
72+
export type WorkflowAccessLevel = 'NO ACCESS' | 'READER' | 'OWNER';
73+
export interface WorkflowUserPermissions {
74+
user: string;
75+
role: WorkflowAccessLevel;
76+
}
77+
78+
/**
79+
* Type for Orchestration's MethodConfigACL schema.
80+
*/
81+
export type MethodConfigACL = WorkflowUserPermissions[];

src/libs/routes.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ import * as DatasetBuilder from 'src/pages/library/dataset-builder/DatasetBuilde
2222
import * as Datasets from 'src/pages/library/Datasets';
2323
import * as DataExplorer from 'src/pages/library/datasets/DataExplorer';
2424
import * as Showcase from 'src/pages/library/Showcase';
25+
import * as WorkflowDetails from 'src/pages/methods/workflow-details/WorkflowSummary';
26+
import * as WorkflowWdl from 'src/pages/methods/workflow-details/WorkflowWdl';
27+
import * as WorkflowList from 'src/pages/methods/WorkflowList';
2528
import * as NotFound from 'src/pages/NotFound';
2629
import * as Profile from 'src/pages/ProfilePage';
2730
import * as Support from 'src/pages/SupportPage';
2831
import * as UploadData from 'src/pages/UploadDataPage';
29-
import * as WorkflowDetails from 'src/pages/workflows/workflow/WorkflowSummary';
30-
import * as WorkflowWdl from 'src/pages/workflows/workflow/WorkflowWdl';
31-
import * as WorkflowList from 'src/pages/workflows/WorkflowList';
3232
import * as WorkspaceList from 'src/pages/workspaces/List';
3333
import * as WorkspaceFiles from 'src/pages/workspaces/workspace/Files';
3434
import * as JobHistory from 'src/pages/workspaces/workspace/JobHistory';

src/libs/state.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import { AuthTokenState } from 'src/auth/auth';
55
import { OidcUser } from 'src/auth/oidc-broker';
66
import { Dataset } from 'src/libs/ajax/Catalog';
77
import { EcmLinkAccountResponse } from 'src/libs/ajax/ExternalCredentials';
8+
import { Snapshot } from 'src/libs/ajax/methods/methods-models';
89
import { OidcConfig } from 'src/libs/ajax/OAuth2';
910
import { SamTermsOfServiceConfig } from 'src/libs/ajax/TermsOfService';
1011
import { NihDatasetPermission, SamUserAllowances, SamUserAttributes, SamUserResponse } from 'src/libs/ajax/User';
1112
import { getLocalStorage, getSessionStorage, staticStorageSlot } from 'src/libs/browser-storage';
12-
import { Snapshot } from 'src/snapshots/Snapshot';
1313
import type { WorkspaceInfo, WorkspaceWrapper } from 'src/workspaces/utils';
1414

1515
export const routeHandlersStore = atom<unknown[]>([]);

src/pages/workflows/WorkflowList.test.tsx renamed to src/pages/methods/WorkflowList.test.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import React from 'react';
66
import { Ajax, AjaxContract } from 'src/libs/ajax';
77
import { MethodsAjaxContract } from 'src/libs/ajax/methods/Methods';
88
import { MethodResponse } from 'src/libs/ajax/methods/methods-models';
9+
import { MethodDefinition } from 'src/libs/ajax/methods/methods-models';
910
import { createMethodProvider } from 'src/libs/ajax/methods/providers/CreateMethodProvider';
1011
import * as Nav from 'src/libs/nav';
1112
import { getLink } from 'src/libs/nav';
1213
import { notify } from 'src/libs/notifications';
1314
import { TerraUser, TerraUserState, userStore } from 'src/libs/state';
14-
import { MethodDefinition } from 'src/pages/workflows/workflow-utils';
15-
import { WorkflowList } from 'src/pages/workflows/WorkflowList';
15+
import { WorkflowList } from 'src/pages/methods/WorkflowList';
1616
import { asMockedFn, renderWithAppContexts as render } from 'src/testing/test-utils';
1717

1818
jest.mock('src/libs/ajax');
@@ -23,9 +23,9 @@ jest.mock('src/libs/nav', () => ({
2323
goToPath: jest.fn(),
2424
}));
2525

26-
type WDLEditorExports = typeof import('src/pages/workflows/common/WDLEditor');
27-
jest.mock('src/pages/workflows/common/WDLEditor', (): WDLEditorExports => {
28-
const mockWDLEditorModule = jest.requireActual('src/pages/workflows/common/WDLEditor.mock');
26+
type WDLEditorExports = typeof import('src/workflows/methods/WDLEditor');
27+
jest.mock('src/workflows/methods/WDLEditor', (): WDLEditorExports => {
28+
const mockWDLEditorModule = jest.requireActual('src/workflows/methods/WDLEditor.mock');
2929
return {
3030
WDLEditor: mockWDLEditorModule.MockWDLEditor,
3131
};

src/pages/workflows/WorkflowList.tsx renamed to src/pages/methods/WorkflowList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import { TabBar } from 'src/components/tabBars';
1010
import { FlexTable, HeaderCell, Paginator, Sortable, TooltipCell } from 'src/components/table';
1111
import { TopBar } from 'src/components/TopBar';
1212
import { Ajax } from 'src/libs/ajax';
13+
import { MethodDefinition } from 'src/libs/ajax/methods/methods-models';
1314
import { createMethodProvider } from 'src/libs/ajax/methods/providers/CreateMethodProvider';
1415
import * as Nav from 'src/libs/nav';
1516
import { notify } from 'src/libs/notifications';
1617
import { useCancellation, useOnMount } from 'src/libs/react-utils';
1718
import { getTerraUser } from 'src/libs/state';
1819
import * as Utils from 'src/libs/utils';
1920
import { withBusyState } from 'src/libs/utils';
20-
import { WorkflowModal } from 'src/pages/workflows/workflow/common/WorkflowModal';
21-
import { MethodDefinition } from 'src/pages/workflows/workflow-utils';
21+
import { WorkflowModal } from 'src/workflows/methods/modals/WorkflowModal';
2222

2323
// Note: The first tab key in this array will determine the default tab selected
2424
// if the tab query parameter is not present or has an invalid value (and when

src/pages/workflows/workflow/WorkflowSummary.test.ts renamed to src/pages/methods/workflow-details/WorkflowSummary.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { fireEvent, screen } from '@testing-library/react';
22
import { h } from 'react-hyperscript-helpers';
33
import { snapshotStore } from 'src/libs/state';
4-
import { BaseWorkflowSummary } from 'src/pages/workflows/workflow/WorkflowSummary';
4+
import { BaseWorkflowSummary } from 'src/pages/methods/workflow-details/WorkflowSummary';
55
import { renderWithAppContexts } from 'src/testing/test-utils';
66

77
jest.mock('src/libs/notifications');

src/pages/workflows/workflow/WorkflowSummary.ts renamed to src/pages/methods/workflow-details/WorkflowSummary.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import { withErrorReporting } from 'src/libs/error';
1212
import { forwardRefWithName, useStore } from 'src/libs/react-utils';
1313
import { snapshotStore } from 'src/libs/state';
1414
import * as Style from 'src/libs/style';
15-
import { WorkflowRightBoxSection } from 'src/pages/workflows/components/WorkflowRightBoxSection';
16-
import { wrapWorkflows } from 'src/pages/workflows/workflow/WorkflowWrapper';
15+
import { wrapWorkflows } from 'src/pages/methods/workflow-details/WorkflowWrapper';
16+
import { WorkflowRightBoxSection } from 'src/workflows/methods/WorkflowRightBoxSection';
1717
import { InfoRow } from 'src/workspaces/dashboard/InfoRow';
1818

1919
export const BaseWorkflowSummary = () => {

src/pages/workflows/workflow/WorkflowWdl.test.ts renamed to src/pages/methods/workflow-details/WorkflowWdl.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { screen } from '@testing-library/react';
22
import { h } from 'react-hyperscript-helpers';
33
import { snapshotStore } from 'src/libs/state';
4-
import { BaseWorkflowWdl } from 'src/pages/workflows/workflow/WorkflowWdl';
4+
import { BaseWorkflowWdl } from 'src/pages/methods/workflow-details/WorkflowWdl';
55
import { renderWithAppContexts } from 'src/testing/test-utils';
66

77
jest.mock('src/libs/ajax');

src/pages/workflows/workflow/WorkflowWdl.ts renamed to src/pages/methods/workflow-details/WorkflowWdl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as breadcrumbs from 'src/components/breadcrumbs';
77
import WDLViewer from 'src/components/WDLViewer';
88
import { forwardRefWithName } from 'src/libs/react-utils';
99
import { snapshotStore } from 'src/libs/state';
10-
import { wrapWorkflows } from 'src/pages/workflows/workflow/WorkflowWrapper';
10+
import { wrapWorkflows } from 'src/pages/methods/workflow-details/WorkflowWrapper';
1111

1212
export const BaseWorkflowWdl = () => {
1313
const { name, snapshotId, payload } = useStore(snapshotStore);

0 commit comments

Comments
 (0)