Repository navigation
5.7.0
·
1 commit
to master
since this release
Included commits: 5.6.0...5.7.0
Improvements
- Introduced
GuiConfig::isSimplePaginationEnabledByDefault(),GuiConfig::isCaseSensitiveSearchEnabledByDefault(), andGuiConfig::isSortingEnabledByDefault()to allow project-wide control over Zed table pagination, search, and sorting performance defaults. Each returnsnullby default, meaning the behavior is resolved adaptively per request. - Introduced
GuiConfig::getLargeTableRowCountThreshold()— the approximate row count above whichAbstractTabletreats a table as large and enables the performance optimizations automatically. Returnsnullby default, which keeps the adaptive check disabled entirely and leaves all existing tables unchanged. - Introduced
TableConfiguration::setUseSimplePagination()andTableConfiguration::isSimplePaginationEnabled()to skip both therecordsTotalandrecordsFilteredCOUNT(*)queries on large Zed tables, replacing them with a single extra fetched row and switching the UI to Previous/Next-only pagination. - Introduced
TableConfiguration::setUseCaseSensitiveSearch()andTableConfiguration::isCaseSensitiveSearchEnabled()to match the global search box with an exact, case-sensitive comparison that can use existing indexes, instead of aLOWER(column) LIKE '%term%'pattern that forces a full table scan. - Introduced
TableConfiguration::setUseSorting()andTableConfiguration::isSortingEnabled()to skipORDER BYon the underlying query, avoiding a full sort of the joined result set on very large tables. A genuine column click from the client still applies. - Introduced
TableConfiguration::isColumnSearchEnabled()and extendedTableConfiguration::getSearchableColumns()to support per-column search inputs alongside the global search box.setSearchable()now also accepts an associative[headerKey => sqlExpression]array, which doubles as the per-column search map, andsetSearchableColumns()remains available for configuring per-column search independently. - Introduced
AbstractTable::resolveAdaptiveTableConfiguration()andAbstractTable::getGuiConfig(), which resolve the still-unset performance flags for a single request based on the estimated row count of the query's main table. An explicit value fromconfigure()or fromGuiConfigalways wins and skips the row-count check. - Introduced a translated hint shown on tables running in large-table mode, explaining why pagination, search, and sorting behave differently (
en_US/de_DEtranslations added). - Introduced a centralized Zed table library under
assets/Zed/js/modules/libs/table/:table.jsorchestrates creation and configuration of every Back Office table, andtable-access.js,table-handle.js,assignable-table.js,master-detail-table.js,performance-table.js, andsearchable-table.jsprovide the feature set modules previously implemented themselves. Documented inlibs/table/README.md. - Introduced deferred table initialization: tables in hidden containers (closed tabs, dialogs) are held back by an
IntersectionObserverand created when they become visible, so they no longer size their columns against a zero-width container or fetch rows the user may never see. - Introduced pagination boundary handling in
performance-table.js, so a persisted page offset beyond the available records resets to the first page instead of rendering an empty table. - Adjusted
Presentation/Table/table.twigto render thegui-table-dataclass by default (overridable via theclassvariable), so everyAbstractTable-based grid is discovered by the centralized table library. - Adjusted
TableConfiguration::getSearchable()to always return a list, so an associative searchable configuration does not leak its keys into the global search configuration.
Removals
- Removed the per-module DataTables initialization path from
assets/Zed/js/modules/init.jsandassets/Inspinia2/js/app.js; tables are now created exclusively by the centralized table library. - Removed the unused Bootstrap 3 DataTables packages (
datatables.net-bs,datatables.net-buttons-bs,datatables.net-responsive-bs,datatables.net-select-bs) from the Zed asset dependencies; only the Bootstrap 5 variants remain in use.