complexqa_frontend_core 1.20.3 → 1.21.2

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 (53) hide show
  1. package/package.json +1 -1
  2. package/publish/api/index.js +18 -16
  3. package/publish/api/util/browser_tools_util_execution_api.js +108 -0
  4. package/publish/index.js +8 -0
  5. package/publish/services/serviceTranslate.js +2 -0
  6. package/publish/types/core/0_familyGeneralElement.js +10 -1
  7. package/publish/types/core/1_familyContext.js +3 -38
  8. package/publish/types/element_translate/_familyContext.i18n.js +190 -0
  9. package/publish/types/element_translate/_familyUtil.i18n.js +68 -0
  10. package/publish/types/element_translate/typeBrowserContext.i18n.js +24 -0
  11. package/publish/types/element_translate/typeBug.i18n.js +1014 -0
  12. package/publish/types/element_translate/typeBugRelation.i18n.js +146 -0
  13. package/publish/types/element_translate/typeDeploymentTargetContext.i18n.js +184 -0
  14. package/publish/types/element_translate/typeDeviceContext.i18n.js +118 -0
  15. package/publish/types/element_translate/typeExecutionContext.i18n.js +267 -0
  16. package/publish/types/element_translate/typeLocaleContext.i18n.js +90 -0
  17. package/publish/types/element_translate/typeOsContext.i18n.js +118 -0
  18. package/publish/types/element_translate/typeProject.i18n.js +135 -0
  19. package/publish/types/element_translate/typeScreenResolutionContext.i18n.js +151 -0
  20. package/publish/types/element_translate/typeTeamMember.i18n.js +119 -0
  21. package/publish/types/element_translate/typeTeamTotalStatistic.i18n.js +97 -0
  22. package/publish/types/element_translate/typeTestAccount.i18n.js +108 -0
  23. package/publish/types/element_translate/typeTestCase.i18n.js +359 -0
  24. package/publish/types/element_translate/typeTestCaseStep.i18n.js +179 -0
  25. package/publish/types/element_translate/typeTestRun.i18n.js +223 -0
  26. package/publish/types/element_translate/typeTestRunResult.i18n.js +141 -0
  27. package/publish/types/element_translate/typeUtilExecution.i18n.js +49 -0
  28. package/publish/types/element_translate/typeUtilExecutionScreenshotMulti.i18n.js +43 -0
  29. package/publish/types/family_context/typeBrowserContext.js +2 -8
  30. package/publish/types/family_context/typeDeploymentTargetContext.js +3 -41
  31. package/publish/types/family_context/typeDeviceContext.js +3 -29
  32. package/publish/types/family_context/typeExecutionContext.js +3 -52
  33. package/publish/types/family_context/typeLocaleContext.js +2 -20
  34. package/publish/types/family_context/typeOsContext.js +3 -29
  35. package/publish/types/family_context/typeScreenResolutionContext.js +3 -35
  36. package/publish/types/family_contracts/familyContracts.js +10 -1
  37. package/publish/types/family_contracts/typeTeamTotalStatistic.js +2 -18
  38. package/publish/types/family_elements/typeBug.js +3 -196
  39. package/publish/types/family_elements/typeProject.js +3 -29
  40. package/publish/types/family_elements/typeTeamMember.js +2 -22
  41. package/publish/types/family_elements/typeTestAccount.js +2 -20
  42. package/publish/types/family_elements/typeTestCase.js +3 -72
  43. package/publish/types/family_elements/typeTestCaseStep.js +3 -36
  44. package/publish/types/family_elements/typeTestRun.js +3 -45
  45. package/publish/types/family_elements/typeTestRunResult.js +2 -27
  46. package/publish/types/family_relation/typeBugRelation.js +3 -30
  47. package/publish/types/family_utils/familyUtil.js +43 -0
  48. package/publish/types/family_utils/typeUtilExecution.js +153 -0
  49. package/publish/types/family_utils/typeUtilExecutionEvent.js +56 -0
  50. package/publish/types/family_utils/typeUtilExecutionScreenshotMulti.js +72 -0
  51. package/publish/types/family_utils/typeUtilExecutionScreenshotMultiCapture.js +57 -0
  52. package/publish/types/family_utils/typeUtilExecutionScreenshotMultiCaptureError.js +49 -0
  53. package/publish/types/family_utils/typeUtilExecutionScreenshotMultiScreenshot.js +57 -0
