Skip to content
Merged

fixes #529

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
cd9c39f
New Crowdin updates (#2989)
arnaud4d Nov 13, 2025
c87a9b4
fixes
arnaud4d Nov 13, 2025
8608d1a
add precision for idle connection timeout
arnaud4d Nov 13, 2025
26ebb5f
Update wa-get-url-history.md (#2990)
nobuteshima Nov 13, 2025
1b6063b
Update new-process.md (Changes of local process) (#2991)
nobuteshima Nov 13, 2025
6657f21
Update new-process.md (Changes of local process into ver 21) (#2992)
nobuteshima Nov 13, 2025
3f294c0
Update register-client.md (updating old information) (#2993)
nobuteshima Nov 13, 2025
7040180
Update register-client.md (updating old information into 21) (#2994)
nobuteshima Nov 13, 2025
f4e237f
fix db param en FR
arnaud4d Nov 13, 2025
f23aa6d
Merge branch 'main' of https://github.com/doc4d/docs
arnaud4d Nov 13, 2025
a5c1840
not DP AI integrated
arnaud4d Nov 13, 2025
6efce89
enhanced saving example
arnaud4d Nov 13, 2025
26660df
orda events and table lock
arnaud4d Nov 13, 2025
b68e111
Updated blob to print settings - removed old stuff
arnaud4d Nov 13, 2025
8dd964e
New Crowdin updates (#2995)
arnaud4d Nov 14, 2025
65a8948
Write Pro interface
arnaud4d Nov 14, 2025
ca54667
more consistent release notes
arnaud4d Nov 14, 2025
7d0e42f
exposed available to singletons
arnaud4d Nov 14, 2025
49709d8
fix parameters vs variables confusion
arnaud4d Nov 17, 2025
bb36810
ES Edit in blob to print settings and SET/Get database parameter (#2…
sandritica Nov 17, 2025
e4e5805
New Crowdin updates (#2997)
arnaud4d Nov 17, 2025
a08bbe5
ViewPro: Fix capitalization of foreColor and add borderTop section
e-marchand Nov 17, 2025
e2de028
report fixes 4DVP
arnaud4d Nov 17, 2025
e1d12eb
added link to blog post for code live checker
arnaud4d Nov 17, 2025
347c581
link to SpreadJS release
arnaud4d Nov 17, 2025
47d2c8e
New Crowdin updates (#2998)
arnaud4d Nov 18, 2025
e1975ea
Update wa-get-url-history.md (#2999)
nobuteshima Nov 18, 2025
7e4acf9
Licence usage for 4D Server only
arnaud4d Nov 18, 2025
5081c20
fixes
arnaud4d Nov 18, 2025
53d75c8
old note to remove
arnaud4d Nov 18, 2025
a517a19
Merge branch 'main' into main
arnaud4d Nov 18, 2025
4de9bef
Merge branch '4d:main' into main
arnaud4d Nov 18, 2025
8687ca7
New Crowdin updates (#3000)
arnaud4d Nov 19, 2025
91c309c
constants added to open window command
arnaud4d Nov 19, 2025
5328825
fix link blog post web area
arnaud4d Nov 19, 2025
2f949ab
ES Edits in Open window command, Edit in blob to print settings and L…
sandritica Nov 20, 2025
c665bcf
New Crowdin updates (#3002)
arnaud4d Nov 20, 2025
ad253c2
fix tips
arnaud4d Nov 20, 2025
9672172
fix link
arnaud4d Nov 20, 2025
ed47bd6
Update updates.md
arnaud4d Nov 20, 2025
dc0fb20
Feature/aikit file upload (#3003)
arnaud4d Nov 20, 2025
6ad749b
open window FR
arnaud4d Nov 20, 2025
dd5d31f
Merge branch 'main' of https://github.com/doc4d/docs
arnaud4d Nov 20, 2025
4751f7f
New Crowdin updates (#3004)
arnaud4d Nov 21, 2025
2318b26
fixes in concat
arnaud4d Nov 21, 2025
6ade41a
added example
arnaud4d Nov 24, 2025
d921e5d
New Crowdin updates (#3005)
arnaud4d Nov 24, 2025
c7a8208
fixes in commands-legacy
arnaud4d Nov 24, 2025
2589bf1
fix force login to qodly
arnaud4d Nov 24, 2025
000914f
New Crowdin updates (#3006)
arnaud4d Nov 25, 2025
9ed22e0
get
arnaud4d Nov 25, 2025
80da643
fluentUI on binary
arnaud4d Nov 25, 2025
a3ce55b
New Crowdin updates (#3007)
arnaud4d Nov 26, 2025
a18ca5a
Feature/order by vectors (#3008)
arnaud4d Nov 26, 2025
e2f8806
New Crowdin updates (#3010)
arnaud4d Nov 27, 2025
57f1b11
ES fixes in legacy commands - query/query selection by attribute - ve…
sandritica Nov 27, 2025
2dda5e5
New Crowdin updates (#3011)
arnaud4d Nov 27, 2025
76a49b2
Update updates.md
arnaud4d Nov 27, 2025
3fb560e
collections are expressions
arnaud4d Nov 27, 2025
0313ba6
New Crowdin updates (#3012)
arnaud4d Nov 28, 2025
9a7dcdb
Doc/web form web event from qodly script (#3013)
mouna-elmaazouzi Nov 28, 2025
9728128
Feature/wp bullets auto indent (#3014)
mouna-elmaazouzi Nov 28, 2025
86ef410
update webform class
arnaud4d Nov 28, 2025
2c0e157
added target
arnaud4d Dec 1, 2025
76e549f
New Crowdin updates (#3015)
arnaud4d Dec 1, 2025
699219c
fix target
arnaud4d Dec 1, 2025
2cb0889
Merge branch 'main' of https://github.com/doc4d/docs
arnaud4d Dec 1, 2025
adac347
removed qodly cloud info
arnaud4d Dec 1, 2025
65cbb88
FR - Fixes in commands-legacy (#3018)
mouna-elmaazouzi Dec 2, 2025
791b9ec
New Crowdin updates (#3017)
arnaud4d Dec 3, 2025
6fbbd34
Feature/find in components (#3019)
arnaud4d Dec 3, 2025
f16ee64
fixes in main
arnaud4d Dec 3, 2025
e79fe93
Merge branch 'main' of https://github.com/doc4d/docs
arnaud4d Dec 3, 2025
ec61c9d
updated get/set database parameters
arnaud4d Dec 3, 2025
7c7e76c
reordered set db param
arnaud4d Dec 3, 2025
0cb0233
fix integer operator
arnaud4d Dec 4, 2025
0fc38cb
fix log warn
arnaud4d Dec 4, 2025
77f92d0
New Crowdin updates (#3020)
arnaud4d Dec 4, 2025
11df29c
Update search-replace.md
arnaud4d Dec 4, 2025
4431828
fix bug ACI0106075
arnaud4d Dec 4, 2025
5585f2c
New Crowdin updates (#3021)
arnaud4d Dec 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions docs/API/CollectionClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Collection
---


The Collection class manages [Collection](Concepts/dt_collection.md) type variables.
The Collection class manages [Collection](Concepts/dt_collection.md) type expressions.

A collection is initialized with the [`New collection`](../commands/new-collection.md) or [`New shared collection`](../commands/new-shared-collection.md) commands.

Expand Down Expand Up @@ -295,13 +295,13 @@ $c.combine($fruits;3) //[1,2,3,"Orange","Banana","Apple","Grape",4,5,6]

</details>

<!-- REF #collection.concat().Syntax -->**.concat**( *value* : any { *;...valueN* } ) : Collection<!-- END REF -->
<!-- REF #collection.concat().Syntax -->**.concat**( *value* : any { ; *...valueN* } ) : Collection<!-- END REF -->


<!-- REF #collection.concat().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|value|Number, Text, Object, Collection, Date, Time, Boolean, Picture|->|Value(s) to concatenate. If *value* is a collection, all collection elements are added to the original collection|
|value|any|->|Value(s) to concatenate. If *value* is a collection, all collection elements are added to the original collection|
|Result|Collection|<-|New collection with value(s) added to the original collection|
<!-- END REF -->

Expand Down
16 changes: 15 additions & 1 deletion docs/API/DataClassClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -934,7 +934,7 @@ When using a constant value, the following rules must be respected:
* **date** type constants: "YYYY-MM-DD" format
* **null** constant: using the "null" keyword will find **null** and **undefined** properties.
* in case of a query with an IN comparator, *value* must be a collection, or values matching the type of the attribute path between \[ ] separated by commas (for strings, `"` characters must be escaped with `\`).
* **object**: only [4D.Vector](../API/VectorClass.md) objects are supported, in the context of **vector similarity queries** (*attributePath* must also contain valid 4D.Vector objects).
* **object**: only [4D.Vector](../API/VectorClass.md) objects are supported, in the context of [**vector similarity queries**](#query-by-vector-similarity) (*attributePath* must also contain valid 4D.Vector objects).
* **logicalOperator**: used to join multiple conditions in the query (optional). You can use one of the following logical operators (either the name or the symbol can be used):

|Conjunction|Symbol(s)|
Expand Down Expand Up @@ -1206,6 +1206,20 @@ var $comparisonVector := {vector: $myVector; metric: mk euclidean; threshold: 1.
var $results := ds.MyClass.query("myVectorField <= :1"; $comparisonVector)
```

The **order by** statement is supported in the query string so that entities in the resulting entity selection are sorted by similarity. For example:

```4d
var $results := ds.MyClass.query("myVectorField > :1 order by myVectorField"; $comparisonVector)
//default order, the first entity is the most similar
```

If the same vector appears multiple times in the query string, the order by will be applied to the results of the first one, for example:

```4d
var $results := ds.MyClass.query("myVectorField > :1 and myVectorField > :2 order by myVectorField" desc; /
{vector : $myVector1 };{vector : $myVector2 }) //myVectorField > :1 is used for the order by
```

See [more examples below](#example-4-2) (examples 4 and 5).

:::tip Related blog posts
Expand Down
2 changes: 2 additions & 0 deletions docs/API/EntitySelectionClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -1800,6 +1800,8 @@ In this example, the "marks" object field in the **Students** dataClass contains

|Release|Changes|
|---|---|
|21 R2|Support of order by with 4D.Vector searches|
|21|Support 4D.Vector objects|
|17 R6|Support of Formula parameters|
|17 R5|Support of placeholders for values|
|17|Added|
Expand Down
137 changes: 84 additions & 53 deletions docs/API/WebFormClass.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: WebForm
---


The `WebForm` class contains functions and properties allowing to handle your Qodly webform components. This class is detailed in the [Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass).
The `WebForm` class contains functions and properties allowing to handle your Qodly web page components. `4D.WebForm` objects are instantiated with the [`webForm`](../commands/web-form.md) command.

<details><summary>History</summary>

Expand All @@ -16,21 +16,16 @@ The `WebForm` class contains functions and properties allowing to handle your Qo
</details>




### Commands and functions

||
|---|
|[<!-- INCLUDE #WebFormClass.componentName.Syntax -->](#componentname)<br/><!-- INCLUDE #WebFormClass.componentName.Summary -->|
|[<!-- INCLUDE WebFormClass.componentName.Syntax -->](#componentname)<br/><!-- INCLUDE #WebFormClass.componentName.Summary -->|
|[<!-- INCLUDE #WebFormClass.disableState().Syntax -->](#disablestate)<br/><!-- INCLUDE #WebFormClass.disableState().Summary -->|
|[<!-- INCLUDE #WebFormClass.enableState().Syntax -->](#enablestate)<br/><!-- INCLUDE #WebFormClass.enableState().Summary -->|
|[<!-- INCLUDE #WebFormClass.setError().Syntax -->](#seterror)<br/><!-- INCLUDE #WebFormClass.setError().Summary -->|
|[<!-- INCLUDE #WebFormClass.setMessage().Syntax -->](#setmessage)<br/><!-- INCLUDE #WebFormClass.setMessage().Summary -->|
|[<!-- INCLUDE #WebFormClass.setWarning().Syntax -->](#setwarning)<br/><!-- INCLUDE #WebFormClass.setWarning().Summary -->|
|[<!-- INCLUDE #_command_.Web Form.Syntax -->](#web-form)<br/><!-- INCLUDE #_command_.Web Form.Summary -->|
|[<!-- INCLUDE #_command_.Web Event.Syntax -->](#web-event)<br/><!-- INCLUDE #_command_.Web Event.Summary -->|



### *.componentName*
Expand All @@ -39,11 +34,27 @@ The `WebForm` class contains functions and properties allowing to handle your Qo

#### Description

The components of webforms are <!-- REF #WebFormClass.componentName.Summary -->objects that are available directly as properties<!-- END REF --> of these webforms.
The components of web pages are <!-- REF #WebFormClass.componentName.Summary -->objects that are available directly as properties<!-- END REF --> of these web pages.

The returned objects are of the [`4D.WebFormItem`](WebFormItemClass.md) class. These objects have functions that you can use to manage your components dynamically.

#### Example

```4d
shared singleton Class constructor()

var myForm : 4D.WebForm
var component : 4D.WebFormItem

myForm:=webForm //returns the web page as an object, each property is a component
component:=myForm.myImage //returns the myImage component of the web page

For more information, please refer to the [`.componentName` description in the Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass#componentname).
```
:::info

While `myForm` may not display typical object properties when examined in the debugger, it behaves as if it were the actual `webForm` object. You can interact with the underlying `webForm` object's properties and functions through `myForm`. For example, you can dynamically manipulate page components or transmit messages to web pages using specialized functions like `myForm.setMessage()`.

:::

### .disableState()

Expand All @@ -52,20 +63,20 @@ For more information, please refer to the [`.componentName` description in the Q
<!-- REF #WebFormClass.disableState().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|state|string|->|Name of state to disable from the web form|
|state|string|->|Name of state to disable from the web page|
<!-- END REF -->

#### Description

The `.disableState()` function <!-- REF #WebFormClass.disableState().Summary -->disables the rendering of the *state* in the current web form<!-- END REF -->.
The `.disableState()` function <!-- REF #WebFormClass.disableState().Summary -->disables the rendering of the *state* in the current web page<!-- END REF -->.

This function does nothing if:
- the *state* is currently not enabled in the web form,
- the *state* does not exist for the web form.
- the *state* is currently not enabled in the web page,
- the *state* does not exist for the web page.

If you [enable](#enablestate) or disable several states in the same user function, all modifications are sent at the same time to the client once the function ends.

For more information on web form states, please refer to [developer.qodly.com](https://developer.qodly.com/docs/studio/pageLoaders/states).
For more information on web pages states, please refer to the [States section in the Qodly documentation](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/states/stateOverview).



Expand All @@ -77,26 +88,26 @@ For more information on web form states, please refer to [developer.qodly.com](h
<!-- REF #WebFormClass.enableState().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|state|string|->|Name of state to enable on the web form|
|state|string|->|Name of state to enable on the web pages|
<!-- END REF -->

#### Description

The `.enableState()` function <!-- REF #WebFormClass.enableState().Summary -->enables the rendering of the *state* in the current web form<!-- END REF -->.
The `.enableState()` function <!-- REF #WebFormClass.enableState().Summary -->enables the rendering of the *state* in the current web page<!-- END REF -->.

This function does nothing if:
- the *state* has already been enabled on the web form,
- the *state* does not exist for the web form.
- the *state* has already been enabled on the web page,
- the *state* does not exist for the web page.

If you enable or [disable](#disablestate) several states within the same user function, all modifications are sent at the same time to the client once the function ends.

For more information on web form states, please refer to [developer.qodly.com](https://developer.qodly.com/docs/studio/pageLoaders/states).
For more information on web page states, please refer to the [States section in the Qodly documentation](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/states/stateOverview).

#### Example

You enable a specific state named "wrongCredentials" in case of error in your login page:

```4d
```4d
Function authenticationError()
If (Session.info.type#"remote")
Web Form.enableState("wrongCredentials")
Expand All @@ -111,16 +122,31 @@ Function authenticationError()
<!-- REF #WebFormClass.setError().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|msg|string|->|Error message to display in the web form|
|msg|string|->|Error message to display in the web page|
<!-- END REF -->

#### Description

The `.setError()` function <!-- REF #WebFormClass.setError().Summary -->sends *msg* as an error message to the web form<!-- END REF -->.
The `.setError()` function <!-- REF #WebFormClass.setError().Summary -->sends *msg* as an error message to the web page<!-- END REF -->.

The function returns a response with a `200 OK` status and a `__WEBFORM` object in the body with a `__NOTIFICATION.message` property set to *msg* and a `__NOTIFICATION.type` set to "error".

For more information, please refer to the [`.setError()` description in the Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass#seterror).
#### Example

```4d
shared singleton Class constructor()
exposed function myError()

var myForm : 4D.WebForm
myForm:=web Form

myForm.setError("My error message")

```

If the [**Provide feedback**](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#providing-feedback) feature is enabled for the event, the *message* is automatically displayed as a red *toast* at the bottom of the Page and disappears automatically after 5 seconds:

![](../assets/en/API/webformClass-pic1.png)

### .setMessage()

Expand All @@ -129,62 +155,67 @@ For more information, please refer to the [`.setError()` description in the Qodl
<!-- REF #WebFormClass.setMessage().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|msg|string|->|Information message to display in the web form|
|msg|string|->|Information message to display in the web page|
<!-- END REF -->

#### Description

The `.setMessage()` function <!-- REF #WebFormClass.setMessage().Summary -->sends *msg* as an information message to the web form<!-- END REF -->.

For more information, please refer to the [`.setMessage()` description in the Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass#setmessage).
The `.setMessage()` function <!-- REF #WebFormClass.setMessage().Summary -->sends *msg* as an information message to the web page<!-- END REF -->.

The function returns a response with a `200 OK` status and a `__WEBFORM` object in the body with a `__NOTIFICATION.message` property set to *msg* and a `__NOTIFICATION.type` set to "message".

### .setWarning()
#### Example

<!-- REF #WebFormClass.setWarning().Syntax -->**.setWarning**( *msg* : string)<!-- END REF -->
```4d
shared singleton Class constructor()
exposed function myMessage()

<!-- REF #WebFormClass.setWarning().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|msg|string|->|Warning message to display in the web form|
<!-- END REF -->
var myForm : 4D.WebForm
myForm:=web Form

#### Description
myForm.setMessage("My information message")

The `.setWarning()` function <!-- REF #WebFormClass.setWarning().Summary -->sends *msg* as a warning message to the web form<!-- END REF -->.
```

For more information, please refer to the [`.setWarning()` description in the Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass#setwarning).
If the [**Provide feedback**](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#providing-feedback) feature is enabled for the event, the *message* is automatically displayed as a green *toast* at the bottom of the Page and disappears automatically after 5 seconds:

![](../assets/en/API/webformClass-pic2.png)

## Web Form
### .setWarning()

<!-- REF #_command_.Web Form.Syntax -->**Web Form** : 4D.WebForm<!-- END REF -->
<!-- REF #WebFormClass.setWarning().Syntax -->**.setWarning**( *msg* : string)<!-- END REF -->

<!-- REF #_command_.Web Form.Params -->
<!-- REF #WebFormClass.setWarning().Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|Result|4D.WebForm|<-|New `WebForm` proxy object
|msg|string|->|Warning message to display in the web page|
<!-- END REF -->

#### Description

The `Web Form` command <!-- REF #_command_.Web Form.Summary --> returns a `4D.WebForm` proxy object that allows you to interact with the web form<!-- END REF -->.
The `.setWarning()` function <!-- REF #WebFormClass.setWarning().Summary -->sends *msg* as a warning message to the web page<!-- END REF -->.

For more information, please refer to the [`webForm` command description in the Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass#webform).
The function returns a response with a `200 OK` status and a `__WEBFORM` object in the body with a `__NOTIFICATION.message` property set to *msg* and a `__NOTIFICATION.type` set to "warning".

#### Example

## Web Event
```4d
shared singleton Class constructor()
exposed function myWarning()

<!-- REF #_command_.Web Event.Syntax -->**Web Event** : Object<!-- END REF -->
var myForm : 4D.WebForm
myForm:=web Form

<!-- REF #_command_.Web Event.Params -->
|Parameter|Type||Description|
|---------|--- |:---:|------|
|Result|object|<-| object
<!-- END REF -->
myForm.setWarning("My warning message")

#### Description
```

If the [**Provide feedback**](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#providing-feedback) feature is enabled for the event, the *message* is automatically displayed as a yellow *toast* at the bottom of the web page and disappears automatically after 5 seconds:

![](../assets/en/API/webformClass-pic3.png)

The `Web Event` command <!-- REF #_command_.Web Event.Summary -->returns an object with information on a triggered event linked to a webform component<!-- END REF -->.
## See also

For more information, please refer to the [`webEvent` command description in the Qodly documentation](https://developer.qodly.com/docs/language/WebFormClass#webevent).
[Web Form](../commands/web-form.md)</br>
[Web Event](../commands/web-event.md)</br>
[WebFormItem class](../API/WebFormItemClass.md)
Loading
Loading