[ARVADOS-WORKBENCH2] updated: 1.1.4-281-g0be34ac

Git user git at public.curoverse.com
Thu Jul 12 09:16:12 EDT 2018


Summary of changes:
 src/common/api/common-resource-service.ts          | 13 +--------
 src/common/api/filter-builder.ts                   |  2 +-
 src/common/api/order-builder.ts                    |  2 +-
 .../details-panel-factory.tsx                      |  3 +-
 .../details-panel-factory/items/abstract-item.tsx  |  7 ++---
 .../items/collection-item.tsx                      |  6 +---
 .../details-panel-factory/items/empty-item.tsx     |  8 ++---
 .../details-panel-factory/items/process-item.tsx   |  6 +---
 .../details-panel-factory/items/project-item.tsx   |  6 +---
 src/models/collection.ts                           |  3 +-
 src/models/container-request.ts                    |  3 +-
 src/models/empty.ts                                |  2 +-
 src/models/group.ts                                |  3 +-
 src/models/resource.ts                             | 34 ++++++++--------------
 src/models/test-utils.ts                           |  5 ++--
 src/models/workflow.ts                             |  3 +-
 src/services/groups-service/groups-service.ts      |  2 +-
 src/store/details-panel/details-panel-action.ts    |  3 +-
 src/store/details-panel/details-panel-reducer.ts   |  2 +-
 src/store/navigation/navigation-action.ts          |  2 +-
 src/store/project/project-action.ts                |  2 --
 .../details-panel/details-panel.tsx                |  5 ++--
 22 files changed, 38 insertions(+), 84 deletions(-)

       via  0be34acc576c9552f4c669062defe51c36888866 (commit)
      from  0ce21e3487078a53f1b653446b5e615cd6dda709 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 0be34acc576c9552f4c669062defe51c36888866
Author: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
Date:   Thu Jul 12 15:15:56 2018 +0200

    Move Resource interface to models, unify ResourceKind enum
    
    Feature #13798
    
    Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski at contractors.roche.com>

diff --git a/src/common/api/common-resource-service.ts b/src/common/api/common-resource-service.ts
index 8df179c..4c05392 100644
--- a/src/common/api/common-resource-service.ts
+++ b/src/common/api/common-resource-service.ts
@@ -6,18 +6,7 @@ import * as _ from "lodash";
 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;
diff --git a/src/common/api/filter-builder.ts b/src/common/api/filter-builder.ts
index 47772e2..38c4fee 100644
--- a/src/common/api/filter-builder.ts
+++ b/src/common/api/filter-builder.ts
@@ -3,7 +3,7 @@
 // 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> {
 
diff --git a/src/common/api/order-builder.ts b/src/common/api/order-builder.ts
index 3163791..b5a2e80 100644
--- a/src/common/api/order-builder.ts
+++ b/src/common/api/order-builder.ts
@@ -3,7 +3,7 @@
 // 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> {
 
diff --git a/src/components/details-panel-factory/details-panel-factory.tsx b/src/components/details-panel-factory/details-panel-factory.tsx
index a9e5a21..4383e79 100644
--- a/src/components/details-panel-factory/details-panel-factory.tsx
+++ b/src/components/details-panel-factory/details-panel-factory.tsx
@@ -9,6 +9,7 @@ import ProcessItem from './items/process-item';
 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 {
@@ -20,7 +21,7 @@ export default class DetailsPanelFactory {
             case ResourceKind.Process:
                 return new ProcessItem(res);
             default:
-                return new EmptyItem(res);
+                return new EmptyItem(res as EmptyResource);
         }
     }
 }
\ No newline at end of file
diff --git a/src/components/details-panel-factory/items/abstract-item.tsx b/src/components/details-panel-factory/items/abstract-item.tsx
index fb30e84..6a0094b 100644
--- a/src/components/details-panel-factory/items/abstract-item.tsx
+++ b/src/components/details-panel-factory/items/abstract-item.tsx
@@ -6,12 +6,9 @@ import * as React from 'react';
 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;
diff --git a/src/components/details-panel-factory/items/collection-item.tsx b/src/components/details-panel-factory/items/collection-item.tsx
index 448eebb..362bd31 100644
--- a/src/components/details-panel-factory/items/collection-item.tsx
+++ b/src/components/details-panel-factory/items/collection-item.tsx
@@ -8,11 +8,7 @@ import Attribute from '../../attribute/attribute';
 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;
diff --git a/src/components/details-panel-factory/items/empty-item.tsx b/src/components/details-panel-factory/items/empty-item.tsx
index 5d6e3d4..16394c8 100644
--- a/src/components/details-panel-factory/items/empty-item.tsx
+++ b/src/components/details-panel-factory/items/empty-item.tsx
@@ -8,12 +8,8 @@ import AbstractItem from './abstract-item';
 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;
     }
