import { createElement, Component } from '@wordpress/element' import { __ } from 'ct-i18n' import classnames from 'classnames' import { Transition } from 'react-spring' import { Dialog, DialogOverlay, DialogContent } from '@reach/dialog' import '@reach/dialog/styles.css' import Tooltip from '../components/Tooltip' import fileSaver from 'file-saver' const upperCase = val => (val ? val.toUpperCase() : val) let systemStatusData = null export default class SystemStatus extends Component { state = { isLoading: !systemStatusData, systemStatusData: systemStatusData || {}, showDialog: false } componentDidMount() { wp.ajax.post('ct_load_system_status').then(data => { this.setState({ isLoading: false, systemStatusData: data }) systemStatusData = data }) } performDownload() { var blob = new Blob( [ JSON.stringify( { ...this.state.systemStatusData, browser_info: jQuery.browser }, null, ' ' ) ], { type: 'text/plain;charset=utf-8' } ) let date = new Date() let year = date.getFullYear() let month = date.getMonth() let day = date.getDate() let hour = date.getHours() let minutes = date.getMinutes() const filename = `ct-system-status-${year}-${month}-${day}-${hour}-${minutes}.json.txt` fileSaver.saveAs(blob, filename) this.setState({ showDialog: false }) } render() { return (
{this.state.isLoading && (

{__('Collecting System Status...')}

)} {!this.state.isLoading && (

{__( 'Download the system report file by clicking this button and send it to us in case you have problems.' )}

this.setState({ showDialog: true }) } className="ct-button"> {__('Get System Report')}
{Object.values(this.state.systemStatusData).map( (group, i) => (

{upperCase(group.title)}

    {Object.values(group.options).map( (entry, ii) => (
  • {entry.title}

    {entry.value} {entry.message && entry.doc && ( { entry.text } )}

  • ) )}
) )} {showDialog => showDialog && (props => ( this.setState({ showDialog: false }) }>

{__('System Report')}

{__( 'Download your system report file' )}

this.performDownload() } className="ct-button"> {__('Download')}
)) }
)}
) } }