complexqa_frontend_core 1.28.1 → 1.30.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.
Files changed (68) hide show
  1. package/package.json +1 -1
  2. package/publish/api/api_abstract_element_class.js +35 -0
  3. package/publish/api/autotest_case_api.js +78 -0
  4. package/publish/api/autotest_result_api.js +17 -0
  5. package/publish/api/autotest_run_api.js +36 -0
  6. package/publish/api/autotest_step_api.js +88 -0
  7. package/publish/api/autotest_suite_api.js +17 -0
  8. package/publish/api/file_app_api.js +76 -0
  9. package/publish/api/index.js +16 -0
  10. package/publish/api/object_repository_element_api.js +17 -0
  11. package/publish/api/object_repository_folder_api.js +17 -0
  12. package/publish/api/object_repository_page_api.js +17 -0
  13. package/publish/app_configuration/menu_configuration_main.js +14 -0
  14. package/publish/app_configuration/table/helpers/table_element_models.js +16 -0
  15. package/publish/app_configuration/table/sections/autotest_case.js +73 -0
  16. package/publish/app_configuration/table/sections/autotest_result.js +59 -0
  17. package/publish/app_configuration/table/sections/autotest_run.js +66 -0
  18. package/publish/app_configuration/table/sections/autotest_step.js +82 -0
  19. package/publish/app_configuration/table/sections/autotest_suite.js +42 -0
  20. package/publish/app_configuration/table/sections/object_repository_element.js +59 -0
  21. package/publish/app_configuration/table/sections/object_repository_folder.js +41 -0
  22. package/publish/app_configuration/table/sections/object_repository_page.js +55 -0
  23. package/publish/app_configuration/table/sections/test_case_step.js +66 -66
  24. package/publish/app_configuration/table/table_configuration.js +16 -0
  25. package/publish/index.js +28 -0
  26. package/publish/services/FileAppService.js +48 -0
  27. package/publish/types/core/0_familyGeneralElement.js +43 -0
  28. package/publish/types/element_translate/typeAttachment.i18n.js +22 -11
  29. package/publish/types/element_translate/typeAutotestCase.i18n.js +95 -0
  30. package/publish/types/element_translate/typeAutotestResult.i18n.js +77 -0
  31. package/publish/types/element_translate/typeAutotestRun.i18n.js +110 -0
  32. package/publish/types/element_translate/typeAutotestStep.i18n.js +80 -0
  33. package/publish/types/element_translate/typeAutotestSuite.i18n.js +40 -0
  34. package/publish/types/element_translate/typeCustomProperty.i18n.js +21 -6
  35. package/publish/types/element_translate/typeCustomPropertyValue.i18n.js +21 -6
  36. package/publish/types/element_translate/typeFile.i18n.js +21 -15
  37. package/publish/types/element_translate/typeObjectRepositoryElement.i18n.js +92 -0
  38. package/publish/types/element_translate/typeObjectRepositoryFolder.i18n.js +62 -0
  39. package/publish/types/element_translate/typeObjectRepositoryPage.i18n.js +43 -0
  40. package/publish/types/element_translate/typeTagRelation.i18n.js +18 -0
  41. package/publish/types/element_translate/typeTestCase.i18n.js +414 -414
  42. package/publish/types/element_translate/typeTestCaseStep.i18n.js +179 -179
  43. package/publish/types/family_elements/0_familyGeneralElement.js +43 -0
  44. package/publish/types/family_elements/autotest_step_actions/autotestStepActionCatalog.js +54 -0
  45. package/publish/types/family_elements/autotest_step_actions/autotestStepLocatorKind.js +56 -0
  46. package/publish/types/family_elements/autotest_step_actions/autotestStepTargetNormalizer.js +134 -0
  47. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepAction.js +35 -0
  48. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepActionVariants.js +148 -0
  49. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepLocatorAction.js +12 -0
  50. package/publish/types/family_elements/autotest_step_actions/typeAutotestStepLocatorValueAction.js +13 -0
  51. package/publish/types/family_elements/typeAttachment.js +1 -1
  52. package/publish/types/family_elements/typeAutotestCase.js +220 -0
  53. package/publish/types/family_elements/typeAutotestResult.js +81 -0
  54. package/publish/types/family_elements/typeAutotestRun.js +165 -0
  55. package/publish/types/family_elements/typeAutotestStep.js +297 -0
  56. package/publish/types/family_elements/typeAutotestStepTarget.js +50 -0
  57. package/publish/types/family_elements/typeAutotestSuite.js +74 -0
  58. package/publish/types/family_elements/typeCustomProperty.js +1 -1
  59. package/publish/types/family_elements/typeObjectRepositoryElement.js +88 -0
  60. package/publish/types/family_elements/typeObjectRepositoryFolder.js +81 -0
  61. package/publish/types/family_elements/typeObjectRepositoryPage.js +77 -0
  62. package/publish/types/family_elements/typeTestCase.js +5 -6
  63. package/publish/types/family_elements/typeTestCaseStep.js +2 -2
  64. package/publish/types/family_files/familyFile.js +2 -0
  65. package/publish/types/family_files/typeFileAutotestScreenshot.js +33 -0
  66. package/publish/types/family_files/typeFileFactory.js +3 -0
  67. package/publish/types/family_relation/typeCustomPropertyValue.js +7 -2
  68. package/publish/types/family_relation/typeTagRelation.js +30 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "complexqa_frontend_core",
