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

Progresso de upload - R$ 60,00 #34

Closed
alexanmtz opened this Issue Oct 28, 2017 · 10 comments

Comments

2 participants
@alexanmtz
Collaborator

alexanmtz commented Oct 28, 2017

Para todos os casos que temos para envio de imagens, o tempo de resposta é muito grande. Uma barra do browser existe o progresso do upload, mas nem sempre é claro para o usuário. Certificar-se que os botões de ação são desabilitados para o usuário não tentar submeter os dados mais de uma vez.

Encontrar uma maneira de dar um feedback para o usuário quando um upload de imagem está sendo feito. Pode ser opções como overlay com um loading que seja compatível com o estilo da plataforma.

Como chegar no cenário descrito

  • Envio de imagens na criação do perfil do guia (http://guia.truppie.com)
  • Envio de imagem na criação de uma atividade (quando um perfil de guia é criado, é possível criar um passeio e uma imagem pode ser escolhida)
  • Quando uma atividade é criada sem imagem, tem a possibilidade de envio no modo visualização (ver a issue #27 )

Critério de aceitação:

  • O usuário é impedido de realizar alguma ação quando uma imagem é enviada nos casos descritos

Requisitos para rodar a plataforma

  • Ruby
  • Postgres
  • Se tornar administrador no sistema
    (para isto, basta criar um arquivo .env com os campos:
 ADMIN_EMAIL=seuemail 
 ADMIN_EMAIL_ALT=outroemail

Como realizar esta tarefa

  1. Comente aqui manifestando o interesse em realizar esta tarefa, que entrarei em contato para obter os detalhes para realizar o pagamento
  2. Faça um fork do projeto
  3. Faça um clone do projeto para o seu ambiente local

rake test (rodar os testes automatizados)

rails db:migrate (Rodar as migrations para o banco de dados)

rails s (Rodar o projeto)

  1. Realize as modificações como descrito nesta Issue
  2. Enviar um Pull Request
  3. Certificar-se de que as modificações passaram nos testes automatizados
  4. Um novo ambiente para testes será criado para validação das modificações com a nossa equipe
  5. Receber os comentários e feedbacks sobre modificações
  6. Enviar quaisquer modificações necessárias até ser aprovado
  7. Você ganha então um 👍
  8. Quando o Pull Request for finalizado, o pagamento é enviado

Se precisar de qualquer ajuda ou tiver qualquer dúvida basta comentar aqui que as dúvidas poderão ser respondidas por qualquer pessoa da comunidade ou quem contribui com o projeto e principalmente eu 👍

Se quiser se familiarizar com o funcionamento de projetos de software livre, tem este excelente guia do Tableless

Como ter um pull request aceito e integrado da forma correta no projeto

Para que seu Pull Request seja aceito sem maiores problemas e integrado diretamente para que possa ir para produção você deve sempre estar integrado com o master do projeto, sempre usando rebase como padrão.

Se tiver dúvidas como fazer isto dá uma olhada aqui neste post

Se precisar de qualquer ajuda ou tiver qualquer dúvida basta comentar aqui que as dúvidas poderão ser respondidas por qualquer pessoa da comunidade ou quem contribui com o projeto e principalmente eu 👍 o

@alexanmtz alexanmtz added this to the 3.0 milestone Oct 28, 2017

@hugohernani

This comment has been minimized.

Contributor

hugohernani commented Oct 28, 2017

Tenho interesse nessa issue ou em #33
@alexanmtz

@alexanmtz

This comment has been minimized.

Collaborator

alexanmtz commented Oct 28, 2017

@alexanmtz alexanmtz added this to Backlog in truppie Oct 28, 2017

@alexanmtz

This comment has been minimized.

Collaborator

alexanmtz commented Oct 28, 2017

Pode ficar com essa @hugohernani

@alexanmtz alexanmtz moved this from Backlog to In Progress in truppie Oct 28, 2017

@hugohernani

This comment has been minimized.

Contributor

hugohernani commented Oct 28, 2017

Blz, @alexanmtz . Vlw! Mãos a obra!
Eu tenho algumas dúvidas/sugestões quanto a esse ticket.

Pelo que vi, em todos os casos de criação a imagem é enviada junto com os outros dados do formulário através de uma requisição post normal. Devido a isso adicionar algum loading é mais complicado....
Penso que talvez seja melhor separar o upload da imagem do upload dos outros dados da seguinte forma:
1º. requisição ajax para upload da imagem que retorna algum id que posteriormente poderá ser usado para anexar a imagem ao model. Nesse caso, o loading/feedback seria adicionado;
2º. Requisição com os outros dados da model + o id do arquivo gerado na requisição anterior.

Mesmo com duas requisições o usuário continuaria achando que apenas uma requisição está sendo feita...

O que acha disso? Foi o que você pensou na criação dessa task?
@alexanmtz

@alexanmtz

This comment has been minimized.

Collaborator

alexanmtz commented Oct 29, 2017

@hugohernani este é um approach muito bom! Já vi esta forma ser bastante usada em ferramentas que contém upload de imagem e divide em passos. O próprio Instagram faz isto de ir enviando a imagem enquanto estamos colocando a descrição.

O preview da imagem já é adicionado via javascript. O problema é que na criação de um evento, por exemplo, o evento ainda não foi criado e não é possível criar um simplesmente porque ele escolheu uma imagem. O mesmo acontece para criação da conta do guia.

Se também carregarmos a imagem no momento que ele adiciona dependendo do tamanho irá onerar o carregamento ali mesmo, mas podemos fazer no segundo plano, isto resolveria o problema. Neste momento poderíamos colocar um feedback, mas ele poderia cancelar o envio e de alguma forma a gente abortasse o upload no servidor.

Também tem o caso dele submeter o formulário antes da imagem completar, como faríamos neste caso?

É uma solução muito boa e plausível para este caso, mas tem estes cenários que temos que pensar que pode torná-la muito complexa. Você acha que é tranquilo de cobrir estes casos sem alterar muito a complexidade da tarefa?

@hugohernani

This comment has been minimized.

Contributor

hugohernani commented Oct 30, 2017

Entendi, @alexanmtz. De qualquer forma eu acredito que a complexidade dessa task talvez seja um pouco maior do que você planejou no começo. 😃 . Mas não se preocupe: eu irei fazê-la. É uma task que requer prioridade, porque acredito que só poderei fazê-la na quinta-feira.

Sobre as opções... em resumo, reanalisando, agora acredito que o ideal é processar tanto a requisição dos dados em geral do formulário quanto o upload da imagem em processos via javascript: primeiro a requisição geral no momento em que o usuário clica no botão submit e em background (mas apenas também após o primeiro evento ter sido iniciado) o upload da imagem que após terminada (se terminada com sucesso) será associada ao objeto.

Em todo esse processo eu poderia ver soluções que permitissem um feedback de sucesso, falha ao usuário.

@alexanmtz

This comment has been minimized.

Collaborator

alexanmtz commented Oct 30, 2017

Isto talvez seria parte de uma mudança maior que é o processamento dos requests dos formulários serem feitos via Ajax, o que eu não fiz inicialmente pra fazer em camadas.

Então, realmente poderia aumentar bastante a complexidade e imprevistos.

Mas para esta tarefa melhor a gente focar na imagem, e dando certo a gente cria outra issue específica para isto, pois acho que já tem pano pra manga só falando de imagem.

Eu achei isto aqui, mas vi que tem muitos poréns: https://github.com/jrgifford/delayed_paperclip/

@alexanmtz

This comment has been minimized.

Collaborator

alexanmtz commented Nov 12, 2017

@hugohernani você ainda está com esta tarefa?

@hugohernani

This comment has been minimized.

Contributor

hugohernani commented Nov 14, 2017

Olá, @alexanmtz. Estou sim. Daqui para amanhã mando uma PR

@alexanmtz

This comment has been minimized.

Collaborator

alexanmtz commented Nov 19, 2017

Código integrado, transferência realizada e comprovante enviado para o seu e-mail @hugohernani .

Muito obrigado mais uma vez pela contribuição 🥇

@alexanmtz alexanmtz closed this Nov 19, 2017

@alexanmtz alexanmtz moved this from In Progress to Done in truppie Nov 20, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment