Servoy 2023.3.3_LTS

We are pleased to announce the availability of Servoy 2023.3.3_LTS (release number 3845)

See 2023.3.3_lts_fixes for the list of fixes for this release since 2023.3.2 (where this release is build on top of)

This version is available through the download site

or through the update site URL: http://download.servoy.com/developer/lts
If you want to use the LTS release enable the above LTS update site and disable the ‘latest’ update site so you only update to LTS updates.

if you want to stick to the 2022 LTS (2022.3.5 LTS) then disabled the lts and latest updates sites, and add this site: https://download.servoy.com/developer/lts_2022/

You are strongly recommended to move over to one of the supported branches (2022 LTS, this 2023.3.3_LTS or 2023 Latest)

For solutions that are already in production it is a good idea to stick to this version (2023.3.x) or move this year to this version.

Thanks to the Servoy team for the Servoy Developer 2023.3.3_LTS version. One thing I noticed: In the problems tab it reports "Project ‘xy’ has no explicit encoding set. And there are 2 warnings for function createFolder in svyDataUtils.js, and function Logger in svyLogManager.js.

huber:
Thanks to the Servoy team for the Servoy Developer 2023.3.3_LTS version. One thing I noticed: In the problems tab it reports "Project ‘xy’ has no explicit encoding set.

that is an eclipse warning (not directly servoy)
but you can quick fix that (but i think then you get a bit os specific (like windows encoding))
i think its better to just set that encoding to UTF-8

[attachment=0]set project encoding.png[/attachment]

Thanks for the tip, unfortunately it does not solve the warnings. By default both radio buttons were set to “Inherited from container (UTF-8)” and “Inherited from container (UNIX)”.

Setting the radio buttons explicitly to other: UTF-8, and other: UNIX did not make any difference, as it already inherited these settings from the container.

  1. To be sure I understand the change from bootstrap theme to alpine theme for ng-grids (AG Grids) that means for an ng-grid component the styleClass has now for example to be set to “ag-theme-alpine” and both the NG1 style file selector as well as the NG2 style file selector have to be changed to ag-theme-alpine?

  2. In the styleClass property, I have sometimes combinations of two styles, like “ag-theme-bootstrap bottomBorder” which work for NG1, but not for NG2. Is this not supported anymore with alpine?

  3. And last question, what means in the 2023.03 (LTS) docs under UI/CSS changes:

AGGrid (nggrid) dropped the theme (bootstrap) completely and is now fully on alpine (Possible breaking for your NGGrid styling) So we adjusted our stuff to also be on that including our theme, so make sure you update to the 2023.03 theme if you use the Servoy theming.

Where should I update to the 2023.03 theme?

Thanks and regards,

  • for ng1 we stopped upgrading the aggrid library at v21.2.2 (released on 27 feb 2019), so there
    nothing changed related to themes, it is still uses ‘ag-theme-bootstrap’;
  • for TiNG we are trying to keep-up with the latest aggrid library, lts using v29.2.0 (released on 21 mar 2023),
    but as recently aggrid dropped completely ‘ag-theme-bootstrap’, we also needed to change the theme, so we switched
    to ‘ag-theme-alpine’ but this is ONLY in TiNG;

now for your questions:

  1. for TiNG you must use ‘ag-theme-alpine’ for style, there is no more ‘ag-theme-bootstrap’ in lastest aggrid libs;
    for NG1 you don’t need to do any changes, ‘ag-theme-bootstrap’ should work fine, for convenience, if ‘ag-theme-alpine’ is
    set as style, we just map that to ‘ag-theme-bootstrap’ at runtime, so you don’t need to constantly change the styles,
    if you’re running both NG1 & TiNG;

  2. ‘ag-theme-bootstrap bottomBorder’ in NG1 should be replaced with ‘ag-theme-alpine bottomBorder’ for TiNG - this should work fine,
    if not, fill in a case, so we can investigate;

  3. it means that, in TiNG, if you have in the solution stylesheet changes that are targeting the grids, that were created when the TiNG
    grids still used ‘ag-theme-bootstrap’, those may not work, and may need to be adapated to the new default ‘ag-theme-alpine’

