Skip to content
Snippets Groups Projects
App.js 6.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • //import logo from './logo.svg';
    //import './App.css';
    //
    //function App() {
    //  return (
    //    <div className="App">
    //      <header className="App-header">
    //        <img src={logo} className="App-logo" alt="logo" />
    //        <p>
    //          Edit <code>src/App.js</code> and save to reload.
    //        </p>
    //        <a
    //          className="App-link"
    //          href="https://reactjs.org"
    //          target="_blank"
    //          rel="noopener noreferrer"
    //        >
    //          Learn React
    //        </a>
    //      </header>
    //    </div>
    //  );
    //}
    //
    //export default App;
    
    import React, { useState } from 'react';
    
    import FourButtons from './Components/FourButtons';
    import { Dialog } from 'react-overlay-pack';
    import CorrectSign from './material/sign_correct.png';
    import ErrorSign from './material/sign_error.png';
    
    
    
    function App() {
        const { useState } = React;
        const [queryStr, setQueryStr] = useState('')
    
        const [sign, setSign] = useState(CorrectSign)
    
        const [text, setText] = useState('This area shows the result of requests..')
    
        const [formState, setFormState] = useState('hide')
        const [dialogState, setDialogState] = useState(false)
    
        const axios = require('axios').default;
    
        var center = {display: 'flex', justifyContent: 'center', alignItems: 'center'}
    
        function get() {
            axios.get('http://127.0.0.1:5000/api/' + queryStr)
            .then(function (response) {
                // handle success
                setSign(CorrectSign)
                showDialog()
                document.getElementById('dialog').value = response.status + ":\n" + response.statusText
                document.getElementById('board').value = JSON.stringify(response.data)
            })
            .catch(function (error) {
                // handle error
                setSign(ErrorSign)
                showDialog()
                document.getElementById('dialog').value = error
            })
        }
        function put() {
            changeFormState()
        }
    
        function mesg() {
    
            document.getElementById('board').value = 'Hello there!'
        }
        function changeFormState() {
            if (formState === 'hide') {
                setFormState('show')
            } else {
                setFormState('hide')
            }
        }
        function showDialog() {
            setDialogState(true)
    
        }
        return (
            <div>
    
                {dialogState === true &&
                <Dialog
                    show={dialogState}
                    onOutsideClick={() => setDialogState(false)}>
                        <div style={{marginTop:'20%'}}>
                            <div style={{
                                        marginLeft: '35%'
                                    }}>
                                <img src={sign}/>
                            </div>
                            <div>
                                <textarea id='dialog' 
                                    readOnly={true}
                                    rows="3" 
                                    cols="38"
                                    style={{
                                        border:'2px solid silver', 
                                        backgroundColor: 'white', 
                                        fontSize: '200%',
                                        margin: '50px'
                                    }}>
                                    {text}
                                </textarea>
                            </div>
                        </div>
                </Dialog>}
    
                <form name='mainform'>
    
                    <h1 style={center}> 
                        Welcome to the home page of GoodReads Crawler! </h1>
                    <h3 style={center}> Please input your query string:</h3>
                    <div style={center}>
                        <input 
                            id='queryString' 
                            type='text' 
                            placeholder='example: book?id=12345678' 
                            size='40' 
                            value={queryStr}
                            onChange={(e) => setQueryStr(e.target.value)}
                        />
                    </div>
                    <h3 style={center}> Please input your data for uploading (only effective for POST and PUT):</h3>
                    {formState === 'hide' && 
                        <div style={center}>
                            <button style={{width:60}} onClick={changeFormState}>
                                book
                            </button>
                            <button style={{marginLeft:10, width:60}} onClick={changeFormState}>
                                author
                            </button>
                        </div>}
                    {formState === 'show' &&
                        <form style={center}>
                            <table border="1" style="width:100%;">
                                <tr>
                                    <td>Cell 1</td>
                                    <input/>
                                </tr>
                                <tr>
                                    <td>Cell 3</td>
                                    <input/>
                                </tr>
                            </table>
                        </form>}
    
                </form>
    
                <div style={{marginTop:20, display: 'flex', justifyContent: 'center', alignItems: 'center'}}>
    
                    <FourButtons 
                        backColor='blue' 
                        borderColor='RoyalBlue'
                        leftMargin={0}
                        text='GET'
    
                    <FourButtons 
                        backColor='black' 
                        borderColor='gray'
                        leftMargin={20}
                        text='PUT'
    
                    <FourButtons 
                        backColor='green' 
                        borderColor='seagreen'
                        leftMargin={20}
                        text='POST'
    
                    <FourButtons 
                        backColor='red' 
                        borderColor='indianred'
                        leftMargin={20}
                        text='DELETE'
                        func={mesg} />
                </div>
    
                <div style={{marginTop:20, display: 'flex', justifyContent: 'center', alignItems: 'center'}}>
    
                    <textarea id="board" name="returnData" rows="6" cols="50" value={text} readOnly={true}>
                    </textarea>
                </div>
            </div>
        );
    }
    
    export default App;