bx-rest 1.5.0 → 1.5.1
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/CHANGELOG.md +83 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/esm2022/functions/mapResult.mjs +4 -2
- package/esm2022/map/disk.mjs +13 -0
- package/esm2022/map/im/recent.mjs +1 -9
- package/esm2022/map/task.mjs +11 -5
- package/esm2022/map/tasks/task.mjs +3 -3
- package/esm2022/map/tasks.mjs +4 -3
- package/esm2022/map/user.mjs +5 -4
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/request-navvy/bizproc.mjs +2 -2
- package/esm2022/request-navvy/pull/config.mjs +1 -3
- package/esm2022/request-navvy/task/operation/elapseditem.mjs +8 -65
- package/esm2022/rest/map.mjs +3 -3
- package/esm2022/services/base.mjs +7 -4
- package/esm2022/services/http/HttpBX.mjs +8 -3
- package/esm2022/services/navvy/extends/navvy-pag-base.mjs +63 -9
- package/esm2022/services/navvy/navvy-alternative-pagination-navigation.mjs +21 -71
- package/esm2022/services/navvy/navvy-pag-nav-result-key-object.mjs +10 -49
- package/esm2022/services/navvy/navvy-pag-nav-result-key.mjs +14 -73
- package/esm2022/services/navvy/navvy-pag-nav-tasks.mjs +4 -76
- package/esm2022/services/navvy/navvy-pag-nav-with-useless-key.mjs +10 -76
- package/esm2022/services/navvy/navvy-pag.mjs +7 -65
- package/esm2022/typification/rest/settings.mjs +1 -1
- package/esm2022/typification/rest/user/user.mjs +1 -1
- package/fesm2022/bx-rest.mjs +491 -1656
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/map/disk.d.ts +10 -0
- package/map/task.d.ts +3 -3
- package/map/tasks/task.d.ts +1 -1
- package/map/tasks.d.ts +1 -1
- package/package.json +5 -2
- package/public-api.d.ts +5 -2
- package/request-navvy/pull/config.d.ts +0 -2
- package/rest/map.d.ts +2 -2
- package/services/navvy/extends/navvy-pag-base.d.ts +16 -2
- package/services/navvy/navvy-alternative-pagination-navigation.d.ts +5 -2
- package/services/navvy/navvy-pag-nav-result-key-object.d.ts +0 -2
- package/services/navvy/navvy-pag-nav-result-key.d.ts +1 -4
- package/services/navvy/navvy-pag-nav-tasks.d.ts +2 -9
- package/services/navvy/navvy-pag-nav-with-useless-key.d.ts +0 -2
- package/services/navvy/navvy-pag.d.ts +0 -2
- package/typification/rest/settings.d.ts +1 -0
- package/typification/rest/user/user.d.ts +3 -3
package/fesm2022/bx-rest.mjs
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
+
import { Subscription, of, throwError, from, defer, forkJoin, concatMap, toArray, mergeMap, shareReplay, tap } from 'rxjs';
|
|
1
2
|
import { switchMap, catchError, map, take, mergeMap as mergeMap$1 } from 'rxjs/operators';
|
|
2
|
-
import { Subscription, of, throwError, from, defer, forkJoin, last, shareReplay, mergeMap, concatMap, toArray, map as map$1, tap } from 'rxjs';
|
|
3
3
|
import clone from 'just-clone';
|
|
4
4
|
import axios from 'axios';
|
|
5
5
|
import flatten from 'just-flatten-it';
|
|
6
6
|
import { stringify } from 'qs-esm';
|
|
7
7
|
import values from 'just-values';
|
|
8
8
|
import camelCase from 'just-camel-case';
|
|
9
|
-
import { __decorate } from 'tslib';
|
|
10
9
|
|
|
11
10
|
const DEFAULT_BX_REST_SETTINGS = {
|
|
12
11
|
auth: {
|
|
@@ -55,7 +54,9 @@ function BXRestMapResult(v) {
|
|
|
55
54
|
return undefined;
|
|
56
55
|
}
|
|
57
56
|
function instanceOfiBXRestAnswerSuccess(object) {
|
|
58
|
-
|
|
57
|
+
// Без проверки типа `in` бросает TypeError на строке, числе и null вместо false.
|
|
58
|
+
// Строка приходит, если вместо Bitrix ответил прокси: HTML axios отдаёт текстом
|
|
59
|
+
return typeof object === 'object' && object !== null && 'result' in object;
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
function toLocalAtom(date) {
|
|
@@ -215,8 +216,12 @@ function parseDateWithFormat(val, format) {
|
|
|
215
216
|
if (month < 1 || month > 12 || day < 1 || day > 31 || hour > 23 || minute > 59 || second > 59) {
|
|
216
217
|
return null;
|
|
217
218
|
}
|
|
219
|
+
return buildDate(year, month, day, hour, minute, second);
|
|
220
|
+
}
|
|
221
|
+
/** Собирает дату, отбрасывая несуществующие дни месяца: new Date() превратил бы 31 февраля в 3 марта. */
|
|
222
|
+
function buildDate(year, month, day, hour, minute, second) {
|
|
218
223
|
const date = new Date(year, month - 1, day, hour, minute, second);
|
|
219
|
-
return isNaN(date.getTime()) ? null : date;
|
|
224
|
+
return (isNaN(date.getTime()) || date.getMonth() !== month - 1 || date.getDate() !== day) ? null : date;
|
|
220
225
|
}
|
|
221
226
|
/**
|
|
222
227
|
* Последний резервный разбор — без знания конкретного формата. Работает только для чисто
|
|
@@ -259,8 +264,7 @@ function parseDateHeuristically(val) {
|
|
|
259
264
|
if (hour > 23 || minute > 59 || second > 59) {
|
|
260
265
|
return null;
|
|
261
266
|
}
|
|
262
|
-
|
|
263
|
-
return isNaN(date.getTime()) ? null : date;
|
|
267
|
+
return buildDate(year, month, day, hour, minute, second);
|
|
264
268
|
}
|
|
265
269
|
/**
|
|
266
270
|
* Преобразует значение в дату.
|
|
@@ -1203,6 +1207,7 @@ class HttpBXServices extends HttpServices {
|
|
|
1203
1207
|
// Преобразуем параметры в формат x-www-form-urlencoded
|
|
1204
1208
|
const bodyString = this.serializeBitrixParams(paramsClone);
|
|
1205
1209
|
return from(this.axiosInstance.post(fullUrl, bodyString, {
|
|
1210
|
+
withCredentials: this.session.getWithCredentials(),
|
|
1206
1211
|
headers: this.buildHeaders(headers, { 'Content-Type': 'application/x-www-form-urlencoded' }),
|
|
1207
1212
|
}).then((response) => response.data));
|
|
1208
1213
|
}
|
|
@@ -1221,22 +1226,26 @@ class HttpBXServices extends HttpServices {
|
|
|
1221
1226
|
// авторизации — как в httpPost.
|
|
1222
1227
|
return withAuthRefresh(defer(() => {
|
|
1223
1228
|
const paramsClone = clone(params);
|
|
1229
|
+
const key = this.session.getKeyAuth();
|
|
1224
1230
|
const auth = this.session.getAuthParams();
|
|
1225
1231
|
const checkIsOn = this.session.getCheckAuthParamsIsOn();
|
|
1226
1232
|
if (checkIsOn) {
|
|
1227
1233
|
if (!auth) {
|
|
1228
1234
|
return throwError(() => this.session.getAuthError('get'));
|
|
1229
1235
|
}
|
|
1230
|
-
|
|
1236
|
+
if (key !== 'OAuth2') {
|
|
1237
|
+
paramsClone[key] = auth;
|
|
1238
|
+
}
|
|
1231
1239
|
}
|
|
1232
1240
|
return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
|
|
1233
1241
|
if (!baseUrl) {
|
|
1234
1242
|
return throwError(() => this.session.getBaseUrlError('get'));
|
|
1235
1243
|
}
|
|
1236
1244
|
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
1237
|
-
const queryString =
|
|
1245
|
+
const queryString = this.serializeBitrixParams(paramsClone);
|
|
1238
1246
|
const finalUrl = `${fullUrl}?${queryString}`;
|
|
1239
1247
|
return from(this.axiosInstance.get(finalUrl, {
|
|
1248
|
+
withCredentials: this.session.getWithCredentials(),
|
|
1240
1249
|
headers: this.buildHeaders(headers),
|
|
1241
1250
|
}).then((response) => response.data));
|
|
1242
1251
|
}));
|
|
@@ -1259,6 +1268,19 @@ class HttpBXServices extends HttpServices {
|
|
|
1259
1268
|
}
|
|
1260
1269
|
}
|
|
1261
1270
|
|
|
1271
|
+
/** Больше команд в одном запросе `batch` Bitrix не принимает. */
|
|
1272
|
+
const BATCH_COMMANDS_LIMIT = 50;
|
|
1273
|
+
/**
|
|
1274
|
+
* Параметры остальных страниц для методов с постраничной навигацией через `start`.
|
|
1275
|
+
* Отсчёт идёт от `start` самого запроса: первая страница уже получена именно с него.
|
|
1276
|
+
*/
|
|
1277
|
+
function offsetPageParams(param, total, pageSize) {
|
|
1278
|
+
const pages = [];
|
|
1279
|
+
for (let start = (Number(param?.start) || 0) + pageSize; start < (total ?? 0); start += pageSize) {
|
|
1280
|
+
pages.push({ ...clone(param), start });
|
|
1281
|
+
}
|
|
1282
|
+
return pages;
|
|
1283
|
+
}
|
|
1262
1284
|
class NavvyPagBase {
|
|
1263
1285
|
constructor(url, param, map = undefined, restApi = false) {
|
|
1264
1286
|
this.url = url;
|
|
@@ -1302,13 +1324,7 @@ class NavvyPagBase {
|
|
|
1302
1324
|
}
|
|
1303
1325
|
mapAndError(request, options) {
|
|
1304
1326
|
const method = this.http.getNameMethod(this.url);
|
|
1305
|
-
return request.pipe(
|
|
1306
|
-
if (options?.throwOnApiError && v && !instanceOfiBXRestAnswerSuccess(v)) {
|
|
1307
|
-
throw this.apiErrorFromBody(v);
|
|
1308
|
-
}
|
|
1309
|
-
return BXRestMapResult(v);
|
|
1310
|
-
}), catchError((err) => {
|
|
1311
|
-
console.error(err);
|
|
1327
|
+
return request.pipe(catchError((err) => {
|
|
1312
1328
|
if (err instanceof BXRestApiError) {
|
|
1313
1329
|
throw err;
|
|
1314
1330
|
}
|
|
@@ -1328,6 +1344,14 @@ class NavvyPagBase {
|
|
|
1328
1344
|
Object.assign(error, { authRefreshError });
|
|
1329
1345
|
}
|
|
1330
1346
|
throw error;
|
|
1347
|
+
}), map(v => {
|
|
1348
|
+
if (v && typeof v !== 'object') {
|
|
1349
|
+
throw this.notRestAnswerError();
|
|
1350
|
+
}
|
|
1351
|
+
if (options?.throwOnApiError && v && !instanceOfiBXRestAnswerSuccess(v)) {
|
|
1352
|
+
throw this.apiErrorFromBody(v);
|
|
1353
|
+
}
|
|
1354
|
+
return BXRestMapResult(v);
|
|
1331
1355
|
}));
|
|
1332
1356
|
}
|
|
1333
1357
|
/**
|
|
@@ -1336,12 +1360,48 @@ class NavvyPagBase {
|
|
|
1336
1360
|
*/
|
|
1337
1361
|
resFirstPage() {
|
|
1338
1362
|
return this.resVanilla().pipe(map(v => {
|
|
1339
|
-
if (v
|
|
1363
|
+
if (!v || typeof v !== 'object') {
|
|
1364
|
+
throw this.notRestAnswerError();
|
|
1365
|
+
}
|
|
1366
|
+
if (!instanceOfiBXRestAnswerSuccess(v)) {
|
|
1340
1367
|
throw this.apiErrorFromBody(v);
|
|
1341
1368
|
}
|
|
1342
1369
|
return v;
|
|
1343
1370
|
}));
|
|
1344
1371
|
}
|
|
1372
|
+
/**
|
|
1373
|
+
* Остальные страницы для `.resAll()`, в порядке `params`. Команды уходят через `batch`,
|
|
1374
|
+
* пакеты — по очереди. Ошибка любой страницы завершает весь запрос: неполный список
|
|
1375
|
+
* выглядел бы для вызывающего кода как полный.
|
|
1376
|
+
*/
|
|
1377
|
+
resPages(params) {
|
|
1378
|
+
const method = this.http.getNameMethod(this.url);
|
|
1379
|
+
const commands = params.map(param => method + '?' + serializeBitrixParams(param));
|
|
1380
|
+
const batches = [];
|
|
1381
|
+
for (let i = 0; i < commands.length; i += BATCH_COMMANDS_LIMIT) {
|
|
1382
|
+
batches.push(commands.slice(i, i + BATCH_COMMANDS_LIMIT));
|
|
1383
|
+
}
|
|
1384
|
+
return from(batches).pipe(concatMap(cmd => this.http.post(['batch'], { halt: 1, cmd }, false, this.requestHeaders)), map(answer => this.batchPages(answer)), toArray(), map(pages => pages.flat()));
|
|
1385
|
+
}
|
|
1386
|
+
batchPages(answer) {
|
|
1387
|
+
if (!answer || typeof answer !== 'object') {
|
|
1388
|
+
throw this.notRestAnswerError();
|
|
1389
|
+
}
|
|
1390
|
+
if (!instanceOfiBXRestAnswerSuccess(answer)) {
|
|
1391
|
+
throw this.apiErrorFromBody(answer);
|
|
1392
|
+
}
|
|
1393
|
+
// Портал отдаёт result_error массивом, когда ошибок нет, и объектом с ключами команд, когда есть
|
|
1394
|
+
const failed = Object.values(answer.result?.result_error ?? {})[0];
|
|
1395
|
+
if (failed) {
|
|
1396
|
+
const parsed = parseBXRestErrorBody(failed);
|
|
1397
|
+
throw new BXRestApiError(parsed?.error, parsed?.error_description, { method: this.http.getNameMethod(this.url) });
|
|
1398
|
+
}
|
|
1399
|
+
return Object.values(answer.result?.result ?? {}).filter(Boolean);
|
|
1400
|
+
}
|
|
1401
|
+
// В тексте ошибки — только метод, без тела ответа: это может быть целая HTML-страница
|
|
1402
|
+
notRestAnswerError() {
|
|
1403
|
+
return new Error(`Bitrix24 answered ${this.http.getNameMethod(this.url)} with a body that is not a REST response.`);
|
|
1404
|
+
}
|
|
1345
1405
|
apiErrorFromBody(v) {
|
|
1346
1406
|
const parsed = parseBXRestErrorBody(v);
|
|
1347
1407
|
return new BXRestApiError(parsed ? parsed.error : v.error, parsed ? parsed.error_description : v.error_description, { method: this.http.getNameMethod(this.url) });
|
|
@@ -1351,6 +1411,165 @@ class NavvyPagBase {
|
|
|
1351
1411
|
class NavvySimple extends NavvyPagBase {
|
|
1352
1412
|
}
|
|
1353
1413
|
|
|
1414
|
+
/**
|
|
1415
|
+
* Класс-прослойка-обработчик для методов работающих на альтернативной постраничной навигации тика как методы по
|
|
1416
|
+
* затраченному времени на задачи https://dev.1c-bitrix.ru/rest_help/tasks/task/elapseditem/index.php
|
|
1417
|
+
*
|
|
1418
|
+
* не завершенный класс, работаем от частного к общему
|
|
1419
|
+
*/
|
|
1420
|
+
class NavvyAlterPagNav extends NavvyPagBase {
|
|
1421
|
+
resAll() {
|
|
1422
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(first.next ? this.pageParams(first.total) : []).pipe(map(pages => {
|
|
1423
|
+
const items = [first.result ?? [], ...pages].flat();
|
|
1424
|
+
return ((this.map ? this.map(items) : items) ?? []);
|
|
1425
|
+
}))),
|
|
1426
|
+
// refCount: без подписчиков оставшиеся страницы запрашивать незачем
|
|
1427
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
1428
|
+
}
|
|
1429
|
+
/**
|
|
1430
|
+
* Параметры остальных страниц. Размер страницы берётся из запроса: портал ограничивает
|
|
1431
|
+
* его 50 записями, но вызывающий код может попросить и меньше.
|
|
1432
|
+
*/
|
|
1433
|
+
pageParams(total = 0) {
|
|
1434
|
+
const nav = this.param.PARAMS?.NAV_PARAMS;
|
|
1435
|
+
const nPageSize = Math.min(nav?.nPageSize || this.pageSize, this.pageSize);
|
|
1436
|
+
const pages = [];
|
|
1437
|
+
for (let iNumPage = (nav?.iNumPage || 1) + 1; iNumPage <= Math.ceil(total / nPageSize); iNumPage++) {
|
|
1438
|
+
pages.push({ ...clone(this.param), PARAMS: { ...this.param.PARAMS, NAV_PARAMS: { ...nav, nPageSize, iNumPage } } });
|
|
1439
|
+
}
|
|
1440
|
+
return pages;
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
class NavvyPagNavWithUselessKey extends NavvyPagBase {
|
|
1445
|
+
resAll() {
|
|
1446
|
+
return this.resFirstPage().pipe(mergeMap(first => {
|
|
1447
|
+
const params = first.next ? offsetPageParams(this.param, first.total, this.pageSize) : [];
|
|
1448
|
+
return this.resPages(params).pipe(map(pages => {
|
|
1449
|
+
const merged = Object.assign({}, first.result, ...pages);
|
|
1450
|
+
return (this.map ? this.map(merged) : [merged]);
|
|
1451
|
+
}));
|
|
1452
|
+
}));
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
class NavvyPagNavResultKey extends NavvyPagBase {
|
|
1457
|
+
constructor(url, param, key, map, restApi) {
|
|
1458
|
+
// Без своего map результат — массив по ключу, как и обещают типы `.res()` и `.resAll()`.
|
|
1459
|
+
// Иначе `.res()` отдал бы весь объект `{ items: [...] }`.
|
|
1460
|
+
super(url, param, map ?? (result => (result?.[key] ?? [])), restApi);
|
|
1461
|
+
this.key = key;
|
|
1462
|
+
}
|
|
1463
|
+
resAll() {
|
|
1464
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(offsetPageParams(this.param, first.total, this.pageSize)).pipe(map(pages => {
|
|
1465
|
+
const items = [first.result, ...pages].flatMap(page => page?.[this.key] ?? []);
|
|
1466
|
+
const joined = { ...first.result, [this.key]: items };
|
|
1467
|
+
return (this.map?.(joined) ?? []);
|
|
1468
|
+
}))),
|
|
1469
|
+
// refCount: без подписчиков оставшиеся страницы запрашивать незачем
|
|
1470
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
class NavvyPagNavTasks extends NavvyPagNavResultKey {
|
|
1475
|
+
constructor(url, param, map, restApi) {
|
|
1476
|
+
super(url, param, 'tasks', map, restApi);
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
class NavvyPag extends NavvyPagBase {
|
|
1481
|
+
resAll() {
|
|
1482
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(offsetPageParams(this.param, first.total, this.pageSize)).pipe(map(pages => {
|
|
1483
|
+
const items = [first.result ?? [], ...pages].flat();
|
|
1484
|
+
return ((this.map ? this.map(items) : items) ?? []);
|
|
1485
|
+
}))));
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
/** Пагинация для методов, возвращающих коллекцию как объект с идентификаторами в ключах. */
|
|
1490
|
+
class NavvyPagNavResultKeyObject extends NavvyPagBase {
|
|
1491
|
+
constructor(url, param, key, mapResult) {
|
|
1492
|
+
// Без своего map результат — значения объекта по ключу, как и обещают типы `.res()` и `.resAll()`.
|
|
1493
|
+
super(url, param, mapResult ?? (result => Object.values(result?.[key] ?? {})));
|
|
1494
|
+
this.key = key;
|
|
1495
|
+
}
|
|
1496
|
+
resAll() {
|
|
1497
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(offsetPageParams(this.param, first.total, this.pageSize)).pipe(map(pages => {
|
|
1498
|
+
const merged = Object.assign({}, first.result?.[this.key], ...pages.map(page => page[this.key]));
|
|
1499
|
+
return this.map?.({ ...first.result, [this.key]: merged });
|
|
1500
|
+
}))),
|
|
1501
|
+
// refCount: без подписчиков оставшиеся страницы запрашивать незачем
|
|
1502
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1506
|
+
class NavvySupport {
|
|
1507
|
+
constructor(requestClass) {
|
|
1508
|
+
this.requestClass = requestClass;
|
|
1509
|
+
this.pageSize = 50; // стандартный размер страницы
|
|
1510
|
+
}
|
|
1511
|
+
mapAndError(request) {
|
|
1512
|
+
return request.pipe(map(v => BXRestMapResult(v)), catchError((err) => {
|
|
1513
|
+
console.error(err);
|
|
1514
|
+
throw new Error((err.error) ? err.error : err);
|
|
1515
|
+
}));
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
class Navvy {
|
|
1520
|
+
simple(url, arg, map) {
|
|
1521
|
+
return new NavvySimple(url, arg !== undefined ? arg : undefined, map);
|
|
1522
|
+
}
|
|
1523
|
+
simpleV3(url, arg, map) {
|
|
1524
|
+
return new NavvySimple(url, arg !== undefined ? arg : undefined, map, true);
|
|
1525
|
+
}
|
|
1526
|
+
/**
|
|
1527
|
+
* Новый, пока тестируемый метод для api методов с пагинацией
|
|
1528
|
+
*
|
|
1529
|
+
* @param url
|
|
1530
|
+
* @param arg
|
|
1531
|
+
* @param map
|
|
1532
|
+
* @constructor
|
|
1533
|
+
*/
|
|
1534
|
+
pagNav(url, arg, map) {
|
|
1535
|
+
return new NavvyPag(url, arg, map);
|
|
1536
|
+
}
|
|
1537
|
+
// old PagNav
|
|
1538
|
+
// PagNav<T, R, A extends iBXRestPagination>(
|
|
1539
|
+
// func: (param: A) => Observable<iBXRestAnswer<T[]> | undefined>,
|
|
1540
|
+
// arg: A,
|
|
1541
|
+
// map: ((param: T[] | undefined) => R[] | undefined) | undefined) {
|
|
1542
|
+
// return new NavvyPagNav(this.requestClass, this.mapClass, func, arg, map)
|
|
1543
|
+
// }
|
|
1544
|
+
// Batch<T, R, A extends iBXRestPagination>(
|
|
1545
|
+
// func: (param: A) => Observable<iBXRestAnswer<T[]> | undefined>,
|
|
1546
|
+
// arg: A,
|
|
1547
|
+
// map: ((param: T[] | undefined) => R[] | undefined) | undefined) {
|
|
1548
|
+
// return new NavvyBatch(this.requestClass, this.mapClass, func, arg, map)
|
|
1549
|
+
// }
|
|
1550
|
+
pagNavTasks(url,
|
|
1551
|
+
// func: (param: A) => Observable<iBXRestAnswer<{tasks: T[] | undefined}> | undefined>,
|
|
1552
|
+
arg, map) {
|
|
1553
|
+
return new NavvyPagNavTasks(url, arg, map);
|
|
1554
|
+
}
|
|
1555
|
+
pagNavResultKey(url, arg, key, map) {
|
|
1556
|
+
return new NavvyPagNavResultKey(url, arg, key, map);
|
|
1557
|
+
}
|
|
1558
|
+
pagNavResultKeyObject(url, arg, key, map) {
|
|
1559
|
+
return new NavvyPagNavResultKeyObject(url, arg, key, map);
|
|
1560
|
+
}
|
|
1561
|
+
pagNavWithUselessKey(url,
|
|
1562
|
+
// func: (param: A) => Observable<iBXRestAnswer<{ [key: string]: T }> | undefined>,
|
|
1563
|
+
arg, map) {
|
|
1564
|
+
return new NavvyPagNavWithUselessKey(url, arg, map);
|
|
1565
|
+
}
|
|
1566
|
+
alterPagNav(url,
|
|
1567
|
+
// func: (param: A) => Observable<iBXRestAnswer<T[]> | undefined>,
|
|
1568
|
+
arg, map) {
|
|
1569
|
+
return new NavvyAlterPagNav(url, arg, map);
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1354
1573
|
const $get = 'get';
|
|
1355
1574
|
const $add = 'add';
|
|
1356
1575
|
const $set = 'set';
|
|
@@ -2242,1517 +2461,201 @@ var partNameMethods$1 = /*#__PURE__*/Object.freeze({
|
|
|
2242
2461
|
$priceTypeGroup: $priceTypeGroup,
|
|
2243
2462
|
$priceTypeLang: $priceTypeLang,
|
|
2244
2463
|
$product: $product,
|
|
2245
|
-
$productImage: $productImage,
|
|
2246
|
-
$productProperty: $productProperty,
|
|
2247
|
-
$productPropertyEnum: $productPropertyEnum,
|
|
2248
|
-
$productPropertyFeature: $productPropertyFeature,
|
|
2249
|
-
$productPropertySection: $productPropertySection,
|
|
2250
|
-
$productrow: $productrow,
|
|
2251
|
-
$productrows: $productrows,
|
|
2252
|
-
$property: $property,
|
|
2253
|
-
$propertyGroup: $propertyGroup,
|
|
2254
|
-
$propertyRelation: $propertyRelation,
|
|
2255
|
-
$propertyValue: $propertyValue,
|
|
2256
|
-
$propertyVariant: $propertyVariant,
|
|
2257
|
-
$provider: $provider,
|
|
2258
|
-
$public: $public,
|
|
2259
|
-
$publication: $publication,
|
|
2260
|
-
$publicationFolder: $publicationFolder,
|
|
2261
|
-
$pull: $pull,
|
|
2262
|
-
$quick: $quick,
|
|
2263
|
-
$quote: $quote,
|
|
2264
|
-
$ratio: $ratio,
|
|
2265
|
-
$reaction: $reaction,
|
|
2266
|
-
$read: $read,
|
|
2267
|
-
$reading: $reading,
|
|
2268
|
-
$recall: $recall,
|
|
2269
|
-
$recent: $recent,
|
|
2270
|
-
$recipient: $recipient,
|
|
2271
|
-
$record: $record,
|
|
2272
|
-
$recurring: $recurring,
|
|
2273
|
-
$region: $region,
|
|
2274
|
-
$register: $register,
|
|
2275
|
-
$remove: $remove,
|
|
2276
|
-
$removeAttachments: $removeAttachments,
|
|
2277
|
-
$removeCard: $removeCard,
|
|
2278
|
-
$removeEntities: $removeEntities,
|
|
2279
|
-
$removecrmactivity: $removecrmactivity,
|
|
2280
|
-
$rename: $rename,
|
|
2281
|
-
$renew: $renew,
|
|
2282
|
-
$reply: $reply,
|
|
2283
|
-
$repo: $repo,
|
|
2284
|
-
$report: $report,
|
|
2285
|
-
$reports: $reports,
|
|
2286
|
-
$repowidget: $repowidget,
|
|
2287
|
-
$request: $request,
|
|
2288
|
-
$requisite: $requisite,
|
|
2289
|
-
$reset: $reset,
|
|
2290
|
-
$resolveIdByPublicUrl: $resolveIdByPublicUrl,
|
|
2291
|
-
$resource: $resource,
|
|
2292
|
-
$resourcetype: $resourcetype,
|
|
2293
|
-
$restore: $restore,
|
|
2294
|
-
$restoreFromVersion: $restoreFromVersion,
|
|
2295
|
-
$result: $result,
|
|
2296
|
-
$resume: $resume,
|
|
2297
|
-
$revision: $revision,
|
|
2298
|
-
$rights: $rights,
|
|
2299
|
-
$robot: $robot,
|
|
2300
|
-
$role: $role,
|
|
2301
|
-
$roundingRule: $roundingRule,
|
|
2302
|
-
$sale: $sale,
|
|
2303
|
-
$save: $save,
|
|
2304
|
-
$schedule: $schedule,
|
|
2305
|
-
$schema: $schema,
|
|
2306
|
-
$search: $search,
|
|
2307
|
-
$searchCrmEntities: $searchCrmEntities,
|
|
2308
|
-
$section: $section,
|
|
2309
|
-
$send: $send,
|
|
2310
|
-
$sendContext: $sendContext,
|
|
2311
|
-
$sendMessage: $sendMessage,
|
|
2312
|
-
$sender: $sender,
|
|
2313
|
-
$senders: $senders,
|
|
2314
|
-
$server: $server,
|
|
2315
|
-
$service: $service,
|
|
2316
|
-
$session: $session,
|
|
2317
|
-
$set: $set,
|
|
2318
|
-
$setAccessCodes: $setAccessCodes,
|
|
2319
|
-
$setDelivery: $setDelivery,
|
|
2320
|
-
$setLandingRef: $setLandingRef,
|
|
2321
|
-
$setOwner: $setOwner,
|
|
2322
|
-
$setQuantity: $setQuantity,
|
|
2323
|
-
$setRights: $setRights,
|
|
2324
|
-
$setSiteRef: $setSiteRef,
|
|
2325
|
-
$setowner: $setowner,
|
|
2326
|
-
$settings: $settings,
|
|
2327
|
-
$share: $share,
|
|
2328
|
-
$sharetouser: $sharetouser,
|
|
2329
|
-
$shipment: $shipment,
|
|
2330
|
-
$shipmentItem: $shipmentItem,
|
|
2331
|
-
$shipmentProperty: $shipmentProperty,
|
|
2332
|
-
$shipmentPropertyValue: $shipmentPropertyValue,
|
|
2333
|
-
$show: $show,
|
|
2334
|
-
$showBlock: $showBlock,
|
|
2335
|
-
$sign: $sign,
|
|
2336
|
-
$silent: $silent,
|
|
2337
|
-
$sip: $sip,
|
|
2338
|
-
$site: $site,
|
|
2339
|
-
$skip: $skip,
|
|
2340
|
-
$sku: $sku,
|
|
2341
|
-
$slots: $slots,
|
|
2342
|
-
$socialnetwork: $socialnetwork,
|
|
2343
|
-
$sonet_group: $sonet_group,
|
|
2344
|
-
$source: $source,
|
|
2345
|
-
$spam: $spam,
|
|
2346
|
-
$stagehistory: $stagehistory,
|
|
2347
|
-
$stages: $stages,
|
|
2348
|
-
$start: $start,
|
|
2349
|
-
$startwatch: $startwatch,
|
|
2350
|
-
$startwithsound: $startwithsound,
|
|
2351
|
-
$startwithtext: $startwithtext,
|
|
2352
|
-
$statistic: $statistic,
|
|
2353
|
-
$status: $status,
|
|
2354
|
-
$statusLang: $statusLang,
|
|
2355
|
-
$statuslist: $statuslist,
|
|
2356
|
-
$stop: $stop,
|
|
2357
|
-
$stopwatch: $stopwatch,
|
|
2358
|
-
$storage: $storage,
|
|
2359
|
-
$store: $store,
|
|
2360
|
-
$storeProduct: $storeProduct,
|
|
2361
|
-
$subscribe: $subscribe,
|
|
2362
|
-
$syspage: $syspage,
|
|
2363
|
-
$system: $system,
|
|
2364
|
-
$tail: $tail,
|
|
2365
|
-
$task: $task,
|
|
2366
|
-
$tasks: $tasks,
|
|
2367
|
-
$telephony: $telephony,
|
|
2368
|
-
$template: $template,
|
|
2369
|
-
$terminate: $terminate,
|
|
2370
|
-
$text: $text,
|
|
2371
|
-
$textField: $textField,
|
|
2372
|
-
$thread: $thread,
|
|
2373
|
-
$time: $time,
|
|
2374
|
-
$timeMan: $timeMan,
|
|
2375
|
-
$timecontrol: $timecontrol,
|
|
2376
|
-
$timeline: $timeline,
|
|
2377
|
-
$todo: $todo,
|
|
2378
|
-
$trace: $trace,
|
|
2379
|
-
$tracking: $tracking,
|
|
2380
|
-
$tradeBinding: $tradeBinding,
|
|
2381
|
-
$tradePlatform: $tradePlatform,
|
|
2382
|
-
$transfer: $transfer,
|
|
2383
|
-
$tree: $tree,
|
|
2384
|
-
$trigger: $trigger,
|
|
2385
|
-
$tts: $tts,
|
|
2386
|
-
$type: $type,
|
|
2387
|
-
$types: $types,
|
|
2388
|
-
$unbind: $unbind,
|
|
2389
|
-
$unbindingFromGroup: $unbindingFromGroup,
|
|
2390
|
-
$unbindingFromMenu: $unbindingFromMenu,
|
|
2391
|
-
$unfavoriteBlock: $unfavoriteBlock,
|
|
2392
|
-
$unmute: $unmute,
|
|
2393
|
-
$unpay: $unpay,
|
|
2394
|
-
$unpin: $unpin,
|
|
2395
|
-
$unpinAll: $unpinAll,
|
|
2396
|
-
$unpublic: $unpublic,
|
|
2397
|
-
$unpublicFolder: $unpublicFolder,
|
|
2398
|
-
$unread: $unread,
|
|
2399
|
-
$unregister: $unregister,
|
|
2400
|
-
$unset: $unset,
|
|
2401
|
-
$unsubscribe: $unsubscribe,
|
|
2402
|
-
$upBlock: $upBlock,
|
|
2403
|
-
$update: $update,
|
|
2404
|
-
$updateAttrs: $updateAttrs,
|
|
2405
|
-
$updateAvatar: $updateAvatar,
|
|
2406
|
-
$updateCards: $updateCards,
|
|
2407
|
-
$updateCatalogProduct: $updateCatalogProduct,
|
|
2408
|
-
$updateColor: $updateColor,
|
|
2409
|
-
$updateContent: $updateContent,
|
|
2410
|
-
$updateDeadline: $updateDeadline,
|
|
2411
|
-
$updateDescription: $updateDescription,
|
|
2412
|
-
$updateFolder: $updateFolder,
|
|
2413
|
-
$updateNodes: $updateNodes,
|
|
2414
|
-
$updateResponsibleUser: $updateResponsibleUser,
|
|
2415
|
-
$updateStyles: $updateStyles,
|
|
2416
|
-
$updateTitle: $updateTitle,
|
|
2417
|
-
$upload: $upload,
|
|
2418
|
-
$uploadFile: $uploadFile,
|
|
2419
|
-
$uploadfile: $uploadfile,
|
|
2420
|
-
$uploadversion: $uploadversion,
|
|
2421
|
-
$url: $url,
|
|
2422
|
-
$user: $user,
|
|
2423
|
-
$userconsent: $userconsent,
|
|
2424
|
-
$userfield: $userfield,
|
|
2425
|
-
$userfieldtype: $userfieldtype,
|
|
2426
|
-
$users: $users,
|
|
2427
|
-
$v1: $v1,
|
|
2428
|
-
$v2: $v2,
|
|
2429
|
-
$vat: $vat,
|
|
2430
|
-
$version: $version,
|
|
2431
|
-
$voices: $voices,
|
|
2432
|
-
$volatileType: $volatileType,
|
|
2433
|
-
$vote: $vote,
|
|
2434
|
-
$voximplant: $voximplant,
|
|
2435
|
-
$waitlist: $waitlist,
|
|
2436
|
-
$workflow: $workflow,
|
|
2437
|
-
$workgroup: $workgroup,
|
|
2438
|
-
$writing: $writing
|
|
2439
|
-
});
|
|
2440
|
-
|
|
2441
|
-
class BXRestUserUserfield {
|
|
2442
|
-
constructor() {
|
|
2443
|
-
this.url = {
|
|
2444
|
-
list: [$user, $userfield, $list],
|
|
2445
|
-
};
|
|
2446
|
-
this.http = new HttpBXServices();
|
|
2447
|
-
}
|
|
2448
|
-
list() {
|
|
2449
|
-
return this.http.post(this.url.list);
|
|
2450
|
-
}
|
|
2451
|
-
}
|
|
2452
|
-
|
|
2453
|
-
class BXRestUser {
|
|
2454
|
-
constructor() {
|
|
2455
|
-
this.http = new HttpBXServices();
|
|
2456
|
-
this.userfield = new BXRestUserUserfield();
|
|
2457
|
-
this.url = {
|
|
2458
|
-
admin: [$user, 'admin'],
|
|
2459
|
-
get: [$user, $get],
|
|
2460
|
-
current: [$user, 'current'],
|
|
2461
|
-
update: [$user, $update],
|
|
2462
|
-
search: [$user, $search],
|
|
2463
|
-
access: [$user, 'access'],
|
|
2464
|
-
fields: [$user, 'fields'],
|
|
2465
|
-
};
|
|
2466
|
-
}
|
|
2467
|
-
admin() {
|
|
2468
|
-
return this.http.post(this.url.admin);
|
|
2469
|
-
}
|
|
2470
|
-
get(params = {}) {
|
|
2471
|
-
return this.http.post(this.url.get, params);
|
|
2472
|
-
}
|
|
2473
|
-
current() {
|
|
2474
|
-
return this.http.post(this.url.current, {});
|
|
2475
|
-
}
|
|
2476
|
-
update(user) {
|
|
2477
|
-
return this.http.post(this.url.update, user);
|
|
2478
|
-
}
|
|
2479
|
-
search(params) {
|
|
2480
|
-
return this.http.post(this.url.search, params);
|
|
2481
|
-
}
|
|
2482
|
-
access(access) {
|
|
2483
|
-
return this.http.post(this.url.access, { ACCESS: access });
|
|
2484
|
-
}
|
|
2485
|
-
fields() {
|
|
2486
|
-
return this.http.post(this.url.fields);
|
|
2487
|
-
}
|
|
2488
|
-
}
|
|
2489
|
-
|
|
2490
|
-
class BXRestListsElement {
|
|
2491
|
-
constructor() {
|
|
2492
|
-
this.url = {
|
|
2493
|
-
add: [$lists, $element, $add],
|
|
2494
|
-
get: [$lists, $element, $get],
|
|
2495
|
-
};
|
|
2496
|
-
this.http = new HttpBXServices();
|
|
2497
|
-
}
|
|
2498
|
-
get(pram) {
|
|
2499
|
-
return this.http.post(this.url.get, pram);
|
|
2500
|
-
}
|
|
2501
|
-
add(param) {
|
|
2502
|
-
return this.http.post(this.url.add, param);
|
|
2503
|
-
}
|
|
2504
|
-
}
|
|
2505
|
-
|
|
2506
|
-
class BXRestListsField {
|
|
2507
|
-
constructor() {
|
|
2508
|
-
this.url = {
|
|
2509
|
-
// /**
|
|
2510
|
-
// * Метод создает поле списка
|
|
2511
|
-
// */
|
|
2512
|
-
// add: [$lists, $field, $add],
|
|
2513
|
-
// /**
|
|
2514
|
-
// * Метод удаляет поле списка
|
|
2515
|
-
// */
|
|
2516
|
-
// delete: [$lists, $field, $delete],
|
|
2517
|
-
/**
|
|
2518
|
-
* Метод возвращает данные поля
|
|
2519
|
-
*/
|
|
2520
|
-
get: [$lists, $field, $get],
|
|
2521
|
-
// type: {
|
|
2522
|
-
// /**
|
|
2523
|
-
// * Метод возвращает доступные типа полей для указанного списка
|
|
2524
|
-
// */
|
|
2525
|
-
// get: [$lists, $field, $type, $get],
|
|
2526
|
-
// },
|
|
2527
|
-
// /**
|
|
2528
|
-
// * Метод обновляет поле списка
|
|
2529
|
-
// */
|
|
2530
|
-
// update: [$lists, $field, $update],
|
|
2531
|
-
};
|
|
2532
|
-
this.http = new HttpBXServices();
|
|
2533
|
-
}
|
|
2534
|
-
get(param) {
|
|
2535
|
-
return this.http.post(this.url.get, param);
|
|
2536
|
-
}
|
|
2537
|
-
}
|
|
2538
|
-
|
|
2539
|
-
class BXRestLists {
|
|
2540
|
-
constructor() {
|
|
2541
|
-
this.url = {
|
|
2542
|
-
// /**
|
|
2543
|
-
// * Метод создаёт список
|
|
2544
|
-
// */
|
|
2545
|
-
// add: [$lists, $add],
|
|
2546
|
-
// /**
|
|
2547
|
-
// * Метод удаляет список
|
|
2548
|
-
// */
|
|
2549
|
-
// delete: [$lists, $delete],
|
|
2550
|
-
/**
|
|
2551
|
-
* Метод возвращает данные по спискам
|
|
2552
|
-
*/
|
|
2553
|
-
get: [$lists, $get],
|
|
2554
|
-
// /**
|
|
2555
|
-
// * Метод обновляет существующий список
|
|
2556
|
-
// */
|
|
2557
|
-
// update: [$lists, $update],
|
|
2558
|
-
// /**
|
|
2559
|
-
// * Метод возвращает id типа инфоблока
|
|
2560
|
-
// */
|
|
2561
|
-
// getIBlockTypeId: [$lists, $get, $iblock, $type, $id],
|
|
2562
|
-
element: {
|
|
2563
|
-
/**
|
|
2564
|
-
* Метод создаёт элемент списка
|
|
2565
|
-
*/
|
|
2566
|
-
add: [$lists, $element, $add],
|
|
2567
|
-
// /**
|
|
2568
|
-
// * Метод удаляет элемент списка TODO: Реализовать
|
|
2569
|
-
// */
|
|
2570
|
-
// delete: [$lists, $element, $delete],
|
|
2571
|
-
/**
|
|
2572
|
-
* Метод возвращает список элементов или элемент
|
|
2573
|
-
*/
|
|
2574
|
-
get: [$lists, $element, $get],
|
|
2575
|
-
// /**
|
|
2576
|
-
// * Метод обновляет элемент списка TODO: Реализовать
|
|
2577
|
-
// */
|
|
2578
|
-
// update: [$lists, $element, $update],
|
|
2579
|
-
// /**
|
|
2580
|
-
// * Метод возвращает путь к файлу TODO: Реализовать
|
|
2581
|
-
// */
|
|
2582
|
-
// getFileUrl: [$lists, $element, $get, $file, $url]
|
|
2583
|
-
},
|
|
2584
|
-
field: {
|
|
2585
|
-
// /**
|
|
2586
|
-
// * Метод создает поле списка
|
|
2587
|
-
// */
|
|
2588
|
-
// add: [$lists, $field, $add],
|
|
2589
|
-
// /**
|
|
2590
|
-
// * Метод удаляет поле списка
|
|
2591
|
-
// */
|
|
2592
|
-
// delete: [$lists, $field, $delete],
|
|
2593
|
-
/**
|
|
2594
|
-
* Метод возвращает данные поля
|
|
2595
|
-
*/
|
|
2596
|
-
get: [$lists, $field, $get],
|
|
2597
|
-
// type: {
|
|
2598
|
-
// /**
|
|
2599
|
-
// * Метод возвращает доступные типа полей для указанного списка
|
|
2600
|
-
// */
|
|
2601
|
-
// get: [$lists, $field, $type, $get],
|
|
2602
|
-
// },
|
|
2603
|
-
// /**
|
|
2604
|
-
// * Метод обновляет поле списка
|
|
2605
|
-
// */
|
|
2606
|
-
// update: [$lists, $field, $update],
|
|
2607
|
-
}
|
|
2608
|
-
};
|
|
2609
|
-
this.element = new BXRestListsElement();
|
|
2610
|
-
this.field = new BXRestListsField();
|
|
2611
|
-
this.http = new HttpBXServices();
|
|
2612
|
-
}
|
|
2613
|
-
// getField(pram: getListFieldParam): Observable<iHttpAnswerBX<FieldItemLists[]> | undefined> {
|
|
2614
|
-
// return this.http.post<iHttpAnswerBX<{ [key: string]: FieldItemLists }>>(this.url.field.get, pram)
|
|
2615
|
-
// }
|
|
2616
|
-
get(param) {
|
|
2617
|
-
return this.http.post(this.url.get, param);
|
|
2618
|
-
}
|
|
2619
|
-
}
|
|
2620
|
-
|
|
2621
|
-
class BXRestTaskElapsedItem {
|
|
2622
|
-
constructor() {
|
|
2623
|
-
this.url = {
|
|
2624
|
-
getList: [$task, $elapseditem, $getlist],
|
|
2625
|
-
add: [$task, $elapseditem, $add],
|
|
2626
|
-
delete: [$task, $elapseditem, $delete],
|
|
2627
|
-
isActionAllowed: [$task, $elapseditem, $isactionallowed],
|
|
2628
|
-
update: [$task, $elapseditem, $update],
|
|
2629
|
-
};
|
|
2630
|
-
this.http = new HttpBXServices();
|
|
2631
|
-
}
|
|
2632
|
-
getList(param = {}) {
|
|
2633
|
-
return this.http.post(this.url.getList, param);
|
|
2634
|
-
}
|
|
2635
|
-
add(param) {
|
|
2636
|
-
return this.http.post(this.url.add, param);
|
|
2637
|
-
}
|
|
2638
|
-
update(param) {
|
|
2639
|
-
return this.http.post(this.url.update, param);
|
|
2640
|
-
}
|
|
2641
|
-
del(param) {
|
|
2642
|
-
return this.http.post(this.url.delete, param);
|
|
2643
|
-
}
|
|
2644
|
-
/**
|
|
2645
|
-
* idAction:
|
|
2646
|
-
* 1 - ACTION_ELAPSED_TIME_ADD
|
|
2647
|
-
* 2 - ACTION_ELAPSED_TIME_MODIFY
|
|
2648
|
-
* 3 - ACTION_ELAPSED_TIME_REMOVE
|
|
2649
|
-
* ITEMID - обязателен в конечной отправке но не обязателен для ACTION_ELAPSED_TIME_ADD,
|
|
2650
|
-
* поэтому этом методе можно ставить "1" например, так же метод может выдавать ошибки о не доступности задачи
|
|
2651
|
-
* поэтому рекомендую воспользоваться аналогичным методом в пространстве имен navvy
|
|
2652
|
-
* @param param
|
|
2653
|
-
*/
|
|
2654
|
-
isActionAllowed(param) {
|
|
2655
|
-
return this.http.post(this.url.isActionAllowed, param);
|
|
2656
|
-
}
|
|
2657
|
-
}
|
|
2658
|
-
|
|
2659
|
-
class BXRestTaskCommentItem {
|
|
2660
|
-
constructor() {
|
|
2661
|
-
this.url = {
|
|
2662
|
-
getManifest: [$task, $commentitem, $getmanifest], // Возвращает список методов и их описание
|
|
2663
|
-
getList: [$task, $commentitem, $getlist], // Возвращает список комментариев к задаче
|
|
2664
|
-
get: [$task, $commentitem, $get], // Возвращает комментарий к задаче
|
|
2665
|
-
add: [$task, $commentitem, $add], // Создает новый комментарий к задаче
|
|
2666
|
-
update: [$task, $commentitem, $update], // Обновляет данные комментария
|
|
2667
|
-
delete: [$task, $commentitem, $delete], // Удаляет комментарий
|
|
2668
|
-
isActionAllowed: [$task, $commentitem, $isactionallowed], // Проверяет, разрешено ли действие
|
|
2669
|
-
};
|
|
2670
|
-
this.http = new HttpBXServices();
|
|
2671
|
-
}
|
|
2672
|
-
add(param) {
|
|
2673
|
-
return this.http.post(this.url.add, param);
|
|
2674
|
-
}
|
|
2675
|
-
update(param) {
|
|
2676
|
-
return this.http.post(this.url.update, param);
|
|
2677
|
-
}
|
|
2678
|
-
get(param) {
|
|
2679
|
-
return this.http.post(this.url.get, param);
|
|
2680
|
-
}
|
|
2681
|
-
getlist(param) {
|
|
2682
|
-
return this.http.post(this.url.getList, param);
|
|
2683
|
-
}
|
|
2684
|
-
del(param) {
|
|
2685
|
-
return this.http.post(this.url.delete, param);
|
|
2686
|
-
}
|
|
2687
|
-
}
|
|
2688
|
-
|
|
2689
|
-
class BXRestTaskPlanner {
|
|
2690
|
-
constructor() {
|
|
2691
|
-
this.http = new HttpBXServices();
|
|
2692
|
-
}
|
|
2693
|
-
getList() {
|
|
2694
|
-
return this.http.post([$task, $planner, $getlist]);
|
|
2695
|
-
}
|
|
2696
|
-
}
|
|
2697
|
-
|
|
2698
|
-
class BXRestTaskItemUserField {
|
|
2699
|
-
constructor() {
|
|
2700
|
-
this.url = {
|
|
2701
|
-
getList: [$task, $item, $userfield, 'getlist'],
|
|
2702
|
-
};
|
|
2703
|
-
this.http = new HttpBXServices();
|
|
2704
|
-
}
|
|
2705
|
-
getList(param) {
|
|
2706
|
-
return this.http.post(this.url.getList, param);
|
|
2707
|
-
}
|
|
2708
|
-
}
|
|
2709
|
-
|
|
2710
|
-
class BXRestTaskItem {
|
|
2711
|
-
constructor() {
|
|
2712
|
-
this.userField = new BXRestTaskItemUserField();
|
|
2713
|
-
}
|
|
2714
|
-
}
|
|
2715
|
-
|
|
2716
|
-
class BXRestTask {
|
|
2717
|
-
constructor() {
|
|
2718
|
-
this.elapsedItem = new BXRestTaskElapsedItem();
|
|
2719
|
-
this.commentItem = new BXRestTaskCommentItem();
|
|
2720
|
-
this.planner = new BXRestTaskPlanner();
|
|
2721
|
-
this.item = new BXRestTaskItem();
|
|
2722
|
-
}
|
|
2723
|
-
}
|
|
2724
|
-
|
|
2725
|
-
class BXRestTasksTaskResult {
|
|
2726
|
-
constructor() {
|
|
2727
|
-
this.url = {
|
|
2728
|
-
list: [$tasks, $task, $result, $list],
|
|
2729
|
-
addFromComment: [$tasks, $task, $result, 'addFromComment'],
|
|
2730
|
-
deleteFromComment: [$tasks, $task, $result, 'deleteFromComment'],
|
|
2731
|
-
};
|
|
2732
|
-
this.http = new HttpBXServices();
|
|
2733
|
-
}
|
|
2734
|
-
deleteFromComment(commentID) {
|
|
2735
|
-
return this.http.post(this.url.deleteFromComment, { commentId: commentID });
|
|
2736
|
-
}
|
|
2737
|
-
addFromComment(param) {
|
|
2738
|
-
return this.http.post(this.url.addFromComment, param);
|
|
2739
|
-
}
|
|
2740
|
-
list(param) {
|
|
2741
|
-
return this.http.post(this.url.list, param);
|
|
2742
|
-
}
|
|
2743
|
-
}
|
|
2744
|
-
|
|
2745
|
-
class BXRestTasksTask {
|
|
2746
|
-
constructor() {
|
|
2747
|
-
this.url = {
|
|
2748
|
-
add: [$tasks, $task, $add],
|
|
2749
|
-
approve: [$tasks, $task, $approve],
|
|
2750
|
-
complete: [$tasks, $task, $complete],
|
|
2751
|
-
defer: [$tasks, $task, $defer],
|
|
2752
|
-
get: [$tasks, $task, $get],
|
|
2753
|
-
getFields: [$tasks, $task, $getFields],
|
|
2754
|
-
getAccess: [$tasks, $task, $getaccess],
|
|
2755
|
-
list: [$tasks, $task, $list],
|
|
2756
|
-
update: [$tasks, $task, $update],
|
|
2757
|
-
};
|
|
2758
|
-
this.result = new BXRestTasksTaskResult();
|
|
2759
|
-
this.http = new HttpBXServices();
|
|
2760
|
-
}
|
|
2761
|
-
add(param) {
|
|
2762
|
-
return this.http.post(this.url.add, param);
|
|
2763
|
-
}
|
|
2764
|
-
approve(param) {
|
|
2765
|
-
return this.http.post(this.url.approve, param);
|
|
2766
|
-
}
|
|
2767
|
-
complete(param) {
|
|
2768
|
-
return this.http.post(this.url.complete, param);
|
|
2769
|
-
}
|
|
2770
|
-
defer(param) {
|
|
2771
|
-
return this.http.post(this.url.defer, param);
|
|
2772
|
-
}
|
|
2773
|
-
update(param) {
|
|
2774
|
-
return this.http.post(this.url.update, param);
|
|
2775
|
-
}
|
|
2776
|
-
get(param) {
|
|
2777
|
-
return this.http.post(this.url.get, param);
|
|
2778
|
-
}
|
|
2779
|
-
list(param) {
|
|
2780
|
-
return this.http.post(this.url.list, param);
|
|
2781
|
-
}
|
|
2782
|
-
/*
|
|
2783
|
-
listArray(requestArray: RequestApiTaskListBX = {}) {
|
|
2784
|
-
return this.list(requestArray).pipe(
|
|
2785
|
-
map(v => this.http.mapResult(v)),
|
|
2786
|
-
map(v => (v && v.tasks) ? v.tasks : [])
|
|
2787
|
-
)
|
|
2788
|
-
}
|
|
2789
|
-
|
|
2790
|
-
listAll(requestArray: RequestApiTaskListBX = {}, cache = false): Observable<TaskBX[]> {
|
|
2791
|
-
if (!requestArray.select) {
|
|
2792
|
-
requestArray.select = this.def.select
|
|
2793
|
-
if (cache) {
|
|
2794
|
-
return this.storeTask$.pipe(
|
|
2795
|
-
take(1),
|
|
2796
|
-
mergeMap(tasks => {
|
|
2797
|
-
if (tasks && tasks.data.http.list && requestArray.filter && requestArray.filter.ID) {
|
|
2798
|
-
const ids = (typeof requestArray.filter.ID === 'number') ? [requestArray.filter.ID] : requestArray.filter.ID
|
|
2799
|
-
let filter = tasks.data.http.list.filter(i => (i.id) ? ids.includes(i.id) : false)
|
|
2800
|
-
if (filter.length === ids.length) {
|
|
2801
|
-
return of(filter)
|
|
2802
|
-
}
|
|
2803
|
-
}
|
|
2804
|
-
return this.getEndListArray(requestArray)
|
|
2805
|
-
})
|
|
2806
|
-
)
|
|
2807
|
-
}
|
|
2808
|
-
return this.getEndListArray(requestArray)
|
|
2809
|
-
}
|
|
2810
|
-
return this.getEndListArray(requestArray)
|
|
2811
|
-
}
|
|
2812
|
-
|
|
2813
|
-
getEndListArray(requestArray: RequestApiTaskListBX): Observable<TaskBX[]> {
|
|
2814
|
-
return this.list(requestArray).pipe(
|
|
2815
|
-
mergeMap((items: AnswerApiTaskBX | undefined): ObservableInput<any> | Observable<AnswerApiTaskBX[]> => {
|
|
2816
|
-
if (items && items.result && typeof items.result.tasks === 'object') {
|
|
2817
|
-
const items$ = of(items.result.tasks)
|
|
2818
|
-
if (items.next) {
|
|
2819
|
-
this.nowLoad$.next({
|
|
2820
|
-
total: (items.total) ? items.total : 0,
|
|
2821
|
-
next: items.next
|
|
2822
|
-
})
|
|
2823
|
-
requestArray.start = items.next
|
|
2824
|
-
return this.getEndListArray(requestArray).pipe(
|
|
2825
|
-
map(vEnd => {
|
|
2826
|
-
if (vEnd && items.result.tasks) {
|
|
2827
|
-
return [...items.result.tasks, ...vEnd]
|
|
2828
|
-
}
|
|
2829
|
-
return (items.result.tasks) ? items.result.tasks : []
|
|
2830
|
-
}))
|
|
2831
|
-
}
|
|
2832
|
-
this.nowLoad$.next({
|
|
2833
|
-
total: 0,
|
|
2834
|
-
next: 0
|
|
2835
|
-
})
|
|
2836
|
-
return items$
|
|
2837
|
-
} else {
|
|
2838
|
-
return of([])
|
|
2839
|
-
}
|
|
2840
|
-
})
|
|
2841
|
-
)
|
|
2842
|
-
}
|
|
2843
|
-
*/
|
|
2844
|
-
getFields() {
|
|
2845
|
-
return this.http.post(this.url.getFields);
|
|
2846
|
-
}
|
|
2847
|
-
getAccess(param) {
|
|
2848
|
-
return this.http.post(this.url.getAccess, param);
|
|
2849
|
-
}
|
|
2850
|
-
}
|
|
2851
|
-
|
|
2852
|
-
class BXRestTasks {
|
|
2853
|
-
constructor() {
|
|
2854
|
-
this.task = new BXRestTasksTask();
|
|
2855
|
-
}
|
|
2856
|
-
}
|
|
2857
|
-
|
|
2858
|
-
class BXRestDiskFile {
|
|
2859
|
-
constructor() {
|
|
2860
|
-
this.url = {
|
|
2861
|
-
get: [$disk, $file, $get],
|
|
2862
|
-
markDeleted: [$disk, $file, $markdeleted],
|
|
2863
|
-
};
|
|
2864
|
-
this.http = new HttpBXServices();
|
|
2865
|
-
}
|
|
2866
|
-
get(param) {
|
|
2867
|
-
return this.http.post(this.url.get, param);
|
|
2868
|
-
}
|
|
2869
|
-
markDeleted(param) {
|
|
2870
|
-
return this.http.post(this.url.markDeleted, param);
|
|
2871
|
-
}
|
|
2872
|
-
}
|
|
2873
|
-
|
|
2874
|
-
class BXRestDiskFolder {
|
|
2875
|
-
constructor() {
|
|
2876
|
-
this.url = {
|
|
2877
|
-
getFields: [$disk, $folder, $getFields],
|
|
2878
|
-
get: [$disk, $folder, $get],
|
|
2879
|
-
getChildren: [$disk, $folder, $getchildren],
|
|
2880
|
-
addSubFolder: [$disk, $folder, 'addsubfolder'],
|
|
2881
|
-
copyTo: [$disk, $folder, $copyto],
|
|
2882
|
-
moveTo: [$disk, $folder, $moveto],
|
|
2883
|
-
rename: [$disk, $folder, $rename],
|
|
2884
|
-
deleteTree: [$disk, $folder, 'deletetree'],
|
|
2885
|
-
markDeleted: [$disk, $folder, $markdeleted],
|
|
2886
|
-
restore: [$disk, $folder, $restore],
|
|
2887
|
-
uploadFile: [$disk, $folder, $uploadfile],
|
|
2888
|
-
getExternalLink: [$disk, $folder, 'getExternalLink'],
|
|
2889
|
-
};
|
|
2890
|
-
this.http = new HttpBXServices();
|
|
2891
|
-
}
|
|
2892
|
-
/**
|
|
2893
|
-
* Возвращает папку по идентификатору
|
|
2894
|
-
*
|
|
2895
|
-
* @param param
|
|
2896
|
-
*/
|
|
2897
|
-
get(param) {
|
|
2898
|
-
return this.http.post(this.url.get, param);
|
|
2899
|
-
}
|
|
2900
|
-
/**
|
|
2901
|
-
* Создает дочернюю папку
|
|
2902
|
-
*
|
|
2903
|
-
* @param param
|
|
2904
|
-
*/
|
|
2905
|
-
addSubFolder(param) {
|
|
2906
|
-
return this.http.post(this.url.addSubFolder, param);
|
|
2907
|
-
}
|
|
2908
|
-
/**
|
|
2909
|
-
* Копирует папку в указанную папку
|
|
2910
|
-
*
|
|
2911
|
-
* @param param
|
|
2912
|
-
*/
|
|
2913
|
-
copyTo(param) {
|
|
2914
|
-
return this.http.post(this.url.copyTo, param);
|
|
2915
|
-
}
|
|
2916
|
-
/**
|
|
2917
|
-
* Перемещает папку в указанную папку
|
|
2918
|
-
*
|
|
2919
|
-
* @param param
|
|
2920
|
-
*/
|
|
2921
|
-
moveTo(param) {
|
|
2922
|
-
return this.http.post(this.url.moveTo, param);
|
|
2923
|
-
}
|
|
2924
|
-
/**
|
|
2925
|
-
* Переименовывает папку
|
|
2926
|
-
*
|
|
2927
|
-
* @param param
|
|
2928
|
-
*/
|
|
2929
|
-
rename(param) {
|
|
2930
|
-
return this.http.post(this.url.rename, param);
|
|
2931
|
-
}
|
|
2932
|
-
/**
|
|
2933
|
-
* Уничтожает папку и всё её дочерние элементы навсегда
|
|
2934
|
-
* В ответе 'result': true - успешное уничтожение папки
|
|
2935
|
-
*
|
|
2936
|
-
* @param param
|
|
2937
|
-
*/
|
|
2938
|
-
deleteTree(param) {
|
|
2939
|
-
return this.http.post(this.url.deleteTree, param);
|
|
2940
|
-
}
|
|
2941
|
-
/**
|
|
2942
|
-
* Перемещает папку в корзину
|
|
2943
|
-
*
|
|
2944
|
-
* @param param
|
|
2945
|
-
*/
|
|
2946
|
-
markDeleted(param) {
|
|
2947
|
-
return this.http.post(this.url.markDeleted, param);
|
|
2948
|
-
}
|
|
2949
|
-
/**
|
|
2950
|
-
* Восстанавливает папку из корзины
|
|
2951
|
-
*
|
|
2952
|
-
* @param param
|
|
2953
|
-
*/
|
|
2954
|
-
restore(param) {
|
|
2955
|
-
return this.http.post(this.url.restore, param);
|
|
2956
|
-
}
|
|
2957
|
-
/**
|
|
2958
|
-
* Метод возвращает публичную ссылку
|
|
2959
|
-
*
|
|
2960
|
-
* @param param
|
|
2961
|
-
*/
|
|
2962
|
-
getExternalLink(param) {
|
|
2963
|
-
return this.http.post(this.url.restore, param);
|
|
2964
|
-
}
|
|
2965
|
-
/**
|
|
2966
|
-
* Возвращает описание полей папки
|
|
2967
|
-
*/
|
|
2968
|
-
getFields() {
|
|
2969
|
-
return this.http.post(this.url.getFields);
|
|
2970
|
-
}
|
|
2971
|
-
/**
|
|
2972
|
-
* Загружает новый файл в указанную папку
|
|
2973
|
-
*
|
|
2974
|
-
* @param param
|
|
2975
|
-
*/
|
|
2976
|
-
uploadFile(param) {
|
|
2977
|
-
return this.http.post(this.url.uploadFile, param);
|
|
2978
|
-
}
|
|
2979
|
-
/**
|
|
2980
|
-
* Возвращает список файлов и папок, которые находятся непосредственно в папке
|
|
2981
|
-
*
|
|
2982
|
-
* @param param
|
|
2983
|
-
*/
|
|
2984
|
-
getChildren(param) {
|
|
2985
|
-
return this.http.post(this.url.getChildren, param);
|
|
2986
|
-
}
|
|
2987
|
-
}
|
|
2988
|
-
|
|
2989
|
-
class BXRestDiskAttachedObject {
|
|
2990
|
-
constructor() {
|
|
2991
|
-
this.url = {
|
|
2992
|
-
get: [$disk, 'attachedObject', $get],
|
|
2993
|
-
};
|
|
2994
|
-
this.http = new HttpBXServices();
|
|
2995
|
-
}
|
|
2996
|
-
get(param) {
|
|
2997
|
-
return this.http.post(this.url.get, param);
|
|
2998
|
-
}
|
|
2999
|
-
}
|
|
3000
|
-
|
|
3001
|
-
class BXRestDisk {
|
|
3002
|
-
constructor() {
|
|
3003
|
-
this.file = new BXRestDiskFile();
|
|
3004
|
-
this.folder = new BXRestDiskFolder();
|
|
3005
|
-
this.attachedObject = new BXRestDiskAttachedObject();
|
|
3006
|
-
}
|
|
3007
|
-
}
|
|
3008
|
-
|
|
3009
|
-
class BXRestBizProcWorkflowInstance {
|
|
3010
|
-
}
|
|
3011
|
-
|
|
3012
|
-
class BXRestBizProcWorkflowTemplate {
|
|
3013
|
-
}
|
|
3014
|
-
|
|
3015
|
-
class HttpNavvyServices {
|
|
3016
|
-
constructor() {
|
|
3017
|
-
this.httpServices = new HttpBXServices();
|
|
3018
|
-
}
|
|
3019
|
-
// Реализация метода
|
|
3020
|
-
post(url, params) {
|
|
3021
|
-
if (params === undefined) {
|
|
3022
|
-
params = {};
|
|
3023
|
-
}
|
|
3024
|
-
return this.httpServices.post(url, params);
|
|
3025
|
-
}
|
|
3026
|
-
}
|
|
3027
|
-
|
|
3028
|
-
class BXRestBizProcWorkflow {
|
|
3029
|
-
constructor() {
|
|
3030
|
-
this.instances = new BXRestBizProcWorkflowInstance();
|
|
3031
|
-
this.template = new BXRestBizProcWorkflowTemplate();
|
|
3032
|
-
this.http = new HttpNavvyServices();
|
|
3033
|
-
}
|
|
3034
|
-
/**
|
|
3035
|
-
* Запускает Бизнес-процесс
|
|
3036
|
-
*/
|
|
3037
|
-
start(param) {
|
|
3038
|
-
return this.http.post([$bizproc, $workflow, $start], param);
|
|
3039
|
-
}
|
|
3040
|
-
}
|
|
3041
|
-
|
|
3042
|
-
class BXRestBizProcActivity {
|
|
3043
|
-
}
|
|
3044
|
-
|
|
3045
|
-
class BXRestBizProcTask {
|
|
3046
|
-
}
|
|
3047
|
-
|
|
3048
|
-
class BXRestBizProcRobot {
|
|
3049
|
-
}
|
|
3050
|
-
|
|
3051
|
-
class BXRestBizProcEvent {
|
|
3052
|
-
}
|
|
3053
|
-
|
|
3054
|
-
class BXRestBizProc {
|
|
3055
|
-
constructor() {
|
|
3056
|
-
this.workflow = new BXRestBizProcWorkflow();
|
|
3057
|
-
this.activity = new BXRestBizProcActivity();
|
|
3058
|
-
this.task = new BXRestBizProcTask();
|
|
3059
|
-
this.robot = new BXRestBizProcRobot();
|
|
3060
|
-
this.event = new BXRestBizProcEvent();
|
|
3061
|
-
}
|
|
3062
|
-
}
|
|
3063
|
-
|
|
3064
|
-
class BXRestLogBlogPost {
|
|
3065
|
-
constructor() {
|
|
3066
|
-
this.url = {
|
|
3067
|
-
add: [$log, $blogpost, $add],
|
|
3068
|
-
get: [$log, $blogpost, $get],
|
|
3069
|
-
};
|
|
3070
|
-
this.http = new HttpBXServices();
|
|
3071
|
-
}
|
|
3072
|
-
add(param) {
|
|
3073
|
-
return this.http.post(this.url.add, param);
|
|
3074
|
-
}
|
|
3075
|
-
get(param = {}) {
|
|
3076
|
-
return this.http.post(this.url.get, param);
|
|
3077
|
-
}
|
|
3078
|
-
}
|
|
3079
|
-
|
|
3080
|
-
class BXRestLogBlogComment {
|
|
3081
|
-
}
|
|
3082
|
-
|
|
3083
|
-
class BXRestLog {
|
|
3084
|
-
constructor() {
|
|
3085
|
-
this.blogPost = new BXRestLogBlogPost();
|
|
3086
|
-
this.blogComment = new BXRestLogBlogComment();
|
|
3087
|
-
}
|
|
3088
|
-
}
|
|
3089
|
-
|
|
3090
|
-
class BXRestSonetGroup {
|
|
3091
|
-
constructor() {
|
|
3092
|
-
this.url = {
|
|
3093
|
-
get: [$sonet_group, $get],
|
|
3094
|
-
};
|
|
3095
|
-
this.http = new HttpBXServices();
|
|
3096
|
-
}
|
|
3097
|
-
// // TODO: filter и select позже нормально описать
|
|
3098
|
-
// getList(filter: any = {}, select: iWorkgroupFields[] = ['ID', 'NAME']){
|
|
3099
|
-
// return this.httpPost<iHttpAnswerBX<{workgroups: iListWorkgroup[]}>>(
|
|
3100
|
-
// this.url.get,
|
|
3101
|
-
// {
|
|
3102
|
-
// order: select,
|
|
3103
|
-
// filter: filter
|
|
3104
|
-
// }
|
|
3105
|
-
// )
|
|
3106
|
-
// }
|
|
3107
|
-
get(param = {}) {
|
|
3108
|
-
return this.http.post(this.url.get, param);
|
|
3109
|
-
}
|
|
3110
|
-
}
|
|
3111
|
-
|
|
3112
|
-
class BXRestServer {
|
|
3113
|
-
constructor() {
|
|
3114
|
-
this.http = new HttpBXServices();
|
|
3115
|
-
this.url = {
|
|
3116
|
-
time: [$server, $time],
|
|
3117
|
-
};
|
|
3118
|
-
}
|
|
3119
|
-
time() {
|
|
3120
|
-
return this.http.post(this.url.time);
|
|
3121
|
-
}
|
|
3122
|
-
}
|
|
3123
|
-
|
|
3124
|
-
class BXRestDepartment {
|
|
3125
|
-
constructor() {
|
|
3126
|
-
this.url = {
|
|
3127
|
-
get: [$department, $get],
|
|
3128
|
-
del: [$department, $delete],
|
|
3129
|
-
add: [$department, $add],
|
|
3130
|
-
update: [$department, $update],
|
|
3131
|
-
};
|
|
3132
|
-
this.http = new HttpBXServices();
|
|
3133
|
-
}
|
|
3134
|
-
get(param = {}) {
|
|
3135
|
-
return this.http.post(this.url.get, param);
|
|
3136
|
-
}
|
|
3137
|
-
add(param) {
|
|
3138
|
-
return this.http.post(this.url.add, param);
|
|
3139
|
-
}
|
|
3140
|
-
del(param) {
|
|
3141
|
-
return this.http.post(this.url.del, param);
|
|
3142
|
-
}
|
|
3143
|
-
update(param) {
|
|
3144
|
-
return this.http.post(this.url.update, param);
|
|
3145
|
-
}
|
|
3146
|
-
}
|
|
3147
|
-
|
|
3148
|
-
class BXRestApp {
|
|
3149
|
-
constructor() {
|
|
3150
|
-
this.http = new HttpBXServices();
|
|
3151
|
-
}
|
|
3152
|
-
/**
|
|
3153
|
-
* Показ информации о приложении. Метод поддерживает безопасный вызов
|
|
3154
|
-
*/
|
|
3155
|
-
info() {
|
|
3156
|
-
return this.http.post(['app', 'info']);
|
|
3157
|
-
}
|
|
3158
|
-
}
|
|
3159
|
-
|
|
3160
|
-
class BXRestSocialNetWorkApiContentView {
|
|
3161
|
-
constructor() {
|
|
3162
|
-
this.url = {
|
|
3163
|
-
set: [$socialnetwork, $api, 'contentView', $set],
|
|
3164
|
-
};
|
|
3165
|
-
this.http = new HttpBXServices();
|
|
3166
|
-
}
|
|
3167
|
-
set(param) {
|
|
3168
|
-
return this.http.post(this.url.set, param);
|
|
3169
|
-
}
|
|
3170
|
-
}
|
|
3171
|
-
|
|
3172
|
-
class BXRestSocialNetWorkApiLiveFeedBlogPostImportant {
|
|
3173
|
-
constructor() {
|
|
3174
|
-
this.url = {
|
|
3175
|
-
vote: [$socialnetwork, $api, 'liveFeed', 'blogPost', 'important', 'vote'],
|
|
3176
|
-
};
|
|
3177
|
-
this.http = new HttpBXServices();
|
|
3178
|
-
}
|
|
3179
|
-
vote(param) {
|
|
3180
|
-
return this.http.post(this.url.vote, param);
|
|
3181
|
-
}
|
|
3182
|
-
}
|
|
3183
|
-
|
|
3184
|
-
class BXRestSocialNetWorkApiLiveFeedBlogPost {
|
|
3185
|
-
constructor() {
|
|
3186
|
-
this.important = new BXRestSocialNetWorkApiLiveFeedBlogPostImportant();
|
|
3187
|
-
}
|
|
3188
|
-
}
|
|
3189
|
-
|
|
3190
|
-
class BXRestSocialNetWorkApiLiveFeed {
|
|
3191
|
-
constructor() {
|
|
3192
|
-
this.blogPost = new BXRestSocialNetWorkApiLiveFeedBlogPost();
|
|
3193
|
-
}
|
|
3194
|
-
}
|
|
3195
|
-
|
|
3196
|
-
class BXRestSocialNetWorkApi {
|
|
3197
|
-
constructor() {
|
|
3198
|
-
this.contentView = new BXRestSocialNetWorkApiContentView();
|
|
3199
|
-
this.liveFeed = new BXRestSocialNetWorkApiLiveFeed();
|
|
3200
|
-
}
|
|
3201
|
-
}
|
|
3202
|
-
|
|
3203
|
-
class BXRestSocialNetWork {
|
|
3204
|
-
constructor() {
|
|
3205
|
-
// private http = new HttpBXServices)
|
|
3206
|
-
this.api = new BXRestSocialNetWorkApi();
|
|
3207
|
-
}
|
|
3208
|
-
}
|
|
3209
|
-
|
|
3210
|
-
class BXRestPullApplicationConfig {
|
|
3211
|
-
constructor() {
|
|
3212
|
-
this.http = new HttpBXServices();
|
|
3213
|
-
}
|
|
3214
|
-
get() {
|
|
3215
|
-
return this.http.post([$pull, $application, $config, $get]);
|
|
3216
|
-
}
|
|
3217
|
-
}
|
|
3218
|
-
|
|
3219
|
-
class BXRestPullConfig {
|
|
3220
|
-
constructor() {
|
|
3221
|
-
this.http = new HttpBXServices();
|
|
3222
|
-
this.config = new BXRestPullApplicationConfig();
|
|
3223
|
-
}
|
|
3224
|
-
get() {
|
|
3225
|
-
return this.http.post([$pull, $config, $get]);
|
|
3226
|
-
}
|
|
3227
|
-
}
|
|
3228
|
-
|
|
3229
|
-
class BXRestPullChannelPublic {
|
|
3230
|
-
constructor() {
|
|
3231
|
-
this.http = new HttpBXServices();
|
|
3232
|
-
/**
|
|
3233
|
-
* Пес его знает что за метод такой, судя по коду нужно всю инфу json объектом о пользователе передать,
|
|
3234
|
-
* но это не точно
|
|
3235
|
-
*/
|
|
3236
|
-
// list() {
|
|
3237
|
-
// return this.http.post<iBXRestPullChannelPublicGetHttp>([$pull, $channel, $public, $list])
|
|
3238
|
-
// }
|
|
3239
|
-
}
|
|
3240
|
-
get() {
|
|
3241
|
-
return this.http.post([$pull, $channel, $public, $get]);
|
|
3242
|
-
}
|
|
3243
|
-
}
|
|
3244
|
-
|
|
3245
|
-
class BXRestPull {
|
|
3246
|
-
constructor() {
|
|
3247
|
-
this.config = new BXRestPullConfig();
|
|
3248
|
-
this.channel = {
|
|
3249
|
-
public: new BXRestPullChannelPublic()
|
|
3250
|
-
};
|
|
3251
|
-
}
|
|
3252
|
-
}
|
|
3253
|
-
|
|
3254
|
-
class BXRest {
|
|
3255
|
-
constructor() {
|
|
3256
|
-
this.http = new HttpBXServices();
|
|
3257
|
-
this.user = new BXRestUser();
|
|
3258
|
-
this.lists = new BXRestLists();
|
|
3259
|
-
this.task = new BXRestTask();
|
|
3260
|
-
this.tasks = new BXRestTasks();
|
|
3261
|
-
this.disk = new BXRestDisk();
|
|
3262
|
-
this.bizProc = new BXRestBizProc();
|
|
3263
|
-
this.log = new BXRestLog();
|
|
3264
|
-
this.sonet_group = new BXRestSonetGroup();
|
|
3265
|
-
this.server = new BXRestServer();
|
|
3266
|
-
this.department = new BXRestDepartment();
|
|
3267
|
-
this.app = new BXRestApp();
|
|
3268
|
-
this.socialNetWork = new BXRestSocialNetWork();
|
|
3269
|
-
this.pull = new BXRestPull();
|
|
3270
|
-
}
|
|
3271
|
-
profile() {
|
|
3272
|
-
return this.http.post(['profile']);
|
|
3273
|
-
}
|
|
3274
|
-
batch(param, headers) {
|
|
3275
|
-
return this.http.post(['batch'], param, false, headers);
|
|
3276
|
-
}
|
|
3277
|
-
}
|
|
3278
|
-
|
|
3279
|
-
/**
|
|
3280
|
-
* Класс-прослойка-обработчик для методов работающих на альтернативной постраничной навигации тика как методы по
|
|
3281
|
-
* затраченному времени на задачи https://dev.1c-bitrix.ru/rest_help/tasks/task/elapseditem/index.php
|
|
3282
|
-
*
|
|
3283
|
-
* не завершенный класс, работаем от частного к общему
|
|
3284
|
-
*/
|
|
3285
|
-
class NavvyAlterPagNav extends NavvyPagBase {
|
|
3286
|
-
resAll() {
|
|
3287
|
-
let save = [];
|
|
3288
|
-
return this.resultAllEnd()
|
|
3289
|
-
.pipe(map(v => {
|
|
3290
|
-
if (v) {
|
|
3291
|
-
save.push(...v);
|
|
3292
|
-
}
|
|
3293
|
-
return save;
|
|
3294
|
-
}), last(), shareReplay(1));
|
|
3295
|
-
}
|
|
3296
|
-
resultAllEnd() {
|
|
3297
|
-
let BXRestClass = new BXRest();
|
|
3298
|
-
// return this.mapForVanillaEnd(this.func, this.param)
|
|
3299
|
-
return this.resFirstPage().pipe(mergeMap(items => {
|
|
3300
|
-
if (items && instanceOfiBXRestAnswerSuccess(items)) {
|
|
3301
|
-
if (items.total && items.next) {
|
|
3302
|
-
const count = [...Array(Math.floor(items.total / this.pageSize)).keys()];
|
|
3303
|
-
// Разделяем массив на блоки
|
|
3304
|
-
const chunks = [];
|
|
3305
|
-
for (let i = 0; i < count.length; i += this.pageSize) {
|
|
3306
|
-
chunks.push(count.slice(i, i + this.pageSize));
|
|
3307
|
-
}
|
|
3308
|
-
const batchRequests = chunks.map(chunk => {
|
|
3309
|
-
return BXRestClass.batch({
|
|
3310
|
-
halt: 1,
|
|
3311
|
-
cmd: chunk.map(i => {
|
|
3312
|
-
const param = clone(this.param);
|
|
3313
|
-
if (!param.PARAMS) {
|
|
3314
|
-
param.PARAMS = {
|
|
3315
|
-
NAV_PARAMS: {
|
|
3316
|
-
iNumPage: 0,
|
|
3317
|
-
nPageSize: 50
|
|
3318
|
-
}
|
|
3319
|
-
};
|
|
3320
|
-
}
|
|
3321
|
-
// Устанавливаем start в зависимости от индекса
|
|
3322
|
-
param.PARAMS.NAV_PARAMS.iNumPage = i + 2; // первая страница уже есть, старт со второй
|
|
3323
|
-
// Формируем строку запроса
|
|
3324
|
-
return this.http.getNameMethod(this.url)
|
|
3325
|
-
+ '?' + serializeBitrixParams(param);
|
|
3326
|
-
})
|
|
3327
|
-
}, this.requestHeaders);
|
|
3328
|
-
});
|
|
3329
|
-
return from(batchRequests).pipe(concatMap(request => request), // Выполняет запросы по очереди
|
|
3330
|
-
toArray(), // Собирает все результаты в массив
|
|
3331
|
-
map(results => {
|
|
3332
|
-
const res = items.result;
|
|
3333
|
-
for (let result of results) {
|
|
3334
|
-
if (result && instanceOfiBXRestAnswerSuccess(result) && result.result && result.result.result) {
|
|
3335
|
-
res.push(...result.result.result.map(i => i).flat());
|
|
3336
|
-
}
|
|
3337
|
-
}
|
|
3338
|
-
return (this.map) ?
|
|
3339
|
-
this.map(res)
|
|
3340
|
-
: res;
|
|
3341
|
-
}));
|
|
3342
|
-
}
|
|
3343
|
-
}
|
|
3344
|
-
return this.mapResultForGetAll(items);
|
|
3345
|
-
}), catchError(err => {
|
|
3346
|
-
// this.snackBar.error("Проблемы с поточным получение затреканого времени")
|
|
3347
|
-
console.error(err);
|
|
3348
|
-
return throwError(() => err);
|
|
3349
|
-
}));
|
|
3350
|
-
}
|
|
3351
|
-
mapResultForGetAll(items) {
|
|
3352
|
-
return (instanceOfiBXRestAnswerSuccess(items)) ? from([items.result]).pipe(map(v => (v && this.map) ? this.map(v) : v)) : from([]);
|
|
3353
|
-
}
|
|
3354
|
-
}
|
|
3355
|
-
|
|
3356
|
-
class NavvyPagNavWithUselessKey extends NavvyPagBase {
|
|
3357
|
-
constructor() {
|
|
3358
|
-
super(...arguments);
|
|
3359
|
-
this.save = [];
|
|
3360
|
-
}
|
|
3361
|
-
resAll() {
|
|
3362
|
-
let BXRestClass = new BXRest();
|
|
3363
|
-
return this.resFirstPage().pipe(mergeMap(items => {
|
|
3364
|
-
if (items && instanceOfiBXRestAnswerSuccess(items)) {
|
|
3365
|
-
if (items.total && items.next) {
|
|
3366
|
-
const count = [...Array(Math.floor(items.total / this.pageSize)).keys()];
|
|
3367
|
-
// Разделяем массив на блоки
|
|
3368
|
-
const chunks = [];
|
|
3369
|
-
for (let i = 0; i < count.length; i += this.pageSize) {
|
|
3370
|
-
chunks.push(count.slice(i, i + this.pageSize));
|
|
3371
|
-
}
|
|
3372
|
-
const batchRequests = chunks.map(chunk => {
|
|
3373
|
-
return BXRestClass.batch({
|
|
3374
|
-
halt: 1,
|
|
3375
|
-
cmd: chunk.map(i => {
|
|
3376
|
-
const param = clone(this.param);
|
|
3377
|
-
// Устанавливаем start в зависимости от индекса
|
|
3378
|
-
param.start = (i + 1) * this.pageSize;
|
|
3379
|
-
// Формируем строку запроса
|
|
3380
|
-
return this.http.getNameMethod(this.url)
|
|
3381
|
-
+ '?' + serializeBitrixParams(param);
|
|
3382
|
-
})
|
|
3383
|
-
}, this.requestHeaders).pipe(map(v => {
|
|
3384
|
-
if (v && instanceOfiBXRestAnswerSuccess(v) && v.result && v.result.result && items.result) {
|
|
3385
|
-
return Object.assign({}, items.result, v.result.result);
|
|
3386
|
-
}
|
|
3387
|
-
throw new Error('wrong batch');
|
|
3388
|
-
}));
|
|
3389
|
-
});
|
|
3390
|
-
return from(batchRequests).pipe(concatMap(request => request), // Выполняет запросы по очереди
|
|
3391
|
-
toArray()); // Собирает все результаты в массив
|
|
3392
|
-
/*
|
|
3393
|
-
return this.getAllTaskElapsedItem(func, param).pipe(
|
|
3394
|
-
map(vEnd => {
|
|
3395
|
-
if (vEnd && vEnd.result && items.result) {
|
|
3396
|
-
return merge(clone(vEnd), {result: [...items.result, ...vEnd.result]})
|
|
3397
|
-
}
|
|
3398
|
-
return items
|
|
3399
|
-
})
|
|
3400
|
-
)
|
|
3401
|
-
*/
|
|
3402
|
-
}
|
|
3403
|
-
else {
|
|
3404
|
-
return of([items.result]);
|
|
3405
|
-
}
|
|
3406
|
-
}
|
|
3407
|
-
return of(undefined);
|
|
3408
|
-
// return from([BXRestMapResult(items)])
|
|
3409
|
-
// as ReturnType<Observable<T | undefined>, Observable<R | undefined>>
|
|
3410
|
-
}), map(v => {
|
|
3411
|
-
if (v) {
|
|
3412
|
-
const mergedObject = v.reduce((acc, obj) => {
|
|
3413
|
-
return { ...acc, ...obj };
|
|
3414
|
-
}, {});
|
|
3415
|
-
if (this.map) {
|
|
3416
|
-
return this.map(mergedObject);
|
|
3417
|
-
}
|
|
3418
|
-
this.save.push(...v);
|
|
3419
|
-
return this.save;
|
|
3420
|
-
}
|
|
3421
|
-
return v;
|
|
3422
|
-
}), catchError(err => {
|
|
3423
|
-
// this.snackBar.error("Проблемы с поточным получение затреканого времени")
|
|
3424
|
-
console.error(err);
|
|
3425
|
-
return throwError(() => err);
|
|
3426
|
-
}));
|
|
3427
|
-
}
|
|
3428
|
-
}
|
|
3429
|
-
|
|
3430
|
-
class NavvyPagNavTasks extends NavvyPagBase {
|
|
3431
|
-
constructor(url, param, map, restApi) {
|
|
3432
|
-
// Без своего map результат — массив задач, как и обещают типы `.res()` и `.resAll()`.
|
|
3433
|
-
super(url, param, map ?? (result => (result?.tasks ?? [])), restApi);
|
|
3434
|
-
this.save = [];
|
|
3435
|
-
}
|
|
3436
|
-
resAll() {
|
|
3437
|
-
let save = [];
|
|
3438
|
-
return this.resultAllEnd()
|
|
3439
|
-
.pipe(map(v => {
|
|
3440
|
-
if (v) {
|
|
3441
|
-
save.push(...v);
|
|
3442
|
-
}
|
|
3443
|
-
return save;
|
|
3444
|
-
}), last(), shareReplay(1));
|
|
3445
|
-
}
|
|
3446
|
-
resultAllEnd() {
|
|
3447
|
-
let BXRestClass = new BXRest();
|
|
3448
|
-
return this.resFirstPage().pipe(mergeMap(items => {
|
|
3449
|
-
if (items && instanceOfiBXRestAnswerSuccess(items)) {
|
|
3450
|
-
this.save = [];
|
|
3451
|
-
// TODO: проверить будет ли быстрее работать метод в случаях когда total < 100 (то есть можно обойтись двумя прямыми запросами)
|
|
3452
|
-
if (items.total && items.total > 50) {
|
|
3453
|
-
const count = [...Array(Math.floor(items.total / this.pageSize)).keys()];
|
|
3454
|
-
// Разделяем массив на блоки
|
|
3455
|
-
const chunks = [];
|
|
3456
|
-
for (let i = 0; i < count.length; i += this.pageSize) {
|
|
3457
|
-
chunks.push(count.slice(i, i + this.pageSize));
|
|
3458
|
-
}
|
|
3459
|
-
const batchRequests = chunks.map(chunk => {
|
|
3460
|
-
return BXRestClass.batch({
|
|
3461
|
-
halt: 1,
|
|
3462
|
-
cmd: chunk.map(i => {
|
|
3463
|
-
const param = clone(this.param);
|
|
3464
|
-
// Устанавливаем start в зависимости от индекса
|
|
3465
|
-
param.start = (i + 1) * this.pageSize;
|
|
3466
|
-
// Формируем строку запроса
|
|
3467
|
-
return this.http.getNameMethod(this.url)
|
|
3468
|
-
+ '?' + serializeBitrixParams(param);
|
|
3469
|
-
})
|
|
3470
|
-
}, this.requestHeaders);
|
|
3471
|
-
});
|
|
3472
|
-
return from(batchRequests).pipe(concatMap(request => request), // Выполняет запросы по очереди
|
|
3473
|
-
toArray(), // Собирает все результаты в массив
|
|
3474
|
-
map(results => {
|
|
3475
|
-
if (items.result && items.result.tasks) {
|
|
3476
|
-
const res = items.result.tasks;
|
|
3477
|
-
for (let result of results) {
|
|
3478
|
-
if (result && instanceOfiBXRestAnswerSuccess(result) && result.result && result.result.result) {
|
|
3479
|
-
res.push(...result.result.result.filter(i => i).map(i => i.tasks).flat());
|
|
3480
|
-
}
|
|
3481
|
-
}
|
|
3482
|
-
return (this.map) ?
|
|
3483
|
-
this.map({ tasks: res })
|
|
3484
|
-
: res;
|
|
3485
|
-
}
|
|
3486
|
-
throw new Error('wrong batch');
|
|
3487
|
-
}));
|
|
3488
|
-
}
|
|
3489
|
-
return this.mapResForGetAll(items);
|
|
3490
|
-
}
|
|
3491
|
-
return this.mapResForGetAll(items);
|
|
3492
|
-
}), catchError(err => {
|
|
3493
|
-
console.error(err);
|
|
3494
|
-
return throwError(() => err);
|
|
3495
|
-
}));
|
|
3496
|
-
}
|
|
3497
|
-
mapResForGetAll(items) {
|
|
3498
|
-
return (instanceOfiBXRestAnswerSuccess(items)) ? from([items.result]).pipe(map(v => (v && this.map) ? this.map(v) : v)) : from([]);
|
|
3499
|
-
}
|
|
3500
|
-
}
|
|
3501
|
-
|
|
3502
|
-
class NavvyPag extends NavvyPagBase {
|
|
3503
|
-
constructor() {
|
|
3504
|
-
super(...arguments);
|
|
3505
|
-
this.save = [];
|
|
3506
|
-
}
|
|
3507
|
-
resAll() {
|
|
3508
|
-
let BXRestClass = new BXRest();
|
|
3509
|
-
return this.resFirstPage().pipe(mergeMap(items => {
|
|
3510
|
-
if (items && instanceOfiBXRestAnswerSuccess(items)) {
|
|
3511
|
-
this.save = [];
|
|
3512
|
-
// TODO: проверить будет ли быстрее работать метод в случаях когда total < 100 (то есть можно обойтись двумя прямыми запросами)
|
|
3513
|
-
if (items.total && items.total > this.pageSize) {
|
|
3514
|
-
const mathFloor = Math.floor(items.total / this.pageSize);
|
|
3515
|
-
const count = (mathFloor === items.total / this.pageSize) // если mathFloor равен обычному делению, значит один запрос будет лишним, так как результат первой страницы уже есть, а последняя в данном случаи будет пустая (или с мусорными аднными)
|
|
3516
|
-
? [...Array(mathFloor - 1).keys()]
|
|
3517
|
-
: [...Array(mathFloor).keys()];
|
|
3518
|
-
// Разделяем массив на блоки
|
|
3519
|
-
const chunks = [];
|
|
3520
|
-
for (let i = 0; i < count.length; i += this.pageSize) {
|
|
3521
|
-
chunks.push(count.slice(i, i + this.pageSize));
|
|
3522
|
-
}
|
|
3523
|
-
const batchRequests = chunks.map(chunk => {
|
|
3524
|
-
return BXRestClass.batch({
|
|
3525
|
-
halt: 1,
|
|
3526
|
-
cmd: chunk.map(i => {
|
|
3527
|
-
const param = clone(this.param);
|
|
3528
|
-
// Устанавливаем start в зависимости от индекса
|
|
3529
|
-
param.start = (i + 1) * this.pageSize;
|
|
3530
|
-
// Формируем строку запроса
|
|
3531
|
-
return this.http.getNameMethod(this.url)
|
|
3532
|
-
+ '?' + serializeBitrixParams(param);
|
|
3533
|
-
})
|
|
3534
|
-
}, this.requestHeaders).pipe();
|
|
3535
|
-
});
|
|
3536
|
-
return from(batchRequests).pipe(concatMap(request => request), // Выполняет запросы по очереди
|
|
3537
|
-
toArray(), // Собирает все результаты в массив
|
|
3538
|
-
map(results => {
|
|
3539
|
-
const res = items.result;
|
|
3540
|
-
for (let result of results) {
|
|
3541
|
-
if (result && instanceOfiBXRestAnswerSuccess(result) && result.result && result.result.result) {
|
|
3542
|
-
res.push(...result.result.result.map(i => i).flat());
|
|
3543
|
-
}
|
|
3544
|
-
}
|
|
3545
|
-
return (this.map) ?
|
|
3546
|
-
this.map(res)
|
|
3547
|
-
: res;
|
|
3548
|
-
}));
|
|
3549
|
-
}
|
|
3550
|
-
return this.mapResForGetAll(items);
|
|
3551
|
-
}
|
|
3552
|
-
return this.mapResForGetAll(items);
|
|
3553
|
-
}), map(v => {
|
|
3554
|
-
if (v) {
|
|
3555
|
-
this.save.push(...v);
|
|
3556
|
-
}
|
|
3557
|
-
return this.save;
|
|
3558
|
-
}));
|
|
3559
|
-
}
|
|
3560
|
-
mapResForGetAll(items) {
|
|
3561
|
-
return (instanceOfiBXRestAnswerSuccess(items)) ? from([items.result]).pipe(map(v => (v && this.map) ? this.map(v) : v)) : from([]);
|
|
3562
|
-
}
|
|
3563
|
-
}
|
|
3564
|
-
|
|
3565
|
-
class NavvyPagNavResultKey extends NavvyPagBase {
|
|
3566
|
-
constructor(url, param, key, map) {
|
|
3567
|
-
// Без своего map результат — массив по ключу, как и обещают типы `.res()` и `.resAll()`.
|
|
3568
|
-
// Иначе `.res()` отдал бы весь объект `{ items: [...] }`, а `.resAll()` упал бы на нём
|
|
3569
|
-
// при 50 записях и меньше: первая страница разворачивается через `save.push(...v)`.
|
|
3570
|
-
super(url, param, map ?? (result => (result?.[key] ?? [])));
|
|
3571
|
-
this.key = key;
|
|
3572
|
-
this.save = [];
|
|
3573
|
-
}
|
|
3574
|
-
resAll() {
|
|
3575
|
-
let save = [];
|
|
3576
|
-
return this.resultAllEnd()
|
|
3577
|
-
.pipe(map(v => {
|
|
3578
|
-
if (v) {
|
|
3579
|
-
save.push(...v);
|
|
3580
|
-
}
|
|
3581
|
-
return save;
|
|
3582
|
-
}), last(), shareReplay(1));
|
|
3583
|
-
}
|
|
3584
|
-
resultAllEnd() {
|
|
3585
|
-
let BXRestClass = new BXRest();
|
|
3586
|
-
return this.resFirstPage().pipe(mergeMap(items => {
|
|
3587
|
-
if (items && instanceOfiBXRestAnswerSuccess(items)) {
|
|
3588
|
-
this.save = [];
|
|
3589
|
-
if (items.total && items.total > 50) {
|
|
3590
|
-
const mathFloor = Math.floor(items.total / this.pageSize);
|
|
3591
|
-
const count = (mathFloor === items.total / this.pageSize)
|
|
3592
|
-
? [...Array(mathFloor - 1).keys()]
|
|
3593
|
-
: [...Array(mathFloor).keys()];
|
|
3594
|
-
const chunks = [];
|
|
3595
|
-
for (let i = 0; i < count.length; i += this.pageSize) {
|
|
3596
|
-
chunks.push(count.slice(i, i + this.pageSize));
|
|
3597
|
-
}
|
|
3598
|
-
const batchRequests = chunks.map(chunk => {
|
|
3599
|
-
return BXRestClass.batch({
|
|
3600
|
-
halt: 1,
|
|
3601
|
-
cmd: chunk.map(i => {
|
|
3602
|
-
const param = clone(this.param);
|
|
3603
|
-
param.start = (i + 1) * this.pageSize;
|
|
3604
|
-
return this.http.getNameMethod(this.url)
|
|
3605
|
-
+ '?' + serializeBitrixParams(param);
|
|
3606
|
-
})
|
|
3607
|
-
}, this.requestHeaders);
|
|
3608
|
-
});
|
|
3609
|
-
return from(batchRequests).pipe(concatMap(request => request), toArray(), map(results => {
|
|
3610
|
-
const firstPage = items.result?.[this.key];
|
|
3611
|
-
if (firstPage) {
|
|
3612
|
-
const res = firstPage;
|
|
3613
|
-
for (let result of results) {
|
|
3614
|
-
if (result && instanceOfiBXRestAnswerSuccess(result) && result.result && result.result.result) {
|
|
3615
|
-
res.push(...result.result.result.filter(i => i).map(i => i[this.key]).flat());
|
|
3616
|
-
}
|
|
3617
|
-
}
|
|
3618
|
-
return (this.map) ?
|
|
3619
|
-
this.map({ [this.key]: res })
|
|
3620
|
-
: res;
|
|
3621
|
-
}
|
|
3622
|
-
throw new Error('wrong batch');
|
|
3623
|
-
}));
|
|
3624
|
-
}
|
|
3625
|
-
return this.mapResForGetAll(items);
|
|
3626
|
-
}
|
|
3627
|
-
return this.mapResForGetAll(items);
|
|
3628
|
-
}), catchError(err => {
|
|
3629
|
-
console.error(err);
|
|
3630
|
-
return throwError(() => err);
|
|
3631
|
-
}));
|
|
3632
|
-
}
|
|
3633
|
-
mapResForGetAll(items) {
|
|
3634
|
-
return (instanceOfiBXRestAnswerSuccess(items)) ? from([items.result]).pipe(map(v => (v && this.map) ? this.map(v) : v)) : from([]);
|
|
3635
|
-
}
|
|
3636
|
-
}
|
|
3637
|
-
|
|
3638
|
-
/** Пагинация для методов, возвращающих коллекцию как объект с идентификаторами в ключах. */
|
|
3639
|
-
class NavvyPagNavResultKeyObject extends NavvyPagBase {
|
|
3640
|
-
constructor(url, param, key, mapResult) {
|
|
3641
|
-
// Без своего map результат — значения объекта по ключу, как и обещают типы `.res()` и `.resAll()`.
|
|
3642
|
-
super(url, param, mapResult ?? (result => Object.values(result?.[key] ?? {})));
|
|
3643
|
-
this.key = key;
|
|
3644
|
-
}
|
|
3645
|
-
resAll() {
|
|
3646
|
-
return this.resultAllEnd().pipe(last(), shareReplay(1));
|
|
3647
|
-
}
|
|
3648
|
-
resultAllEnd() {
|
|
3649
|
-
const bxRest = new BXRest();
|
|
3650
|
-
return this.resFirstPage().pipe(mergeMap(items => {
|
|
3651
|
-
if (!items || !instanceOfiBXRestAnswerSuccess(items)) {
|
|
3652
|
-
return from([]);
|
|
3653
|
-
}
|
|
3654
|
-
if (!items.total || items.total <= this.pageSize) {
|
|
3655
|
-
return this.mapResult(items);
|
|
3656
|
-
}
|
|
3657
|
-
const pageCount = Math.ceil(items.total / this.pageSize);
|
|
3658
|
-
const commands = Array.from({ length: pageCount - 1 }, (_, index) => {
|
|
3659
|
-
const param = clone(this.param);
|
|
3660
|
-
param.start = (index + 1) * this.pageSize;
|
|
3661
|
-
return bxRest.batch({
|
|
3662
|
-
halt: 1,
|
|
3663
|
-
cmd: [this.http.getNameMethod(this.url) + '?' + serializeBitrixParams(param)]
|
|
3664
|
-
}, this.requestHeaders);
|
|
3665
|
-
});
|
|
3666
|
-
return from(commands).pipe(concatMap(request => request), toArray(), mergeMap(results => {
|
|
3667
|
-
const merged = { ...(items.result?.[this.key] ?? {}) };
|
|
3668
|
-
for (const result of results) {
|
|
3669
|
-
if (result && instanceOfiBXRestAnswerSuccess(result)) {
|
|
3670
|
-
for (const page of result.result?.result ?? []) {
|
|
3671
|
-
Object.assign(merged, page?.[this.key] ?? {});
|
|
3672
|
-
}
|
|
3673
|
-
}
|
|
3674
|
-
}
|
|
3675
|
-
return this.mapResult({ result: { [this.key]: merged } });
|
|
3676
|
-
}));
|
|
3677
|
-
}), catchError(error => {
|
|
3678
|
-
console.error(error);
|
|
3679
|
-
return throwError(() => error);
|
|
3680
|
-
}));
|
|
3681
|
-
}
|
|
3682
|
-
mapResult(items) {
|
|
3683
|
-
if (!instanceOfiBXRestAnswerSuccess(items)) {
|
|
3684
|
-
return from([]);
|
|
3685
|
-
}
|
|
3686
|
-
return from([items.result]).pipe(map$1(value => this.map?.(value)));
|
|
3687
|
-
}
|
|
3688
|
-
}
|
|
3689
|
-
|
|
3690
|
-
class NavvySupport {
|
|
3691
|
-
constructor(requestClass) {
|
|
3692
|
-
this.requestClass = requestClass;
|
|
3693
|
-
this.pageSize = 50; // стандартный размер страницы
|
|
3694
|
-
}
|
|
3695
|
-
mapAndError(request) {
|
|
3696
|
-
return request.pipe(map(v => BXRestMapResult(v)), catchError((err) => {
|
|
3697
|
-
console.error(err);
|
|
3698
|
-
throw new Error((err.error) ? err.error : err);
|
|
3699
|
-
}));
|
|
3700
|
-
}
|
|
3701
|
-
}
|
|
3702
|
-
|
|
3703
|
-
class Navvy {
|
|
3704
|
-
simple(url, arg, map) {
|
|
3705
|
-
return new NavvySimple(url, arg !== undefined ? arg : undefined, map);
|
|
3706
|
-
}
|
|
3707
|
-
simpleV3(url, arg, map) {
|
|
3708
|
-
return new NavvySimple(url, arg !== undefined ? arg : undefined, map, true);
|
|
3709
|
-
}
|
|
3710
|
-
/**
|
|
3711
|
-
* Новый, пока тестируемый метод для api методов с пагинацией
|
|
3712
|
-
*
|
|
3713
|
-
* @param url
|
|
3714
|
-
* @param arg
|
|
3715
|
-
* @param map
|
|
3716
|
-
* @constructor
|
|
3717
|
-
*/
|
|
3718
|
-
pagNav(url, arg, map) {
|
|
3719
|
-
return new NavvyPag(url, arg, map);
|
|
3720
|
-
}
|
|
3721
|
-
// old PagNav
|
|
3722
|
-
// PagNav<T, R, A extends iBXRestPagination>(
|
|
3723
|
-
// func: (param: A) => Observable<iBXRestAnswer<T[]> | undefined>,
|
|
3724
|
-
// arg: A,
|
|
3725
|
-
// map: ((param: T[] | undefined) => R[] | undefined) | undefined) {
|
|
3726
|
-
// return new NavvyPagNav(this.requestClass, this.mapClass, func, arg, map)
|
|
3727
|
-
// }
|
|
3728
|
-
// Batch<T, R, A extends iBXRestPagination>(
|
|
3729
|
-
// func: (param: A) => Observable<iBXRestAnswer<T[]> | undefined>,
|
|
3730
|
-
// arg: A,
|
|
3731
|
-
// map: ((param: T[] | undefined) => R[] | undefined) | undefined) {
|
|
3732
|
-
// return new NavvyBatch(this.requestClass, this.mapClass, func, arg, map)
|
|
3733
|
-
// }
|
|
3734
|
-
pagNavTasks(url,
|
|
3735
|
-
// func: (param: A) => Observable<iBXRestAnswer<{tasks: T[] | undefined}> | undefined>,
|
|
3736
|
-
arg, map) {
|
|
3737
|
-
return new NavvyPagNavTasks(url, arg, map);
|
|
3738
|
-
}
|
|
3739
|
-
pagNavResultKey(url, arg, key, map) {
|
|
3740
|
-
return new NavvyPagNavResultKey(url, arg, key, map);
|
|
3741
|
-
}
|
|
3742
|
-
pagNavResultKeyObject(url, arg, key, map) {
|
|
3743
|
-
return new NavvyPagNavResultKeyObject(url, arg, key, map);
|
|
3744
|
-
}
|
|
3745
|
-
pagNavWithUselessKey(url,
|
|
3746
|
-
// func: (param: A) => Observable<iBXRestAnswer<{ [key: string]: T }> | undefined>,
|
|
3747
|
-
arg, map) {
|
|
3748
|
-
return new NavvyPagNavWithUselessKey(url, arg, map);
|
|
3749
|
-
}
|
|
3750
|
-
alterPagNav(url,
|
|
3751
|
-
// func: (param: A) => Observable<iBXRestAnswer<T[]> | undefined>,
|
|
3752
|
-
arg, map) {
|
|
3753
|
-
return new NavvyAlterPagNav(url, arg, map);
|
|
3754
|
-
}
|
|
3755
|
-
}
|
|
2464
|
+
$productImage: $productImage,
|
|
2465
|
+
$productProperty: $productProperty,
|
|
2466
|
+
$productPropertyEnum: $productPropertyEnum,
|
|
2467
|
+
$productPropertyFeature: $productPropertyFeature,
|
|
2468
|
+
$productPropertySection: $productPropertySection,
|
|
2469
|
+
$productrow: $productrow,
|
|
2470
|
+
$productrows: $productrows,
|
|
2471
|
+
$property: $property,
|
|
2472
|
+
$propertyGroup: $propertyGroup,
|
|
2473
|
+
$propertyRelation: $propertyRelation,
|
|
2474
|
+
$propertyValue: $propertyValue,
|
|
2475
|
+
$propertyVariant: $propertyVariant,
|
|
2476
|
+
$provider: $provider,
|
|
2477
|
+
$public: $public,
|
|
2478
|
+
$publication: $publication,
|
|
2479
|
+
$publicationFolder: $publicationFolder,
|
|
2480
|
+
$pull: $pull,
|
|
2481
|
+
$quick: $quick,
|
|
2482
|
+
$quote: $quote,
|
|
2483
|
+
$ratio: $ratio,
|
|
2484
|
+
$reaction: $reaction,
|
|
2485
|
+
$read: $read,
|
|
2486
|
+
$reading: $reading,
|
|
2487
|
+
$recall: $recall,
|
|
2488
|
+
$recent: $recent,
|
|
2489
|
+
$recipient: $recipient,
|
|
2490
|
+
$record: $record,
|
|
2491
|
+
$recurring: $recurring,
|
|
2492
|
+
$region: $region,
|
|
2493
|
+
$register: $register,
|
|
2494
|
+
$remove: $remove,
|
|
2495
|
+
$removeAttachments: $removeAttachments,
|
|
2496
|
+
$removeCard: $removeCard,
|
|
2497
|
+
$removeEntities: $removeEntities,
|
|
2498
|
+
$removecrmactivity: $removecrmactivity,
|
|
2499
|
+
$rename: $rename,
|
|
2500
|
+
$renew: $renew,
|
|
2501
|
+
$reply: $reply,
|
|
2502
|
+
$repo: $repo,
|
|
2503
|
+
$report: $report,
|
|
2504
|
+
$reports: $reports,
|
|
2505
|
+
$repowidget: $repowidget,
|
|
2506
|
+
$request: $request,
|
|
2507
|
+
$requisite: $requisite,
|
|
2508
|
+
$reset: $reset,
|
|
2509
|
+
$resolveIdByPublicUrl: $resolveIdByPublicUrl,
|
|
2510
|
+
$resource: $resource,
|
|
2511
|
+
$resourcetype: $resourcetype,
|
|
2512
|
+
$restore: $restore,
|
|
2513
|
+
$restoreFromVersion: $restoreFromVersion,
|
|
2514
|
+
$result: $result,
|
|
2515
|
+
$resume: $resume,
|
|
2516
|
+
$revision: $revision,
|
|
2517
|
+
$rights: $rights,
|
|
2518
|
+
$robot: $robot,
|
|
2519
|
+
$role: $role,
|
|
2520
|
+
$roundingRule: $roundingRule,
|
|
2521
|
+
$sale: $sale,
|
|
2522
|
+
$save: $save,
|
|
2523
|
+
$schedule: $schedule,
|
|
2524
|
+
$schema: $schema,
|
|
2525
|
+
$search: $search,
|
|
2526
|
+
$searchCrmEntities: $searchCrmEntities,
|
|
2527
|
+
$section: $section,
|
|
2528
|
+
$send: $send,
|
|
2529
|
+
$sendContext: $sendContext,
|
|
2530
|
+
$sendMessage: $sendMessage,
|
|
2531
|
+
$sender: $sender,
|
|
2532
|
+
$senders: $senders,
|
|
2533
|
+
$server: $server,
|
|
2534
|
+
$service: $service,
|
|
2535
|
+
$session: $session,
|
|
2536
|
+
$set: $set,
|
|
2537
|
+
$setAccessCodes: $setAccessCodes,
|
|
2538
|
+
$setDelivery: $setDelivery,
|
|
2539
|
+
$setLandingRef: $setLandingRef,
|
|
2540
|
+
$setOwner: $setOwner,
|
|
2541
|
+
$setQuantity: $setQuantity,
|
|
2542
|
+
$setRights: $setRights,
|
|
2543
|
+
$setSiteRef: $setSiteRef,
|
|
2544
|
+
$setowner: $setowner,
|
|
2545
|
+
$settings: $settings,
|
|
2546
|
+
$share: $share,
|
|
2547
|
+
$sharetouser: $sharetouser,
|
|
2548
|
+
$shipment: $shipment,
|
|
2549
|
+
$shipmentItem: $shipmentItem,
|
|
2550
|
+
$shipmentProperty: $shipmentProperty,
|
|
2551
|
+
$shipmentPropertyValue: $shipmentPropertyValue,
|
|
2552
|
+
$show: $show,
|
|
2553
|
+
$showBlock: $showBlock,
|
|
2554
|
+
$sign: $sign,
|
|
2555
|
+
$silent: $silent,
|
|
2556
|
+
$sip: $sip,
|
|
2557
|
+
$site: $site,
|
|
2558
|
+
$skip: $skip,
|
|
2559
|
+
$sku: $sku,
|
|
2560
|
+
$slots: $slots,
|
|
2561
|
+
$socialnetwork: $socialnetwork,
|
|
2562
|
+
$sonet_group: $sonet_group,
|
|
2563
|
+
$source: $source,
|
|
2564
|
+
$spam: $spam,
|
|
2565
|
+
$stagehistory: $stagehistory,
|
|
2566
|
+
$stages: $stages,
|
|
2567
|
+
$start: $start,
|
|
2568
|
+
$startwatch: $startwatch,
|
|
2569
|
+
$startwithsound: $startwithsound,
|
|
2570
|
+
$startwithtext: $startwithtext,
|
|
2571
|
+
$statistic: $statistic,
|
|
2572
|
+
$status: $status,
|
|
2573
|
+
$statusLang: $statusLang,
|
|
2574
|
+
$statuslist: $statuslist,
|
|
2575
|
+
$stop: $stop,
|
|
2576
|
+
$stopwatch: $stopwatch,
|
|
2577
|
+
$storage: $storage,
|
|
2578
|
+
$store: $store,
|
|
2579
|
+
$storeProduct: $storeProduct,
|
|
2580
|
+
$subscribe: $subscribe,
|
|
2581
|
+
$syspage: $syspage,
|
|
2582
|
+
$system: $system,
|
|
2583
|
+
$tail: $tail,
|
|
2584
|
+
$task: $task,
|
|
2585
|
+
$tasks: $tasks,
|
|
2586
|
+
$telephony: $telephony,
|
|
2587
|
+
$template: $template,
|
|
2588
|
+
$terminate: $terminate,
|
|
2589
|
+
$text: $text,
|
|
2590
|
+
$textField: $textField,
|
|
2591
|
+
$thread: $thread,
|
|
2592
|
+
$time: $time,
|
|
2593
|
+
$timeMan: $timeMan,
|
|
2594
|
+
$timecontrol: $timecontrol,
|
|
2595
|
+
$timeline: $timeline,
|
|
2596
|
+
$todo: $todo,
|
|
2597
|
+
$trace: $trace,
|
|
2598
|
+
$tracking: $tracking,
|
|
2599
|
+
$tradeBinding: $tradeBinding,
|
|
2600
|
+
$tradePlatform: $tradePlatform,
|
|
2601
|
+
$transfer: $transfer,
|
|
2602
|
+
$tree: $tree,
|
|
2603
|
+
$trigger: $trigger,
|
|
2604
|
+
$tts: $tts,
|
|
2605
|
+
$type: $type,
|
|
2606
|
+
$types: $types,
|
|
2607
|
+
$unbind: $unbind,
|
|
2608
|
+
$unbindingFromGroup: $unbindingFromGroup,
|
|
2609
|
+
$unbindingFromMenu: $unbindingFromMenu,
|
|
2610
|
+
$unfavoriteBlock: $unfavoriteBlock,
|
|
2611
|
+
$unmute: $unmute,
|
|
2612
|
+
$unpay: $unpay,
|
|
2613
|
+
$unpin: $unpin,
|
|
2614
|
+
$unpinAll: $unpinAll,
|
|
2615
|
+
$unpublic: $unpublic,
|
|
2616
|
+
$unpublicFolder: $unpublicFolder,
|
|
2617
|
+
$unread: $unread,
|
|
2618
|
+
$unregister: $unregister,
|
|
2619
|
+
$unset: $unset,
|
|
2620
|
+
$unsubscribe: $unsubscribe,
|
|
2621
|
+
$upBlock: $upBlock,
|
|
2622
|
+
$update: $update,
|
|
2623
|
+
$updateAttrs: $updateAttrs,
|
|
2624
|
+
$updateAvatar: $updateAvatar,
|
|
2625
|
+
$updateCards: $updateCards,
|
|
2626
|
+
$updateCatalogProduct: $updateCatalogProduct,
|
|
2627
|
+
$updateColor: $updateColor,
|
|
2628
|
+
$updateContent: $updateContent,
|
|
2629
|
+
$updateDeadline: $updateDeadline,
|
|
2630
|
+
$updateDescription: $updateDescription,
|
|
2631
|
+
$updateFolder: $updateFolder,
|
|
2632
|
+
$updateNodes: $updateNodes,
|
|
2633
|
+
$updateResponsibleUser: $updateResponsibleUser,
|
|
2634
|
+
$updateStyles: $updateStyles,
|
|
2635
|
+
$updateTitle: $updateTitle,
|
|
2636
|
+
$upload: $upload,
|
|
2637
|
+
$uploadFile: $uploadFile,
|
|
2638
|
+
$uploadfile: $uploadfile,
|
|
2639
|
+
$uploadversion: $uploadversion,
|
|
2640
|
+
$url: $url,
|
|
2641
|
+
$user: $user,
|
|
2642
|
+
$userconsent: $userconsent,
|
|
2643
|
+
$userfield: $userfield,
|
|
2644
|
+
$userfieldtype: $userfieldtype,
|
|
2645
|
+
$users: $users,
|
|
2646
|
+
$v1: $v1,
|
|
2647
|
+
$v2: $v2,
|
|
2648
|
+
$vat: $vat,
|
|
2649
|
+
$version: $version,
|
|
2650
|
+
$voices: $voices,
|
|
2651
|
+
$volatileType: $volatileType,
|
|
2652
|
+
$vote: $vote,
|
|
2653
|
+
$voximplant: $voximplant,
|
|
2654
|
+
$waitlist: $waitlist,
|
|
2655
|
+
$workflow: $workflow,
|
|
2656
|
+
$workgroup: $workgroup,
|
|
2657
|
+
$writing: $writing
|
|
2658
|
+
});
|
|
3756
2659
|
|
|
3757
2660
|
class BXRestNavvyUserUserfield {
|
|
3758
2661
|
constructor() {
|
|
@@ -3801,8 +2704,9 @@ class BXRestMapUser {
|
|
|
3801
2704
|
let res = Object.assign(clone(user), {
|
|
3802
2705
|
ID: toNum(user.ID),
|
|
3803
2706
|
IS_ONLINE: toBool(user.IS_ONLINE),
|
|
3804
|
-
|
|
3805
|
-
|
|
2707
|
+
// Дня рождения может не быть вовсе (пустая строка), а при урезанном scope нет и самих полей
|
|
2708
|
+
DATE_REGISTER: user.DATE_REGISTER ? toDate(user.DATE_REGISTER) : undefined,
|
|
2709
|
+
PERSONAL_BIRTHDAY: user.PERSONAL_BIRTHDAY ? toDate(user.PERSONAL_BIRTHDAY) : undefined,
|
|
3806
2710
|
});
|
|
3807
2711
|
if (user.LAST_LOGIN) {
|
|
3808
2712
|
res.LAST_LOGIN = toDate(user.LAST_LOGIN);
|
|
@@ -3813,7 +2717,7 @@ class BXRestMapUser {
|
|
|
3813
2717
|
return Object.assign(clone(user), {
|
|
3814
2718
|
ID: toStr(user.ID),
|
|
3815
2719
|
IS_ONLINE: toBXYorN(user.IS_ONLINE),
|
|
3816
|
-
DATE_REGISTER: toISOStringWithTimezone(user.DATE_REGISTER),
|
|
2720
|
+
DATE_REGISTER: user.DATE_REGISTER ? toISOStringWithTimezone(user.DATE_REGISTER) : '',
|
|
3817
2721
|
PERSONAL_BIRTHDAY: toStr(user.PERSONAL_BIRTHDAY),
|
|
3818
2722
|
LAST_LOGIN: toStr(user.LAST_LOGIN)
|
|
3819
2723
|
});
|
|
@@ -4306,8 +3210,8 @@ class BXRestMapTasksTaskResult {
|
|
|
4306
3210
|
}
|
|
4307
3211
|
|
|
4308
3212
|
class BXRestMapTasksTask {
|
|
4309
|
-
|
|
4310
|
-
|
|
3213
|
+
static get result() {
|
|
3214
|
+
return BXRestMapTasksTaskResult;
|
|
4311
3215
|
}
|
|
4312
3216
|
static getAccess(v) {
|
|
4313
3217
|
return (v && v.allowedActions) ? v.allowedActions : undefined;
|
|
@@ -5272,6 +4176,10 @@ class BXRestNavvyOperationElapsedItem {
|
|
|
5272
4176
|
* Возвращает список записей о затраченном времени по задаче.
|
|
5273
4177
|
*/
|
|
5274
4178
|
getListByIDTask(ids) {
|
|
4179
|
+
// Пустой batch завершается без значения, и вызывающий код получил бы EmptyError
|
|
4180
|
+
if (!ids.length) {
|
|
4181
|
+
return of([]);
|
|
4182
|
+
}
|
|
5275
4183
|
// Работает только потому что "nPageSize: 99999"
|
|
5276
4184
|
return this.http.branch(ids.map(i => {
|
|
5277
4185
|
return {
|
|
@@ -5374,33 +4282,17 @@ class BXRestNavvyOperationElapsedItem {
|
|
|
5374
4282
|
* @param userCurrent
|
|
5375
4283
|
*/
|
|
5376
4284
|
checkPermissionAddElapsedTimeToTask(idTask, userCurrent = undefined) {
|
|
5377
|
-
// let permission = Permission.get()
|
|
5378
|
-
// if (permission?.tasks?.length) {
|
|
5379
|
-
// let findTask = permission.tasks.find(i => i.id === idTask)
|
|
5380
|
-
// if (findTask?.permission) {
|
|
5381
|
-
// return of(findTask.permission['ELAPSEDTIME.ADD'])
|
|
5382
|
-
// }
|
|
5383
4285
|
return ((userCurrent) ? of(userCurrent) : this.BXRestNavvyUser.current().res()).pipe(mergeMap(self => {
|
|
5384
4286
|
if (self) {
|
|
5385
4287
|
return this.BXRestNavvyTasks.task.getAccess({
|
|
5386
4288
|
id: idTask,
|
|
5387
4289
|
users: [self.ID]
|
|
5388
|
-
}).res().pipe(
|
|
5389
|
-
// tap(v => {
|
|
5390
|
-
// if (v && v[self.ID]) {
|
|
5391
|
-
// Permission.set({
|
|
5392
|
-
// tasks: [{id: idTask, permission: v[self.ID], elapsedItem: []}]
|
|
5393
|
-
// })
|
|
5394
|
-
// }
|
|
5395
|
-
// }),
|
|
5396
|
-
map(v => {
|
|
4290
|
+
}).res().pipe(map(v => {
|
|
5397
4291
|
return (v && v[self.ID]) ? v[self.ID]['ELAPSEDTIME.ADD'] : false;
|
|
5398
4292
|
}));
|
|
5399
4293
|
}
|
|
5400
4294
|
return of(undefined);
|
|
5401
4295
|
}));
|
|
5402
|
-
// }
|
|
5403
|
-
// return of(undefined)
|
|
5404
4296
|
}
|
|
5405
4297
|
/**
|
|
5406
4298
|
* Проверка на возможность прочтения такски
|
|
@@ -5409,35 +4301,17 @@ class BXRestNavvyOperationElapsedItem {
|
|
|
5409
4301
|
* @param userCurrent
|
|
5410
4302
|
*/
|
|
5411
4303
|
checkPermissionReadTask(idTask, userCurrent = undefined) {
|
|
5412
|
-
// let permission = Permission.get()
|
|
5413
|
-
// if (permission?.tasks?.length) {
|
|
5414
|
-
// let findTask = permission.tasks.find(i => i.id === idTask)
|
|
5415
|
-
// if (findTask?.permission) {
|
|
5416
|
-
// return of(findTask.permission.ACCEPT)
|
|
5417
|
-
// }
|
|
5418
|
-
// console.log('idTask', idTask)
|
|
5419
4304
|
return ((userCurrent) ? of(userCurrent) : this.BXRestNavvyUser.current().res()).pipe(mergeMap(self => {
|
|
5420
4305
|
if (self) {
|
|
5421
4306
|
return this.BXRestNavvyTasks.task.getAccess({
|
|
5422
4307
|
id: idTask,
|
|
5423
4308
|
users: [self.ID]
|
|
5424
|
-
}).res().pipe(
|
|
5425
|
-
// tap(v => {
|
|
5426
|
-
// if (v && v[self.ID]) {
|
|
5427
|
-
// Permission.set({
|
|
5428
|
-
// tasks: [{id: idTask, permission: v[self.ID], elapsedItem: []}]
|
|
5429
|
-
// })
|
|
5430
|
-
// }
|
|
5431
|
-
// }),
|
|
5432
|
-
map(v => {
|
|
4309
|
+
}).res().pipe(map(v => {
|
|
5433
4310
|
return (v && v[self.ID]) ? !!v[self.ID] : false; // отдельного флага на чтение нет, выходит что если права отдались то и права есть
|
|
5434
4311
|
}));
|
|
5435
4312
|
}
|
|
5436
4313
|
return of(undefined);
|
|
5437
4314
|
}));
|
|
5438
|
-
// }
|
|
5439
|
-
//
|
|
5440
|
-
// return of(undefined)
|
|
5441
4315
|
}
|
|
5442
4316
|
/**
|
|
5443
4317
|
* Законченный метод добавления записи с предварительной проверкой прав
|
|
@@ -5453,7 +4327,7 @@ class BXRestNavvyOperationElapsedItem {
|
|
|
5453
4327
|
return this.BXRestNavvyElapsedItem.add(param).res();
|
|
5454
4328
|
}
|
|
5455
4329
|
else {
|
|
5456
|
-
return throwError(() => new Error('Отсутствуют права добавление записи затраченного времени'));
|
|
4330
|
+
return throwError(() => new Error('Отсутствуют права на добавление записи затраченного времени'));
|
|
5457
4331
|
}
|
|
5458
4332
|
}));
|
|
5459
4333
|
}
|
|
@@ -5481,42 +4355,15 @@ class BXRestNavvyOperationElapsedItem {
|
|
|
5481
4355
|
return throwError(() => new Error('Отсутствуют права на чтение задачи'));
|
|
5482
4356
|
}));
|
|
5483
4357
|
}
|
|
5484
|
-
// TODO: разобраться что это за ебатня в комментах и вписать нормальной комент если она нужна
|
|
5485
4358
|
/**
|
|
5486
4359
|
* Проверяет право на изменение записи о затраченном времени.
|
|
5487
4360
|
*/
|
|
5488
4361
|
isAllowedModify(idTask, idItem) {
|
|
5489
|
-
// let permission = Permission.get()
|
|
5490
|
-
// if (permission?.tasks?.length) {
|
|
5491
|
-
// let findTask = permission.tasks.find(i => i.id === idTask)
|
|
5492
|
-
// if (findTask) {
|
|
5493
|
-
// let find = findTask.elapsedItem.find(i => i.id === idItem)
|
|
5494
|
-
// if (find && find.verified.edit) {
|
|
5495
|
-
// return of(find.edit)
|
|
5496
|
-
// }
|
|
5497
|
-
// }
|
|
5498
|
-
// }
|
|
5499
4362
|
return this.BXRestNavvyElapsedItem.isActionAllowed({
|
|
5500
4363
|
TASKID: idTask,
|
|
5501
4364
|
ITEMID: idItem,
|
|
5502
4365
|
ACTIONID: 2
|
|
5503
4366
|
}).res();
|
|
5504
|
-
// .pipe(
|
|
5505
|
-
// tap(v => {
|
|
5506
|
-
// if (v !== undefined) {
|
|
5507
|
-
// Permission.setTaskElapsedItem(idTask,
|
|
5508
|
-
// {
|
|
5509
|
-
// id: idItem,
|
|
5510
|
-
// edit: v,
|
|
5511
|
-
// del: false,
|
|
5512
|
-
// verified: {
|
|
5513
|
-
// edit: true,
|
|
5514
|
-
// del: false,
|
|
5515
|
-
// }
|
|
5516
|
-
// })
|
|
5517
|
-
// }
|
|
5518
|
-
// })
|
|
5519
|
-
// )
|
|
5520
4367
|
}
|
|
5521
4368
|
/**
|
|
5522
4369
|
* isActionAllowed с фиксом на проверку возможности чтения задачи записи
|
|
@@ -7017,7 +5864,7 @@ class BXRestNavvyBizProc {
|
|
|
7017
5864
|
// Не понимаю почему DATE_CREATE указывается не на сервере
|
|
7018
5865
|
// но если пользователь не указал, надо указать
|
|
7019
5866
|
const value = parametersElement['DATE_CREATE'];
|
|
7020
|
-
if (value === null || value === undefined || (typeof value === 'string'
|
|
5867
|
+
if (value === null || value === undefined || (typeof value === 'string' && value.trim() === '')) {
|
|
7021
5868
|
parametersElement['DATE_CREATE'] = new Date();
|
|
7022
5869
|
}
|
|
7023
5870
|
return this.BXRestNavvyLists.element.add({
|
|
@@ -8414,40 +7261,6 @@ class BXRestNavvyImNotify {
|
|
|
8414
7261
|
}
|
|
8415
7262
|
}
|
|
8416
7263
|
|
|
8417
|
-
function CatchError(options) {
|
|
8418
|
-
return function (target, propertyKey, descriptor) {
|
|
8419
|
-
const original = descriptor.value;
|
|
8420
|
-
descriptor.value = function (...args) {
|
|
8421
|
-
try {
|
|
8422
|
-
return original.apply(this, args);
|
|
8423
|
-
}
|
|
8424
|
-
catch (err) {
|
|
8425
|
-
const errorInfo = {
|
|
8426
|
-
message: `❌ Error in ${target.constructor.name}.${propertyKey}`,
|
|
8427
|
-
args,
|
|
8428
|
-
error: err instanceof Error ? err.message : String(err),
|
|
8429
|
-
stack: err instanceof Error ? err.stack : new Error().stack,
|
|
8430
|
-
};
|
|
8431
|
-
console.error(formatError(errorInfo));
|
|
8432
|
-
if (options?.rethrow)
|
|
8433
|
-
throw err;
|
|
8434
|
-
return options?.defaultValue;
|
|
8435
|
-
}
|
|
8436
|
-
};
|
|
8437
|
-
return descriptor;
|
|
8438
|
-
};
|
|
8439
|
-
}
|
|
8440
|
-
// Общая функция форматирования
|
|
8441
|
-
function formatError(info) {
|
|
8442
|
-
const stackLines = info.stack?.split('\n').slice(2).join('\n');
|
|
8443
|
-
return [
|
|
8444
|
-
info.message,
|
|
8445
|
-
info.args ? ` • args: ${JSON.stringify(info.args)}` : '',
|
|
8446
|
-
info.error ? ` • error: ${info.error}` : '',
|
|
8447
|
-
` • stack trace:\n${stackLines}`,
|
|
8448
|
-
].join('\n');
|
|
8449
|
-
}
|
|
8450
|
-
|
|
8451
7264
|
class BXRestMapImRecent {
|
|
8452
7265
|
static get(value) {
|
|
8453
7266
|
return value
|
|
@@ -8518,12 +7331,6 @@ class BXRestMapImRecent {
|
|
|
8518
7331
|
return chat;
|
|
8519
7332
|
}
|
|
8520
7333
|
}
|
|
8521
|
-
__decorate([
|
|
8522
|
-
CatchError({ rethrow: true })
|
|
8523
|
-
], BXRestMapImRecent, "get", null);
|
|
8524
|
-
__decorate([
|
|
8525
|
-
CatchError({ rethrow: true })
|
|
8526
|
-
], BXRestMapImRecent, "list", null);
|
|
8527
7334
|
|
|
8528
7335
|
class BXRestNavvyImRecent {
|
|
8529
7336
|
constructor() {
|
|
@@ -9362,17 +8169,6 @@ class BXRestMapPull {
|
|
|
9362
8169
|
}
|
|
9363
8170
|
}
|
|
9364
8171
|
|
|
9365
|
-
class BXRestMapPullChannelPublic {
|
|
9366
|
-
static get(value) {
|
|
9367
|
-
return value ? {
|
|
9368
|
-
...value,
|
|
9369
|
-
start: toDate(value.start),
|
|
9370
|
-
end: toDate(value.end)
|
|
9371
|
-
}
|
|
9372
|
-
: undefined;
|
|
9373
|
-
}
|
|
9374
|
-
}
|
|
9375
|
-
|
|
9376
8172
|
class BXRestNavvyPullConfig {
|
|
9377
8173
|
constructor() {
|
|
9378
8174
|
this.url = {
|
|
@@ -9383,7 +8179,6 @@ class BXRestNavvyPullConfig {
|
|
|
9383
8179
|
};
|
|
9384
8180
|
this.Navvy = new Navvy();
|
|
9385
8181
|
}
|
|
9386
|
-
static { this.public = new BXRestMapPullChannelPublic(); }
|
|
9387
8182
|
/**
|
|
9388
8183
|
* @experimental
|
|
9389
8184
|
* Этот метод находится в процессе тестирования и может измениться.
|
|
@@ -9393,6 +8188,17 @@ class BXRestNavvyPullConfig {
|
|
|
9393
8188
|
}
|
|
9394
8189
|
}
|
|
9395
8190
|
|
|
8191
|
+
class BXRestMapPullChannelPublic {
|
|
8192
|
+
static get(value) {
|
|
8193
|
+
return value ? {
|
|
8194
|
+
...value,
|
|
8195
|
+
start: toDate(value.start),
|
|
8196
|
+
end: toDate(value.end)
|
|
8197
|
+
}
|
|
8198
|
+
: undefined;
|
|
8199
|
+
}
|
|
8200
|
+
}
|
|
8201
|
+
|
|
9396
8202
|
class BXRestNavvyPullChannelPublic {
|
|
9397
8203
|
constructor() {
|
|
9398
8204
|
this.url = {
|
|
@@ -20291,6 +19097,15 @@ class BXRestNavvy {
|
|
|
20291
19097
|
}
|
|
20292
19098
|
}
|
|
20293
19099
|
|
|
19100
|
+
class BXRestMapDisk {
|
|
19101
|
+
constructor() {
|
|
19102
|
+
this.folder = new BXRestMapDiskFolder();
|
|
19103
|
+
this.attachedObject = new BXRestMapDiskAttachedObject();
|
|
19104
|
+
this.file = new BXRestMapDiskFile();
|
|
19105
|
+
this.storage = new BXRestMapDiskStorage();
|
|
19106
|
+
}
|
|
19107
|
+
}
|
|
19108
|
+
|
|
20294
19109
|
class BXRestMapCalendarUser {
|
|
20295
19110
|
constructor() {
|
|
20296
19111
|
this.settings = new BXRestMapCalendarUserSettings();
|
|
@@ -20322,16 +19137,23 @@ class BXRestMapTaskStage {
|
|
|
20322
19137
|
}
|
|
20323
19138
|
|
|
20324
19139
|
class BXRestMapTask {
|
|
20325
|
-
|
|
20326
|
-
|
|
20327
|
-
|
|
20328
|
-
|
|
19140
|
+
// Геттеры, а не статические поля: статический инициализатор выполняется при загрузке
|
|
19141
|
+
// модуля, поэтому бандлер не сможет выбросить класс, даже если он нигде не используется.
|
|
19142
|
+
static get commentItem() {
|
|
19143
|
+
return BXRestMapTaskCommentItem;
|
|
19144
|
+
}
|
|
19145
|
+
static get elapsedItem() {
|
|
19146
|
+
return BXRestMapTaskElapsedItem;
|
|
19147
|
+
}
|
|
19148
|
+
static get stages() {
|
|
19149
|
+
return BXRestMapTaskStage;
|
|
20329
19150
|
}
|
|
20330
19151
|
}
|
|
20331
19152
|
|
|
20332
19153
|
class BXRestMapTasks {
|
|
20333
|
-
|
|
20334
|
-
|
|
19154
|
+
// Геттер — по той же причине, что и в BXRestMapTask
|
|
19155
|
+
static get task() {
|
|
19156
|
+
return BXRestMapTasksTask;
|
|
20335
19157
|
}
|
|
20336
19158
|
}
|
|
20337
19159
|
|
|
@@ -20349,7 +19171,7 @@ class BXRestMap {
|
|
|
20349
19171
|
return BXRestMapLists;
|
|
20350
19172
|
}
|
|
20351
19173
|
get disk() {
|
|
20352
|
-
return
|
|
19174
|
+
return BXRestMapDisk;
|
|
20353
19175
|
}
|
|
20354
19176
|
get calendar() {
|
|
20355
19177
|
return BXRestMapCalendar;
|
|
@@ -20935,6 +19757,19 @@ function toRecord(value) {
|
|
|
20935
19757
|
: {};
|
|
20936
19758
|
}
|
|
20937
19759
|
|
|
19760
|
+
class HttpNavvyServices {
|
|
19761
|
+
constructor() {
|
|
19762
|
+
this.httpServices = new HttpBXServices();
|
|
19763
|
+
}
|
|
19764
|
+
// Реализация метода
|
|
19765
|
+
post(url, params) {
|
|
19766
|
+
if (params === undefined) {
|
|
19767
|
+
params = {};
|
|
19768
|
+
}
|
|
19769
|
+
return this.httpServices.post(url, params);
|
|
19770
|
+
}
|
|
19771
|
+
}
|
|
19772
|
+
|
|
20938
19773
|
/**
|
|
20939
19774
|
* Public API Surface of bx-rest
|
|
20940
19775
|
*/
|