complexqa_frontend_core 1.25.1 → 1.27.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/custom_property/custom_property_template_api.js +16 -0
- package/publish/api/custom_property_api.js +54 -0
- package/publish/api/custom_property_option_api.js +17 -0
- package/publish/api/custom_property_value_api.js +82 -0
- package/publish/api/index.js +12 -0
- package/publish/api/team_domain_api.js +62 -0
- package/publish/api/team_management_api.js +1 -1
- package/publish/api/util/url_inspect_api.js +54 -0
- package/publish/app_configuration/table/helpers/table_element_models.js +8 -0
- package/publish/app_configuration/table/sections/custom_property.js +96 -0
- package/publish/app_configuration/table/sections/team_domain.js +55 -0
- package/publish/app_configuration/table/sections/util_execution_url_inspect.js +60 -0
- package/publish/app_configuration/table/table_configuration.js +6 -0
- package/publish/index.js +5 -0
- package/publish/services/UserService.js +9 -0
- package/publish/types/core/1_familyTestDocumentation.js +8 -0
- package/publish/types/element_translate/typeCustomProperty.i18n.js +85 -0
- package/publish/types/element_translate/typeCustomPropertyValue.i18n.js +65 -0
- package/publish/types/element_translate/typeTeamDomain.i18n.js +71 -0
- package/publish/types/element_translate/typeTeamTotalStatistic.i18n.js +221 -67
- package/publish/types/element_translate/typeUtilExecutionUrlInspect.i18n.js +55 -0
- package/publish/types/element_translate/typeUtilExecutionUrlInspectCheck.i18n.js +111 -0
- package/publish/types/family_contracts/typeTeamTotalStatistic.js +6 -10
- package/publish/types/family_elements/typeCustomProperty.js +138 -0
- package/publish/types/family_elements/typeTeam.js +5 -2
- package/publish/types/family_elements/typeTeamDomain.js +172 -0
- package/publish/types/family_events/familyEvent.js +2 -0
- package/publish/types/family_relation/typeCustomPropertyValue.js +117 -0
- package/publish/types/family_utils/typeUtilExecutionUrlInspect.js +199 -0
- package/publish/types/family_utils/typeUtilExecutionUrlInspectCheck.js +100 -0
package/package.json
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiAbstractReferenceClass } from '../api_abstract_reference_class.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* System custom property templates (read-only for tenants).
|
|
5
|
+
*
|
|
6
|
+
* @version v.0.1 (15/08/2026)
|
|
7
|
+
*/
|
|
8
|
+
export class CustomPropertyTemplateApi extends ApiAbstractReferenceClass
|
|
9
|
+
{
|
|
10
|
+
module_prefix = 'custom_property_template';
|
|
11
|
+
|
|
12
|
+
constructor(options)
|
|
13
|
+
{
|
|
14
|
+
super(options);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from './api_abstract_element_class.js';
|
|
2
|
+
import { typeCustomProperty } from '../types/family_elements/typeCustomProperty.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* CRUD / Search / clone_from_templates for custom_property catalog.
|
|
6
|
+
* Create / update / delete / clone require ADMINISTRATOR on the server.
|
|
7
|
+
*
|
|
8
|
+
* @version v.0.1 (15/08/2026)
|
|
9
|
+
*/
|
|
10
|
+
export class CustomPropertyApi extends ApiAbstractElementClass
|
|
11
|
+
{
|
|
12
|
+
module_prefix = 'custom_property';
|
|
13
|
+
|
|
14
|
+
constructor(options)
|
|
15
|
+
{
|
|
16
|
+
super(options);
|
|
17
|
+
this.set_element_class_instance(typeCustomProperty);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Clone system templates into the team catalog for one element_type.
|
|
23
|
+
* Server: ADMINISTRATOR only.
|
|
24
|
+
*
|
|
25
|
+
* @param {{ element_type: string, custom_property_template_ids: number[] }} payload
|
|
26
|
+
* @returns {Promise<{response: *, payload: *}>}
|
|
27
|
+
*/
|
|
28
|
+
async clone_from_templates(payload)
|
|
29
|
+
{
|
|
30
|
+
if (!this.module_prefix)
|
|
31
|
+
{
|
|
32
|
+
throw new Error('Error #custom-property-clone-1152 in CustomPropertyApi');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (this.stage === 'development')
|
|
36
|
+
{
|
|
37
|
+
return {
|
|
38
|
+
response: payload,
|
|
39
|
+
payload : payload,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/clone_from_templates`;
|
|
44
|
+
|
|
45
|
+
payload = this.handle_request_payload(payload);
|
|
46
|
+
let response = this.api_request(url, payload);
|
|
47
|
+
response = this.handle_response(response);
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
response: response,
|
|
51
|
+
payload : payload,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from './api_abstract_element_class.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Options for DROPDOWN / MULTISELECT catalog slots.
|
|
5
|
+
* Mutations require ADMINISTRATOR on the server.
|
|
6
|
+
*
|
|
7
|
+
* @version v.0.1 (15/08/2026)
|
|
8
|
+
*/
|
|
9
|
+
export class CustomPropertyOptionApi extends ApiAbstractElementClass
|
|
10
|
+
{
|
|
11
|
+
module_prefix = 'custom_property_option';
|
|
12
|
+
|
|
13
|
+
constructor(options)
|
|
14
|
+
{
|
|
15
|
+
super(options);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from './api_abstract_element_class.js';
|
|
2
|
+
import { typeCustomPropertyValue } from '../types/family_relation/typeCustomPropertyValue.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Explicit value writers: set / add / delete. Not a union create().
|
|
6
|
+
* READONLY → api_code = -501. MEMBER and ADMINISTRATOR may write.
|
|
7
|
+
*
|
|
8
|
+
* @version v.0.1 (15/08/2026)
|
|
9
|
+
*/
|
|
10
|
+
export class CustomPropertyValueApi extends ApiAbstractElementClass
|
|
11
|
+
{
|
|
12
|
+
module_prefix = 'custom_property_value';
|
|
13
|
+
|
|
14
|
+
constructor(options)
|
|
15
|
+
{
|
|
16
|
+
super(options);
|
|
17
|
+
this.set_element_class_instance(typeCustomPropertyValue);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @param {object} payload
|
|
23
|
+
* @returns {Promise<{response: *, payload: *}>}
|
|
24
|
+
*/
|
|
25
|
+
async set(payload)
|
|
26
|
+
{
|
|
27
|
+
return this.#process('set', payload);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @param {object} payload
|
|
33
|
+
* @returns {Promise<{response: *, payload: *}>}
|
|
34
|
+
*/
|
|
35
|
+
async add(payload)
|
|
36
|
+
{
|
|
37
|
+
return this.#process('add', payload);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @param {object} payload
|
|
43
|
+
* @returns {Promise<{response: *, payload: *}>}
|
|
44
|
+
*/
|
|
45
|
+
async delete(payload)
|
|
46
|
+
{
|
|
47
|
+
return this.#process('delete', payload);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @param {string} action
|
|
53
|
+
* @param {object} payload
|
|
54
|
+
* @returns {Promise<{response: *, payload: *}>}
|
|
55
|
+
*/
|
|
56
|
+
async #process(action, payload)
|
|
57
|
+
{
|
|
58
|
+
if (!this.module_prefix)
|
|
59
|
+
{
|
|
60
|
+
throw new Error('Error #custom-property-value-1152 in CustomPropertyValueApi');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (this.stage === 'development')
|
|
64
|
+
{
|
|
65
|
+
return {
|
|
66
|
+
response: payload,
|
|
67
|
+
payload : payload,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/${ action }`;
|
|
72
|
+
|
|
73
|
+
payload = this.handle_request_payload(payload);
|
|
74
|
+
let response = this.api_request(url, payload);
|
|
75
|
+
response = this.handle_response(response);
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
response: response,
|
|
79
|
+
payload : payload,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
package/publish/api/index.js
CHANGED
|
@@ -16,8 +16,12 @@ import { BugRelationApi } from "./bug_relation_api.js";
|
|
|
16
16
|
import { AttachmentApi } from "./attachment_api.js";
|
|
17
17
|
import { TagApi } from "./tag_api.js";
|
|
18
18
|
import { TagRelationApi } from "./tag_relation_api.js";
|
|
19
|
+
import { CustomPropertyApi } from "./custom_property_api.js";
|
|
20
|
+
import { CustomPropertyValueApi } from "./custom_property_value_api.js";
|
|
21
|
+
import { CustomPropertyOptionApi } from "./custom_property_option_api.js";
|
|
19
22
|
import { TagColorApi } from "./tag/tag_color_api.js";
|
|
20
23
|
import { TagTemplateApi } from "./tag/tag_template_api.js";
|
|
24
|
+
import { CustomPropertyTemplateApi } from "./custom_property/custom_property_template_api.js";
|
|
21
25
|
import { ContextBrowserApi } from "./context/context_browser_api.js";
|
|
22
26
|
import { ContextDeploymentTargetApi } from "./context/context_deployment_target_api.js";
|
|
23
27
|
import { ContextDevicesApi } from "./context/context_devices_api.js";
|
|
@@ -27,6 +31,8 @@ import { ContextOsApi } from "./context/context_os_api.js";
|
|
|
27
31
|
import { ContextScreenResolutionApi } from "./context/context_screen_resolution_api.js";
|
|
28
32
|
import { BrowserToolsUtilExecutionApi } from "./util/browser_tools_util_execution_api.js";
|
|
29
33
|
import { BrowserToolsScreenshotMultiApi } from "./util/browser_tools_screenshot_multi_api.js";
|
|
34
|
+
import { TeamDomainApi } from "./team_domain_api.js";
|
|
35
|
+
import { UrlInspectApi } from "./util/url_inspect_api.js";
|
|
30
36
|
import { TextDocumentApi } from "./text_document_api.js";
|
|
31
37
|
import { PublicTextDocumentApi } from "./public_text_document_api.js";
|
|
32
38
|
import { TextDocumentFolderApi } from "./text_document_folder_api.js";
|
|
@@ -174,10 +180,15 @@ export class Api
|
|
|
174
180
|
this.attachment = new AttachmentApi(payload);
|
|
175
181
|
this.tag = new TagApi(payload);
|
|
176
182
|
this.tag_relation = new TagRelationApi(payload);
|
|
183
|
+
this.custom_property = new CustomPropertyApi(payload);
|
|
184
|
+
this.custom_property_value = new CustomPropertyValueApi(payload);
|
|
185
|
+
this.custom_property_option = new CustomPropertyOptionApi(payload);
|
|
177
186
|
this.event = new EventApi(payload);
|
|
178
187
|
this.execution_context = new ExecutionContextApi(payload);
|
|
179
188
|
this.browser_tools_util_execution = new BrowserToolsUtilExecutionApi(payload);
|
|
180
189
|
this.browser_tools_screenshot_multi = new BrowserToolsScreenshotMultiApi(payload);
|
|
190
|
+
this.team_domain = new TeamDomainApi(payload);
|
|
191
|
+
this.url_inspect = new UrlInspectApi(payload);
|
|
181
192
|
this.file_app = new FileAppApi(payload);
|
|
182
193
|
this.text_document = new TextDocumentApi(payload);
|
|
183
194
|
this.text_document_folder = new TextDocumentFolderApi(payload);
|
|
@@ -204,6 +215,7 @@ export class Api
|
|
|
204
215
|
response.context_screen_resolution = new ContextScreenResolutionApi(payload);
|
|
205
216
|
response.tag_color = new TagColorApi(payload);
|
|
206
217
|
response.tag_template = new TagTemplateApi(payload);
|
|
218
|
+
response.custom_property_template = new CustomPropertyTemplateApi(payload);
|
|
207
219
|
|
|
208
220
|
return response;
|
|
209
221
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "./api_abstract_element_class.js";
|
|
2
|
+
import { typeTeamDomain } from "../types/family_elements/typeTeamDomain.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Team domain registry — search / create / verify / revoke.
|
|
7
|
+
*
|
|
8
|
+
* Base path: /web_api/team_domain
|
|
9
|
+
*
|
|
10
|
+
* @version v.0.1 (14/08/2026)
|
|
11
|
+
*/
|
|
12
|
+
export class TeamDomainApi extends ApiAbstractElementClass
|
|
13
|
+
{
|
|
14
|
+
module_prefix = 'team_domain';
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
constructor(options)
|
|
18
|
+
{
|
|
19
|
+
super(options);
|
|
20
|
+
this.set_element_class_instance(typeTeamDomain);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @param {object} payload
|
|
26
|
+
*
|
|
27
|
+
* @returns {Promise<{payload, response: *}>}
|
|
28
|
+
*/
|
|
29
|
+
async verify(payload)
|
|
30
|
+
{
|
|
31
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/verify`;
|
|
32
|
+
|
|
33
|
+
payload = this.handle_request_payload(payload);
|
|
34
|
+
let response = this.api_request(url, payload);
|
|
35
|
+
response = this.handle_response(response, false);
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
response: response,
|
|
39
|
+
payload : payload,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @param {object} payload
|
|
46
|
+
*
|
|
47
|
+
* @returns {Promise<{payload, response: *}>}
|
|
48
|
+
*/
|
|
49
|
+
async revoke(payload)
|
|
50
|
+
{
|
|
51
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/revoke`;
|
|
52
|
+
|
|
53
|
+
payload = this.handle_request_payload(payload);
|
|
54
|
+
let response = this.api_request(url, payload);
|
|
55
|
+
response = this.handle_response(response, false);
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
response: response,
|
|
59
|
+
payload : payload,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -49,7 +49,7 @@ export class TeamManagementApi extends ApiAbstractElementClass
|
|
|
49
49
|
|
|
50
50
|
payload = this.handle_request_payload(payload);
|
|
51
51
|
let response = this.api_request(url, payload);
|
|
52
|
-
response = this.handle_response(response);
|
|
52
|
+
response = this.handle_response(response, false);
|
|
53
53
|
|
|
54
54
|
return {
|
|
55
55
|
response: response,
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ApiAbstractElementClass } from "../api_abstract_element_class.js";
|
|
2
|
+
import { typeUtilExecutionUrlInspect } from "../../types/family_utils/typeUtilExecutionUrlInspect.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* url.inspect suite — create / details / search.
|
|
7
|
+
*
|
|
8
|
+
* Base path: /web_api/util/url_inspect
|
|
9
|
+
*
|
|
10
|
+
* @version v.0.1 (14/08/2026)
|
|
11
|
+
*/
|
|
12
|
+
export class UrlInspectApi extends ApiAbstractElementClass
|
|
13
|
+
{
|
|
14
|
+
module_prefix = 'util/url_inspect';
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
constructor(options)
|
|
18
|
+
{
|
|
19
|
+
super(options);
|
|
20
|
+
this.set_element_class_instance(typeUtilExecutionUrlInspect);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* GET details/{util_execution_id}?project_id=
|
|
26
|
+
*
|
|
27
|
+
* @param {object} payload
|
|
28
|
+
*
|
|
29
|
+
* @returns {Promise<{payload, response: ReturnType<typeof typeUtilExecutionUrlInspect.composeDetails>|false}>}
|
|
30
|
+
*/
|
|
31
|
+
async details(payload)
|
|
32
|
+
{
|
|
33
|
+
let util_execution_id = payload?.util_execution_id;
|
|
34
|
+
|
|
35
|
+
if (!util_execution_id)
|
|
36
|
+
{
|
|
37
|
+
throw new Error('util_execution_id is required for details');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
let url = `/${ this.api_prefix }/${ this.module_prefix }/details/${ util_execution_id }`;
|
|
41
|
+
|
|
42
|
+
payload = this.handle_request_payload(payload);
|
|
43
|
+
const prev_method = this.method;
|
|
44
|
+
this.method = 'get';
|
|
45
|
+
let response = this.api_request(url, payload, 'GET');
|
|
46
|
+
this.method = prev_method;
|
|
47
|
+
response = await this.handle_response(response, false);
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
response: typeUtilExecutionUrlInspect.composeDetails(response),
|
|
51
|
+
payload : payload,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -4,16 +4,20 @@ import { typeTestRun } from '../../../types/family_elements/typeTestRun.js';
|
|
|
4
4
|
import { typeBug } from '../../../types/family_elements/typeBug.js';
|
|
5
5
|
import { typeBugRelation } from '../../../types/family_relation/typeBugRelation.js';
|
|
6
6
|
import { typeTag } from '../../../types/family_elements/typeTag.js';
|
|
7
|
+
import { typeCustomProperty } from '../../../types/family_elements/typeCustomProperty.js';
|
|
7
8
|
import { typeAttachment } from '../../../types/family_elements/typeAttachment.js';
|
|
8
9
|
import { typeTagRelation } from '../../../types/family_relation/typeTagRelation.js';
|
|
10
|
+
import { typeCustomPropertyValue } from '../../../types/family_relation/typeCustomPropertyValue.js';
|
|
9
11
|
import { typeTestRunResult } from '../../../types/family_elements/typeTestRunResult.js';
|
|
10
12
|
import { typeTestAccount } from '../../../types/family_elements/typeTestAccount.js';
|
|
11
13
|
import { typeExecutionContext } from '../../../types/family_context/typeExecutionContext.js';
|
|
12
14
|
import { typeTeamMember } from '../../../types/family_elements/typeTeamMember.js';
|
|
15
|
+
import { typeTeamDomain } from '../../../types/family_elements/typeTeamDomain.js';
|
|
13
16
|
import { typeTestCaseStep } from '../../../types/family_elements/typeTestCaseStep.js';
|
|
14
17
|
import { typeUser } from '../../../types/family_elements/typeUser.js';
|
|
15
18
|
import { typeTeam } from '../../../types/family_elements/typeTeam.js';
|
|
16
19
|
import { typeUtilExecutionScreenshotMulti } from '../../../types/family_utils/typeUtilExecutionScreenshotMulti.js';
|
|
20
|
+
import { typeUtilExecutionUrlInspect } from '../../../types/family_utils/typeUtilExecutionUrlInspect.js';
|
|
17
21
|
import { typeTextDocument } from '../../../types/family_files/typeTextDocument.js';
|
|
18
22
|
import { typeEvent } from '../../../types/family_events/typeEvent.js';
|
|
19
23
|
|
|
@@ -37,14 +41,18 @@ export const TABLE_ELEMENT_MODELS = {
|
|
|
37
41
|
attachment : typeAttachment,
|
|
38
42
|
tag : typeTag,
|
|
39
43
|
tag_relation : typeTagRelation,
|
|
44
|
+
custom_property: typeCustomProperty,
|
|
45
|
+
custom_property_value: typeCustomPropertyValue,
|
|
40
46
|
test_run_result: typeTestRunResult,
|
|
41
47
|
test_account : typeTestAccount,
|
|
42
48
|
execution_context : typeExecutionContext,
|
|
43
49
|
team_member : typeTeamMember,
|
|
50
|
+
team_domain : typeTeamDomain,
|
|
44
51
|
test_case_step : typeTestCaseStep,
|
|
45
52
|
user : typeUser,
|
|
46
53
|
team : typeTeam,
|
|
47
54
|
text_document : typeTextDocument,
|
|
48
55
|
util_execution : typeUtilExecutionScreenshotMulti,
|
|
56
|
+
util_execution_url_inspect: typeUtilExecutionUrlInspect,
|
|
49
57
|
event : typeEvent,
|
|
50
58
|
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { typeCustomProperty } from '../../../types/family_elements/typeCustomProperty.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import {
|
|
4
|
+
createColumn,
|
|
5
|
+
createGoToColumn,
|
|
6
|
+
createPrimaryKeyColumn,
|
|
7
|
+
createRowSelectColumn,
|
|
8
|
+
} from '../helpers/column_factory.js';
|
|
9
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
10
|
+
import { typeTableColumn } from '../../../types/family_service/typeTableColumn.js';
|
|
11
|
+
|
|
12
|
+
function build_custom_property_listing_columns(locale)
|
|
13
|
+
{
|
|
14
|
+
const model = new typeCustomProperty();
|
|
15
|
+
|
|
16
|
+
return [
|
|
17
|
+
createRowSelectColumn(),
|
|
18
|
+
createPrimaryKeyColumn(model, locale),
|
|
19
|
+
createColumn(model, locale, 'name', {
|
|
20
|
+
width : '240',
|
|
21
|
+
is_editable: true,
|
|
22
|
+
is_required: true,
|
|
23
|
+
is_title : true,
|
|
24
|
+
}),
|
|
25
|
+
createColumn(model, locale, 'property_key', { width: '180' }),
|
|
26
|
+
createColumn(model, locale, 'element_type', { width: '140' }),
|
|
27
|
+
createColumn(model, locale, 'value_type', { width: '150' }),
|
|
28
|
+
createColumn(model, locale, 'cardinality', { width: '140', is_editable: true }),
|
|
29
|
+
createColumn(model, locale, 'is_enabled', { width: '110', is_editable: true }),
|
|
30
|
+
createColumn(model, locale, 'is_required', { width: '110', is_editable: true }),
|
|
31
|
+
createColumn(model, locale, 'is_searchable', { width: '120', is_editable: true }),
|
|
32
|
+
createColumn(model, locale, 'created_at', { width: '170' }),
|
|
33
|
+
createColumn(model, locale, 'updated_at', { width: '170' }),
|
|
34
|
+
createGoToColumn(model, locale),
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
function build_custom_property_details_columns(locale)
|
|
40
|
+
{
|
|
41
|
+
const model = new typeCustomProperty();
|
|
42
|
+
const fields = [
|
|
43
|
+
'custom_property_id',
|
|
44
|
+
'team_id',
|
|
45
|
+
'element_type',
|
|
46
|
+
'property_key',
|
|
47
|
+
'value_type',
|
|
48
|
+
'cardinality',
|
|
49
|
+
'name',
|
|
50
|
+
'is_required',
|
|
51
|
+
'is_enabled',
|
|
52
|
+
'is_searchable',
|
|
53
|
+
'sort_order',
|
|
54
|
+
'created_at',
|
|
55
|
+
'updated_at',
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
return [
|
|
59
|
+
...fields.map((field, index) => createColumn(model, locale, field, {
|
|
60
|
+
sort_order : String(index + 1),
|
|
61
|
+
is_editable: [ 'name', 'cardinality', 'is_required', 'is_enabled', 'is_searchable', 'sort_order' ].includes(field),
|
|
62
|
+
is_sortable: false,
|
|
63
|
+
is_filter : false,
|
|
64
|
+
})),
|
|
65
|
+
new typeTableColumn({
|
|
66
|
+
header_name: 'copy',
|
|
67
|
+
field : 'copy',
|
|
68
|
+
width : '80',
|
|
69
|
+
sort_order : '99',
|
|
70
|
+
is_sortable: false,
|
|
71
|
+
is_filter : false,
|
|
72
|
+
is_editable: false,
|
|
73
|
+
column_kind: 'copy',
|
|
74
|
+
}),
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Секции `custom_property`: `listing`, `details`.
|
|
81
|
+
*
|
|
82
|
+
* @param {Object} config
|
|
83
|
+
* @returns {void}
|
|
84
|
+
*/
|
|
85
|
+
export function bootstrap_custom_property(config)
|
|
86
|
+
{
|
|
87
|
+
const locale = UserService.get_current_language();
|
|
88
|
+
|
|
89
|
+
registerSection(config, 'custom_property', 'listing', build_custom_property_listing_columns(locale), {
|
|
90
|
+
for: createListingFor([], { add: [ 'options' ] }),
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
registerSection(config, 'custom_property', 'details', build_custom_property_details_columns(locale), {
|
|
94
|
+
for: createListingFor([ 'custom_property_id' ], { add: [ 'options' ] }),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { typeTeamDomain } from '../../../types/family_elements/typeTeamDomain.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import {
|
|
4
|
+
createColumn,
|
|
5
|
+
createGoToColumn,
|
|
6
|
+
createPrimaryKeyColumn,
|
|
7
|
+
} from '../helpers/column_factory.js';
|
|
8
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
9
|
+
|
|
10
|
+
function build_team_domain_listing_columns(locale)
|
|
11
|
+
{
|
|
12
|
+
const model = new typeTeamDomain();
|
|
13
|
+
|
|
14
|
+
return [
|
|
15
|
+
createPrimaryKeyColumn(model, locale, { is_hide: true, default_sort: 'desc' }),
|
|
16
|
+
createColumn(model, locale, 'domain_canon', {
|
|
17
|
+
width : '280',
|
|
18
|
+
is_title : true,
|
|
19
|
+
is_filter : false,
|
|
20
|
+
is_editable: false,
|
|
21
|
+
}),
|
|
22
|
+
createColumn(model, locale, 'display_name', {
|
|
23
|
+
width : '200',
|
|
24
|
+
is_filter : false,
|
|
25
|
+
is_editable: false,
|
|
26
|
+
}),
|
|
27
|
+
createColumn(model, locale, 'verification_method', {
|
|
28
|
+
width : '180',
|
|
29
|
+
is_filter : false,
|
|
30
|
+
is_editable: false,
|
|
31
|
+
}),
|
|
32
|
+
createColumn(model, locale, 'domain_status', {
|
|
33
|
+
width : '160',
|
|
34
|
+
is_filter : false,
|
|
35
|
+
is_editable: false,
|
|
36
|
+
}),
|
|
37
|
+
createGoToColumn(model, locale),
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Секция `team_domain`: `listing`.
|
|
44
|
+
*
|
|
45
|
+
* @param {Object} config
|
|
46
|
+
* @returns {void}
|
|
47
|
+
*/
|
|
48
|
+
export function bootstrap_team_domain(config)
|
|
49
|
+
{
|
|
50
|
+
const locale = UserService.get_current_language();
|
|
51
|
+
|
|
52
|
+
registerSection(config, 'team_domain', 'listing', build_team_domain_listing_columns(locale), {
|
|
53
|
+
for: createListingFor([]),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { typeUtilExecutionUrlInspect } from '../../../types/family_utils/typeUtilExecutionUrlInspect.js';
|
|
2
|
+
import { UserService } from '../../../services/UserService.js';
|
|
3
|
+
import {
|
|
4
|
+
createColumn,
|
|
5
|
+
createGoToColumn,
|
|
6
|
+
createPrimaryKeyColumn,
|
|
7
|
+
} from '../helpers/column_factory.js';
|
|
8
|
+
import { createListingFor, registerSection } from '../helpers/section_registry.js';
|
|
9
|
+
|
|
10
|
+
function build_util_execution_url_inspect_listing_columns(locale)
|
|
11
|
+
{
|
|
12
|
+
const model = new typeUtilExecutionUrlInspect();
|
|
13
|
+
|
|
14
|
+
return [
|
|
15
|
+
createPrimaryKeyColumn(model, locale, { is_hide: true, default_sort: 'desc' }),
|
|
16
|
+
createColumn(model, locale, 'domain_canon', {
|
|
17
|
+
width : '240',
|
|
18
|
+
is_title : true,
|
|
19
|
+
is_filter : false,
|
|
20
|
+
is_editable: false,
|
|
21
|
+
}),
|
|
22
|
+
createColumn(model, locale, 'page_path', {
|
|
23
|
+
width : '280',
|
|
24
|
+
is_filter : false,
|
|
25
|
+
is_editable: false,
|
|
26
|
+
}),
|
|
27
|
+
createColumn(model, locale, 'suite_status', {
|
|
28
|
+
width : '160',
|
|
29
|
+
is_filter : false,
|
|
30
|
+
is_editable: false,
|
|
31
|
+
}),
|
|
32
|
+
createColumn(model, locale, 'project_id', {
|
|
33
|
+
width : '140',
|
|
34
|
+
is_filter : false,
|
|
35
|
+
is_editable: false,
|
|
36
|
+
}),
|
|
37
|
+
createColumn(model, locale, 'created_at', {
|
|
38
|
+
width : '180',
|
|
39
|
+
is_filter : false,
|
|
40
|
+
is_editable: false,
|
|
41
|
+
}),
|
|
42
|
+
createGoToColumn(model, locale),
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Секция `util_execution_url_inspect`: `listing`.
|
|
49
|
+
*
|
|
50
|
+
* @param {Object} config
|
|
51
|
+
* @returns {void}
|
|
52
|
+
*/
|
|
53
|
+
export function bootstrap_util_execution_url_inspect(config)
|
|
54
|
+
{
|
|
55
|
+
const locale = UserService.get_current_language();
|
|
56
|
+
|
|
57
|
+
registerSection(config, 'util_execution_url_inspect', 'listing', build_util_execution_url_inspect_listing_columns(locale), {
|
|
58
|
+
for: createListingFor([ 'project_id' ]),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
@@ -3,6 +3,7 @@ import { bootstrap_bug } from './sections/bug.js';
|
|
|
3
3
|
import { bootstrap_bug_relation } from './sections/bug_relation.js';
|
|
4
4
|
import { bootstrap_tag } from './sections/tag.js';
|
|
5
5
|
import { bootstrap_tag_relation } from './sections/tag_relation.js';
|
|
6
|
+
import { bootstrap_custom_property } from './sections/custom_property.js';
|
|
6
7
|
import { bootstrap_test_case } from './sections/test_case.js';
|
|
7
8
|
import { bootstrap_test_case_step } from './sections/test_case_step.js';
|
|
8
9
|
import { bootstrap_test_run } from './sections/test_run.js';
|
|
@@ -10,7 +11,9 @@ import { bootstrap_test_run_result } from './sections/test_run_result.js';
|
|
|
10
11
|
import { bootstrap_test_account } from './sections/test_account.js';
|
|
11
12
|
import { bootstrap_execution_context } from './sections/execution_context.js';
|
|
12
13
|
import { bootstrap_util_execution } from './sections/util_execution.js';
|
|
14
|
+
import { bootstrap_util_execution_url_inspect } from './sections/util_execution_url_inspect.js';
|
|
13
15
|
import { bootstrap_team_member } from './sections/team_member.js';
|
|
16
|
+
import { bootstrap_team_domain } from './sections/team_domain.js';
|
|
14
17
|
import { bootstrap_event } from './sections/event.js';
|
|
15
18
|
import { bootstrap_user } from './sections/user.js';
|
|
16
19
|
import { bootstrap_team } from './sections/team.js';
|
|
@@ -115,6 +118,7 @@ export class TableConfiguration extends abstractAppConfiguration
|
|
|
115
118
|
bootstrap_bug_relation(this.config);
|
|
116
119
|
bootstrap_tag(this.config);
|
|
117
120
|
bootstrap_tag_relation(this.config);
|
|
121
|
+
bootstrap_custom_property(this.config);
|
|
118
122
|
bootstrap_test_case(this.config);
|
|
119
123
|
bootstrap_test_case_step(this.config);
|
|
120
124
|
bootstrap_test_run(this.config);
|
|
@@ -122,7 +126,9 @@ export class TableConfiguration extends abstractAppConfiguration
|
|
|
122
126
|
bootstrap_test_account(this.config);
|
|
123
127
|
bootstrap_execution_context(this.config);
|
|
124
128
|
bootstrap_util_execution(this.config);
|
|
129
|
+
bootstrap_util_execution_url_inspect(this.config);
|
|
125
130
|
bootstrap_team_member(this.config);
|
|
131
|
+
bootstrap_team_domain(this.config);
|
|
126
132
|
bootstrap_event(this.config);
|
|
127
133
|
bootstrap_user(this.config);
|
|
128
134
|
bootstrap_team(this.config);
|
package/publish/index.js
CHANGED
|
@@ -17,11 +17,13 @@ export { typeTestRunResult } from './types/family_elements/typeTestRunResult.js'
|
|
|
17
17
|
export { typeTestAccount } from './types/family_elements/typeTestAccount.js'
|
|
18
18
|
export {typeBug} from './types/family_elements/typeBug.js';
|
|
19
19
|
export { typeTag } from './types/family_elements/typeTag.js';
|
|
20
|
+
export { typeCustomProperty } from './types/family_elements/typeCustomProperty.js';
|
|
20
21
|
export { typeAttachment } from './types/family_elements/typeAttachment.js';
|
|
21
22
|
|
|
22
23
|
export { familyRelation } from './types/core/1_familyRelation.js';
|
|
23
24
|
export { typeBugRelation } from './types/family_relation/typeBugRelation.js';
|
|
24
25
|
export { typeTagRelation } from './types/family_relation/typeTagRelation.js';
|
|
26
|
+
export { typeCustomPropertyValue } from './types/family_relation/typeCustomPropertyValue.js';
|
|
25
27
|
|
|
26
28
|
export { familyContext } from './types/core/1_familyContext.js';
|
|
27
29
|
export { typeBrowserContext } from './types/family_context/typeBrowserContext.js';
|
|
@@ -38,6 +40,8 @@ export { typeUtilExecutionScreenshotMulti } from './types/family_utils/typeUtilE
|
|
|
38
40
|
export { typeUtilExecutionScreenshotMultiCapture } from './types/family_utils/typeUtilExecutionScreenshotMultiCapture.js';
|
|
39
41
|
export { typeUtilExecutionScreenshotMultiScreenshot } from './types/family_utils/typeUtilExecutionScreenshotMultiScreenshot.js';
|
|
40
42
|
export { typeUtilExecutionScreenshotMultiCaptureError } from './types/family_utils/typeUtilExecutionScreenshotMultiCaptureError.js';
|
|
43
|
+
export { typeUtilExecutionUrlInspect } from './types/family_utils/typeUtilExecutionUrlInspect.js';
|
|
44
|
+
export { typeUtilExecutionUrlInspectCheck } from './types/family_utils/typeUtilExecutionUrlInspectCheck.js';
|
|
41
45
|
export { typeUtilExecutionEvent } from './types/family_utils/typeUtilExecutionEvent.js';
|
|
42
46
|
|
|
43
47
|
export { familyEvent } from './types/family_events/familyEvent.js';
|
|
@@ -66,6 +70,7 @@ export { text_document_editor_config, get_text_document_editor_config } from './
|
|
|
66
70
|
export { typeUser } from './types/family_elements/typeUser.js';
|
|
67
71
|
export { typeTeam } from './types/family_elements/typeTeam.js';
|
|
68
72
|
export { typeTeamMember } from './types/family_elements/typeTeamMember.js';
|
|
73
|
+
export { typeTeamDomain } from './types/family_elements/typeTeamDomain.js';
|
|
69
74
|
export { typeTeamTotalStatistic } from './types/family_contracts/typeTeamTotalStatistic.js';
|
|
70
75
|
|
|
71
76
|
export { typeTask } from './types/family_elements/typeTask.js';
|