import FilterBuilder from "./filter-builder";
import OrderBuilder from "./order-builder";
import { AxiosInstance } from "axios";
-
-export interface Resource {
- uuid: string;
- ownerUuid: string;
- createdAt: string;
- modifiedByClientUuid: string;
- modifiedByUserUuid: string;
- modifiedAt: string;
- href: string;
- kind: string;
- etag: string;
-}
+import { Resource } from "../../models/resource";
export interface ListArguments {
limit?: number;
// SPDX-License-Identifier: AGPL-3.0
import * as _ from "lodash";
-import { Resource } from "./common-resource-service";
+import { Resource } from "../../models/resource";
export default class FilterBuilder<T extends Resource = Resource> {
// SPDX-License-Identifier: AGPL-3.0
import * as _ from "lodash";
-import { Resource } from "./common-resource-service";
+import { Resource } from "../../models/resource";
export default class OrderBuilder<T extends Resource = Resource> {
import AbstractItem from './items/abstract-item';
import EmptyItem from './items/empty-item';
import { DetailsPanelResource } from '../../views-components/details-panel/details-panel';
+import { EmptyResource } from '../../models/empty';
export default class DetailsPanelFactory {
static createItem(res: DetailsPanelResource): AbstractItem {
case ResourceKind.Process:
return new ProcessItem(res);
default:
- return new EmptyItem(res);
+ return new EmptyItem(res as EmptyResource);
}
}
}
\ No newline at end of file
import { IconTypes } from '../../icon/icon';
import { DetailsPanelResource } from '../../../views-components/details-panel/details-panel';
-export default abstract class AbstractItem {
- protected item: DetailsPanelResource;
+export default abstract class AbstractItem<T extends DetailsPanelResource = DetailsPanelResource> {
- constructor(item: DetailsPanelResource) {
- this.item = item;
- }
+ constructor(protected item: T) {}
getTitle(): string {
return this.item.name;
import AbstractItem from './abstract-item';
import { CollectionResource } from '../../../models/collection';
-export default class CollectionItem extends AbstractItem {
-
- constructor(item: CollectionResource) {
- super(item);
- }
+export default class CollectionItem extends AbstractItem<CollectionResource> {
getIcon(): IconTypes {
return IconTypes.COLLECTION;
import EmptyState from '../../empty-state/empty-state';
import { EmptyResource } from '../../../models/empty';
-export default class EmptyItem extends AbstractItem {
-
- constructor(item: EmptyResource) {
- super(item);
- }
-
+export default class EmptyItem extends AbstractItem<EmptyResource> {
+
getIcon(): IconTypes {
return IconTypes.FOLDER;
}
import AbstractItem from './abstract-item';
import { ProcessResource } from '../../../models/process';
-export default class ProcessItem extends AbstractItem {
-
- constructor(item: ProcessResource) {
- super(item);
- }
+export default class ProcessItem extends AbstractItem<ProcessResource> {
getIcon(): IconTypes {
return IconTypes.PROCESS;
import AbstractItem from './abstract-item';
import { ProjectResource } from '../../../models/project';
-export default class ProjectItem extends AbstractItem {
-
- constructor(item: ProjectResource) {
- super(item);
- }
+export default class ProjectItem extends AbstractItem<ProjectResource> {
getIcon(): IconTypes {
return IconTypes.PROJECT;
//
// SPDX-License-Identifier: AGPL-3.0
-import { Resource } from "../common/api/common-resource-service";
-import { ResourceKind } from "./kinds";
+import { Resource, ResourceKind } from "./resource";
export interface CollectionResource extends Resource {
kind: ResourceKind.Collection;
//
// SPDX-License-Identifier: AGPL-3.0
-import { Resource } from "../common/api/common-resource-service";
-import { ResourceKind } from "./kinds";
+import { Resource, ResourceKind } from "./resource";
export enum ContainerRequestState {
Uncommitted = "Uncommitted",
export interface EmptyResource {
name: string;
- kind: ResourceKind;
+ kind: undefined;
}
\ No newline at end of file
//
// SPDX-License-Identifier: AGPL-3.0
-import { Resource } from "../common/api/common-resource-service";
-import { ResourceKind } from "./kinds";
+import { Resource, ResourceKind } from "./resource";
export interface GroupResource extends Resource {
kind: ResourceKind.Group;
// SPDX-License-Identifier: AGPL-3.0
export interface Resource {
- name: string;
- createdAt: string;
- modifiedAt: string;
uuid: string;
ownerUuid: string;
+ createdAt: string;
+ modifiedByClientUuid: string;
+ modifiedByUserUuid: string;
+ modifiedAt: string;
href: string;
- kind: ResourceKind;
+ kind: string;
+ etag: string;
}
export enum ResourceKind {
- PROJECT = "project",
- COLLECTION = "collection",
- PIPELINE = "pipeline",
- UNKNOWN = "unknown"
-}
-
-export function getResourceKind(itemKind: string) {
- switch (itemKind) {
- case "arvados#project":
- case "arvados#group":
- return ResourceKind.PROJECT;
- case "arvados#collection":
- return ResourceKind.COLLECTION;
- case "arvados#pipeline":
- return ResourceKind.PIPELINE;
- default:
- return ResourceKind.UNKNOWN;
- }
+ Collection = "arvados#collection",
+ ContainerRequest = "arvados#containerRequest",
+ Group = "arvados#group",
+ Process = "arvados#containerRequest",
+ Project = "arvados#group",
+ Workflow = "arvados#workflow"
}
//
// SPDX-License-Identifier: AGPL-3.0
-import { GroupClass, GroupResource } from "./group";
-import { ResourceKind } from "./kinds";
-import { Resource } from "../common/api/common-resource-service";
+import { GroupResource } from "./group";
+import { Resource, ResourceKind } from "./resource";
type ResourceUnion = GroupResource;
//
// SPDX-License-Identifier: AGPL-3.0
-import { Resource } from "../common/api/common-resource-service";
-import { ResourceKind } from "./kinds";
+import { Resource, ResourceKind } from "./resource";
export interface WorkflowResource extends Resource {
kind: ResourceKind.Workflow;
// SPDX-License-Identifier: AGPL-3.0
import * as _ from "lodash";
-import CommonResourceService, { Resource, ListResults } from "../../common/api/common-resource-service";
+import CommonResourceService, { ListResults } from "../../common/api/common-resource-service";
import FilterBuilder from "../../common/api/filter-builder";
import OrderBuilder from "../../common/api/order-builder";
import { AxiosInstance } from "axios";
// SPDX-License-Identifier: AGPL-3.0
import { unionize, ofType, UnionOf } from "unionize";
-import CommonResourceService, { Resource } from "../../common/api/common-resource-service";
+import CommonResourceService from "../../common/api/common-resource-service";
import { ResourceKind } from "../../models/kinds";
import { Dispatch } from "redux";
import { groupsService } from "../../services/services";
import { serverApi } from "../../common/api/server-api";
+import { Resource } from "../../models/resource";
const actions = unionize({
TOGGLE_DETAILS_PANEL: ofType<{}>(),
//
// SPDX-License-Identifier: AGPL-3.0
-import { Resource } from "../../common/api/common-resource-service";
import actions, { DetailsPanelAction } from "./details-panel-action";
+import { Resource } from "../../models/resource";
export interface DetailsPanelState {
item: Resource | null;
import dataExplorerActions from "../data-explorer/data-explorer-action";
import { PROJECT_PANEL_ID } from "../../views/project-panel/project-panel";
import { RootState } from "../store";
-import { Resource } from "../../common/api/common-resource-service";
import { ResourceKind } from "../../models/kinds";
+import { Resource } from "../../models/resource";
export const getResourceUrl = <T extends Resource>(resource: T): string => {
switch (resource.kind) {
import { ProjectResource } from "../../models/project";
import { projectService } from "../../services/services";
import { Dispatch } from "redux";
-import { getResourceKind } from "../../models/resource";
import FilterBuilder from "../../common/api/filter-builder";
-import { ThunkAction } from "../../../node_modules/redux-thunk";
import { RootState } from "../store";
const actions = unionize({
import { ProcessResource } from '../../models/process';
import DetailsPanelFactory from '../../components/details-panel-factory/details-panel-factory';
import AbstractItem from '../../components/details-panel-factory/items/abstract-item';
-import { ResourceKind } from '../../models/resource';
import { EmptyResource } from '../../models/empty';
export interface DetailsPanelDataProps {
}
});
-// TODO: move to models
+
export type DetailsPanelResource = ProjectResource | CollectionResource | ProcessResource | EmptyResource;
const getItem = (res: DetailsPanelResource) => {
};
const getDefaultItem = () => {
- return DetailsPanelFactory.createItem({ kind: ResourceKind.UNKNOWN, name: 'Projects'});
+ return DetailsPanelFactory.createItem({ kind: undefined, name: 'Projects' });
};
const mapStateToProps = ({ detailsPanel }: RootState) => {