21720: replaced theme.spacing.unit * x with theme.spacing(x) everywhere
[arvados.git] / services / workbench2 / src / views-components / api-client-authorizations-dialog / attributes-dialog.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import React from "react";
6 import { compose } from 'redux';
7 import { CustomStyleRulesCallback } from 'common/custom-theme';
8 import {
9     withStyles, Dialog, DialogTitle, DialogContent, DialogActions,
10     Button, WithStyles, Grid
11 } from '@material-ui/core';
12 import { WithDialogProps, withDialog } from "store/dialog/with-dialog";
13 import { API_CLIENT_AUTHORIZATION_ATTRIBUTES_DIALOG } from 'store/api-client-authorizations/api-client-authorizations-actions';
14 import { ArvadosTheme } from 'common/custom-theme';
15 import { ApiClientAuthorization } from 'models/api-client-authorization';
16 import { formatDate } from 'common/formatters';
17
18 type CssRules = 'root';
19
20 const styles: CustomStyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
21     root: {
22         fontSize: '0.875rem',
23         '& div:nth-child(odd)': {
24             textAlign: 'right',
25             color: theme.palette.grey["500"]
26         }
27     }
28 });
29
30 interface AttributesKeepServiceDialogDataProps {
31     apiClientAuthorization: ApiClientAuthorization;
32 }
33
34 export const AttributesApiClientAuthorizationDialog = compose(
35     withDialog(API_CLIENT_AUTHORIZATION_ATTRIBUTES_DIALOG),
36     withStyles(styles))(
37         ({ open, closeDialog, data, classes }: WithDialogProps<AttributesKeepServiceDialogDataProps> & WithStyles<CssRules>) =>
38             <Dialog open={open} onClose={closeDialog} fullWidth maxWidth='sm'>
39                 <DialogTitle>Attributes</DialogTitle>
40                 <DialogContent>
41                     {data.apiClientAuthorization && <Grid container direction="row" spacing={16} className={classes.root}>
42                         <Grid item xs={5}>UUID</Grid>
43                         <Grid item xs={7}>{data.apiClientAuthorization.uuid}</Grid>
44                         <Grid item xs={5}>Owner uuid</Grid>
45                         <Grid item xs={7}>{data.apiClientAuthorization.ownerUuid}</Grid>
46                         <Grid item xs={5}>API Client ID</Grid>
47                         <Grid item xs={7}>{data.apiClientAuthorization.apiClientId}</Grid>
48                         <Grid item xs={5}>API Token</Grid>
49                         <Grid item xs={7}>{data.apiClientAuthorization.apiToken}</Grid>
50                         <Grid item xs={5}>Created by IP address</Grid>
51                         <Grid item xs={7}>{data.apiClientAuthorization.createdByIpAddress || '(none)'}</Grid>
52                         <Grid item xs={5}>Default owner</Grid>
53                         <Grid item xs={7}>{data.apiClientAuthorization.defaultOwnerUuid || '(none)'}</Grid>
54                         <Grid item xs={5}>Expires at</Grid>
55                         <Grid item xs={7}>{formatDate(data.apiClientAuthorization.expiresAt) || '(none)'}</Grid>
56                         <Grid item xs={5}>Last used at</Grid>
57                         <Grid item xs={7}>{formatDate(data.apiClientAuthorization.lastUsedAt) || '(none)'}</Grid>
58                         <Grid item xs={5}>Last used by IP address</Grid>
59                         <Grid item xs={7}>{data.apiClientAuthorization.lastUsedByIpAddress || '(none)'}</Grid>
60                         <Grid item xs={5}>Scopes</Grid>
61                         <Grid item xs={7}>{JSON.stringify(data.apiClientAuthorization.scopes || '(none)')}</Grid>
62                         <Grid item xs={5}>User ID</Grid>
63                         <Grid item xs={7}>{data.apiClientAuthorization.userId || '(none)'}</Grid>
64                         <Grid item xs={5}>Created at</Grid>
65                         <Grid item xs={7}>{formatDate(data.apiClientAuthorization.createdAt) || '(none)'}</Grid>
66                         <Grid item xs={5}>Updated at</Grid>
67                         <Grid item xs={7}>{formatDate(data.apiClientAuthorization.updatedAt) || '(none)'}</Grid>
68                     </Grid>}
69                 </DialogContent>
70                 <DialogActions>
71                     <Button
72                         variant='text'
73                         color='primary'
74                         onClick={closeDialog}>
75                         Close
76                     </Button>
77                 </DialogActions>
78             </Dialog>
79     );