It could be fixed by using Quick Fix in the problems tab and seems to be a persistent fix.

jcompagner:

huber:
Thanks to the Servoy team for the Servoy Developer 2023.3.3_LTS version. One thing I noticed: In the problems tab it reports "Project ‘xy’ has no explicit encoding set.

that is an eclipse warning (not directly servoy)
but you can quick fix that (but i think then you get a bit os specific (like windows encoding))
i think its better to just set that encoding to UTF-8

[attachment=0]set project encoding.png[/attachment]

Hi Gabi

Thanks a lot for your explanations, which help vey much, especially to know that you translate the ag-theme-alpine back to ag-theme-bootstrap for the NG1 client.

  1. The translation doesn’t (seem to) work for a combination of two styles. For example, setting the styleClass property of a Data Grid (Servoy NG-Grids) to:
ag-theme-alpine bottomBorder

and having the following 2 style sheet selectors in the NG1 style sheet:

.ag-theme-bootstrap .ag-header {
	font-weight: bold;
}
.bottomBorder {
	border-bottom: 2px solid red;
}

nullifies the .ag-theme-bootstrap, i.e. ignores the font-weight: bold (and of course any other settings in this selector).

Interestingly, setting the styleClass property to: ag-theme-bootstrap ag-theme-alpine bottomBorder, makes the font-weight reappear. But this of course is not a solution.

As an information, I get following 2 warnings in the Problems tab of Servoy Developer 2023.3.3:

Description	Resource	Path	Location	Type
The function createFolder(Object) is not applicable for the arguments (plugins.file.JSFile)	svyDataUtils.js	/svyUtils	line 1085	JavaScript Problem
The function Logger({name:String, effectiveLevel:Level, log:function(Level, AbstractMessage)},[AbstractMessageFactory]) is not applicable for the arguments ({parent:LoggerConfig, isRoot:Boolean, children:Array<LoggerConfig>, loggerLevel:Level, appenderCache, name:String, externalLogger:Logger, appenderCacheInvalidated:Boolean, effectiveLevel:Level, appenders:Array<{appender:AbstractAppender,level:Level}>, additive:Boolean},AbstractMessageFactory)	svyLogManager.js	/svyUtils	line 1171	JavaScript Problem

Servoy Packages are updated to the latest.

huber:
As an information, I get following 2 warnings in the Problems tab of Servoy Developer 2023.3.3:

Description	Resource	Path	Location	Type

The function createFolder(Object) is not applicable for the arguments (plugins.file.JSFile) svyDataUtils.js /svyUtils line 1085 JavaScript Problem
The function Logger({name:String, effectiveLevel:Level, log:function(Level, AbstractMessage)},[AbstractMessageFactory]) is not applicable for the arguments ({parent:LoggerConfig, isRoot:Boolean, children:Array, loggerLevel:Level, appenderCache, name:String, externalLogger:Logger, appenderCacheInvalidated:Boolean, effectiveLevel:Level, appenders:Array<{appender:AbstractAppender,level:Level}>, additive:Boolean},AbstractMessageFactory) svyLogManager.js /svyUtils line 1171 JavaScript Problem




Servoy Packages are updated to the latest.

this is a known issue, and already fixed.
The problem was that the docs for the plugins where for some reason not fully correctly generated.
you can fix that by downloading: https://build.servoy.com/latest/servoy_ … update.zip

and then unzipping the application_sever\plugins
and use copy our plugins in that zip over yours.

huber:
Hi Gabi

Thanks a lot for your explanations, which help vey much, especially to know that you translate the ag-theme-alpine back to ag-theme-bootstrap for the NG1 client.

  1. The translation doesn’t (seem to) work for a combination of two styles. For example, setting the styleClass property of a Data Grid (Servoy NG-Grids) to:
ag-theme-alpine bottomBorder

and having the following 2 style sheet selectors in the NG1 style sheet:

