O projeto foi gerado na versão 17.0.5 do Angular Framework.
Antes de rodar o servidor de desenvolvimento, baixar as dependencias do projeto.
Certifique-se de estar usando a versão 18.18.0 do Nodejs.
Rode o seguinte comando para garantir a equivalência do lock json file ao baixar as libs: npm ci
Ponto de Atenção!
PS: Foi necessário utilizar um endpoint diferente do passado no exame, pois foi verificado que a url passada:
https://query2.finance.yahoo.com/v8/finance/chart/PETR4.SA
somente traz os timestamps do dia corrente, e não nos últimos 30 dias.
Logo, foi utilizada a a seguinte url:https://query1.finance.yahoo.com/v7/finance/chart/
com os parâmetros do ativo selecionado, no período de 30 dias
- Para subir o servidor de desenvolvimento rode o seguinte comando
npm run start
e navegue
parahttp://localhost:4200/
na url do seu browser. - Você irá se deparar inicialmente com um gráfico com dados mockados, e com 5 ativos para consulta.
- Para interação com o gráfico, selecione algum ativo ao clicar no botão referente ao mesmo e o
gráfico será recalculado com os novos valores. - Em cada ponto do gráfico é exibido o dia, os preços juntamente com o cálculo das variações de preço.
- Foi criado um server proxy intermediário para realizar as requisições para a api de finanças do yahoo, para sanar problemas como origem
bloqueada de domínio (CORS), entre outros.
- Foi implementado o arquivo server.js contendo o código necessário para realizar a requisição ao Yahoo server, serializando o objeto de retorno
para o frontend.
- Foi utilizado o Material pela facilidade em components lib.
- O Service simula um "singleton", sem muita separação de camadas por se tratar de algo simples.
- Para uma demonstração mockada visite aqui o: GH-Pages!
- A implementação da Demo mockada se encontra na branch: feature/gh-pages-live
Para rodar o build execute o seguinte comando npm run build
e depois navegue para dentro da pasta
dist/asset-variation-exam
para checar os artefatos gerados.
Para rodar os teste unitários execute o seguinte comando no terminal npm run test
, apesar de não ter implementado nenhum teste específico.