@memberjunction/ng-core-entity-forms 5.40.1 → 5.41.0
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/dist/__tests__/bridge-provider-features.test.d.ts +2 -0
- package/dist/__tests__/bridge-provider-features.test.d.ts.map +1 -0
- package/dist/__tests__/bridge-provider-features.test.js +70 -0
- package/dist/__tests__/bridge-provider-features.test.js.map +1 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts +17 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js +170 -0
- package/dist/lib/custom/AIAgentChannels/ai-agent-channel-form.component.js.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +133 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +1190 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +69 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +911 -562
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts +20 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.d.ts.map +1 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js +115 -0
- package/dist/lib/custom/BridgeAgentIdentities/bridge-agent-identity-form.component.js.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +50 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +75 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts +48 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.d.ts.map +1 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +256 -0
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts +28 -4
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +42 -12
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +6 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +11 -1
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts +43 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.d.ts.map +1 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js +278 -0
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +32 -26
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +34 -1
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +284 -180
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +117 -0
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJAIAgentCoAgent/mjaiagentcoagent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +16 -20
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +185 -0
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +121 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js +94 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionBridgeParticipant/mjaiagentsessionbridgeparticipant.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJAIAgentSessionChannel/mjaiagentsessionchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +37 -15
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js +86 -0
- package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJAIBridgeProviderChannel/mjaibridgeproviderchannel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js +90 -0
- package/dist/lib/generated/Entities/MJAIRemoteBrowserProvider/mjairemotebrowserprovider.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +7 -9
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +143 -107
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +358 -343
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +426 -366
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +74 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +365 -0
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -0
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -36
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component } from '@angular/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
10
|
+
import { MJAIBridgeProviderFormComponent } from '../../generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component';
|
|
11
|
+
import { BRIDGE_FEATURE_GROUPS, countEnabledFeatures, isFeatureEnabled, setFeature, } from './bridge-provider-features';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@memberjunction/ng-base-forms";
|
|
14
|
+
const _forTrack0 = ($index, $item) => $item.title;
|
|
15
|
+
const _forTrack1 = ($index, $item) => $item.key;
|
|
16
|
+
function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
18
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 27)(2, "span", 28);
|
|
19
|
+
i0.ɵɵtext(3);
|
|
20
|
+
i0.ɵɵelementEnd();
|
|
21
|
+
i0.ɵɵelementStart(4, "span", 29);
|
|
22
|
+
i0.ɵɵtext(5);
|
|
23
|
+
i0.ɵɵelementEnd()();
|
|
24
|
+
i0.ɵɵelementStart(6, "div", 30);
|
|
25
|
+
i0.ɵɵlistener("click", function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Template_div_click_6_listener() { const feature_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleFeature(feature_r4.key, !ctx_r1.IsFeatureOn(feature_r4.key))); });
|
|
26
|
+
i0.ɵɵelementEnd()();
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
const feature_r4 = ctx.$implicit;
|
|
29
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
30
|
+
i0.ɵɵadvance(3);
|
|
31
|
+
i0.ɵɵtextInterpolate(feature_r4.label);
|
|
32
|
+
i0.ɵɵadvance(2);
|
|
33
|
+
i0.ɵɵtextInterpolate(feature_r4.description);
|
|
34
|
+
i0.ɵɵadvance();
|
|
35
|
+
i0.ɵɵclassProp("on", ctx_r1.IsFeatureOn(feature_r4.key))("disabled", !ctx_r1.EditMode);
|
|
36
|
+
} }
|
|
37
|
+
function MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "div", 24);
|
|
39
|
+
i0.ɵɵelement(2, "i");
|
|
40
|
+
i0.ɵɵelementStart(3, "span");
|
|
41
|
+
i0.ɵɵtext(4);
|
|
42
|
+
i0.ɵɵelementEnd()();
|
|
43
|
+
i0.ɵɵelementStart(5, "div", 25);
|
|
44
|
+
i0.ɵɵrepeaterCreate(6, MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_For_7_Template, 7, 6, "div", 26, _forTrack1);
|
|
45
|
+
i0.ɵɵelementEnd()();
|
|
46
|
+
} if (rf & 2) {
|
|
47
|
+
const group_r5 = ctx.$implicit;
|
|
48
|
+
i0.ɵɵadvance(2);
|
|
49
|
+
i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", group_r5.icon));
|
|
50
|
+
i0.ɵɵadvance(2);
|
|
51
|
+
i0.ɵɵtextInterpolate(group_r5.title);
|
|
52
|
+
i0.ɵɵadvance(2);
|
|
53
|
+
i0.ɵɵrepeater(group_r5.features);
|
|
54
|
+
} }
|
|
55
|
+
function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
57
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 31);
|
|
58
|
+
i0.ɵɵlistener("Navigate", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_25_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_25_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJAIAgentSessionBridges", $event.totalRowCount)); });
|
|
59
|
+
i0.ɵɵelementEnd()();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
62
|
+
i0.ɵɵadvance();
|
|
63
|
+
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Agent Session Bridges", "ProviderID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Agent Session Bridges"))("AllowLoad", ctx_r1.IsSectionExpanded("mJAIAgentSessionBridges"))("ShowToolbar", false);
|
|
64
|
+
} }
|
|
65
|
+
function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
67
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 31);
|
|
68
|
+
i0.ɵɵlistener("Navigate", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_27_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_27_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJAIBridgeProviderChannels", $event.totalRowCount)); });
|
|
69
|
+
i0.ɵɵelementEnd()();
|
|
70
|
+
} if (rf & 2) {
|
|
71
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
72
|
+
i0.ɵɵadvance();
|
|
73
|
+
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Bridge Provider Channels", "ProviderID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Bridge Provider Channels"))("AllowLoad", ctx_r1.IsSectionExpanded("mJAIBridgeProviderChannels"))("ShowToolbar", false);
|
|
74
|
+
} }
|
|
75
|
+
function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
77
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 31);
|
|
78
|
+
i0.ɵɵlistener("Navigate", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_29_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_29_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJAIBridgeAgentIdentities", $event.totalRowCount)); });
|
|
79
|
+
i0.ɵɵelementEnd()();
|
|
80
|
+
} if (rf & 2) {
|
|
81
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
82
|
+
i0.ɵɵadvance();
|
|
83
|
+
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Bridge Agent Identities", "ProviderID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Bridge Agent Identities"))("AllowLoad", ctx_r1.IsSectionExpanded("mJAIBridgeAgentIdentities"))("ShowToolbar", false);
|
|
84
|
+
} }
|
|
85
|
+
function MJAIBridgeProviderFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
87
|
+
i0.ɵɵelementStart(0, "mj-record-form-container", 1);
|
|
88
|
+
i0.ɵɵlistener("Navigate", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MJAIBridgeProviderFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
89
|
+
i0.ɵɵelement(1, "mj-form-panel-slot", 2);
|
|
90
|
+
i0.ɵɵelementStart(2, "mj-collapsible-panel", 3);
|
|
91
|
+
i0.ɵɵelement(3, "mj-form-field", 4)(4, "mj-form-field", 5);
|
|
92
|
+
i0.ɵɵelementEnd();
|
|
93
|
+
i0.ɵɵelementStart(5, "mj-collapsible-panel", 6);
|
|
94
|
+
i0.ɵɵelement(6, "mj-form-field", 7)(7, "mj-form-field", 8)(8, "mj-form-field", 9)(9, "mj-form-field", 10);
|
|
95
|
+
i0.ɵɵelementEnd();
|
|
96
|
+
i0.ɵɵelementStart(10, "mj-collapsible-panel", 11)(11, "p", 12);
|
|
97
|
+
i0.ɵɵtext(12, " The platform's declared capabilities. The engine gates optional driver calls on these flags \u2014 the base driver throws ");
|
|
98
|
+
i0.ɵɵelementStart(13, "code");
|
|
99
|
+
i0.ɵɵtext(14, "BridgeCapabilityNotSupportedError");
|
|
100
|
+
i0.ɵɵelementEnd();
|
|
101
|
+
i0.ɵɵtext(15, " when a feature is claimed but unimplemented. Leave a capability off if the platform / driver does not support it. ");
|
|
102
|
+
i0.ɵɵelementEnd();
|
|
103
|
+
i0.ɵɵrepeaterCreate(16, MJAIBridgeProviderFormComponentExtended_Conditional_0_For_17_Template, 8, 4, "div", 13, _forTrack0);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵelementStart(18, "mj-collapsible-panel", 14);
|
|
106
|
+
i0.ɵɵelement(19, "mj-form-field", 15);
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
i0.ɵɵelementStart(20, "mj-collapsible-panel", 16);
|
|
109
|
+
i0.ɵɵelement(21, "mj-form-field", 17)(22, "mj-form-field", 18);
|
|
110
|
+
i0.ɵɵelementEnd();
|
|
111
|
+
i0.ɵɵelement(23, "mj-form-panel-slot", 19);
|
|
112
|
+
i0.ɵɵelementStart(24, "mj-collapsible-panel", 20);
|
|
113
|
+
i0.ɵɵconditionalCreate(25, MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_25_Template, 2, 4, "div");
|
|
114
|
+
i0.ɵɵelementEnd();
|
|
115
|
+
i0.ɵɵelementStart(26, "mj-collapsible-panel", 21);
|
|
116
|
+
i0.ɵɵconditionalCreate(27, MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_27_Template, 2, 4, "div");
|
|
117
|
+
i0.ɵɵelementEnd();
|
|
118
|
+
i0.ɵɵelementStart(28, "mj-collapsible-panel", 22);
|
|
119
|
+
i0.ɵɵconditionalCreate(29, MJAIBridgeProviderFormComponentExtended_Conditional_0_Conditional_29_Template, 2, 4, "div");
|
|
120
|
+
i0.ɵɵelementEnd();
|
|
121
|
+
i0.ɵɵelement(30, "mj-form-panel-slot", 23);
|
|
122
|
+
i0.ɵɵelementEnd();
|
|
123
|
+
} if (rf & 2) {
|
|
124
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
125
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1);
|
|
126
|
+
i0.ɵɵadvance();
|
|
127
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
128
|
+
i0.ɵɵadvance();
|
|
129
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
130
|
+
i0.ɵɵadvance();
|
|
131
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
132
|
+
i0.ɵɵadvance();
|
|
133
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
134
|
+
i0.ɵɵadvance();
|
|
135
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
136
|
+
i0.ɵɵadvance();
|
|
137
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
138
|
+
i0.ɵɵadvance();
|
|
139
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
140
|
+
i0.ɵɵadvance();
|
|
141
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
142
|
+
i0.ɵɵadvance();
|
|
143
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
144
|
+
i0.ɵɵadvance();
|
|
145
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.EnabledFeatureCount)("DefaultExpanded", true);
|
|
146
|
+
i0.ɵɵadvance(6);
|
|
147
|
+
i0.ɵɵrepeater(ctx_r1.FeatureGroups);
|
|
148
|
+
i0.ɵɵadvance(2);
|
|
149
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
|
|
150
|
+
i0.ɵɵadvance();
|
|
151
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
152
|
+
i0.ɵɵadvance();
|
|
153
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
|
|
154
|
+
i0.ɵɵadvance();
|
|
155
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
156
|
+
i0.ɵɵadvance();
|
|
157
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
158
|
+
i0.ɵɵadvance();
|
|
159
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
160
|
+
i0.ɵɵadvance();
|
|
161
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJAIAgentSessionBridges"))("DefaultExpanded", false);
|
|
162
|
+
i0.ɵɵadvance();
|
|
163
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 25 : -1);
|
|
164
|
+
i0.ɵɵadvance();
|
|
165
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJAIBridgeProviderChannels"))("DefaultExpanded", false);
|
|
166
|
+
i0.ɵɵadvance();
|
|
167
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 27 : -1);
|
|
168
|
+
i0.ɵɵadvance();
|
|
169
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJAIBridgeAgentIdentities"))("DefaultExpanded", false);
|
|
170
|
+
i0.ɵɵadvance();
|
|
171
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 29 : -1);
|
|
172
|
+
i0.ɵɵadvance();
|
|
173
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
174
|
+
} }
|
|
175
|
+
/**
|
|
176
|
+
* Custom form for 'MJ: AI Bridge Providers' (Pattern 2 — full override of the
|
|
177
|
+
* generated form). The standout addition is a **capability editor**: the 16
|
|
178
|
+
* `SupportedFeatures` flags rendered as labeled toggles, grouped into Join
|
|
179
|
+
* methods / Media tracks / Signals & telephony.
|
|
180
|
+
*
|
|
181
|
+
* The toggles bind through the entity's typed `SupportedFeaturesObject`
|
|
182
|
+
* accessor (which serializes to/from the `SupportedFeatures` JSON column). On
|
|
183
|
+
* each toggle we read the current object, produce a fresh object via the pure
|
|
184
|
+
* `setFeature` helper, and write it back through the setter — a fresh reference
|
|
185
|
+
* is required so the accessor's parse-cache invalidates and dirty tracking
|
|
186
|
+
* fires. Disabling omits the key (matching "NULL/omitted = unsupported").
|
|
187
|
+
*
|
|
188
|
+
* The remaining provider fields (Name / Description / BridgeType / DriverClass
|
|
189
|
+
* / Status / Configuration / ConfigSchema) and the related-entity grids keep
|
|
190
|
+
* the generated panels.
|
|
191
|
+
*/
|
|
192
|
+
let MJAIBridgeProviderFormComponentExtended = class MJAIBridgeProviderFormComponentExtended extends MJAIBridgeProviderFormComponent {
|
|
193
|
+
constructor() {
|
|
194
|
+
super(...arguments);
|
|
195
|
+
/** Static editor layout (16 flags, 3 groups). */
|
|
196
|
+
this.FeatureGroups = BRIDGE_FEATURE_GROUPS;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Register section state for the custom layout. We don't call
|
|
200
|
+
* `super.ngOnInit()`'s `initSections` because this form restructures the
|
|
201
|
+
* sections (adds `supportedFeatures` + `configurationSchema`, splits the
|
|
202
|
+
* generated "Technical Capabilities" panel), so we register our own keys.
|
|
203
|
+
*/
|
|
204
|
+
async ngOnInit() {
|
|
205
|
+
await super.ngOnInit();
|
|
206
|
+
this.initSections([
|
|
207
|
+
{ sectionKey: 'providerInformation', sectionName: 'Provider Information', isExpanded: true },
|
|
208
|
+
{ sectionKey: 'providerConfiguration', sectionName: 'Provider Configuration', isExpanded: true },
|
|
209
|
+
{ sectionKey: 'supportedFeatures', sectionName: 'Supported Features', isExpanded: true },
|
|
210
|
+
{ sectionKey: 'configurationSchema', sectionName: 'Configuration Schema', isExpanded: false },
|
|
211
|
+
{ sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },
|
|
212
|
+
{ sectionKey: 'mJAIAgentSessionBridges', sectionName: 'AI Agent Session Bridges', isExpanded: false },
|
|
213
|
+
{ sectionKey: 'mJAIBridgeProviderChannels', sectionName: 'AI Bridge Provider Channels', isExpanded: false },
|
|
214
|
+
{ sectionKey: 'mJAIBridgeAgentIdentities', sectionName: 'AI Bridge Agent Identities', isExpanded: false },
|
|
215
|
+
]);
|
|
216
|
+
}
|
|
217
|
+
/** Count of enabled capabilities — drives the panel badge. */
|
|
218
|
+
get EnabledFeatureCount() {
|
|
219
|
+
return countEnabledFeatures(this.record?.SupportedFeaturesObject ?? null);
|
|
220
|
+
}
|
|
221
|
+
/** Read a single capability flag for the template. */
|
|
222
|
+
IsFeatureOn(key) {
|
|
223
|
+
return isFeatureEnabled(this.record?.SupportedFeaturesObject ?? null, key);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Toggle a capability flag. Reads the current typed object, builds a fresh
|
|
227
|
+
* object with the flag changed, and assigns it back through the typed
|
|
228
|
+
* setter (which re-serializes to the JSON column and marks the field dirty).
|
|
229
|
+
*/
|
|
230
|
+
ToggleFeature(key, enabled) {
|
|
231
|
+
if (!this.record || !this.EditMode) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
this.record.SupportedFeaturesObject = setFeature(this.record.SupportedFeaturesObject ?? null, key, enabled);
|
|
235
|
+
}
|
|
236
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJAIBridgeProviderFormComponentExtended_BaseFactory; return function MJAIBridgeProviderFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJAIBridgeProviderFormComponentExtended_BaseFactory || (ɵMJAIBridgeProviderFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJAIBridgeProviderFormComponentExtended)))(__ngFactoryType__ || MJAIBridgeProviderFormComponentExtended); }; })(); }
|
|
237
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJAIBridgeProviderFormComponentExtended, selectors: [["mj-ai-bridge-provider-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "providerInformation", "SectionName", "Provider Information", "Icon", "fa fa-info-circle", 3, "Form", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "providerConfiguration", "SectionName", "Provider Configuration", "Icon", "fa fa-sliders-h", 3, "Form", "FormContext"], ["FieldName", "BridgeType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "DriverClass", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Status", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Configuration", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "supportedFeatures", "SectionName", "Supported Features", "Icon", "fa fa-toggle-on", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], [1, "bp-intro"], [1, "bp-group"], ["SectionKey", "configurationSchema", "SectionName", "Configuration Schema", "Icon", "fa fa-code", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "ConfigSchema", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-database", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "mJAIAgentSessionBridges", "SectionName", "AI Agent Session Bridges", "Icon", "fa fa-network-wired", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJAIBridgeProviderChannels", "SectionName", "AI Bridge Provider Channels", "Icon", "fa fa-project-diagram", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJAIBridgeAgentIdentities", "SectionName", "AI Bridge Agent Identities", "Icon", "fa fa-id-card", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"], [1, "bp-group-header"], [1, "bp-feature-list"], [1, "bp-feature-row"], [1, "label"], [1, "t"], [1, "d"], [1, "bp-switch", 3, "click"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function MJAIBridgeProviderFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
+
i0.ɵɵconditionalCreate(0, MJAIBridgeProviderFormComponentExtended_Conditional_0_Template, 31, 82, "mj-record-form-container", 0);
|
|
239
|
+
} if (rf & 2) {
|
|
240
|
+
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
241
|
+
} }, dependencies: [i1.MjFormFieldComponent, i1.MjCollapsiblePanelComponent, i1.MjRecordFormContainerComponent, i1.ExplorerEntityDataGridComponent, i1.FormPanelSlotComponent], styles: ["\n\n\n\n.bp-intro[_ngcontent-%COMP%] {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n.bp-intro[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: ui-monospace, monospace;\n font-size: 11px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.bp-group[_ngcontent-%COMP%] { margin-bottom: 18px; }\n.bp-group[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n\n.bp-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.bp-group-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n.bp-feature-list[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.bp-feature-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 10px 14px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n.bp-feature-row[_ngcontent-%COMP%]:first-child { border-top: 0; }\n\n.bp-feature-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; min-width: 0; }\n.bp-feature-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .t[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; color: var(--mj-text-primary); }\n.bp-feature-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .d[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-muted); line-height: 1.35; }\n\n.bp-switch[_ngcontent-%COMP%] {\n position: relative;\n flex: 0 0 auto;\n width: 36px;\n height: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n}\n.bp-switch[_ngcontent-%COMP%]::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n transition: left 0.15s;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.bp-switch.on[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.bp-switch.on[_ngcontent-%COMP%]::after { left: 18px; }\n.bp-switch.disabled[_ngcontent-%COMP%] { opacity: 0.5; cursor: not-allowed; }"] }); }
|
|
242
|
+
};
|
|
243
|
+
MJAIBridgeProviderFormComponentExtended = __decorate([
|
|
244
|
+
RegisterClass(BaseFormComponent, 'MJ: AI Bridge Providers')
|
|
245
|
+
], MJAIBridgeProviderFormComponentExtended);
|
|
246
|
+
export { MJAIBridgeProviderFormComponentExtended };
|
|
247
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIBridgeProviderFormComponentExtended, [{
|
|
248
|
+
type: Component,
|
|
249
|
+
args: [{ standalone: false, selector: 'mj-ai-bridge-provider-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Provider Information -->\n <mj-collapsible-panel\n SectionKey=\"providerInformation\"\n SectionName=\"Provider Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Provider Configuration -->\n <mj-collapsible-panel\n SectionKey=\"providerConfiguration\"\n SectionName=\"Provider Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BridgeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DriverClass\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Supported Features \u2014 capability editor (the standout custom UI) -->\n <mj-collapsible-panel\n SectionKey=\"supportedFeatures\"\n SectionName=\"Supported Features\"\n Icon=\"fa fa-toggle-on\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"EnabledFeatureCount\"\n [DefaultExpanded]=\"true\">\n\n <p class=\"bp-intro\">\n The platform's declared capabilities. The engine gates optional driver calls on these flags \u2014\n the base driver throws <code>BridgeCapabilityNotSupportedError</code> when a feature is claimed but\n unimplemented. Leave a capability off if the platform / driver does not support it.\n </p>\n\n @for (group of FeatureGroups; track group.title) {\n <div class=\"bp-group\">\n <div class=\"bp-group-header\">\n <i class=\"fa-solid {{ group.icon }}\"></i>\n <span>{{ group.title }}</span>\n </div>\n <div class=\"bp-feature-list\">\n @for (feature of group.features; track feature.key) {\n <div class=\"bp-feature-row\">\n <div class=\"label\">\n <span class=\"t\">{{ feature.label }}</span>\n <span class=\"d\">{{ feature.description }}</span>\n </div>\n <div class=\"bp-switch\"\n [class.on]=\"IsFeatureOn(feature.key)\"\n [class.disabled]=\"!EditMode\"\n (click)=\"ToggleFeature(feature.key, !IsFeatureOn(feature.key))\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Configuration Schema -->\n <mj-collapsible-panel\n SectionKey=\"configurationSchema\"\n SectionName=\"Configuration Schema\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConfigSchema\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridges\"\n SectionName=\"AI Agent Session Bridges\"\n Icon=\"fa fa-network-wired\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridges')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridges','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridges')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridges')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridges', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeProviderChannels\"\n SectionName=\"AI Bridge Provider Channels\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeProviderChannels')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Provider Channels','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Provider Channels')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeProviderChannels')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeProviderChannels', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeAgentIdentities\"\n SectionName=\"AI Bridge Agent Identities\"\n Icon=\"fa fa-id-card\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeAgentIdentities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Agent Identities','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Agent Identities')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeAgentIdentities')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeAgentIdentities', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n", styles: ["/* AI Bridge Provider capability editor \u2014 labeled-toggle groups for the\n 16 SupportedFeatures flags. All colors via design tokens (dark-mode safe). */\n\n.bp-intro {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n.bp-intro code {\n font-family: ui-monospace, monospace;\n font-size: 11px;\n padding: 1px 5px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.bp-group { margin-bottom: 18px; }\n.bp-group:last-child { margin-bottom: 0; }\n\n.bp-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.bp-group-header i { color: var(--mj-brand-primary); }\n\n.bp-feature-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n.bp-feature-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n padding: 10px 14px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n.bp-feature-row:first-child { border-top: 0; }\n\n.bp-feature-row .label { display: flex; flex-direction: column; gap: 2px; min-width: 0; }\n.bp-feature-row .label .t { font-size: 13px; font-weight: 600; color: var(--mj-text-primary); }\n.bp-feature-row .label .d { font-size: 11px; color: var(--mj-text-muted); line-height: 1.35; }\n\n.bp-switch {\n position: relative;\n flex: 0 0 auto;\n width: 36px;\n height: 20px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n}\n.bp-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n transition: left 0.15s;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n.bp-switch.on { background: var(--mj-brand-primary); }\n.bp-switch.on::after { left: 18px; }\n.bp-switch.disabled { opacity: 0.5; cursor: not-allowed; }\n"] }]
|
|
250
|
+
}], null, null); })();
|
|
251
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJAIBridgeProviderFormComponentExtended, { className: "MJAIBridgeProviderFormComponentExtended", filePath: "src/lib/custom/BridgeProviders/bridge-provider-form.component.ts", lineNumber: 39 }); })();
|
|
252
|
+
/** Tree-shake guard — invoked from the custom-forms module loader. */
|
|
253
|
+
export function LoadMJAIBridgeProviderFormComponentExtended() {
|
|
254
|
+
/* no-op marker */
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=bridge-provider-form.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-provider-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/BridgeProviders/bridge-provider-form.component.ts","../../../../src/lib/custom/BridgeProviders/bridge-provider-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJAIBridgeProviderEntity } from '@memberjunction/core-entities';\nimport { MJAIBridgeProviderFormComponent } from '../../generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component';\nimport {\n BRIDGE_FEATURE_GROUPS,\n BridgeFeatureGroup,\n BridgeFeatureKey,\n countEnabledFeatures,\n isFeatureEnabled,\n setFeature,\n} from './bridge-provider-features';\n\n/**\n * Custom form for 'MJ: AI Bridge Providers' (Pattern 2 — full override of the\n * generated form). The standout addition is a **capability editor**: the 16\n * `SupportedFeatures` flags rendered as labeled toggles, grouped into Join\n * methods / Media tracks / Signals & telephony.\n *\n * The toggles bind through the entity's typed `SupportedFeaturesObject`\n * accessor (which serializes to/from the `SupportedFeatures` JSON column). On\n * each toggle we read the current object, produce a fresh object via the pure\n * `setFeature` helper, and write it back through the setter — a fresh reference\n * is required so the accessor's parse-cache invalidates and dirty tracking\n * fires. Disabling omits the key (matching \"NULL/omitted = unsupported\").\n *\n * The remaining provider fields (Name / Description / BridgeType / DriverClass\n * / Status / Configuration / ConfigSchema) and the related-entity grids keep\n * the generated panels.\n */\n@RegisterClass(BaseFormComponent, 'MJ: AI Bridge Providers')\n@Component({\n standalone: false,\n selector: 'mj-ai-bridge-provider-form',\n templateUrl: './bridge-provider-form.component.html',\n styleUrls: ['./bridge-provider-form.component.css'],\n})\nexport class MJAIBridgeProviderFormComponentExtended extends MJAIBridgeProviderFormComponent {\n public override record!: MJAIBridgeProviderEntity;\n\n /** Static editor layout (16 flags, 3 groups). */\n public readonly FeatureGroups: readonly BridgeFeatureGroup[] = BRIDGE_FEATURE_GROUPS;\n\n /**\n * Register section state for the custom layout. We don't call\n * `super.ngOnInit()`'s `initSections` because this form restructures the\n * sections (adds `supportedFeatures` + `configurationSchema`, splits the\n * generated \"Technical Capabilities\" panel), so we register our own keys.\n */\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'providerInformation', sectionName: 'Provider Information', isExpanded: true },\n { sectionKey: 'providerConfiguration', sectionName: 'Provider Configuration', isExpanded: true },\n { sectionKey: 'supportedFeatures', sectionName: 'Supported Features', isExpanded: true },\n { sectionKey: 'configurationSchema', sectionName: 'Configuration Schema', isExpanded: false },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJAIAgentSessionBridges', sectionName: 'AI Agent Session Bridges', isExpanded: false },\n { sectionKey: 'mJAIBridgeProviderChannels', sectionName: 'AI Bridge Provider Channels', isExpanded: false },\n { sectionKey: 'mJAIBridgeAgentIdentities', sectionName: 'AI Bridge Agent Identities', isExpanded: false },\n ]);\n }\n\n /** Count of enabled capabilities — drives the panel badge. */\n public get EnabledFeatureCount(): number {\n return countEnabledFeatures(this.record?.SupportedFeaturesObject ?? null);\n }\n\n /** Read a single capability flag for the template. */\n public IsFeatureOn(key: BridgeFeatureKey): boolean {\n return isFeatureEnabled(this.record?.SupportedFeaturesObject ?? null, key);\n }\n\n /**\n * Toggle a capability flag. Reads the current typed object, builds a fresh\n * object with the flag changed, and assigns it back through the typed\n * setter (which re-serializes to the JSON column and marks the field dirty).\n */\n public ToggleFeature(key: BridgeFeatureKey, enabled: boolean): void {\n if (!this.record || !this.EditMode) {\n return;\n }\n this.record.SupportedFeaturesObject = setFeature(\n this.record.SupportedFeaturesObject ?? null,\n key,\n enabled,\n );\n }\n}\n\n/** Tree-shake guard — invoked from the custom-forms module loader. */\nexport function LoadMJAIBridgeProviderFormComponentExtended(): void {\n /* no-op marker */\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- Provider Information -->\n <mj-collapsible-panel\n SectionKey=\"providerInformation\"\n SectionName=\"Provider Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Provider Configuration -->\n <mj-collapsible-panel\n SectionKey=\"providerConfiguration\"\n SectionName=\"Provider Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BridgeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"DriverClass\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Supported Features — capability editor (the standout custom UI) -->\n <mj-collapsible-panel\n SectionKey=\"supportedFeatures\"\n SectionName=\"Supported Features\"\n Icon=\"fa fa-toggle-on\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"EnabledFeatureCount\"\n [DefaultExpanded]=\"true\">\n\n <p class=\"bp-intro\">\n The platform's declared capabilities. The engine gates optional driver calls on these flags —\n the base driver throws <code>BridgeCapabilityNotSupportedError</code> when a feature is claimed but\n unimplemented. Leave a capability off if the platform / driver does not support it.\n </p>\n\n @for (group of FeatureGroups; track group.title) {\n <div class=\"bp-group\">\n <div class=\"bp-group-header\">\n <i class=\"fa-solid {{ group.icon }}\"></i>\n <span>{{ group.title }}</span>\n </div>\n <div class=\"bp-feature-list\">\n @for (feature of group.features; track feature.key) {\n <div class=\"bp-feature-row\">\n <div class=\"label\">\n <span class=\"t\">{{ feature.label }}</span>\n <span class=\"d\">{{ feature.description }}</span>\n </div>\n <div class=\"bp-switch\"\n [class.on]=\"IsFeatureOn(feature.key)\"\n [class.disabled]=\"!EditMode\"\n (click)=\"ToggleFeature(feature.key, !IsFeatureOn(feature.key))\">\n </div>\n </div>\n }\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Configuration Schema -->\n <mj-collapsible-panel\n SectionKey=\"configurationSchema\"\n SectionName=\"Configuration Schema\"\n Icon=\"fa fa-code\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ConfigSchema\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentSessionBridges\"\n SectionName=\"AI Agent Session Bridges\"\n Icon=\"fa fa-network-wired\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentSessionBridges')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Session Bridges','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Session Bridges')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentSessionBridges')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentSessionBridges', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeProviderChannels\"\n SectionName=\"AI Bridge Provider Channels\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeProviderChannels')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Provider Channels','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Provider Channels')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeProviderChannels')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeProviderChannels', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJAIBridgeAgentIdentities\"\n SectionName=\"AI Bridge Agent Identities\"\n Icon=\"fa fa-id-card\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIBridgeAgentIdentities')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Bridge Agent Identities','ProviderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Bridge Agent Identities')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIBridgeAgentIdentities')\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIBridgeAgentIdentities', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n"]}
|
|
@@ -279,10 +279,34 @@ export declare class MJEntityFormComponentExtended extends MJEntityFormComponent
|
|
|
279
279
|
* Returns true if the given field is inherited from a parent entity via IS-A.
|
|
280
280
|
*/
|
|
281
281
|
IsInheritedField(field: EntityFieldInfo): boolean;
|
|
282
|
-
/**
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
282
|
+
/**
|
|
283
|
+
* All entities available as potential IS-A parents (excluding self and
|
|
284
|
+
* descendants), sorted by name. Precomputed by {@link recomputeIsaEntityLists}
|
|
285
|
+
* whenever {@link entity} changes — previously a getter that filtered/sorted
|
|
286
|
+
* `md.Entities` (hundreds of rows) with per-item `UUIDsEqual` on every CD
|
|
287
|
+
* cycle while bound inside a template `@for`.
|
|
288
|
+
*/
|
|
289
|
+
AvailableParentEntities: EntityInfo[];
|
|
290
|
+
/**
|
|
291
|
+
* Sibling entities that share the same IS-A parent type. Precomputed by
|
|
292
|
+
* {@link recomputeIsaEntityLists} when {@link entity} changes — previously a
|
|
293
|
+
* per-CD getter filtering `ParentEntityInfo.ChildEntities` with `UUIDsEqual`.
|
|
294
|
+
*/
|
|
295
|
+
SiblingEntities: EntityInfo[];
|
|
296
|
+
/**
|
|
297
|
+
* Recomputes {@link AvailableParentEntities} and {@link SiblingEntities} from
|
|
298
|
+
* the current {@link entity}. Called from `loadExplorerData()` once the entity
|
|
299
|
+
* metadata is resolved — never during change detection.
|
|
300
|
+
*
|
|
301
|
+
* Accepted staleness tradeoff: these IS-A lists are built from `md.Entities`
|
|
302
|
+
* once per entity-load and are NOT reactive — a mid-session metadata reload
|
|
303
|
+
* (a newly added/removed entity) would not refresh them until this form
|
|
304
|
+
* re-loads. That is acceptable for the entity form (its IS-A parent/sibling
|
|
305
|
+
* set is effectively static within an editing session); we deliberately do
|
|
306
|
+
* NOT wire observable reactivity here. The former getters re-filtered/sorted
|
|
307
|
+
* hundreds of rows on every CD, which was the perf cost we removed.
|
|
308
|
+
*/
|
|
309
|
+
private recomputeIsaEntityLists;
|
|
286
310
|
get statusClass(): string;
|
|
287
311
|
get entityIcon(): string;
|
|
288
312
|
get entityDisplayName(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Entities/entity-form.component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"entity-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Entities/entity-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,MAAM,EACN,SAAS,EAGZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACH,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,oBAAoB,EAIvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAInF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAC;;AAElG,MAAM,MAAM,eAAe,GACrB,UAAU,GACV,QAAQ,GACR,eAAe,GACf,aAAa,GACb,aAAa,GACb,MAAM,GACN,SAAS,GACT,SAAS,GACT,UAAU,CAAC;AAEjB,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,eAAe,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,oBAAoB,CAAC;IACjC,eAAe,EAAE;QAAE,IAAI,EAAE,iCAAiC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1G;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC;IACjC,mBAAmB,EAAE,iCAAiC,CAAC;IACvD,SAAS,EAAE,QAAQ,GAAG,YAAY,CAAC;CACtC;AAED;;;;;;;;;;;GAWG;AACH,qBAQa,6BAA8B,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IACjG,OAAO,CAAC,aAAa,CAAyB;IAE9C,wCAAwC;IACjC,MAAM,EAAG,cAAc,CAAC;IAE/B,6DAA6D;IACtD,MAAM,EAAE,UAAU,GAAG,IAAI,CAAQ;IAExC,4CAA4C;IACrC,WAAW,EAAE,UAAU,EAAE,CAAM;IAEtC,4EAA4E;IACrE,eAAe,EAAE,eAAe,EAAE,CAAM;IAE/C,oBAAoB;IACb,iBAAiB,UAAQ;IAEhC,qCAAqC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C,6CAA6C;IACtC,aAAa,EAAE,eAAe,CAAc;IAEnD,mEAAmE;IAC5D,QAAQ,EAAE,OAAO,EAAE,CAUxB;IAEF,yCAAyC;IAClC,KAAK,EAAE,WAAW,CASvB;IAEF,kCAAkC;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAM;IAEtC,sCAAsC;IAC/B,eAAe,SAAM;IAE5B,sCAAsC;IAC/B,mBAAmB,cAAqB;IAE/C,wDAAwD;IACjD,aAAa,EAAE,SAAS,GAAG,MAAM,CAAa;IAErD,mDAAmD;IAC5C,cAAc,EAAE,aAAa,EAAE,CAAM;IAE5C,kEAAkE;IAC3D,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAElD,yDAAyD;IAClD,yBAAyB,UAAQ;IAExC,oCAAoC;IAC7B,mBAAmB,EAAE,MAAM,CAAc;IACzC,sBAAsB,EAAE,KAAK,GAAG,MAAM,CAAS;IAEtD,oCAAoC;IAC7B,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAa;IAE5D,4BAA4B;IACrB,QAAQ,EAAE,MAAM,CAAK;IAE5B,uCAAuC;IAChC,iBAAiB,UAAS;IAEjC,6DAA6D;IACtD,qBAAqB,EAAE,sBAAsB,EAAE,CAAM;IAE5D,iEAAiE;IAC1D,qBAAqB,EAAE,sBAAsB,EAAE,CAAM;IAE5D,sDAAsD;IAC/C,4BAA4B,EAAE,2BAA2B,EAAE,CAAM;IAExE,sDAAsD;IAC/C,4BAA4B,EAAE,2BAA2B,EAAE,CAAM;IAExE,qDAAqD;IAC9C,mBAAmB,EAAE,kBAAkB,EAAE,CAAM;IAEtD,mEAAmE;IAC5D,mBAAmB,EAAE,kBAAkB,EAAE,CAAM;IAEtD,mCAAmC;IAC5B,eAAe,UAAS;IAE/B,gDAAgD;IACzC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAQ;IAEpD,uDAAuD;IAChD,oBAAoB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAElE,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,KAAK,SAAS,GAAiC;IACvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,WAAW,IAAI,IAAI;IAKnB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IA4CxB;;;OAGG;YACW,iBAAiB;IA4B/B,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,gBAAgB;IAsHxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA2C3B;;OAEG;YACW,qBAAqB;IA+BnC,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKnD,+EAA+E;IAC/E,IAAI,oBAAoB,IAAI,MAAM,CAGjC;IAED,OAAO,CAAC,eAAe;IAqBhB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAMvD;;;OAGG;IACI,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAQrD;;;OAGG;IACI,cAAc,IAAI,IAAI;IAUtB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASvC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9C,oBAAoB,IAAI,IAAI;IAO5B,sBAAsB,IAAI,IAAI;IAKrC,IAAW,sBAAsB,IAAI,OAAO,CAG3C;IAED,IAAW,uBAAuB,IAAI,OAAO,CAE5C;IAED;;OAEG;IACI,qBAAqB,IAAI,eAAe,EAAE;IAuCjD,OAAO,CAAC,iBAAiB;IAalB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUnC,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAOzC,kBAAkB,CAAC,YAAY,EAAE,sBAAsB,GAAG,IAAI;IAO9D,gBAAgB,IAAI,IAAI;IAOxB,sBAAsB,IAAI,IAAI;IAKrC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOvC;;;OAGG;IACI,eAAe,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK7E;;OAEG;IACI,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAKjD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC,sBAAsB,IAAI,UAAU,EAAE;IAqB7C,+DAA+D;IAC/D,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,kEAAkE;IAClE,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,mEAAmE;IACnE,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,4FAA4F;IAC5F,IAAW,sBAAsB,IAAI,OAAO,CAE3C;IAED,+CAA+C;IAC/C,IAAW,WAAW,IAAI,UAAU,EAAE,CAErC;IAED,8CAA8C;IAC9C,IAAW,aAAa,IAAI,UAAU,EAAE,CAEvC;IAED,sEAAsE;IACtE,IAAW,kBAAkB,IAAI,OAAO,CAEvC;IAED,kEAAkE;IAClE,IAAW,aAAa,IAAI,MAAM,CAIjC;IAED,sDAAsD;IACtD,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAED,0DAA0D;IACnD,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKrD;;;OAGG;IACI,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI;IAW/D;;OAEG;IACI,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAIxD;;;;;;OAMG;IACI,uBAAuB,EAAE,UAAU,EAAE,CAAM;IAElD;;;;OAIG;IACI,eAAe,EAAE,UAAU,EAAE,CAAM;IAE1C;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;IA4B/B,IAAW,WAAW,IAAI,MAAM,CAQ/B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,iBAAiB,IAAI,MAAM,CAGrC;IAED,IAAW,iBAAiB,IAAI,MAAM,CAGrC;IAED,IAAW,iBAAiB,IAAI,MAAM,EAAE,CAUvC;IAEM,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAgBhD,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI;IAM3D,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,GAAG,IAAI;IAK3D,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAQ5D;;OAEG;IACI,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOlD,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAUtD;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM;IAMtD;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAY1C;;OAEG;IACH,2FAA2F;IACpF,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAIhD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;yCArgCpC,6BAA6B;2CAA7B,6BAA6B;CA8gCzC"}
|
|
@@ -2777,6 +2777,20 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
|
|
|
2777
2777
|
this.selectedRelationship = null;
|
|
2778
2778
|
this.destroy$ = new Subject();
|
|
2779
2779
|
this.stateChange$ = new Subject();
|
|
2780
|
+
/**
|
|
2781
|
+
* All entities available as potential IS-A parents (excluding self and
|
|
2782
|
+
* descendants), sorted by name. Precomputed by {@link recomputeIsaEntityLists}
|
|
2783
|
+
* whenever {@link entity} changes — previously a getter that filtered/sorted
|
|
2784
|
+
* `md.Entities` (hundreds of rows) with per-item `UUIDsEqual` on every CD
|
|
2785
|
+
* cycle while bound inside a template `@for`.
|
|
2786
|
+
*/
|
|
2787
|
+
this.AvailableParentEntities = [];
|
|
2788
|
+
/**
|
|
2789
|
+
* Sibling entities that share the same IS-A parent type. Precomputed by
|
|
2790
|
+
* {@link recomputeIsaEntityLists} when {@link entity} changes — previously a
|
|
2791
|
+
* per-CD getter filtering `ParentEntityInfo.ChildEntities` with `UUIDsEqual`.
|
|
2792
|
+
*/
|
|
2793
|
+
this.SiblingEntities = [];
|
|
2780
2794
|
}
|
|
2781
2795
|
get _metadata() { return this.ProviderToUse; }
|
|
2782
2796
|
async ngOnInit() {
|
|
@@ -2811,6 +2825,7 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
|
|
|
2811
2825
|
this.buildISAFieldGroups();
|
|
2812
2826
|
this.buildRelationships();
|
|
2813
2827
|
this.buildOrganicKeys();
|
|
2828
|
+
this.recomputeIsaEntityLists();
|
|
2814
2829
|
this.updateNavBadges();
|
|
2815
2830
|
// Load row count asynchronously (don't block UI)
|
|
2816
2831
|
this.loadRowCountAsync();
|
|
@@ -3429,10 +3444,25 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
|
|
|
3429
3444
|
IsInheritedField(field) {
|
|
3430
3445
|
return this.GetISAFieldSource(field) !== null;
|
|
3431
3446
|
}
|
|
3432
|
-
/**
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3447
|
+
/**
|
|
3448
|
+
* Recomputes {@link AvailableParentEntities} and {@link SiblingEntities} from
|
|
3449
|
+
* the current {@link entity}. Called from `loadExplorerData()` once the entity
|
|
3450
|
+
* metadata is resolved — never during change detection.
|
|
3451
|
+
*
|
|
3452
|
+
* Accepted staleness tradeoff: these IS-A lists are built from `md.Entities`
|
|
3453
|
+
* once per entity-load and are NOT reactive — a mid-session metadata reload
|
|
3454
|
+
* (a newly added/removed entity) would not refresh them until this form
|
|
3455
|
+
* re-loads. That is acceptable for the entity form (its IS-A parent/sibling
|
|
3456
|
+
* set is effectively static within an editing session); we deliberately do
|
|
3457
|
+
* NOT wire observable reactivity here. The former getters re-filtered/sorted
|
|
3458
|
+
* hundreds of rows on every CD, which was the perf cost we removed.
|
|
3459
|
+
*/
|
|
3460
|
+
recomputeIsaEntityLists() {
|
|
3461
|
+
if (!this.entity) {
|
|
3462
|
+
this.AvailableParentEntities = [];
|
|
3463
|
+
this.SiblingEntities = [];
|
|
3464
|
+
return;
|
|
3465
|
+
}
|
|
3436
3466
|
const md = this.ProviderToUse;
|
|
3437
3467
|
const descendantIds = new Set();
|
|
3438
3468
|
const collectDescendants = (e) => {
|
|
@@ -3442,16 +3472,16 @@ let MJEntityFormComponentExtended = class MJEntityFormComponentExtended extends
|
|
|
3442
3472
|
}
|
|
3443
3473
|
};
|
|
3444
3474
|
collectDescendants(this.entity);
|
|
3445
|
-
|
|
3475
|
+
this.AvailableParentEntities = md.Entities
|
|
3446
3476
|
.filter(e => !descendantIds.has(e.ID) && !UUIDsEqual(e.ID, this.entity.ID) && !e.VirtualEntity)
|
|
3447
3477
|
.sort((a, b) => a.Name.localeCompare(b.Name));
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
|
|
3478
|
+
if (this.IsChildType && this.entity.ParentEntityInfo) {
|
|
3479
|
+
this.SiblingEntities = this.entity.ParentEntityInfo.ChildEntities
|
|
3480
|
+
.filter(e => !UUIDsEqual(e.ID, this.entity.ID));
|
|
3481
|
+
}
|
|
3482
|
+
else {
|
|
3483
|
+
this.SiblingEntities = [];
|
|
3484
|
+
}
|
|
3455
3485
|
}
|
|
3456
3486
|
get statusClass() {
|
|
3457
3487
|
if (!this.entity)
|