release notes

What's New in WinWeb 2020.1.11 and 2020.1.12

Related products: Windows GUI

Maybe it's the current Dutch stormy weather inspiring the Thinkwise WinWeb Engineering Team, because we sure felt some fresh wind when we picked up a couple recurring tough issues and managed to put them behind us. We hope that the new features and improvements in the latest 2020.1.12 release will inspire you just as much, and increase your productivity. Highlights include:

  • Totals for grid groups (Web GUI)
  • Preview control (Windows GUI)
  • Better FILESTREAM support
  • Indicium connection (Windows GUI)
  • Mail reports with Microsoft Outlook (Windows GUI)
  • Aborted default procedures

As usual, some general ease-of-life and quality improvements are included as well:

  1. The Ctrl A hotkey in the Web GUI selects all records in a grid.
  2. Support for the DATETIME2 data type on SQL Server is now complete. This is particularly useful in the context of temporal tables, where foreign keys on DATETIME2 columns are commonplace.
  3. The “Accept” HTTP header is properly supported in the HTTP process connector.
  4. SQL expressions for GUI calculated fields can end with an end-of-line comment without generating errors in GUI queries.
  5. Improved error handling in the file storage converter task of the model.
  6. The “All values” checkbox in the Excel style filter in the Windows GUI has been fixed.
  7. Support for basic authentication headers, in which an IIS server supplies known user-password values to the Web GUI, allowing it to log in automatically.
  8. Non-critical security updates for the Web GUI.
  9. Code creation on Azure and the Azure file storage back-end have received bugfixes.

We have also been actively researching some Community Ideas. Be sure to keep an eye on this blog to find out what's coming.

Totals for grid groups

Sometimes an image says more than words:

Group totals

The Web GUI now supports totals per group in a grid. In the screenshot above, group header rows contain sums of values (e.g. amounts) of items contained in that group. Other supported aggregation types are Average, Count, Maximum, and Minimum.

Preview control

The Preview control has received the love it deserves, and underwent a major upgrade. The Windows GUI now uses the Chromium browser engine for previewing files. 

This increases the size of the download from the Thinkwise Community Portal. But as the previewer is now an essential component of most applications, it is a small sacrifice for some significant gains:

  1. Support for a broader range of file types to display.
  2. More efficient use of memory while going through several files in a set.
  3. All of the performance benefits of one of the best Javascript engines out there.

We're convinced that the previewer has the expected level of stability, but as this is a major change we cannot completely ignore the chance of new issues. Test results are promising, but please do let us know if you experience any unusual new behavior.

Better FILESTREAM support

This SQL Server data type is an interesting mix between a large object and a regular file storage. For instance, it turns out that the semantics of copying existing file stream values to a new row (Ctrl Alt +) needed more fleshing out. This also affects tasks and reports with file stream parameters, when they are applied to a selection of multiple rows.

Here, too, we have chosen for a mix. With the constraint in mind that files are allowed to be referenced by at most one record, each copy action now invokes a separate upload of the same file object. This is done automatically, which removes some work which would otherwise have to be done manually. It involves a download action right when copying to a new row. Should this new behavior not be acceptable, it is advisable to turn off the “Include in copy” flag in the model.

Indicium connection

We are continuously investing in improving the connection between the Windows GUI and Indicium, to make it fully compatible, and bug free. The latest 2020.1.12 GUI release contains a couple important bugfixes, and a new feature as part of this ongoing effort:

  1. Invalid files are now correctly ignored.
  2. User Preferences quality review.
  3. You can now change your password when connected to Indicium. The regular settings are applied as expected (e.g. “Allow change password” for a user in IAM).
Change password when connected to Indicium

We have also resolved an issue in which a grid would get out of sync with a row which has just been added to it. The TL;DR is that a rare combination of three Leaky Abstractions caught us off guard. For those interested, the technical explanation is that while the GUI is waiting for a web request to Indicium to return, the UI thread which is responsible for drawing items in the grid is not completely blocked - as is the case with other back-ends such as SQL Server or Oracle. So, when clicking on another row in the grid, a chain of events unfolds with a surprising result: (1) the added row is deactivating → (2) a web request is sent to Indicium to insert the new row → (3) the UI thread is unblocked which draws the grid → (4) the grid sees the incomplete row change and aborts it, so it is in a valid state when it draws itself → (5) the Indicium web request returns successfully → (6) the GUI enters a limbo state in which it simultaneously thinks the row change happened, and did not happen at all.

It also turns out that this scenario only occurs if the web request checks for a proxy configuration, which makes the issue especially hard to reproduce: nothing extraordinary happens when running Indicium on localhost.

At least the fix was easy.

Mail reports with Microsoft Outlook

 

Interoperability with different Microsoft Office versions to automatically e-mail your generated reports has been improved by changing the way the GUI invokes Outlook. With this update, errors resulting from version conflicts, Outlook processes that may or may not be running already, and a couple of other issues are finally resolved. This applies only to the Windows GUI.

Aborted default procedures

create procedure [dbo].[def_my_tab]
(
@default_mode tinyint,
@import_mode tinyint,
...
)
as
begin
exec tsf_send_message 'invalid_value', null, 1
end

When a default stored procedure is called in edit mode with a changed value and then aborted (see example code), its effect is that the change is undone. What's new is that this value reset now happens immediately after returning from the stored procedure call. In particular, a subsequent layout stored procedure receives the value as it was before the change. This removes the difference between what the user sees, and what the layout stored procedure thinks the user sees.

Please be advised that this may affect the behavior of your existing layout stored procedures, but in the best way imaginable: it enables you to throw away value checking code in layout stored procedures which is now redundant, for free quality and performance gains.

 

@Henk Nicolai Great work! I do have one question. Now that the preview module has been updated. Could you provide a list of file extensions that are supported by default (and maybe more if the right software is installed) ?


Hello G. Ariens,


At first the previewer tries to open the extension with a registered viewer in Windows.
If no registered viewer is available, the previewer will then check if it has a control that can open the extension, e.g. a PDF file. 

 

The previewer uses a couple of different controls to open files, which are:

  • An UltraPictureBox from Infragistics which can open .jiff, .jpg, .jpeg, .bmp, .png and .ico 
  • A simple textbox which can open .txt, .cs, .java, .ini, .log, .bat, .sql
  • Chromium browser for surfing URL’s, and opening .html, .htm, .xml, .gif, .msg, .svg files
  • A PDFViewer from DevExpress to open .pdf and .ps files

 

For any other file the previewer will try to navigate to the given path and show it in the Chromium Browser. If this fails it will state no preview is available.

 

I hope this clears things up, if you need any further information please let me know.

 

Kind Regards,
Roel


Hello G. Ariens,


At first the previewer tries to open the extension with a registered viewer in Windows.
If no registered viewer is available, the previewer will then check if it has a control that can open the extension, e.g. a PDF file. 

 

The previewer uses a couple of different controls to open files, which are:

  • An UltraPictureBox from Infragistics which can open .jiff, .jpg, .jpeg, .bmp, .png and .ico 
  • A simple textbox which can open .txt, .cs, .java, .ini, .log, .bat, .sql
  • Chromium browser for surfing URL’s, and opening .html, .htm, .xml, .gif, .msg, .svg files
  • A PDFViewer from DevExpress to open .pdf and .ps files

 

For any other file the previewer will try to navigate to the given path and show it in the Chromium Browser. If this fails it will state no preview is available.

 

I hope this clears things up, if you need any further information please let me know.

 

Kind Regards,
Roel

Maybe add this to the documentation?