3
- "version": "1.28.1",
3
+ "version": "1.30.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)
@@ -0,0 +1,78 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeAutotestCase } from "../types/family_elements/typeAutotestCase";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (04/09/2026)
7
+ */
8
+ export class AutotestCaseApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'autotest_case';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeAutotestCase);
16
+ }
17
+
18
+
19
+ /**
20
+ * @param payload
21
+ * @returns {Promise<{payload, response: Promise<*>}>}
22
+ */
23
+ async create_from_test_case(payload)
24
+ {
25
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/create_from_test_case`;
26
+
27
+ payload = this.handle_request_payload(payload);
28
+ let response = this.api_request(url, payload);
29
+ response = this.handle_response(response);
30
+
31
+ return {
32
+ response: response,
33
+ payload : payload
34
+ };
35
+ }
36
+
37
+
38
+ /**
39
+ * Replace explicit predecessors of one autotest case.
40
+ *
41
+ * @param payload
42
+ * @returns {Promise<{payload, response: Promise<*>}>}
43
+ */
44
+ async replace_pre_cases(payload)
45
+ {
46
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/replace_pre_cases`;
47
+
48
+ payload = this.handle_request_payload(payload);
49
+ let response = this.api_request(url, payload);
50
+ response = this.handle_response(response);
51
+
52
+ return {
53
+ response: response,
54
+ payload : payload
55
+ };
56
+ }
57
+
58
+
59
+ /**
60
+ * Read-only syntax of stored steps. Does not open the target site.
61
+ *
62
+ * @param payload
63
+ * @returns {Promise<{payload, response: Promise<*>}>}
64
+ */
65
+ async check_syntax(payload)
66
+ {
67
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/check_syntax`;
68
+
69
+ payload = this.handle_request_payload(payload);
70
+ let response = this.api_request(url, payload);
71
+ response = this.handle_response(response);
72
+
73
+ return {
74
+ response: response,
75
+ payload : payload
76
+ };
77
+ }
78
+ }
@@ -0,0 +1,17 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeAutotestResult } from "../types/family_elements/typeAutotestResult";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (04/09/2026)
7
+ */
8
+ export class AutotestResultApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'autotest_result';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeAutotestResult);
16
+ }
17
+ }
@@ -0,0 +1,36 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeAutotestRun } from "../types/family_elements/typeAutotestRun";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (04/09/2026)
7
+ */
8
+ export class AutotestRunApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'autotest_run';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeAutotestRun);
16
+ }
17
+
18
+
19
+ /**
20
+ * @param payload
21
+ * @returns {Promise<{payload, response: Promise<*>}>}
22
+ */
23
+ async cancel(payload)
24
+ {
25
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/cancel`;
26
+
27
+ payload = this.handle_request_payload(payload);
28
+ let response = this.api_request(url, payload);
29
+ response = this.handle_response(response);
30
+
31
+ return {
32
+ response: response,
33
+ payload : payload
34
+ };
35
+ }
36
+ }
@@ -0,0 +1,88 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeAutotestStep } from "../types/family_elements/typeAutotestStep";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (04/09/2026)
7
+ */
8
+ export class AutotestStepApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'autotest_step';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeAutotestStep);
16
+ }
17
+
18
+
19
+ /**
20
+ * @version v.1.0 (05/09/2026)
21
+ */
22
+ async increase_sort_order(payload)
23
+ {
24
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/increase_sort_order`;
25
+
26
+ payload = this.handle_request_payload(payload);
27
+ let response = this.api_request(url, payload);
28
+ response = this.handle_response(response);
29
+
30
+ return {
31
+ response: response,
32
+ payload : payload
33
+ };
34
+ }
35
+
36
+ /**
37
+ * @version v.1.0 (05/09/2026)
38
+ */
39
+ async decrease_sort_order(payload)
40
+ {
41
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/decrease_sort_order`;
42
+
43
+ payload = this.handle_request_payload(payload);
44
+ let response = this.api_request(url, payload);
45
+ response = this.handle_response(response);
46
+
47
+ return {
48
+ response: response,
49
+ payload : payload
50
+ };
51
+ }
52
+
53
+
54
+ /**
55
+ * @version v.1.0 (05/09/2026)
56
+ */
57
+ async save(payload)
58
+ {
59
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/save`;
60
+
61
+ payload = this.handle_request_payload(payload);
62
+ let response = this.api_request(url, payload);
63
+ response = this.handle_response(response);
64
+
65
+ return {
66
+ response: response,
67
+ payload : payload
68
+ };
69
+ }
70
+
71
+
72
+ /**
73
+ * @version v.1.0 (05/09/2026)
74
+ */
75
+ async save_json(payload)
76
+ {
77
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/save_json`;
78
+
79
+ payload = this.handle_request_payload(payload);
80
+ let response = this.api_request(url, payload);
81
+ response = this.handle_response(response);
82
+
83
+ return {
84
+ response: response,
85
+ payload : payload
86
+ };
87
+ }
88
+ }
@@ -0,0 +1,17 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeAutotestSuite } from "../types/family_elements/typeAutotestSuite";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (04/09/2026)
7
+ */
8
+ export class AutotestSuiteApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'autotest_suite';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeAutotestSuite);
16
+ }
17
+ }
@@ -116,6 +116,60 @@ export class FileAppApi extends ApiAbstractClass
116
116
  }