diff --git a/src/components/details-panel-factory/items/process-item.tsx b/src/components/details-panel-factory/items/process-item.tsx
index c8eab0a..369e931 100644
--- a/src/components/details-panel-factory/items/process-item.tsx
+++ b/src/components/details-panel-factory/items/process-item.tsx
@@ -8,11 +8,7 @@ import Attribute from '../../attribute/attribute';
 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;
diff --git a/src/components/details-panel-factory/items/project-item.tsx b/src/components/details-panel-factory/items/project-item.tsx
index 10402ed..c4ccd2a 100644
--- a/src/components/details-panel-factory/items/project-item.tsx
+++ b/src/components/details-panel-factory/items/project-item.tsx
@@ -8,11 +8,7 @@ import Attribute from '../../attribute/attribute';
 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;
diff --git a/src/models/collection.ts b/src/models/collection.ts
index 8effd8e..2a92594 100644
--- a/src/models/collection.ts
+++ b/src/models/collection.ts
@@ -2,8 +2,7 @@
 //
 // 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;
diff --git a/src/models/container-request.ts b/src/models/container-request.ts
index 4a10414..162e0f5 100644
--- a/src/models/container-request.ts
+++ b/src/models/container-request.ts
@@ -2,8 +2,7 @@
 //
 // 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",
diff --git a/src/models/empty.ts b/src/models/empty.ts
index 76b42b4..9731207 100644
--- a/src/models/empty.ts
+++ b/src/models/empty.ts
@@ -6,5 +6,5 @@ import { ResourceKind } from "./resource";
 
 export interface EmptyResource {
     name: string;
-    kind: ResourceKind;
+    kind: undefined;
 }
\ No newline at end of file
diff --git a/src/models/group.ts b/src/models/group.ts
index 4bb9a7f..d8efae2 100644
--- a/src/models/group.ts
+++ b/src/models/group.ts
@@ -2,8 +2,7 @@
 //
 // 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;
diff --git a/src/models/resource.ts b/src/models/resource.ts
index 1dd5979..2d72fbc 100644
--- a/src/models/resource.ts
+++ b/src/models/resource.ts
@@ -3,32 +3,22 @@
 // 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"
 }
diff --git a/src/models/test-utils.ts b/src/models/test-utils.ts
index aa8d96b..4d75b10 100644
--- a/src/models/test-utils.ts
+++ b/src/models/test-utils.ts
@@ -2,9 +2,8 @@
 //
 // 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;
 
diff --git a/src/models/workflow.ts b/src/models/workflow.ts
index 2054550..e0a5df4 100644
--- a/src/models/workflow.ts
+++ b/src/models/workflow.ts
@@ -2,8 +2,7 @@
 //
 // 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;
diff --git a/src/services/groups-service/groups-service.ts b/src/services/groups-service/groups-service.ts
index 2a5a51a..1318dac 100644
--- a/src/services/groups-service/groups-service.ts
+++ b/src/services/groups-service/groups-service.ts
@@ -3,7 +3,7 @@
 // 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";
diff --git a/src/store/details-panel/details-panel-action.ts b/src/store/details-panel/details-panel-action.ts
index ffa66b6..647e24f 100644
--- a/src/store/details-panel/details-panel-action.ts
+++ b/src/store/details-panel/details-panel-action.ts
@@ -3,11 +3,12 @@
 // 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<{}>(),
diff --git a/src/store/details-panel/details-panel-reducer.ts b/src/store/details-panel/details-panel-reducer.ts
index 73fc604..f57b9f1 100644
--- a/src/store/details-panel/details-panel-reducer.ts
+++ b/src/store/details-panel/details-panel-reducer.ts
@@ -2,8 +2,8 @@
 //
 // 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;
diff --git a/src/store/navigation/navigation-action.ts b/src/store/navigation/navigation-action.ts
index 25cc003..89ae727 100644
--- a/src/store/navigation/navigation-action.ts
+++ b/src/store/navigation/navigation-action.ts
@@ -10,8 +10,8 @@ import { findTreeItem } from "../project/project-reducer";
 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) {
diff --git a/src/store/project/project-action.ts b/src/store/project/project-action.ts
index 3acf091..f7708eb 100644
--- a/src/store/project/project-action.ts
+++ b/src/store/project/project-action.ts
@@ -6,9 +6,7 @@ import { default as unionize, ofType, UnionOf } from "unionize";
 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({
diff --git a/src/views-components/details-panel/details-panel.tsx b/src/views-components/details-panel/details-panel.tsx
index 15ca8f3..99c4063 100644
--- a/src/views-components/details-panel/details-panel.tsx
+++ b/src/views-components/details-panel/details-panel.tsx
@@ -21,7 +21,6 @@ import IconBase, { IconTypes } from '../../components/icon/icon';
 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 {
@@ -119,7 +118,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     }
 });
 
-// TODO: move to models
+
 export type DetailsPanelResource = ProjectResource | CollectionResource | ProcessResource | EmptyResource;
 
 const getItem = (res: DetailsPanelResource) => {
@@ -127,7 +126,7 @@ 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) => {

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list