complexqa_frontend_core 1.23.1 → 1.24.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 +1 -1
- package/publish/api/index.js +8 -0
- package/publish/api/tag/tag_color_api.js +16 -0
- package/publish/api/tag/tag_template_api.js +16 -0
- package/publish/api/tag_api.js +52 -0
- package/publish/api/tag_relation_api.js +57 -0
- package/publish/app_configuration/table/helpers/table_element_models.js +4 -0
- package/publish/app_configuration/table/sections/bug.js +7 -1
- package/publish/app_configuration/table/sections/tag.js +84 -0
- package/publish/app_configuration/table/sections/tag_relation.js +309 -0
- package/publish/app_configuration/table/sections/test_account.js +7 -1
- package/publish/app_configuration/table/sections/test_case.js +7 -1
- package/publish/app_configuration/table/sections/test_run.js +7 -1
- package/publish/app_configuration/table/sections/test_run_result.js +7 -1
- package/publish/app_configuration/table/sections/text_document.js +7 -1
- package/publish/app_configuration/table/table_configuration.js +4 -0
- package/publish/index.js +2 -0
- package/publish/types/core/1_familyTestDocumentation.js +9 -1
- package/publish/types/element_translate/typeBug.i18n.js +11 -0
- package/publish/types/element_translate/typeTag.i18n.js +69 -0
- package/publish/types/element_translate/typeTagRelation.i18n.js +74 -0
- package/publish/types/element_translate/typeTestAccount.i18n.js +11 -0
- package/publish/types/element_translate/typeTestCase.i18n.js +11 -0
- package/publish/types/element_translate/typeTestRun.i18n.js +11 -0
- package/publish/types/element_translate/typeTestRunResult.i18n.js +11 -0
- package/publish/types/element_translate/typeTextDocument.i18n.js +11 -0
- package/publish/types/family_elements/typeBug.js +0 -2
- package/publish/types/family_elements/typeTag.js +84 -0
- package/publish/types/family_elements/typeTestAccount.js +2 -0
- package/publish/types/family_events/familyEvent.js +2 -0
- package/publish/types/family_files/typeTextDocument.js +2 -0
- package/publish/types/family_relation/typeTagRelation.js +123 -0
|
@@ -12,6 +12,7 @@ export const typeTestRunResult_i18n = {
|
|
|
12
12
|
test_result_status : 'Status',
|
|
13
13
|
test_result_description: 'Description',
|
|
14
14
|
assigned_to : 'Assigned to',
|
|
15
|
+
tags : 'Tags',
|
|
15
16
|
project_id : 'Project',
|
|
16
17
|
created_at : 'Created at',
|
|
17
18
|
updated_at : 'Updated at',
|
|
@@ -24,6 +25,7 @@ export const typeTestRunResult_i18n = {
|
|
|
24
25
|
test_result_status : 'Статус',
|
|
25
26
|
test_result_description: 'Описание',
|
|
26
27
|
assigned_to : 'Назначен',
|
|
28
|
+
tags : 'Теги',
|
|
27
29
|
project_id : 'Проект',
|
|
28
30
|
created_at : 'Создано',
|
|
29
31
|
updated_at : 'Обновлено',
|
|
@@ -36,6 +38,7 @@ export const typeTestRunResult_i18n = {
|
|
|
36
38
|
test_result_status : 'Status',
|
|
37
39
|
test_result_description: 'Beschreibung',
|
|
38
40
|
assigned_to : 'Zugewiesen an',
|
|
41
|
+
tags : 'Tags',
|
|
39
42
|
project_id : 'Projekt',
|
|
40
43
|
created_at : 'Erstellt am',
|
|
41
44
|
updated_at : 'Geändert am',
|
|
@@ -48,6 +51,7 @@ export const typeTestRunResult_i18n = {
|
|
|
48
51
|
test_result_status : 'الحالة',
|
|
49
52
|
test_result_description: 'الوصف',
|
|
50
53
|
assigned_to : 'مُسند إلى',
|
|
54
|
+
tags : 'الوسوم',
|
|
51
55
|
project_id : 'المشروع',
|
|
52
56
|
created_at : 'تاريخ الإنشاء',
|
|
53
57
|
updated_at : 'تاريخ التحديث',
|
|
@@ -60,6 +64,7 @@ export const typeTestRunResult_i18n = {
|
|
|
60
64
|
test_result_status : 'Estado',
|
|
61
65
|
test_result_description: 'Descripción',
|
|
62
66
|
assigned_to : 'Asignado a',
|
|
67
|
+
tags : 'Etiquetas',
|
|
63
68
|
project_id : 'Proyecto',
|
|
64
69
|
created_at : 'Creado el',
|
|
65
70
|
updated_at : 'Actualizado el',
|
|
@@ -72,6 +77,7 @@ export const typeTestRunResult_i18n = {
|
|
|
72
77
|
test_result_status : 'Statut',
|
|
73
78
|
test_result_description: 'Description',
|
|
74
79
|
assigned_to : 'Assigné à',
|
|
80
|
+
tags : 'Tags',
|
|
75
81
|
project_id : 'Projet',
|
|
76
82
|
created_at : 'Créé le',
|
|
77
83
|
updated_at : 'Modifié le',
|
|
@@ -84,6 +90,7 @@ export const typeTestRunResult_i18n = {
|
|
|
84
90
|
test_result_status : 'Կարգավիճակ',
|
|
85
91
|
test_result_description: 'Նկարագրություն',
|
|
86
92
|
assigned_to : 'Նշանակված',
|
|
93
|
+
tags : 'Պիտակներ',
|
|
87
94
|
project_id : 'Նախագիծ',
|
|
88
95
|
created_at : 'Ստեղծված',
|
|
89
96
|
updated_at : 'Թարմացված',
|
|
@@ -96,6 +103,7 @@ export const typeTestRunResult_i18n = {
|
|
|
96
103
|
test_result_status : 'Stato',
|
|
97
104
|
test_result_description: 'Descrizione',
|
|
98
105
|
assigned_to : 'Assegnato a',
|
|
106
|
+
tags : 'Tag',
|
|
99
107
|
project_id : 'Progetto',
|
|
100
108
|
created_at : 'Creato il',
|
|
101
109
|
updated_at : 'Aggiornato il',
|
|
@@ -108,6 +116,7 @@ export const typeTestRunResult_i18n = {
|
|
|
108
116
|
test_result_status : 'Status',
|
|
109
117
|
test_result_description: 'Opis',
|
|
110
118
|
assigned_to : 'Przypisany do',
|
|
119
|
+
tags : 'Tagi',
|
|
111
120
|
project_id : 'Projekt',
|
|
112
121
|
created_at : 'Utworzono',
|
|
113
122
|
updated_at : 'Zaktualizowano',
|
|
@@ -120,6 +129,7 @@ export const typeTestRunResult_i18n = {
|
|
|
120
129
|
test_result_status : 'Estado',
|
|
121
130
|
test_result_description: 'Descrição',
|
|
122
131
|
assigned_to : 'Atribuído a',
|
|
132
|
+
tags : 'Tags',
|
|
123
133
|
project_id : 'Projeto',
|
|
124
134
|
created_at : 'Criado em',
|
|
125
135
|
updated_at : 'Atualizado em',
|
|
@@ -132,6 +142,7 @@ export const typeTestRunResult_i18n = {
|
|
|
132
142
|
test_result_status : 'Статус',
|
|
133
143
|
test_result_description: 'Тасвирлау',
|
|
134
144
|
assigned_to : 'Билгеләнгән',
|
|
145
|
+
tags : 'Теглар',
|
|
135
146
|
project_id : 'Проект',
|
|
136
147
|
created_at : 'Ясалган',
|
|
137
148
|
updated_at : 'Яңартылган',
|
|
@@ -11,6 +11,7 @@ export const typeTextDocument_i18n = {
|
|
|
11
11
|
team_id : 'Team',
|
|
12
12
|
text_document_folder_id: 'Folder',
|
|
13
13
|
text_document_title : 'Title',
|
|
14
|
+
tags : 'Tags',
|
|
14
15
|
text_document_status : 'Status',
|
|
15
16
|
file_uuid : 'File',
|
|
16
17
|
created_by_user_id : 'Author',
|
|
@@ -23,6 +24,7 @@ export const typeTextDocument_i18n = {
|
|
|
23
24
|
team_id : 'Команда',
|
|
24
25
|
text_document_folder_id: 'Папка',
|
|
25
26
|
text_document_title : 'Название',
|
|
27
|
+
tags : 'Теги',
|
|
26
28
|
text_document_status : 'Статус',
|
|
27
29
|
file_uuid : 'Файл',
|
|
28
30
|
created_by_user_id : 'Автор',
|
|
@@ -35,6 +37,7 @@ export const typeTextDocument_i18n = {
|
|
|
35
37
|
team_id : 'Team',
|
|
36
38
|
text_document_folder_id: 'Ordner',
|
|
37
39
|
text_document_title : 'Titel',
|
|
40
|
+
tags : 'Tags',
|
|
38
41
|
text_document_status : 'Status',
|
|
39
42
|
file_uuid : 'Datei',
|
|
40
43
|
created_by_user_id : 'Autor',
|
|
@@ -47,6 +50,7 @@ export const typeTextDocument_i18n = {
|
|
|
47
50
|
team_id : 'الفريق',
|
|
48
51
|
text_document_folder_id: 'المجلد',
|
|
49
52
|
text_document_title : 'العنوان',
|
|
53
|
+
tags : 'الوسوم',
|
|
50
54
|
text_document_status : 'الحالة',
|
|
51
55
|
file_uuid : 'الملف',
|
|
52
56
|
created_by_user_id : 'المؤلف',
|
|
@@ -59,6 +63,7 @@ export const typeTextDocument_i18n = {
|
|
|
59
63
|
team_id : 'Equipo',
|
|
60
64
|
text_document_folder_id: 'Carpeta',
|
|
61
65
|
text_document_title : 'Título',
|
|
66
|
+
tags : 'Etiquetas',
|
|
62
67
|
text_document_status : 'Estado',
|
|
63
68
|
file_uuid : 'Archivo',
|
|
64
69
|
created_by_user_id : 'Autor',
|
|
@@ -71,6 +76,7 @@ export const typeTextDocument_i18n = {
|
|
|
71
76
|
team_id : 'Équipe',
|
|
72
77
|
text_document_folder_id: 'Dossier',
|
|
73
78
|
text_document_title : 'Titre',
|
|
79
|
+
tags : 'Tags',
|
|
74
80
|
text_document_status : 'Statut',
|
|
75
81
|
file_uuid : 'Fichier',
|
|
76
82
|
created_by_user_id : 'Auteur',
|
|
@@ -83,6 +89,7 @@ export const typeTextDocument_i18n = {
|
|
|
83
89
|
team_id : 'Թիմ',
|
|
84
90
|
text_document_folder_id: 'Թղթապանակ',
|
|
85
91
|
text_document_title : 'Վերնագիր',
|
|
92
|
+
tags : 'Պիտակներ',
|
|
86
93
|
text_document_status : 'Կարգավիճակ',
|
|
87
94
|
file_uuid : 'Ֆայլ',
|
|
88
95
|
created_by_user_id : 'Հեղինակ',
|
|
@@ -95,6 +102,7 @@ export const typeTextDocument_i18n = {
|
|
|
95
102
|
team_id : 'Team',
|
|
96
103
|
text_document_folder_id: 'Cartella',
|
|
97
104
|
text_document_title : 'Titolo',
|
|
105
|
+
tags : 'Tag',
|
|
98
106
|
text_document_status : 'Stato',
|
|
99
107
|
file_uuid : 'File',
|
|
100
108
|
created_by_user_id : 'Autore',
|
|
@@ -107,6 +115,7 @@ export const typeTextDocument_i18n = {
|
|
|
107
115
|
team_id : 'Zespół',
|
|
108
116
|
text_document_folder_id: 'Folder',
|
|
109
117
|
text_document_title : 'Tytuł',
|
|
118
|
+
tags : 'Tagi',
|
|
110
119
|
text_document_status : 'Status',
|
|
111
120
|
file_uuid : 'Plik',
|
|
112
121
|
created_by_user_id : 'Autor',
|
|
@@ -119,6 +128,7 @@ export const typeTextDocument_i18n = {
|
|
|
119
128
|
team_id : 'Equipa',
|
|
120
129
|
text_document_folder_id: 'Pasta',
|
|
121
130
|
text_document_title : 'Título',
|
|
131
|
+
tags : 'Tags',
|
|
122
132
|
text_document_status : 'Estado',
|
|
123
133
|
file_uuid : 'Ficheiro',
|
|
124
134
|
created_by_user_id : 'Autor',
|
|
@@ -131,6 +141,7 @@ export const typeTextDocument_i18n = {
|
|
|
131
141
|
team_id : 'Команд',
|
|
132
142
|
text_document_folder_id: 'Папка',
|
|
133
143
|
text_document_title : 'Исем',
|
|
144
|
+
tags : 'Теглар',
|
|
134
145
|
text_document_status : 'Статус',
|
|
135
146
|
file_uuid : 'Файл',
|
|
136
147
|
created_by_user_id : 'Автор',
|
|
@@ -54,8 +54,6 @@ export class typeBug extends familyTestDocumentation
|
|
|
54
54
|
// related_bug_ids; // pseudo — Bugzilla depends_on / blocks (many-to-many) в развитие
|
|
55
55
|
duplicate_of_id; // Jira/GitHub Duplicate
|
|
56
56
|
|
|
57
|
-
// bug_labels; // штука хорошая, но в развитие
|
|
58
|
-
|
|
59
57
|
created_at;
|
|
60
58
|
updated_at;
|
|
61
59
|
completed_at; // resolved / closed (YouTrack resolved, GitHub closed_at)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { familyTestDocumentation } from "../core/1_familyTestDocumentation.js";
|
|
2
|
+
import { is_object } from "../../utils/utils.js";
|
|
3
|
+
import _ from 'underscore';
|
|
4
|
+
import { typeTag_i18n } from "../element_translate/typeTag.i18n.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Project-scoped tag catalog entry.
|
|
8
|
+
*
|
|
9
|
+
* @see docs/Tags/tag-docs.MD
|
|
10
|
+
*
|
|
11
|
+
* @version v.0.1 (12/08/2026)
|
|
12
|
+
*/
|
|
13
|
+
export class typeTag extends familyTestDocumentation
|
|
14
|
+
{
|
|
15
|
+
tag_id;
|
|
16
|
+
team_id;
|
|
17
|
+
project_id;
|
|
18
|
+
name;
|
|
19
|
+
description;
|
|
20
|
+
tag_color_id;
|
|
21
|
+
created_at;
|
|
22
|
+
updated_at;
|
|
23
|
+
|
|
24
|
+
primary_key = 'tag_id';
|
|
25
|
+
api_key = 'tag';
|
|
26
|
+
|
|
27
|
+
structure_scheme = {
|
|
28
|
+
tag_id : 'integer | require',
|
|
29
|
+
project_id : 'integer | require',
|
|
30
|
+
team_id : 'integer | require',
|
|
31
|
+
name : 'string | require',
|
|
32
|
+
description : 'string | StringHtml | optional',
|
|
33
|
+
tag_color_id: 'integer | require',
|
|
34
|
+
created_at : 'timestamp | optional',
|
|
35
|
+
updated_at : 'timestamp | optional',
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
create_scheme = [
|
|
39
|
+
'project_id',
|
|
40
|
+
'name',
|
|
41
|
+
'tag_color_id',
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
attribute_name_translate_matrix = typeTag_i18n.attribute_name_translate_matrix;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @param {object|false|undefined} data
|
|
49
|
+
* @returns {typeTag}
|
|
50
|
+
*/
|
|
51
|
+
constructor(data = false)
|
|
52
|
+
{
|
|
53
|
+
super();
|
|
54
|
+
|
|
55
|
+
if (data && is_object(data))
|
|
56
|
+
{
|
|
57
|
+
_.mapObject(data, (value, key) =>
|
|
58
|
+
{
|
|
59
|
+
if (this.hasOwnProperty(key))
|
|
60
|
+
{
|
|
61
|
+
this[ key ] = value;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Hex from hydrated tag_color_id object, or null.
|
|
72
|
+
*
|
|
73
|
+
* @returns {string|null}
|
|
74
|
+
*/
|
|
75
|
+
get_color_hex()
|
|
76
|
+
{
|
|
77
|
+
if (this.tag_color_id && typeof this.tag_color_id === 'object' && this.tag_color_id.hex)
|
|
78
|
+
{
|
|
79
|
+
return this.tag_color_id.hex;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { is_object } from '../../utils/utils.js';
|
|
2
|
+
import _ from 'underscore';
|
|
3
|
+
import { familyRelation } from '../core/1_familyRelation.js';
|
|
4
|
+
import { typeTagRelation_i18n } from '../element_translate/typeTagRelation.i18n.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Связь tag с элементом проекта (полиморфная junction).
|
|
8
|
+
*
|
|
9
|
+
* @see docs/Tags/tag-relation-docs.MD
|
|
10
|
+
*
|
|
11
|
+
* @version v.0.1 (12/08/2026)
|
|
12
|
+
*/
|
|
13
|
+
export class typeTagRelation extends familyRelation
|
|
14
|
+
{
|
|
15
|
+
tag_relation_id;
|
|
16
|
+
tag_id;
|
|
17
|
+
element_type;
|
|
18
|
+
element_id;
|
|
19
|
+
|
|
20
|
+
source_key = 'tag_id';
|
|
21
|
+
target_key = 'element_id';
|
|
22
|
+
relation_type_key = 'element_type';
|
|
23
|
+
|
|
24
|
+
primary_key = 'tag_relation_id';
|
|
25
|
+
api_key = 'tag_relation';
|
|
26
|
+
|
|
27
|
+
static relation_target_map = {
|
|
28
|
+
test_suite_id : { type_token: 'typeTestSuite', primary_key: 'test_suite_id', api_key: 'test_suite' },
|
|
29
|
+
test_case_id : { type_token: 'typeTestCase', primary_key: 'test_case_id', api_key: 'test_case' },
|
|
30
|
+
test_run_id : { type_token: 'typeTestRun', primary_key: 'test_run_id', api_key: 'test_run' },
|
|
31
|
+
test_run_result_id : {
|
|
32
|
+
type_token : 'typeTestRunResult',
|
|
33
|
+
primary_key: 'test_run_result_id',
|
|
34
|
+
api_key : 'test_run_result',
|
|
35
|
+
},
|
|
36
|
+
test_account_id : {
|
|
37
|
+
type_token : 'typeTestAccount',
|
|
38
|
+
primary_key: 'test_account_id',
|
|
39
|
+
api_key : 'test_account',
|
|
40
|
+
},
|
|
41
|
+
bug_id : { type_token: 'typeBug', primary_key: 'bug_id', api_key: 'bug' },
|
|
42
|
+
text_document_id : {
|
|
43
|
+
type_token : 'typeTextDocument',
|
|
44
|
+
primary_key: 'text_document_id',
|
|
45
|
+
api_key : 'text_document',
|
|
46
|
+
},
|
|
47
|
+
text_document_folder_id: {
|
|
48
|
+
type_token : 'typeTextDocumentFolder',
|
|
49
|
+
primary_key: 'text_document_folder_id',
|
|
50
|
+
api_key : 'text_document_folder',
|
|
51
|
+
},
|
|
52
|
+
execution_context_id : {
|
|
53
|
+
type_token : 'typeExecutionContext',
|
|
54
|
+
primary_key: 'execution_context_id',
|
|
55
|
+
api_key : 'execution_context',
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
structure_scheme = {
|
|
60
|
+
tag_relation_id: 'integer | require',
|
|
61
|
+
tag_id : 'integer | typeTag | require',
|
|
62
|
+
element_type : 'string | enum | require',
|
|
63
|
+
element_id : 'integer | require',
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
create_scheme = [
|
|
67
|
+
'tag_id',
|
|
68
|
+
'element_type',
|
|
69
|
+
'element_id',
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
available_enum_values = {
|
|
73
|
+
element_type: typeTagRelation.get_relation_type_values(),
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
enum_value_translate_matrix = typeTagRelation_i18n.enum_value_translate_matrix;
|
|
77
|
+
|
|
78
|
+
attribute_name_translate_matrix = typeTagRelation_i18n.attribute_name_translate_matrix;
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
static get_relation_type_values()
|
|
82
|
+
{
|
|
83
|
+
return Object.keys(typeTagRelation.relation_target_map);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
static get_relation_target_map()
|
|
88
|
+
{
|
|
89
|
+
return typeTagRelation.relation_target_map;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @param {object|false|undefined} data
|
|
95
|
+
* @returns {typeTagRelation}
|
|
96
|
+
*/
|
|
97
|
+
constructor(data = false)
|
|
98
|
+
{
|
|
99
|
+
super();
|
|
100
|
+
|
|
101
|
+
if (data && is_object(data))
|
|
102
|
+
{
|
|
103
|
+
_.mapObject(data, (value, key) =>
|
|
104
|
+
{
|
|
105
|
+
if (this.hasOwnProperty(key))
|
|
106
|
+
{
|
|
107
|
+
this[ key ] = value;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @returns {object|false}
|
|
118
|
+
*/
|
|
119
|
+
get_relation_target_meta()
|
|
120
|
+
{
|
|
121
|
+
return typeTagRelation.resolve_relation_target(this.element_type);
|
|
122
|
+
}
|
|
123
|
+
}
|