| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import * as DataGrid from '../../data_grid/data_grid.js'; |
| import * as ComponentHelpers from '../../helpers/helpers.js'; |
| |
| await ComponentHelpers.ComponentServerSetup.setup(); |
| |
| const component = new DataGrid.DataGrid.DataGrid(); |
| |
| component.data = { |
| columns: [ |
| {id: 'key', title: 'Key', widthWeighting: 1, visible: true, hideable: false}, |
| {id: 'value', title: 'Value', widthWeighting: 1, visible: true, hideable: false}, |
| ], |
| rows: Array.from( |
| {length: 10}, |
| () => { |
| return getRandomRow(); |
| }), |
| activeSort: null, |
| }; |
| |
| document.getElementById('container')?.appendChild(component); |
| |
| function getRandomRow() { |
| const key = Math.floor(Math.random() * 10); |
| const value = Math.floor(Math.random() * 10); |
| const randomDataRow = { |
| cells: [ |
| {columnId: 'key', value: `Key: ${key}`, title: `Key: ${key}`}, |
| {columnId: 'value', value: `Value: ${value}`, title: `Value: ${value}`}, |
| ], |
| }; |
| return randomDataRow; |
| } |
| |
| /** |
| * Set so we can call this from an interaction test to emulate the user |
| * interacting with the data grid whilst something is populating the grid with |
| * new data - e.g. like the protocol monitor. |
| */ |
| // @ts-expect-error |
| window.addNewRow = function() { |
| addNewRow(); |
| }; |
| |
| function addNewRow() { |
| const newRow = getRandomRow(); |
| |
| component.data = { |
| ...component.data, |
| rows: [...component.data.rows, newRow], |
| }; |
| } |
| |
| document.querySelector('#add')?.addEventListener('click', (event: Event) => { |
| event.preventDefault(); |
| addNewRow(); |
| }); |