When it draws nothing
A blank column has one cause and the table has already named it. Where it says so.
Nearly every way to wire a table wrong ends up looking the same. A column draws nothing, and there is no other sign of it. The table does not guess and it does not fail quietly. It says what is wrong and what to change, in one of three places.
The compile stops you first
Three of the mistakes never reach a running game at all. They stop the Widget Blueprint compiling, and the error names the column.
- Two columns, one id
- Every lookup takes the first, so the later one never draws, sorts or hides. Give it its own Column Id, or delete it.
- A binding that matches nothing
- The error lists what the class does offer, so the fix is on screen next to the mistake.
- A source that can't be read
- An Expected Item Class or Source Table that no longer resolves. A missing Source File isn't checked at compile: Copy Columns From Source warns in the log when you press it.
You find these out on compile, not from a blank column at runtime.
Warnings, and what they promise
Everything else turns up as a warning in the output log. Each one says what is wrong and what to change:
Column 'Shield' draws nothing: it binds 'Shielding',
which is no property and no pure function on BP_Ship_C
that takes no parameters. Set the BindingName of the
column to one of these, or set the ExpectedItemClass of
the table to get a dropdown of them.
Available: Callsign, Shield, Mass, Speed
A warning here means a real mistake in the setup, and you will not see many. Nothing warns about a setup that is supported, however odd it looks. So a warning you do see is one worth reading.
That is the whole deal. A table that stays quiet while it works is the only kind you can trust to speak up when it stops.
Warnings you are most likely to meet:
- A null in the array
- Set Items says how many it dropped and of how many. A failed cast is the usual cause.
- A DataTable with no row struct
- Every column over it draws blank. Pick the Row Structure on the asset.
- A cell class that won't build
- Abstract, or not a Smart Table Cell.
- A store with no id
- Layout Store set and Table Id empty, so no layout is ever written.
- A row menu with nothing in it
- Turned on, and no entries to show.
- Fit Rows with no ceiling
- It asked for the height of every row it holds. Set Max Visible Rows.
5 log categories
Turn one on in the console and it brings nothing else with it. They are split up by the question you are asking, never by file:
Log LogSmartTables Verbose the widget itself
Log LogSmartTablesData Verbose where the values come from
Log LogSmartTablesLayout Verbose where the columns are
Log LogSmartTablesSort Verbose what order the rows are in
Log LogSmartTablesInput Verbose how the table was reached
Turn them on one at a time. Nearly every line is Verbose, so all five at once fills the log with four answers you never asked for. The console takes one name per command anyway.
- Drawing the wrong thing, or nothing
- Data. Bindings, models, schemas, filters.
- Columns the wrong width, or missing
- Layout. Widths, resizes, show and hide, reorder, the stored layout.
- Rows in the wrong order
- Sort. The spec, a dispatch and its result, a refused second level.
- A gesture that did nothing
- Input. Selection, focus, scrolling, drags. It carries the function and the gesture alike, so a pad logs what a mouse logs.
- Anything else
- LogSmartTables. Style assets and the palette, the row wrapper class, the busy state. Building the widget and swapping the model log under Data, and menus under Input.
Use VeryVerbose instead for anything that runs per row or per cell. At a million rows
that is a huge number of lines, which is why it sits in a tier of its own.
Seeing it instead
Three of them draw the answer on screen instead of logging it.
- Where the keyboard is
- Show Focus Border, on by default. Focus moves for reasons nothing else shows, such as a menu closing or a click taken by the widget above the table.
- Which column the keys aim at
- Show Column Caret. Turn on Column Caret Needs Focus and it hides while the keyboard is elsewhere.
- Rows before you have data
- Preview Row Count draws that many in the designer. Zero previews the empty state, which is the only way to see it without running the game.
If a sort looks like it is hanging, Busy Overlay Delay Seconds is how long work runs before the overlay turns up. Shorten it to catch work that was finishing too quickly to show one.
Next: A model in Blueprint