Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 2.2.0

### Feature: KyteTable column projection (KYTE-#190)

`KyteTable` now sends an `x-kyte-fields` header listing the columns it displays, so a list read returns only those columns instead of every column (large `TEXT`/`BLOB` columns stay out of list payloads). The value is the same field list the table already builds from its `columnDefs` (dotted FK paths like `client.name` included) — a distinct header from `x-kyte-page-search-fields` because search ("which columns to match") and projection ("which columns to return") are different concerns. Requires kyte-php ≥ 4.16 (the server maps dotted FK paths to their base column and always adds `id` + FK ids back, so row actions and FK labels keep working). Fully backward compatible: an older server ignores the header.

## 2.1.0

### Feature: anonymous fall-through for JWT-mode public access (KYTE-#229)
Expand Down
7 changes: 7 additions & 0 deletions kyte-source.js
Original file line number Diff line number Diff line change
Expand Up @@ -1501,6 +1501,13 @@ class KyteTable {
headers.push({'name':'x-kyte-page-idx','value': this.currentPage});
headers.push({'name':'x-kyte-page-search-value','value': this.searchValue ? btoa(encodeURIComponent(this.searchValue)) : ""});
headers.push({'name':'x-kyte-page-search-fields','value': fields.join(',')});
// Column projection (KYTE-#190): tell the server to return only the
// fields this table actually displays (dotted FK paths like
// `client.name` included — the server maps them to their base column).
// Same value as search-fields but a distinct header: search = which
// columns to match; projection = which columns to return. The server
// always adds id + FK ids back, so row actions and FK labels still work.
headers.push({'name':'x-kyte-fields','value': fields.join(',')});

if (this.sortColumn) {
headers.push({'name':'x-kyte-page-order-col','value': this.sortColumn});
Expand Down
Loading