11import React , { Component } from 'react' ;
2- import { PropagateLoader } from 'react-spinners' ;
2+ import { BarLoader } from 'react-spinners' ;
33
44const 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