Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adicionando o meu projeto na imersão #317

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Prev Previous commit
Next Next commit
Atividades aula 5, finalização da API e Animações
  • Loading branch information
ewerton-augusto committed Feb 1, 2021
commit 57de8f07e9fcf7954700f600cb53db5240e5ab2a
2 changes: 2 additions & 0 deletions contributors/ewerton-augusto.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ewerton-augusto
https://aluraquiz-inclusao-git-main.ewerton-augusto.vercel.app/
4 changes: 3 additions & 1 deletion db.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@
}
],
"external": [
""
"https://aluraquiz-base.alura-challenges.vercel.app/",
"https://tibiaquiz-base.lubrum.vercel.app/",
"https://poderosochefaoquiz.admsilva.vercel.app/"
],
"theme": {
"colors": {
Expand Down
43 changes: 43 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"eslint:init": "eslint --init"
},
"dependencies": {
"framer-motion": "^3.2.2-rc.1",
"next": "latest",
"react": "^16.8.0",
"react-dom": "^16.8.0",
Expand Down
8 changes: 8 additions & 0 deletions pages/_app.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ const GlobalStyle = createGlobalStyle`
min-height: 100vh;
}

ul{
padding: 0;
}

li {
list-style-type:none;
}

#__next {
flex: 1;
display: flex;
Expand Down
69 changes: 58 additions & 11 deletions pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import QuizContainer from '../src/components/QuizContainer';
import Widget from '../src/components/Widget';
import Input from '../src/components/Input';
import Button from '../src/components/Button';
import Link from '../src/components/Link';
import Footer from '../src/components/Footer';
import GitHubCorner from '../src/components/GitHubCorner';
import { motion } from 'framer-motion';
import { useRouter } from 'next/router';

export default function Home() {
Expand All @@ -17,7 +19,15 @@ export default function Home() {
<QuizBackground backgroundImage={db.bg}>
<QuizContainer>
<QuizLogo />
<Widget>
<Widget
as={motion.section}
transition={{ delay: 0.4, duration: 0.4 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '100%' },
}}
initial="hidden"
animate="show">
<Widget.Header>
<h1>{db.title}</h1>
</Widget.Header>
Expand All @@ -30,26 +40,63 @@ export default function Home() {
}
}>
<label>Digite seu nome para jogar:
<Input
placeholder={'Digite o seu nome para jogar'}
onChange={(e) => setName(e.target.value)}
name="nomeDoUsuario"
value={name}
<Input
placeholder={'Digite o seu nome para jogar'}
onChange={(e) => setName(e.target.value)}
name="nomeDoUsuario"
value={name}
/>
</label>
<Button type="submit" disabled={name.length === 0}> Jogar {name} </Button>
</form>
</Widget.Content>
</Widget>
<Widget>
<Widget
as={motion.section}
transition={{ delay: 0.5, duration: 0.5 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '100%' },
}}
initial="hidden"
animate="show"
>
<Widget.Content>
<h1>Quiz da galera</h1>
<p>Em breve</p>
<h1>Quizes da Galera</h1>
<ul>
{db.external.map((externalLink) => {
const [projectName, githubUser] = externalLink
.replace(/\//g, '')
.replace('https:', '')
.replace('.vercel.app', '')
.split('.');

return (
<li key={externalLink}>
<Widget.Topic
as={Link}
href={`/quiz/${projectName}___${githubUser}`}
disabled={name.length === 0}
>
{`${githubUser}/${projectName}`}
</Widget.Topic>
</li>
);
})}
</ul>
</Widget.Content>
</Widget>
<Footer />
<Footer
as={motion.footer}
transition={{ delay: 0.6, duration: 0.6 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '100%' },
}}
initial="hidden"
animate="show" />
</QuizContainer>
<GitHubCorner projectUrl="https://github.com/ewerton-augusto" />
</QuizBackground>
</QuizBackground >
);
}
34 changes: 29 additions & 5 deletions pages/quiz/[id].js
Original file line number Diff line number Diff line change
@@ -1,9 +1,33 @@
import React from 'react';
import { ThemeProvider } from 'styled-components';
import QuizPage from '../quiz';

export default function QuizDaGaleraPage({ dbExtern }) {
console.log(dbExtern);
return (
<ThemeProvider theme={dbExtern.theme}>
<QuizPage database={dbExtern} />
</ThemeProvider>

export default function QuizDaGalera(){
return(
<div>
Desafio da próxima aula com animações!
</div>
);
}

export async function getServerSideProps(context) {
const [projetctName, githubUser] = context.query.id.split('___');

const dbExtern = await fetch(`https://${projetctName}.${githubUser}.vercel.app/api/db`)
.then((serverResponse) => {
if (serverResponse.ok) {
return serverResponse.json();
}
throw new Error('Falha ao acessar a API para pegar os dados do Quiz.');
})
.then((convertedResponseInObject) => convertedResponseInObject)
.catch((err) => { throw new Error(err) });

return ({
props: {
dbExtern,
},
});
}
83 changes: 63 additions & 20 deletions pages/quiz.js → pages/quiz/index.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,32 @@
import React from 'react';
import db from '../db.json';
import QuizLogo from '../src/components/QuizLogo';
import QuizBackground from '../src/components/QuizBackground';
import QuizContainer from '../src/components/QuizContainer';
import Widget from '../src/components/Widget';
import QuizImage from '../src/components/QuizImage';
import AlternativesForm from '../src/components/AlternativesForm';
import Button from '../src/components/Button';
import Footer from '../src/components/Footer';
import GitHubCorner from '../src/components/GitHubCorner';
import db from '../../db.json';
import QuizLogo from '../../src/components/QuizLogo';
import QuizBackground from '../../src/components/QuizBackground';
import QuizContainer from '../../src/components/QuizContainer';
import Widget from '../../src/components/Widget';
import QuizImage from '../../src/components/QuizImage';
import BackLinkArrow from '../../src/components/BackLinkArrow';
import AlternativesForm from '../../src/components/AlternativesForm';
import Button from '../../src/components/Button';
import Footer from '../../src/components/Footer';
import GitHubCorner from '../../src/components/GitHubCorner';
import { motion } from 'framer-motion';
import { useRouter } from 'next/router';
import Link from '../../src/components/Link';

function LoadingWidget() {
return (
<Widget>
<Widget
as={motion.section}
transition={{ delay: 0.1, duration: 0.1 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '40%' },
}}
initial="hidden"
animate="show">
<Widget.Header>
Carregando dados - {db.title}
Carregando dados {db.title}
</Widget.Header>
<QuizImage src={'/loading.gif'} />
<Widget.Content>
Expand All @@ -27,7 +38,16 @@ function LoadingWidget() {

function ResultWidget({ results, nome }) {
return (
<Widget>
<Widget
as={motion.section}
transition={{ delay: 0.7, duration: 0.7 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '100%' },
}}
initial="hidden"
animate="show"
>
<Widget.Header>
<h1>{nome}</h1>
<p>Final de jogo. Parabéns pela participação!</p>
Expand All @@ -40,6 +60,9 @@ function ResultWidget({ results, nome }) {
<ul>
{results.map((result, i) => <li key={`result__${result}`}> {`#Pergunta ${i + 1}: ${result === true ? 'Acertou' : 'Errou'}`} </li>)}
</ul>
<Widget.Topic as={Link} href="/">
Jogar Novamente
</Widget.Topic>
</Widget.Content>
</Widget>
);
Expand All @@ -53,9 +76,18 @@ function QuestionWidget({ question, questionIndex, totalQuestions, name, onSubmi
const isCorrect = selectedAlternative === question.answer;

return (
<Widget>
<Widget
as={motion.section}
transition={{ delay: 0.2, duration: 0.5 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '100%' },
}}
initial="hidden"
animate="show"
>
<Widget.Header>
<h1>{`Pergunta ${questionIndex + 1} de ${totalQuestions}`}</h1>
<BackLinkArrow href="/" /> {`Pergunta ${questionIndex + 1} de ${totalQuestions}`}
</Widget.Header>
<QuizImage src={question.image} />
<Widget.Content>
Expand Down Expand Up @@ -110,15 +142,19 @@ const screenStates = {
RESULT: 'RESULT'
};

export default function QuizPage() {
export default function QuizPage({database}) {
if(!database){
database = db;
}

const router = useRouter();
const { name } = router.query;

const [results, setresults] = React.useState([]);
const [screenState, setScreenState] = React.useState(screenStates.LOADING);
const totalQuestions = db.questions.length;
const totalQuestions = database.questions.length;
const [questionIndex, setQuestionIndex] = React.useState(0);
const question = db.questions[questionIndex];
const question = database.questions[questionIndex];

const addResult = (result) => {
setresults([...results, result]);
Expand All @@ -134,7 +170,7 @@ export default function QuizPage() {
}

return (
<QuizBackground backgroundImage={db.bg}>
<QuizBackground backgroundImage={database.bg}>
<QuizContainer>
<QuizLogo />
{screenState === screenStates.QUIZ && (
Expand All @@ -149,7 +185,14 @@ export default function QuizPage() {
)}
{screenState === screenStates.LOADING && <LoadingWidget />}
{screenState === screenStates.RESULT && <ResultWidget results={results} name={name} />}
<Footer />
<Footer as={motion.footer}
transition={{ delay: 0.6, duration: 0.6 }}
variants={{
show: { opacity: 1, y: '0' },
hidden: { opacity: 0, y: '100%' },
}}
initial="hidden"
animate="show" />
</QuizContainer>
<GitHubCorner projectUrl="https://github.com/ewerton-augusto" />
</QuizBackground>
Expand Down
Loading