complexqa_frontend_core 1.28.1 → 1.29.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "complexqa_frontend_core",
3
- "version": "1.28.1",
3
+ "version": "1.29.1",
4
4
  "description": "core of web ",
5
5
  "type": "module",
6
6
  "exports": {
@@ -69,6 +69,41 @@ export class ApiAbstractElementClass extends ApiAbstractClass
69
69
  }
70
70
 
71
71
 
72
+ /**
73
+ * Mass create. Payload: `{ items: object[] }`.
74
+ * Backend implements this per module; test_case is the first.
75
+ *
76
+ * @version v.1.0 (29/08/2026)
77
+ * @param payload
78
+ */
79
+ async create_mass(payload)
80
+ {
81
+ if (!this.module_prefix)
82
+ {
83
+ throw new Error('Error #10-1152 in ApiAbstractClass');
84
+ }
85
+
86
+ if (this.stage === 'development')
87
+ {
88
+ return {
89
+ response: payload,
90
+ payload : payload
91
+ };
92
+ }
93
+
94
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/create_mass`;
95
+
96
+ payload = this.handle_request_payload(payload);
97
+ let response = this.api_request(url, payload);
98
+ response = this.handle_response(response, false);
99
+
100
+ return {
101
+ response: response,
102
+ payload : payload
103
+ };
104
+ }
105
+
106
+
72
107
  /**
73
108
  *
74
109
  * @version v.0.1 (08/03/2026)
@@ -1,66 +1,66 @@
1
- import { typeTestCaseStep } from '../../../types/family_elements/typeTestCaseStep.js';
2
- import { UserService } from '../../../services/UserService.js';
3
- import { createColumn } from '../helpers/column_factory.js';
4
- import { createListingFor, registerSection } from '../helpers/section_registry.js';
5
- import { typeTableColumn } from '../../../types/family_service/typeTableColumn.js';
6
-
7
- function build_test_case_step_shared_columns(locale)
8
- {
9
- const model = new typeTestCaseStep();
10
-
11
- return [
12
- createColumn(model, locale, 'sort_order', {
13
- width : '150',
14
- sort_order : '0',
15
- default_sort: 'asc',
16
- is_editable : true,
17
- }),
18
- createColumn(model, locale, 'step_element', { width: '200', is_editable: true }),
19
- createColumn(model, locale, 'step_element_action', { width: '200', is_editable: true }),
20
- createColumn(model, locale, 'step_excepted_result', {
21
- width : '480',
22
- is_editable: true,
23
- is_title : true,
24
- }),
25
- new typeTableColumn({
26
- header_name : '',
27
- field : 'test_case_step_id',
28
- width : '80',
29
- sort_order : '99',
30
- is_sortable : false,
31
- is_filter : false,
32
- is_editable : false,
33
- column_kind : 'sort_action',
34
- }),
35
- ];
36
- }
37
-
38
- function build_test_case_steps_columns(locale)
39
- {
40
- return build_test_case_step_shared_columns(locale);
41
- }
42
-
43
- function build_test_case_presteps_columns(locale)
44
- {
45
- return build_test_case_step_shared_columns(locale);
46
- }
47
-
48
- /**
49
- * Секции `test_case_step`: `steps`, `presteps` (шаги и престепы тест-кейса).
50
- *
51
- * @param {Object<string, Object<string, { config: import('../../../types/family_service/typeTableConfiguration.js').typeTableConfiguration }>>} config
52
- * @returns {void}
53
- */
54
- export function bootstrap_test_case_step(config)
55
- {
56
- const locale = UserService.get_current_language();
57
- const embedded_for = createListingFor([ 'test_case_id', 'test_case_step_type' ]);
58
-
59
- registerSection(config, 'test_case_step', 'steps', build_test_case_steps_columns(locale), {
60
- for: embedded_for,
61
- });
62
-
63
- registerSection(config, 'test_case_step', 'presteps', build_test_case_presteps_columns(locale), {
64
- for: embedded_for,
65
- });
66
- }
1
+ import { typeTestCaseStep } from '../../../types/family_elements/typeTestCaseStep.js';
2
+ import { UserService } from '../../../services/UserService.js';
3
+ import { createColumn } from '../helpers/column_factory.js';
4
+ import { createListingFor, registerSection } from '../helpers/section_registry.js';
5
+ import { typeTableColumn } from '../../../types/family_service/typeTableColumn.js';
6
+
7
+ function build_test_case_step_shared_columns(locale)
8
+ {
9
+ const model = new typeTestCaseStep();
10
+
11
+ return [
12
+ createColumn(model, locale, 'sort_order', {
13
+ width : '150',
14
+ sort_order : '0',
15
+ default_sort: 'asc',
16
+ is_editable : true,
17
+ }),
18
+ createColumn(model, locale, 'step_element', { width: '200', is_editable: true }),
19
+ createColumn(model, locale, 'step_element_action', { width: '200', is_editable: true }),
20
+ createColumn(model, locale, 'step_expected_result', {
21
+ width : '480',
22
+ is_editable: true,
23
+ is_title : true,
24
+ }),
25
+ new typeTableColumn({
26
+ header_name : '',
27
+ field : 'test_case_step_id',
28
+ width : '80',
29
+ sort_order : '99',
30
+ is_sortable : false,
31
+ is_filter : false,
32
+ is_editable : false,
33
+ column_kind : 'sort_action',
34
+ }),
35
+ ];
36
+ }
37
+
38
+ function build_test_case_steps_columns(locale)
39
+ {
40
+ return build_test_case_step_shared_columns(locale);
41
+ }
42
+
43
+ function build_test_case_presteps_columns(locale)
44
+ {
45
+ return build_test_case_step_shared_columns(locale);
46
+ }
47
+
48
+ /**
49
+ * Секции `test_case_step`: `steps`, `presteps` (шаги и престепы тест-кейса).
50
+ *
51
+ * @param {Object<string, Object<string, { config: import('../../../types/family_service/typeTableConfiguration.js').typeTableConfiguration }>>} config
52
+ * @returns {void}
53
+ */
54
+ export function bootstrap_test_case_step(config)
55
+ {
56
+ const locale = UserService.get_current_language();
57
+ const embedded_for = createListingFor([ 'test_case_id', 'test_case_step_type' ]);
58
+
59
+ registerSection(config, 'test_case_step', 'steps', build_test_case_steps_columns(locale), {
60
+ for: embedded_for,
61
+ });
62
+
63
+ registerSection(config, 'test_case_step', 'presteps', build_test_case_presteps_columns(locale), {
64
+ for: embedded_for,
65
+ });
66
+ }
@@ -418,6 +418,49 @@ export class familyGeneralElement
418
418
  }
419
419
 
420
420
 
421
+ /**
422
+ * Mass create. Payload: `{ items: object[] }`.
423
+ *
424
+ * @param {object} payload
425
+ * @param {array} payload.items
426
+ * @param {typeFunctionCallback|object|false} callback
427
+ * @version v.1.0 (29/08/2026)
428
+ */
429
+ async create_mass(payload, callback)
430
+ {
431
+ if (!this.api_key)
432
+ {
433
+ throw new Error('Error #249-2215 - element has no api_key');
434
+ }
435
+
436
+ if (typeof callback?.before === 'function')
437
+ {
438
+ callback?.before({ payload });
439
+ }
440
+
441
+ return ApiService[ this.api_key ].create_mass(payload).then((response) =>
442
+ {
443
+ if (typeof callback?.success === 'function')
444
+ {
445
+ callback?.success({ response, payload })
446
+ }
447
+ }).catch((error) =>
448
+ {
449
+ echo({ error });
450
+ if (typeof callback?.error === 'function')
451
+ {
452
+ callback?.error({ error, payload })
453
+ }
454
+ }).finally((response) =>
455
+ {
456
+ if (typeof callback?.final === 'function')
457
+ {
458
+ callback?.final({ response, payload })
459
+ }
460
+ });
461
+ }
462
+
463
+
421
464
  /**
422
465
  * Обновление целой модели элемента
423
466
  *