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

Adiciona página com documentação da API #502

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from

Conversation

berinhard
Copy link
Contributor

Fixes #204

Finalmente parei para implementar a documentação dinâmica da API do Brasil.io. Seguem uns prints de como está a carinha dela agora:

Screenshot from 2020-11-11 16-36-25

Screenshot from 2020-11-11 16-36-36

@turicas
Copy link
Owner

turicas commented Nov 13, 2020

Ainda não revisei tudo, mas gostaria de ter as legendas aprimoradas com relação à documentação em markdown que fiz para o dataset covid19 (o ícone de "busca" funcionou bem no markdown e acho que podemos expandir aqui para ter um resultado mais fácil de entender e bonito). Acho melhor deixar apenas as características "positivas" que o Field tem expressas em ícones e ocultar as que ele não tem, exemplo: se é filtrável, aparece ícone de filtro, mas se não é, não aparece.
Além disso, acho importante termos uma tooltip em cada ícone, explicando o que ele quer dizer (assim não precisamos de uma legenda explícita ocupando espaço na página).

Abaixo listo as características de cada Field e os ícones (usando font-awesome) que cada uma deve ter:

Visibilidade

  • if field.show and field.show_on_frontend: eye solid, legenda: "Esse campo é visível na interface Web, na API e no download completo"
  • if field.show and not field.show_on_frontend: low vision solid, legenda: "Esse campo não é visível na interface Web, apenas na API e no download completo"
  • if not field.show and not field.show_on_frontend: eye-slash solid, legenda: "Esse campo é usado internamente e fica visível apenas no download completo"

Filtragem

  • if field.frontend_filter: filter solid, legenda: "Você pode fazer filtros por esse campo na interface Web e na API"
  • if not field.frontend_filter: sem ícone (não encontrei um "filter-slash" e é melhor economizar, nesse caso)

Buscabilidade

  • if field.searchable: search solid, legenda: "Você pode utilizar a busca de texto completo nesse campo"

Múltipla escolha

  • if field.has_choices: list-ul solid, legenda: "Esse campo possui valores categóricos"

No caso desses campos, acho que devemos também listar quais opções são possíveis para o filtro (talvez possa ficar escondido e aparecer quando a pessoa clicar).

Copy link
Owner

@turicas turicas left a comment

Choose a reason for hiding this comment

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

Muito bom!
Creio que precisamos de algumas alterações, vou listá-las aqui:

  • Mudar URL e texto do link
  • Adicionar tipo de cada Field (Field.TYPE_CHOICES)
  • Mostrar ícones (com tooltip) para todas as características dos Fields
  • Listar field.options quando field.has_choices is True
  • Melhorar página de metadados (descrito abaixo)

Com esse PR estamos contemplando duas coisas distintas: dinâmica do uso da API (HTTP, autenticação, JSON etc.) e documentação dos dados (nomes dos campos, características, descrição etc.). Eu acho legal ter uma página com a documentação toda (juntando as duas coisas), pois facilita buscas e o aprendizado, mas esse é o caso de uso de quem vai usar a API. A pessoa que quiser saber o que significam os campos de cada tabela (porque baixou o dataset completo e vai analisar por conta própria) mas não sabe o que é API provavelmente nunca vai clicar em "documentação da API". Por isso, acho que poderíamos ter uma listagem parecida na aba "metadados" da view dataset-table-detail (podemos usar o mesmo código que a página de documentação da API vai usar e talvez até criar uma URL específica para isso, como /dataset/<dataset_slug>/<tablename>/meta/).

brasilio/urls.py Outdated Show resolved Hide resolved
@@ -32,6 +32,7 @@
<li><a href="{% url 'core:dataset-list' %}">Datasets</a></li>
<li><a href="{% url 'core:specials' %}">Páginas Especiais</a></li>
<li><a href="{% url 'v1:api-root' %}">API</a></li>
<li><a href="{% url 'api_docs' %}">API Docs</a></li>
Copy link
Owner

Choose a reason for hiding this comment

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

O texto pode ser Documentação da API.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Quebra muito o layout colocar esse texto:

Screenshot from 2020-11-27 16-13-20
'

<ul class="table-fields">
{% for field in table.fields %}
{% if field.show %}
<li>{% if field.frontend_filter %}<i title="Pode ser utilizado como filtro via query string" class="fa fa-search"></i> {% endif %}<code>{{ field.name }}</code> ({{ field.title }}){% if field.description %}: {{ field.description }}{% endif %}</li>
Copy link
Owner

Choose a reason for hiding this comment

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

Precisamos colocar também o tipo de cada um.

@berinhard
Copy link
Contributor Author

@turicas meus comentários sobre 2 pontos:

Listar field.options quando field.has_choices is True

Não acho que isso precise estar na documentação da API porque tem campos que tem muitas opções para listar. A informação de que ele é um campo com opções me parece já bastar. Isso, principalmente depois de termos a parte dos metadados na API. Lá sim, na descrição de metadados da tabela, teríamos o campo e todas as opções válidas.

Melhorar página de metadados (descrito abaixo)

Juntei essas duas questẽos na issue #508 acho porque são tarefas que fogem ao escopo da documentação dinâmica da API (que esse PR cobre)

@berinhard
Copy link
Contributor Author

@turicas agora a cara da listagem dos campos ficou assim:

Screenshot from 2020-11-27 16-55-10

Como dá pra ver no código, todos os ícones estão com o title correto

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Gerar documentação da API automaticamente
2 participants