@@ -1,5 +1,6 @@
1
1
  import { echo, is_object } from "../../utils/utils";
2
2
  import { familyTestDocumentation } from "../core/1_familyTestDocumentation.js";
3
+ import { typeTestRun_i18n } from "../element_translate/typeTestRun.i18n.js";
3
4
 
4
5
  /**
5
6
  * Коллекция тестов для работы, она же parent для typeTestRunResult
@@ -55,52 +56,9 @@ export class typeTestRun extends familyTestDocumentation
55
56
  };
56
57
 
57
58
 
58
- enum_value_translate_matrix = {
59
- test_run_status: {
60
- en: {
61
- PENDING : 'Pending',
62
- IN_PROGRESS: 'In progress',
63
- COMPLETED : 'Completed',
64
- CLOSED : 'Closed',
65
- },
66
- ru: {
67
- PENDING : 'Ожидает',
68
- IN_PROGRESS: 'В работе',
69
- COMPLETED : 'Завершен',
70
- CLOSED : 'Закрыт',
71
- },
72
- },
73
- };
74
-
59
+ enum_value_translate_matrix = typeTestRun_i18n.enum_value_translate_matrix;
75
60
 
76
- attribute_name_translate_matrix = {
77
- en: {
78
- test_run_id : 'ID',
79
- test_run_name : 'Name',
80
- project_id : 'Project',
81
- team_id : 'Team',
82
- test_run_description: 'Description',
83
- assigned_to : 'Assigned to',
84
- test_case_ids : 'Test cases',
85
- test_run_status : 'Status',
86
- created_at : 'Created at',
87
- updated_at : 'Updated at',
88
- completed_at : 'Completed at',
89
- },
90
- ru: {
91
- test_run_id : 'ID',
92
- test_run_name : 'Название',
93
- project_id : 'Проект',
94
- team_id : 'Команда',
95
- test_run_description: 'Описание',
96
- assigned_to : 'Назначен',
97
- test_case_ids : 'Тест кейсы',
98
- test_run_status : 'Статус',
99
- created_at : 'Создано',
100
- updated_at : 'Изменено',
101
- completed_at : 'Завершено',
102
- },
103
- };
61
+ attribute_name_translate_matrix = typeTestRun_i18n.attribute_name_translate_matrix;
104
62
 
105
63
  status_color = {
106
64
  PENDING : '#C4B040',
@@ -1,5 +1,6 @@
1
1
  import { is_object } from "../../utils/utils";
2
2
  import { familyTestDocumentation } from "../core/1_familyTestDocumentation.js";
3
+ import { typeTestRunResult_i18n } from "../element_translate/typeTestRunResult.i18n.js";
3
4
 
4
5
  /**
5
6
  * 1 результат по каждому тест кейсу
@@ -49,33 +50,7 @@ export class typeTestRunResult extends familyTestDocumentation
49
50
  };
50
51
 
51
52
 
52
- attribute_name_translate_matrix = {
53
- en: {
54
- test_result_id : 'ID',
55
- test_case_id : 'Test case',
56
- test_run_id : 'Test run',
57
- test_result_status : 'Status',
58
- test_result_description: 'Description',
59
- assigned_to : 'Assigned to',
60
- project_id : 'Project',
61
- created_at : 'Created at',
62
- updated_at : 'Updated at',
63
- completed_at : 'Completed at',
64
- },
65
- ru: {
66
- test_result_id : 'ID',
67
- test_case_id : 'Тест кейс',
68
- test_run_id : 'Тестовый прогон',
69
- test_result_status : 'Статус',
70
- test_result_description: 'Описание',
71
- assigned_to : 'Назначен',
72
- project_id : 'Проект',
73
- created_at : 'Создано',
74
- updated_at : 'Обновлено',
75
- completed_at : 'Завершено',
76
- },
77
- };
78
-
53
+ attribute_name_translate_matrix = typeTestRunResult_i18n.attribute_name_translate_matrix;
79
54
 
80
55
  status_color = {
81
56
  PENDING: '#C4B040',
@@ -1,6 +1,7 @@
1
1
  import { is_object } from '../../utils/utils.js';
2
2
  import _ from 'underscore';
3
3
  import { familyRelation } from '../core/1_familyRelation.js';
4
+ import { typeBugRelation_i18n } from '../element_translate/typeBugRelation.i18n.js';
4
5
 
5
6
  /**
6
7
  * Связь бага с сущностью TMS / контекстом выполнения.
@@ -55,37 +56,9 @@ export class typeBugRelation extends familyRelation
55
56
  relation_type: typeBugRelation.get_relation_type_values(),
56
57
  };
57
58
 
58
- enum_value_translate_matrix = {
59
- relation_type: {
60
- en: {
61
- test_case_id : 'Test case',
62
- test_run_id : 'Test run',
63
- test_run_result_id : 'Test run result',
64
- execution_context_id: 'Execution context',
65
- },
66
- ru: {
67
- test_case_id : 'Тест-кейс',
68
- test_run_id : 'Прогон',
69
- test_run_result_id : 'Результат прогона',
70
- execution_context_id: 'Контекст выполнения',
71
- },
72
- },
73
- };
59
+ enum_value_translate_matrix = typeBugRelation_i18n.enum_value_translate_matrix;
74
60
 
75
- attribute_name_translate_matrix = {
76
- en: {
77
- bug_relation_id: 'ID',
78
- bug_id : 'Bug',
79
- relation_type : 'Relation type',
80
- element_id : 'Linked element',
81
- },
82
- ru: {
83
- bug_relation_id: 'ID',
84
- bug_id : 'Баг',
85
- relation_type : 'Тип связи',
86
- element_id : 'Связанный элемент',
87
- },
88
- };
61
+ attribute_name_translate_matrix = typeBugRelation_i18n.attribute_name_translate_matrix;
89
62
 
90
63
 
91
64
  static get_relation_type_values()
@@ -0,0 +1,43 @@
1
+ import { familyGeneralElement } from "../core/0_familyGeneralElement.js";
2
+
3
+
4
+ /**
5
+ * Базовый класс для Util Service layer (typed executions).
6
+ *
7
+ * @see docs/Utils Layer/browser-tools-util-execution-docs.MD
8
+ *
9
+ * @version v.1.0 (24/06/2026)
10
+ */
11
+ export class familyUtil extends familyGeneralElement
12
+ {
13
+ /**
14
+ * @returns {string[]}
15
+ */
16
+ static get_execution_status_values()
17
+ {
18
+ return [
19
+ 'pending',
20
+ 'submit_failed',
21
+ 'queued',
22
+ 'completed',
23
+ 'failed',
24
+ ];
25
+ }
26
+
27
+
28
+ /**
29
+ * @returns {string[]}
30
+ */
31
+ static get_event_type_values()
32
+ {
33
+ return [
34
+ 'pending',
35
+ 'submit_failed',
36
+ 'queued',
37
+ 'completed',
38
+ 'failed',
39
+ 'callback_received',
40
+ 'deleted',
41
+ ];
42
+ }
43
+ }
@@ -0,0 +1,153 @@
1
+ import { familyUtil } from "./familyUtil.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+ import { typeUtilExecution_i18n } from "../element_translate/typeUtilExecution.i18n.js";
4
+ import { typeUtilExecutionScreenshotMulti } from "./typeUtilExecutionScreenshotMulti.js";
5
+ import { typeUtilExecutionScreenshotMultiCapture } from "./typeUtilExecutionScreenshotMultiCapture.js";
6
+ import { typeUtilExecutionScreenshotMultiScreenshot } from "./typeUtilExecutionScreenshotMultiScreenshot.js";
7
+ import { typeUtilExecutionScreenshotMultiCaptureError } from "./typeUtilExecutionScreenshotMultiCaptureError.js";
8
+ import { typeUtilExecutionEvent } from "./typeUtilExecutionEvent.js";
9
+
10
+
11
+ /**
12
+ * Корневая сущность util execution (Browser Tools screenshot.multi и др.).
13
+ *
14
+ * @see docs/Utils Layer/browser-tools-util-execution-docs.MD
15
+ *
16
+ * @version v.1.0 (24/06/2026)
17
+ */
18
+ export class typeUtilExecution extends familyUtil
19
+ {
20
+ util_execution_id;
21
+ team_id;
22
+ project_id;
23
+ user_id;
24
+
25
+ execution_status;
26
+ external_job_id;
27
+ error_message;
28
+
29
+ submitted_at;
30
+ completed_at;
31
+ created_at;
32
+
33
+ /** Поля listing (денормализация) */
34
+ page_url;
35
+ screenshot_count;
36
+
37
+ /** Поля status (счётчики из screenshot_multi) */
38
+ captures_total;
39
+ captures_succeeded;
40
+ captures_failed;
41
+
42
+ /** Вложенные данные GET details */
43
+ screenshot_multi;
44
+ captures;
45
+ screenshots;
46
+ capture_errors;
47
+ events;
48
+
49
+ primary_key = 'util_execution_id';
50
+ api_key = 'browser_tools_util_execution';
51
+
52
+ structure_scheme = {
53
+ util_execution_id : 'integer | require',
54
+ team_id : 'integer | optional',
55
+ project_id : 'integer | require',
56
+ user_id : 'integer | optional',
57
+ execution_status : 'string | enum | require',
58
+ external_job_id : 'string | max:120 | optional',
59
+ error_message : 'string | optional',
60
+ submitted_at : 'timestamp | optional',
61
+ completed_at : 'timestamp | optional',
62
+ created_at : 'timestamp | optional',
63
+ page_url : 'string | max:2048 | optional',
64
+ screenshot_count : 'integer | optional',
65
+ captures_total : 'integer | optional',
66
+ captures_succeeded: 'integer | optional',
67
+ captures_failed : 'integer | optional',
68
+ };
69
+
70
+ create_scheme = [
71
+ 'project_id',
72
+ 'page_url',
73
+ 'capture_matrix_preset',
74
+ 'captures',
75
+ 'wait_until',
76
+ 'full_page',
77
+ 'navigation_timeout_milliseconds',
78
+ ];
79
+
80
+ available_enum_values = {
81
+ execution_status: familyUtil.get_execution_status_values(),
82
+ };
83
+
84
+ enum_value_translate_matrix = typeUtilExecution_i18n.enum_value_translate_matrix;
85
+
86
+ attribute_name_translate_matrix = typeUtilExecution_i18n.attribute_name_translate_matrix;
87
+
88
+ status_color = {
89
+ pending : '#4D92FA',
90
+ submit_failed: '#E66565',
91
+ queued : '#009688',
92
+ completed : '#009688',
93
+ failed : '#E66565',
94
+ };
95
+
96
+
97
+ /**
98
+ * @param {object|false|undefined} data
99
+ */
100
+ constructor(data = false)
101
+ {
102
+ super();
103
+
104
+ if (data && is_object(data))
105
+ {
106
+ _.mapObject(data, (value, key) =>
107
+ {
108
+ if (key === 'screenshot_multi' && value && is_object(value))
109
+ {
110
+ this.screenshot_multi = new typeUtilExecutionScreenshotMulti(value);
111
+ }
112
+ else if (key === 'captures' && Array.isArray(value))
113
+ {
114
+ this.captures = value.map((row) => new typeUtilExecutionScreenshotMultiCapture(row));
115
+ }
116
+ else if (key === 'screenshots' && Array.isArray(value))
117
+ {
118
+ this.screenshots = value.map((row) => new typeUtilExecutionScreenshotMultiScreenshot(row));
119
+ }
120
+ else if (key === 'capture_errors' && Array.isArray(value))
121
+ {
122
+ this.capture_errors = value.map((row) => new typeUtilExecutionScreenshotMultiCaptureError(row));
123
+ }
124
+ else if (key === 'events' && Array.isArray(value))
125
+ {
126
+ this.events = value.map((row) => new typeUtilExecutionEvent(row));
127
+ }
128
+ else if (this.hasOwnProperty(key))
129
+ {
130
+ this [ key ] = value;
131
+ }
132
+ });
133
+ }
134
+
135
+ return this;
136
+ }
137
+
138
+
139
+ /**
140
+ * @param {object|false|undefined} data
141
+ *
142
+ * @returns {typeUtilExecution|false}
143
+ */
144
+ static hydrateDetails(data)
145
+ {
146
+ if (!data || !is_object(data))
147
+ {
148
+ return false;
149
+ }
150
+
151
+ return new typeUtilExecution(data);
152
+ }
153
+ }
@@ -0,0 +1,56 @@
1
+ import { familyUtil } from "./familyUtil.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+ import { familyUtil_i18n } from "../element_translate/_familyUtil.i18n.js";
4
+
5
+
6
+ /**
7
+ * Событие аудита util execution.
8
+ *
9
+ * @version v.1.0 (24/06/2026)
10
+ */
11
+ export class typeUtilExecutionEvent extends familyUtil
12
+ {
13
+ util_execution_event_id;
14
+ util_execution_id;
15
+ event_type;
16
+ created_at;
17
+
18
+ primary_key = 'util_execution_event_id';
19
+
20
+ structure_scheme = {
21
+ util_execution_event_id: 'integer | optional',
22
+ util_execution_id : 'integer | optional',
23
+ event_type : 'string | enum | require',
24
+ created_at : 'timestamp | optional',
25
+ };
26
+
27
+ available_enum_values = {
28
+ event_type: familyUtil.get_event_type_values(),
29
+ };
30
+
31
+ enum_value_translate_matrix = {
32
+ event_type: familyUtil_i18n.event_type,
33
+ };
34
+
35
+
36
+ /**
37
+ * @param {object|false|undefined} data
38
+ */
39
+ constructor(data = false)
40
+ {
41
+ super();
42
+
43
+ if (data && is_object(data))
44
+ {
45
+ _.mapObject(data, (value, key) =>
46
+ {
47
+ if (this.hasOwnProperty(key))
48
+ {
49
+ this [ key ] = value;
50
+ }
51
+ });
52
+ }
53
+
54
+ return this;
55
+ }
56
+ }
@@ -0,0 +1,72 @@
1
+ import { familyUtil } from "./familyUtil.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+ import { typeUtilExecutionScreenshotMulti_i18n } from "../element_translate/typeUtilExecutionScreenshotMulti.i18n.js";
4
+
5
+
6
+ /**
7
+ * Параметры и результат action screenshot.multi (1:1 к util_execution).
8
+ *
9
+ * @version v.1.0 (24/06/2026)
10
+ */
11
+ export class typeUtilExecutionScreenshotMulti extends familyUtil
12
+ {
13
+ util_execution_id;
14
+ page_url;
15
+ wait_until;
16
+ full_page;
17
+ navigation_timeout_milliseconds;
18
+ capture_matrix_preset;
19
+ last_callback_status;
20
+ captures_total;
21
+ captures_succeeded;
22
+ captures_failed;
23
+ duration_milliseconds;
24
+
25
+ primary_key = 'util_execution_id';
26
+
27
+ structure_scheme = {
28
+ util_execution_id : 'integer | require',
29
+ page_url : 'string | max:2048 | require',
30
+ wait_until : 'string | enum | optional',
31
+ full_page : 'integer | optional',
32
+ navigation_timeout_milliseconds: 'integer | optional',
33
+ capture_matrix_preset : 'string | enum | require',
34
+ last_callback_status : 'string | enum | optional',
35
+ captures_total : 'integer | optional',
36
+ captures_succeeded : 'integer | optional',
37
+ captures_failed : 'integer | optional',
38
+ duration_milliseconds : 'integer | optional',
39
+ };
40
+
41
+ available_enum_values = {
42
+ capture_matrix_preset: [ 'default', 'custom' ],
43
+ wait_until : [ 'load', 'domcontentloaded', 'networkidle', 'commit' ],
44
+ last_callback_status : [ 'completed', 'failed' ],
45
+ };
46
+
47
+ enum_value_translate_matrix = typeUtilExecutionScreenshotMulti_i18n.enum_value_translate_matrix;
48
+
49
+ attribute_name_translate_matrix = typeUtilExecutionScreenshotMulti_i18n.attribute_name_translate_matrix;
50
+
51
+
52
+ /**
53
+ * @param {object|false|undefined} data
54
+ */
55
+ constructor(data = false)
56
+ {
57
+ super();
58
+
59
+ if (data && is_object(data))
60
+ {
61
+ _.mapObject(data, (value, key) =>
62
+ {
63
+ if (this.hasOwnProperty(key))
64
+ {
65
+ this [ key ] = value;
66
+ }
67
+ });
68
+ }
69
+
70
+ return this;
71
+ }
72
+ }
@@ -0,0 +1,57 @@
1
+ import { familyUtil } from "./familyUtil.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+ import { register_type_class } from "../core/type_class_resolver.js";
4
+
5
+
6
+ /**
7
+ * Строка пользовательской матрицы захвата (browser + resolution).
8
+ *
9
+ * @version v.1.0 (24/06/2026)
10
+ */
11
+ export class typeUtilExecutionScreenshotMultiCapture extends familyUtil
12
+ {
13
+ util_execution_screenshot_multi_capture_id;
14
+ util_execution_id;
15
+ sort_order;
16
+ browser_context_id;
17
+ screen_resolution_context_id;
18
+
19
+ primary_key = 'util_execution_screenshot_multi_capture_id';
20
+
21
+ structure_scheme = {
22
+ util_execution_screenshot_multi_capture_id: 'integer | optional',
23
+ util_execution_id : 'integer | optional',
24
+ sort_order : 'integer | optional',
25
+ browser_context_id : 'integer | typeBrowserContext | require',
26
+ screen_resolution_context_id : 'integer | typeScreenResolutionContext | require',
27
+ };
28
+
29
+ create_scheme = [
30
+ 'browser_context_id',
31
+ 'screen_resolution_context_id',
32
+ ];
33
+
34
+
35
+ /**
36
+ * @param {object|false|undefined} data
37
+ */
38
+ constructor(data = false)
39
+ {
40
+ super();
41
+
42
+ if (data && is_object(data))
43
+ {
44
+ _.mapObject(data, (value, key) =>
45
+ {
46
+ if (this.hasOwnProperty(key))
47
+ {
48
+ this [ key ] = value;
49
+ }
50
+ });
51
+ }
52
+
53
+ return this;
54
+ }
55
+ }
56
+
57
+ register_type_class('typeUtilExecutionScreenshotMultiCapture', typeUtilExecutionScreenshotMultiCapture);
@@ -0,0 +1,49 @@
1
+ import { familyUtil } from "./familyUtil.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+
4
+
5
+ /**
6
+ * Частичная ошибка захвата screenshot.multi.
7
+ *
8
+ * @version v.1.0 (24/06/2026)
9
+ */
10
+ export class typeUtilExecutionScreenshotMultiCaptureError extends familyUtil
11
+ {
12
+ util_execution_screenshot_multi_capture_error_id;
13
+ util_execution_id;
14
+ capture_identifier;
15
+ error_message;
16
+ sort_order;
17
+
18
+ primary_key = 'util_execution_screenshot_multi_capture_error_id';
19
+
20
+ structure_scheme = {
21
+ util_execution_screenshot_multi_capture_error_id: 'integer | optional',
22
+ util_execution_id : 'integer | optional',
23
+ capture_identifier : 'string | max:255 | optional',
24
+ error_message : 'string | require',
25
+ sort_order : 'integer | optional',
26
+ };
27
+
28
+
29
+ /**
30
+ * @param {object|false|undefined} data
31
+ */
32
+ constructor(data = false)
33
+ {
34
+ super();
35
+
36
+ if (data && is_object(data))
37
+ {
38
+ _.mapObject(data, (value, key) =>
39
+ {
40
+ if (this.hasOwnProperty(key))
41
+ {
42
+ this [ key ] = value;
43
+ }
44
+ });
45
+ }
46
+
47
+ return this;
48
+ }
49
+ }
@@ -0,0 +1,57 @@
1
+ import { familyUtil } from "./familyUtil.js";
2
+ import { is_object } from "../../utils/utils.js";
3
+
4
+
5
+ /**
6
+ * Результирующий скриншот screenshot.multi.
7
+ *
8
+ * @version v.1.0 (24/06/2026)
9
+ */
10
+ export class typeUtilExecutionScreenshotMultiScreenshot extends familyUtil
11
+ {
12
+ util_execution_screenshot_multi_screenshot_id;
13
+ util_execution_id;
14
+ capture_identifier;
15
+ file_uuid;
16
+ image_url;
17
+ width;
18
+ height;
19
+ duration_milliseconds;
20
+ sort_order;
21
+
22
+ primary_key = 'util_execution_screenshot_multi_screenshot_id';
23
+
24
+ structure_scheme = {
25
+ util_execution_screenshot_multi_screenshot_id: 'integer | optional',
26
+ util_execution_id : 'integer | optional',
27
+ capture_identifier : 'string | max:255 | require',
28
+ file_uuid : 'string | max:64 | optional',
29
+ image_url : 'string | max:2048 | optional',
30
+ width : 'integer | optional',
31
+ height : 'integer | optional',
32
+ duration_milliseconds : 'integer | optional',
33
+ sort_order : 'integer | optional',
34
+ };
35
+
36
+
37
+ /**
38
+ * @param {object|false|undefined} data
39
+ */
40
+ constructor(data = false)
41
+ {
42
+ super();
43
+
44
+ if (data && is_object(data))
45
+ {
46
+ _.mapObject(data, (value, key) =>
47
+ {
48
+ if (this.hasOwnProperty(key))
49
+ {
50
+ this [ key ] = value;
51
+ }
52
+ });
53
+ }
54
+
55
+ return this;
56
+ }
57
+ }