From 3eba091748f10f981d48f44eed14115b4fcee0ce Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Thu, 26 Jul 2018 12:43:29 +0200 Subject: [PATCH] Create common render functions module Feature #13887 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- .../data-explorer/renderers.tsx | 67 +++++++++++++++++++ src/views/favorite-panel/favorite-panel.tsx | 61 +---------------- src/views/project-panel/project-panel.tsx | 61 +---------------- 3 files changed, 71 insertions(+), 118 deletions(-) create mode 100644 src/views-components/data-explorer/renderers.tsx diff --git a/src/views-components/data-explorer/renderers.tsx b/src/views-components/data-explorer/renderers.tsx new file mode 100644 index 00000000..2b99f023 --- /dev/null +++ b/src/views-components/data-explorer/renderers.tsx @@ -0,0 +1,67 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import * as React from 'react'; +import { Grid, Typography } from '@material-ui/core'; +import { FavoriteStar } from '../favorite-star/favorite-star'; +import { ResourceKind } from '../../models/resource'; +import { ProjectIcon, CollectionIcon, ProcessIcon, DefaultIcon } from '../../components/icon/icon'; +import { formatDate, formatFileSize } from '../../common/formatters'; +import { resourceLabel } from '../../common/labels'; + + +export const renderName = (item: {name: string; uuid: string, kind: string}) => + + + {renderIcon(item)} + + + + {item.name} + + + + + + + + ; + + +export const renderIcon = (item: {kind: string}) => { + switch (item.kind) { + case ResourceKind.PROJECT: + return ; + case ResourceKind.COLLECTION: + return ; + case ResourceKind.PROCESS: + return ; + default: + return ; + } +}; + +export const renderDate = (date: string) => { + return {formatDate(date)}; +}; + +export const renderFileSize = (fileSize?: number) => + + {formatFileSize(fileSize)} + ; + +export const renderOwner = (owner: string) => + + {owner} + ; + +export const renderType = (type: string) => + + {resourceLabel(type)} + ; + +export const renderStatus = (item: {status?: string}) => + + {item.status || "-"} + ; \ No newline at end of file diff --git a/src/views/favorite-panel/favorite-panel.tsx b/src/views/favorite-panel/favorite-panel.tsx index 36a34107..25a82511 100644 --- a/src/views/favorite-panel/favorite-panel.tsx +++ b/src/views/favorite-panel/favorite-panel.tsx @@ -4,8 +4,7 @@ import * as React from 'react'; import { FavoritePanelItem } from './favorite-panel-item'; -import { Grid, Typography, Button, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; -import { formatDate, formatFileSize } from '../../common/formatters'; +import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; import { DataExplorer } from "../../views-components/data-explorer/data-explorer"; import { DispatchProp, connect } from 'react-redux'; import { DataColumns } from '../../components/data-table/data-table'; @@ -16,9 +15,8 @@ import { ContainerRequestState } from '../../models/container-request'; import { SortDirection } from '../../components/data-table/data-column'; import { ResourceKind } from '../../models/resource'; import { resourceLabel } from '../../common/labels'; -import { ProjectIcon, CollectionIcon, ProcessIcon, DefaultIcon } from '../../components/icon/icon'; import { ArvadosTheme } from '../../common/custom-theme'; -import { FavoriteStar } from "../../views-components/favorite-star/favorite-star"; +import { renderName, renderStatus, renderType, renderOwner, renderFileSize, renderDate } from '../../views-components/data-explorer/renderers'; type CssRules = "toolbar" | "button"; @@ -32,61 +30,6 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ }, }); -const renderName = (item: FavoritePanelItem) => - - - {renderIcon(item)} - - - - {item.name} - - - - - - - - ; - - -const renderIcon = (item: FavoritePanelItem) => { - switch (item.kind) { - case ResourceKind.PROJECT: - return ; - case ResourceKind.COLLECTION: - return ; - case ResourceKind.PROCESS: - return ; - default: - return ; - } -}; - -const renderDate = (date: string) => { - return {formatDate(date)}; -}; - -const renderFileSize = (fileSize?: number) => - - {formatFileSize(fileSize)} - ; - -const renderOwner = (owner: string) => - - {owner} - ; - -const renderType = (type: string) => - - {resourceLabel(type)} - ; - -const renderStatus = (item: FavoritePanelItem) => - - {item.status || "-"} - ; - export enum FavoritePanelColumnNames { NAME = "Name", STATUS = "Status", diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx index 17b0fd72..c7138c30 100644 --- a/src/views/project-panel/project-panel.tsx +++ b/src/views/project-panel/project-panel.tsx @@ -4,8 +4,7 @@ import * as React from 'react'; import { ProjectPanelItem } from './project-panel-item'; -import { Grid, Typography, Button, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; -import { formatDate, formatFileSize } from '../../common/formatters'; +import { Button, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; import { DataExplorer } from "../../views-components/data-explorer/data-explorer"; import { DispatchProp, connect } from 'react-redux'; import { DataColumns } from '../../components/data-table/data-table'; @@ -16,9 +15,8 @@ import { ContainerRequestState } from '../../models/container-request'; import { SortDirection } from '../../components/data-table/data-column'; import { ResourceKind } from '../../models/resource'; import { resourceLabel } from '../../common/labels'; -import { ProjectIcon, CollectionIcon, ProcessIcon, DefaultIcon, FavoriteIcon } from '../../components/icon/icon'; import { ArvadosTheme } from '../../common/custom-theme'; -import { FavoriteStar } from '../../views-components/favorite-star/favorite-star'; +import { renderName, renderStatus, renderType, renderOwner, renderFileSize, renderDate } from '../../views-components/data-explorer/renderers'; type CssRules = "toolbar" | "button"; @@ -32,61 +30,6 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ }, }); -const renderName = (item: ProjectPanelItem) => - - - {renderIcon(item)} - - - - {item.name} - - - - - - - - ; - - -const renderIcon = (item: ProjectPanelItem) => { - switch (item.kind) { - case ResourceKind.PROJECT: - return ; - case ResourceKind.COLLECTION: - return ; - case ResourceKind.PROCESS: - return ; - default: - return ; - } -}; - -const renderDate = (date: string) => { - return {formatDate(date)}; -}; - -const renderFileSize = (fileSize?: number) => - - {formatFileSize(fileSize)} - ; - -const renderOwner = (owner: string) => - - {owner} - ; - -const renderType = (type: string) => - - {resourceLabel(type)} - ; - -const renderStatus = (item: ProjectPanelItem) => - - {item.status || "-"} - ; - export enum ProjectPanelColumnNames { NAME = "Name", STATUS = "Status", -- 2.30.2