Skip to content

Commit b89b2d0

Browse files
bexsoftBenjamin Perez
andauthored
Changed bucket detail styles & minor fixes (#136)
Changed bucket detail styles & fixed minor issues for edit access policy & usage report not shown in page Co-authored-by: Benjamin Perez <benjamin@bexsoft.net>
1 parent edf687f commit b89b2d0

File tree

2 files changed

+116
-21
lines changed

2 files changed

+116
-21
lines changed

portal-ui/src/screens/Console/Buckets/ViewBucket/SetAccessPolicy.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ interface ISetAccessPolicyProps {
3535
classes: any;
3636
open: boolean;
3737
bucketName: string;
38+
actualPolicy: string;
3839
closeModalAndRefresh: () => void;
3940
}
4041

@@ -86,8 +87,14 @@ class SetAccessPolicy extends React.Component<
8687
});
8788
}
8889

90+
componentDidMount() {
91+
const { actualPolicy } = this.props;
92+
93+
this.setState({accessPolicy: actualPolicy});
94+
}
95+
8996
render() {
90-
const { classes, open } = this.props;
97+
const { classes, open, actualPolicy } = this.props;
9198
const { addLoading, addError, accessPolicy } = this.state;
9299
return (
93100
<ModalWrapper

portal-ui/src/screens/Console/Buckets/ViewBucket/ViewBucket.tsx

Lines changed: 108 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
import React from "react";
1818
import get from "lodash/get";
1919
import { createStyles, Theme, withStyles } from "@material-ui/core/styles";
20+
import Paper from "@material-ui/core/Paper";
2021
import Grid from "@material-ui/core/Grid";
22+
import Tabs from "@material-ui/core/Tabs";
23+
import Tab from "@material-ui/core/Tab";
2124
import api from "../../../../common/api";
22-
import { BucketEvent, BucketEventList, BucketInfo } from "../types";
25+
import {BucketEvent, BucketEventList, BucketInfo, BucketList} from "../types";
2326
import { Button } from "@material-ui/core";
2427
import Typography from "@material-ui/core/Typography";
2528
import SetAccessPolicy from "./SetAccessPolicy";
@@ -28,6 +31,7 @@ import { CreateIcon } from "../../../../icons";
2831
import AddEvent from "./AddEvent";
2932
import DeleteEvent from "./DeleteEvent";
3033
import TableWrapper from "../../Common/TableWrapper/TableWrapper";
34+
import {niceBytes} from "../../../../common/utils";
3135

3236
const styles = (theme: Theme) =>
3337
createStyles({
@@ -76,6 +80,42 @@ const styles = (theme: Theme) =>
7680
textAlign: "center",
7781
padding: "20px",
7882
},
83+
gridContainer: {
84+
display: "grid",
85+
gridTemplateColumns: "auto auto",
86+
gridGap: 8,
87+
justifyContent: "flex-start",
88+
alignItems: "center",
89+
"& div": {
90+
display: "flex",
91+
alignItems: "center",
92+
},
93+
"& div:nth-child(odd)": {
94+
justifyContent: "flex-end",
95+
fontWeight: 700,
96+
},
97+
"& div:nth-child(2n)": {
98+
minWidth: 150,
99+
},
100+
},
101+
masterActions: {
102+
width: "25%",
103+
minWidth: "120px",
104+
"& div": {
105+
margin: "5px 0px",
106+
},
107+
},
108+
paperContainer: {
109+
padding: 15,
110+
paddingLeft: 23,
111+
},
112+
headerContainer: {
113+
display: "flex",
114+
justifyContent: "space-between"
115+
},
116+
capitalizeFirst: {
117+
textTransform: "capitalize"
118+
}
79119
});
80120

81121
interface IViewBucketProps {
@@ -88,6 +128,7 @@ interface IViewBucketState {
88128
records: BucketEvent[];
89129
totalRecords: number;
90130
loading: boolean;
131+
loadingSize: boolean;
91132
error: string;
92133
deleteError: string;
93134
setAccessPolicyScreenOpen: boolean;
@@ -97,6 +138,8 @@ interface IViewBucketState {
97138
deleteOpen: boolean;
98139
selectedBucket: string;
99140
selectedEvent: BucketEvent | null;
141+
bucketSize: string;
142+
errorSize: string;
100143
}
101144

102145
class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
@@ -105,6 +148,7 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
105148
records: [],
106149
totalRecords: 0,
107150
loading: false,
151+
loadingSize: false,
108152
error: "",
109153
deleteError: "",
110154
setAccessPolicyScreenOpen: false,
@@ -114,6 +158,8 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
114158
deleteOpen: false,
115159
selectedBucket: "",
116160
selectedEvent: null,
161+
bucketSize: "0",
162+
errorSize: "",
117163
};
118164

119165
fetchEvents() {
@@ -147,6 +193,28 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
147193
});
148194
}
149195

