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 Live-data Update Example
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.
Data binding and updates
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.
Live-data feed with Dock Manager and 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.
Start the hub connection
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).
Update frequency and data volume
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);
});
Dynamically create DockSlot and Grid components
Usando o ComponentFactoryResolver, podemos criar componentes DockSlot e Grid em tempo real.
DockManager component
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.
API References
- Componente IgxGridIgx
- Estilos IgxGridComponent
- IgxColumnComponent
- IgxGridRow
- IgxTreeGridRow
- IgxHierarchicalGridRow
- IgxGridCell
Additional Resources
- Virtualização e desempenho
- Paginação
- Filtragem
- Classificação
- Resumos
- Movimentação de Colunas
- Fixação de coluna
- Redimensionamento de colunas
- Escolha