Appearance
"My grid shows 0 rows"
A core.grid renders empty and there is no error message. Work through this in order.
1. Is metadata.dataSource set, and on the page?
Open the page file. The top level (sibling of definition, not inside it, not on any block) must have:
json
"metadata": { "dataSource": "oeq-equipment-provider" }core.grid has no data property. If dataSource is missing, on the grid block, or inside definition, the grid gets nothing.
2. Does the string match a provider name exactly?
There must be a file spk-assembly/metadata/provider/*.json whose name field is character-for-character equal to the dataSource string. Check for a typo, a plural, a stray dash.
bash
erp plugin test spk-assemblycatches this as PAGE-DS-001 and prints the mismatched name.
3. Does the provider's basePath actually return rows?
For an entity you own it should be /api/v1/entities/<entityName>/records. Test it directly:
bash
erp api get "/api/v1/entities/oeq_equipment/records/query?size=5"- Rows come back → the provider path is fine; the problem is wiring (steps 1–2) or filtering (step 4).
{ "rows": [], "total": 0 }→ the table genuinely has no rows. Create one and retry.- 404 → wrong
basePath.
4. Is an externalFilter hiding everything?
If the grid binds externalFilter to a page object, check what's in that object on mount. A stale status: "" or an un-cleared search string can filter out every row. In the mount loader, initialise the filter object to {} or omit problematic keys.
5. Is refreshTrigger stuck?
If the grid only ever loads with the filter/refresh value it had at mount, make sure refreshTrigger binds a page value that actually changes (you toggle page.gridRefreshTick after writes), and that the mount loader sets it to a defined initial value (0).
6. Row-level permissions
If the grid is empty only for some users, that's row-level security doing its job. Check the user's role and the entity's permission keys.
The fast check
bash
# does the raw endpoint the provider points at return data?
erp api get "/api/v1/entities/<entity>/records/query?size=5"Whatever that returns is what a correctly-wired grid shows. If it has rows and the grid doesn't, the bug is in steps 1–5.