eservices-back-core 2.0.34 → 2.0.35
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.
|
@@ -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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"}
|