eservices-back-core 2.0.34 → 2.0.36
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/Server.d.ts +0 -2
- package/dist/Server.d.ts.map +1 -1
- package/dist/Server.js.map +1 -1
- package/dist/auth/use-auth.d.ts +1 -2
- package/dist/auth/use-auth.d.ts.map +1 -1
- package/dist/middleware/auth-middleware.d.ts +1 -1
- package/dist/model/Filter.d.ts +135 -0
- package/dist/model/Filter.d.ts.map +1 -0
- package/dist/model/Filter.js +236 -0
- package/dist/model/Filter.js.map +1 -0
- package/dist/model/filter-config.d.ts +69 -0
- package/dist/model/filter-config.d.ts.map +1 -0
- package/dist/model/filter-config.js +146 -0
- package/dist/model/filter-config.js.map +1 -0
- package/dist/services/list-setting-service.d.ts +5 -3
- package/dist/services/list-setting-service.d.ts.map +1 -1
- package/dist/services/list-setting-service.js +111 -101
- package/dist/services/list-setting-service.js.map +1 -1
- package/dist/socket/events/entity_read.d.ts +8 -0
- package/dist/socket/events/entity_read.d.ts.map +1 -1
- package/dist/socket/events/entity_read.js +20 -0
- package/dist/socket/events/entity_read.js.map +1 -1
- package/dist/store/custom-filters-store.d.ts +7 -0
- package/dist/store/custom-filters-store.d.ts.map +1 -0
- package/dist/store/custom-filters-store.js +29 -0
- package/dist/store/custom-filters-store.js.map +1 -0
- package/dist/store/filters-store.d.ts +7 -0
- package/dist/store/filters-store.d.ts.map +1 -0
- package/dist/store/filters-store.js +28 -0
- package/dist/store/filters-store.js.map +1 -0
- package/dist/templates/error.html +4 -3
- package/dist/utils/Filter.d.ts +1 -0
- package/dist/utils/Filter.d.ts.map +1 -1
- package/dist/utils/Filter.js +1 -0
- package/dist/utils/Filter.js.map +1 -1
- package/dist/utils/get-extend-customer-filters.d.ts +1 -0
- package/dist/utils/get-extend-customer-filters.d.ts.map +1 -1
- package/dist/utils/get-extend-customer-filters.js +2 -1
- package/dist/utils/get-extend-customer-filters.js.map +1 -1
- package/dist/utils/get-required-attribute-values.d.ts +11 -0
- package/dist/utils/get-required-attribute-values.d.ts.map +1 -0
- package/dist/utils/get-required-attribute-values.js +46 -0
- package/dist/utils/get-required-attribute-values.js.map +1 -0
- package/dist/utils/use-config.d.ts.map +1 -1
- package/dist/utils/use-config.js +42 -17
- package/dist/utils/use-config.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const use_logger_1 = require("../logger/use-logger");
|
|
4
|
+
function wrapString(str) {
|
|
5
|
+
return typeof str === 'string' ? `'${str}'` : `${str}`;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @description Класс предназначенный для работы с фильтрами. Предоставляет одиночные static методы
|
|
9
|
+
* при помощи, которых можно самостоятельно создать фильтр или полноценный механизм задачи фильтра
|
|
10
|
+
* через объект(Более краткий и удобный) через new.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const filter = new Filter([
|
|
14
|
+
* ["eq", ["Name", "Jack"] ],
|
|
15
|
+
* ["eq", ["Age", "@age"] ]
|
|
16
|
+
* ]);
|
|
17
|
+
* const data = { age: 25 }
|
|
18
|
+
* const strFilter = filter.generate(data);
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const filter = new Filter([
|
|
22
|
+
* "or",
|
|
23
|
+
* [
|
|
24
|
+
* ["in", ["Status", ["A", "D"] ] ],
|
|
25
|
+
* ["in", ["Type", "$userType" ] ]
|
|
26
|
+
* ]
|
|
27
|
+
* ])
|
|
28
|
+
* const data = {
|
|
29
|
+
* userType: ["User", "Person"]
|
|
30
|
+
* }
|
|
31
|
+
* const strFilter = filter.generate(data)
|
|
32
|
+
*/
|
|
33
|
+
class Filter {
|
|
34
|
+
get valid() {
|
|
35
|
+
return !!this.compileFn;
|
|
36
|
+
}
|
|
37
|
+
addRequiredArgument(name) {
|
|
38
|
+
this.requiredArguments.push(name);
|
|
39
|
+
}
|
|
40
|
+
constructor(value) {
|
|
41
|
+
this.compileFn = null;
|
|
42
|
+
/**
|
|
43
|
+
* @description Массив обзятальных полей, еоторый заправшиваются в конфигурации фильтра.
|
|
44
|
+
*/
|
|
45
|
+
this.requiredArguments = [];
|
|
46
|
+
try {
|
|
47
|
+
this.compileFn = this.compileItem(value);
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
use_logger_1.Logger.error(e);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
generate(data = {}) {
|
|
54
|
+
return this.compileFn(data);
|
|
55
|
+
}
|
|
56
|
+
compileItem(item) {
|
|
57
|
+
if (Array.isArray(item)) {
|
|
58
|
+
return (Filter.AVAILABLE_OPERATION.includes(item[0]))
|
|
59
|
+
? this.compileExpressionByType(item[0], item[1])
|
|
60
|
+
: this.compileExpressionByType('and', item);
|
|
61
|
+
}
|
|
62
|
+
else if (typeof item === 'string') {
|
|
63
|
+
return () => item;
|
|
64
|
+
}
|
|
65
|
+
else if (this.isValidObjectExpression(item))
|
|
66
|
+
return this.compileExpressionByType(item.operation, item.arguments);
|
|
67
|
+
else {
|
|
68
|
+
throw new Error(`Unknown filter item ${JSON.stringify(item)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
compileExpressionByType(type, data) {
|
|
72
|
+
switch (type) {
|
|
73
|
+
case 'and':
|
|
74
|
+
case 'or': {
|
|
75
|
+
if (!Array.isArray(data))
|
|
76
|
+
throw new Error(`Filter Config: with "and" should be provided array data.`);
|
|
77
|
+
return this.compileArray(type, data);
|
|
78
|
+
}
|
|
79
|
+
case 'eq': return this.compileEqual(data[0], data[1]);
|
|
80
|
+
case 'in': return this.compileInclude(data[0], data[1]);
|
|
81
|
+
default: throw new Error(`filter-config: Unknown operation '${type}'`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
compileArray(type, data) {
|
|
85
|
+
const arrayCompileItems = data.map(item => this.compileItem(item));
|
|
86
|
+
return (compileValues) => '( ' + arrayCompileItems.map(fn => fn(compileValues)).join(` ${type} `) + ' )';
|
|
87
|
+
}
|
|
88
|
+
compileEqual(field, value) {
|
|
89
|
+
this.checkForRequiredValue(value);
|
|
90
|
+
return (compileValues) => Filter.eq(field, this.convertValue(value, compileValues));
|
|
91
|
+
}
|
|
92
|
+
compileInclude(field, value) {
|
|
93
|
+
this.checkForRequiredValue(value);
|
|
94
|
+
return (compileValues) => Filter.in(field, this.convertValue(value, compileValues));
|
|
95
|
+
}
|
|
96
|
+
isRequiredValue(value) {
|
|
97
|
+
if (typeof value !== 'string')
|
|
98
|
+
return false;
|
|
99
|
+
return value.startsWith('@');
|
|
100
|
+
}
|
|
101
|
+
isValidObjectExpression(data) {
|
|
102
|
+
if (!(typeof data === 'object' && data !== null))
|
|
103
|
+
return false;
|
|
104
|
+
return Filter.AVAILABLE_OPERATION.includes(data.operation);
|
|
105
|
+
}
|
|
106
|
+
checkForRequiredValue(value) {
|
|
107
|
+
if (!this.isRequiredValue(value))
|
|
108
|
+
return;
|
|
109
|
+
this.addRequiredArgument(value);
|
|
110
|
+
}
|
|
111
|
+
convertValue(value, compileValues) {
|
|
112
|
+
if (typeof value !== 'string')
|
|
113
|
+
return value;
|
|
114
|
+
return compileValues[value] || value;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @description Not Equal(!==).
|
|
118
|
+
* @param name
|
|
119
|
+
* @param values
|
|
120
|
+
*/
|
|
121
|
+
static notEq(name, values) {
|
|
122
|
+
return `@${name} nq ${wrapString(values)}`;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @description Equal(===)
|
|
126
|
+
* @param name
|
|
127
|
+
* @param values
|
|
128
|
+
*/
|
|
129
|
+
static eq(name, values) {
|
|
130
|
+
if (Array.isArray(values))
|
|
131
|
+
return Filter.in(name, values);
|
|
132
|
+
return `@${name} eq ${wrapString(values)}`;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @description Include.
|
|
136
|
+
* @param name
|
|
137
|
+
* @param values
|
|
138
|
+
*/
|
|
139
|
+
static in(name, values) {
|
|
140
|
+
const parsedValues = values.map(wrapString).join(', ');
|
|
141
|
+
return `@${name} in (${parsedValues})`;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
Filter.AVAILABLE_OPERATION = ['and', 'or', 'eq', 'nq', 'in'];
|
|
145
|
+
exports.default = Filter;
|
|
146
|
+
//# sourceMappingURL=filter-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-config.js","sourceRoot":"","sources":["../../src/model/filter-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export default class ListSettingService {
|
|
|
9
9
|
* @description Метод для получения расширенной информации о полей. Возвращает дополнительные настройки для ячейки по
|
|
10
10
|
* имени сущности полю в ней.
|
|
11
11
|
*/
|
|
12
|
-
getCellReferenceInformation(entity: string, fieldName?: string):
|
|
12
|
+
getCellReferenceInformation(entity: string, fieldName?: string): {
|
|
13
13
|
type: "Entity" | "Integer" | "Guid" | "String" | "Decimal" | "DateTime" | "List" | "Boolean";
|
|
14
14
|
unit: string;
|
|
15
15
|
presentation: string;
|
|
@@ -33,13 +33,13 @@ export default class ListSettingService {
|
|
|
33
33
|
type?: undefined;
|
|
34
34
|
unit?: undefined;
|
|
35
35
|
presentation?: undefined;
|
|
36
|
-
}
|
|
36
|
+
};
|
|
37
37
|
private fixListSettingsConfig;
|
|
38
38
|
/**
|
|
39
39
|
* @description На вход функция получает неопознанный объект. Далее проводит проверки по типу и т.д. Неважно в каком
|
|
40
40
|
* состоянии по итогу будет объект, он всё-равно будет заново преобразован.
|
|
41
41
|
*/
|
|
42
|
-
modifyConfigCell(entity: string, cell: unknown):
|
|
42
|
+
modifyConfigCell(entity: string, cell: unknown): IBaseListSettingsConfigCell;
|
|
43
43
|
/**
|
|
44
44
|
* @description Метод возвращает надстройку для переданного поля. В случае, если данное поле не является ссылкой
|
|
45
45
|
* на другое поле, то возвращаются значения из метаданных. В ином случае, необходимо произвести поиск связанных полей,
|
|
@@ -55,6 +55,8 @@ export default class ListSettingService {
|
|
|
55
55
|
* @description Проверяет наличие сущности(поле entity) внутри настройки списка.
|
|
56
56
|
*/
|
|
57
57
|
private checkEntityInsideSettings;
|
|
58
|
+
private checkFiltersInsideSettings;
|
|
59
|
+
private parseListFilters;
|
|
58
60
|
}
|
|
59
61
|
export interface IBaseListSettingsConfigCell {
|
|
60
62
|
name?: string | string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-setting-service.d.ts","sourceRoot":"","sources":["../../src/services/list-setting-service.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAEtC;;;;OAIG;IACG,eAAe,CAAC,YAAY,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"list-setting-service.d.ts","sourceRoot":"","sources":["../../src/services/list-setting-service.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAEtC;;;;OAIG;IACG,eAAe,CAAC,YAAY,EAAE,OAAO;IAc3C;;;OAGG;IACH,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;IAsD9D,OAAO,CAAC,qBAAqB;IAiB7B;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAoD9C;;;;;;OAMG;IAEH;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,gBAAgB;CAaxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AACD,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB"}
|
|
@@ -16,7 +16,6 @@ const list_settings_error_1 = __importDefault(require("../errors/list-settings-e
|
|
|
16
16
|
const debug_1 = __importDefault(require("debug"));
|
|
17
17
|
const utils_1 = require("../utils");
|
|
18
18
|
const metadata_service_1 = __importDefault(require("./metadata-service"));
|
|
19
|
-
const reduce_all_settled_result_1 = __importDefault(require("../utils/reduce-all-settled-result"));
|
|
20
19
|
const entity_error_1 = __importDefault(require("../errors/entity-error"));
|
|
21
20
|
const value_list_format_1 = require("../utils/value-list-format");
|
|
22
21
|
const constants_1 = require("../constants");
|
|
@@ -36,7 +35,10 @@ class ListSettingService {
|
|
|
36
35
|
if (!this.checkEntityInsideSettings(listSettings))
|
|
37
36
|
throw list_settings_error_1.default.IncorrectEntity(listSettings);
|
|
38
37
|
// Checking the Column Configuration Array
|
|
39
|
-
listSettings.config =
|
|
38
|
+
listSettings.config = this.fixListSettingsConfig(listSettings);
|
|
39
|
+
if (this.checkFiltersInsideSettings(listSettings))
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
listSettings.filters = this.parseListFilters(listSettings.entity, listSettings.filters);
|
|
40
42
|
return listSettings;
|
|
41
43
|
});
|
|
42
44
|
}
|
|
@@ -46,52 +48,50 @@ class ListSettingService {
|
|
|
46
48
|
*/
|
|
47
49
|
getCellReferenceInformation(entity, fieldName) {
|
|
48
50
|
var _a, _b;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
};
|
|
94
|
-
});
|
|
51
|
+
// Если у нас есть название поля, то получаем именно для него настройки, в противном случае только для сущности.
|
|
52
|
+
if (fieldName) {
|
|
53
|
+
const fieldMetadata = metadata_service_1.default.getFieldInformation(entity, fieldName);
|
|
54
|
+
if (!fieldMetadata)
|
|
55
|
+
throw list_settings_error_1.default.FieldForEntityNotFound(entity, fieldName);
|
|
56
|
+
if (!fieldMetadata.referencedEntity)
|
|
57
|
+
return {
|
|
58
|
+
type: fieldMetadata.dataType,
|
|
59
|
+
unit: fieldMetadata.valueUnit,
|
|
60
|
+
presentation: fieldMetadata.presentationType === "Undefined" ? undefined : fieldMetadata.presentationType
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* @description Если у нас данное поле ссылается на сущность, то мы переопределяем нужную нам сущностью.
|
|
64
|
+
*/
|
|
65
|
+
entity = fieldMetadata.referencedEntity;
|
|
66
|
+
}
|
|
67
|
+
const config = (_b = (_a = Server_1.default.instance.configuration) === null || _a === void 0 ? void 0 : _a.referenceEntity) === null || _b === void 0 ? void 0 : _b.find(a => a.entity.includes(entity));
|
|
68
|
+
// Переопределено в хранилище.
|
|
69
|
+
if (config) {
|
|
70
|
+
const name = config.name.map(name => [fieldName, name].filter(a => !!a).join('.'));
|
|
71
|
+
return Object.assign(Object.assign({}, config), { name, entity });
|
|
72
|
+
}
|
|
73
|
+
const metadata = metadata_store_1.default.get(entity);
|
|
74
|
+
let useObjectTypeName = false;
|
|
75
|
+
if (metadata_service_1.default.checkFieldInEntity(entity, constants_1.OBJECT_TYPE_NAME_FIELD))
|
|
76
|
+
useObjectTypeName = true;
|
|
77
|
+
if (!metadata.fieldNameForIdentification)
|
|
78
|
+
throw entity_error_1.default.EntityWithoutPrimaryField(entity);
|
|
79
|
+
// Устанавливаем поля, которые необходимы для данной колонки
|
|
80
|
+
const names = [
|
|
81
|
+
metadata.fieldNameForIdentification, metadata.fieldNameForLabel || metadata.fieldNameForIdentification
|
|
82
|
+
];
|
|
83
|
+
// Если для данной сущности существует поле, которое указывает имя сущности.
|
|
84
|
+
if (useObjectTypeName)
|
|
85
|
+
names.push(constants_1.OBJECT_TYPE_NAME_FIELD);
|
|
86
|
+
const parsedNames = names.map(name => [fieldName, name]
|
|
87
|
+
.filter(a => !!a)
|
|
88
|
+
.join('.'));
|
|
89
|
+
return {
|
|
90
|
+
link: true,
|
|
91
|
+
entity,
|
|
92
|
+
name: parsedNames,
|
|
93
|
+
useObjectTypeName
|
|
94
|
+
};
|
|
95
95
|
}
|
|
96
96
|
fixListSettingsConfig(listSettings) {
|
|
97
97
|
const entity = listSettings.entity;
|
|
@@ -99,19 +99,14 @@ class ListSettingService {
|
|
|
99
99
|
if (!Array.isArray(config))
|
|
100
100
|
throw list_settings_error_1.default.ConfigMustBeArray(config);
|
|
101
101
|
debug('Start checking entity(%s) with config.length %d', listSettings.entity, config.length);
|
|
102
|
-
return
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
acc.push(item.value);
|
|
106
|
-
else {
|
|
107
|
-
debug('Item without value %o', item);
|
|
102
|
+
return config.map(cell => {
|
|
103
|
+
try {
|
|
104
|
+
return this.modifyConfigCell(entity, cell);
|
|
108
105
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return res;
|
|
114
|
-
});
|
|
106
|
+
catch (e) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}).filter(item => !!item);
|
|
115
110
|
}
|
|
116
111
|
/**
|
|
117
112
|
* @description На вход функция получает неопознанный объект. Далее проводит проверки по типу и т.д. Неважно в каком
|
|
@@ -119,50 +114,47 @@ class ListSettingService {
|
|
|
119
114
|
*/
|
|
120
115
|
modifyConfigCell(entity, cell) {
|
|
121
116
|
var _a;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
117
|
+
if (!this.checkTypeForConfigCell(cell)) {
|
|
118
|
+
debug('Inside listSettings found cell with wrong type. %o', cell);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
// Removing old title from cell
|
|
122
|
+
if (cell.title) {
|
|
123
|
+
cell.label = cell.title;
|
|
124
|
+
delete cell.title;
|
|
125
|
+
}
|
|
126
|
+
// Для значения указан формат
|
|
127
|
+
if (typeof cell.value === 'string') {
|
|
128
|
+
cell.name = (0, value_list_format_1.getCellNamesFromListFormatter)(cell.value);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @description Если поле name указано - происходит проверка по типу.
|
|
132
|
+
* Если это массив - проверка всех полей на наличие в сущности.
|
|
133
|
+
* Если это строка - полноценная проверка поля и добавление нужных метаданных.
|
|
134
|
+
* Иначе удаляем cell.name
|
|
135
|
+
*/
|
|
136
|
+
if (cell.name) {
|
|
137
|
+
if (Array.isArray(cell.name)) {
|
|
138
|
+
cell.name = cell.name.filter(name => metadata_service_1.default.checkFieldInEntity(entity, name));
|
|
131
139
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
cell.name = (0, value_list_format_1.getCellNamesFromListFormatter)(cell.value);
|
|
140
|
+
else if (typeof cell.name === 'string') {
|
|
141
|
+
Object.assign(cell, this.getCellReferenceInformation(entity, cell.name));
|
|
135
142
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
* Если это строка - полноценная проверка поля и добавление нужных метаданных.
|
|
140
|
-
* Иначе удаляем cell.name
|
|
141
|
-
*/
|
|
142
|
-
if (cell.name) {
|
|
143
|
-
if (Array.isArray(cell.name)) {
|
|
144
|
-
cell.name = yield Promise.allSettled(cell.name.map(name => metadata_service_1.default.checkFieldInEntity(entity, name) && name)).then(reduce_all_settled_result_1.default)
|
|
145
|
-
.then(item => item.filter(a => !!a));
|
|
146
|
-
}
|
|
147
|
-
else if (typeof cell.name === 'string') {
|
|
148
|
-
Object.assign(cell, yield this.getCellReferenceInformation(entity, cell.name));
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
debug('Type of name is incorrect: %o', cell.name);
|
|
152
|
-
delete cell.name;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (cell.self) {
|
|
156
|
-
debug(`Self was detected for list-settings with entity %s`, entity);
|
|
157
|
-
Object.assign(cell, yield this.getCellReferenceInformation(entity));
|
|
158
|
-
delete cell.self;
|
|
159
|
-
}
|
|
160
|
-
// Установка заголовка в ячейку.
|
|
161
|
-
if (cell.label === undefined && cell.name) {
|
|
162
|
-
cell.label = (_a = (metadata_service_1.default.getFieldInformation(entity, cell.name))) === null || _a === void 0 ? void 0 : _a.displayName;
|
|
143
|
+
else {
|
|
144
|
+
debug('Type of name is incorrect: %o', cell.name);
|
|
145
|
+
delete cell.name;
|
|
163
146
|
}
|
|
164
|
-
|
|
165
|
-
|
|
147
|
+
}
|
|
148
|
+
if (cell.self) {
|
|
149
|
+
debug(`Self was detected for list-settings with entity %s`, entity);
|
|
150
|
+
Object.assign(cell, this.getCellReferenceInformation(entity));
|
|
151
|
+
delete cell.self;
|
|
152
|
+
}
|
|
153
|
+
// Установка заголовка в ячейку.
|
|
154
|
+
if (cell.label === undefined && cell.name) {
|
|
155
|
+
cell.label = (_a = (metadata_service_1.default.getFieldInformation(entity, cell.name))) === null || _a === void 0 ? void 0 : _a.displayName;
|
|
156
|
+
}
|
|
157
|
+
return cell;
|
|
166
158
|
}
|
|
167
159
|
/**
|
|
168
160
|
* @description Метод возвращает надстройку для переданного поля. В случае, если данное поле не является ссылкой
|
|
@@ -183,6 +175,24 @@ class ListSettingService {
|
|
|
183
175
|
checkEntityInsideSettings(settings) {
|
|
184
176
|
return !!settings && "entity" in settings && typeof settings.entity === 'string';
|
|
185
177
|
}
|
|
178
|
+
checkFiltersInsideSettings(settings) {
|
|
179
|
+
return !!settings && "filters" in settings && Array.isArray(settings.filters);
|
|
180
|
+
}
|
|
181
|
+
parseListFilters(entity, filters) {
|
|
182
|
+
try {
|
|
183
|
+
return filters.map(item => {
|
|
184
|
+
try {
|
|
185
|
+
return this.modifyConfigCell(entity, item);
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
}).filter(item => !!item);
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
}
|
|
186
196
|
}
|
|
187
197
|
exports.default = ListSettingService;
|
|
188
198
|
//# sourceMappingURL=list-setting-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-setting-service.js","sourceRoot":"","sources":["../../src/services/list-setting-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wFAA8D;AAC9D,kDAAgC;AAChC,oCAA0C;AAC1C,0EAAiD;
|
|
1
|
+
{"version":3,"file":"list-setting-service.js","sourceRoot":"","sources":["../../src/services/list-setting-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,5 +12,13 @@ export interface IEntityReadParams {
|
|
|
12
12
|
* к GrandObject. Подробнее тут https://form.jenesius.com/guide/utils.html#grandobject
|
|
13
13
|
*/
|
|
14
14
|
useGrand?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @issue 3692
|
|
17
|
+
* @description Пользовательские фильтры, которые нужно добавить в запрос
|
|
18
|
+
*/
|
|
19
|
+
customFilters?: (string | {
|
|
20
|
+
name: 'string';
|
|
21
|
+
arguments: Record<string, any>;
|
|
22
|
+
})[];
|
|
15
23
|
}
|
|
16
24
|
//# sourceMappingURL=entity_read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity_read.d.ts","sourceRoot":"","sources":["../../../src/socket/events/entity_read.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"entity_read.d.ts","sourceRoot":"","sources":["../../../src/socket/events/entity_read.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAOtD,wBAAsB,UAAU,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,eAoD5E;AASD,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG;QAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC,CAAC,EAAE,CAAA;CAC7E"}
|
|
@@ -21,6 +21,9 @@ const debug_1 = __importDefault(require("debug"));
|
|
|
21
21
|
const utils_1 = require("../../utils");
|
|
22
22
|
const jenesius_vue_form_1 = require("jenesius-vue-form");
|
|
23
23
|
const parse_order_1 = __importDefault(require("../../utils/parse-order"));
|
|
24
|
+
const custom_filters_store_1 = __importDefault(require("../../store/custom-filters-store"));
|
|
25
|
+
const use_logger_1 = require("../../logger/use-logger");
|
|
26
|
+
const get_required_attribute_values_1 = __importDefault(require("../../utils/get-required-attribute-values"));
|
|
24
27
|
const debug = (0, debug_1.default)((0, utils_1.getCoreDebugMark)("socket:entity-read"));
|
|
25
28
|
function readEntity(options, data) {
|
|
26
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -40,6 +43,23 @@ function readEntity(options, data) {
|
|
|
40
43
|
let filter = data.filter || "";
|
|
41
44
|
if (Server_1.default.instance.type === 'front' && data.useContextFilter !== false)
|
|
42
45
|
filter = yield (0, get_extend_customer_filters_1.joinExtendCustomerFilters)(filter, options.contextId, data.entity);
|
|
46
|
+
if (data.customFilters && Array.isArray(data.customFilters)) {
|
|
47
|
+
debug('Custom filters(%s): %o', data.entity, data.customFilters);
|
|
48
|
+
const generatedCustomFilters = yield Promise.all(data.customFilters.map((customFilterInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const customFilterName = typeof customFilterInfo === 'string' ? customFilterInfo : customFilterInfo.name;
|
|
50
|
+
const customerFilterAttributes = typeof customFilterInfo === 'string' ? {} : (customFilterInfo.arguments || {});
|
|
51
|
+
const filterConfig = custom_filters_store_1.default.get(customFilterName);
|
|
52
|
+
if (!filterConfig) {
|
|
53
|
+
use_logger_1.Logger.error('Filter %s not found.', customFilterName);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const insideValue = yield (0, get_required_attribute_values_1.default)(filterConfig, options, customerFilterAttributes);
|
|
57
|
+
debug(insideValue);
|
|
58
|
+
return filterConfig.generate(insideValue);
|
|
59
|
+
})));
|
|
60
|
+
debug('Result Custom filters: %s', generatedCustomFilters);
|
|
61
|
+
filter = (0, get_extend_customer_filters_1.joinFilters)(filter, ...generatedCustomFilters.filter(item => !!item));
|
|
62
|
+
}
|
|
43
63
|
debug(`For entity "%s" result filter %s`, data.entity, filter);
|
|
44
64
|
return dataService.getList(data.entity, Object.assign(Object.assign({}, data), { filter, order: (0, parse_order_1.default)(data.order) })).then(res => {
|
|
45
65
|
if (data.useGrand)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity_read.js","sourceRoot":"","sources":["../../../src/socket/events/entity_read.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uEAA8C;AAC9C,+EAAsD;AACtD,0DAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"entity_read.js","sourceRoot":"","sources":["../../../src/socket/events/entity_read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-filters-store.d.ts","sourceRoot":"","sources":["../../src/store/custom-filters-store.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;;gBAMd,MAAM;iBAGL,OAAO,MAAM,EAAE,GAAG,CAAC;;AAN3C,wBAoBI"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const Filter_1 = __importDefault(require("../model/Filter"));
|
|
7
|
+
const use_logger_1 = require("../logger/use-logger");
|
|
8
|
+
exports.default = (function CustomFiltersStore() {
|
|
9
|
+
const state = {};
|
|
10
|
+
function get(name) {
|
|
11
|
+
return state[name];
|
|
12
|
+
}
|
|
13
|
+
function init(data) {
|
|
14
|
+
Object.keys(data)
|
|
15
|
+
.forEach(name => {
|
|
16
|
+
try {
|
|
17
|
+
state[name] = new Filter_1.default(data[name]);
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
use_logger_1.Logger.error(e);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
get,
|
|
26
|
+
init
|
|
27
|
+
};
|
|
28
|
+
})();
|
|
29
|
+
//# sourceMappingURL=custom-filters-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-filters-store.js","sourceRoot":"","sources":["../../src/store/custom-filters-store.ts"],"names":[],"mappings":";;;;;AAAA,6DAAqC;AACrC,qDAA4C;AAE5C,kBAAe,CAAC,SAAS,kBAAkB;IACvC,MAAM,KAAK,GAA2B,EAAE,CAAA;IAExC,SAAS,GAAG,CAAC,IAAY;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,SAAS,IAAI,CAAC,IAAyB;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aAChB,OAAO,CAAC,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,mBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IACD,OAAO;QACH,GAAG;QACH,IAAI;KACP,CAAA;AACL,CAAC,CAAC,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters-store.d.ts","sourceRoot":"","sources":["../../src/store/filters-store.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,wBAAwB,CAAC;;gBAK3B,MAAM;iBAGL,OAAO,MAAM,EAAE,GAAG,CAAC;;AAN3C,wBAoBI"}
|