117
117
 
118
118
 
119
+ /**
120
+ * GET /web_api/file_app/list_team_files?project_id=
121
+ *
122
+ * @param {object} payload
123
+ *
124
+ * @returns {Promise<{payload: object, response: object}>}
125
+ */
126
+ async list_team_files(payload)
127
+ {
128
+ const url = `/${ this.api_prefix }/${ this.module_prefix }/list_team_files`;
129
+ const prev_method = this.method;
130
+
131
+ this.method = 'get';
132
+
133
+ payload = this.handle_request_payload(payload);
134
+ let response = this.api_request(url, payload);
135
+ response = await this.handle_response(response, false);
136
+
137
+ this.method = prev_method;
138
+
139
+ return {
140
+ response: response,
141
+ payload : payload,
142
+ };
143
+ }
144
+
145
+
146
+ /**
147
+ * GET /web_api/file_app/team_usage
148
+ *
149
+ * @param {object} [payload]
150
+ *
151
+ * @returns {Promise<{payload: object, response: object}>}
152
+ */
153
+ async team_usage(payload = {})
154
+ {
155
+ const url = `/${ this.api_prefix }/${ this.module_prefix }/team_usage`;
156
+ const prev_method = this.method;
157
+
158
+ this.method = 'get';
159
+
160
+ payload = this.handle_request_payload(payload);
161
+ let response = this.api_request(url, payload);
162
+ response = await this.handle_response(response, false);
163
+
164
+ this.method = prev_method;
165
+
166
+ return {
167
+ response: response,
168
+ payload : payload,
169
+ };
170
+ }
171
+
172
+
119
173
  /**
120
174
  * POST /web_api/file_app/delete_file
121
175
  *
@@ -136,4 +190,26 @@ export class FileAppApi extends ApiAbstractClass
136
190
  payload : payload,
137
191
  };
138
192
  }
193
+
194
+
195
+ /**
196
+ * POST /web_api/file_app/delete_files
197
+ *
198
+ * @param {object} payload
199
+ * @param {string[]} payload.file_uuids
200
+ *
201
+ * @returns {Promise<{payload: object, response: object}>}
202
+ */
203
+ async delete_files(payload)
204
+ {
205
+ const url = `/${ this.api_prefix }/${ this.module_prefix }/delete_files`;
206
+ payload = this.handle_request_payload(payload);
207
+ let response = this.api_request(url, payload);
208
+ response = await this.handle_response(response, false);
209
+
210
+ return {
211
+ response: response,
212
+ payload : payload,
213
+ };
214
+ }
139
215
  }
