Zuar Portal v1.18.0

Notes

SQL Queries in Code Editor

  • Write complex native SQL statements directly in the Code Editor for full control over query execution.
  • SQL queries support parameterized inputs and work across all supported database engines.

Block-Level Filter Settings

  • Configure filter behavior per block, giving finer control over how filters apply across a page.

Multiple Queries Per Block

  • Blocks can now be configured with multiple queries, with support restricted to applicable block types.

Parameter Control Enhancements

  • New explicit Data Type dropdown on Parameter Control blocks for clearer type configuration.
  • Array parameter types now support subtypes (e.g., Array, Array) to avoid manual SQL casting.

Tag Manager Admin UI

  • New admin interface for managing tags across the Portal.

Credentials Manager Admin UI

  • New admin interface for viewing and managing stored credentials.

Admin Configurable Date Filter Ranges

  • Administrators can now define custom date range presets for date filter blocks.

zPortal JavaScript API

  • New getter methods: getFilters(), getFilter(column), getRangeFilters(), getRangeFilter(column), getParameters(), getParameter(name) for reading applied filter and parameter state.

Filter Improvements

  • Control the sort order of values displayed in filter dropdowns.
  • Unified Azure AD credentials modal for SharePoint and Power BI configurations.
  • Trim spaces from usernames and passwords to prevent authentication issues.

Breaking Changes

Deprecated: zPortal.dataSource methods

  • All methods under zPortal.dataSource are deprecated. Use the new zPortal.query namespace instead.
  • zPortal.dataSource.get()zPortal.query.getQuery()
  • zPortal.dataSource.setFilter()zPortal.query.setFilter()
  • zPortal.dataSource.setRangeFilter()zPortal.query.setRangeFilter()
  • zPortal.dataSource.clearFilters()zPortal.query.clearFilters()
  • zPortal.dataSource.onLoad() / zPortal.dataSource.onceLoaded()zPortal.query.getQuery() with onLoad()

Deprecated: currentBlock.data and currentBlock.columns

  • In HTML and AmChart blocks, currentBlock.data and currentBlock.columns are deprecated. Use currentBlock.queries[index].data and currentBlock.queries[index].columns instead.

Deprecated: currentBlock.siteConfig

  • Use currentBlock.config instead.

Issues Resolved in this Release

New Features

Issue Summary Resolution
POR-2321 FE// Add Methods to get list of applied filters and parameters in zPortal API Done
POR-2163 Multiple query per block > Restrict feature by block type Done
POR-2162 Parameter control block > Add explicit Data type dropdown Done
POR-2140 Block level filter settings Done
POR-2123 Updates to chatbot POC for debugging / testing Done
POR-2086 Tag Manager Admin UI Done
POR-2083 Credentials Manager Admin UI Done
POR-2060 Add robots.txt to deter portals indexing in search engines Done
POR-2005 All SQL statement string for queries Done
POR-2002 SQL queries in Code Editor Done

Improvements

Issue Summary Resolution
POR-2305 BE// Invalidate query metadata cache when datasource is updated Done
POR-2270 Stop upgrade if specified version doesn't exist Done
POR-2266 FE// Unify Azure AD credentials modal for SharePoint and Power BI Done
POR-2238 FE// Clarify conflicting "Enable Filtering" and "Disable Filtering" labels in AmChart blocks Done
POR-2229 FE// Parameter Control Array type needs subtype support (Array<int>, Array<text>) to avoid manual SQL casting Done
POR-2208 zPortal API improvements Done
POR-2200 FE// Align "Test" button in Add Query modal with sidebar behavior Done
POR-2188 FE// Auto-expand newly created query after clicking "+" button Done
POR-2149 FE// Restrict multiple queries for blocks that support only a single query (e.g. ParameterControl) Done
POR-2143 Migrate to `uv` and `ruff` Done
POR-2135 Use multi-stage Docker images in Portal for local development Done
POR-2129 FE// SQL Query – Add help text for datasource usage and set default query Done
POR-2117 Improve Portal Filters to allow control of value sort order Done
POR-2115 Zuar Portal - Improve logging by adding Salesforce Account ID Done
POR-2103 Trim spaces from usernames and passwords Done
POR-2067 Investigate current SQL queries and the possibility of creating flexible filter API for all cases Done
POR-2045 Datasource request made on block details page Done
POR-2044 Link block title click to details view Done
POR-2013 Add help text to filter persistency settings Done
POR-2155 Admin configurable date filter ranges Done

