Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
cbbb633
Componentização
EuJulioGabriel Jul 7, 2020
6eea9f7
Merge pull request #1 from future4code/Julio-Dia1
7918-fredianelli Jul 7, 2020
6f74a5d
Layout básico
EuJulioGabriel Jul 7, 2020
a0d5a42
Renderização condicional e o controle do select
EuJulioGabriel Jul 7, 2020
108907a
Adição do botão filtrar e renderização inicial do filtro
EuJulioGabriel Jul 8, 2020
1dfa9b7
Adição do Botão de Cadastrar
EuJulioGabriel Jul 8, 2020
bb6578e
Props para o componente filtro
EuJulioGabriel Jul 8, 2020
34f50fc
Merge pull request #2 from future4code/Julio-Dia1
EuJulioGabriel Jul 8, 2020
f3730fa
Adicionamos a requisição de serviços cadastrados
EuJulioGabriel Jul 8, 2020
03df500
Merge pull request #3 from future4code/Julio-Dia1
EuJulioGabriel Jul 8, 2020
c381e82
Nova Componentização
EuJulioGabriel Jul 8, 2020
938dd7e
Merge pull request #4 from future4code/Julio-Dia1
EuJulioGabriel Jul 8, 2020
94134b2
Feita a parte de todas as ordenarções
Kamila-Melo Jul 8, 2020
f61619d
Estilização inicial CardServicos e inicio da funcionalidade da criaçã…
diegomiyabara Jul 8, 2020
6828ed9
Filtros inseridos
EuJulioGabriel Jul 8, 2020
d00ae29
Merge pull request #5 from future4code/Ninjas1
EuJulioGabriel Jul 9, 2020
5a5fdd4
Merge pull request #6 from future4code/branch-diego-ordenacao
EuJulioGabriel Jul 9, 2020
8969a4d
Merge branch 'master' into Julio-Dia1
EuJulioGabriel Jul 9, 2020
e7a74db
Merge pull request #7 from future4code/Julio-Dia1
EuJulioGabriel Jul 9, 2020
e29a2eb
Resolvendo Conflitos
EuJulioGabriel Jul 9, 2020
b2f384d
Apagando Comentários
EuJulioGabriel Jul 9, 2020
96d0ace
Botão de Canditar-me
EuJulioGabriel Jul 9, 2020
7713556
Merge pull request #8 from future4code/Julio-Dia2
EuJulioGabriel Jul 9, 2020
7addc0b
Parte de cadastrar serviços
Kamila-Melo Jul 9, 2020
5dd4282
Estilização Header e footer, inserção de botoes do header
diegomiyabara Jul 9, 2020
5b5064e
Funcionalidade botão candidatar-me
EuJulioGabriel Jul 9, 2020
2ceb1e9
Merge pull request #9 from future4code/Ninjas2
EuJulioGabriel Jul 9, 2020
23cb3d7
Merge pull request #10 from future4code/branch-diego-quinta
EuJulioGabriel Jul 9, 2020
676ba0a
Merge branch 'master' into Julio-Dia2
EuJulioGabriel Jul 9, 2020
879c875
Merge pull request #11 from future4code/Julio-Dia2
EuJulioGabriel Jul 9, 2020
8c6d718
correção de conflitos
diegomiyabara Jul 9, 2020
707ef43
lais-branch
laisflaviosilva Jul 10, 2020
6c6fe9e
estilização card de criação de serviços
diegomiyabara Jul 10, 2020
a3c5c9d
Merge pull request #12 from future4code/branch-diego-sexta
EuJulioGabriel Jul 10, 2020
5370a83
Merge pull request #13 from future4code/lais-branch
EuJulioGabriel Jul 10, 2020
ac4a33e
Feito layout da pagina de serviços
laisflaviosilva Jul 10, 2020
a27d5ea
Merge pull request #14 from future4code/lais-branch
EuJulioGabriel Jul 10, 2020
7e92687
estilizacao home, grid e botoes
diegomiyabara Jul 10, 2020
356bc47
Merge pull request #15 from future4code/branch-diego-sexta2
EuJulioGabriel Jul 10, 2020
2980a96
Resolvido problema do filtro, o problema era que estavamos recebendo …
EuJulioGabriel Jul 10, 2020
2204164
Merge pull request #16 from future4code/Julio-Dia2
EuJulioGabriel Jul 10, 2020
604ba69
Future Ninjas
EuJulioGabriel Jul 10, 2020
d8ab37a
Merge branch 'master' into Julio-Dia3
EuJulioGabriel Jul 10, 2020
7f944c7
Merge pull request #17 from future4code/Julio-Dia3
EuJulioGabriel Jul 10, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 96 additions & 36 deletions package-lock.json