@@ -38,6 +38,14 @@ import { PublicTextDocumentApi } from "./public_text_document_api.js";
38
38
  import { TextDocumentFolderApi } from "./text_document_folder_api.js";
39
39
  import { FileAppApi } from "./file_app_api.js";
40
40
  import { EventApi } from "./event_api.js";
41
+ import { AutotestCaseApi } from "./autotest_case_api.js";
42
+ import { AutotestSuiteApi } from "./autotest_suite_api.js";
43
+ import { AutotestStepApi } from "./autotest_step_api.js";
44
+ import { AutotestRunApi } from "./autotest_run_api.js";
45
+ import { AutotestResultApi } from "./autotest_result_api.js";
46
+ import { ObjectRepositoryFolderApi } from "./object_repository_folder_api.js";
47
+ import { ObjectRepositoryPageApi } from "./object_repository_page_api.js";
48
+ import { ObjectRepositoryElementApi } from "./object_repository_element_api.js";
41
49
 
42
50
  /**
43
51
  * Обертка над axios
@@ -184,6 +192,14 @@ export class Api
184
192
  this.custom_property_value = new CustomPropertyValueApi(payload);
185
193
  this.custom_property_option = new CustomPropertyOptionApi(payload);
186
194
  this.event = new EventApi(payload);
195
+ this.autotest_case = new AutotestCaseApi(payload);
196
+ this.autotest_suite = new AutotestSuiteApi(payload);
197
+ this.autotest_step = new AutotestStepApi(payload);
198
+ this.autotest_run = new AutotestRunApi(payload);
199
+ this.autotest_result = new AutotestResultApi(payload);
200
+ this.object_repository_folder = new ObjectRepositoryFolderApi(payload);
201
+ this.object_repository_page = new ObjectRepositoryPageApi(payload);
202
+ this.object_repository_element = new ObjectRepositoryElementApi(payload);
187
203
  this.execution_context = new ExecutionContextApi(payload);
188
204
  this.browser_tools_util_execution = new BrowserToolsUtilExecutionApi(payload);
189
205
  this.browser_tools_screenshot_multi = new BrowserToolsScreenshotMultiApi(payload);
@@ -0,0 +1,17 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeObjectRepositoryElement } from "../types/family_elements/typeObjectRepositoryElement";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (05/09/2026)
7
+ */
8
+ export class ObjectRepositoryElementApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'object_repository_element';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeObjectRepositoryElement);
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeObjectRepositoryFolder } from "../types/family_elements/typeObjectRepositoryFolder";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (05/09/2026)
7
+ */
8
+ export class ObjectRepositoryFolderApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'object_repository_folder';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeObjectRepositoryFolder);
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ import { ApiAbstractElementClass } from "./api_abstract_element_class";
2
+ import { typeObjectRepositoryPage } from "../types/family_elements/typeObjectRepositoryPage";
3
+
4
+
5
+ /**
6
+ * @version v.1.0 (05/09/2026)
7
+ */
8
+ export class ObjectRepositoryPageApi extends ApiAbstractElementClass
9
+ {
10
+ module_prefix = 'object_repository_page';
11
+
12
+ constructor(options)
13
+ {
14
+ super(options);
15
+ this.set_element_class_instance(typeObjectRepositoryPage);
16
+ }
17
+ }
@@ -107,6 +107,20 @@ export class MenuConfigurationMain extends abstractAppConfiguration
107
107
  sort_order: 3,
