Atualizações de dados ao vivo do Angular Grid
O componente Grid é capaz de lidar com milhares de atualizações por segundo, mantendo-se responsivo às interações do usuário.
Angular Exemplo de atualização de dados ao vivo
O exemplo abaixo demonstra o desempenho do Grid quando todos os registros são atualizados várias vezes por segundo. Use os controles da interface do usuário para escolher o número de registros carregados e a frequência das atualizações. Alimente os mesmos dados no gráfico de linhas para experimentar os poderosos recursos de gráficos do Ignite UI for Angular. O Chart
botão mostrará Category Prices per Region
dados para as linhas selecionadas e o botão de Chart
coluna mostrará o mesmo para a linha atual.
Vinculação de dados e atualizações
Um serviço fornece dados ao componente quando a página é carregada e quando o controlador deslizante é usado para buscar um determinado número de registros. Enquanto em um cenário real os dados atualizados seriam consumidos do serviço, aqui os dados são atualizados no código. Isso é feito para manter a demonstração simples e focar em seu objetivo principal - demonstrar o desempenho da grade.
<igx-grid #grid [data]="data"></igx-grid>
public ngOnInit() { this.localService.getData(this.volume); this.volumeSlider.onValueChange.subscribe(x => this.localService.getData(this.volume); this.localService.records.subscribe(x => { this.data = x; }); }
Angular tubulações são usadas internamente para atualizar a visualização em grade. Uma alteração no valor do campo de dados ou uma alteração no objeto de dados/referência de coleta de dados acionará os pipes correspondentes. No entanto, esse não é o caso de colunas, que estão vinculadas a complex data objects
, porque o Angular pipe puro não detectará uma alteração em uma propriedade aninhada. Para resolver a situação, forneça uma nova referência de objeto para o objeto de dados que contém a propriedade. Exemplo:
<igx-grid #grid [data]="data"> <igx-column field="price.usd"></igx-column> </igx-grid>
private updateData(data: IRecord[]) { const newData = [] for (const rowData of data) { rowData.price = { usd: getUSD(), eur: getEUR() }; newData.push({...rowData}); } this.grid.data = newData; }
Modelos
A atualização do modo de exibição funciona da mesma maneira para colunas com um modelo padrão e para colunas com um modelo personalizado. No entanto, é recomendável manter os modelos personalizados relativamente simples. À medida que o número de elementos no modelo aumenta, o impacto negativo no desempenho também aumenta.
Feed de dados em tempo real com Dock Manager e igxGrid Components
O objetivo desta demonstração é mostrar um quadro de tela financeira com fluxo de dados em tempo real usando um back-end de hub do SignalR. Como você pode ver, o componente igxGrid lida com facilidade com as atualizações de alta frequência do servidor. O código para o aplicativo ASP.NET Core usando o SignalR pode ser encontrado neste repositório público do GitHub.
Inicie a conexão do hub
O signal-r.service lida com a conectividade e as atualizações dos parâmetros gerenciáveis expostos frequency, volume e alternância de estado de atualização ao vivo (Start/Stop).
this.hubConnection = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Trace)
.withUrl('https://pt-br.infragistics.com/angular-apis/webapi/streamHub')
.build();
this.hubConnection
.start()
.then(() => {
this.hasRemoteConnection = true;
this.registerSignalEvents();
this.broadcastParams(interval, volume, live, updateAll);
})
.catch(() => {});
Com base na frequência especificada, um total de 30 novas atualizações serão recebidas pelas grades do servidor. Uma classe cellStyle específica é aplicada às três colunas que estão lidando com as alterações (Price, Change e Change in percent).
Frequência de atualização e volume de dados
Usando o painel Ação à esquerda, você pode gerenciar a frequência do feed de dados e o volume dos dados solicitados. Todas as grades usam a mesma fonte de dados. Sinta-se à vontade para usar os outros elementos de ação para interromper o feed de dados, alterar o tema do aplicativo ou adicionar dinamicamente um contêiner DockSlot com um igxGrid.
Usamos o método 'updateparameters' para solicitar um novo conjunto de dados com certa frequência. Esse método faz parte da implementação do hub de fluxo do SignalR.
this.hubConnection.invoke('updateparameters', frequency, volume, live, updateAll) .then(() => console.log('requestLiveData', volume)) .catch(err => { console.error(err); });
Criar dinamicamente componentes DockSlot e Grid
Usando o ComponentFactoryResolver, podemos criar componentes DockSlot e Grid em tempo real.
Componente DockManager
Aproveite o WebComponent do Dock Manager e crie sua própria visualização da Web usando o docket ou os painéis flutuantes. Para adicionar um novo painel flutuante, vá em frente e abra o painel de ação à direita e clique no botão 'Adicionar painel flutuante'. Arraste e solte o novo painel no local desejado.
Referências de API
- Componente IgxGridIgx
- Estilos IgxGridComponent
- IgxColumnComponent
- IgxGridRow
- IgxTreeGridRow
- IgxHierarchicalGridRow
- IgxGridCell
Recursos adicionais
- Virtualização e desempenho
- Paginação
- Filtragem
- Classificação
- Resumos
- Movimentação de Colunas
- Fixação de coluna
- Redimensionamento de colunas
- Escolha