196+
fetchBucketsSize() {
197+
const { match } = this.props;
198+
const bucketName = match.params["bucketName"];
199+
200+
this.setState({ loadingSize: true }, () => {
201+
api
202+
.invoke("GET", `/api/v1/buckets`)
203+
.then((res: BucketList) => {
204+
const resBuckets = get(res, "buckets", []);
205+
206+
const bucketInfo = resBuckets.find(bucket => bucket.name === bucketName) ;
207+
208+
const size = get(bucketInfo, "size", "0");
209+
210+
this.setState({ loadingSize: false, errorSize: "", bucketSize: size });
211+
})
212+
.catch((err: any) => {
213+
this.setState({ loadingSize: false, errorSize: err });
214+
});
215+
});
216+
}
217+
150218
closeAddModalAndRefresh() {
151219
this.setState({ setAccessPolicyScreenOpen: false }, () => {
152220
this.loadInfo();
@@ -175,6 +243,7 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
175243
componentDidMount(): void {
176244
this.loadInfo();
177245
this.fetchEvents();
246+
this.fetchBucketsSize();
178247
}
179248

180249
bucketFilter(): void {}
@@ -192,6 +261,7 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
192261
deleteOpen,
193262
addScreenOpen,
194263
selectedEvent,
264+
bucketSize,
195265
} = this.state;
196266

197267
const offset = page * rowsPerPage;
@@ -242,6 +312,7 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
242312
<SetAccessPolicy
243313
bucketName={bucketName}
244314
open={setAccessPolicyScreenOpen}
315+
actualPolicy={accessPolicy}
245316
closeModalAndRefresh={() => {
246317
this.closeAddModalAndRefresh();
247318
}}
@@ -258,36 +329,53 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
258329
<br />
259330
</Grid>
260331
<Grid item xs={12}>
261-
Access Policy: {accessPolicy}
262-
{" "}
263-
<Button
264-
variant="contained"
265-
size="small"
266-
color="primary"
267-
onClick={() => {
268-
this.setState({
269-
setAccessPolicyScreenOpen: true,
270-
});
271-
}}
272-
>
273-
Change Access Policy
274-
</Button>
275-
<br />
276-
Reported Usage: 0 bytes
277-
<br />
332+
<div className={classes.headerContainer}>
333+
<div><Paper className={classes.paperContainer}>
334+
<div className={classes.gridContainer}>
335+
<div>Access Policy:</div>
336+
<div className={classes.capitalizeFirst}>{accessPolicy.toLowerCase()}</div>
337+
<div>Reported Usage:</div>
338+
<div>{niceBytes(bucketSize)}</div>
339+
</div>
340+
</Paper></div>
341+
<div className={classes.masterActions}>
342+
<div>
343+
<Button
344+
variant="contained"
345+
color="primary"
346+
fullWidth
347+
size="medium"
348+
onClick={() => {
349+
this.setState({
350+
setAccessPolicyScreenOpen: true,
351+
});
352+
}}
353+
>
354+
Change Access Policy
355+
</Button>
356+
</div>
357+
</div>
358+
</div>
278359
</Grid>
279360
<Grid item xs={12}>
280361
<br />
281362
</Grid>
282363
<Grid item xs={6}>
283-
<Typography variant="h6">Events</Typography>
364+
<Tabs
365+
value={0}
366+
indicatorColor="primary"
367+
textColor="primary"
368+
aria-label="cluster-tabs"
369+
>
370+
<Tab label="Events" />
371+
</Tabs>
284372
</Grid>
285373
<Grid item xs={6} className={classes.actionsTray}>
286374
<Button
287375
variant="contained"
288376
color="primary"
289-
size="small"
290377
startIcon={<CreateIcon />}
378+
size="medium"
291379
onClick={() => {
292380
this.setState({
293381
addScreenOpen: true,

0 commit comments

Comments
 (0)