front noosfero angular Page History


Refatoração do front-end Noosfero

Fase 0.1 (Inicial) - Desacoplar front-end do back-end

Objetivo

Remover dependência da estrutura visual com a estrutura funcional. Concretizar uma estrutura de integração mínima entre o noosfero e o angular-theme pronta para um uso mínimo.

Escopo

  • Desenvolver um tema que dê suporte implementação de diretivas de responsividade no futuro
  • Desenvolver o fluxo para usuário não-logado: telas apenas read-only (sem edição de conteúdo/estrutura)
  • Desenvolver o tema com um layout padrão(área central e lateral), sem suporte a customizações, por enquanto

Desenvolvimento

  • Criar uma branch (default-noosfero) a ser atualizada com a master do angular-theme onde os MR dos novos desenvolvimentos devem ser enviados para revisão e incorporação. O responsável pela criação e manutenção da branch é Caio.
  • Alinhar os trabalhos com o SERPRO, a partir do fluxo de trabalho, avaliar quais pontos/atividades de interesses iguais e definir se dever ser paralelizado ou serializado e quem será o responsável pela execução. A responsável pela comunicação entre equipes é Melissa.
  • Milestones entre Lappis e SERPRO serão separadas. As milestones do lappis refletem/espelham as definidas no plano de atividades do Noosfero-Gov.
  • O desenvolvimento das seções de cada área possuem 3 camadas a serem garantidas/desenvolvidas:
    • Backend Noosfero (as funcionalidade/informações desta seção já existe (são suportadas) no backend do Noosfero?)
    • API do Noosfero (a API provê as informações/ações a serem expostas para o usuário?)
    • Componente do Angular (a seção já está estruturada/definida como um componente angular para visualização do usuário?)

Fase 0.1.1

Login e Cadastro/Registro

Garantir/validar:

  • Desenvolvimento de funcionalidades no backend do Noosfero
    • Verificar: login para twitter/facebook/googleplus
  • Desenvolvimento da API para funcionalidades
    • Verificar se existe API para GET/POST de todos os campos
    • API de Task (para Adicionar amigos)

Perfil do usuário

Garantir/validar:

  • Desenvolvimento de funcionalidades no backend do Noosfero
    • Bloco de áreas de interesse: Aparentemente dá pra adaptar o bloco de tags para um Profile, nesse caso as áreas de interesse seriam informadas pelo usuário.
    • Verificar se todos os campos do perfil do usuário estão presentes como campos no Noosfero
    • Todos os campos para a área de descrição do perfil do usuário estão disponíveis via API
  • Desenvolvimento dos componentes Angular
    • Construir bloco de atividades recentes no angular: Bloco de última atualizações + aproveitar a mesma estrutura que existe na seção de timelin

Fase 0.1.2

Comunidades

  • Desenvolver as telas referentes a seções de visualização por usuários não-logados
  • Estrutura de comunidade não possui nenhum relacionamento com estrutura de perfil de usuário (Desmembramento de conceito de Perfil do Noosfero)

Fase 0.2 - Usuário logado

  • Um usuário logado é capaz de editar sua própria página de perfil
    • Tela de edição de informações pessoais, foto e bio (seção de cabeçalho)
    • Tela de edição/criação de seções - redefinir organização dos elementos (?)
  • Em comunidades que o usuário logado possui papel de administrador
    • Tela de edição de informações da comunidade
    • Tela de criação/edição de conteúdos
    • Tela de edição/criação de seções - redefinir organização dos elementos (?)

Fase 0.3 - Interatividade com visitantes

  • Aplicação do guia de estilo aos elementos das telas de Login/Cadastro, Perfil e Comunidades
    • Avaliar mecanismos avançados de estilização: definição de classes, aplicação de padrões com flexibilização de cores e fontes (?)
  • Mecanismos de organização estrutural de destaque e elementos coadjuvantes em telas com objetivos específicos.
    • obs.: Usar padrão do Drupal para comportamentos de bloco por caminho

Fase 0.4 - Responsividade


Preparação para desenvolvimento

  • Node NVM - Node 5.8.0
  • Entender melhor os conceitos: webpack, gulp, npm, typescript, angular (data-binding, services, etc.)

Estrutura

Componentes se localizam no diretório src/app. Cada componente é independente e constituído dos seguintes arquivos:

  • index: é o primeiro arquivo a ser carregado, e responsável por carregar os demais
  • .spec: testes
  • .component: a lógica do componente em si, que envolve basicamente tratar os dados recebidos via API e formatá-los para o HTML (em uma analogia com o MVC, é como se fosse o controller)
  • .html: o HTML em si, código Angular, onde é possível utilizar, além de HTML puro, os componentes Angular, os atributos, data-binding, etc. Em uma analogia com o MVC, aqui é a view. A variável especial "ctrl" te dá acesso ao escopo do controller.
  • .scss: o SASS responsável por estilizar o componente

Os dados devem ser carregados via serviços. Cada serviço deve estar no diretório lib/ng-noosfero-api/http e é responsável por chamar um endpoint da API do Noosfero e retornar os dados que serão tratados pelos componentes.

Uma vez implementado, o componente deve ser declarado no arquivo app/main/main.component.ts.

Caso seja necessário algum componente Angular existente, este deve ser adicionado ao arquivo bower.json e carregado no arquivo src/app/index.ts, que é o primeiro arquivo do tema a ser carregado.

Dica: Para uma compilação mais rápida, edite o arquivo gulp/build.js e desabilite as seguintes tasks: uglify (linha 69), minifyCss (linha 76) e minifyHtml (linha 85). Com isso, a compilação fica até 4x mais rápida


Last edited by Melissa Wen