avaliabrasil/avalia-brasil

RankingActivity is not Functional

Closed this issue · 7 comments

This is our last documentation on Ranking Activity. Klaus, please check what should be done.

Casos de Teste:

Busca de Locais

  • O usuário altera o texto do edit "local", ex: "por"
  • O app mostra uma lista de locais (ex: "Porto Alegre, RS", "Porto Seguro, BA");
  • O usuário seleciona este local;
  • O edit é completo com o texto sugerido (e a variável que contém o Id do local também é atualizada);

Busca de Categorias

  • O usuário clica no edit das categorias;
  • O app exibe a lista de categorais disponíveis;
  • O usuário clica no edit dos tipos de instituição;
    -- Se a categoria "todas" está sendo exibida, o app exibe todos os tipos de instituição;
    -- Se alguma categoria está selecionada, o app exibe apenas os tipos de instituição vinculados à categoria.

Calculo do Ranking:

  • O usuário acessa a tela de ranking diretamente (pelo menu);
    --- O app define o Local como ESTADO do usuário (ao invés de cidade).
    --- O app seleciona todas as categorias e tipos de instituições;
    --- O app exibe um ranking com as primeiras 50 insituições.
  • O usuário acessa a tela de ranking pela tela da instituição (clicando sobre a posição da instituição em um ranking nacional, regional, estadual ou municipal);
    --- O app define o local para a localização selecionada pelo usuário: (Ex.: "Brasil" ou "Região Sul" ou "Rio Grande do Sul" ou "Novo Hamburgo, RS");

Navegação para outras Telas:
--- O usuário clica em alguma instituição;
---- O app vai para a tela da instituição (assim como na pesquisa de instituições);

Decisões sobre implementação:

Tabela Local de Localizações e Queries: Armazenará Regiões, Estados e Municípios.
Campos:
ID (INT) - ID Local, chave primária;
ID_WEB - ID da Localização na Base Web (utilizado para os fins de atualização, e consulta à API);
DESCRICAO - Nome da Localização (Ex.: "Porto Alegre, RS" - sim, o nome do município tem a sigla do estado, "Rio Grande do Sul", "Sudeste")
TIPO - 4 - Cidade; 3 - Estado; 2 - Região; 1 - País

Carregamento de Localizações: Deve haver uma rotina de carregamento de localizações no primeiro startup do sistema e uma verificação de localizações atualizadas a cada login;

Comunicação com a API:
A consuta do Ranking à api usuará como parâmetros o código da cidade e código do estado.
Dúvida para o Nataniel: Colocar aqui as requisições que o klaus pode fazer e o formato de respota que sairá (ou está saindo).

Some Problems:

  • We should have a "Todos" category and place types.
  • We can use the user's state as a default location.
  • Categories and place types appear duplicated.
  • Ranking should update when the user changes the filters.

Current Problems:

  • Ranking should update when I change the Categories or Place types. It's only getting updated when I change the location;
  • When I select "Saude" category (for example), placeType should be set to "Todos". Also place Type "Todos", should be in the list;
  • PlaceStatistics redirecting to RankingActivity Crashes the app.

Hey @pedroliman , can you post the stacktrace?


                                                                              --------- beginning of crash
10-14 13:42:09.812 3293-3293/org.avaliabrasil.avaliabrasil2 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: org.avaliabrasil.avaliabrasil2, PID: 3293
                                                                              java.lang.RuntimeException: Unable to start activity ComponentInfo{org.avaliabrasil.avaliabrasil2/org.avaliabrasil.avaliabrasil2.avb.activity.RankingActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                  at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                               Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
                                                                                  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
                                                                                  at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
                                                                                  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
                                                                                  at org.avaliabrasil.avaliabrasil2.avb.factory.LocationFactoryImpl.getLocationByType(LocationFactoryImpl.java:33)
                                                                                  at org.avaliabrasil.avaliabrasil2.avb.factory.LocationFactoryImpl.getLocationByType(LocationFactoryImpl.java:23)
                                                                                  at org.avaliabrasil.avaliabrasil2.avb.impl.LocationDAOImpl.findLocationByWebID(LocationDAOImpl.java:105)
                                                                                  at org.avaliabrasil.avaliabrasil2.avb.activity.RankingActivity.getIntentInfo(RankingActivity.java:342)
                                                                                  at org.avaliabrasil.avaliabrasil2.avb.activity.RankingActivity.onCreate(RankingActivity.java:233)
                                                                                  at android.app.Activity.performCreate(Activity.java:6237)
                                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                                  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                  at android.os.Looper.loop(Looper.java:148) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Previously reported issues that aren't working:

  • We should have a "Todos" category and place types: We still don't have a "Todos" Place Type.
  • We can use the user's state as a default location - The current default location is Brazil.

Ranking links and updates are ok!

Pedro, clean and reinstall the app, and todos should appear as options
Imma go check later the default location.

Passing, thumbs up! 👍