add factory patter for render item details
[arvados.git] / src / components / details-panel-factory / details-panel-factory.tsx
1
2
3 import * as React from 'react';
4 import { ProjectResource } from "../../models/project";
5 import { CollectionResource } from "../../models/collection";
6 import { ProcessResource } from "../../models/process";
7 import { ResourceKind } from '../../models/kinds';
8 import ProjectItem from './items/project-item';
9 import CollectionItem from './items/collection-item';
10 import ProcessItem from './items/process-item';
11 import { AbstractItem } from './items/abstract-item';
12
13 // TODO: move to models
14 export type DetailsPanelResource = ProjectResource | CollectionResource | ProcessResource;
15
16 export default class DetailsPanelFactory {
17     static createItem(res: DetailsPanelResource): AbstractItem {
18         switch (res.kind) {
19             case ResourceKind.Project:
20                 return new ProjectItem(res);
21             case ResourceKind.Collection:
22                 return new CollectionItem(res);
23             case ResourceKind.Collection:
24                 return new ProcessItem(res);
25             default:
26                 return new ProjectItem(res);
27         }
28     }
29 }