There’s no way to know when the component is done, because in the strictest sense it’s not Ignition (Perspective) that’s taking the 10-20 seconds. The property assignment is instantaneous, but after the assignment there are several factors which all add to the amount of time:
- The Gateway has to send all of the data to the browser through the websocket. Like a pipe, there’s only so much data which can be sent at one time - the data sort of backs up and comes through in chunks. The browser receives the notification of a data changes first and so removes the existing data, but can’t display anything until it receives all of the data it needs.
- The browser then needs to figure out how much of the data to display and how to display it. Is there a limit on how many rows to display? Are there filters applied? How wide should the rows be, and what about the columns? Now let’s apply styling… There are lots of calculations being done before the content is drawn.
Turning off virtualization would speed up your “load” time. Removing unnecessary styling would improve the time to “render”. In general, I advise against writing to component props, and instead binding them - using other components (or a component’s own filtering mechanisms) to manipulate the data in use; this should eliminate the “blank” period as the component isn’t getting an entirely new value.
If you’re on version 8.1.15 or newer, there is also a websocket property modification available which allows for sending larger chunks at one time. This could assist in reducing the “load” time because it makes your pipe bigger, allowing for more data through at one time.