Large diffs are not rendered by default.

56 changes: 55 additions & 1 deletion src/components/AppContainer.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,65 @@
import React, { Component } from 'react'
import Home from './Home'
import Header from './Header'
import CriacaoDeServicos from './CriacaoDeServicos'
import Servicos from './servicos/Servicos'
import Footer from './Footer'
import styled from 'styled-components'

const ContainerRenderiza = styled.div`
position:relative;
margin-bottom: 80px;
`

export class AppContainer extends Component {

state = {
paginaSelecionada: "home"
}

onClickVoltar = () => {
this.setState({paginaSelecionada: "home"})
}

onClickCriarServico = () => {
this.setState({paginaSelecionada: "criacaodeservicos"})
}

onClickServicos = () => {
this.setState({paginaSelecionada: "servicos"})
}

render() {

const renderizaNaTela = () => {

switch (this.state.paginaSelecionada) {
case "home":
return <Home
abrirServico={this.onClickServicos}
abrirCriacaoDeServicos={this.onClickCriarServico}
/>
case "servicos":
return <Servicos
voltar={this.onClickVoltar}
/>
case "criacaodeservicos":
return <CriacaoDeServicos
voltar={this.onClickVoltar}
/>
}
}
Comment on lines +34 to +51
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bom uso da renderização condicional! 👏👏


return (
<div>

<Header
onClickCriarServico={this.onClickCriarServico}
onClickServicos={this.onClickServicos}
onClickHome={this.onClickVoltar}/>
Comment on lines +55 to +58
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Atenção pra identação. Coloquem margem nas props e quebrem linha para fechar a tag:

           <Header 
              onClickCriarServico={this.onClickCriarServico} 
              onClickServicos={this.onClickServicos}
              onClickHome={this.onClickVoltar}
          />

<ContainerRenderiza>{renderizaNaTela()}</ContainerRenderiza>
<Footer />
</div>
)

}
}
184 changes: 184 additions & 0 deletions src/components/CriacaoDeServicos.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
import React from 'react'
import styled from 'styled-components'
import axios from 'axios'
import CheckBox from '@material-ui/core/Checkbox'
import TextField from '@material-ui/core/TextField'
import FormGroup from '@material-ui/core/FormGroup'
import FormControlLabel from '@material-ui/core/FormControlLabel'
import FormLabel from '@material-ui/core/FormLabel'
import FormControl from '@material-ui/core/FormControl'


