// SPDX-License-Identifier: AGPL-3.0
import React from "react";
-import { Grid, Typography, withStyles, Tooltip, IconButton, Checkbox, Chip } from "@material-ui/core";
+import { Grid, Typography, withStyles, Tooltip, IconButton, Checkbox, Chip, withTheme } from "@material-ui/core";
import { FavoriteStar, PublicFavoriteStar } from "../favorite-star/favorite-star";
import { Resource, ResourceKind, TrashableResource } from "models/resource";
import {
ActiveIcon,
SetupIcon,
InactiveIcon,
+ ErrorIcon,
} from "components/icon/icon";
import { formatDate, formatFileSize, formatTime } from "common/formatters";
import { resourceLabel } from "common/labels";
import { CopyToClipboardSnackbar } from "components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar";
import { ProjectResource } from "models/project";
import { ProcessResource } from "models/process";
+import { InlinePulser } from "components/loading/inline-pulser";
const renderName = (dispatch: Dispatch, item: GroupContentsResource) => {
const navFunc = "groupClass" in item && item.groupClass === GroupClass.ROLE ? navigateToGroupDetails : navigateTo;
onClick={() => {
item.kind === ResourceKind.GROUP && (item as GroupResource).groupClass === "role"
? dispatch<any>(navigateToGroupDetails(item.uuid))
- : item.kind === ResourceKind.USER
+ : item.kind === ResourceKind.USER
? dispatch<any>(navigateToUserProfile(item.uuid))
- : dispatch<any>(navigateTo(item.uuid));
+ : dispatch<any>(navigateTo(item.uuid));
}}
>
{resourceLabel(item.kind, item && item.kind === ResourceKind.GROUP ? (item as GroupResource).groupClass || "" : "")}:{" "}
}
}
);
+
+export const GroupMembersCount = connect(
+ (state: RootState, props: { uuid: string }) => {
+ const group = getResource<GroupResource>(props.uuid)(state.resources);
+
+ return {
+ value: group?.memberCount,
+ };
+
+ }
+)(withTheme()((props: {value: number | null | undefined, theme:ArvadosTheme}) => {
+ if (props.value === undefined) {
+ // Loading
+ return <Typography>
+ <InlinePulser />
+ </Typography>;
+ } else if (props.value === null) {
+ // Error
+ return <Typography>
+ <Tooltip title="Failed to load member count">
+ <ErrorIcon style={{color: props.theme.customs.colors.greyL}}/>
+ </Tooltip>
+ </Typography>;
+ } else {
+ return <Typography children={props.value} />;
+ }
+}));
import React from 'react';
import { connect } from 'react-redux';
-import { Grid, Button, Typography, StyleRulesCallback, WithStyles, withStyles, withTheme, Tooltip } from "@material-ui/core";
+import { Grid, Button, StyleRulesCallback, WithStyles, withStyles } from "@material-ui/core";
import { DataExplorer } from "views-components/data-explorer/data-explorer";
import { DataColumns } from 'components/data-table/data-table';
import { SortDirection } from 'components/data-table/data-column';
-import { ResourceUuid } from 'views-components/data-explorer/renderers';
-import { AddIcon, ErrorIcon } from 'components/icon/icon';
+import { GroupMembersCount, ResourceUuid } from 'views-components/data-explorer/renderers';
+import { AddIcon } from 'components/icon/icon';
import { ResourceName } from 'views-components/data-explorer/renderers';
import { createTree } from 'models/tree';
import { GROUPS_PANEL_ID, openCreateGroupDialog } from 'store/groups-panel/groups-panel-actions';
import { RootState } from 'store/store';
import { openContextMenu } from 'store/context-menu/context-menu-actions';
import { ArvadosTheme } from 'common/custom-theme';
-import { InlinePulser } from 'components/loading/inline-pulser';
type CssRules = "root";
}
}
}));
-
-
-const GroupMembersCount = connect(
- (state: RootState, props: { uuid: string }) => {
- const group = getResource<GroupResource>(props.uuid)(state.resources);
-
- return {
- value: group?.memberCount,
- };
-
- }
-)(withTheme()((props: {value: number | null | undefined, theme:ArvadosTheme}) => {
- if (props.value === undefined) {
- // Loading
- return <Typography>
- <InlinePulser />
- </Typography>;
- } else if (props.value === null) {
- // Error
- return <Typography>
- <Tooltip title="Failed to load member count">
- <ErrorIcon style={{color: props.theme.customs.colors.greyL}}/>
- </Tooltip>
- </Typography>;
- } else {
- return <Typography children={props.value} />;
- }
-}));