.ag-theme-bootstrap .ag-header {
font-weight: bold;

}





.bottomBorder {
border-bottom: 2px solid red;
}




nullifies the .ag-theme-bootstrap, i.e. ignores the font-weight: bold (and of course any other settings in this selector).

Interestingly, setting the styleClass property to: ag-theme-bootstrap ag-theme-alpine bottomBorder, makes the font-weight reappear. But this of course is not a solution.

as there is no ‘ag-theme-alpine’ in NG and no ‘ag-theme-bootstrap’ in TiNG, and you want to run your solution in both, the only way to do this I think is like you wrote, setting the styleClass property to: ag-theme-bootstrap ag-theme-alpine bottomBorder; I’m not sure why you say that ‘this is not a solution’?

Coming from SC to NG1, and later on to NG2, we have to run both NG1, and NG2 for development purposes. Isn’t that the normal way (if you don’t start from scratch directly to NG2)?

In your reply from August, 21, 1:55pm, you say in 1. that Servoy maps the selector ag-theme-alpine to ag-them-bootstrap. So I understood, I can set in the styleClass property of the form ag-theme-alpine and Servoy maps it for NG1 at runtime to ag-theme-bootstrap.

If I have to set both ag-theme-bootstrap, and ag-theme-alpine, then I have to sometime in the future, when NG1 is obsolete, remove any ag-theme-bootstrap (in the styleClass property) in every form using an NG-Grid. This would be quite a lot of work.

Also, if there is only ag-theme-alpine without another style, the mapping seems to work. The problem arises when having more than one selector set in the styleClass property.

yes, we indeed only replace the styleClass if there is only ‘ag-theme-alpine’ is set:

<div style="height: 100%;" class="ag-table" ng-class="model.styleClass === 'ag-theme-alpine' ? 'ag-theme-bootstrap' : model.styleClass" sablo-tabseq="model.tabSeq"></div>

I can change that, to do a replace of ‘ag-theme-alpine’ also when there are more classes specified, but when NG1 will be obsolete you will still have ‘ag-theme-bootstrap’ in your solution stylesheet,
that you will need to cleanup, like

.ag-theme-bootstrap .ag-header {
   font-weight: bold;
}

Hi Gabi

We very much appreciate it if you can change that and do a replace of ‘ag-theme-alpine’ also when there are more classes specified.

We have 2 different style sheets for NG1 and NGTi, as you (Servoy) offer an automatic switching when the style sheet is named “solution.less” for NG1, then Servoy looks for “solution_ng2.less” for NGTi. So the cleaning looks very easy as the style sheets are separated.

Would be enormous helpful if the solution would find its way into Servoy Developer 2023.3.4.

Thanks and regards,
Robert

huber:
Hi Gabi

We very much appreciate it if you can change that and do a replace of ‘ag-theme-alpine’ also when there are more classes specified.

We have 2 different style sheets for NG1 and NGTi, as you (Servoy) offer an automatic switching when the style sheet is named “solution.less” for NG1, then Servoy looks for “solution_ng2.less” for NGTi. So the cleaning looks very easy as the style sheets are separated.

Would be enormous helpful if the solution would find its way into Servoy Developer 2023.3.4.

Thanks and regards,
Robert

the fix is in the component, and it is just released (Servoy NG-Grid 2023.3.4) - you can update to it via SPM

Gabi Boros:
the fix is in the component, and it is just released (Servoy NG-Grid 2023.3.4) - you can update to it via SPM

Thanks, Gabi, the tests I did with the new NG-Grid where positive :-)

jcompagner:
this is a known issue, and already fixed.
The problem was that the docs for the plugins where for some reason not fully correctly generated.
you can fix that by downloading: https://build.servoy.com/latest/servoy_ … update.zip

and then unzipping the application_sever\plugins
and use copy our plugins in that zip over yours.

Copying the content of the downloaded application_server/plugins folder in my Servoy Developers plugins folder DID SOLVE the function createFolder(Object) warning, but NOT the function Logger warning.

Upgrading to this version, but not yet developing w/ TiNG, and when trying to export the .war file, I’m getting the error:

