For our product, we use a Square by Square grid, using X-Y-Z coordinates to draw a series of “Locations” that we can interact with. Each “Square” has a lot of custom properties, such as the “Type” of location (i.e. we can store pallets here, or only travel is allowed here, or pallets are inducted into the system here, etc.)
Our largest system currently is 7,800 individual locations, with a variety of purposes for each square. We display where Pallets are stored square by square, and also keep track of the location of our vehicles, square by square.
To do this, we are using Perspective and the View Canvas component. We created a function that grabs all of our data from our “Locations” table, and creates an individual “Instance” for each location square. Each individual instance has a “Pixel” coordinate, so we can effectively draw every square side by side and match our current implementation of the grid in Winforms. See a sample image from Perspective, and also a sample image of our current “Grid” using Winforms.
We find that as we have more and more instances to keep track of everything, the View Canvas becomes extremely inefficient, and we are unable to justifiably use it. For example, for our site in Washington, we have 7,800 “Locations”, and about 1200 “Pallets” stored in the system, and 20 “Vehicles” that move around this square by square setup, picking up and dropping pallets as appropriate.
The View Canvas has been the only way we have been able to successfully draw this Square by Square setup, and make it so we can interact with each individual Object, or “Instance”, where we are able to view the Location “ID”, the location “type”, whether it has a pallet or not, whether a “Vehicle” is in this position, as well as animate the vehicles traveling across the grid.
The view canvas seemed to work well enough for small systems (less than a thousand locations or instances), but for our largest system, it takes 10+ minutes to load every instance into Perspective, assign its pixel coordinates and modify the Background color of each “square” based on the type of location it is. The View Canvas has been nice because it allows us to be able to view all information on hover, on instance click, or at a glance but it’s just to slow. Also, View Canvas then repeats this long load when briefly switching to a different page and coming back, resulting in conversations about keeping the tab open and never closing it. Which is not ideal and very clunky.
We are unsure of what we can possibly use within Perspective to load such a grid efficiently, while still maintaining all information square by square, and make each square “interactable” where we can add or remove pallets to/from each square.
The purpose of our System Grid, is for the end user to be able to view the entire system, level by level, and see where they have pallets stored, what path the Vehicles are taking to reach pallets, and what each type of location is. And also, clearly distinguishing between a “Location” and whether it has a “Pallet”, or a “Vehicle” in said position.
I hope I explained this well enough that our goal is apparent.
Does anyone have any ideas of how we can do this quickly and efficiently?
We built all instances for the View Canvas via our own scripts and on change events.