11import React from 'react'
2- import { Modal , Dropdown , Message } from 'semantic-ui-react'
2+ import { Modal , Dropdown , Message , Button } from 'semantic-ui-react'
33import Chart from 'chart.js'
44import { fetchUsage , mapUsageByDate } from '../../services/api-catalog'
55
66 export default class Usage extends React . Component {
7- constructor ( props ) {
8- super ( props )
7+ state = {
8+ isLoading : false ,
9+ errorMessage : '' ,
10+ isOpen : false
11+ }
912
10- this . state = {
11- isLoading : false ,
12- errorMessage : ''
13- }
14- }
13+ open = ( ) => this . setState ( { isLoading : false , errorMessage : '' , isOpen : true } )
14+ close = ( ) => this . setState ( { isOpen : false } )
1515
1616 loadUsage ( event ) {
1717 event . preventDefault ( )
@@ -20,7 +20,7 @@ import { fetchUsage, mapUsageByDate } from '../../services/api-catalog'
2020 . then ( ( result ) => {
2121 const data = mapUsageByDate ( result . data , 'used' )
2222 const ctx = document . getElementById ( 'api-usage-chart-container' )
23- console . log ( ctx )
23+
2424 new Chart ( ctx , {
2525 type : 'line' ,
2626 data : {
@@ -53,7 +53,15 @@ import { fetchUsage, mapUsageByDate } from '../../services/api-catalog'
5353 }
5454
5555 render ( ) {
56- return < Modal size = 'small' trigger = { < Dropdown . Item onClick = { event => this . loadUsage ( event ) } > Show Usage</ Dropdown . Item > } >
56+ const { isOpen } = this . state
57+
58+ return < Modal
59+ size = 'small'
60+ open = { isOpen }
61+ onOpen = { this . open }
62+ onClose = { this . close }
63+ trigger = { < Dropdown . Item onClick = { event => this . loadUsage ( event ) } > Show Usage</ Dropdown . Item > }
64+ >
5765 < Modal . Header > Usage</ Modal . Header >
5866 < Modal . Content >
5967 < Modal . Description >
@@ -62,6 +70,9 @@ import { fetchUsage, mapUsageByDate } from '../../services/api-catalog'
6270 { this . state . errorMessage ? < Message error content = { this . state . errorMessage . toString ( ) } /> : '' }
6371 < canvas id = 'api-usage-chart-container' width = '400' height = '400' > </ canvas >
6472 </ Modal . Content >
73+ < Modal . Actions style = { { textAlign : 'right' } } >
74+ < Button type = 'button' onClick = { this . close } > Close</ Button >
75+ </ Modal . Actions >
6576 </ Modal >
6677 }
6778}
0 commit comments