const ContainerInputs = styled.div`
display: flex;
justify-content: center;
width: 50vw;
margin: 8px auto;
`
const ContainerButtons = styled.div`
width: 10vw;
display: flex;
justify-content:space-between;
margin: 0 auto;
`
const StyledTextField = styled(TextField)`
width: 30vw;
`
const ContainerServicos = styled.div`
border: 1px solid black;
width: 50vw;
padding: 16px;
margin: 16px auto;
border-radius: 20px;
Comment on lines +12 to +32
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Na próxima, tentem isolar as constantes do styled-components em um arquivo separado e apenas as importem no componente. Isso deixa o código bem mais limpo. Se vcs tiverem dúvida sobre isso, mandem lá no canal de dúvidas que podemos ajudar vcs...

`
export const ButtonCriacao = styled.button`
margin: 16px;
height: 40px;
width: 200px;
background-color: black;
color: #FFF;
border: none;
border-radius: 10px;
cursor: pointer;
outline:none;
:hover{
background-color: #FFEA52;
color: #474117;
}
`
class CriacaoDeServicos extends React.Component {

state = {
inputTitulo: "",
inputDescricao: "",
inputValorDaRemuneracao: "",
inputPrazo: "",
metodosPag: []
}

onChangeInputTitulo = (event) => {
this.setState({inputTitulo: event.target.value})
}

onChangeInputDescricao = (event) => {
this.setState({inputDescricao: event.target.value})
}

onChangeInputValorDaRemuneracao = (event) => {
this.setState({inputValorDaRemuneracao: event.target.value})
}

onChangeInputPrazo = (event) => {
this.setState({inputPrazo: event.target.value})
}

onChangeChecked = (event) => {
let metodosPag = [...this.state.metodosPag, event.target.id]
if(this.state.metodosPag.includes(event.target.id)){
metodosPag = metodosPag.filter(metodo => metodo !== event.target.id)
}
this.setState({
metodosPag: metodosPag
})

}

cadastroServico = () => {
const body = {
"title": this.state.inputTitulo,
"description": this.state.inputDescricao,
"value": this.state.inputValorDaRemuneracao,
"paymentMethods": this.state.metodosPag,
"dueDate": this.state.inputPrazo
}
axios.post('https://us-central1-labenu-apis.cloudfunctions.net/futureNinjasOne/jobs', body).then(
alert("Serviço cadastrado com sucesso!"),
this.setState({inputTitulo: "", inputDescricao: "", inputValorDaRemuneracao: "", inputPrazo: "", metodosPag: []})
).catch(err => {
console.log(err)
})
}

render () {
console.log(this.state.metodosPag)
return (
<ContainerServicos>
<ContainerInputs>
<StyledTextField
required
label='Título'
onChange={this.onChangeInputTitulo}
value={this.state.inputTitulo}
/>
</ContainerInputs>
<ContainerInputs>
<StyledTextField
required
label='Descrição'
onChange={this.onChangeInputDescricao}
value={this.state.inputDescricao}
/>
</ContainerInputs>
<ContainerInputs>
<StyledTextField
required
label='Valor da Remuneração'
onChange={this.onChangeInputValorDaRemuneracao}
value={this.state.inputValorDaRemuneracao}
/>
</ContainerInputs>
<ContainerInputs>
<StyledTextField
required
label='Prazo'
onChange={this.onChangeInputPrazo}
value={this.state.inputPrazo}
/>
</ContainerInputs>
<ContainerInputs>
<FormControl>
<FormLabel component="legend">Formas de Pagamento</FormLabel>
<FormGroup>
<FormControlLabel
control={
<CheckBox color="primary" type="checkbox" id="Transferência Bancária" value="Transferência Bancária" onChange={this.onChangeChecked}/>
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Atenção com a identação. Muitas props pedem quebra de linhas...

}
label="Transferência Bancária"
/>
<FormControlLabel
control={
<CheckBox color="primary" type="checkbox" id="Cartão de débito" value="Cartão de débito" onChange={this.onChangeChecked}/>
}
label="Cartão de débito"
/>
<FormControlLabel
control={
<CheckBox color="primary" type="checkbox" id="Cartão de crédito" value="Cartão de crédito" onChange={this.onChangeChecked}/>
}
label="Cartão de Crédito"
/>
<FormControlLabel
control={
<CheckBox color="primary" type="checkbox" id="Dinheiro" value="Dinheiro" onChange={this.onChangeChecked}/>
}
label="Dinheiro"
/>
<FormControlLabel
control={
<CheckBox color="primary" type="checkbox" id="Boleto" value="Boleto" onChange={this.onChangeChecked}/>
}
label="Cartão de Crédito"
/>
</FormGroup>
</FormControl>
</ContainerInputs>
<ContainerButtons>
<ButtonCriacao onClick={this.cadastroServico}>Cadastrar</ButtonCriacao>
<ButtonCriacao onClick={this.props.voltar}>Voltar</ButtonCriacao>
</ContainerButtons>
</ContainerServicos>
)
}
}

export default CriacaoDeServicos
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apesar dos meus comentários sobre identação, o código está muito bem escrito e identado! Parabéns!

25 changes: 25 additions & 0 deletions src/components/Footer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import React from 'react'
import styled from 'styled-components'

const ContainerFooter = styled.div`
height: 50px;
position: fixed;
bottom: 0;
background-color: #2B2D2F;
color: #FFF;
width: 100vw;
text-align: center;
font-size: 0.7em;
`

class Footer extends React.Component {
render () {
return (
<ContainerFooter>
<h2>Designed and created by Future Ninjas</h2>
</ContainerFooter>
)
}
}

export default Footer
53 changes: 53 additions & 0 deletions src/components/Header.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import React from 'react'
import styled from 'styled-components'
import Button from '@material-ui/core/Button'

const H1Header = styled.h1`
margin: 0;
padding: 0;
font-family: Andale Mono, monospace;
cursor: pointer;
`
Comment on lines +5 to +10
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Atenção para nomeação das constantes do styled-components. H1 não é um bom nome.


const ContainerHeader = styled.div`
height: 10vh;
display: flex;
justify-content: space-between;
border-bottom: 1px solid grey;
padding: 8px;
align-items: center;
padding: 0 32px;
`

export const ButtonHeader = styled.button`
margin: 16px;
height: 40px;
width: 200px;
background-color: black;
color: #FFF;
border: none;
border-radius: 10px;
cursor: pointer;
outline:none;
:hover{
background-color: #FFEA52;
color: #474117;
}
`

class Servicos extends React.Component {
render () {
return (
<ContainerHeader>
<H1Header onClick={this.props.onClickHome}>Future Ninjas</H1Header>
<div>
<ButtonHeader onClick={this.props.onClickServicos}>PROCURE SERVIÇOS!</ButtonHeader>
<ButtonHeader onClick={this.props.onClickCriarServico}>SEJA UM PROFISSIONAL!</ButtonHeader>
</div>

</ContainerHeader>
)
}
}

export default Servicos
Loading