@evergis/react 4.0.151 → 4.0.153
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Dashboard/componentTypes.d.ts +1 -1
- package/dist/components/Dashboard/containers/StructuredDataContainer/hooks/useStructuredData.d.ts +3 -3
- package/dist/components/Dashboard/containers/StructuredDataContainer/hooks/useStructuredDataSave.d.ts +1 -1
- package/dist/components/Dashboard/containers/StructuredDataContainer/hooks/useStructuredDataSchema.d.ts +6 -2
- package/dist/components/Dashboard/types.d.ts +10 -0
- package/dist/index.js +15 -11
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +15 -11
- package/dist/react.esm.js.map +1 -1
- package/package.json +4 -4
|
@@ -432,7 +432,7 @@ export interface SlideshowContainerConfig extends Omit<ConfigContainerChild, "op
|
|
|
432
432
|
export interface SlideshowContainerProps extends Omit<ContainerProps, "elementConfig"> {
|
|
433
433
|
elementConfig?: SlideshowContainerConfig;
|
|
434
434
|
}
|
|
435
|
-
export type StructuredDataContainerOptions = Pick<ConfigOptions, "attributesDescription" | "relatedDataSource" | "filterName" | "editMode" | "expandable" | "expanded"> & ContainerBoxOptions;
|
|
435
|
+
export type StructuredDataContainerOptions = Pick<ConfigOptions, "attributesDescription" | "relatedDataSource" | "filterName" | "editMode" | "saveToLayer" | "expandable" | "expanded"> & ContainerBoxOptions;
|
|
436
436
|
export interface StructuredDataTableChild extends Omit<ConfigContainerChild, "id" | "type" | "options"> {
|
|
437
437
|
id: "data";
|
|
438
438
|
type?: "table";
|
package/dist/components/Dashboard/containers/StructuredDataContainer/hooks/useStructuredData.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ import { StructuredDataContextValue } from '../types';
|
|
|
7
7
|
* редакторов ячеек, добавления, удаления и кнопок сохранения. Состав строк закрывается отдельно:
|
|
8
8
|
* с `editOnly` у представления правка ячеек остаётся, а добавление и удаление уходят.
|
|
9
9
|
*
|
|
10
|
-
* Вид источника на права правки не
|
|
11
|
-
* принимает запись через features-API, источник без `layerName`
|
|
12
|
-
* url) не принимает ничего, и
|
|
10
|
+
* Вид источника на права правки не влияет. Адресат «Сохранить» — фильтр всегда, а слой — только
|
|
11
|
+
* с `options.saveToLayer`: слой принимает запись через features-API, источник без `layerName`
|
|
12
|
+
* (EQL, python-скрипт, внешний url) не принимает ничего, и опция у него уходит вхолостую.
|
|
13
13
|
*
|
|
14
14
|
* Значение фильтра читается так же, как его читают остальные потребители дашборда: выбор
|
|
15
15
|
* пользователя, а пока его нет — `defaultValue` из конфига фильтра. Общего стейта, залитого
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WidgetType } from '../../../types';
|
|
2
2
|
import { DraftRow, StructuredDataAttribute } from '../types';
|
|
3
3
|
/**
|
|
4
|
-
* Запись черновика: сперва в
|
|
4
|
+
* Запись черновика: сперва в слой (если задан — то есть включён `saveToLayer`), затем в фильтр.
|
|
5
5
|
*
|
|
6
6
|
* Порядок не случаен: потребители фильтра не должны увидеть данные, которых источник не принял.
|
|
7
7
|
* При ошибке черновик остаётся нетронутым — пользователь может исправить значения и повторить.
|
|
@@ -5,8 +5,12 @@ import { StructuredDataContainerConfig, WidgetType } from '../../../types';
|
|
|
5
5
|
* Источник резолвится через общий `useRelatedDataSourceAttributes`: он собирает layerInfo
|
|
6
6
|
* реального слоя, а для EQL/python-источников — синтетический из атрибутов ответа.
|
|
7
7
|
*
|
|
8
|
-
* `layerName`
|
|
9
|
-
*
|
|
8
|
+
* `layerName` — слой ЗАПИСИ, а не просто слой источника: он задан только при `saveToLayer` и
|
|
9
|
+
* источнике со слоем. Без опции правка уходит лишь в фильтр, и слой ни на что не влияет — ни на
|
|
10
|
+
* адресат «Сохранить», ни на ограничения схемы, ни на предупреждение при удалении строки.
|
|
11
|
+
*
|
|
12
|
+
* Берётся из конфига страницы, а не из загруженного источника: от него зависит, какие ячейки
|
|
13
|
+
* редактируемы, и до окончания загрузки схема не должна меняться.
|
|
10
14
|
*/
|
|
11
15
|
export declare const useStructuredDataSchema: (type: WidgetType, elementConfig?: StructuredDataContainerConfig) => {
|
|
12
16
|
schema: import('../types').StructuredDataAttribute[];
|
|
@@ -220,6 +220,16 @@ export interface ConfigLayoutOptions {
|
|
|
220
220
|
* контейнеров отношения не имеет.
|
|
221
221
|
*/
|
|
222
222
|
editMode?: boolean;
|
|
223
|
+
/**
|
|
224
|
+
* Запись правок `StructuredData` в слой источника. Результат «Сохранить» уходит в фильтр
|
|
225
|
+
* `filterName` всегда, а в слой — только с этой опцией и только если у `relatedDataSource`
|
|
226
|
+
* есть `layerName` (EQL, python-скрипт и внешний url записи не принимают).
|
|
227
|
+
*
|
|
228
|
+
* От неё же зависят ограничения схемы: id-атрибут, вычисляемые и нередактируемые в источнике
|
|
229
|
+
* поля закрыты для правки лишь тогда, когда правка действительно едет в слой. Без `editMode`
|
|
230
|
+
* опция ничего не делает.
|
|
231
|
+
*/
|
|
232
|
+
saveToLayer?: boolean;
|
|
223
233
|
/**
|
|
224
234
|
* Высота сетки задана снаружи и не редактируется: у корневой строки не рендерится ручка
|
|
225
235
|
* нижней границы. Нужен сеткам, растянутым на бокс, которым распоряжается внешняя
|
package/dist/index.js
CHANGED
|
@@ -11461,7 +11461,7 @@ const saveToSource = async ({ api, layerName, rows, schema, }) => {
|
|
|
11461
11461
|
};
|
|
11462
11462
|
|
|
11463
11463
|
/**
|
|
11464
|
-
* Запись черновика: сперва в
|
|
11464
|
+
* Запись черновика: сперва в слой (если задан — то есть включён `saveToLayer`), затем в фильтр.
|
|
11465
11465
|
*
|
|
11466
11466
|
* Порядок не случаен: потребители фильтра не должны увидеть данные, которых источник не принял.
|
|
11467
11467
|
* При ошибке черновик остаётся нетронутым — пользователь может исправить значения и повторить.
|
|
@@ -11510,9 +11510,9 @@ const getSourceAttributes = (attributesConfiguration) => {
|
|
|
11510
11510
|
* поле сервер всё равно не примет, поэтому конфиг может такую ячейку только ЗАПРЕТИТЬ, но не
|
|
11511
11511
|
* разрешить.
|
|
11512
11512
|
*
|
|
11513
|
-
*
|
|
11514
|
-
* строки уходят только в фильтр, и «нередактируемо»
|
|
11515
|
-
* Решает конфиг — по умолчанию правка разрешена.
|
|
11513
|
+
* Без записи в слой — источник без него (EQL-запрос, python-скрипт, внешний url) или слой без
|
|
11514
|
+
* `saveToLayer` — они не накладываются вовсе: строки уходят только в фильтр, и «нередактируемо»
|
|
11515
|
+
* там значит лишь «нельзя записать обратно». Решает конфиг — по умолчанию правка разрешена.
|
|
11516
11516
|
*/
|
|
11517
11517
|
const resolveIsEditable = ({ description, source, idAttribute, canWriteToSource }) => {
|
|
11518
11518
|
const sourceEditable = source && canWriteToSource
|
|
@@ -11582,18 +11582,22 @@ const buildStructuredDataSchema = ({ attributesDescription, attributesConfigurat
|
|
|
11582
11582
|
* Источник резолвится через общий `useRelatedDataSourceAttributes`: он собирает layerInfo
|
|
11583
11583
|
* реального слоя, а для EQL/python-источников — синтетический из атрибутов ответа.
|
|
11584
11584
|
*
|
|
11585
|
-
* `layerName`
|
|
11586
|
-
*
|
|
11585
|
+
* `layerName` — слой ЗАПИСИ, а не просто слой источника: он задан только при `saveToLayer` и
|
|
11586
|
+
* источнике со слоем. Без опции правка уходит лишь в фильтр, и слой ни на что не влияет — ни на
|
|
11587
|
+
* адресат «Сохранить», ни на ограничения схемы, ни на предупреждение при удалении строки.
|
|
11588
|
+
*
|
|
11589
|
+
* Берётся из конфига страницы, а не из загруженного источника: от него зависит, какие ячейки
|
|
11590
|
+
* редактируемы, и до окончания загрузки схема не должна меняться.
|
|
11587
11591
|
*/
|
|
11588
11592
|
const useStructuredDataSchema = (type, elementConfig) => {
|
|
11589
11593
|
const { dataSources } = useWidgetContext(type);
|
|
11590
|
-
const { attributesDescription, relatedDataSource } = elementConfig?.options || {};
|
|
11594
|
+
const { attributesDescription, relatedDataSource, saveToLayer } = elementConfig?.options || {};
|
|
11591
11595
|
const { layerInfo, dataSource, configDataSource } = useRelatedDataSourceAttributes({
|
|
11592
11596
|
type,
|
|
11593
11597
|
elementConfig,
|
|
11594
11598
|
dataSources,
|
|
11595
11599
|
});
|
|
11596
|
-
const layerName = configDataSource?.layerName;
|
|
11600
|
+
const layerName = React.useMemo(() => (saveToLayer ? configDataSource?.layerName : undefined), [configDataSource?.layerName, saveToLayer]);
|
|
11597
11601
|
const attributesConfiguration = React.useMemo(() => (relatedDataSource ? getAttributesConfiguration(layerInfo) : undefined), [layerInfo, relatedDataSource]);
|
|
11598
11602
|
const schema = React.useMemo(() => buildStructuredDataSchema({ attributesDescription, attributesConfiguration, canWriteToSource: !!layerName }), [attributesDescription, attributesConfiguration, layerName]);
|
|
11599
11603
|
return { schema, dataSource, layerName };
|
|
@@ -11606,9 +11610,9 @@ const useStructuredDataSchema = (type, elementConfig) => {
|
|
|
11606
11610
|
* редакторов ячеек, добавления, удаления и кнопок сохранения. Состав строк закрывается отдельно:
|
|
11607
11611
|
* с `editOnly` у представления правка ячеек остаётся, а добавление и удаление уходят.
|
|
11608
11612
|
*
|
|
11609
|
-
* Вид источника на права правки не
|
|
11610
|
-
* принимает запись через features-API, источник без `layerName`
|
|
11611
|
-
* url) не принимает ничего, и
|
|
11613
|
+
* Вид источника на права правки не влияет. Адресат «Сохранить» — фильтр всегда, а слой — только
|
|
11614
|
+
* с `options.saveToLayer`: слой принимает запись через features-API, источник без `layerName`
|
|
11615
|
+
* (EQL, python-скрипт, внешний url) не принимает ничего, и опция у него уходит вхолостую.
|
|
11612
11616
|
*
|
|
11613
11617
|
* Значение фильтра читается так же, как его читают остальные потребители дашборда: выбор
|
|
11614
11618
|
* пользователя, а пока его нет — `defaultValue` из конфига фильтра. Общего стейта, залитого
|