You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/how-to/en/How-to_Custom_React_views.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ The value form selects the renderer: a string literal matching `[A-Z][A-Za-z0-9_
28
28
29
29
### The component
30
30
31
-
`OrderBoard` is a named export from a `.jsx` module under `src/main/web`; how the module is compiled and registered is covered in [How-to: Custom client JS modules](How-to_Custom_client_JS_modules.md). The examples here use JSX. For a project [without the build](How-to_Custom_client_JS_modules.md#without-the-build), ship the same component as a `.jsx` file — it is transformed on the server when served; `import`is not available there, so the component works against the platform-provided `window.React` — or write it with `React.createElement` in a plain `.js`. Either file is placed under `src/main/resources/web/init` (auto-loaded) or under `src/main/resources/web` and registered with `onWebClientInit`.
31
+
`OrderBoard` is a named export from a `.jsx` module under `src/main/web`; how the module is compiled and registered is covered in [How-to: Custom client JS modules](How-to_Custom_client_JS_modules.md). The examples here use JSX. For a project [without the build](How-to_Custom_client_JS_modules.md#without-the-build), ship the same component as a `.jsx` file — it is transformed on the server when served; `import`and `export` are not available there, so the `export` keyword is dropped and the component works against the platform-provided `window.React` — or write it with `React.createElement` in a plain `.js`. Either file is placed under `src/main/resources/web/init` (auto-loaded) or under `src/main/resources/web` and registered with `onWebClientInit`.
32
32
33
33
The component is a plain function that receives `props.data` and `props.controller`:
Copy file name to clipboardExpand all lines: docs/how-to/en/How-to_Custom_view_controller.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -123,7 +123,7 @@ Passing a handle (`otherRow.objects`) as an FK value silently sets it to `NULL`,
123
123
124
124
The format is the same in the read direction: an object property's value arrives in the data row as this same numeric id, so it can be compared with the target row's `row.key` (in a single-object group) or passed back as an FK value without conversion.
125
125
126
-
If the edited property is marked `APPLY` on the form (the edit is applied at once), `changeProperty` commits the change immediately. For a simple edit from a view — a move, a resize, an in-place value edit — this is preferable to a separate server action; the server action (`exec`) stays for what a property change cannot express: creating an object (`NEW`), multi-step logic, opening a form.
126
+
Like a user edit in the standard table, the change is made in the form's [change session](../paradigm/Change_sessions.md): the view sees the new value in `props.data` at once, while it reaches the database when the session is applied — with the Save button or an action with the [`APPLY`](../language/APPLY_operator.md) operator. If the edited property is marked `APPLY` on the form (the edit is applied at once), `changeProperty` commits the change immediately. For a simple edit from a view — a move, a resize, an in-place value edit — this is preferable to a separate server action; the server action (`exec`) stays for what a property change cannot express: creating an object (`NEW`), multi-step logic, opening a form.
127
127
128
128
```js
129
129
// move an object to another parent and edit a primitive in one call:
Copy file name to clipboardExpand all lines: docs/how-to/ru/How-to_Custom_React_views.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ DESIGN orders {
28
28
29
29
### Компонент
30
30
31
-
`OrderBoard` — именованный экспорт из модуля `.jsx` в каталоге `src/main/web`; как этот модуль компилируется и регистрируется, описано в [How-to: Пользовательские клиентские JS-модули](How-to_Custom_client_JS_modules.md). Примеры здесь используют JSX. Для проекта [без сборки](How-to_Custom_client_JS_modules.md#without-the-build) поместите тот же компонент в файл `.jsx` — он преобразуется на сервере при отдаче; `import` там недоступен, поэтому компонент работает с предоставляемым платформой `window.React` — либо напишите его через `React.createElement` в обычном `.js`. Любой из этих файлов кладётся в `src/main/resources/web/init` (автозагрузка) или в `src/main/resources/web` с регистрацией через `onWebClientInit`.
31
+
`OrderBoard` — именованный экспорт из модуля `.jsx` в каталоге `src/main/web`; как этот модуль компилируется и регистрируется, описано в [How-to: Пользовательские клиентские JS-модули](How-to_Custom_client_JS_modules.md). Примеры здесь используют JSX. Для проекта [без сборки](How-to_Custom_client_JS_modules.md#without-the-build) поместите тот же компонент в файл `.jsx` — он преобразуется на сервере при отдаче; `import` и `export` там недоступны, поэтому ключевое слово `export` опускается, а компонент работает с предоставляемым платформой `window.React` — либо напишите его через `React.createElement` в обычном `.js`. Любой из этих файлов кладётся в `src/main/resources/web/init` (автозагрузка) или в `src/main/resources/web` с регистрацией через `onWebClientInit`.
32
32
33
33
Компонент — это обычная функция, получающая `props.data` и `props.controller`:
В обратную сторону формат тот же: значение объектного свойства приезжает в строку данных этим же числовым id, поэтому его можно сравнить с `row.key` целевой строки (в группе с одним объектом) или передать обратно значением FK без преобразований.
125
125
126
-
Если редактируемое свойство помечено на форме модификатором `APPLY` (правка применяется сразу), `changeProperty` фиксирует изменение немедленно. Для простой правки из представления — перенос, изменение размера, правка значения по месту — это предпочтительнее отдельного серверного действия; серверное действие (`exec`) остаётся для того, что правкой свойства не выражается: создания объекта (`NEW`), многошаговой логики, открытия формы.
126
+
Как и правка пользователя в штатной таблице, изменение выполняется в [сессии изменений](../paradigm/Change_sessions.md) формы: представление сразу видит новое значение в `props.data`, а в базу данных оно попадает при применении сессии — кнопкой «Сохранить» либо действием с оператором [`APPLY`](../language/APPLY_operator.md). Если редактируемое свойство помечено на форме модификатором `APPLY` (правка применяется сразу), `changeProperty` фиксирует изменение немедленно. Для простой правки из представления — перенос, изменение размера, правка значения по месту — это предпочтительнее отдельного серверного действия; серверное действие (`exec`) остаётся для того, что правкой свойства не выражается: создания объекта (`NEW`), многошаговой логики, открытия формы.
127
127
128
128
```js
129
129
// перенос объекта к другому родителю и правка примитива одним вызовом:
Copy file name to clipboardExpand all lines: docs/paradigm/en/System_Time.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,7 +72,7 @@ The signatures below use the built-in time classes `DATE`, `TIME`, `DATETIME` (w
72
72
|`subtractSeconds[DATETIME, LONG]` / `subtractSeconds[ZDATETIME, LONG]`| subtract the given number of seconds from a `DATETIME` / `ZDATETIME`, return the same class; PG `$1 - $2 * interval '1 second'`|
73
73
|`subtractSeconds[TIME, TIME]` / `subtractSeconds[DATETIME, DATETIME]` / `subtractSeconds[ZDATETIME, ZDATETIME]`| difference of two same-class values in seconds as `INTEGER`, computed as the **second** argument minus the **first** (`subtractSeconds(a, b) = b - a`, positive when `b` is the later value); PG `extract(epoch from (b - a))`|
74
74
|`daysBetweenDates[DATE, DATE]`| difference of two dates in days as `INTEGER`, computed as the **first** argument minus the **second** (`daysBetweenDates(a, b) = a - b`, positive when `a` is the later date); PG `$1 - $2`. Note the operand order is the opposite of `subtractSeconds`|
75
-
|`daysInclBetweenDates[DATE, DATE]`| inclusive day count between two dates, counting both ends: the **second** argument minus the **first**, plus 1 (`daysInclBetweenDates(a, b) = b - a + 1`) — the opposite operand order from`daysBetweenDates[DATE, DATE]`, since it calls it with the arguments swapped|
75
+
|`daysBetweenDatesIncl[DATE, DATE]`| inclusive day count between two dates, counting both ends: the **first** argument minus the **second**, plus 1 (`daysBetweenDatesIncl(a, b) = a - b + 1`) — the same operand order as`daysBetweenDates[DATE, DATE]`|
76
76
|`secondsBetweenDates[DATETIME, DATETIME]`| difference of two moments in seconds as `INTEGER`, computed as the **first** argument minus the **second** (`secondsBetweenDates(a, b) = a - b`, positive when `a` is the later moment); PG `extract(epoch from $1) - extract(epoch from $2)`|
77
77
|`dateTimeToDateTime[DATE, TIME]`| combines a `DATE` and a `TIME` into a `DATETIME` through a text round-trip; PG `to_timestamp(<date> \|\| <time>, 'YYYY-MM-DDHH24:MI:SS.MS')::timestamp`|
78
78
|`dateFromYearWeekDay[INTEGER, INTEGER, INTEGER]`| builds a `DATE` from year, ISO-8601 week number, and ISO day of week (1 = Monday … 7 = Sunday); PG `to_date($1 \|\| ' ' \|\| $2 \|\| ' ' \|\| $3, 'IYYY IW ID')`|
Copy file name to clipboardExpand all lines: docs/paradigm/ru/System_Time.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,7 +72,7 @@ title: 'Time'
72
72
|`subtractSeconds[DATETIME, LONG]` / `subtractSeconds[ZDATETIME, LONG]`| вычитают указанное число секунд из `DATETIME` / `ZDATETIME`, возвращают тот же класс; PG `$1 - $2 * interval '1 second'`|
73
73
|`subtractSeconds[TIME, TIME]` / `subtractSeconds[DATETIME, DATETIME]` / `subtractSeconds[ZDATETIME, ZDATETIME]`| разность двух значений одного класса в секундах как `INTEGER`, считается как **второй** аргумент минус **первый** (`subtractSeconds(a, b) = b - a`, положительно, когда `b` — более поздняя величина); PG `extract(epoch from (b - a))`|
74
74
|`daysBetweenDates[DATE, DATE]`| разность двух дат в днях как `INTEGER`, считается как **первый** аргумент минус **второй** (`daysBetweenDates(a, b) = a - b`, положительно, когда `a` — более поздняя дата); PG `$1 - $2`. Порядок операндов обратен `subtractSeconds`|
75
-
|`daysInclBetweenDates[DATE, DATE]`| число дней между двумя датами с учётом обоих концов: **второй** аргумент минус **первый**, плюс 1 (`daysInclBetweenDates(a, b) = b - a + 1`) — порядок операндов обратен `daysBetweenDates[DATE, DATE]`, так как оно вызывается с переставленными аргументами|
75
+
|`daysBetweenDatesIncl[DATE, DATE]`| число дней между двумя датами с учётом обоих концов: **первый** аргумент минус **второй**, плюс 1 (`daysBetweenDatesIncl(a, b) = a - b + 1`) — тот же порядок операндов, что у `daysBetweenDates[DATE, DATE]`|
76
76
|`secondsBetweenDates[DATETIME, DATETIME]`| разность двух моментов в секундах как `INTEGER`, считается как **первый** аргумент минус **второй** (`secondsBetweenDates(a, b) = a - b`, положительно, когда `a` — более поздний момент); PG `extract(epoch from $1) - extract(epoch from $2)`|
77
77
|`dateTimeToDateTime[DATE, TIME]`| собирает `DATETIME` из `DATE` и `TIME` через приведение текста; PG `to_timestamp(<дата> \|\| <время>, 'YYYY-MM-DDHH24:MI:SS.MS')::timestamp`|
78
78
|`dateFromYearWeekDay[INTEGER, INTEGER, INTEGER]`| собирает `DATE` по году, номеру недели ISO 8601 и дню недели ISO (1 = понедельник … 7 = воскресенье); PG `to_date($1 \|\| ' ' \|\| $2 \|\| ' ' \|\| $3, 'IYYY IW ID')`|
0 commit comments