@evergis/react 4.0.74 → 4.0.76
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/containers/FiltersContainer/components/TreeFilter.d.ts +3 -0
- package/dist/components/Dashboard/containers/FiltersContainer/hooks/useTreeFilter.d.ts +21 -0
- package/dist/components/Dashboard/containers/FiltersContainer/hooks/useTreeFilterData.d.ts +11 -0
- package/dist/components/Dashboard/containers/FiltersContainer/hooks/useTreeFilterSearch.d.ts +17 -0
- package/dist/components/Dashboard/containers/FiltersContainer/hooks/useTreeFilterSelection.d.ts +9 -0
- package/dist/components/Dashboard/containers/FiltersContainer/hooks/useTreeFilterTree.d.ts +15 -0
- package/dist/components/Dashboard/containers/FiltersContainer/types.d.ts +6 -0
- package/dist/components/Dashboard/containers/FiltersContainer/utils/treeFilterUtils.d.ts +25 -0
- package/dist/components/Dashboard/types.d.ts +18 -2
- package/dist/components/Dashboard/utils/applyTreeFilterToCondition.d.ts +12 -0
- package/dist/components/Dashboard/utils/getSelectedFilterValue.d.ts +1 -1
- package/dist/components/Dashboard/utils/index.d.ts +1 -0
- package/dist/index.js +402 -33
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +402 -35
- package/dist/react.esm.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ConfigContainerChild, WidgetType } from '../../../types';
|
|
2
|
+
export declare const useTreeFilter: (type: WidgetType, filter: ConfigContainerChild) => {
|
|
3
|
+
width: string;
|
|
4
|
+
placeholder: string;
|
|
5
|
+
multiSelect: boolean;
|
|
6
|
+
loading: boolean;
|
|
7
|
+
data: import('@evergis/uilib-gl').TreeItemProps[];
|
|
8
|
+
setData: import('react').Dispatch<import('react').SetStateAction<import('@evergis/uilib-gl').TreeItemProps[]>>;
|
|
9
|
+
expanded: import('@evergis/uilib-gl').TreeId[];
|
|
10
|
+
setExpanded: import('react').Dispatch<import('react').SetStateAction<import('@evergis/uilib-gl').TreeId[]>>;
|
|
11
|
+
onLoadChildren: (item: import('@evergis/uilib-gl').TreeItemProps) => Promise<import('@evergis/uilib-gl').PartialLoadData<import('../types').TreeNodeData>>;
|
|
12
|
+
selectedIds: Set<import('@evergis/uilib-gl').TreeId>;
|
|
13
|
+
selectedCount: number;
|
|
14
|
+
selectedLabel: string;
|
|
15
|
+
searchValue: string;
|
|
16
|
+
onSearchChange: (value: string) => void;
|
|
17
|
+
onOpen: () => Promise<void>;
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
onToggleSelect: (item: any) => void;
|
|
20
|
+
onReset: () => void;
|
|
21
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PartialLoadData, TreeId, TreeItemProps } from '@evergis/uilib-gl';
|
|
2
|
+
import { WidgetType } from '../../../types';
|
|
3
|
+
import { TreeNodeData } from '../types';
|
|
4
|
+
export declare const useTreeFilterData: (type: WidgetType, filterName: string) => {
|
|
5
|
+
configFilter: import('../../../types').ConfigFilter;
|
|
6
|
+
layerName: string;
|
|
7
|
+
loadLevelOne: () => Promise<TreeItemProps[]>;
|
|
8
|
+
loadChildren: (item: TreeItemProps) => Promise<PartialLoadData<TreeNodeData>>;
|
|
9
|
+
searchNodes: (query: string) => Promise<TreeItemProps[]>;
|
|
10
|
+
loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
|
|
2
|
+
type UseTreeFilterSearchParams = {
|
|
3
|
+
searchNodes: (query: string) => Promise<TreeItemProps[]>;
|
|
4
|
+
loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>;
|
|
5
|
+
};
|
|
6
|
+
export declare const useTreeFilterSearch: ({ searchNodes, loadByIds }: UseTreeFilterSearchParams) => {
|
|
7
|
+
searchValue: string;
|
|
8
|
+
isSearchActive: boolean;
|
|
9
|
+
searching: boolean;
|
|
10
|
+
searchData: TreeItemProps[];
|
|
11
|
+
setSearchData: import('react').Dispatch<import('react').SetStateAction<TreeItemProps[]>>;
|
|
12
|
+
searchExpanded: TreeId[];
|
|
13
|
+
setSearchExpanded: import('react').Dispatch<import('react').SetStateAction<TreeId[]>>;
|
|
14
|
+
onSearchChange: (value: string) => void;
|
|
15
|
+
resetSearch: () => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
package/dist/components/Dashboard/containers/FiltersContainer/hooks/useTreeFilterSelection.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
|
|
2
|
+
import { ConfigFilter, WidgetType } from '../../../types';
|
|
3
|
+
export declare const useTreeFilterSelection: (type: WidgetType, filterName: string, configFilter?: ConfigFilter) => {
|
|
4
|
+
selected: Map<TreeId, number>;
|
|
5
|
+
selectedIds: Set<TreeId>;
|
|
6
|
+
selectedLabel: string;
|
|
7
|
+
onToggleSelect: (item: TreeItemProps, multiSelect?: boolean) => void;
|
|
8
|
+
onReset: () => void;
|
|
9
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
|
|
2
|
+
type UseTreeFilterTreeParams = {
|
|
3
|
+
selected: Map<TreeId, number>;
|
|
4
|
+
loadLevelOne: () => Promise<TreeItemProps[]>;
|
|
5
|
+
loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>;
|
|
6
|
+
};
|
|
7
|
+
export declare const useTreeFilterTree: ({ selected, loadLevelOne, loadByIds }: UseTreeFilterTreeParams) => {
|
|
8
|
+
treeData: TreeItemProps[];
|
|
9
|
+
setTreeData: import('react').Dispatch<import('react').SetStateAction<TreeItemProps[]>>;
|
|
10
|
+
treeExpanded: TreeId[];
|
|
11
|
+
setTreeExpanded: import('react').Dispatch<import('react').SetStateAction<TreeId[]>>;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
onOpen: () => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TreeId } from '@evergis/uilib-gl';
|
|
1
2
|
import { ConfigContainer, ConfigContainerChild, WidgetType } from '../../types';
|
|
2
3
|
export type FilterOption = {
|
|
3
4
|
text: string;
|
|
@@ -5,6 +6,11 @@ export type FilterOption = {
|
|
|
5
6
|
min: string | number;
|
|
6
7
|
max: string | number;
|
|
7
8
|
};
|
|
9
|
+
/** Доменные данные узла иерархического фильтра "tree", хранятся в `TreeItemProps.data`. */
|
|
10
|
+
export type TreeNodeData = {
|
|
11
|
+
parentId: TreeId | null;
|
|
12
|
+
level: number;
|
|
13
|
+
};
|
|
8
14
|
export type WidgetFilterProps = {
|
|
9
15
|
type: WidgetType;
|
|
10
16
|
filter: ConfigContainerChild;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TreeId, TreeItemProps } from '@evergis/uilib-gl';
|
|
2
|
+
import { TreeFilterValue } from '../../../types';
|
|
3
|
+
export declare const buildLevelOneCondition: (attributeLevel: string) => string;
|
|
4
|
+
export declare const buildChildrenCondition: (attributeParentValue: string, parentId: TreeId) => string;
|
|
5
|
+
export declare const buildSearchCondition: (attributeAlias: string, query: string) => string;
|
|
6
|
+
export declare const buildIdsCondition: (attributeValue: string, ids: Array<string | number>) => string;
|
|
7
|
+
/** Группирует выбранные id по уровню в объектное значение фильтра `{ l{N}: [ids] }`. */
|
|
8
|
+
export declare const buildFilterValue: (selected: Map<TreeId, number>) => TreeFilterValue;
|
|
9
|
+
/** Разбирает объектное значение фильтра в карту `id → level`. */
|
|
10
|
+
export declare const parseFilterValue: (value?: TreeFilterValue) => Map<TreeId, number>;
|
|
11
|
+
/** Стабильная сериализация выбора для сравнения (порядок не важен). */
|
|
12
|
+
export declare const serializeSelection: (selected: Map<TreeId, number>) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Дозапрашивает цепочку предков вверх по `parentId` уровень за уровнем (батч `id in (...)`),
|
|
15
|
+
* пока не достигнет уровня 1. Возвращает исходные узлы вместе с предками.
|
|
16
|
+
*/
|
|
17
|
+
export declare const collectAncestors: (nodes: TreeItemProps[], loadByIds: (ids: TreeId[]) => Promise<TreeItemProps[]>) => Promise<TreeItemProps[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Собирает плоский набор узлов в дерево по `parentId`. Узлы с подгруженными потомками
|
|
20
|
+
* раскрываются; листья-папки без потомков получают `children = null` (ленивая подгрузка).
|
|
21
|
+
*/
|
|
22
|
+
export declare const assembleTree: (nodes: TreeItemProps[]) => {
|
|
23
|
+
roots: TreeItemProps[];
|
|
24
|
+
expanded: TreeId[];
|
|
25
|
+
};
|
|
@@ -329,6 +329,14 @@ export interface ConfigFilter {
|
|
|
329
329
|
attributeValue?: string;
|
|
330
330
|
attributeMin?: string;
|
|
331
331
|
attributeMax?: string;
|
|
332
|
+
/** Атрибут id родителя — для иерархического фильтра "tree". */
|
|
333
|
+
attributeParentValue?: string;
|
|
334
|
+
/** Атрибут числового уровня (корень = 1) — для "tree". */
|
|
335
|
+
attributeLevel?: string;
|
|
336
|
+
/** Атрибут-флаг наличия детей (показ шеврона) — для "tree". */
|
|
337
|
+
attributeHasChildren?: string;
|
|
338
|
+
/** Единый лимит на запросы дерева (дети уровня, поиск) — для "tree". */
|
|
339
|
+
limit?: number;
|
|
332
340
|
valueType?: ConfigFilterValueType;
|
|
333
341
|
resetFilters?: string[];
|
|
334
342
|
}
|
|
@@ -345,11 +353,19 @@ export interface ChipOption {
|
|
|
345
353
|
color?: string;
|
|
346
354
|
icon?: string;
|
|
347
355
|
}
|
|
356
|
+
/**
|
|
357
|
+
* Значение иерархического фильтра "tree": объект «уровень → массив id».
|
|
358
|
+
* Ключи вида `l{N}` (l1, l3, ...); уровни без выбранных элементов не включаются.
|
|
359
|
+
* Пример: `{ l1: [1, 2], l3: [1023] }`.
|
|
360
|
+
*/
|
|
361
|
+
export type TreeFilterValue = Record<string, Array<string | number>>;
|
|
348
362
|
export interface SelectedFilter {
|
|
349
|
-
value: string | number | string[] | number[] | Date | Date[];
|
|
363
|
+
value: string | number | string[] | number[] | Date | Date[] | TreeFilterValue;
|
|
350
364
|
min?: string | number | Date;
|
|
351
365
|
max?: string | number | Date;
|
|
352
366
|
}
|
|
367
|
+
/** Значение фильтра без объектного варианта "tree" — для скалярных/массивных фильтров. */
|
|
368
|
+
export type ScalarFilterValue = Exclude<SelectedFilter["value"], TreeFilterValue>;
|
|
353
369
|
export interface ConfigLayer {
|
|
354
370
|
name: string;
|
|
355
371
|
opacity?: number;
|
|
@@ -412,7 +428,7 @@ export interface ConfigContainer {
|
|
|
412
428
|
options?: ConfigOptions;
|
|
413
429
|
header?: ConfigContainerHeader;
|
|
414
430
|
}
|
|
415
|
-
export type FilterType = "checkbox" | "rangeNumber" | "rangeDate" | "text" | "dropdown" | "barChart" | "chips";
|
|
431
|
+
export type FilterType = "checkbox" | "rangeNumber" | "rangeDate" | "text" | "dropdown" | "barChart" | "chips" | "tree";
|
|
416
432
|
/**
|
|
417
433
|
* Литеральный union значений {@link ConfigContainerChild.type}.
|
|
418
434
|
*
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SelectedFilter, TreeFilterValue } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Объектное значение иерархического фильтра "tree" («уровень → массив id»),
|
|
4
|
+
* в отличие от скалярных/массивных значений остальных фильтров.
|
|
5
|
+
*/
|
|
6
|
+
export declare const isTreeFilterValue: (value?: SelectedFilter["value"]) => value is TreeFilterValue;
|
|
7
|
+
/**
|
|
8
|
+
* Подставляет плейсхолдеры уровней `%name.l{N}` значениями id соответствующего уровня
|
|
9
|
+
* (формат `[id1,id2,...]` для оператора IN). Уровни, отсутствующие в значении (или пустые),
|
|
10
|
+
* не подставляются — плейсхолдер остаётся нетронутым, как и любой пустой `%`-плейсхолдер.
|
|
11
|
+
*/
|
|
12
|
+
export declare const applyTreeFilterToCondition: (condition: string, name: string, value: TreeFilterValue, isSingle?: boolean) => string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { SelectedFilter, SelectedFilters } from '../types';
|
|
2
|
-
export declare const getSelectedFilterValue: (filterName: string, selectedFilters: SelectedFilters, defaultValue: SelectedFilter["value"]) => string | number | Date | (string | number | Date)[];
|
|
2
|
+
export declare const getSelectedFilterValue: (filterName: string, selectedFilters: SelectedFilters, defaultValue: SelectedFilter["value"]) => string | number | Date | import('../types').TreeFilterValue | (string | number | Date | import('../types').TreeFilterValue)[];
|
|
@@ -5,6 +5,7 @@ export * from './checkEqualOrIncludes';
|
|
|
5
5
|
export * from './checkIsLoading';
|
|
6
6
|
export * from './createConfigLayer';
|
|
7
7
|
export * from './createConfigPage';
|
|
8
|
+
export * from './applyTreeFilterToCondition';
|
|
8
9
|
export * from './createNewPageId';
|
|
9
10
|
export * from './eqlParametersToPayload';
|
|
10
11
|
export * from './formatChartRelatedValue';
|