From: Janicki Artur Date: Tue, 7 Aug 2018 09:33:53 +0000 (+0200) Subject: Merge branch 'master' into 13854-tags-card X-Git-Tag: 1.2.0~13^2 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/232eac919b067a3783348eab549c9fc555b80abd Merge branch 'master' into 13854-tags-card refs #13854 Arvados-DCO-1.1-Signed-off-by: Janicki Artur --- 232eac919b067a3783348eab549c9fc555b80abd diff --cc src/services/services.ts index f56a30f7,9e1adbf6..87c668f2 --- a/src/services/services.ts +++ b/src/services/services.ts @@@ -8,11 -8,9 +8,10 @@@ import { ProjectService } from "./proje import { LinkService } from "./link-service/link-service"; import { FavoriteService } from "./favorite-service/favorite-service"; import { AxiosInstance } from "axios"; - import { CommonResourceService } from "../common/api/common-resource-service"; - import { Resource } from "../models/resource"; import { CollectionService } from "./collection-service/collection-service"; +import { TagService } from "./tag-service/tag-service"; import Axios from "axios"; + import { CollectionFilesService } from "./collection-files-service/collection-files-service"; export interface ServiceRepository { apiClient: AxiosInstance; @@@ -22,8 -20,8 +21,9 @@@ projectService: ProjectService; linkService: LinkService; favoriteService: FavoriteService; - collectionService: CommonResourceService; + tagService: TagService; + collectionService: CollectionService; + collectionFilesService: CollectionFilesService; } export const createServices = (baseUrl: string): ServiceRepository => { @@@ -36,8 -34,8 +36,9 @@@ const linkService = new LinkService(apiClient); const favoriteService = new FavoriteService(linkService, groupsService); const collectionService = new CollectionService(apiClient); + const tagService = new TagService(linkService); - + const collectionFilesService = new CollectionFilesService(collectionService); + return { apiClient, authService, @@@ -46,6 -44,6 +47,7 @@@ linkService, favoriteService, collectionService, - tagService ++ tagService, + collectionFilesService }; }; diff --cc src/store/collection-panel/collection-panel-action.ts index f9994d73,ee95590c..f2774f6f --- a/src/store/collection-panel/collection-panel-action.ts +++ b/src/store/collection-panel/collection-panel-action.ts @@@ -6,10 -6,10 +6,12 @@@ import { unionize, ofType, UnionOf } fr import { Dispatch } from "redux"; import { ResourceKind } from "../../models/resource"; import { CollectionResource } from "../../models/collection"; + import { collectionPanelFilesAction } from "./collection-panel-files/collection-panel-files-actions"; + import { createTree } from "../../models/tree"; import { RootState } from "../store"; import { ServiceRepository } from "../../services/services"; +import { TagResource, TagProperty } from "../../models/tag"; +import { snackbarActions } from "../snackbar/snackbar-actions"; export const collectionPanelActions = unionize({ LOAD_COLLECTION: ofType<{ uuid: string, kind: ResourceKind }>(), diff --cc src/views/collection-panel/collection-panel.tsx index aac5661e,43423a62..489d2847 --- a/src/views/collection-panel/collection-panel.tsx +++ b/src/views/collection-panel/collection-panel.tsx @@@ -3,23 -3,21 +3,24 @@@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; - import { - StyleRulesCallback, WithStyles, withStyles, Card, - CardHeader, IconButton, CardContent, Grid, Chip, TextField, Button + import { + StyleRulesCallback, WithStyles, withStyles, Card, + CardHeader, IconButton, CardContent, Grid, Chip } from '@material-ui/core'; -import { connect } from 'react-redux'; +import { connect, DispatchProp } from "react-redux"; import { RouteComponentProps } from 'react-router'; import { ArvadosTheme } from '../../common/custom-theme'; import { RootState } from '../../store/store'; import { MoreOptionsIcon, CollectionIcon, CopyIcon } from '../../components/icon/icon'; import { DetailsAttribute } from '../../components/details-attribute/details-attribute'; import { CollectionResource } from '../../models/collection'; + import { CollectionPanelFiles } from '../../views-components/collection-panel-files/collection-panel-files'; import * as CopyToClipboard from 'react-copy-to-clipboard'; +import { TagResource } from '../../models/tag'; +import { CollectionTagForm } from './collection-tag-form'; +import { deleteCollectionTag } from '../../store/collection-panel/collection-panel-action'; -type CssRules = 'card' | 'iconHeader' | 'tag' | 'copyIcon'; +type CssRules = 'card' | 'iconHeader' | 'tag' | 'copyIcon' | 'value'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ card: { @@@ -59,19 -51,16 +60,19 @@@ type CollectionPanelProps = CollectionP export const CollectionPanel = withStyles(styles)( - connect((state: RootState) => ({ item: state.collectionPanel.item! }))( - class extends React.Component { + connect((state: RootState) => ({ + item: state.collectionPanel.item, + tags: state.collectionPanel.tags + }))( + class extends React.Component { render() { - const { classes, item, onContextMenu } = this.props; + const { classes, item, tags, onContextMenu } = this.props; return
- } - action={ + action={ onContextMenu(event, item)}> @@@ -142,8 -111,3 +135,8 @@@ } ) ); + +const renderTagLabel = (tag: TagResource) => { + const { properties } = tag; + return `${properties.key}: ${properties.value}`; - }; ++}; diff --cc src/views/workbench/workbench.tsx index 8491d172,3611d7b1..69d80986 --- a/src/views/workbench/workbench.tsx +++ b/src/views/workbench/workbench.tsx @@@ -34,13 -34,15 +34,14 @@@ import { ResourceKind } from '../../mod import { ContextMenu, ContextMenuKind } from "../../views-components/context-menu/context-menu"; import { FavoritePanel } from "../favorite-panel/favorite-panel"; import { CurrentTokenDialog } from '../../views-components/current-token-dialog/current-token-dialog'; --import { dataExplorerActions } from '../../store/data-explorer/data-explorer-action'; import { Snackbar } from '../../views-components/snackbar/snackbar'; import { favoritePanelActions } from '../../store/favorite-panel/favorite-panel-action'; import { CreateCollectionDialog } from '../../views-components/create-collection-dialog/create-collection-dialog'; import { CollectionPanel } from '../collection-panel/collection-panel'; -import { loadCollection } from '../../store/collection-panel/collection-panel-action'; +import { loadCollection, loadCollectionTags } from '../../store/collection-panel/collection-panel-action'; import { getCollectionUrl } from '../../models/collection'; + import { RemoveDialog } from '../../views-components/remove-dialog/remove-dialog'; + import { RenameDialog } from '../../views-components/rename-dialog/rename-dialog'; import { UpdateCollectionDialog } from '../../views-components/update-collection-dialog/update-collection-dialog.'; import { AuthService } from "../../services/auth-service/auth-service";