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

Serviço de Rotas #207

Merged
merged 8 commits into from
May 30, 2024
Merged

Serviço de Rotas #207

merged 8 commits into from
May 30, 2024

Conversation

JonasGz
Copy link
Contributor

@JonasGz JonasGz commented May 1, 2024

Closes #119

Feature

Criação do serviço de rotas para gerenciar, navegar e configurar roteamento.

Visual evidences 🖼️

testes

Checklist
  • [ x ] Issue linked
  • [ x ] Build working correctly
  • [ x ] Tests created
Additional info

GERAL:

As rotas foram separada em grupos, pensando na abstração para facilitar a manutenção.
Cada grupo possui suas rotas, conforme explicado abaixo:
a. Grupos:
(cadastro-pet), (meus-pets), (rotas-principais)
grupos rotas
Exemplo de um grupo:
Cadastro do pet:
Cada rota é uma nova página do processo de cadastro de pet
cadastropet
Rota cadastro do pet
image

TUTORIAL

  1. CRIAÇÃO DE ROTAS:
    Seguirei o exemplo da rota cadastropet já criada da imagem anterior para explicar
  2. Importar a biblioteca vanilla-routint, conforme a imagem anterior
  3. Importar a sua página, no caso do exemplo é a página NoPetRegisteredPage
  4. Explicação de cada linha:
  • pathname: recebe a rota;
  • routeLocation() - método que informa a rota atual, caso seja necessário, no exemplo coloquei em um log. Obs: precisa importar o routeLocation, conforme exemplo.

A partir de agora será um boilerplate:

  • criação de uma div, com a classe 'home__content-page'
  • instanciar sua página, no caso do exemplo: const noPetRegirestedPage = new NoPetRegirestedPage();
  • adicionar a página a div criada: noPetRegirestedPage.mount($content);
  • Retornar a div contendo a página: return $content;
  • o método Router.dispose() serve para emitir uma função ao sair da rota atual, no exemplo eu utilizei para emitir um log, mas você pode ter outra necessidade. Obs: precisa importar o routeLocation, conforme exemplo.
  1. NAVEGAÇÃO
    a. Navegação por link:
    Para navegar entre rotas com links, basta incluir o atributo
    data-vanilla-route-link` = "spa" e informar a rota no href, conforme abaixo:
    image
    b. Navegação utilizando métodos:
    Caso haja necessidade de navegar utilizando um método, como no caso de um botão que ao ser clicado deve levar a uma nova página, para isso, basta utilizar o método go(), que recebe uma string contendo a rota, conforme exemplo abaixo que utilizei um evento de click para chamar o método:
    replace button
    c. Outros métodos adicionais:
    back()
    é usado para navegar até a página anterior no histórico da sessão.
    forward()
    é usado para navegar para a próxima página no histórico da sessão.

Obs:
a. Foram criadas apenas as rotas existentes atualmente, conforme o figma, mas acredito que terá outras rotas no andamento do projeto;
b. Utilizei apenas as funcionalidades da biblioteca que julguei necessárias.

Referências:
https://github.com/jscodelover/vanilla-routing

@JonasGz JonasGz force-pushed the issue-119 branch 2 times, most recently from f9e807e to 6dde910 Compare May 16, 2024 17:54
@JonasGz JonasGz marked this pull request as ready for review May 16, 2024 17:54
vite.config.js Outdated Show resolved Hide resolved
src/router/routes/rotas-principais/rotas-principais.js Outdated Show resolved Hide resolved
src/router/routes/rotas-principais/rotas/conta.js Outdated Show resolved Hide resolved
src/router/routes/meus-pets/meus-pets.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/cadastro-pet.js Outdated Show resolved Hide resolved
Copy link
Member

@zoldyzdk zoldyzdk left a comment

Choose a reason for hiding this comment

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

Eu vi alguns detalhes e também tem uma questão, vi muitos logs nos arquivos, eles são realmente necessários pra o roteamento? Alguns eu pontuei mas quando vi que era muito repetitivo parei, se não forem necessários pode tirar todos, e tem uns pathalias pra aplicar também.

src/router/main-router.js Outdated Show resolved Hide resolved
src/router/main-router.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/cadastro-pet.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/aniversario.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/aniversario.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/aniversario.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/nome.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/nome.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/nome.js Outdated Show resolved Hide resolved
src/router/routes/cadastro-pet/etapas/peso.js Outdated Show resolved Hide resolved
@JonasGz
Copy link
Contributor Author

JonasGz commented May 21, 2024

Eu vi alguns detalhes e também tem uma questão, vi muitos logs nos arquivos, eles são realmente necessários pra o roteamento? Alguns eu pontuei mas quando vi que era muito repetitivo parei, se não forem necessários pode tirar todos, e tem uns pathalias pra aplicar também.

os logs não são necessários, coloquei apenas como exemplo de utilização do método, ai o exemplo era emitindo um log, talvez a pessoa que criar a página precise emitir algum evento, ai deixei como exemplo, mas posso deletar

Copy link
Contributor

@Alecell Alecell left a comment

Choose a reason for hiding this comment

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

Deveria estar funcionando os links laterais?

Tentei aqui e não funcionou

package.json Outdated Show resolved Hide resolved
@JonasGz
Copy link
Contributor Author

JonasGz commented May 28, 2024

Deveria estar funcionando os links laterais?

Tentei aqui e não funcionou

pra funcionar é só incluir o atributo data-vanilla-route-link = "spa" e informar a rota no href do link
eu n coloquei pq tínhamos acertado que iriamos deixar pra quem for usar o serviço
uma sugestão seria: o cara q criar a página setaria a rota no link ou botao correspondente
ou uma task separada só pra linkar

Copy link
Contributor

@Alecell Alecell left a comment

Choose a reason for hiding this comment

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

Sobre aquilo que falamos sobre o router parameter não é um blocker para sua task! Só precisamos conhecer isso melhor!

É importante vc deixar as rotas como exemplo aqui pra que as pessoas tenham como pegar os exemplos e fazer as rotas com mais falidade!!

Ta muito bom, parabens!

@JonasGz
Copy link
Contributor Author

JonasGz commented May 30, 2024

Sobre aquilo que falamos sobre o router parameter não é um blocker para sua task! Só precisamos conhecer isso melhor!

É importante vc deixar as rotas como exemplo aqui pra que as pessoas tenham como pegar os exemplos e fazer as rotas com mais falidade!!

Ta muito bom, parabens!

blz, vou dar uma estudada nos routes params tbm pra conseguir auxiliar a galera a utilizar.

@Alecell Alecell merged commit 851d256 into devhatt:main May 30, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Router Service
4 participants