could not create/copy the Titanium NGClient resources

I’ve found the other complaints of this error from previous version releases and I believe my configurations are correct (some of which are probably not even relevant to the .war export):

Window → Properties → Servoy:

  • Start NG Client should launch the Titanium NG Client (I’ve Unchecked this checkbox)
  • Open forms with the Titanium NG Client form designer (I’ve Unchecked this checkbox)

War export:

  • Export NG1 Client resources (by default…) (I’ve Checked this checkbox)

Here are my command line equivalents:

.\war_export.bat -data “C:/Users/Darren/my_workspace_202303” “-s qfi -o C:\Users\Darren\Desktop\my_Deploy -pfw C:\Servoy_202303\application_server\servoy.production.properties -as C:\Servoy_202303\developer..\application_server\ -defaultAdminUser myAdmin -defaultAdminPassword xxxxxx -d hsqldb.jar mysql-connector-java-5.1.41-bin.jar -crefs aggrid-groupingtable bootstrapcomponents-calendar bootstrapcomponents-calendarinline bootstrapcomponents-checkbox bootstrapcomponents-choicegroup bootstrapcomponents-datalabel bootstrapcomponents-floatlabelcalendar bootstrapcomponents-floatlabelcombobox bootstrapcomponents-floatlabeltextarea bootstrapcomponents-floatlabeltextbox bootstrapcomponents-floatlabeltypeahead bootstrapcomponents-formcomponent bootstrapcomponents-list bootstrapcomponents-progressbar bootstrapcomponents-select bootstrapcomponents-table bootstrapcomponents-tabpanel bootstrapcomponents-textarea bootstrapcomponents-textbox bootstrapcomponents-typeahead servoydefault-checkgroup servoydefault-htmlarea servoydefault-htmlview servoydefault-imagemedia servoydefault-radio servoydefault-spinner servoydefault-splitpane servoyextra-collapse servoyextra-dbtreeview servoyextra-fileupload servoyextra-fontawesome servoyextra-gauge servoyextra-lightboxgallery servoyextra-listformcomponent servoyextra-multifileupload servoyextra-onrenderlabel servoyextra-select2tokenizer servoyextra-sidenav servoyextra-slider servoyextra-textfieldgroup servoyextra-treeview servoyextra-youtubevideoembedder -srefs fontawesome-lib keyListener -tables -allowDataModelChanges false -importUserPolicy 0 -useAsRealAdminUser -doNotOverwriteDBServerProperties -log4jConfigurationFile C:\Servoy_202303\application_server\log4j2-new.xml -webXmlFileName C:\Servoy_202303\application_server\web-qservlet-quartz.xml -ng1”

I’ve tried clean/build and restarted Developer as well.

I’ve attached the console output from the war export process (warExportProb-2.txt). Perhaps of note, this is found near the end of the console output:


ngclient2@2023.3.0 build
ng build --configuration production --subresource-integrity=true ngclient2

‘“node”’ is not recognized as an internal or external command,
operable program or batch file.
Finished running 'run build ’ time: 0s

Any help appreciated.

warExportProb-2.txt (3.04 KB)

this is weird not sure what happens on your system there
because npm is found because “npm install” and so on do work fine (and npm runs on top of node)

(it does run it from C:\Users\Darren\my_workspace_202303.metadata.plugins\com.servoy.eclipse.ngclient.ui\node-v18.14.0-win-x64\node.exe)

but then “ng” (so the angular compiler) suddenly reports that “node” is not found but that is used just before that just fine with the various npm commands we fire.

maybe you can retry once but first remove "C:\Users\Darren\my_workspace_202303.metadata.plugins\com.servoy.eclipse.ngclient.ui" that whole dir and let it generate it again.

Else do you have stuff like node/npm installed in your system? or do you have “angular/cli” (ng) globally installed? (which all shouldn’t really matter i also have that locally on my machine and that doesn’t interfere)

This rings a bell. Do you by any chance have a variable called ‘module’, possibly in a custom component?