108
108
  }));
109
109
 
110
+ response.push(new typeMenuElement({
111
+ link : `/web/${ locale }/autotest_case/listing`,
112
+ text : 'Autotest Cases',
113
+ icon : '?',
114
+ sort_order: 4,
115
+ }));
116
+
117
+ response.push(new typeMenuElement({
118
+ link : `/web/${ locale }/autotest_run/listing`,
119
+ text : 'Autotest Runs',
120
+ icon : '?',
121
+ sort_order: 5,
122
+ }));
123
+
110
124
  /*response.push(new typeMenuElement({
111
125
  link : `/web/${ locale }/task/listing`,
112
126
  text : 'To Do',
@@ -20,6 +20,14 @@ import { typeUtilExecutionScreenshotMulti } from '../../../types/family_utils/ty
20
20
  import { typeUtilExecutionUrlInspect } from '../../../types/family_utils/typeUtilExecutionUrlInspect.js';
21
21
  import { typeTextDocument } from '../../../types/family_files/typeTextDocument.js';
22
22
  import { typeEvent } from '../../../types/family_events/typeEvent.js';
23
+ import { typeAutotestCase } from '../../../types/family_elements/typeAutotestCase.js';
24
+ import { typeAutotestSuite } from '../../../types/family_elements/typeAutotestSuite.js';
25
+ import { typeAutotestStep } from '../../../types/family_elements/typeAutotestStep.js';
26
+ import { typeAutotestRun } from '../../../types/family_elements/typeAutotestRun.js';
27
+ import { typeAutotestResult } from '../../../types/family_elements/typeAutotestResult.js';
28
+ import { typeObjectRepositoryFolder } from '../../../types/family_elements/typeObjectRepositoryFolder.js';
29
+ import { typeObjectRepositoryPage } from '../../../types/family_elements/typeObjectRepositoryPage.js';
30
+ import { typeObjectRepositoryElement } from '../../../types/family_elements/typeObjectRepositoryElement.js';
23
31
 
24
32
  /**
25
33
  * Реестр классов моделей по ключу `element_type`.
@@ -55,4 +63,12 @@ export const TABLE_ELEMENT_MODELS = {
55
63
  util_execution : typeUtilExecutionScreenshotMulti,
56
64
  util_execution_url_inspect: typeUtilExecutionUrlInspect,
57
65
  event : typeEvent,
66
+ autotest_case : typeAutotestCase,
67
+ autotest_suite : typeAutotestSuite,
68
+ autotest_step : typeAutotestStep,
69
+ autotest_run : typeAutotestRun,
70
+ autotest_result : typeAutotestResult,
71
+ object_repository_folder : typeObjectRepositoryFolder,
72
+ object_repository_page : typeObjectRepositoryPage,
73
+ object_repository_element: typeObjectRepositoryElement,
58
74
  };
@@ -0,0 +1,73 @@
1
+ import { typeAutotestCase } from '../../../types/family_elements/typeAutotestCase.js';
2
+ import { UserService } from '../../../services/UserService.js';
3
+ import { createColumn, createGoToColumn, createPrimaryKeyColumn, createRowSelectColumn } from '../helpers/column_factory.js';
4
+ import { createListingFor, registerSection } from '../helpers/section_registry.js';
5
+
6
+
7
+ function build_autotest_case_listing_columns(locale, { include_select = true, include_goto = true, include_kind = false } = {})
8
+ {
9
+ const model = new typeAutotestCase();
10
+ const columns = [];
11
+
12
+ if (include_select)
13
+ {
14
+ columns.push(createRowSelectColumn());
15
+ }
16
+
17
+ columns.push(createPrimaryKeyColumn(model, locale));
18
+ columns.push(createColumn(model, locale, 'autotest_case_title', {
19
+ width : '480',
20
+ is_editable: true,
21
+ is_required: true,
22
+ is_title : true,
23
+ }));
24
+ columns.push(createColumn(model, locale, 'autotest_case_status', {
25
+ width : '150',
26
+ is_editable: true,
27
+ is_required: true,
28
+ }));
29
+ if (include_kind)
30
+ {
31
+ columns.push(createColumn(model, locale, 'autotest_case_kind', {
32
+ width : '140',
33
+ is_editable: false,
34
+ is_required: true,
35
+ }));
36
+ }
37
+ columns.push(createColumn(model, locale, 'tags', {
38
+ width : '220',
39
+ is_editable: false,
40
+ is_sortable: false,
41
+ is_required: false,
42
+ }));
43
+ columns.push(createColumn(model, locale, 'created_at', { width: '170', is_required: true }));
44
+ if (include_goto)
45
+ {
46
+ columns.push(createGoToColumn(model, locale));
47
+ }
48
+
49
+ return columns;
50
+ }
51
+
52
+
53
+ /**
54
+ * Секции `autotest_case`: `listing`.
55
+ *
56
+ * @param {Object} config
57
+ * @returns {void}
58
+ */
59
+ export function bootstrap_autotest_case(config)
60
+ {
61
+ const locale = UserService.get_current_language();
62
+
63
+ registerSection(config, 'autotest_case', 'listing', build_autotest_case_listing_columns(locale), {
64
+ for: createListingFor([ 'project_id' ], { add: [ 'tags', 'pre_autotest_case_ids' ] }),
65
+ });
66
+
67
+ registerSection(config, 'autotest_case', 'picker', build_autotest_case_listing_columns(locale, {
68
+ include_goto: false,
69
+ include_kind: true,
70
+ }), {
71
+ for: createListingFor([ 'project_id' ]),
72
+ });
73
+ }
@@ -0,0 +1,59 @@
1
+ import { typeAutotestResult } from '../../../types/family_elements/typeAutotestResult.js';
2
+ import { UserService } from '../../../services/UserService.js';
3
+ import { createColumn, createGoToColumn, createPrimaryKeyColumn } from '../helpers/column_factory.js';
4
+ import { createListingFor, registerSection } from '../helpers/section_registry.js';
5
+
6
+
7
+ function build_autotest_result_listing_columns(locale)
8
+ {
9
+ const model = new typeAutotestResult();
10
+
11
+ return [
12
+ createPrimaryKeyColumn(model, locale),
13
+ createColumn(model, locale, 'autotest_run_id', { width: '120', is_required: true }),
14
+ createColumn(model, locale, 'autotest_case_id', { width: '140', is_required: true }),
15
+ createColumn(model, locale, 'autotest_result_status', {
16
+ width : '150',
17
+ is_editable: false,
18
+ is_required: true,
19
+ }),
20
+ createColumn(model, locale, 'finished_at', { width: '170', is_required: true }),
21
+ createGoToColumn(model, locale),
22
+ ];
23
+ }
24
+
25
+
26
+ function build_autotest_result_embedded_columns(locale)
27
+ {
28
+ const model = new typeAutotestResult();
29
+
30
+ return [
31
+ createPrimaryKeyColumn(model, locale),
32
+ createColumn(model, locale, 'autotest_case_id', { width: '140', is_required: true }),
33
+ createColumn(model, locale, 'autotest_result_status', {
34
+ width : '150',
35
+ is_editable: false,
36
+ is_required: true,
37
+ }),
38
+ createColumn(model, locale, 'finished_at', { width: '170', is_required: true }),
39
+ createGoToColumn(model, locale),
40
+ ];
41
+ }
42
+
43
+
44
+ /**
45
+ * @param {Object} config
46
+ * @returns {void}
47
+ */
48
+ export function bootstrap_autotest_result(config)
49
+ {
50
+ const locale = UserService.get_current_language();
51
+
52
+ registerSection(config, 'autotest_result', 'listing', build_autotest_result_listing_columns(locale), {
53
+ for: createListingFor([ 'autotest_run_id' ]),
54
+ });
55
+
56
+ registerSection(config, 'autotest_result', 'embedded', build_autotest_result_embedded_columns(locale), {
57
+ for: createListingFor([ 'autotest_run_id' ]),
58
+ });
59
+ }