Bug Fixes

Issue Summary Resolution
POR-2320 FE// Data Table crashes on datasources with null json_data — "Cannot read properties of undefined (reading '__index__')" Done
POR-2319 Migrate queries: enabled by default when `enabled` field is missing in `block.data` Done
POR-2315 FE// Data Source Test button throws "Cannot read properties of undefined (reading 'columns')" — loader hangs indefinitely Done
POR-2314 FE// Input filter import issue Done
POR-2313 SQL error during migrations after upgrade to 1.18.0.rc2 Done
POR-2312 FE// Error deleting datasoruce from sidebar Done
POR-2311 FE// MultiSelectFilter — ngRepeat:dupes error when Auto-Selected Value matches existing option from datasource Done
POR-2310 FE// MultiSelectFilter crashes on empty datasource — "Cannot read properties of undefined (reading 'isFirstPage')" Done
POR-2309 FE// Frontend sends offset: 0 without limit in DSL — Snowflake generates LIMIT -1 and crashes Done
POR-2308 BE// Add datasource-level filtering in query execution for backward compatibility Done
POR-2306 FE// Cascading Filter Group throws "Cannot destructure property 'value' of 'e' as it is undefined" when adding filter with Auto-select enabled Done
POR-2302 FE// Cascading Filter Group — "Auto select first value" selects null even when "Allow NULL" is disabled Done
POR-2301 FE// Edit Page → JAVASCRIPT tab — "Add Snippet" dropdown does not open on click Done
POR-2300 FE// Data Table shows "1 - NaN of NaN" pagination when page_size is empty (All Records) and include_count is false Done
POR-2303 Apply button on filters not working in 1.18 latest stevez Done
POR-2299 BE// MSSQL sql_form queries broken in 1.18 — ORDER BY lost, limit type wrong, behavior changed from 1.17 Done
POR-2298 FE// Opening query accordion triggers duplicate /api/datasources request per each query Done
POR-2297 FE// Duplicated page has two issues — sidebar renders on left side, block queries are empty until page reload Done
POR-2296 Queries changing ORDER when duplicating a Block with Multiple Queries Done
POR-2295 FE// Cancel "Edit mode" does not reset state of Queries Done
POR-2293 FE// Settings page shows "unsaved changes" dialog without any changes made Done
POR-2292 FE// {{data}} interpolation in HTML block freezes browser in edit mode — all requests stuck in pending Done
POR-2291 FE// Frontend sends limit: null in DSL when page_size is empty — should omit limit entirely Done
POR-2290 FE// HTML block data.ColumnName interpolation broken Done
POR-2289 BE// Fix unlimited page size (no pagination) in DB migration Done
POR-2288 FE// Cannot set unlimited page size (no pagination) for query — regression from 1.17 Done
POR-2287 FE// "waitForBlocksLoadListenerDestroyer is not a function" on pages with no visible blocks — page stuck on loader Done
POR-2286 FE// HTML block data[0][0] numeric index access broken after 1.18 upgrade — returns undefined Done
POR-2284 FE// Page performs double reload after saving changes when date-time filter block is present Done
POR-2281 FE// p-select dropdown — arrow keys are inverted (Down moves up, Up moves down) Done
POR-2280 FE// Cascading Filter Group search throws "searchPrompt is not defined" — wrong variable references Done
POR-2278 Fix chatbot path Done
POR-2276 FE// clear-filters-button block does not clear date-time filters in Cascading Filter Group Done
POR-2275 FE// Custom date-time presets display raw date range instead of preset name in filter label Done
POR-2274 FE// Duplicate custom date range presets cause ngRepeat:dupes error and break date filter block Done
POR-2273 FE// Custom Date Range with amount=0 saves successfully on FE but returns 400 from backend Done
POR-2272 FE// Default Date Time value is not applied on standalone Date Time Filter block/Cascading Filter Group>Date Range filter Done
POR-2271 FE// UTC filter mode shifts time-based presets by user's timezone offset Done
POR-2269 FE// Translation Picker crashes when pressing Enter in search — p-select passes raw string instead of option object Done
POR-2268 FE// Tableau Buttons block crashes on page load when target block does not exist on the page Done
POR-2267 FE// "Cannot read properties of undefined (reading 'features')" error on every page reload across portal Done
POR-2265 BE// DELETE /api/datasources/{id} returns 500 when datasource has linked queries Done
POR-2264 FE// Navigation block search — clearing search throws "h.searchChanged is not a function" Done
POR-2263 FE// Navigation block — switching Item Type back to "Manually selected page" throws "Cannot read properties of undefined (reading 'label')" Done
POR-2262 FE// Translation Picker block throws "Cannot read properties of null (reading 'code')" in editor Done
POR-2261 FE// "Credentials id in the path should be similar to the body" error when saving Tableau Connected App credentials Done
POR-2260 FE// Credentials admin — sorting while data is loading throws "Cannot read properties of undefined (reading 'sort')" Done
POR-2259 FE// Edit Credentials modal shows only "ROOT" field — does not render fields from credential type schema Done
POR-2258 BE// Credentials type "openidc" returns empty schema — DictModel with no properties Done
POR-2257 FE// Input Filter Default Value applied to UI but filter parameters removed from URL on page load Done
POR-2256 FE// Sidebar query editor throws errors when Data Source is not yet selected Done
POR-2255 FE// "pQueryService is not defined" error when opening Add Datasource modal in admin panel Done
POR-2253 Remove Tableau parameters from the login form Done
POR-2252 BE// Portal not logging out as expected for SAML users Done
POR-2251 FE// Cascading Filter Group sends duplicate column when two filters use the same column Done
POR-2250 FE// Cascading Filter Group — "Auto-select first value" does not trigger on page load Done
POR-2249 FE// Date Picker "Clear" button does not remove date parameter from URL Done
POR-2248 FE// Date Picker ParameterControl adds type=undefined to URL when Timezone is UTC Done
POR-2246 FE// ParameterControl with Control Type "Input" throws "Cannot read properties of undefined (reading 'length')" in editor Done
POR-2245 FE// Default Parameters — Data Type resets to empty after saving and reopening query editor Done
POR-2244 FE// Parameter Control multiselect — pagination stops loading when scrolling quickly to bottom Done
POR-2243 FE// Select Filter — Default Value overrides URL filter value on page load Done
POR-2241 FE// inputFilter Default Value applies only partial value (e.g. "A" instead of "AZ") Done
POR-2240 FE// inputFilter does not apply Default Value after clearing and reloading page Done
POR-2239 FE// AmChart xy-chart and time-series-chart throw "loadColumns is not a function" in editor Done
POR-2233 FE// Monaco editor cursor jumps to first line when typing fast in Add Query / Add Datasource modal Done
POR-2230 FE// Parameter Control — parameter values remain in URL after clearing selection Done
POR-2227 FE// Embed mode (Ctrl+M) does not persist after page reload Done
POR-2226 FE// Adding a query to a block via "+" button throws "Cannot set properties of undefined" Done
POR-2224 FE// Data Table column formatting not applied — column_types missing from query execute response Done
POR-2223 FE// Data Table — clicking column header to sort throws "Cannot read properties of undefined (reading 'order_by')" Done
POR-2221 FE// Multiselect block search sends ILIKE filter outside where array — search does not filter options Done
POR-2220 FE// HTML block scope changed — datasources removed from currentBlock, new unexpected properties added Done
POR-2219 FE// Blocks admin sort dropdown — "Date Created ASC" option displays as "Date Created Name ASC" Done
POR-2217 FE// Query editor throws continuous "Cannot read properties of undefined (reading 'length')" errors in sidebar Done
POR-2216 FE// SingleSelect ParameterControl crashes when default value doesn't match any option Done
POR-2215 FE// Date Picker ParameterControl does not restore date value from URL on page reload Done
POR-2214 FE// Date Picker ParameterControl sends previous date value instead of selected one Done
POR-2212 FE// Add Query modal closes on save validation error — user loses input data Done
POR-2211 FE// Add Query and Add Datasource modals fire API request on every keystroke in SQL editor — no debounce Done
POR-2209 FE// Data Sources admin page — CLEAR button saves empty filter to localStorage, hiding all datasources permanently Done
POR-2207 FE// p-editable-field placeholder not visible in display mode when value is empty string Done
POR-2206 FE// Queries admin — old list remains visible while filter loading indicator is shown Done
POR-2204 FE// Three-dot menu on Default Parameter card does nothing in admin panel Queries (Add/Edit Query) Done
POR-2203 FE// RESET button does not revert changes to Default Parameters in Data Source editor Done
POR-2202 FE// Default Parameters Name dropdown shows "No Data" during query creation and duplicates after save Done
POR-2201 FE// Newly created query does not appear in the Queries admin list Done
POR-2187 FE// Default Parameters in admin panel Datasources still uses old UI — not updated like sidebar and Queries admin Done
POR-2186 FE// Default parameters are not sent in request payload when testing Data Source via TEST button Done
POR-2185 FE// SelectFilter search — race condition causes duplicate entries and ngRepeat:dupes error Done
POR-2182 FE// ParameterControl with Control Type "Date Picker" renders incorrectly — shows plain text instead of date picker UI Done
POR-2181 FE// ParameterControl block loses Parameter value when added to another page Done
POR-2180 FE// Form Query — placeholder text in Group by and Order by fields is not vertically aligned Done
POR-2178 FE// Selecting last value in ParameterControl triggers redundant dropdown reload with offset=30, resetting parameters to "No Data" Done
POR-2177 FE// SAVE button does not activate after removing default parameter from Data Source Done
POR-2176 FE// Cascading Filter Group block throws error on creation and shows empty Data Sources dropdown Done
POR-2175 FE// Missing "+" button to add query in some block types Done
POR-2174 FE// "pMessagesService is not defined" error when deleting query from Queries admin page Done
POR-2173 FE// Error "Cannot read properties of undefined (reading 'datasources')" on saving existing Data Source Done
POR-2172 FE// Dropdown picker overlaps sidebar sections instead of hiding behind them Done
POR-2171 FE// Page editor sidebar width is narrower than before — expands excessively after Data Source test Done
POR-2170 FE// Query expand/collapse arrow icon shows incorrect state Done
POR-2169 FE// Page editor sidebar missing THEME, PAGE, DATA SOURCES, ACCESS sections - only GRIDS visible Done
POR-2168 FE// "c.blocksModel is not iterable" error on Blocks page after closing block with active filters Done
POR-2167 FE// HTML block displays raw data index [0,0] instead of rendered content Done
POR-2166 FE// Search filter does not work in ParameterControl dropdown Done
POR-2165 FE// Form Query shows incomplete form and incomplete Data Sources list after creation Done
POR-2164 FE// AmChart block silently discards valid config values on Save Done
POR-2161 FE// Default text is auto-filled in Parameter field when no parameter is selected Done
POR-2160 FE// Missing “Page size” field prevents query testing due to validation Done
POR-2159 FE// Datasource cannot be deleted from Admin panel – Delete button does nothing Done
POR-2158 BE// MSSQL query with ORDER BY fails due to invalid subquery wrapping Done
POR-2157 BE// MSSQL queries fail with pagination due to missing ORDER BY clause Done
POR-2156 Invalid parameter value is set for query Done
POR-2154 FE// Display backend validation errors for reserved SQL parameters Done
POR-2153 BE// Validate reserved SQL parameters on Data Source create and update Done
POR-2152 FE// Reserved SQL parameters backend errors are not properly handled and displayed on UI Done
POR-2151 FE// Queries and Data Sources pages show empty state instead of default loader on initial load Done
POR-2150 FE// Dropdown picker is not anchored to the triggering field and shifts on scroll Done
POR-2148 FE// Duplicate parameters are displayed when the same default parameter is defined in Data Source and Query Done
POR-2147 FE// Parameter value is replaced with undefined in URL after selecting value in ParameterControl Done
POR-2146 FE// Duplicated Data Source doesn't open and cannot be saved without changes Done
POR-2145 FE// Data Source [Test] button throws error after page refresh Done
POR-2144 FE// Empty Page Size value is sent as empty string causing 422 error Done
POR-2142 FE// Accordion sections cannot be collapsed after expansion Done
POR-2141 FE// ParameterControl crashes when data source returns duplicate option values (ngRepeat:dupes) Done
POR-2138 FE// Error occurs when selecting any control type in ParameterControl block Done
POR-2137 FE// Error occurs when adding Line Chart block and opening sidebar automatically Done
POR-2136 FE// Test datasource no longer displays preview rows Done
POR-2134 Split nginx locations config files Done
POR-2133 FE// Missing “Test Query” button in Query configuration Done
POR-2132 FE// Unable to delete newly added block – error queriesUIIds is not iterable Done
POR-2131 FE// Blocks page fails to load with “Cannot find undefined blocks assets” error Done
POR-2130 FE+BE// SelectFilter shows infinite loader when opening options dropdown Done
POR-2128 FE// Query Builder – Default Parameters section should be hidden for Form Query Done
POR-2127 FE// Query Builder – Group By and Order By values are not populated in sidebar UI Done
POR-2126 FE// URL query string contains null= when at least one block has no data Done
POR-2125 FE// Text Area and Markdown blocks don't render interpolated data from Data Source Done
POR-2124 FE// SQL query parameters are not available for selection in Default Parameters Done
POR-2122 Add admin-only protection to mutation endpoints (create/update/delete) Done
POR-2120 FE// Block selection state is not preserved after applying filters or sorting Done
POR-2116 Select filter is displaying string value twice in filter list Done
POR-2111 FE// Named Credentials – Edit action creates a new credential instead of updating existing one Done
POR-2110 FE// Named Credentials – Console error when opening “Create New Credentials” with type Data Done
POR-2109 FE// Tags – Sorting by “Tag” and “Created at” does not change order Done
POR-2108 Use zcreds to get Devpi creds in CI jobs Done
POR-2102 Forgot Password Form: Password resets even when the Repeat Password field doesn't match Done
POR-2100 FE// Code Editor – Repeated edits to JavaScript snippet are not applied on save Done
POR-2099 FE// Add Block modal – Search results disappear when sorting by Type Done
POR-2097 FE// Theme duplication - logo and favicon are not copied to duplicated theme (grey preview) Done
POR-2095 FE// Monaco Editor – content inserted via paste is not saved until the editor registers a manual change Done
POR-2094 BE// DELETE screenshot for page/block layout returns 500 instead of 204 when file does not exist Done
POR-2093 FE// AngularJS dupes error when rendering Column dropdown for Data Source with duplicate values Done
POR-2087 Cascading Filters not Exposing NULL value option in 1.16.6 Done
POR-2082 FE// Theme deletion does not remove associated logo & favicon from Asset Manager Done
POR-2081 FE// Admin Edit – Users/Groups sections broken + unclear Permissions section Done
POR-2080 FE// Asset Manager – “Type” dropdown disappears after navigation Done
POR-2055 FE// TranslationPicker – Default value is not applied on the canvas Done
POR-2054 FE// Missing placeholder in Translation Picker search field Done
POR-2052 FE// Notification hides action buttons on Translation Edit page Done
POR-2050 FE// Extra whitespace before second sentence in “Block already exists” toast Done
POR-2049 FE// Page title is clipped on Pages list Done
POR-2030 FE// Lazy loading issue - screenshots not displayed for pages or blocks Done

Tasks

Issue Summary Resolution
POR-2285 Fix UI autotests Done
POR-2225 Test Run 1.18.0.a15 Done
POR-2119 Add AGENTS.md and make targets for common tasks Done
POR-2118 Investigate possibility of backing Assets with Sharepoint Done