Skip to content
Snippets Groups Projects
ReportUserForm.js 7.37 KiB
Newer Older
/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre
Departamento de Informatica - Universidade Federal do Parana

This file is part of Plataforma Integrada MEC.

Plataforma Integrada MEC is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Plataforma Integrada MEC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with Plataforma Integrada MEC.  If not, see <http://www.gnu.org/licenses/>.*/
import React, {useState} from 'react';
import { Button } from '@material-ui/core';
import styled from 'styled-components'
import Radio from '@material-ui/core/Radio';
import RadioGroup from '@material-ui/core/RadioGroup';
import FormControlLabel from '@material-ui/core/FormControlLabel';
import FormControl from '@material-ui/core/FormControl';
import TextField from '@material-ui/core/TextField';
vgm18's avatar
vgm18 committed
import { withStyles, makeStyles } from '@material-ui/core/styles';

const StyledRadio = withStyles({
vgm18's avatar
vgm18 committed
    root: {
        '&$checked': {
            color: '#ff7f00 !important',
        },
vgm18's avatar
vgm18 committed
    checked: {},
})((props) => <Radio {...props} />);
vgm18's avatar
vgm18 committed
export const useStyles = makeStyles(theme => ({
    darkTextField: {
        maxWidth: "100%",
        fontSize: "15px",
        color: "white",
        width: "100%"
    },
    lightTextField: {
        maxWidth: "100%",
        fontSize: "15px",
        color: "black",
        width: "100%"
    }
}));

export default function ReportForm (props) {
    const [value, setValue] = useState(-1);
vgm18's avatar
vgm18 committed
    const classes = useStyles();

    const handleChange = (event) => {
        setValue(event.target.value);
    };

    /*values are set according to backend complaint id*/
    const [options] = React.useState([
        {value : "6", text :'Esta pessoa está fingindo ser eu ou alguém que eu conheço.'},
        {value : "4", text : 'Essa pessoa envia spam.'},
        {value : "3", text : 'Essa é uma conta falsa.'},
        {value : "1", text : ' A publicação dessa pessoa viola os diretos autorais.'},
        {value : "2", text : 'As publicações dessa pessoa contém conteúdo ofensivo/abusivo.'}
    ])

    const [moreInfo, setMoreInfo] = React.useState({
        key : false,
        value : "",
    })

    const handleChangeMoreInfo = (e) => {
        const userInput = e.target.value

        const flag = userInput.length > 150 ? true : false

        setMoreInfo({...moreInfo,
            key : flag,
            value : userInput
        })
    }

    const formSubmit = (e) => {
        e.preventDefault()
        const finalRadioValue = value
        const finalMoreInfo = moreInfo

        if( finalRadioValue !== -1 && !(finalMoreInfo.key)) {
            props.handleSubmit(finalRadioValue, finalMoreInfo.value)
        }
    }

    return (
        <form onSubmit={(e) => {formSubmit(e)}}>
vgm18's avatar
vgm18 committed
            <StyledFormControl contrast={props.contrast} component="fieldset">
                <RadioGroup value={value} onChange={handleChange}>
                    {
                        options.map(option =>
vgm18's avatar
vgm18 committed
                            <FormControlLabel value={option.value} control={<StyledRadio contrast={props.contrast}/>} label={option.text} />
vgm18's avatar
vgm18 committed
                contrast={props.contrast}
                id = {"Escreva mais sobre o problema"}
                label={"Escreva mais sobre o problema"}
                type = {"text"}
                value = {moreInfo.value}
                onChange = {e => handleChangeMoreInfo(e)}
                helperText = {moreInfo.value.length + '/150'}
                multiline={true}
                rowsMax = {"5"}
                error = {moreInfo.key}
vgm18's avatar
vgm18 committed
                InputProps={props.contrast === "" ? { className: classes.lightTextField } : { className: classes.darkTextField }}
vgm18's avatar
vgm18 committed
                <ButtonCancelar contrast={props.contrast} onClick={props.handleClose}>CANCELAR</ButtonCancelar>
                <ButtonEnviar contrast={props.contrast} type="submit">ENVIAR</ButtonEnviar>
    display : flex;
    flex-direction : row;
    justify-content : flex-end;
    align-items : center;
`

vgm18's avatar
vgm18 committed
    color: ${props => props.contrast === "" ? "#666 !important" : "yellow !important"};
    text-decoration: ${props => props.contrast === "" ? "none !important" : "yellow underline !important"};
    height : 36px !important;
    padding-left : 16px !important;
    padding-right : 16px !important;
    font-weight : 500 !important;
    border-radius : 3px !important;
    background-color: transparent;
    min-width : 88px !important;
    height : 36px !important;
`

vgm18's avatar
vgm18 committed
    color: ${props => props.contrast === "" ? "white !important" : "yellow !important"};
vgm18's avatar
vgm18 committed
    background-color: ${props => props.contrast === "" ? "#00bcd4 !important" : "black !important"};
vgm18's avatar
vgm18 committed
    text-decoration: ${props => props.contrast === "" ? "none !important" : "yellow underline !important"};
    border: ${props => props.contrast === "" ? "none !important" : "1px solid white !important"};
    font-size: 14px !important;
    font-weight: 500 !important;
    height: 36px !important;
    border-radius: 3px !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
    box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important;
    outline : none !important;
    min-width : 88px !important;
    vertical-align : middle !important;
    margin : 6px 8px !important;

    .MuiButton-label {
        padding-right : 16px;
        padding-left : 16px;
    }
`
vgm18's avatar
vgm18 committed
    
    padding: 20px 20px 20px 20px;
    .MuiOutlinedInput-root {
        &.Mui-focused fieldset {
            border-color: ${props => props.contrast === "" ? "#ff7f00" : "yellow"};
        }
        fieldset {
            border-color: ${props => props.contrast === "" ? "#666" : "white"};
        }
    }

    label{
        color: ${props => props.contrast === "" ? "#666" : "white"};
vgm18's avatar
vgm18 committed
        color: ${props => props.contrast === "" ? "#ff7f00" : "yellow"};
vgm18's avatar
vgm18 committed
    .MuiFormHelperText-root {
        text-align : left;
        color: ${props => props.contrast === "" ? "#666" : "white"};
vgm18's avatar
vgm18 committed
        border-bottom: 2px solid ${props => props.contrast === "" ? "#ff7f00" : "yellow"};
export const StyledFormControl = styled(FormControl)`
vgm18's avatar
vgm18 committed
        color: ${props => props.contrast === "" ? "#666" : "yellow"};
        text-decoration: ${props => props.contrast === "" ? "none" : "underline"};
    }
    .MuiIconButton-label {
        color: ${props => props.contrast === "" ? "#666" : "white"};