| New Features |
|---|
| 1. | Added the "Filters" window to the "Data Transformation" editor. It shows the filters of all columns in one place and allows choosing whether the filters of different columns are combined with And or Or. |
| 2. | The RowNumber() function for dashboards. It returns the row number (1..N) of a row in the final sorted result. |
| 3. | The "Sankey" chart type in reports and dashboards. It shows the flows between categories as links whose width is proportional to the flow value. |
| 4. | The Rank() function for dashboards. It returns the rank (1..N) of a value in descending order. Equal values share the same rank, and the ranks that follow are skipped. |
| 5. | The MS SQL data adapter based on the Microsoft.Data.SqlClient provider, which supports strict SQL Server encryption (Encrypt=Strict). It works only on .NET Framework. To use it, create a standard "MS SQL" connection, then select "Microsoft.Data.SqlClient" for the "MS SQL Data Adapter" option on the "Data" page of the report designer options, or set the StiOptions.Dictionary.UseMicrosoftDataSqlClient property to true. The report designer downloads the provider from NuGet. |
| 6. | Support for WebP images. Images in the WebP format can now be used in reports and dashboards. |
| 7. | Added the ability to set the color of chart points from a data column in dashboards. It works for the "Pie", "Pie 3D", "Doughnut", "Funnel", "Treemap", "Sunburst" and "Pareto" chart types, as well as for clustered column and bar charts. |
| 8. | MonthYear, QuarterYear, WeekYear and DayMonthYear functions in reports and dashboards. They group data by the month, the quarter, the week or the day within the year, keeping the chronological order. |
| 9. | The "Report Checker" now checks the expressions of the dashboard elements, including the tool tip, the hyperlink and the parameter values of the interaction, and reports unknown functions, missing data columns and broken expressions in filters and conditions. |
| 10. | A broken expression is now reported right under the expression field in the editors of the Table, Cards, Chart, Progress, Gauge, Indicator, Pivot Table, Online Map, and Text dashboard elements. |
| 11. | Support for IME (Chinese, Japanese, Korean) input in the expression editor. |
| 12. | The PrimaryKey property has been added to the data columns in the data dictionary. The key columns are taken from the data source schema or from the Key attribute of business objects, shown with a key icon in the dictionary tree, and preselected when creating a relation in the report designer. |
| 13. | Added the "Markdown" component to reports. It renders Markdown text with headings, lists, tables, images, links and code blocks, breaks across pages, is exported to all formats, and has its own editor with color themes in the report designer. |
| 14. | Added the "Micro QR Code" barcode in reports. It supports versions M1-M4 with automatic version selection, numeric, alphanumeric and byte data and the error correction levels L, M and Q; by default the highest level that fits the data is selected. |
| 15. | The relations of the data dictionary are now created from the foreign keys of the database when retrieving columns from a SQL connection of any type: MS SQL, MySQL and MariaDB, PostgreSQL, Oracle, Firebird, SQLite, SQL CE, Access, Teradata, Snowflake, DuckDB, VistaDB, as well as the connections through ODBC and OLE DB. |
| 16. | Added a new GetLabels function for list variables requested from the user. It returns the labels of the selected items instead of their keys, so they can be used in queries and expressions, for example GetLabels("Cities").ToQueryString(); the short form Cities.Labels can be used as well. |
| Enhancements |
|---|
| 1. | Support for VistaDB 6 databases: the VistaDB connection now works through the VistaDB 6 provider, databases of VistaDB 5 are still opened, and the primary keys of the tables are retrieved. |
| 2. | The Teradata data provider is now downloaded from NuGet by the report designer. |
| 3. | Added the datetime picker and the three-state bool checkbox to the variable items editor in the report designer. |
| 4. | When exporting a report to OpenDocument Writer, hyperlinks of text components and images are now exported. |
| 5. | Enabling the editing mode in the viewer no longer scrolls the report to the first editable component - editing now starts from the page that is currently displayed. |
| 6. | The error of a broken expression of a dashboard element is now displayed on the element itself in the report designer and in the rendering messages of a report. Before, such an error was skipped silently and the element just showed no data. |
| 7. | Retrieving the database schema of an Informix connection in the report designer, including tables, views, columns, stored procedures with parameters and relations. |
| 8. | Retrieving the database schema through an ODBC driver has been reworked: the primary keys and the relations are retrieved, and the system objects are no longer listed among the tables. |
| Fixed Bugs |
|---|
| 1. | No rows in the "View Data" window and in the report for the tables of a Teradata or VistaDB connection created from the database schema in the report designer. |
| 2. | Displaying and saving the value of the "Zip Code" component when a report is rendered in interpretation mode. |
| 3. | Hidden interlacing of a chart area was displayed again after saving a report to an *.mrt file or rendering it in compilation mode. |
| 4. | Applying a condition with an aggregate function when rendering a report in compilation mode might not work if the band is not explicitly specified for the aggregate function. |
| 5. | Filters of the DateTime and Boolean types on the Data band in reports with the VB script language rendered in interpretation mode. |
| 6. | Synchronizing the columns and the primary keys of the data sources of an OData V1-V3 connection with the "Synchronize" command of the data dictionary. These data sources were skipped: their columns were not updated, and a primary key unchecked in a column did not come back. |
| 7. | Retrieving the types of the columns which an ODBC driver names in its own way when reading the database schema: int4, float8 and timestamptz of PostgreSQL, DOUBLE PRECISION of Firebird, datetime2 and the identity columns of MS SQL. Such columns came as strings, the tables with a space in the name came without columns, and the relations of these tables and key columns were lost in the data dictionary. |
| 8. | The data sources added through an ODBC driver failed to build in a report when the name of a table, a view or a stored procedure contained a space or mixed-case letters, or when the table belonged to a schema: the names in the query were quoted the wrong way for the database, and the schema was added twice. |
| 9. | Displaying the views of an Oracle database in the "Select Data" form when connecting through the Devart provider. |
| 10. | Calculating a regular total, such as Sum, in the compilation mode on a page with columns when a column total, such as colSum, is used for the same data band. The regular total was reset on every column and showed the value of the last column only. |
| 11. | Processing line breaks in the expressions of the "Rich Text" component when a report is rendered in interpretation mode. The "
" and "par" sequences in string values were shown as text instead of a line break and a new paragraph. |
| 12. | Displaying a rotated text component with the AllowHtmlTags property enabled: the text was shifted outside a narrow cell or drawn without rotation, depending on the text engine. |
| 13. | Wrapping a one-character word that did not fit at the end of a line in a text component using the SixLabors library: the component did not grow to accommodate the extra line, and the last character was clipped. |
| 14. | Resetting the values of variables when the parameters panel is switched off and on in the WinForms and WPF viewers. In the WinForms viewer, this happened to nullable variables after clicking the "Submit" button. |
| 15. | Overlapping of Chinese, Japanese, and Korean characters in the code and expression editors in the report designer. |
| 16. | When exporting a report to Word with the "Use Page Header and Footer" option enabled, the row height was calculated slightly incorrectly, so the last row on a page could move to the next page. |
| 17. | The height of the "Image" component was calculated incorrectly when the DockStyle and MinSize/MaxSize properties were used together. |
| 18. | The "Interaction" editor of the dashboard elements reports a broken expression right under the field which holds it - the tooltip, the hyperlink or the value of the parameter. |
| 19. | The data type of the FLOAT and SMALLFLOAT columns of an Informix data source, FLOAT is now double precision and SMALLFLOAT is single precision. |
| 20. | Missing string columns in the schema of an OData V1-V3 connection in the report designer when the properties are marked as nullable in the service metadata. |
| 21. | Connecting to an IBM DB2 database with the installed IBM Data Server Driver in the report designer; the "DB2" connection is available again in the list of data sources. |
| 22. | Positioning of underline and strikeout lines for text drawn with synthesized fonts when exporting a report to PDF. |
| 23. | Losing the version of an OData connection when saving a report to an *.mrt file with JSON markup or previewing it in the report designer. A connection configured for OData V1-V3 was treated as V4, and the data source remained empty. |
| 24. | Saving the connection parameters of a Google Sheets data source when saving a report to an *.mrt file with JSON markup. |
| 25. | Saving the code page of a dBase data source when saving a report to an *.mrt file with JSON markup. |
| 26. | Displaying page numbers in the "Table of Contents" component when a report with a large number of pages is rendered with the ReportCacheMode property enabled. |
| 27. | Retrieving the database schema through the Oracle ODBC driver no longer crashes the report designer. The columns of the whole database were requested from the driver at once, and it brought the process down; now they are read schema by schema. |