Child pages
  • 2021.06 Whats new

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

More improvements to it and components and packages ported over. (like google maps)

Now all the component and services have there NG2 code in there own git hub repo as NG2/angular library.  This means that the release of the package now contains the ng2 sources/distribution of that package.

...

This should not have side effects so the default is changed to be more optimized.
But if there are problems that related foundset are not updated correctly with databroadcast (of new records) of other clients this can be set back to false.
This property optimizes the notifications of new records to all the loaded related foundsets for that datasource.
It builds up an index so we know much faster that for this inserted record we only have to notify a small set of RelatedFoundset instances instead of going over all of them to test if this new record maybe belongs to this set.

Client connections for a database datasource

Servoy added the ability to create client specific connections for a database datasource through the datasources api:

datasources.db.servername.defineClientConnection()

This returns an object that can be used to set another username/password and/or database properties. If those are set then after the create() call all access to the database of that client will go over that client connection. A client gets its own pool (with max 1 connection in the pool, more can be created but are not pooled to keep the resources to a minimum).

This does have a resource overhead because every client has its own connection so 100 clients creating a client connection will result in 100 database connections, instead of a shared pool of maybe only 10.

A sample:


Code Block
languagejs
	var connectionDef = datasources.db.example_data.defineClientConnection().username("test").password("test").setProperty("myprop","myvalue").create();
	var foundset = datasources.db.example_data.customers.getFoundSet();
	foundset.loadAllRecords(); // this will use the above connection.
	connectionDef.destroy(); // destroys it, from now on the standard pool is used.

Onbeforelogin event

A Solution now has a onBeforeLogin event. This can be used to handle deeplinks before the user needs to login, it is called at the load of the solution before onOpen which waits for the user to login first.

This can be used in combination with a login form, to be able to handle already deeplinks, like auto login or authentication.

For a main solution that has a login solution its not really useful. Because then he onBeforeLogin of the login solution is checked/called not from the main.

This is an addition to that solution can be created with just a login form and not a login solution. So that there is a handle that will be executed before login, which is normally not allowed. You need to handle this with care.

The method does get an object with all the name value pairs that the deeplink has.

Other

Log4j enhancements for more keys that are usable in a logging line: [SVY-16019] Log entries for org.sablo.websocket.WebsocketEndpoint or org.sablo.BrowserConsole ont have a clientid and solutionName property set - Servoy

Boostrap tablesspanel is deprecated and replaced by a core Tabless panel (inline with other form component containers)

Better Improved Java 16 support for rhino 

Jira
serverServoy
serverId4ad951b9-f3a1-3d2a-96cd-12d1456d993c
keySVY-16025


UserAgent 

Jira
serverServoy
serverId4ad951b9-f3a1-3d2a-96cd-12d1456d993c
keySVY-15970
 and keepalive
Jira
serverServoy
serverId4ad951b9-f3a1-3d2a-96cd-12d1456d993c
keySVY-15895
 can now be on by the http client plugin.

TLS support for Rabbit broadcast plugin, support for just enabling tls without verification or certificates (internal networks) and support for a keystore and passphrase 

Jira
serverServoy
serverId4ad951b9-f3a1-3d2a-96cd-12d1456d993c
keySVY-16030

Timezone resolve improvements for NGClient/NGClient 2, now the browser new Intl api is used to get the actual timezone its it, if that is give its not tried to resolve based on the 2 timezone offsets (winter and summer times)

API improvements/additions for SolutonModel for LayoutContainers (give no position, add as last) and components (no name, generate an auto one)

controller.focusFirstField() improvements, it now returns a boolean if it could make a call (there is a component where it could call focus on), also readonly components are skipped

onDataChange event will get more information about the context of the property that is changed see Property Types - Servoy 2020 Documentation - Servoy Wiki (dataprovider section): SEvent.data will contain an object: {dataprovider : dataProviderID, scope : dataproviderScope, scopeid : variable_scope_or_datasource}.