// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; import { StyleRulesCallback, WithStyles, withStyles, Card, CardContent, Grid, Table, TableHead, TableRow, TableCell, TableBody, Tooltip, IconButton } from '@material-ui/core'; import { ArvadosTheme } from '~/common/custom-theme'; import { MoreOptionsIcon, HelpIcon } from '~/components/icon/icon'; import { ApiClientAuthorization } from '~/models/api-client-authorization'; import { formatDate } from '~/common/formatters'; type CssRules = 'root' | 'tableRow' | 'helpIconGrid' | 'tableGrid'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ root: { width: '100%', overflow: 'auto' }, helpIconGrid: { textAlign: 'right' }, tableGrid: { marginTop: theme.spacing.unit }, tableRow: { '& td, th': { whiteSpace: 'nowrap' } } }); export interface ApiClientAuthorizationPanelRootActionProps { openRowOptions: (event: React.MouseEvent, keepService: ApiClientAuthorization) => void; openHelpDialog: () => void; } export interface ApiClientAuthorizationPanelRootDataProps { apiClientAuthorizations: ApiClientAuthorization[]; hasApiClientAuthorizations: boolean; } type ApiClientAuthorizationPanelRootProps = ApiClientAuthorizationPanelRootActionProps & ApiClientAuthorizationPanelRootDataProps & WithStyles; export const ApiClientAuthorizationPanelRoot = withStyles(styles)( ({ classes, hasApiClientAuthorizations, apiClientAuthorizations, openRowOptions, openHelpDialog }: ApiClientAuthorizationPanelRootProps) => {hasApiClientAuthorizations && UUID API Client ID API Token Created by IP address Default owner Expires at Last used at Last used by IP address Scopes User ID {apiClientAuthorizations.map((apiClientAuthorizatio, index) => {apiClientAuthorizatio.uuid} {apiClientAuthorizatio.apiClientId} {apiClientAuthorizatio.apiToken} {apiClientAuthorizatio.createdByIpAddress || '(none)'} {apiClientAuthorizatio.defaultOwnerUuid || '(none)'} {formatDate(apiClientAuthorizatio.expiresAt) || '(none)'} {formatDate(apiClientAuthorizatio.lastUsedAt) || '(none)'} {apiClientAuthorizatio.lastUsedByIpAddress || '(none)'} {JSON.stringify(apiClientAuthorizatio.scopes)} {apiClientAuthorizatio.userId} openRowOptions(event, apiClientAuthorizatio)}> )}
}
);