Feature #14529
Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
import { dialogActions } from '~/store/dialog/dialog-actions';
import { RootState } from '~/store/store';
import { Dispatch } from 'redux';
import { dialogActions } from '~/store/dialog/dialog-actions';
import { RootState } from '~/store/store';
import { Dispatch } from 'redux';
-import { ResourceKind, extractUuidKind } from '~/models/resource';
+import { ResourceKind, extractUuidKind, ResourceObjectType, extractUuidObjectType } from '~/models/resource';
import { getResource } from '~/store/resources/resources';
import { GroupContentsResourcePrefix } from '~/services/groups-service/groups-service';
import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions';
import { getResource } from '~/store/resources/resources';
import { GroupContentsResourcePrefix } from '~/services/groups-service/groups-service';
import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions';
export interface AdvancedTabDialogData {
apiResponse: any;
metadata: any;
export interface AdvancedTabDialogData {
apiResponse: any;
metadata: any;
pythonHeader: string;
pythonExample: string;
cliGetHeader: string;
pythonHeader: string;
pythonExample: string;
cliGetHeader: string;
CREATED_AT = 'created_at'
}
CREATED_AT = 'created_at'
}
-export const openAdvancedTabDialog = (uuid: string, ownerUuid: string, index?: number) =>
+export const openAdvancedTabDialog = (uuid: string, index?: number) =>
async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
const { resources } = getState();
const kind = extractUuidKind(uuid);
async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
const { resources } = getState();
const kind = extractUuidKind(uuid);
const repositoryData = getState().repositories.items[index!];
if (data || repositoryData) {
if (data) {
const repositoryData = getState().repositories.items[index!];
if (data || repositoryData) {
if (data) {
- const user = await services.userService.get(ownerUuid);
+ const type = extractUuidObjectType(data.ownerUuid);
const metadata = await services.linkService.list({
filters: new FilterBuilder()
.addEqual('headUuid', uuid)
.getFilters()
});
const metadata = await services.linkService.list({
filters: new FilterBuilder()
.addEqual('headUuid', uuid)
.getFilters()
});
+ const tail = metadata.itemsAvailable && type !== ResourceObjectType.GROUP ? await services.userService.get(data.ownerUuid) : data.ownerUuid;
if (kind === ResourceKind.COLLECTION) {
if (kind === ResourceKind.COLLECTION) {
- const dataCollection: AdvancedTabDialogData = advancedTabData(uuid, metadata, user, collectionApiResponse, data, CollectionData.COLLECTION, GroupContentsResourcePrefix.COLLECTION, CollectionData.STORAGE_CLASSES_CONFIRMED, data.storageClassesConfirmed);
+ const dataCollection: AdvancedTabDialogData = advancedTabData(uuid, metadata, tail, collectionApiResponse, data, CollectionData.COLLECTION, GroupContentsResourcePrefix.COLLECTION, CollectionData.STORAGE_CLASSES_CONFIRMED, data.storageClassesConfirmed);
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataCollection }));
} else if (kind === ResourceKind.PROCESS) {
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataCollection }));
} else if (kind === ResourceKind.PROCESS) {
- const dataProcess: AdvancedTabDialogData = advancedTabData(uuid, metadata, user, containerRequestApiResponse, data, ProcessData.CONTAINER_REQUEST, GroupContentsResourcePrefix.PROCESS, ProcessData.OUTPUT_NAME, data.outputName);
+ const dataProcess: AdvancedTabDialogData = advancedTabData(uuid, metadata, tail, containerRequestApiResponse, data, ProcessData.CONTAINER_REQUEST, GroupContentsResourcePrefix.PROCESS, ProcessData.OUTPUT_NAME, data.outputName);
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataProcess }));
} else if (kind === ResourceKind.PROJECT) {
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataProcess }));
} else if (kind === ResourceKind.PROJECT) {
- const dataProject: AdvancedTabDialogData = advancedTabData(uuid, metadata, user, groupRequestApiResponse, data, ProjectData.GROUP, GroupContentsResourcePrefix.PROJECT, ProjectData.DELETE_AT, data.deleteAt);
+ const dataProject: AdvancedTabDialogData = advancedTabData(uuid, metadata, tail, groupRequestApiResponse, data, ProjectData.GROUP, GroupContentsResourcePrefix.PROJECT, ProjectData.DELETE_AT, data.deleteAt);
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataProject }));
}
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataProject }));
}
} else if (kind === ResourceKind.REPOSITORY) {
const dataRepository: AdvancedTabDialogData = advancedTabData(uuid, '', '', repositoryApiResponse, repositoryData, RepositoryData.REPOSITORY, 'repositories', RepositoryData.CREATED_AT, repositoryData.createdAt);
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataRepository }));
} else if (kind === ResourceKind.REPOSITORY) {
const dataRepository: AdvancedTabDialogData = advancedTabData(uuid, '', '', repositoryApiResponse, repositoryData, RepositoryData.REPOSITORY, 'repositories', RepositoryData.CREATED_AT, repositoryData.createdAt);
dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: dataRepository }));
-const advancedTabData = (uuid: string, metadata: any, user: any, apiResponseKind: any, data: any, resourceKind: CollectionData | ProcessData | ProjectData | RepositoryData, resourcePrefix: GroupContentsResourcePrefix | 'repositories', resourceKindProperty: CollectionData | ProcessData | ProjectData | RepositoryData, property: any) => {
+const advancedTabData = (uuid: string, metadata: any, tail: any, apiResponseKind: any, data: any, resourceKind: CollectionData | ProcessData | ProjectData | RepositoryData, resourcePrefix: GroupContentsResourcePrefix | 'repositories', resourceKindProperty: CollectionData | ProcessData | ProjectData | RepositoryData, property: any) => {
metadata,
apiResponse: apiResponseKind(data),
pythonHeader: pythonHeader(resourceKind),
metadata,
apiResponse: apiResponseKind(data),
pythonHeader: pythonHeader(resourceKind),
(dispatch: Dispatch, getState: () => RootState) => {
const resource = {
uuid: process.containerRequest.uuid,
(dispatch: Dispatch, getState: () => RootState) => {
const resource = {
uuid: process.containerRequest.uuid,
+ ownerUuid: process.containerRequest.ownerUuid,
kind: ResourceKind.PROCESS,
kind: ResourceKind.PROCESS,
- name: '',
- description: '',
+ name: process.containerRequest.name,
+ description: process.containerRequest.description,
menuKind: ContextMenuKind.PROCESS
};
dispatch<any>(openContextMenu(event, resource));
menuKind: ContextMenuKind.PROCESS
};
dispatch<any>(openContextMenu(event, resource));
curlHeader,
curlExample,
uuid,
curlHeader,
curlExample,
uuid,
} = this.props.data;
return <Dialog
open={open}
} = this.props.data;
return <Dialog
open={open}
</Tabs>
<DialogContent className={classes.content}>
{value === 0 && <div>{dialogContentExample(apiResponse, classes)}</div>}
</Tabs>
<DialogContent className={classes.content}>
{value === 0 && <div>{dialogContentExample(apiResponse, classes)}</div>}
- {value === 1 && <div>{metadata !== '' && metadata.items.length > 0 ? <MetadataTab items={metadata.items} uuid={uuid} user={user} /> : dialogContentHeader('(No metadata links found)')}</div>}
+ {value === 1 && <div>{metadata !== '' && metadata.items.length > 0 ? <MetadataTab items={metadata.items} uuid={uuid} tail={tail} /> : dialogContentHeader('(No metadata links found)')}</div>}
{value === 2 && dialogContent(pythonHeader, pythonExample, classes)}
{value === 3 && <div>
{dialogContent(cliGetHeader, cliGetExample, classes)}
{value === 2 && dialogContent(pythonHeader, pythonExample, classes)}
{value === 3 && <div>
{dialogContent(cliGetHeader, cliGetExample, classes)}
interface MetadataProps {
items: MetadataTable[];
interface MetadataProps {
items: MetadataTable[];
<TableCell className={props.classes.cell}>{it.uuid}</TableCell>
<TableCell className={props.classes.cell}>{it.linkClass}</TableCell>
<TableCell className={props.classes.cell}>{it.name}</TableCell>
<TableCell className={props.classes.cell}>{it.uuid}</TableCell>
<TableCell className={props.classes.cell}>{it.linkClass}</TableCell>
<TableCell className={props.classes.cell}>{it.name}</TableCell>
- <TableCell className={props.classes.cell}>{props.user ? `User: ${props.user.firstName} ${props.user.lastName}` : it.tailUuid}</TableCell>
+ <TableCell className={props.classes.cell}>{props.tail.firstName ? `User: ${props.tail.firstName} ${props.tail.lastName}` : `Group: ${props.tail}`}</TableCell>
<TableCell className={props.classes.cell}>{it.headUuid === props.uuid ? 'this' : it.headUuid}</TableCell>
<TableCell className={props.classes.cell}>{JSON.stringify(it.properties)}</TableCell>
</TableRow>
<TableCell className={props.classes.cell}>{it.headUuid === props.uuid ? 'this' : it.headUuid}</TableCell>
<TableCell className={props.classes.cell}>{JSON.stringify(it.properties)}</TableCell>
</TableRow>
{
icon: AdvancedIcon,
name: "Advanced",
{
icon: AdvancedIcon,
name: "Advanced",
- execute: (dispatch, { uuid, ownerUuid }) => {
- dispatch<any>(openAdvancedTabDialog(uuid, ownerUuid));
+ execute: (dispatch, { uuid }) => {
+ dispatch<any>(openAdvancedTabDialog(uuid));
{
icon: AdvancedIcon,
name: "Advanced",
{
icon: AdvancedIcon,
name: "Advanced",
- execute: (dispatch, { uuid, ownerUuid }) => {
- dispatch<any>(openAdvancedTabDialog(uuid, ownerUuid));
+ execute: (dispatch, { uuid }) => {
+ dispatch<any>(openAdvancedTabDialog(uuid));
{
icon: AdvancedIcon,
name: "Advanced",
{
icon: AdvancedIcon,
name: "Advanced",
- execute: (dispatch, { uuid, ownerUuid }) => {
- dispatch<any>(openAdvancedTabDialog(uuid, ownerUuid));
+ execute: (dispatch, { uuid }) => {
+ dispatch<any>(openAdvancedTabDialog(uuid));
{
icon: AdvancedIcon,
name: "Advanced",
{
icon: AdvancedIcon,
name: "Advanced",
- execute: (dispatch, { uuid, ownerUuid }) => {
- dispatch<any>(openAdvancedTabDialog(uuid, ownerUuid));
+ execute: (dispatch, { uuid }) => {
+ dispatch<any>(openAdvancedTabDialog(uuid));
}, {
name: "Advanced",
icon: AdvancedIcon,
}, {
name: "Advanced",
icon: AdvancedIcon,
- execute: (dispatch, { uuid, ownerUuid, index }) => {
- dispatch<any>(openAdvancedTabDialog(uuid, ownerUuid, index));
+ execute: (dispatch, { uuid, index }) => {
+ dispatch<any>(openAdvancedTabDialog(uuid, index));
import { ContextMenuActionSet } from "../context-menu-action-set";
import { DetailsIcon, ProvenanceGraphIcon, AdvancedIcon, RestoreFromTrashIcon } from '~/components/icon/icon';
import { toggleCollectionTrashed } from "~/store/trash/trash-actions";
import { ContextMenuActionSet } from "../context-menu-action-set";
import { DetailsIcon, ProvenanceGraphIcon, AdvancedIcon, RestoreFromTrashIcon } from '~/components/icon/icon';
import { toggleCollectionTrashed } from "~/store/trash/trash-actions";
-import { detailsPanelActions } from "~/store/details-panel/details-panel-action";
import { openAdvancedTabDialog } from "~/store/advanced-tab/advanced-tab";
import { toggleDetailsPanel } from '~/store/details-panel/details-panel-action';
import { openAdvancedTabDialog } from "~/store/advanced-tab/advanced-tab";
import { toggleDetailsPanel } from '~/store/details-panel/details-panel-action';
{
icon: AdvancedIcon,
name: "Advanced",
{
icon: AdvancedIcon,
name: "Advanced",
- execute: (dispatch, { uuid, ownerUuid }) => {
- dispatch<any>(openAdvancedTabDialog(uuid, ownerUuid));
+ execute: (dispatch, { uuid }) => {
+ dispatch<any>(openAdvancedTabDialog(uuid));