X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/cda10815df30e3bceec728535f426754ef8ff2e8..454ef1c106b3d738526d65ecfae8db98ad7bebc2:/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 851eb949a9..659b6e49fb 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) => { @@ -264,6 +270,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 +604,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