X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/d5d8ac7ffd8b9763ccb9c59ba2d7617d87649419..f9dde5c781766b8be71d43d0f031c201a0edcfbb:/src/store/advanced-tab/advanced-tab.ts diff --git a/src/store/advanced-tab/advanced-tab.ts b/src/store/advanced-tab/advanced-tab.ts index 851eb949..0cb1c740 100644 --- a/src/store/advanced-tab/advanced-tab.ts +++ b/src/store/advanced-tab/advanced-tab.ts @@ -77,7 +77,8 @@ enum ResourcePrefix { KEEP_SERVICES = 'keep_services', COMPUTE_NODES = 'nodes', USERS = 'users', - API_CLIENT_AUTHORIZATIONS = 'api_client_authorizations' + API_CLIENT_AUTHORIZATIONS = 'api_client_authorizations', + LINKS = 'links' } enum KeepServiceData { @@ -100,9 +101,14 @@ enum ApiClientAuthorizationsData { DEFAULT_OWNER_UUID = 'default_owner_uuid' } -type AdvanceResourceKind = CollectionData | ProcessData | ProjectData | RepositoryData | SshKeyData | VirtualMachineData | KeepServiceData | ComputeNodeData | ApiClientAuthorizationsData | UserData; +enum LinkData { + LINK = 'link', + PROPERTIES = 'properties' +} + +type AdvanceResourceKind = CollectionData | ProcessData | ProjectData | RepositoryData | SshKeyData | VirtualMachineData | KeepServiceData | ComputeNodeData | ApiClientAuthorizationsData | UserData | LinkData; type AdvanceResourcePrefix = GroupContentsResourcePrefix | ResourcePrefix; -type AdvanceResponseData = ContainerRequestResource | ProjectResource | CollectionResource | RepositoryResource | SshKeyResource | VirtualMachinesResource | KeepServiceResource | NodeResource | ApiClientAuthorization | UserResource | undefined; +type AdvanceResponseData = ContainerRequestResource | ProjectResource | CollectionResource | RepositoryResource | SshKeyResource | VirtualMachinesResource | KeepServiceResource | NodeResource | ApiClientAuthorization | UserResource | LinkResource | undefined; export const openAdvancedTabDialog = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { @@ -235,7 +241,8 @@ export const openAdvancedTabDialog = (uuid: string) => dispatch(initAdvancedTabDialog(advanceDataUser)); break; case ResourceKind.NODE: - const dataComputeNode = getState().computeNodes.find(node => node.uuid === uuid); + const computeNodeResources = getState().resources; + const dataComputeNode = getResource(uuid)(computeNodeResources); const advanceDataComputeNode = advancedTabData({ uuid, metadata: '', @@ -245,7 +252,7 @@ export const openAdvancedTabDialog = (uuid: string) => resourceKind: ComputeNodeData.COMPUTE_NODE, resourcePrefix: ResourcePrefix.COMPUTE_NODES, resourceKindProperty: ComputeNodeData.PROPERTIES, - property: dataComputeNode!.properties + property: dataComputeNode ? dataComputeNode.properties : {} }); dispatch(initAdvancedTabDialog(advanceDataComputeNode)); break; @@ -264,6 +271,22 @@ export const openAdvancedTabDialog = (uuid: string) => }); dispatch(initAdvancedTabDialog(advanceDataApiClientAuthorization)); break; + case ResourceKind.LINK: + const linkResources = getState().resources; + const dataLink = getResource(uuid)(linkResources); + const advanceDataLink = advancedTabData({ + uuid, + metadata: '', + user: '', + apiResponseKind: linkApiResponse, + data: dataLink, + resourceKind: LinkData.LINK, + resourcePrefix: ResourcePrefix.LINKS, + resourceKindProperty: LinkData.PROPERTIES, + property: dataLink!.properties + }); + dispatch(initAdvancedTabDialog(advanceDataLink)); + break; default: dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Could not open advanced tab for this resource.", hideDuration: 2000, kind: SnackbarKind.ERROR })); } @@ -582,5 +605,27 @@ const apiClientAuthorizationApiResponse = (apiResponse: ApiClientAuthorization) "default_owner_uuid": "${stringify(defaultOwnerUuid)}", "scopes": "${JSON.stringify(scopes, null, 4)}"`; + return response; +}; + +const linkApiResponse = (apiResponse: LinkResource) => { + const { + uuid, name, headUuid, properties, headKind, tailUuid, tailKind, linkClass, + ownerUuid, createdAt, modifiedAt, modifiedByClientUuid, modifiedByUserUuid + } = apiResponse; + const response = `"uuid": "${uuid}", +"name": "${name}", +"head_uuid": "${headUuid}", +"head_kind": "${headKind}", +"tail_uuid": "${tailUuid}", +"tail_kind": "${tailKind}", +"link_class": "${linkClass}", +"owner_uuid": "${ownerUuid}", +"created_at": "${stringify(createdAt)}", +"modified_at": ${stringify(modifiedAt)}, +"modified_by_client_uuid": ${stringify(modifiedByClientUuid)}, +"modified_by_user_uuid": ${stringify(modifiedByUserUuid)}, +"properties": "${JSON.stringify(properties, null, 4)}"`; + return response; }; \ No newline at end of file