Skip to content

Commit 555aa97

Browse files
committed
Loading animation when retrieving stats
1 parent 0e024f6 commit 555aa97

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/components/BucketStats.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { Component } from 'react';
2-
import { PropagateLoader } from 'react-spinners';
2+
import { BarLoader } from 'react-spinners';
33

44
const execAsync = window.require('async-child-process').execAsync;
55

@@ -8,7 +8,8 @@ class BucketStats extends Component {
88
super(props);
99
this.state = {
1010
selectedBucket: '',
11-
bucketStats: ''
11+
bucketStats: '',
12+
loading: false
1213
};
1314
}
1415

@@ -23,19 +24,19 @@ class BucketStats extends Component {
2324
getBucketStats() {
2425
// A different approach:
2526
// aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2018-02-14T10:00:00 --end-time 2018-02-15T01:00:00 --period 86400 --statistics Average --region us-west-2 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=pic2snap.com Name=StorageType,Value=StandardStorage
26-
27+
this.setState({loading: true});
2728
execAsync(`aws s3 ls --summarize --human-readable --recursive s3://${this.props.selectedBucket.name}`).then(results => {
2829
var parsedBucketStats = this.parseBucketStats(results.stdout);
29-
let bucket = {...this.state.buckeet};
30+
let bucket = {...this.state.selectedBucket};
3031

31-
bucket.size = parsedBucketStats;
32-
this.setState({selectedBucket: bucket});
32+
bucket.totalObjects = parsedBucketStats[2];
33+
bucket.totalSize = parsedBucketStats[5] + ' ' + parsedBucketStats[6];
34+
this.setState({selectedBucket: bucket, loading: false});
3335
});
3436
}
3537

3638
parseBucketStats(bucketStats) {
37-
var stringArray = bucketStats.split('\n\n');
38-
return stringArray.pop();
39+
return bucketStats.split('\n\n').pop().split(/\s+/);
3940
}
4041

4142
render() {
@@ -44,7 +45,15 @@ class BucketStats extends Component {
4445
<div className="d-flex-col">
4546
<h2>Bucket Information</h2>
4647
<div>
47-
{this.state.selectedBucket.size}
48+
<BarLoader
49+
loading={this.state.loading}
50+
/>
51+
{ !this.state.loading &&
52+
<ul>
53+
<li>Total Objects: {this.state.selectedBucket.totalObjects ? this.state.selectedBucket.totalObjects : 'N/A'}</li>
54+
<li>Total Size: {this.state.selectedBucket.totalSize ? this.state.selectedBucket.totalSize : 'N/A'}</li>
55+
</ul>
56+
}
4857
</div>
4958
</div>
5059
</div>

0 commit comments

Comments
 (0)