import { createElement, Component } from '@wordpress/element' import { __ } from 'ct-i18n' import classnames from 'classnames' 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 || {} } 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) } 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.performDownload()} className="ct-button"> {__('Download 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 } )}

  • ) )}
) )}
)}
) } }