@memberjunction/ng-dashboards 5.22.0 → 5.24.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/README.md +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +364 -362
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +2 -2
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +947 -64
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7645 -430
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +285 -6
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2454 -277
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +191 -197
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +9 -8
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +305 -299
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +319 -313
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +20 -2
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +419 -232
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +10 -12
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +61 -68
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +10 -11
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +82 -96
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +130 -134
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +40 -46
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.js +2 -2
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +2 -2
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +127 -132
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +2 -2
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +11 -17
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +2 -2
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +2 -2
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +17 -17
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -4
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +5 -4
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +247 -259
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +1 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +1 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/components/widgets/integration-card.component.js +7 -9
- package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +6 -10
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +12 -20
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +411 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4266 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +140 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +780 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +8 -2
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +246 -195
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +75 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +601 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +93 -12
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +637 -107
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +9 -7
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +10 -9
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +6 -9
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +20 -22
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +9 -10
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/__tests__/analytics-resource.test.d.ts +2 -0
- package/dist/__tests__/analytics-resource.test.d.ts.map +1 -0
- package/dist/__tests__/analytics-resource.test.js +181 -0
- package/dist/__tests__/analytics-resource.test.js.map +1 -0
- package/dist/__tests__/scheduling.test.d.ts +2 -0
- package/dist/__tests__/scheduling.test.d.ts.map +1 -0
- package/dist/__tests__/scheduling.test.js +205 -0
- package/dist/__tests__/scheduling.test.js.map +1 -0
- package/dist/actions-dashboards.module.d.ts +8 -13
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +6 -27
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +20 -20
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +43 -44
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +4 -8
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +0 -19
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/component-studio-dashboards.module.d.ts +7 -11
- package/dist/component-studio-dashboards.module.d.ts.map +1 -1
- package/dist/component-studio-dashboards.module.js +22 -34
- package/dist/component-studio-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +12 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +15 -31
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +5 -8
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +3 -19
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +7 -13
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +0 -27
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +5 -8
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +3 -19
- package/dist/lists-dashboards.module.js.map +1 -1
- 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/dist/scheduling-dashboards.module.d.ts +6 -10
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +3 -23
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +44 -0
- package/dist/shared/entity-field-display.d.ts.map +1 -0
- package/dist/shared/entity-field-display.js +118 -0
- package/dist/shared/entity-field-display.js.map +1 -0
- package/dist/testing-dashboards.module.d.ts +7 -13
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +0 -27
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +48 -55
|
@@ -13,10 +13,8 @@ import { IntegrationDataService } from '../../services/integration-data.service'
|
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "@angular/common";
|
|
15
15
|
import * as i2 from "@angular/forms";
|
|
16
|
-
import * as i3 from "@
|
|
17
|
-
import * as i4 from "@
|
|
18
|
-
import * as i5 from "@progress/kendo-angular-inputs";
|
|
19
|
-
import * as i6 from "@memberjunction/ng-shared-generic";
|
|
16
|
+
import * as i3 from "@memberjunction/ng-ui-components";
|
|
17
|
+
import * as i4 from "@memberjunction/ng-shared-generic";
|
|
20
18
|
const _c0 = () => ({ ID: "", Name: "-- Select --" });
|
|
21
19
|
const _c1 = () => ["Pull", "Push", "Bidirectional"];
|
|
22
20
|
const _c2 = () => ({ Name: "", Label: "Select source object..." });
|
|
@@ -54,35 +52,35 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
54
52
|
} }
|
|
55
53
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
56
54
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
57
|
-
i0.ɵɵelementStart(0, "
|
|
58
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
59
|
-
i0.ɵɵlistener("
|
|
55
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 44);
|
|
56
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_13_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedSourceObjectName, $event) || (ctx_r1.SelectedSourceObjectName = $event); return i0.ɵɵresetView($event); });
|
|
57
|
+
i0.ɵɵlistener("ValueChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_13_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnSourceObjectChange($event)); });
|
|
60
58
|
i0.ɵɵelementEnd();
|
|
61
59
|
} if (rf & 2) {
|
|
62
60
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
63
|
-
i0.ɵɵproperty("
|
|
61
|
+
i0.ɵɵproperty("Data", ctx_r1.DiscoveredObjects)("ValuePrimitive", true);
|
|
64
62
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedSourceObjectName);
|
|
65
|
-
i0.ɵɵproperty("
|
|
63
|
+
i0.ɵɵproperty("Filterable", true)("DefaultItem", i0.ɵɵpureFunction0(5, _c2));
|
|
66
64
|
} }
|
|
67
65
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
68
66
|
i0.ɵɵelement(0, "mj-loading", 16);
|
|
69
67
|
} }
|
|
70
68
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
71
69
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
72
|
-
i0.ɵɵelementStart(0, "
|
|
73
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
70
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 46);
|
|
71
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_4_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(5); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedEntityID, $event) || (ctx_r1.SelectedEntityID = $event); return i0.ɵɵresetView($event); });
|
|
74
72
|
i0.ɵɵelementEnd();
|
|
75
73
|
} if (rf & 2) {
|
|
76
74
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
77
|
-
i0.ɵɵproperty("
|
|
75
|
+
i0.ɵɵproperty("Data", ctx_r1.MJEntities)("ValuePrimitive", true);
|
|
78
76
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedEntityID);
|
|
79
|
-
i0.ɵɵproperty("
|
|
77
|
+
i0.ɵɵproperty("Filterable", true)("DefaultItem", i0.ɵɵpureFunction0(5, _c3));
|
|
80
78
|
} }
|
|
81
79
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
82
80
|
i0.ɵɵelementStart(0, "div", 29)(1, "label");
|
|
83
81
|
i0.ɵɵtext(2, "Target MJ Entity");
|
|
84
82
|
i0.ɵɵelementEnd();
|
|
85
|
-
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_3_Template, 1, 0, "mj-loading", 16)(4, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_4_Template, 1,
|
|
83
|
+
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_3_Template, 1, 0, "mj-loading", 16)(4, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Conditional_4_Template, 1, 6, "mj-dropdown", 45);
|
|
86
84
|
i0.ɵɵelementEnd();
|
|
87
85
|
} if (rf & 2) {
|
|
88
86
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -90,7 +88,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
90
88
|
i0.ɵɵconditional(ctx_r1.IsLoadingEntities ? 3 : 4);
|
|
91
89
|
} }
|
|
92
90
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
-
i0.ɵɵelementStart(0, "span",
|
|
91
|
+
i0.ɵɵelementStart(0, "span", 51);
|
|
94
92
|
i0.ɵɵtext(1);
|
|
95
93
|
i0.ɵɵelementEnd();
|
|
96
94
|
} if (rf & 2) {
|
|
@@ -107,7 +105,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
107
105
|
i0.ɵɵtext(1, " Preview DDL ");
|
|
108
106
|
} }
|
|
109
107
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
-
i0.ɵɵelementStart(0, "div",
|
|
108
|
+
i0.ɵɵelementStart(0, "div", 54);
|
|
111
109
|
i0.ɵɵelement(1, "i", 43);
|
|
112
110
|
i0.ɵɵtext(2);
|
|
113
111
|
i0.ɵɵelementEnd();
|
|
@@ -117,7 +115,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
117
115
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.DDLPreviewError, " ");
|
|
118
116
|
} }
|
|
119
117
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
120
|
-
i0.ɵɵelementStart(0, "pre",
|
|
118
|
+
i0.ɵɵelementStart(0, "pre", 55);
|
|
121
119
|
i0.ɵɵtext(1);
|
|
122
120
|
i0.ɵɵelementEnd();
|
|
123
121
|
} if (rf & 2) {
|
|
@@ -127,17 +125,17 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
127
125
|
} }
|
|
128
126
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
129
127
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
130
|
-
i0.ɵɵelementStart(0, "div",
|
|
128
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "button", 53);
|
|
131
129
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.PreviewDDL()); });
|
|
132
130
|
i0.ɵɵconditionalCreate(2, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_2_Template, 2, 0)(3, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_3_Template, 2, 0);
|
|
133
131
|
i0.ɵɵelementEnd();
|
|
134
|
-
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_4_Template, 3, 1, "div",
|
|
135
|
-
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_5_Template, 2, 1, "pre",
|
|
132
|
+
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_4_Template, 3, 1, "div", 54);
|
|
133
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_5_Template, 2, 1, "pre", 55);
|
|
136
134
|
i0.ɵɵelementEnd();
|
|
137
135
|
} if (rf & 2) {
|
|
138
136
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
139
137
|
i0.ɵɵadvance();
|
|
140
|
-
i0.ɵɵproperty("
|
|
138
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsGeneratingDDL);
|
|
141
139
|
i0.ɵɵadvance();
|
|
142
140
|
i0.ɵɵconditional(ctx_r1.IsGeneratingDDL ? 2 : 3);
|
|
143
141
|
i0.ɵɵadvance(2);
|
|
@@ -147,38 +145,38 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
147
145
|
} }
|
|
148
146
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
149
147
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
150
|
-
i0.ɵɵelementStart(0, "div", 37)(1, "div",
|
|
148
|
+
i0.ɵɵelementStart(0, "div", 37)(1, "div", 47);
|
|
151
149
|
i0.ɵɵtext(2, "Define New Entity");
|
|
152
150
|
i0.ɵɵelementEnd();
|
|
153
151
|
i0.ɵɵelementStart(3, "div", 29)(4, "label");
|
|
154
152
|
i0.ɵɵtext(5, "DB Schema");
|
|
155
153
|
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵelementStart(6, "
|
|
157
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
158
|
-
i0.ɵɵlistener("
|
|
154
|
+
i0.ɵɵelementStart(6, "mj-combobox", 48);
|
|
155
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template_mj_combobox_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntitySchemaName, $event) || (ctx_r1.NewEntitySchemaName = $event); return i0.ɵɵresetView($event); });
|
|
156
|
+
i0.ɵɵlistener("ValueChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template_mj_combobox_ValueChange_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnSchemaNameChange()); });
|
|
159
157
|
i0.ɵɵelementEnd()();
|
|
160
|
-
i0.ɵɵelementStart(7, "div",
|
|
158
|
+
i0.ɵɵelementStart(7, "div", 49)(8, "div", 29)(9, "label");
|
|
161
159
|
i0.ɵɵtext(10, "Table Name");
|
|
162
160
|
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementStart(11, "input",
|
|
161
|
+
i0.ɵɵelementStart(11, "input", 50);
|
|
164
162
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntityTableName, $event) || (ctx_r1.NewEntityTableName = $event); return i0.ɵɵresetView($event); });
|
|
165
163
|
i0.ɵɵelementEnd();
|
|
166
|
-
i0.ɵɵconditionalCreate(12, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_12_Template, 2, 1, "span",
|
|
164
|
+
i0.ɵɵconditionalCreate(12, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_12_Template, 2, 1, "span", 51);
|
|
167
165
|
i0.ɵɵelementEnd();
|
|
168
166
|
i0.ɵɵelementStart(13, "div", 29)(14, "label");
|
|
169
167
|
i0.ɵɵtext(15, "Entity Name");
|
|
170
168
|
i0.ɵɵelementEnd();
|
|
171
|
-
i0.ɵɵelementStart(16, "input",
|
|
169
|
+
i0.ɵɵelementStart(16, "input", 50);
|
|
172
170
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template_input_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.NewEntityName, $event) || (ctx_r1.NewEntityName = $event); return i0.ɵɵresetView($event); });
|
|
173
171
|
i0.ɵɵelementEnd()()();
|
|
174
|
-
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Template, 6,
|
|
172
|
+
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Template, 6, 4, "div", 52);
|
|
175
173
|
i0.ɵɵelementEnd();
|
|
176
174
|
} if (rf & 2) {
|
|
177
175
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
178
176
|
i0.ɵɵadvance(6);
|
|
179
|
-
i0.ɵɵproperty("
|
|
177
|
+
i0.ɵɵproperty("Data", ctx_r1.DBSchemas);
|
|
180
178
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewEntitySchemaName);
|
|
181
|
-
i0.ɵɵproperty("
|
|
179
|
+
i0.ɵɵproperty("AllowCustom", true)("Filterable", true);
|
|
182
180
|
i0.ɵɵadvance(5);
|
|
183
181
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NewEntityTableName);
|
|
184
182
|
i0.ɵɵproperty("placeholder", ctx_r1.SuggestedTableName || "Table name");
|
|
@@ -199,7 +197,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
199
197
|
i0.ɵɵtext(1, " Create Pending Map ");
|
|
200
198
|
} }
|
|
201
199
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
202
|
-
i0.ɵɵelement(0, "i",
|
|
200
|
+
i0.ɵɵelement(0, "i", 56);
|
|
203
201
|
i0.ɵɵtext(1, " Add Map ");
|
|
204
202
|
} }
|
|
205
203
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -215,7 +213,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Tem
|
|
|
215
213
|
i0.ɵɵelementStart(7, "div", 29)(8, "label");
|
|
216
214
|
i0.ɵɵtext(9, "Source Object");
|
|
217
215
|
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵconditionalCreate(10, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_10_Template, 3, 0, "div", 30)(11, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_11_Template, 3, 1, "div", 31)(12, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_12_Template, 2, 0, "div", 31)(13, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_13_Template, 1,
|
|
216
|
+
i0.ɵɵconditionalCreate(10, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_10_Template, 3, 0, "div", 30)(11, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_11_Template, 3, 1, "div", 31)(12, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_12_Template, 2, 0, "div", 31)(13, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_13_Template, 1, 6, "mj-dropdown", 32);
|
|
219
217
|
i0.ɵɵelementEnd();
|
|
220
218
|
i0.ɵɵelementStart(14, "div", 33)(15, "button", 34);
|
|
221
219
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SetTargetMode("existing")); });
|
|
@@ -228,12 +226,12 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Tem
|
|
|
228
226
|
i0.ɵɵtext(20, " New Entity ");
|
|
229
227
|
i0.ɵɵelementEnd()();
|
|
230
228
|
i0.ɵɵconditionalCreate(21, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_21_Template, 5, 1, "div", 29);
|
|
231
|
-
i0.ɵɵconditionalCreate(22, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template, 18,
|
|
229
|
+
i0.ɵɵconditionalCreate(22, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Conditional_22_Template, 18, 10, "div", 37);
|
|
232
230
|
i0.ɵɵelementStart(23, "div", 29)(24, "label");
|
|
233
231
|
i0.ɵɵtext(25, "Sync Direction");
|
|
234
232
|
i0.ɵɵelementEnd();
|
|
235
|
-
i0.ɵɵelementStart(26, "
|
|
236
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
233
|
+
i0.ɵɵelementStart(26, "mj-dropdown", 38);
|
|
234
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Template_mj_dropdown_ngModelChange_26_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.AddSyncDirection, $event) || (ctx_r1.AddSyncDirection = $event); return i0.ɵɵresetView($event); });
|
|
237
235
|
i0.ɵɵelementEnd()();
|
|
238
236
|
i0.ɵɵelementStart(27, "div", 39)(28, "button", 40);
|
|
239
237
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SaveAddMap()); });
|
|
@@ -256,18 +254,16 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Tem
|
|
|
256
254
|
i0.ɵɵadvance();
|
|
257
255
|
i0.ɵɵconditional(ctx_r1.TargetMode === "new" ? 22 : -1);
|
|
258
256
|
i0.ɵɵadvance(4);
|
|
259
|
-
i0.ɵɵproperty("
|
|
257
|
+
i0.ɵɵproperty("Data", i0.ɵɵpureFunction0(11, _c1));
|
|
260
258
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.AddSyncDirection);
|
|
261
259
|
i0.ɵɵadvance(2);
|
|
262
|
-
i0.ɵɵproperty("
|
|
260
|
+
i0.ɵɵproperty("disabled", !ctx_r1.IsAddFormValid || ctx_r1.IsSavingEntityMap);
|
|
263
261
|
i0.ɵɵadvance();
|
|
264
262
|
i0.ɵɵconditional(ctx_r1.IsSavingEntityMap ? 29 : ctx_r1.TargetMode === "new" ? 30 : 31);
|
|
265
|
-
i0.ɵɵadvance(3);
|
|
266
|
-
i0.ɵɵproperty("size", "small");
|
|
267
263
|
} }
|
|
268
264
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
269
265
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
270
|
-
i0.ɵɵelementStart(0, "div", 23)(1, "input",
|
|
266
|
+
i0.ɵɵelementStart(0, "div", 23)(1, "input", 57);
|
|
271
267
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_8_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.EntityMapSearchText, $event) || (ctx_r1.EntityMapSearchText = $event); return i0.ɵɵresetView($event); });
|
|
272
268
|
i0.ɵɵelementEnd()();
|
|
273
269
|
} if (rf & 2) {
|
|
@@ -279,7 +275,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_9_Tem
|
|
|
279
275
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
280
276
|
i0.ɵɵelementStart(0, "p", 15);
|
|
281
277
|
i0.ɵɵtext(1, " No entity maps configured. ");
|
|
282
|
-
i0.ɵɵelementStart(2, "a",
|
|
278
|
+
i0.ɵɵelementStart(2, "a", 58);
|
|
283
279
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_9_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenAddPanel()); });
|
|
284
280
|
i0.ɵɵtext(3, "Add one");
|
|
285
281
|
i0.ɵɵelementEnd()();
|
|
@@ -294,44 +290,43 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_10_Te
|
|
|
294
290
|
i0.ɵɵtextInterpolate1("No matches for \"", ctx_r1.EntityMapSearchText, "\".");
|
|
295
291
|
} }
|
|
296
292
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
297
|
-
i0.ɵɵelementStart(0, "span",
|
|
293
|
+
i0.ɵɵelementStart(0, "span", 69);
|
|
298
294
|
i0.ɵɵtext(1, "Pending");
|
|
299
295
|
i0.ɵɵelementEnd();
|
|
300
296
|
} }
|
|
301
297
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
302
298
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
303
|
-
i0.ɵɵelementStart(0, "
|
|
304
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
305
|
-
i0.ɵɵlistener("
|
|
299
|
+
i0.ɵɵelementStart(0, "mj-switch", 74);
|
|
300
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_16_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const item_r12 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(item_r12.RealMap.SyncEnabled, $event) || (item_r12.RealMap.SyncEnabled = $event); return i0.ɵɵresetView($event); });
|
|
301
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_16_Template_mj_switch_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r13); const item_r12 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnToggleEntityMap(item_r12.RealMap)); });
|
|
306
302
|
i0.ɵɵelementEnd();
|
|
307
303
|
} if (rf & 2) {
|
|
308
304
|
const item_r12 = i0.ɵɵnextContext().$implicit;
|
|
309
305
|
i0.ɵɵtwoWayProperty("ngModel", item_r12.RealMap.SyncEnabled);
|
|
310
|
-
i0.ɵɵproperty("size", "small");
|
|
311
306
|
} }
|
|
312
307
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
313
308
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
314
|
-
i0.ɵɵelementStart(0, "div",
|
|
309
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
315
310
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Template_div_click_0_listener() { const item_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnMapSelect(item_r12)); });
|
|
316
|
-
i0.ɵɵelementStart(1, "div",
|
|
311
|
+
i0.ɵɵelementStart(1, "div", 61)(2, "span", 62);
|
|
317
312
|
i0.ɵɵtext(3);
|
|
318
313
|
i0.ɵɵelementEnd();
|
|
319
|
-
i0.ɵɵelementStart(4, "span",
|
|
320
|
-
i0.ɵɵelement(5, "i",
|
|
314
|
+
i0.ɵɵelementStart(4, "span", 63);
|
|
315
|
+
i0.ɵɵelement(5, "i", 64);
|
|
321
316
|
i0.ɵɵelementEnd();
|
|
322
|
-
i0.ɵɵelementStart(6, "span",
|
|
317
|
+
i0.ɵɵelementStart(6, "span", 65);
|
|
323
318
|
i0.ɵɵtext(7);
|
|
324
319
|
i0.ɵɵelementEnd()();
|
|
325
|
-
i0.ɵɵelementStart(8, "div",
|
|
320
|
+
i0.ɵɵelementStart(8, "div", 66)(9, "div", 67)(10, "span", 68);
|
|
326
321
|
i0.ɵɵtext(11);
|
|
327
322
|
i0.ɵɵelementEnd();
|
|
328
|
-
i0.ɵɵconditionalCreate(12, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_12_Template, 2, 0, "span",
|
|
323
|
+
i0.ɵɵconditionalCreate(12, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_12_Template, 2, 0, "span", 69);
|
|
329
324
|
i0.ɵɵelementEnd();
|
|
330
|
-
i0.ɵɵelementStart(13, "div",
|
|
325
|
+
i0.ɵɵelementStart(13, "div", 70)(14, "button", 71);
|
|
331
326
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Template_button_click_14_listener($event) { const item_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnDeleteMap(item_r12, $event)); });
|
|
332
|
-
i0.ɵɵelement(15, "i",
|
|
327
|
+
i0.ɵɵelement(15, "i", 72);
|
|
333
328
|
i0.ɵɵelementEnd();
|
|
334
|
-
i0.ɵɵconditionalCreate(16, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_16_Template, 1,
|
|
329
|
+
i0.ɵɵconditionalCreate(16, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Conditional_16_Template, 1, 1, "mj-switch", 73);
|
|
335
330
|
i0.ɵɵelementEnd()()();
|
|
336
331
|
} if (rf & 2) {
|
|
337
332
|
const item_r12 = ctx.$implicit;
|
|
@@ -350,7 +345,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_Fo
|
|
|
350
345
|
} }
|
|
351
346
|
function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
352
347
|
i0.ɵɵelementStart(0, "div", 24);
|
|
353
|
-
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Template, 17, 9, "div",
|
|
348
|
+
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_For_2_Template, 17, 9, "div", 59, _forTrack0);
|
|
354
349
|
i0.ɵɵelementEnd();
|
|
355
350
|
} if (rf & 2) {
|
|
356
351
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -367,14 +362,12 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Template(rf, ctx)
|
|
|
367
362
|
i0.ɵɵelement(5, "i", 21);
|
|
368
363
|
i0.ɵɵtext(6, " Add Map ");
|
|
369
364
|
i0.ɵɵelementEnd()()();
|
|
370
|
-
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Template, 34,
|
|
365
|
+
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Template, 34, 12, "div", 22);
|
|
371
366
|
i0.ɵɵconditionalCreate(8, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_8_Template, 2, 1, "div", 23);
|
|
372
367
|
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_9_Template, 4, 0, "p", 15)(10, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_10_Template, 2, 1, "p", 15)(11, MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_Template, 3, 0, "div", 24);
|
|
373
368
|
} if (rf & 2) {
|
|
374
369
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
375
|
-
i0.ɵɵadvance(
|
|
376
|
-
i0.ɵɵproperty("look", "flat")("size", "small");
|
|
377
|
-
i0.ɵɵadvance(3);
|
|
370
|
+
i0.ɵɵadvance(7);
|
|
378
371
|
i0.ɵɵconditional(ctx_r1.ShowAddPanel ? 7 : -1);
|
|
379
372
|
i0.ɵɵadvance();
|
|
380
373
|
i0.ɵɵconditional(ctx_r1.AllMaps.length > 0 ? 8 : -1);
|
|
@@ -383,55 +376,53 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Template(rf, ctx)
|
|
|
383
376
|
} }
|
|
384
377
|
function MappingWorkspaceComponent_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
385
378
|
i0.ɵɵelementStart(0, "div", 11);
|
|
386
|
-
i0.ɵɵelement(1, "i",
|
|
379
|
+
i0.ɵɵelement(1, "i", 75);
|
|
387
380
|
i0.ɵɵelementStart(2, "p");
|
|
388
381
|
i0.ɵɵtext(3, "Select an entity map from the left panel to view and edit field mappings.");
|
|
389
382
|
i0.ɵɵelementEnd()();
|
|
390
383
|
} }
|
|
391
384
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
392
|
-
i0.ɵɵelement(0, "i",
|
|
385
|
+
i0.ɵɵelement(0, "i", 56);
|
|
393
386
|
} }
|
|
394
387
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
395
388
|
i0.ɵɵtext(0, " 2 ");
|
|
396
389
|
} }
|
|
397
390
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
398
391
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
399
|
-
i0.ɵɵelementStart(0, "div",
|
|
392
|
+
i0.ɵɵelementStart(0, "div", 85)(1, "h4", 87);
|
|
400
393
|
i0.ɵɵelement(2, "i", 35);
|
|
401
394
|
i0.ɵɵtext(3, " Generated DDL ");
|
|
402
395
|
i0.ɵɵelementEnd();
|
|
403
|
-
i0.ɵɵelementStart(4, "pre",
|
|
396
|
+
i0.ɵɵelementStart(4, "pre", 88);
|
|
404
397
|
i0.ɵɵtext(5);
|
|
405
398
|
i0.ɵɵelementEnd();
|
|
406
|
-
i0.ɵɵelementStart(6, "div",
|
|
399
|
+
i0.ɵɵelementStart(6, "div", 89)(7, "button", 90);
|
|
407
400
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_35_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CopyDDLToClipboard(ctx_r1.SelectedPendingMap.DDLContent)); });
|
|
408
|
-
i0.ɵɵelement(8, "i",
|
|
401
|
+
i0.ɵɵelement(8, "i", 91);
|
|
409
402
|
i0.ɵɵtext(9, " Copy DDL ");
|
|
410
403
|
i0.ɵɵelementEnd()()();
|
|
411
404
|
} if (rf & 2) {
|
|
412
405
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
413
406
|
i0.ɵɵadvance(5);
|
|
414
407
|
i0.ɵɵtextInterpolate(ctx_r1.SelectedPendingMap.DDLContent);
|
|
415
|
-
i0.ɵɵadvance(2);
|
|
416
|
-
i0.ɵɵproperty("look", "outline")("size", "small");
|
|
417
408
|
} }
|
|
418
409
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
419
|
-
i0.ɵɵelement(0, "i",
|
|
410
|
+
i0.ɵɵelement(0, "i", 99);
|
|
420
411
|
} }
|
|
421
412
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
422
|
-
i0.ɵɵelementStart(0, "span",
|
|
413
|
+
i0.ɵɵelementStart(0, "span", 100);
|
|
423
414
|
i0.ɵɵtext(1, "*");
|
|
424
415
|
i0.ɵɵelementEnd();
|
|
425
416
|
} }
|
|
426
417
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
-
i0.ɵɵelementStart(0, "div",
|
|
418
|
+
i0.ɵɵelementStart(0, "div", 96)(1, "span", 97);
|
|
428
419
|
i0.ɵɵtext(2);
|
|
429
420
|
i0.ɵɵelementEnd();
|
|
430
|
-
i0.ɵɵelementStart(3, "span",
|
|
421
|
+
i0.ɵɵelementStart(3, "span", 98);
|
|
431
422
|
i0.ɵɵtext(4);
|
|
432
423
|
i0.ɵɵelementEnd();
|
|
433
|
-
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Conditional_5_Template, 1, 0, "i",
|
|
434
|
-
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Conditional_6_Template, 2, 0, "span",
|
|
424
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Conditional_5_Template, 1, 0, "i", 99);
|
|
425
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Conditional_6_Template, 2, 0, "span", 100);
|
|
435
426
|
i0.ɵɵelementEnd();
|
|
436
427
|
} if (rf & 2) {
|
|
437
428
|
const field_r15 = ctx.$implicit;
|
|
@@ -445,14 +436,14 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_F
|
|
|
445
436
|
i0.ɵɵconditional(field_r15.IsRequired ? 6 : -1);
|
|
446
437
|
} }
|
|
447
438
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
448
|
-
i0.ɵɵelementStart(0, "div",
|
|
449
|
-
i0.ɵɵelement(2, "i",
|
|
439
|
+
i0.ɵɵelementStart(0, "div", 86)(1, "h4", 92);
|
|
440
|
+
i0.ɵɵelement(2, "i", 93);
|
|
450
441
|
i0.ɵɵtext(3, " Source Fields ");
|
|
451
|
-
i0.ɵɵelementStart(4, "span",
|
|
442
|
+
i0.ɵɵelementStart(4, "span", 94);
|
|
452
443
|
i0.ɵɵtext(5);
|
|
453
444
|
i0.ɵɵelementEnd()();
|
|
454
|
-
i0.ɵɵelementStart(6, "div",
|
|
455
|
-
i0.ɵɵrepeaterCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Template, 7, 4, "div",
|
|
445
|
+
i0.ɵɵelementStart(6, "div", 95);
|
|
446
|
+
i0.ɵɵrepeaterCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_For_8_Template, 7, 4, "div", 96, _forTrack1);
|
|
456
447
|
i0.ɵɵelementEnd()();
|
|
457
448
|
} if (rf & 2) {
|
|
458
449
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -462,8 +453,8 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_T
|
|
|
462
453
|
i0.ɵɵrepeater(ctx_r1.SelectedPendingMap.SourceFields);
|
|
463
454
|
} }
|
|
464
455
|
function MappingWorkspaceComponent_Conditional_6_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
465
|
-
i0.ɵɵelementStart(0, "div", 12)(1, "div",
|
|
466
|
-
i0.ɵɵelement(2, "i",
|
|
456
|
+
i0.ɵɵelementStart(0, "div", 12)(1, "div", 76);
|
|
457
|
+
i0.ɵɵelement(2, "i", 77);
|
|
467
458
|
i0.ɵɵelementEnd();
|
|
468
459
|
i0.ɵɵelementStart(3, "h3");
|
|
469
460
|
i0.ɵɵtext(4);
|
|
@@ -475,35 +466,35 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Template(rf, ctx
|
|
|
475
466
|
i0.ɵɵelementEnd();
|
|
476
467
|
i0.ɵɵtext(9, " to be created. Run the DDL migration and CodeGen to activate this mapping. ");
|
|
477
468
|
i0.ɵɵelementEnd();
|
|
478
|
-
i0.ɵɵelementStart(10, "div",
|
|
479
|
-
i0.ɵɵelement(13, "i",
|
|
469
|
+
i0.ɵɵelementStart(10, "div", 78)(11, "div", 79)(12, "div", 80);
|
|
470
|
+
i0.ɵɵelement(13, "i", 56);
|
|
480
471
|
i0.ɵɵelementEnd();
|
|
481
|
-
i0.ɵɵelementStart(14, "span",
|
|
472
|
+
i0.ɵɵelementStart(14, "span", 81);
|
|
482
473
|
i0.ɵɵtext(15, "Map Created");
|
|
483
474
|
i0.ɵɵelementEnd()();
|
|
484
|
-
i0.ɵɵelement(16, "div",
|
|
485
|
-
i0.ɵɵelementStart(17, "div",
|
|
486
|
-
i0.ɵɵconditionalCreate(19, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_19_Template, 1, 0, "i",
|
|
475
|
+
i0.ɵɵelement(16, "div", 82);
|
|
476
|
+
i0.ɵɵelementStart(17, "div", 79)(18, "div", 83);
|
|
477
|
+
i0.ɵɵconditionalCreate(19, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_19_Template, 1, 0, "i", 56)(20, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_20_Template, 1, 0);
|
|
487
478
|
i0.ɵɵelementEnd();
|
|
488
|
-
i0.ɵɵelementStart(21, "span",
|
|
479
|
+
i0.ɵɵelementStart(21, "span", 81);
|
|
489
480
|
i0.ɵɵtext(22, "DDL Generated");
|
|
490
481
|
i0.ɵɵelementEnd()();
|
|
491
|
-
i0.ɵɵelement(23, "div",
|
|
492
|
-
i0.ɵɵelementStart(24, "div",
|
|
482
|
+
i0.ɵɵelement(23, "div", 82);
|
|
483
|
+
i0.ɵɵelementStart(24, "div", 79)(25, "div", 84);
|
|
493
484
|
i0.ɵɵtext(26, "3");
|
|
494
485
|
i0.ɵɵelementEnd();
|
|
495
|
-
i0.ɵɵelementStart(27, "span",
|
|
486
|
+
i0.ɵɵelementStart(27, "span", 81);
|
|
496
487
|
i0.ɵɵtext(28, "Deploy & CodeGen");
|
|
497
488
|
i0.ɵɵelementEnd()();
|
|
498
|
-
i0.ɵɵelement(29, "div",
|
|
499
|
-
i0.ɵɵelementStart(30, "div",
|
|
489
|
+
i0.ɵɵelement(29, "div", 82);
|
|
490
|
+
i0.ɵɵelementStart(30, "div", 79)(31, "div", 84);
|
|
500
491
|
i0.ɵɵtext(32, "4");
|
|
501
492
|
i0.ɵɵelementEnd();
|
|
502
|
-
i0.ɵɵelementStart(33, "span",
|
|
493
|
+
i0.ɵɵelementStart(33, "span", 81);
|
|
503
494
|
i0.ɵɵtext(34, "Ready to Sync");
|
|
504
495
|
i0.ɵɵelementEnd()()();
|
|
505
|
-
i0.ɵɵconditionalCreate(35, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_35_Template, 10,
|
|
506
|
-
i0.ɵɵconditionalCreate(36, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_Template, 9, 1, "div",
|
|
496
|
+
i0.ɵɵconditionalCreate(35, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_35_Template, 10, 1, "div", 85);
|
|
497
|
+
i0.ɵɵconditionalCreate(36, MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_Template, 9, 1, "div", 86);
|
|
507
498
|
i0.ɵɵelementEnd();
|
|
508
499
|
} if (rf & 2) {
|
|
509
500
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -527,14 +518,14 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_11_Template(rf, ctx
|
|
|
527
518
|
} }
|
|
528
519
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
529
520
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
530
|
-
i0.ɵɵelementStart(0, "div",
|
|
521
|
+
i0.ɵɵelementStart(0, "div", 101);
|
|
531
522
|
i0.ɵɵelement(1, "i", 36);
|
|
532
|
-
i0.ɵɵelementStart(2, "div",
|
|
523
|
+
i0.ɵɵelementStart(2, "div", 113)(3, "p")(4, "strong");
|
|
533
524
|
i0.ɵɵtext(5);
|
|
534
525
|
i0.ɵɵelementEnd();
|
|
535
526
|
i0.ɵɵtext(6, " by matching source and destination field names.");
|
|
536
527
|
i0.ɵɵelementEnd()();
|
|
537
|
-
i0.ɵɵelementStart(7, "button",
|
|
528
|
+
i0.ɵɵelementStart(7, "button", 114);
|
|
538
529
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.DismissAutoMapBanner()); });
|
|
539
530
|
i0.ɵɵelement(8, "i", 28);
|
|
540
531
|
i0.ɵɵelementEnd()();
|
|
@@ -542,8 +533,6 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Te
|
|
|
542
533
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
543
534
|
i0.ɵɵadvance(5);
|
|
544
535
|
i0.ɵɵtextInterpolate2("", ctx_r1.AutoMapCount, " field", ctx_r1.AutoMapCount !== 1 ? "s" : "", " auto-mapped");
|
|
545
|
-
i0.ɵɵadvance(2);
|
|
546
|
-
i0.ɵɵproperty("look", "flat")("size", "small");
|
|
547
536
|
} }
|
|
548
537
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
549
538
|
i0.ɵɵelementStart(0, "span");
|
|
@@ -555,9 +544,9 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_Fo
|
|
|
555
544
|
i0.ɵɵtextInterpolate(warning_r18);
|
|
556
545
|
} }
|
|
557
546
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
558
|
-
i0.ɵɵelementStart(0, "div",
|
|
547
|
+
i0.ɵɵelementStart(0, "div", 102);
|
|
559
548
|
i0.ɵɵelement(1, "i", 43);
|
|
560
|
-
i0.ɵɵelementStart(2, "div",
|
|
549
|
+
i0.ɵɵelementStart(2, "div", 115);
|
|
561
550
|
i0.ɵɵrepeaterCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_For_4_Template, 2, 1, "span", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
562
551
|
i0.ɵɵelementEnd()();
|
|
563
552
|
} if (rf & 2) {
|
|
@@ -570,21 +559,21 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_15_T
|
|
|
570
559
|
i0.ɵɵtext(1, " Saving... ");
|
|
571
560
|
} }
|
|
572
561
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
573
|
-
i0.ɵɵelement(0, "i",
|
|
562
|
+
i0.ɵɵelement(0, "i", 116);
|
|
574
563
|
i0.ɵɵtext(1, " Save ");
|
|
575
564
|
} }
|
|
576
565
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
577
566
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
578
567
|
i0.ɵɵelementStart(0, "p", 15);
|
|
579
568
|
i0.ɵɵtext(1, " No field mappings yet. ");
|
|
580
|
-
i0.ɵɵelementStart(2, "a",
|
|
569
|
+
i0.ɵɵelementStart(2, "a", 58);
|
|
581
570
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_17_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddFieldMapping()); });
|
|
582
571
|
i0.ɵɵtext(3, "Add one");
|
|
583
572
|
i0.ɵɵelementEnd()();
|
|
584
573
|
} }
|
|
585
574
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
586
575
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
587
|
-
i0.ɵɵelementStart(0, "input",
|
|
576
|
+
i0.ɵɵelementStart(0, "input", 136);
|
|
588
577
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_3_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const field_r22 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(field_r22.SourceFieldName, $event) || (field_r22.SourceFieldName = $event); return i0.ɵɵresetView($event); });
|
|
589
578
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_3_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r21); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFieldChanged(field_r22)); });
|
|
590
579
|
i0.ɵɵelementEnd();
|
|
@@ -593,7 +582,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
593
582
|
i0.ɵɵtwoWayProperty("ngModel", field_r22.SourceFieldName);
|
|
594
583
|
} }
|
|
595
584
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
596
|
-
i0.ɵɵelementStart(0, "span",
|
|
585
|
+
i0.ɵɵelementStart(0, "span", 139);
|
|
597
586
|
i0.ɵɵtext(1);
|
|
598
587
|
i0.ɵɵelementEnd();
|
|
599
588
|
} if (rf & 2) {
|
|
@@ -602,30 +591,30 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
602
591
|
i0.ɵɵtextInterpolate(field_r22.SourceFieldType);
|
|
603
592
|
} }
|
|
604
593
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
605
|
-
i0.ɵɵelementStart(0, "span",
|
|
606
|
-
i0.ɵɵelement(1, "i",
|
|
594
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
595
|
+
i0.ɵɵelement(1, "i", 131);
|
|
607
596
|
i0.ɵɵtext(2, " PK");
|
|
608
597
|
i0.ɵɵelementEnd();
|
|
609
598
|
} }
|
|
610
599
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
611
|
-
i0.ɵɵelementStart(0, "span",
|
|
600
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
612
601
|
i0.ɵɵtext(1, "REQ");
|
|
613
602
|
i0.ɵɵelementEnd();
|
|
614
603
|
} }
|
|
615
604
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
616
|
-
i0.ɵɵelementStart(0, "span",
|
|
605
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
617
606
|
i0.ɵɵtext(1, "RO");
|
|
618
607
|
i0.ɵɵelementEnd();
|
|
619
608
|
} }
|
|
620
609
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
621
|
-
i0.ɵɵelementStart(0, "div",
|
|
610
|
+
i0.ɵɵelementStart(0, "div", 137);
|
|
622
611
|
i0.ɵɵtext(1);
|
|
623
612
|
i0.ɵɵelementEnd();
|
|
624
|
-
i0.ɵɵelementStart(2, "div",
|
|
625
|
-
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_3_Template, 2, 1, "span",
|
|
626
|
-
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_4_Template, 3, 0, "span",
|
|
627
|
-
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_5_Template, 2, 0, "span",
|
|
628
|
-
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_6_Template, 2, 0, "span",
|
|
613
|
+
i0.ɵɵelementStart(2, "div", 138);
|
|
614
|
+
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_3_Template, 2, 1, "span", 139);
|
|
615
|
+
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_4_Template, 3, 0, "span", 140);
|
|
616
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_5_Template, 2, 0, "span", 141);
|
|
617
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_6_Template, 2, 0, "span", 142);
|
|
629
618
|
i0.ɵɵelementEnd();
|
|
630
619
|
} if (rf & 2) {
|
|
631
620
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -642,13 +631,13 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
642
631
|
} }
|
|
643
632
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
644
633
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
645
|
-
i0.ɵɵelementStart(0, "button",
|
|
634
|
+
i0.ɵɵelementStart(0, "button", 143);
|
|
646
635
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleTransformEditor(field_r22)); });
|
|
647
636
|
i0.ɵɵelement(1, "i");
|
|
648
637
|
i0.ɵɵelementStart(2, "span");
|
|
649
638
|
i0.ɵɵtext(3);
|
|
650
639
|
i0.ɵɵelementEnd();
|
|
651
|
-
i0.ɵɵelementStart(4, "span",
|
|
640
|
+
i0.ɵɵelementStart(4, "span", 144);
|
|
652
641
|
i0.ɵɵtext(5);
|
|
653
642
|
i0.ɵɵelementEnd()();
|
|
654
643
|
} if (rf & 2) {
|
|
@@ -664,9 +653,9 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
664
653
|
} }
|
|
665
654
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
666
655
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
667
|
-
i0.ɵɵelementStart(0, "button",
|
|
656
|
+
i0.ɵɵelementStart(0, "button", 145);
|
|
668
657
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleTransformEditor(field_r22)); });
|
|
669
|
-
i0.ɵɵelement(1, "i",
|
|
658
|
+
i0.ɵɵelement(1, "i", 64);
|
|
670
659
|
i0.ɵɵelementStart(2, "span");
|
|
671
660
|
i0.ɵɵtext(3);
|
|
672
661
|
i0.ɵɵelementEnd()();
|
|
@@ -677,7 +666,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
677
666
|
i0.ɵɵtextInterpolate(field_r22.TransformPipeline.length > 0 ? ctx_r1.GetTransformLabel(field_r22.TransformPipeline[0].Type) : "Direct");
|
|
678
667
|
} }
|
|
679
668
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
680
|
-
i0.ɵɵelementStart(0, "option",
|
|
669
|
+
i0.ɵɵelementStart(0, "option", 148);
|
|
681
670
|
i0.ɵɵtext(1);
|
|
682
671
|
i0.ɵɵelementEnd();
|
|
683
672
|
} if (rf & 2) {
|
|
@@ -688,13 +677,13 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
688
677
|
} }
|
|
689
678
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
690
679
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
691
|
-
i0.ɵɵelementStart(0, "select",
|
|
680
|
+
i0.ɵɵelementStart(0, "select", 146);
|
|
692
681
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const field_r22 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(field_r22.DestinationFieldName, $event) || (field_r22.DestinationFieldName = $event); return i0.ɵɵresetView($event); });
|
|
693
682
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_Template_select_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r25); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFieldChanged(field_r22)); });
|
|
694
|
-
i0.ɵɵelementStart(1, "option",
|
|
683
|
+
i0.ɵɵelementStart(1, "option", 147);
|
|
695
684
|
i0.ɵɵtext(2, "-- Select destination --");
|
|
696
685
|
i0.ɵɵelementEnd();
|
|
697
|
-
i0.ɵɵrepeaterCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_For_4_Template, 2, 2, "option",
|
|
686
|
+
i0.ɵɵrepeaterCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_For_4_Template, 2, 2, "option", 148, _forTrack0);
|
|
698
687
|
i0.ɵɵelementEnd();
|
|
699
688
|
} if (rf & 2) {
|
|
700
689
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -705,7 +694,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
705
694
|
} }
|
|
706
695
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
707
696
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
708
|
-
i0.ɵɵelementStart(0, "input",
|
|
697
|
+
i0.ɵɵelementStart(0, "input", 149);
|
|
709
698
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_10_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r27); const field_r22 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(field_r22.DestinationFieldName, $event) || (field_r22.DestinationFieldName = $event); return i0.ɵɵresetView($event); });
|
|
710
699
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_10_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r27); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFieldChanged(field_r22)); });
|
|
711
700
|
i0.ɵɵelementEnd();
|
|
@@ -714,7 +703,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
714
703
|
i0.ɵɵtwoWayProperty("ngModel", field_r22.DestinationFieldName);
|
|
715
704
|
} }
|
|
716
705
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
717
|
-
i0.ɵɵelementStart(0, "option",
|
|
706
|
+
i0.ɵɵelementStart(0, "option", 148);
|
|
718
707
|
i0.ɵɵtext(1);
|
|
719
708
|
i0.ɵɵelementEnd();
|
|
720
709
|
} if (rf & 2) {
|
|
@@ -725,10 +714,10 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
725
714
|
} }
|
|
726
715
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_17_Template(rf, ctx) { if (rf & 1) {
|
|
727
716
|
const _r34 = i0.ɵɵgetCurrentView();
|
|
728
|
-
i0.ɵɵelementStart(0, "div",
|
|
717
|
+
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
729
718
|
i0.ɵɵtext(2, "Default value (when source is null)");
|
|
730
719
|
i0.ɵɵelementEnd();
|
|
731
|
-
i0.ɵɵelementStart(3, "input",
|
|
720
|
+
i0.ɵɵelementStart(3, "input", 166);
|
|
732
721
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_17_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r34); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["DefaultValue"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
733
722
|
i0.ɵɵelementEnd()();
|
|
734
723
|
} if (rf & 2) {
|
|
@@ -738,22 +727,22 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
738
727
|
} }
|
|
739
728
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template(rf, ctx) { if (rf & 1) {
|
|
740
729
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
741
|
-
i0.ɵɵelementStart(0, "div",
|
|
730
|
+
i0.ɵɵelementStart(0, "div", 164)(1, "div", 163)(2, "label");
|
|
742
731
|
i0.ɵɵtext(3, "Pattern");
|
|
743
732
|
i0.ɵɵelementEnd();
|
|
744
|
-
i0.ɵɵelementStart(4, "input",
|
|
733
|
+
i0.ɵɵelementStart(4, "input", 167);
|
|
745
734
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r35); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Pattern"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
746
735
|
i0.ɵɵelementEnd()();
|
|
747
|
-
i0.ɵɵelementStart(5, "div",
|
|
736
|
+
i0.ɵɵelementStart(5, "div", 163)(6, "label");
|
|
748
737
|
i0.ɵɵtext(7, "Replacement");
|
|
749
738
|
i0.ɵɵelementEnd();
|
|
750
|
-
i0.ɵɵelementStart(8, "input",
|
|
739
|
+
i0.ɵɵelementStart(8, "input", 168);
|
|
751
740
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r35); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Replacement"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
752
741
|
i0.ɵɵelementEnd()();
|
|
753
|
-
i0.ɵɵelementStart(9, "div",
|
|
742
|
+
i0.ɵɵelementStart(9, "div", 165)(10, "label");
|
|
754
743
|
i0.ɵɵtext(11, "Flags");
|
|
755
744
|
i0.ɵɵelementEnd();
|
|
756
|
-
i0.ɵɵelementStart(12, "input",
|
|
745
|
+
i0.ɵɵelementStart(12, "input", 169);
|
|
757
746
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template_input_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r35); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Flags"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
758
747
|
i0.ɵɵelementEnd()()();
|
|
759
748
|
} if (rf & 2) {
|
|
@@ -767,16 +756,16 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
767
756
|
} }
|
|
768
757
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_19_Template(rf, ctx) { if (rf & 1) {
|
|
769
758
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
770
|
-
i0.ɵɵelementStart(0, "div",
|
|
759
|
+
i0.ɵɵelementStart(0, "div", 164)(1, "div", 163)(2, "label");
|
|
771
760
|
i0.ɵɵtext(3, "Delimiter");
|
|
772
761
|
i0.ɵɵelementEnd();
|
|
773
|
-
i0.ɵɵelementStart(4, "input",
|
|
762
|
+
i0.ɵɵelementStart(4, "input", 170);
|
|
774
763
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_19_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r36); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Delimiter"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
775
764
|
i0.ɵɵelementEnd()();
|
|
776
|
-
i0.ɵɵelementStart(5, "div",
|
|
765
|
+
i0.ɵɵelementStart(5, "div", 165)(6, "label");
|
|
777
766
|
i0.ɵɵtext(7, "Part index (0-based)");
|
|
778
767
|
i0.ɵɵelementEnd();
|
|
779
|
-
i0.ɵɵelementStart(8, "input",
|
|
768
|
+
i0.ɵɵelementStart(8, "input", 171);
|
|
780
769
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_19_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r36); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Index"] = +$event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
781
770
|
i0.ɵɵelementEnd()()();
|
|
782
771
|
} if (rf & 2) {
|
|
@@ -788,7 +777,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
788
777
|
} }
|
|
789
778
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
790
779
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
791
|
-
i0.ɵɵelementStart(0, "button",
|
|
780
|
+
i0.ɵɵelementStart(0, "button", 175);
|
|
792
781
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_For_5_Template_button_click_0_listener() { const sf_r39 = i0.ɵɵrestoreView(_r38).$implicit; const step_r31 = i0.ɵɵnextContext(2).$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.ToggleCombineField(step_r31.Config, sf_r39); return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
793
782
|
i0.ɵɵtext(1);
|
|
794
783
|
i0.ɵɵelementEnd();
|
|
@@ -802,16 +791,16 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
802
791
|
} }
|
|
803
792
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_Template(rf, ctx) { if (rf & 1) {
|
|
804
793
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
805
|
-
i0.ɵɵelementStart(0, "div",
|
|
794
|
+
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
806
795
|
i0.ɵɵtext(2, "Source fields to combine");
|
|
807
796
|
i0.ɵɵelementEnd();
|
|
808
|
-
i0.ɵɵelementStart(3, "div",
|
|
809
|
-
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_For_5_Template, 2, 3, "button",
|
|
797
|
+
i0.ɵɵelementStart(3, "div", 172);
|
|
798
|
+
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_For_5_Template, 2, 3, "button", 173, i0.ɵɵrepeaterTrackByIdentity);
|
|
810
799
|
i0.ɵɵelementEnd()();
|
|
811
|
-
i0.ɵɵelementStart(6, "div",
|
|
800
|
+
i0.ɵɵelementStart(6, "div", 165)(7, "label");
|
|
812
801
|
i0.ɵɵtext(8, "Separator");
|
|
813
802
|
i0.ɵɵelementEnd();
|
|
814
|
-
i0.ɵɵelementStart(9, "input",
|
|
803
|
+
i0.ɵɵelementStart(9, "input", 174);
|
|
815
804
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r37); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Separator"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
816
805
|
i0.ɵɵelementEnd()();
|
|
817
806
|
} if (rf & 2) {
|
|
@@ -824,14 +813,14 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
824
813
|
} }
|
|
825
814
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
826
815
|
const _r41 = i0.ɵɵgetCurrentView();
|
|
827
|
-
i0.ɵɵelementStart(0, "div",
|
|
816
|
+
i0.ɵɵelementStart(0, "div", 177)(1, "input", 180);
|
|
828
817
|
i0.ɵɵlistener("change", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template_input_change_1_listener($event) { const entry_r42 = i0.ɵɵrestoreView(_r41).$implicit; const step_r31 = i0.ɵɵnextContext(2).$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.UpdateLookupEntry(step_r31.Config, entry_r42.key, $event.target.value, entry_r42.value); return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
829
818
|
i0.ɵɵelementEnd();
|
|
830
|
-
i0.ɵɵelement(2, "i",
|
|
831
|
-
i0.ɵɵelementStart(3, "input",
|
|
819
|
+
i0.ɵɵelement(2, "i", 181);
|
|
820
|
+
i0.ɵɵelementStart(3, "input", 182);
|
|
832
821
|
i0.ɵɵlistener("change", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template_input_change_3_listener($event) { const entry_r42 = i0.ɵɵrestoreView(_r41).$implicit; const step_r31 = i0.ɵɵnextContext(2).$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.UpdateLookupEntry(step_r31.Config, entry_r42.key, entry_r42.key, $event.target.value); return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
833
822
|
i0.ɵɵelementEnd();
|
|
834
|
-
i0.ɵɵelementStart(4, "button",
|
|
823
|
+
i0.ɵɵelementStart(4, "button", 183);
|
|
835
824
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template_button_click_4_listener() { const entry_r42 = i0.ɵɵrestoreView(_r41).$implicit; const step_r31 = i0.ɵɵnextContext(2).$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.RemoveLookupEntry(step_r31.Config, entry_r42.key); return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
836
825
|
i0.ɵɵelement(5, "i", 28);
|
|
837
826
|
i0.ɵɵelementEnd()();
|
|
@@ -844,20 +833,20 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
844
833
|
} }
|
|
845
834
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_Template(rf, ctx) { if (rf & 1) {
|
|
846
835
|
const _r40 = i0.ɵɵgetCurrentView();
|
|
847
|
-
i0.ɵɵelementStart(0, "div",
|
|
836
|
+
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
848
837
|
i0.ɵɵtext(2, "Value mapping");
|
|
849
838
|
i0.ɵɵelementEnd();
|
|
850
|
-
i0.ɵɵelementStart(3, "div",
|
|
851
|
-
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template, 6, 2, "div",
|
|
852
|
-
i0.ɵɵelementStart(6, "button",
|
|
839
|
+
i0.ɵɵelementStart(3, "div", 176);
|
|
840
|
+
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template, 6, 2, "div", 177, i0.ɵɵrepeaterTrackByIndex);
|
|
841
|
+
i0.ɵɵelementStart(6, "button", 178);
|
|
853
842
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r40); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.AddLookupEntry(step_r31.Config); return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
854
843
|
i0.ɵɵelement(7, "i", 21);
|
|
855
844
|
i0.ɵɵtext(8, " Add mapping ");
|
|
856
845
|
i0.ɵɵelementEnd()()();
|
|
857
|
-
i0.ɵɵelementStart(9, "div",
|
|
846
|
+
i0.ɵɵelementStart(9, "div", 165)(10, "label");
|
|
858
847
|
i0.ɵɵtext(11, "Default (when no match)");
|
|
859
848
|
i0.ɵɵelementEnd();
|
|
860
|
-
i0.ɵɵelementStart(12, "input",
|
|
849
|
+
i0.ɵɵelementStart(12, "input", 179);
|
|
861
850
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_Template_input_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r40); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Default"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
862
851
|
i0.ɵɵelementEnd()();
|
|
863
852
|
} if (rf & 2) {
|
|
@@ -870,24 +859,24 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
870
859
|
} }
|
|
871
860
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_22_Template(rf, ctx) { if (rf & 1) {
|
|
872
861
|
const _r43 = i0.ɵɵgetCurrentView();
|
|
873
|
-
i0.ɵɵelementStart(0, "div",
|
|
862
|
+
i0.ɵɵelementStart(0, "div", 164)(1, "div", 165)(2, "label");
|
|
874
863
|
i0.ɵɵtext(3, "Format type");
|
|
875
864
|
i0.ɵɵelementEnd();
|
|
876
|
-
i0.ɵɵelementStart(4, "select",
|
|
865
|
+
i0.ɵɵelementStart(4, "select", 146);
|
|
877
866
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_22_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r43); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["FormatType"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
878
|
-
i0.ɵɵelementStart(5, "option",
|
|
867
|
+
i0.ɵɵelementStart(5, "option", 184);
|
|
879
868
|
i0.ɵɵtext(6, "Date");
|
|
880
869
|
i0.ɵɵelementEnd();
|
|
881
|
-
i0.ɵɵelementStart(7, "option",
|
|
870
|
+
i0.ɵɵelementStart(7, "option", 185);
|
|
882
871
|
i0.ɵɵtext(8, "Number");
|
|
883
872
|
i0.ɵɵelementEnd();
|
|
884
|
-
i0.ɵɵelementStart(9, "option",
|
|
873
|
+
i0.ɵɵelementStart(9, "option", 186);
|
|
885
874
|
i0.ɵɵtext(10, "String");
|
|
886
875
|
i0.ɵɵelementEnd()()();
|
|
887
|
-
i0.ɵɵelementStart(11, "div",
|
|
876
|
+
i0.ɵɵelementStart(11, "div", 163)(12, "label");
|
|
888
877
|
i0.ɵɵtext(13, "Format string");
|
|
889
878
|
i0.ɵɵelementEnd();
|
|
890
|
-
i0.ɵɵelementStart(14, "input",
|
|
879
|
+
i0.ɵɵelementStart(14, "input", 187);
|
|
891
880
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_22_Template_input_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r43); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["FormatString"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
892
881
|
i0.ɵɵelementEnd()()();
|
|
893
882
|
} if (rf & 2) {
|
|
@@ -899,21 +888,21 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
899
888
|
} }
|
|
900
889
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_23_Template(rf, ctx) { if (rf & 1) {
|
|
901
890
|
const _r44 = i0.ɵɵgetCurrentView();
|
|
902
|
-
i0.ɵɵelementStart(0, "div",
|
|
891
|
+
i0.ɵɵelementStart(0, "div", 165)(1, "label");
|
|
903
892
|
i0.ɵɵtext(2, "Target type");
|
|
904
893
|
i0.ɵɵelementEnd();
|
|
905
|
-
i0.ɵɵelementStart(3, "select",
|
|
894
|
+
i0.ɵɵelementStart(3, "select", 146);
|
|
906
895
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_23_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r44); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["TargetType"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
907
|
-
i0.ɵɵelementStart(4, "option",
|
|
896
|
+
i0.ɵɵelementStart(4, "option", 186);
|
|
908
897
|
i0.ɵɵtext(5, "String");
|
|
909
898
|
i0.ɵɵelementEnd();
|
|
910
|
-
i0.ɵɵelementStart(6, "option",
|
|
899
|
+
i0.ɵɵelementStart(6, "option", 185);
|
|
911
900
|
i0.ɵɵtext(7, "Number");
|
|
912
901
|
i0.ɵɵelementEnd();
|
|
913
|
-
i0.ɵɵelementStart(8, "option",
|
|
902
|
+
i0.ɵɵelementStart(8, "option", 188);
|
|
914
903
|
i0.ɵɵtext(9, "Boolean");
|
|
915
904
|
i0.ɵɵelementEnd();
|
|
916
|
-
i0.ɵɵelementStart(10, "option",
|
|
905
|
+
i0.ɵɵelementStart(10, "option", 184);
|
|
917
906
|
i0.ɵɵtext(11, "Date");
|
|
918
907
|
i0.ɵɵelementEnd()()();
|
|
919
908
|
} if (rf & 2) {
|
|
@@ -923,16 +912,16 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
923
912
|
} }
|
|
924
913
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_24_Template(rf, ctx) { if (rf & 1) {
|
|
925
914
|
const _r45 = i0.ɵɵgetCurrentView();
|
|
926
|
-
i0.ɵɵelementStart(0, "div",
|
|
915
|
+
i0.ɵɵelementStart(0, "div", 164)(1, "div", 165)(2, "label");
|
|
927
916
|
i0.ɵɵtext(3, "Start index");
|
|
928
917
|
i0.ɵɵelementEnd();
|
|
929
|
-
i0.ɵɵelementStart(4, "input",
|
|
918
|
+
i0.ɵɵelementStart(4, "input", 171);
|
|
930
919
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_24_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r45); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Start"] = +$event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
931
920
|
i0.ɵɵelementEnd()();
|
|
932
|
-
i0.ɵɵelementStart(5, "div",
|
|
921
|
+
i0.ɵɵelementStart(5, "div", 165)(6, "label");
|
|
933
922
|
i0.ɵɵtext(7, "Length (blank = to end)");
|
|
934
923
|
i0.ɵɵelementEnd();
|
|
935
|
-
i0.ɵɵelementStart(8, "input",
|
|
924
|
+
i0.ɵɵelementStart(8, "input", 189);
|
|
936
925
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_24_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r45); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Length"] = $event ? +$event : undefined; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
937
926
|
i0.ɵɵelementEnd()()();
|
|
938
927
|
} if (rf & 2) {
|
|
@@ -944,9 +933,9 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
944
933
|
} }
|
|
945
934
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_25_Template(rf, ctx) { if (rf & 1) {
|
|
946
935
|
const _r46 = i0.ɵɵgetCurrentView();
|
|
947
|
-
i0.ɵɵelementStart(0, "div",
|
|
936
|
+
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
948
937
|
i0.ɵɵtext(2, "JavaScript expression ");
|
|
949
|
-
i0.ɵɵelementStart(3, "span",
|
|
938
|
+
i0.ɵɵelementStart(3, "span", 190);
|
|
950
939
|
i0.ɵɵtext(4, "(use ");
|
|
951
940
|
i0.ɵɵelementStart(5, "code");
|
|
952
941
|
i0.ɵɵtext(6, "value");
|
|
@@ -957,7 +946,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
957
946
|
i0.ɵɵelementEnd();
|
|
958
947
|
i0.ɵɵtext(10, ")");
|
|
959
948
|
i0.ɵɵelementEnd()();
|
|
960
|
-
i0.ɵɵelementStart(11, "textarea",
|
|
949
|
+
i0.ɵɵelementStart(11, "textarea", 191);
|
|
961
950
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_25_Template_textarea_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r46); const step_r31 = i0.ɵɵnextContext().$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); step_r31.Config["Expression"] = $event; return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
962
951
|
i0.ɵɵelementEnd()();
|
|
963
952
|
} if (rf & 2) {
|
|
@@ -967,31 +956,31 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
967
956
|
} }
|
|
968
957
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
969
958
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
970
|
-
i0.ɵɵelementStart(0, "div",
|
|
959
|
+
i0.ɵɵelementStart(0, "div", 153)(1, "div", 154)(2, "span", 155);
|
|
971
960
|
i0.ɵɵtext(3);
|
|
972
961
|
i0.ɵɵelementEnd();
|
|
973
|
-
i0.ɵɵelementStart(4, "select",
|
|
962
|
+
i0.ɵɵelementStart(4, "select", 156);
|
|
974
963
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template_select_ngModelChange_4_listener($event) { const step_r31 = i0.ɵɵrestoreView(_r30).$implicit; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnTransformTypeChange(field_r22, step_r31, $event)); });
|
|
975
|
-
i0.ɵɵrepeaterCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_For_6_Template, 2, 2, "option",
|
|
964
|
+
i0.ɵɵrepeaterCreate(5, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_For_6_Template, 2, 2, "option", 148, _forTrack2);
|
|
976
965
|
i0.ɵɵelementEnd();
|
|
977
|
-
i0.ɵɵelementStart(7, "select",
|
|
966
|
+
i0.ɵɵelementStart(7, "select", 157);
|
|
978
967
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template_select_ngModelChange_7_listener($event) { const step_r31 = i0.ɵɵrestoreView(_r30).$implicit; i0.ɵɵtwoWayBindingSet(step_r31.OnError, $event) || (step_r31.OnError = $event); return i0.ɵɵresetView($event); });
|
|
979
968
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template_select_ngModelChange_7_listener() { i0.ɵɵrestoreView(_r30); const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnTransformConfigChange(field_r22)); });
|
|
980
|
-
i0.ɵɵelementStart(8, "option",
|
|
969
|
+
i0.ɵɵelementStart(8, "option", 158);
|
|
981
970
|
i0.ɵɵtext(9, "Fail");
|
|
982
971
|
i0.ɵɵelementEnd();
|
|
983
|
-
i0.ɵɵelementStart(10, "option",
|
|
972
|
+
i0.ɵɵelementStart(10, "option", 159);
|
|
984
973
|
i0.ɵɵtext(11, "Skip row");
|
|
985
974
|
i0.ɵɵelementEnd();
|
|
986
|
-
i0.ɵɵelementStart(12, "option",
|
|
975
|
+
i0.ɵɵelementStart(12, "option", 160);
|
|
987
976
|
i0.ɵɵtext(13, "Set null");
|
|
988
977
|
i0.ɵɵelementEnd()();
|
|
989
|
-
i0.ɵɵelementStart(14, "button",
|
|
978
|
+
i0.ɵɵelementStart(14, "button", 161);
|
|
990
979
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template_button_click_14_listener() { const ɵ$index_534_r33 = i0.ɵɵrestoreView(_r30).$index; const field_r22 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RemoveTransformStep(field_r22, ɵ$index_534_r33)); });
|
|
991
|
-
i0.ɵɵelement(15, "i",
|
|
980
|
+
i0.ɵɵelement(15, "i", 72);
|
|
992
981
|
i0.ɵɵelementEnd()();
|
|
993
|
-
i0.ɵɵelementStart(16, "div",
|
|
994
|
-
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_17_Template, 4, 1, "div",
|
|
982
|
+
i0.ɵɵelementStart(16, "div", 162);
|
|
983
|
+
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_17_Template, 4, 1, "div", 163)(18, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template, 13, 3, "div", 164)(19, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_19_Template, 9, 2, "div", 164)(20, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_Template, 10, 1)(21, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_Template, 13, 1)(22, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_22_Template, 15, 2, "div", 164)(23, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_23_Template, 12, 1, "div", 165)(24, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_24_Template, 9, 2, "div", 164)(25, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_25_Template, 12, 1, "div", 163);
|
|
995
984
|
i0.ɵɵelementEnd()();
|
|
996
985
|
} if (rf & 2) {
|
|
997
986
|
let tmp_30_0;
|
|
@@ -1011,16 +1000,16 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
1011
1000
|
} }
|
|
1012
1001
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
1013
1002
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1014
|
-
i0.ɵɵelementStart(0, "div",
|
|
1003
|
+
i0.ɵɵelementStart(0, "div", 135)(1, "div", 150)(2, "span", 151);
|
|
1015
1004
|
i0.ɵɵelement(3, "i", 36);
|
|
1016
1005
|
i0.ɵɵtext(4, " Transform Pipeline");
|
|
1017
1006
|
i0.ɵɵelementEnd();
|
|
1018
|
-
i0.ɵɵelementStart(5, "button",
|
|
1007
|
+
i0.ɵɵelementStart(5, "button", 152);
|
|
1019
1008
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r29); const field_r22 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.AddTransformStep(field_r22)); });
|
|
1020
1009
|
i0.ɵɵelement(6, "i", 21);
|
|
1021
1010
|
i0.ɵɵtext(7, " Add Step ");
|
|
1022
1011
|
i0.ɵɵelementEnd()();
|
|
1023
|
-
i0.ɵɵrepeaterCreate(8, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template, 26, 4, "div",
|
|
1012
|
+
i0.ɵɵrepeaterCreate(8, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template, 26, 4, "div", 153, i0.ɵɵrepeaterTrackByIndex);
|
|
1024
1013
|
i0.ɵɵelementEnd();
|
|
1025
1014
|
} if (rf & 2) {
|
|
1026
1015
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1029,33 +1018,33 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
1029
1018
|
} }
|
|
1030
1019
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1031
1020
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
1032
|
-
i0.ɵɵelementStart(0, "div",
|
|
1033
|
-
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_3_Template, 1, 1, "input",
|
|
1021
|
+
i0.ɵɵelementStart(0, "div", 118)(1, "div", 119)(2, "div", 120);
|
|
1022
|
+
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_3_Template, 1, 1, "input", 121)(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_4_Template, 7, 5);
|
|
1034
1023
|
i0.ɵɵelementEnd();
|
|
1035
|
-
i0.ɵɵelementStart(5, "div",
|
|
1036
|
-
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_6_Template, 6, 5, "button",
|
|
1024
|
+
i0.ɵɵelementStart(5, "div", 122);
|
|
1025
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_6_Template, 6, 5, "button", 123)(7, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_7_Template, 4, 1, "button", 124);
|
|
1037
1026
|
i0.ɵɵelementEnd();
|
|
1038
|
-
i0.ɵɵelementStart(8, "div",
|
|
1039
|
-
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_Template, 5, 1, "select",
|
|
1027
|
+
i0.ɵɵelementStart(8, "div", 125);
|
|
1028
|
+
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_9_Template, 5, 1, "select", 126)(10, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_10_Template, 1, 1, "input", 127);
|
|
1040
1029
|
i0.ɵɵelementEnd();
|
|
1041
|
-
i0.ɵɵelementStart(11, "div",
|
|
1030
|
+
i0.ɵɵelementStart(11, "div", 128)(12, "label", 129)(13, "input", 130);
|
|
1042
1031
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template_input_ngModelChange_13_listener($event) { const field_r22 = i0.ɵɵrestoreView(_r20).$implicit; i0.ɵɵtwoWayBindingSet(field_r22.IsKeyField, $event) || (field_r22.IsKeyField = $event); return i0.ɵɵresetView($event); });
|
|
1043
1032
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template_input_ngModelChange_13_listener() { const field_r22 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFieldChanged(field_r22)); });
|
|
1044
1033
|
i0.ɵɵelementEnd();
|
|
1045
|
-
i0.ɵɵelement(14, "i",
|
|
1034
|
+
i0.ɵɵelement(14, "i", 131);
|
|
1046
1035
|
i0.ɵɵelementEnd();
|
|
1047
|
-
i0.ɵɵelementStart(15, "label",
|
|
1036
|
+
i0.ɵɵelementStart(15, "label", 132)(16, "input", 130);
|
|
1048
1037
|
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template_input_ngModelChange_16_listener($event) { const field_r22 = i0.ɵɵrestoreView(_r20).$implicit; i0.ɵɵtwoWayBindingSet(field_r22.IsRequired, $event) || (field_r22.IsRequired = $event); return i0.ɵɵresetView($event); });
|
|
1049
1038
|
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template_input_ngModelChange_16_listener() { const field_r22 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFieldChanged(field_r22)); });
|
|
1050
1039
|
i0.ɵɵelementEnd();
|
|
1051
|
-
i0.ɵɵelementStart(17, "span",
|
|
1040
|
+
i0.ɵɵelementStart(17, "span", 133);
|
|
1052
1041
|
i0.ɵɵtext(18, "*");
|
|
1053
1042
|
i0.ɵɵelementEnd()()();
|
|
1054
|
-
i0.ɵɵelementStart(19, "button",
|
|
1043
|
+
i0.ɵɵelementStart(19, "button", 134);
|
|
1055
1044
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template_button_click_19_listener() { const ɵ$index_430_r28 = i0.ɵɵrestoreView(_r20).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RemoveFieldMapping(ɵ$index_430_r28)); });
|
|
1056
1045
|
i0.ɵɵelement(20, "i", 28);
|
|
1057
1046
|
i0.ɵɵelementEnd()();
|
|
1058
|
-
i0.ɵɵconditionalCreate(21, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_Template, 10, 0, "div",
|
|
1047
|
+
i0.ɵɵconditionalCreate(21, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Conditional_21_Template, 10, 0, "div", 135);
|
|
1059
1048
|
i0.ɵɵelementEnd();
|
|
1060
1049
|
} if (rf & 2) {
|
|
1061
1050
|
const field_r22 = ctx.$implicit;
|
|
@@ -1075,8 +1064,8 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
1075
1064
|
i0.ɵɵconditional(field_r22.ShowTransformEditor && field_r22.TransformPipeline.length > 0 ? 21 : -1);
|
|
1076
1065
|
} }
|
|
1077
1066
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1078
|
-
i0.ɵɵelementStart(0, "div",
|
|
1079
|
-
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template, 22, 10, "div",
|
|
1067
|
+
i0.ɵɵelementStart(0, "div", 108);
|
|
1068
|
+
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_For_2_Template, 22, 10, "div", 117, i0.ɵɵrepeaterTrackByIdentity);
|
|
1080
1069
|
i0.ɵɵelementEnd();
|
|
1081
1070
|
} if (rf & 2) {
|
|
1082
1071
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1084,7 +1073,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_T
|
|
|
1084
1073
|
i0.ɵɵrepeater(ctx_r1.ActiveEditableFields);
|
|
1085
1074
|
} }
|
|
1086
1075
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1087
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
1076
|
+
i0.ɵɵelement(0, "mj-loading", 194);
|
|
1088
1077
|
} }
|
|
1089
1078
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1090
1079
|
i0.ɵɵelementStart(0, "p", 15);
|
|
@@ -1121,7 +1110,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_C
|
|
|
1121
1110
|
i0.ɵɵrepeater(ctx_r1.GetPreviewColumns(ctx_r1.SourcePreviewData));
|
|
1122
1111
|
} }
|
|
1123
1112
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1124
|
-
i0.ɵɵelementStart(0, "div",
|
|
1113
|
+
i0.ɵɵelementStart(0, "div", 195)(1, "table", 196)(2, "thead")(3, "tr");
|
|
1125
1114
|
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_9_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
1126
1115
|
i0.ɵɵelementEnd()();
|
|
1127
1116
|
i0.ɵɵelementStart(6, "tbody");
|
|
@@ -1136,15 +1125,15 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_C
|
|
|
1136
1125
|
} }
|
|
1137
1126
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
1138
1127
|
const _r47 = i0.ɵɵgetCurrentView();
|
|
1139
|
-
i0.ɵɵelementStart(0, "div",
|
|
1140
|
-
i0.ɵɵelement(3, "i",
|
|
1128
|
+
i0.ɵɵelementStart(0, "div", 112)(1, "div", 192)(2, "h4");
|
|
1129
|
+
i0.ɵɵelement(3, "i", 193);
|
|
1141
1130
|
i0.ɵɵtext(4, " Source Data Preview");
|
|
1142
1131
|
i0.ɵɵelementEnd();
|
|
1143
1132
|
i0.ɵɵelementStart(5, "button", 27);
|
|
1144
1133
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseSourcePreview()); });
|
|
1145
1134
|
i0.ɵɵelement(6, "i", 28);
|
|
1146
1135
|
i0.ɵɵelementEnd()();
|
|
1147
|
-
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_7_Template, 1, 0, "mj-loading",
|
|
1136
|
+
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_7_Template, 1, 0, "mj-loading", 194)(8, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_8_Template, 2, 0, "p", 15)(9, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Conditional_9_Template, 9, 0, "div", 195);
|
|
1148
1137
|
i0.ɵɵelementEnd();
|
|
1149
1138
|
} if (rf & 2) {
|
|
1150
1139
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1152,7 +1141,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_T
|
|
|
1152
1141
|
i0.ɵɵconditional(ctx_r1.IsLoadingSourcePreview ? 7 : ctx_r1.SourcePreviewData.length === 0 ? 8 : 9);
|
|
1153
1142
|
} }
|
|
1154
1143
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1155
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
1144
|
+
i0.ɵɵelement(0, "mj-loading", 197);
|
|
1156
1145
|
} }
|
|
1157
1146
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1158
1147
|
i0.ɵɵelementStart(0, "p", 15);
|
|
@@ -1189,7 +1178,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_C
|
|
|
1189
1178
|
i0.ɵɵrepeater(ctx_r1.GetPreviewColumns(ctx_r1.DestPreviewData));
|
|
1190
1179
|
} }
|
|
1191
1180
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1192
|
-
i0.ɵɵelementStart(0, "div",
|
|
1181
|
+
i0.ɵɵelementStart(0, "div", 195)(1, "table", 196)(2, "thead")(3, "tr");
|
|
1193
1182
|
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_9_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
1194
1183
|
i0.ɵɵelementEnd()();
|
|
1195
1184
|
i0.ɵɵelementStart(6, "tbody");
|
|
@@ -1204,7 +1193,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_C
|
|
|
1204
1193
|
} }
|
|
1205
1194
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
1206
1195
|
const _r51 = i0.ɵɵgetCurrentView();
|
|
1207
|
-
i0.ɵɵelementStart(0, "div",
|
|
1196
|
+
i0.ɵɵelementStart(0, "div", 112)(1, "div", 192)(2, "h4");
|
|
1208
1197
|
i0.ɵɵelement(3, "i", 35);
|
|
1209
1198
|
i0.ɵɵtext(4, " Destination Data Preview");
|
|
1210
1199
|
i0.ɵɵelementEnd();
|
|
@@ -1212,7 +1201,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_T
|
|
|
1212
1201
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r51); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDestPreview()); });
|
|
1213
1202
|
i0.ɵɵelement(6, "i", 28);
|
|
1214
1203
|
i0.ɵɵelementEnd()();
|
|
1215
|
-
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_7_Template, 1, 0, "mj-loading",
|
|
1204
|
+
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_7_Template, 1, 0, "mj-loading", 197)(8, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_8_Template, 2, 0, "p", 15)(9, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Conditional_9_Template, 9, 0, "div", 195);
|
|
1216
1205
|
i0.ɵɵelementEnd();
|
|
1217
1206
|
} if (rf & 2) {
|
|
1218
1207
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1221,19 +1210,19 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_T
|
|
|
1221
1210
|
} }
|
|
1222
1211
|
function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1223
1212
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
1224
|
-
i0.ɵɵconditionalCreate(0, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Template, 9,
|
|
1225
|
-
i0.ɵɵconditionalCreate(1, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_Template, 5, 0, "div",
|
|
1226
|
-
i0.ɵɵelementStart(2, "div",
|
|
1213
|
+
i0.ɵɵconditionalCreate(0, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Template, 9, 2, "div", 101);
|
|
1214
|
+
i0.ɵɵconditionalCreate(1, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_Template, 5, 0, "div", 102);
|
|
1215
|
+
i0.ɵɵelementStart(2, "div", 103)(3, "h3", 104);
|
|
1227
1216
|
i0.ɵɵtext(4, " Field Mappings ");
|
|
1228
|
-
i0.ɵɵelementStart(5, "span",
|
|
1217
|
+
i0.ɵɵelementStart(5, "span", 105);
|
|
1229
1218
|
i0.ɵɵtext(6);
|
|
1230
1219
|
i0.ɵɵelementEnd()();
|
|
1231
|
-
i0.ɵɵelementStart(7, "div",
|
|
1220
|
+
i0.ɵɵelementStart(7, "div", 106)(8, "button", 107);
|
|
1232
1221
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RerunAutoMap()); });
|
|
1233
1222
|
i0.ɵɵelement(9, "i", 36);
|
|
1234
1223
|
i0.ɵɵtext(10, " Auto-Map ");
|
|
1235
1224
|
i0.ɵɵelementEnd();
|
|
1236
|
-
i0.ɵɵelementStart(11, "button",
|
|
1225
|
+
i0.ɵɵelementStart(11, "button", 90);
|
|
1237
1226
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.AddFieldMapping()); });
|
|
1238
1227
|
i0.ɵɵelement(12, "i", 21);
|
|
1239
1228
|
i0.ɵɵtext(13, " Add Field ");
|
|
@@ -1242,19 +1231,19 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template(rf, ctx
|
|
|
1242
1231
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveFieldMappings()); });
|
|
1243
1232
|
i0.ɵɵconditionalCreate(15, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_15_Template, 2, 0)(16, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_16_Template, 2, 0);
|
|
1244
1233
|
i0.ɵɵelementEnd()()();
|
|
1245
|
-
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_17_Template, 4, 0, "p", 15)(18, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_Template, 3, 0, "div",
|
|
1246
|
-
i0.ɵɵelementStart(19, "div",
|
|
1234
|
+
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_17_Template, 4, 0, "p", 15)(18, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_Template, 3, 0, "div", 108);
|
|
1235
|
+
i0.ɵɵelementStart(19, "div", 109)(20, "div", 110)(21, "button", 53);
|
|
1247
1236
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.LoadSourcePreview()); });
|
|
1248
|
-
i0.ɵɵelement(22, "i",
|
|
1237
|
+
i0.ɵɵelement(22, "i", 111);
|
|
1249
1238
|
i0.ɵɵtext(23, " Preview Source ");
|
|
1250
1239
|
i0.ɵɵelementEnd();
|
|
1251
|
-
i0.ɵɵelementStart(24, "button",
|
|
1240
|
+
i0.ɵɵelementStart(24, "button", 53);
|
|
1252
1241
|
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.LoadDestPreview()); });
|
|
1253
1242
|
i0.ɵɵelement(25, "i", 35);
|
|
1254
1243
|
i0.ɵɵtext(26, " Preview Destination ");
|
|
1255
1244
|
i0.ɵɵelementEnd()();
|
|
1256
|
-
i0.ɵɵconditionalCreate(27, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Template, 10, 1, "div",
|
|
1257
|
-
i0.ɵɵconditionalCreate(28, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Template, 10, 1, "div",
|
|
1245
|
+
i0.ɵɵconditionalCreate(27, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_Template, 10, 1, "div", 112);
|
|
1246
|
+
i0.ɵɵconditionalCreate(28, MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_Template, 10, 1, "div", 112);
|
|
1258
1247
|
i0.ɵɵelementEnd();
|
|
1259
1248
|
} if (rf & 2) {
|
|
1260
1249
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1264,19 +1253,17 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template(rf, ctx
|
|
|
1264
1253
|
i0.ɵɵadvance(5);
|
|
1265
1254
|
i0.ɵɵtextInterpolate1("(", ctx_r1.ActiveEditableFields.length, ")");
|
|
1266
1255
|
i0.ɵɵadvance(2);
|
|
1267
|
-
i0.ɵɵproperty("
|
|
1268
|
-
i0.ɵɵadvance(
|
|
1269
|
-
i0.ɵɵproperty("
|
|
1270
|
-
i0.ɵɵadvance(3);
|
|
1271
|
-
i0.ɵɵproperty("themeColor", "primary")("size", "small")("disabled", !ctx_r1.HasDirtyFields || ctx_r1.IsSavingFields);
|
|
1256
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsLoadingSourceFields);
|
|
1257
|
+
i0.ɵɵadvance(6);
|
|
1258
|
+
i0.ɵɵproperty("disabled", !ctx_r1.HasDirtyFields || ctx_r1.IsSavingFields);
|
|
1272
1259
|
i0.ɵɵadvance();
|
|
1273
1260
|
i0.ɵɵconditional(ctx_r1.IsSavingFields ? 15 : 16);
|
|
1274
1261
|
i0.ɵɵadvance(2);
|
|
1275
1262
|
i0.ɵɵconditional(ctx_r1.ActiveEditableFields.length === 0 ? 17 : 18);
|
|
1276
1263
|
i0.ɵɵadvance(4);
|
|
1277
|
-
i0.ɵɵproperty("
|
|
1264
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsLoadingSourcePreview);
|
|
1278
1265
|
i0.ɵɵadvance(3);
|
|
1279
|
-
i0.ɵɵproperty("
|
|
1266
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsLoadingDestPreview);
|
|
1280
1267
|
i0.ɵɵadvance(3);
|
|
1281
1268
|
i0.ɵɵconditional(ctx_r1.ShowSourcePreview ? 27 : -1);
|
|
1282
1269
|
i0.ɵɵadvance();
|
|
@@ -1296,25 +1283,25 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_18_Template(rf, ctx
|
|
|
1296
1283
|
i0.ɵɵelementEnd();
|
|
1297
1284
|
} }
|
|
1298
1285
|
function MappingWorkspaceComponent_Conditional_6_Conditional_19_Conditional_22_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
1299
|
-
i0.ɵɵelementStart(0, "div",
|
|
1286
|
+
i0.ɵɵelementStart(0, "div", 203)(1, "div", 204);
|
|
1300
1287
|
i0.ɵɵtext(2);
|
|
1301
1288
|
i0.ɵɵelementEnd();
|
|
1302
|
-
i0.ɵɵelementStart(3, "div",
|
|
1289
|
+
i0.ɵɵelementStart(3, "div", 205)(4, "div", 206)(5, "span", 207);
|
|
1303
1290
|
i0.ɵɵtext(6);
|
|
1304
1291
|
i0.ɵɵelementEnd();
|
|
1305
|
-
i0.ɵɵelementStart(7, "span",
|
|
1292
|
+
i0.ɵɵelementStart(7, "span", 208);
|
|
1306
1293
|
i0.ɵɵtext(8, "Created");
|
|
1307
1294
|
i0.ɵɵelementEnd()();
|
|
1308
|
-
i0.ɵɵelementStart(9, "div",
|
|
1295
|
+
i0.ɵɵelementStart(9, "div", 206)(10, "span", 207);
|
|
1309
1296
|
i0.ɵɵtext(11);
|
|
1310
1297
|
i0.ɵɵelementEnd();
|
|
1311
|
-
i0.ɵɵelementStart(12, "span",
|
|
1298
|
+
i0.ɵɵelementStart(12, "span", 208);
|
|
1312
1299
|
i0.ɵɵtext(13, "Updated");
|
|
1313
1300
|
i0.ɵɵelementEnd()();
|
|
1314
|
-
i0.ɵɵelementStart(14, "div",
|
|
1301
|
+
i0.ɵɵelementStart(14, "div", 206)(15, "span", 207);
|
|
1315
1302
|
i0.ɵɵtext(16);
|
|
1316
1303
|
i0.ɵɵelementEnd();
|
|
1317
|
-
i0.ɵɵelementStart(17, "span",
|
|
1304
|
+
i0.ɵɵelementStart(17, "span", 208);
|
|
1318
1305
|
i0.ɵɵtext(18, "Errors");
|
|
1319
1306
|
i0.ɵɵelementEnd()()()();
|
|
1320
1307
|
} if (rf & 2) {
|
|
@@ -1331,36 +1318,36 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_19_Conditional_22_F
|
|
|
1331
1318
|
i0.ɵɵtextInterpolate1(" ", detail_r55.RecordsErrored, " ");
|
|
1332
1319
|
} }
|
|
1333
1320
|
function MappingWorkspaceComponent_Conditional_6_Conditional_19_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
1334
|
-
i0.ɵɵelementStart(0, "h4",
|
|
1321
|
+
i0.ɵɵelementStart(0, "h4", 202);
|
|
1335
1322
|
i0.ɵɵtext(1, "Per-Entity Stats");
|
|
1336
1323
|
i0.ɵɵelementEnd();
|
|
1337
|
-
i0.ɵɵrepeaterCreate(2, MappingWorkspaceComponent_Conditional_6_Conditional_19_Conditional_22_For_3_Template, 19, 6, "div",
|
|
1324
|
+
i0.ɵɵrepeaterCreate(2, MappingWorkspaceComponent_Conditional_6_Conditional_19_Conditional_22_For_3_Template, 19, 6, "div", 203, _forTrack3);
|
|
1338
1325
|
} if (rf & 2) {
|
|
1339
1326
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1340
1327
|
i0.ɵɵadvance(2);
|
|
1341
1328
|
i0.ɵɵrepeater(ctx_r1.RunEntityDetails);
|
|
1342
1329
|
} }
|
|
1343
1330
|
function MappingWorkspaceComponent_Conditional_6_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
1344
|
-
i0.ɵɵelementStart(0, "div",
|
|
1331
|
+
i0.ɵɵelementStart(0, "div", 198)(1, "div", 199)(2, "span", 200);
|
|
1345
1332
|
i0.ɵɵtext(3, "Status");
|
|
1346
1333
|
i0.ɵɵelementEnd();
|
|
1347
|
-
i0.ɵɵelementStart(4, "span",
|
|
1334
|
+
i0.ɵɵelementStart(4, "span", 201);
|
|
1348
1335
|
i0.ɵɵtext(5);
|
|
1349
1336
|
i0.ɵɵelementEnd()();
|
|
1350
|
-
i0.ɵɵelementStart(6, "div",
|
|
1337
|
+
i0.ɵɵelementStart(6, "div", 199)(7, "span", 200);
|
|
1351
1338
|
i0.ɵɵtext(8, "Started");
|
|
1352
1339
|
i0.ɵɵelementEnd();
|
|
1353
1340
|
i0.ɵɵelementStart(9, "span");
|
|
1354
1341
|
i0.ɵɵtext(10);
|
|
1355
1342
|
i0.ɵɵelementEnd()();
|
|
1356
|
-
i0.ɵɵelementStart(11, "div",
|
|
1343
|
+
i0.ɵɵelementStart(11, "div", 199)(12, "span", 200);
|
|
1357
1344
|
i0.ɵɵtext(13, "Total Records");
|
|
1358
1345
|
i0.ɵɵelementEnd();
|
|
1359
1346
|
i0.ɵɵelementStart(14, "span");
|
|
1360
1347
|
i0.ɵɵtext(15);
|
|
1361
1348
|
i0.ɵɵpipe(16, "number");
|
|
1362
1349
|
i0.ɵɵelementEnd()();
|
|
1363
|
-
i0.ɵɵelementStart(17, "div",
|
|
1350
|
+
i0.ɵɵelementStart(17, "div", 199)(18, "span", 200);
|
|
1364
1351
|
i0.ɵɵtext(19, "Run By");
|
|
1365
1352
|
i0.ɵɵelementEnd();
|
|
1366
1353
|
i0.ɵɵelementStart(20, "span");
|
|
@@ -1387,14 +1374,14 @@ function MappingWorkspaceComponent_Conditional_6_Template(rf, ctx) { if (rf & 1)
|
|
|
1387
1374
|
i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "div", 6)(3, "label", 7);
|
|
1388
1375
|
i0.ɵɵtext(4, "Integration");
|
|
1389
1376
|
i0.ɵɵelementEnd();
|
|
1390
|
-
i0.ɵɵelementStart(5, "
|
|
1391
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1392
|
-
i0.ɵɵlistener("
|
|
1377
|
+
i0.ɵɵelementStart(5, "mj-dropdown", 8);
|
|
1378
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_6_Template_mj_dropdown_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.SelectedIntegrationID, $event) || (ctx_r1.SelectedIntegrationID = $event); return i0.ɵɵresetView($event); });
|
|
1379
|
+
i0.ɵɵlistener("ValueChange", function MappingWorkspaceComponent_Conditional_6_Template_mj_dropdown_ValueChange_5_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnIntegrationChange($event)); });
|
|
1393
1380
|
i0.ɵɵelementEnd()();
|
|
1394
|
-
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_6_Template, 1, 0, "mj-loading", 9)(7, MappingWorkspaceComponent_Conditional_6_Conditional_7_Template, 12,
|
|
1381
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_6_Conditional_6_Template, 1, 0, "mj-loading", 9)(7, MappingWorkspaceComponent_Conditional_6_Conditional_7_Template, 12, 3);
|
|
1395
1382
|
i0.ɵɵelementEnd();
|
|
1396
1383
|
i0.ɵɵelementStart(8, "div", 10);
|
|
1397
|
-
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_6_Conditional_9_Template, 4, 0, "div", 11)(10, MappingWorkspaceComponent_Conditional_6_Conditional_10_Template, 37, 9, "div", 12)(11, MappingWorkspaceComponent_Conditional_6_Conditional_11_Template, 1, 0, "mj-loading", 13)(12, MappingWorkspaceComponent_Conditional_6_Conditional_12_Template, 29,
|
|
1384
|
+
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_6_Conditional_9_Template, 4, 0, "div", 11)(10, MappingWorkspaceComponent_Conditional_6_Conditional_10_Template, 37, 9, "div", 12)(11, MappingWorkspaceComponent_Conditional_6_Conditional_11_Template, 1, 0, "mj-loading", 13)(12, MappingWorkspaceComponent_Conditional_6_Conditional_12_Template, 29, 11);
|
|
1398
1385
|
i0.ɵɵelementEnd();
|
|
1399
1386
|
i0.ɵɵelementStart(13, "div", 14)(14, "h4", 7);
|
|
1400
1387
|
i0.ɵɵtext(15, "Last Run Details");
|
|
@@ -1404,9 +1391,9 @@ function MappingWorkspaceComponent_Conditional_6_Template(rf, ctx) { if (rf & 1)
|
|
|
1404
1391
|
} if (rf & 2) {
|
|
1405
1392
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
1406
1393
|
i0.ɵɵadvance(5);
|
|
1407
|
-
i0.ɵɵproperty("
|
|
1394
|
+
i0.ɵɵproperty("Data", ctx_r1.Integrations)("ValuePrimitive", true);
|
|
1408
1395
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedIntegrationID);
|
|
1409
|
-
i0.ɵɵproperty("
|
|
1396
|
+
i0.ɵɵproperty("DefaultItem", i0.ɵɵpureFunction0(7, _c0));
|
|
1410
1397
|
i0.ɵɵadvance();
|
|
1411
1398
|
i0.ɵɵconditional(ctx_r1.IsLoadingEntityMaps ? 6 : ctx_r1.SelectedIntegrationID ? 7 : -1);
|
|
1412
1399
|
i0.ɵɵadvance(3);
|
|
@@ -1482,6 +1469,7 @@ let MappingWorkspaceComponent = class MappingWorkspaceComponent extends BaseReso
|
|
|
1482
1469
|
pendingCounter = 0;
|
|
1483
1470
|
async ngOnInit() {
|
|
1484
1471
|
await this.LoadIntegrations();
|
|
1472
|
+
this.NotifyLoadComplete();
|
|
1485
1473
|
}
|
|
1486
1474
|
// =====================================================================
|
|
1487
1475
|
// Computed Properties
|
|
@@ -2346,17 +2334,17 @@ let MappingWorkspaceComponent = class MappingWorkspaceComponent extends BaseReso
|
|
|
2346
2334
|
return 'fa-solid fa-diagram-project';
|
|
2347
2335
|
}
|
|
2348
2336
|
static ɵfac = /*@__PURE__*/ (() => { let ɵMappingWorkspaceComponent_BaseFactory; return function MappingWorkspaceComponent_Factory(__ngFactoryType__) { return (ɵMappingWorkspaceComponent_BaseFactory || (ɵMappingWorkspaceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(MappingWorkspaceComponent)))(__ngFactoryType__ || MappingWorkspaceComponent); }; })();
|
|
2349
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MappingWorkspaceComponent, selectors: [["app-mapping-workspace"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 1, consts: [[1, "mapping-workspace"], [1, "workspace-header"], [1, "fa-solid", "fa-diagram-project"], ["text", "Loading integrations...", "size", "medium"], [1, "workspace-body"], [1, "left-panel"], [1, "integration-selector"], [1, "panel-label"], [
|
|
2337
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MappingWorkspaceComponent, selectors: [["app-mapping-workspace"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 1, consts: [[1, "mapping-workspace"], [1, "workspace-header"], [1, "fa-solid", "fa-diagram-project"], ["text", "Loading integrations...", "size", "medium"], [1, "workspace-body"], [1, "left-panel"], [1, "integration-selector"], [1, "panel-label"], ["TextField", "Name", "ValueField", "ID", 3, "ngModelChange", "ValueChange", "Data", "ValuePrimitive", "ngModel", "DefaultItem"], ["text", "Loading entity maps...", "size", "small"], [1, "center-panel"], [1, "placeholder-message"], [1, "pending-entity-panel"], ["text", "Loading field maps...", "size", "medium"], [1, "right-panel"], [1, "empty-hint"], ["text", "Loading...", "size", "small"], [1, "entity-map-header"], [1, "panel-label", 2, "margin", "0"], [1, "header-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add entity map", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "add-map-panel"], [1, "search-box"], [1, "entity-map-list"], [1, "add-panel-top"], [1, "fa-solid", "fa-plus-circle"], [1, "add-panel-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "form-group"], [1, "source-loading"], [1, "discover-error-inline"], ["TextField", "Label", "ValueField", "Name", 3, "Data", "ValuePrimitive", "ngModel", "Filterable", "DefaultItem"], [1, "target-mode-toggle"], [1, "target-mode-btn", 3, "click"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "new-entity-form"], [3, "ngModelChange", "Data", "ngModel"], [1, "add-form-actions"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click", "disabled"], ["mjButton", "", "size", "sm", 3, "click"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-triangle-exclamation"], ["TextField", "Label", "ValueField", "Name", 3, "ngModelChange", "ValueChange", "Data", "ValuePrimitive", "ngModel", "Filterable", "DefaultItem"], ["TextField", "Name", "ValueField", "ID", 3, "Data", "ValuePrimitive", "ngModel", "Filterable", "DefaultItem"], ["TextField", "Name", "ValueField", "ID", 3, "ngModelChange", "Data", "ValuePrimitive", "ngModel", "Filterable", "DefaultItem"], [1, "section-label"], ["Placeholder", "Select or type schema...", 3, "ngModelChange", "ValueChange", "Data", "ngModel", "AllowCustom", "Filterable"], [1, "form-row"], [1, "mj-input", 3, "ngModelChange", "ngModel", "placeholder"], [1, "auto-hint"], [1, "ddl-preview-section"], ["mjButton", "", "variant", "outline", "size", "sm", 3, "click", "disabled"], [1, "discover-error-inline", 2, "margin-top", "8px"], [1, "ddl-preview-code"], [1, "fa-solid", "fa-check"], ["placeholder", "Search entity maps...", 1, "mj-input", 3, "ngModelChange", "ngModel"], ["href", "javascript:void(0)", 2, "color", "var(--mj-brand-primary)", 3, "click"], [1, "entity-map-item", 3, "selected", "pending"], [1, "entity-map-item", 3, "click"], [1, "em-top-row"], [1, "em-name"], [1, "em-arrow"], [1, "fa-solid", "fa-arrow-right"], [1, "em-entity"], [1, "em-bottom-row"], [1, "em-badges"], [1, "badge", "badge-direction"], [1, "badge", "badge-pending"], [1, "em-actions"], ["title", "Delete", 1, "em-delete", 3, "click"], [1, "fa-solid", "fa-trash-can"], [3, "ngModel"], [3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-hand-pointer"], [1, "pending-icon"], [1, "fa-solid", "fa-clock"], [1, "pending-steps"], [1, "step"], [1, "step-circle", "done"], [1, "step-label"], [1, "step-connector"], [1, "step-circle", 3, "ngClass"], [1, "step-circle", "future"], [1, "ddl-preview-inline"], [1, "pending-fields-section"], [2, "font-size", "14px", "margin-bottom", "8px"], [1, "ddl-code-block"], [1, "ddl-actions"], ["mjButton", "", "variant", "outline", "size", "sm", 3, "click"], [1, "fa-solid", "fa-copy"], [2, "font-size", "14px", "margin", "16px 0 8px"], [1, "fa-solid", "fa-list"], [2, "color", "var(--mj-text-muted)", "font-weight", "400"], [1, "pending-fields-list"], [1, "pending-field-item"], [1, "pending-field-name"], [1, "pending-field-type"], ["title", "Key field", 1, "fa-solid", "fa-key", "key-icon"], [1, "pending-field-req"], [1, "auto-map-banner"], [1, "validation-banner"], [1, "field-mapping-header"], [1, "panel-title"], [1, "field-count"], [1, "field-mapping-actions"], ["mjButton", "", "variant", "outline", "size", "sm", "title", "Auto-match source and destination fields by name", 3, "click", "disabled"], [1, "field-map-cards"], [1, "data-preview-section"], [1, "preview-actions"], [1, "fa-solid", "fa-cloud-arrow-down"], [1, "preview-panel"], [1, "banner-text"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "click"], [1, "validation-warnings"], [1, "fa-solid", "fa-floppy-disk"], [1, "field-map-card", 3, "validation-error", "has-transform"], [1, "field-map-card"], [1, "fmc-row"], [1, "fmc-source"], ["type", "text", "placeholder", "Source field name", 1, "fmc-input", 3, "ngModel"], [1, "fmc-transform-zone"], [1, "fmc-transform-pill", 3, "title"], ["title", "Click to change transform type", 1, "fmc-transform-pill", "fmc-transform-direct"], [1, "fmc-dest"], [1, "fmc-select", 3, "ngModel"], ["type", "text", "placeholder", "Destination field", 1, "fmc-input", 3, "ngModel"], [1, "fmc-flags"], ["title", "Key field for matching", 1, "fmc-flag"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-key"], ["title", "Required field", 1, "fmc-flag"], [1, "fmc-req-star"], ["title", "Remove mapping", 1, "fmc-remove", 3, "click"], [1, "fmc-transform-editor"], ["type", "text", "placeholder", "Source field name", 1, "fmc-input", 3, "ngModelChange", "ngModel"], [1, "fmc-field-name"], [1, "fmc-badges"], [1, "fmc-badge", "badge-type"], ["title", "Primary Key", 1, "fmc-badge", "badge-pk"], ["title", "Required", 1, "fmc-badge", "badge-req"], ["title", "Read-Only", 1, "fmc-badge", "badge-ro"], [1, "fmc-transform-pill", 3, "click", "title"], [1, "fmc-step-count"], ["title", "Click to change transform type", 1, "fmc-transform-pill", "fmc-transform-direct", 3, "click"], [1, "fmc-select", 3, "ngModelChange", "ngModel"], ["value", ""], [3, "value"], ["type", "text", "placeholder", "Destination field", 1, "fmc-input", 3, "ngModelChange", "ngModel"], [1, "fmc-te-header"], [1, "fmc-te-title"], ["title", "Add another step", 1, "fmc-te-add", 3, "click"], [1, "fmc-te-step"], [1, "fmc-te-step-header"], [1, "fmc-te-step-num"], [1, "fmc-te-type-select", 3, "ngModelChange", "ngModel"], ["title", "On error", 1, "fmc-te-error-select", 3, "ngModelChange", "ngModel"], ["value", "Fail"], ["value", "Skip"], ["value", "Null"], ["title", "Remove step", 1, "fmc-te-remove-step", 3, "click"], [1, "fmc-te-config"], [1, "fmc-te-field"], [1, "fmc-te-row"], [1, "fmc-te-field", "fmc-te-sm"], ["type", "text", "placeholder", "Leave empty for no default", 1, "fmc-input", 3, "ngModelChange", "ngModel"], ["type", "text", "placeholder", "e.g. (\\d{3})-(\\d{4})", 1, "fmc-input", "mono", 3, "ngModelChange", "ngModel"], ["type", "text", "placeholder", "e.g. $1$2", 1, "fmc-input", "mono", 3, "ngModelChange", "ngModel"], ["type", "text", "placeholder", "gi", 1, "fmc-input", "mono", 3, "ngModelChange", "ngModel"], ["type", "text", "placeholder", ",", 1, "fmc-input", "mono", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "0", 1, "fmc-input", 3, "ngModelChange", "ngModel"], [1, "fmc-combine-chips"], [1, "fmc-chip", 3, "selected"], ["type", "text", "placeholder", " ", 1, "fmc-input", "mono", 3, "ngModelChange", "ngModel"], [1, "fmc-chip", 3, "click"], [1, "fmc-lookup-table"], [1, "fmc-lookup-row"], [1, "fmc-lookup-add", 3, "click"], ["type", "text", "placeholder", "null", 1, "fmc-input", 3, "ngModelChange", "ngModel"], ["type", "text", "placeholder", "Source value", 1, "fmc-input", 3, "change", "value"], [1, "fa-solid", "fa-arrow-right", "fmc-lookup-arrow"], ["type", "text", "placeholder", "Mapped value", 1, "fmc-input", 3, "change", "value"], [1, "fmc-lookup-del", 3, "click"], ["value", "date"], ["value", "number"], ["value", "string"], ["type", "text", "placeholder", "ISO or decimal places", 1, "fmc-input", "mono", 3, "ngModelChange", "ngModel"], ["value", "boolean"], ["type", "number", "min", "1", 1, "fmc-input", 3, "ngModelChange", "ngModel"], [1, "fmc-te-hint"], ["placeholder", "value.toUpperCase()", "rows", "2", 1, "fmc-input", "mono", "fmc-textarea", 3, "ngModelChange", "ngModel"], [1, "preview-panel-header"], [1, "fa-solid", "fa-cloud"], ["text", "Loading source data...", "size", "small"], [1, "preview-table-wrapper"], [1, "preview-table"], ["text", "Loading destination data...", "size", "small"], [1, "run-summary-card"], [1, "run-summary-row"], [1, "label"], [1, "run-status"], [1, "panel-label", 2, "margin-top", "16px"], [1, "entity-stat-card"], [1, "entity-stat-name"], [1, "entity-stat-grid"], [1, "mini-stat"], [1, "mini-val"], [1, "mini-label"]], template: function MappingWorkspaceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2350
2338
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h2");
|
|
2351
2339
|
i0.ɵɵelement(3, "i", 2);
|
|
2352
2340
|
i0.ɵɵtext(4, " Mapping Workspace");
|
|
2353
2341
|
i0.ɵɵelementEnd()();
|
|
2354
|
-
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_5_Template, 1, 0, "mj-loading", 3)(6, MappingWorkspaceComponent_Conditional_6_Template, 20,
|
|
2342
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_5_Template, 1, 0, "mj-loading", 3)(6, MappingWorkspaceComponent_Conditional_6_Template, 20, 8, "div", 4);
|
|
2355
2343
|
i0.ɵɵelementEnd();
|
|
2356
2344
|
} if (rf & 2) {
|
|
2357
2345
|
i0.ɵɵadvance(5);
|
|
2358
2346
|
i0.ɵɵconditional(ctx.IsLoadingIntegrations ? 5 : 6);
|
|
2359
|
-
} }, dependencies: [i1.NgClass, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.MinValidator, i2.NgModel, i3.ButtonComponent, i4.ComboBoxComponent, i4.DropDownListComponent, i5.TextBoxDirective, i5.SwitchComponent, i6.LoadingComponent, i1.DecimalPipe], styles: [".mapping-workspace[_ngcontent-%COMP%] { padding: 24px; height: 100%; display: flex; flex-direction: column; }\n.workspace-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.workspace-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0; font-size: 20px; font-weight: 600;\n}\n.workspace-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 8px; color: var(--mj-color-indigo-500); }\n\n\n\n.workspace-body[_ngcontent-%COMP%] {\n display: flex; flex: 1; gap: 1px; background: var(--mj-border-default);\n border-radius: 10px; overflow: hidden; min-height: 500px;\n}\n\n.left-panel[_ngcontent-%COMP%] { width: 320px; min-width: 280px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n.center-panel[_ngcontent-%COMP%] { flex: 1; background: var(--mj-bg-surface); padding: 20px; overflow-y: auto; }\n.right-panel[_ngcontent-%COMP%] { width: 280px; min-width: 240px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n\n\n\n.panel-label[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 700; color: var(--mj-text-disabled);\n text-transform: uppercase; letter-spacing: 0.6px;\n margin: 0 0 6px 0; display: block;\n}\n.panel-title[_ngcontent-%COMP%] { margin: 0 0 12px 0; font-size: 16px; font-weight: 600; }\n.panel-title[_ngcontent-%COMP%] .field-count[_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-weight: 400; font-size: 13px; }\n.empty-hint[_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-size: 13px; font-style: italic; }\n.search-box[_ngcontent-%COMP%] { margin-bottom: 12px; }\n\n\n\n.integration-selector[_ngcontent-%COMP%] { margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--mj-border-subtle); }\n\n\n\n.entity-map-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.header-actions[_ngcontent-%COMP%] { display: flex; gap: 4px; }\n\n\n\n.add-map-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 10px;\n padding: 16px; margin-bottom: 14px;\n}\n.add-panel-top[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 14px;\n}\n.add-panel-top[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] { margin: 0; font-size: 14px; font-weight: 600; }\n.add-panel-close[_ngcontent-%COMP%] {\n background: none; border: none; cursor: pointer; color: var(--mj-text-disabled); font-size: 14px;\n}\n.add-panel-close[_ngcontent-%COMP%]:hover { color: var(--mj-text-primary); }\n\n.form-group[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { font-size: 12px; font-weight: 600; color: var(--mj-text-muted); }\n.form-row[_ngcontent-%COMP%] { display: flex; gap: 10px; }\n.form-row[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] { flex: 1; }\n\n.source-loading[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n font-size: 12px; color: var(--mj-text-disabled); padding: 6px 0;\n}\n.source-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-color-indigo-500); }\n\n.discover-error-inline[_ngcontent-%COMP%] {\n font-size: 12px; color: var(--mj-color-error-600); padding: 6px 0;\n}\n.discover-error-inline[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 4px; }\n\n\n\n.target-mode-toggle[_ngcontent-%COMP%] {\n display: flex; border: 1px solid var(--mj-border-default); border-radius: 6px;\n overflow: hidden; margin-bottom: 12px;\n}\n.target-mode-btn[_ngcontent-%COMP%] {\n flex: 1; padding: 8px 12px; font-size: 12px; font-weight: 600;\n text-align: center; cursor: pointer; background: var(--mj-bg-surface); border: none;\n color: var(--mj-text-muted); transition: all 0.15s;\n}\n.target-mode-btn[_ngcontent-%COMP%]:first-child { border-right: 1px solid var(--mj-border-default); }\n.target-mode-btn.active[_ngcontent-%COMP%] { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.target-mode-btn[_ngcontent-%COMP%]:not(.active):hover { background: var(--mj-status-info-bg); color: var(--mj-color-indigo-500); }\n.target-mode-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 4px; }\n\n\n\n.new-entity-form[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 14px; margin-bottom: 12px;\n}\n.new-entity-form[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 10px;\n}\n.auto-hint[_ngcontent-%COMP%] { font-size: 10px; color: var(--mj-text-disabled); font-style: italic; }\n\n\n\n.ddl-preview-section[_ngcontent-%COMP%] { margin-top: 8px; }\n.ddl-preview-code[_ngcontent-%COMP%] {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 10px;\n border-radius: 4px; font-size: 11px; line-height: 1.5;\n max-height: 200px; overflow: auto; white-space: pre-wrap;\n word-break: break-word; margin-top: 8px;\n}\n\n.add-form-actions[_ngcontent-%COMP%] { display: flex; gap: 6px; padding-top: 4px; }\n\n\n\n.entity-map-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; }\n.entity-map-item[_ngcontent-%COMP%] {\n padding: 8px 10px; border-radius: 6px;\n cursor: pointer; border: 1px solid var(--mj-border-subtle); transition: all 0.15s;\n}\n.entity-map-item[_ngcontent-%COMP%]:hover { background: var(--mj-bg-page); }\n.entity-map-item.selected[_ngcontent-%COMP%] { background: var(--mj-status-info-bg); border-color: var(--mj-color-indigo-500); }\n.entity-map-item.pending[_ngcontent-%COMP%] { border-left: 3px solid var(--mj-status-warning); }\n\n.em-top-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 4px;\n font-size: 13px; margin-bottom: 4px;\n}\n.em-name[_ngcontent-%COMP%] { font-weight: 600; }\n.em-arrow[_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-size: 11px; }\n.em-entity[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n\n.em-bottom-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n font-size: 11px; color: var(--mj-text-disabled);\n}\n.em-badges[_ngcontent-%COMP%] { display: flex; gap: 4px; align-items: center; }\n.badge[_ngcontent-%COMP%] {\n font-size: 10px; padding: 1px 6px; border-radius: 4px; font-weight: 600;\n}\n.badge-direction[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n.badge-pending[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n\n.em-actions[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; }\n.em-delete[_ngcontent-%COMP%] {\n opacity: 0; transition: opacity 0.15s;\n cursor: pointer; color: var(--mj-color-error-600); background: none; border: none;\n padding: 2px 4px; font-size: 12px;\n}\n.entity-map-item[_ngcontent-%COMP%]:hover .em-delete[_ngcontent-%COMP%] { opacity: 1; }\n\n\n\n.placeholder-message[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; align-items: center;\n justify-content: center; height: 300px; color: var(--mj-text-disabled);\n}\n.placeholder-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 36px; margin-bottom: 12px; }\n.placeholder-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { text-align: center; }\n\n\n\n.pending-entity-panel[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg); border: 1px solid var(--mj-color-warning-200); border-radius: 10px;\n padding: 24px; text-align: center;\n}\n.pending-icon[_ngcontent-%COMP%] { font-size: 40px; color: var(--mj-status-warning); margin-bottom: 12px; }\n.pending-entity-panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] { font-size: 16px; margin-bottom: 8px; }\n.pending-entity-panel[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { font-size: 13px; color: var(--mj-text-disabled); margin-bottom: 16px; line-height: 1.5; }\n\n\n\n.pending-steps[_ngcontent-%COMP%] {\n display: flex; gap: 0; margin: 20px 0; justify-content: center; align-items: center;\n}\n.step[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; align-items: center; gap: 6px;\n padding: 0 16px;\n}\n.step-circle[_ngcontent-%COMP%] {\n width: 36px; height: 36px; border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n font-size: 14px; font-weight: 700;\n}\n.step-circle.done[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.step-circle.current[_ngcontent-%COMP%] { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.step-circle.future[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-disabled); }\n.step-label[_ngcontent-%COMP%] { font-size: 10px; font-weight: 600; color: var(--mj-text-disabled); text-transform: uppercase; white-space: nowrap; }\n.step-connector[_ngcontent-%COMP%] { width: 32px; height: 2px; background: var(--mj-border-default); align-self: center; margin-bottom: 18px; }\n.step-connector.done[_ngcontent-%COMP%] { background: var(--mj-color-success-700); }\n\n\n\n.ddl-preview-inline[_ngcontent-%COMP%] { margin-top: 16px; text-align: left; }\n.ddl-code-block[_ngcontent-%COMP%] {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 12px;\n border-radius: 6px; font-size: 12px; line-height: 1.5;\n max-height: 250px; overflow: auto; white-space: pre-wrap;\n}\n.ddl-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; margin-top: 12px; justify-content: center; }\n\n\n\n.pending-fields-section[_ngcontent-%COMP%] { text-align: left; }\n.pending-fields-list[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; gap: 2px;\n max-height: 200px; overflow-y: auto;\n}\n.pending-field-item[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n padding: 4px 8px; font-size: 13px; border-radius: 4px;\n}\n.pending-field-item[_ngcontent-%COMP%]:hover { background: var(--mj-status-warning-bg); }\n.pending-field-name[_ngcontent-%COMP%] { font-weight: 600; }\n.pending-field-type[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-disabled); background: var(--mj-bg-surface-hover); padding: 1px 6px; border-radius: 3px; }\n.pending-field-req[_ngcontent-%COMP%] { color: var(--mj-color-error-600); font-weight: 700; }\n\n\n\n.auto-map-banner[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg); border: 1px solid var(--mj-color-info-100); border-radius: 8px;\n padding: 12px 16px; margin-bottom: 16px;\n display: flex; align-items: center; gap: 12px;\n}\n.auto-map-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { color: var(--mj-color-indigo-500); font-size: 18px; }\n.auto-map-banner[_ngcontent-%COMP%] .banner-text[_ngcontent-%COMP%] { flex: 1; }\n.auto-map-banner[_ngcontent-%COMP%] .banner-text[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { font-size: 13px; color: var(--mj-text-muted); margin: 0; }\n.auto-map-banner[_ngcontent-%COMP%] .banner-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { color: var(--mj-text-primary); }\n\n\n\n.field-mapping-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.field-mapping-actions[_ngcontent-%COMP%] { display: flex; gap: 6px; }\n\n\n\n.field-map-cards[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; gap: 6px;\n}\n\n.field-map-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: var(--mj-bg-surface);\n transition: all 0.2s ease;\n overflow: hidden;\n}\n.field-map-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 2px 8px rgba(74, 108, 247, 0.06);\n}\n.field-map-card.has-transform[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-color-indigo-500);\n}\n.field-map-card.validation-error[_ngcontent-%COMP%] {\n border-color: var(--mj-color-warning-200);\n background: var(--mj-status-warning-bg);\n}\n\n\n\n.fmc-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 10px;\n padding: 10px 14px;\n}\n\n\n\n.fmc-source[_ngcontent-%COMP%] {\n flex: 1; min-width: 0;\n}\n.fmc-field-name[_ngcontent-%COMP%] {\n font-size: 13px; font-weight: 600; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.fmc-badges[_ngcontent-%COMP%] {\n display: flex; gap: 4px; margin-top: 3px; flex-wrap: wrap;\n}\n.fmc-badge[_ngcontent-%COMP%] {\n font-size: 9px; font-weight: 700; padding: 1px 5px;\n border-radius: 3px; text-transform: uppercase; letter-spacing: 0.3px;\n white-space: nowrap; line-height: 1.5;\n}\n.badge-type[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover); color: var(--mj-text-muted);\n}\n.badge-pk[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-100), var(--mj-color-warning-200));\n color: var(--mj-color-warning-800);\n}\n.badge-pk[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 8px; margin-right: 2px; }\n.badge-req[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-error-100), var(--mj-color-error-200));\n color: var(--mj-color-error-800);\n}\n.badge-ro[_ngcontent-%COMP%] {\n background: var(--mj-color-purple-50); color: var(--mj-color-purple-700);\n}\n\n\n\n.fmc-transform-zone[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: center;\n width: 100px;\n}\n.fmc-arrow-btn[_ngcontent-%COMP%] {\n width: 32px; height: 32px;\n border-radius: 50%; border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page); color: var(--mj-text-disabled);\n cursor: pointer; font-size: 12px;\n display: flex; align-items: center; justify-content: center;\n transition: all 0.2s;\n}\n.fmc-arrow-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); border-color: var(--mj-color-indigo-500);\n transform: scale(1.1);\n}\n.fmc-transform-pill[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 4px;\n padding: 4px 10px; border-radius: 16px;\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border: 1px solid var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n font-size: 11px; font-weight: 600;\n cursor: pointer; transition: all 0.2s;\n white-space: nowrap;\n}\n.fmc-transform-pill[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-100), var(--mj-color-indigo-200));\n transform: scale(1.02);\n}\n.fmc-transform-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 10px; }\n.fmc-transform-direct[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-bg-page), var(--mj-bg-surface-hover));\n border-color: var(--mj-color-neutral-300); color: var(--mj-text-muted);\n}\n.fmc-transform-direct[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n}\n.fmc-step-count[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-700); color: var(--mj-bg-surface); font-size: 9px;\n padding: 0 4px; border-radius: 8px; font-weight: 700;\n}\n\n\n\n.fmc-dest[_ngcontent-%COMP%] {\n flex: 1; min-width: 0;\n}\n.fmc-select[_ngcontent-%COMP%] {\n width: 100%; padding: 6px 10px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-select[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n\n\n\n.fmc-input[_ngcontent-%COMP%] {\n width: 100%; padding: 5px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-input[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n.fmc-input.mono[_ngcontent-%COMP%] { font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-size: 12px; }\n\n\n\n.fmc-flags[_ngcontent-%COMP%] {\n display: flex; gap: 6px; flex-shrink: 0;\n}\n.fmc-flag[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 3px;\n font-size: 11px; color: var(--mj-text-disabled); cursor: pointer;\n padding: 2px 4px; border-radius: 4px;\n transition: color 0.15s;\n}\n.fmc-flag[_ngcontent-%COMP%]:hover { color: var(--mj-color-indigo-500); }\n.fmc-flag[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 13px; height: 13px; cursor: pointer;\n accent-color: var(--mj-color-indigo-500);\n}\n.fmc-flag[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 10px; }\n.fmc-req-star[_ngcontent-%COMP%] { font-size: 14px; font-weight: 700; color: inherit; }\n\n\n\n.fmc-remove[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 13px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-remove[_ngcontent-%COMP%]:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n\n\n.fmc-transform-editor[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-bg-surface-hover);\n background: linear-gradient(180deg, var(--mj-color-indigo-50) 0%, var(--mj-bg-page) 100%);\n padding: 12px 14px;\n}\n.fmc-te-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.fmc-te-title[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px;\n}\n.fmc-te-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 4px; }\n.fmc-te-add[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 600; color: var(--mj-color-indigo-500);\n background: none; border: 1px solid var(--mj-color-indigo-200);\n border-radius: 6px; padding: 3px 10px;\n cursor: pointer; transition: all 0.15s;\n}\n.fmc-te-add[_ngcontent-%COMP%]:hover { background: var(--mj-color-indigo-50); }\n.fmc-te-add[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 3px; font-size: 10px; }\n\n\n\n.fmc-te-step[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 10px 12px;\n margin-bottom: 8px;\n transition: box-shadow 0.15s;\n}\n.fmc-te-step[_ngcontent-%COMP%]:hover { box-shadow: 0 1px 4px rgba(0,0,0,0.05); }\n.fmc-te-step[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n\n.fmc-te-step-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px; margin-bottom: 8px;\n}\n.fmc-te-step-num[_ngcontent-%COMP%] {\n width: 22px; height: 22px; border-radius: 50%;\n background: linear-gradient(135deg, var(--mj-color-indigo-500), var(--mj-color-indigo-500));\n color: var(--mj-bg-surface); font-size: 11px; font-weight: 700;\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n.fmc-te-type-select[_ngcontent-%COMP%] {\n flex: 1; padding: 4px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 12px; font-weight: 600;\n color: var(--mj-text-primary); background: var(--mj-bg-page);\n}\n.fmc-te-type-select[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-error-select[_ngcontent-%COMP%] {\n width: 100px; padding: 4px 6px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 11px; color: var(--mj-text-muted);\n background: var(--mj-bg-page);\n}\n.fmc-te-error-select[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-remove-step[_ngcontent-%COMP%] {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 12px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-te-remove-step[_ngcontent-%COMP%]:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n\n\n.fmc-te-config[_ngcontent-%COMP%] {\n padding-left: 30px;\n}\n.fmc-te-field[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n.fmc-te-field[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n.fmc-te-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block; font-size: 11px; font-weight: 600;\n color: var(--mj-text-muted); margin-bottom: 3px;\n}\n.fmc-te-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover); padding: 0 3px; border-radius: 3px;\n font-size: 10px; color: var(--mj-color-indigo-700);\n}\n.fmc-te-hint[_ngcontent-%COMP%] { font-weight: 400; color: var(--mj-text-disabled); }\n.fmc-te-row[_ngcontent-%COMP%] {\n display: flex; gap: 10px; align-items: flex-end;\n}\n.fmc-te-sm[_ngcontent-%COMP%] { max-width: 140px; }\n.fmc-textarea[_ngcontent-%COMP%] {\n resize: vertical; min-height: 40px;\n}\n\n\n\n.fmc-combine-chips[_ngcontent-%COMP%] {\n display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px;\n}\n.fmc-chip[_ngcontent-%COMP%] {\n font-size: 11px; padding: 3px 8px; border-radius: 14px;\n border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface);\n color: var(--mj-text-muted); cursor: pointer;\n transition: all 0.15s; font-weight: 500;\n}\n.fmc-chip[_ngcontent-%COMP%]:hover { border-color: var(--mj-color-indigo-300); color: var(--mj-color-indigo-700); }\n.fmc-chip.selected[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-400); color: var(--mj-color-indigo-700); font-weight: 600;\n}\n\n\n\n.fmc-lookup-table[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; gap: 4px; margin-top: 4px;\n}\n.fmc-lookup-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 6px;\n}\n.fmc-lookup-row[_ngcontent-%COMP%] .fmc-input[_ngcontent-%COMP%] { flex: 1; }\n.fmc-lookup-arrow[_ngcontent-%COMP%] { color: var(--mj-color-indigo-200); font-size: 10px; flex-shrink: 0; }\n.fmc-lookup-del[_ngcontent-%COMP%] {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 11px; padding: 2px;\n transition: color 0.15s;\n}\n.fmc-lookup-del[_ngcontent-%COMP%]:hover { color: var(--mj-status-error); }\n.fmc-lookup-add[_ngcontent-%COMP%] {\n font-size: 11px; color: var(--mj-color-indigo-500); background: none;\n border: 1px dashed var(--mj-color-indigo-200); border-radius: 6px;\n padding: 4px 10px; cursor: pointer;\n transition: all 0.15s; margin-top: 2px;\n}\n.fmc-lookup-add[_ngcontent-%COMP%]:hover { background: var(--mj-color-indigo-50); }\n.fmc-lookup-add[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 3px; font-size: 10px; }\n\n\n\n.data-preview-section[_ngcontent-%COMP%] { margin-top: 24px; border-top: 1px solid var(--mj-border-subtle); padding-top: 16px; }\n.preview-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; margin-bottom: 12px; }\n\n.preview-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 12px; margin-bottom: 12px;\n}\n.preview-panel-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 8px;\n}\n.preview-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; margin: 0; }\n.preview-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 6px; color: var(--mj-color-indigo-500); }\n\n.preview-table-wrapper[_ngcontent-%COMP%] { overflow-x: auto; }\n.preview-table[_ngcontent-%COMP%] {\n width: 100%; border-collapse: collapse; font-size: 12px;\n}\n.preview-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left; padding: 5px 8px;\n background: var(--mj-border-default); font-weight: 600; font-size: 10px;\n text-transform: uppercase; color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default); white-space: nowrap;\n}\n.preview-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 4px 8px; border-bottom: 1px solid var(--mj-border-subtle);\n white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;\n}\n.preview-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover { background: var(--mj-status-info-bg); }\n\n\n\n.run-summary-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border-radius: 8px; padding: 12px;\n}\n.run-summary-row[_ngcontent-%COMP%] {\n display: flex; justify-content: space-between;\n padding: 4px 0; font-size: 13px;\n}\n.run-summary-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-weight: 500; }\n.run-status[_ngcontent-%COMP%] {\n font-size: 11px; padding: 2px 6px; border-radius: 4px; font-weight: 600;\n}\n.status-green[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.status-amber[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n.status-red[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); color: var(--mj-color-error-600); }\n\n.entity-stat-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border-radius: 6px; padding: 10px;\n margin-bottom: 8px;\n}\n.entity-stat-name[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; margin-bottom: 6px; }\n.entity-stat-grid[_ngcontent-%COMP%] { display: flex; gap: 12px; }\n.mini-stat[_ngcontent-%COMP%] { text-align: center; }\n.mini-val[_ngcontent-%COMP%] { display: block; font-size: 16px; font-weight: 600; }\n.mini-val.has-errors[_ngcontent-%COMP%] { color: var(--mj-color-error-600); }\n.mini-label[_ngcontent-%COMP%] { font-size: 10px; color: var(--mj-text-disabled); }\n\n\n\n.validation-banner[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50); border: 1px solid var(--mj-color-warning-200); border-radius: 8px;\n padding: 10px 14px; margin-bottom: 14px;\n display: flex; align-items: flex-start; gap: 10px;\n font-size: 13px; color: var(--mj-color-warning-600);\n}\n.validation-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { margin-top: 2px; }\n.validation-warnings[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; }\n\n.field-map-card.validation-error[_ngcontent-%COMP%] .fmc-source[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-color-warning-600);\n padding-left: 8px;\n}\n\n\n\n@media (max-width: 1100px) { .right-panel[_ngcontent-%COMP%] { display: none; } }\n@media (max-width: 800px) { .left-panel[_ngcontent-%COMP%] { width: 260px; } }"] });
|
|
2347
|
+
} }, dependencies: [i1.NgClass, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.MinValidator, i2.NgModel, i3.MJButtonDirective, i3.MJComboboxComponent, i3.MJDropdownComponent, i3.MJSwitchComponent, i4.LoadingComponent, i1.DecimalPipe], styles: [".mapping-workspace[_ngcontent-%COMP%] { padding: 24px; height: 100%; display: flex; flex-direction: column; }\n.workspace-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.workspace-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0; font-size: 20px; font-weight: 600;\n}\n.workspace-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 8px; color: var(--mj-color-indigo-500); }\n\n\n\n.workspace-body[_ngcontent-%COMP%] {\n display: flex; flex: 1; gap: 1px; background: var(--mj-border-default);\n border-radius: 10px; overflow: hidden; min-height: 500px;\n}\n\n.left-panel[_ngcontent-%COMP%] { width: 320px; min-width: 280px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n.center-panel[_ngcontent-%COMP%] { flex: 1; background: var(--mj-bg-surface); padding: 20px; overflow-y: auto; }\n.right-panel[_ngcontent-%COMP%] { width: 280px; min-width: 240px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n\n\n\n.panel-label[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 700; color: var(--mj-text-disabled);\n text-transform: uppercase; letter-spacing: 0.6px;\n margin: 0 0 6px 0; display: block;\n}\n.panel-title[_ngcontent-%COMP%] { margin: 0 0 12px 0; font-size: 16px; font-weight: 600; }\n.panel-title[_ngcontent-%COMP%] .field-count[_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-weight: 400; font-size: 13px; }\n.empty-hint[_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-size: 13px; font-style: italic; }\n.search-box[_ngcontent-%COMP%] { margin-bottom: 12px; }\n\n\n\n.integration-selector[_ngcontent-%COMP%] { margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--mj-border-subtle); }\n\n\n\n.entity-map-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.header-actions[_ngcontent-%COMP%] { display: flex; gap: 4px; }\n\n\n\n.add-map-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 10px;\n padding: 16px; margin-bottom: 14px;\n}\n.add-panel-top[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 14px;\n}\n.add-panel-top[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] { margin: 0; font-size: 14px; font-weight: 600; }\n.add-panel-close[_ngcontent-%COMP%] {\n background: none; border: none; cursor: pointer; color: var(--mj-text-disabled); font-size: 14px;\n}\n.add-panel-close[_ngcontent-%COMP%]:hover { color: var(--mj-text-primary); }\n\n.form-group[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }\n.form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] { font-size: 12px; font-weight: 600; color: var(--mj-text-muted); }\n.form-row[_ngcontent-%COMP%] { display: flex; gap: 10px; }\n.form-row[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] { flex: 1; }\n\n.source-loading[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n font-size: 12px; color: var(--mj-text-disabled); padding: 6px 0;\n}\n.source-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-color-indigo-500); }\n\n.discover-error-inline[_ngcontent-%COMP%] {\n font-size: 12px; color: var(--mj-color-error-600); padding: 6px 0;\n}\n.discover-error-inline[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 4px; }\n\n\n\n.target-mode-toggle[_ngcontent-%COMP%] {\n display: flex; border: 1px solid var(--mj-border-default); border-radius: 6px;\n overflow: hidden; margin-bottom: 12px;\n}\n.target-mode-btn[_ngcontent-%COMP%] {\n flex: 1; padding: 8px 12px; font-size: 12px; font-weight: 600;\n text-align: center; cursor: pointer; background: var(--mj-bg-surface); border: none;\n color: var(--mj-text-muted); transition: all 0.15s;\n}\n.target-mode-btn[_ngcontent-%COMP%]:first-child { border-right: 1px solid var(--mj-border-default); }\n.target-mode-btn.active[_ngcontent-%COMP%] { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.target-mode-btn[_ngcontent-%COMP%]:not(.active):hover { background: var(--mj-status-info-bg); color: var(--mj-color-indigo-500); }\n.target-mode-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 4px; }\n\n\n\n.new-entity-form[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 14px; margin-bottom: 12px;\n}\n.new-entity-form[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 10px;\n}\n.auto-hint[_ngcontent-%COMP%] { font-size: 10px; color: var(--mj-text-disabled); font-style: italic; }\n\n\n\n.ddl-preview-section[_ngcontent-%COMP%] { margin-top: 8px; }\n.ddl-preview-code[_ngcontent-%COMP%] {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 10px;\n border-radius: 4px; font-size: 11px; line-height: 1.5;\n max-height: 200px; overflow: auto; white-space: pre-wrap;\n word-break: break-word; margin-top: 8px;\n}\n\n.add-form-actions[_ngcontent-%COMP%] { display: flex; gap: 6px; padding-top: 4px; }\n\n\n\n.entity-map-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; }\n.entity-map-item[_ngcontent-%COMP%] {\n padding: 8px 10px; border-radius: 6px;\n cursor: pointer; border: 1px solid var(--mj-border-subtle); transition: all 0.15s;\n}\n.entity-map-item[_ngcontent-%COMP%]:hover { background: var(--mj-bg-page); }\n.entity-map-item.selected[_ngcontent-%COMP%] { background: var(--mj-status-info-bg); border-color: var(--mj-color-indigo-500); }\n.entity-map-item.pending[_ngcontent-%COMP%] { border-left: 3px solid var(--mj-status-warning); }\n\n.em-top-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 4px;\n font-size: 13px; margin-bottom: 4px;\n}\n.em-name[_ngcontent-%COMP%] { font-weight: 600; }\n.em-arrow[_ngcontent-%COMP%] { color: var(--mj-text-disabled); font-size: 11px; }\n.em-entity[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n\n.em-bottom-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n font-size: 11px; color: var(--mj-text-disabled);\n}\n.em-badges[_ngcontent-%COMP%] { display: flex; gap: 4px; align-items: center; }\n.badge[_ngcontent-%COMP%] {\n font-size: 10px; padding: 1px 6px; border-radius: 4px; font-weight: 600;\n}\n.badge-direction[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n.badge-pending[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n\n.em-actions[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; }\n.em-delete[_ngcontent-%COMP%] {\n opacity: 0; transition: opacity 0.15s;\n cursor: pointer; color: var(--mj-color-error-600); background: none; border: none;\n padding: 2px 4px; font-size: 12px;\n}\n.entity-map-item[_ngcontent-%COMP%]:hover .em-delete[_ngcontent-%COMP%] { opacity: 1; }\n\n\n\n.placeholder-message[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; align-items: center;\n justify-content: center; height: 300px; color: var(--mj-text-disabled);\n}\n.placeholder-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 36px; margin-bottom: 12px; }\n.placeholder-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { text-align: center; }\n\n\n\n.pending-entity-panel[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg); border: 1px solid var(--mj-color-warning-200); border-radius: 10px;\n padding: 24px; text-align: center;\n}\n.pending-icon[_ngcontent-%COMP%] { font-size: 40px; color: var(--mj-status-warning); margin-bottom: 12px; }\n.pending-entity-panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] { font-size: 16px; margin-bottom: 8px; }\n.pending-entity-panel[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { font-size: 13px; color: var(--mj-text-disabled); margin-bottom: 16px; line-height: 1.5; }\n\n\n\n.pending-steps[_ngcontent-%COMP%] {\n display: flex; gap: 0; margin: 20px 0; justify-content: center; align-items: center;\n}\n.step[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; align-items: center; gap: 6px;\n padding: 0 16px;\n}\n.step-circle[_ngcontent-%COMP%] {\n width: 36px; height: 36px; border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n font-size: 14px; font-weight: 700;\n}\n.step-circle.done[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.step-circle.current[_ngcontent-%COMP%] { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.step-circle.future[_ngcontent-%COMP%] { background: var(--mj-bg-surface-hover); color: var(--mj-text-disabled); }\n.step-label[_ngcontent-%COMP%] { font-size: 10px; font-weight: 600; color: var(--mj-text-disabled); text-transform: uppercase; white-space: nowrap; }\n.step-connector[_ngcontent-%COMP%] { width: 32px; height: 2px; background: var(--mj-border-default); align-self: center; margin-bottom: 18px; }\n.step-connector.done[_ngcontent-%COMP%] { background: var(--mj-color-success-700); }\n\n\n\n.ddl-preview-inline[_ngcontent-%COMP%] { margin-top: 16px; text-align: left; }\n.ddl-code-block[_ngcontent-%COMP%] {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 12px;\n border-radius: 6px; font-size: 12px; line-height: 1.5;\n max-height: 250px; overflow: auto; white-space: pre-wrap;\n}\n.ddl-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; margin-top: 12px; justify-content: center; }\n\n\n\n.pending-fields-section[_ngcontent-%COMP%] { text-align: left; }\n.pending-fields-list[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; gap: 2px;\n max-height: 200px; overflow-y: auto;\n}\n.pending-field-item[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n padding: 4px 8px; font-size: 13px; border-radius: 4px;\n}\n.pending-field-item[_ngcontent-%COMP%]:hover { background: var(--mj-status-warning-bg); }\n.pending-field-name[_ngcontent-%COMP%] { font-weight: 600; }\n.pending-field-type[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-disabled); background: var(--mj-bg-surface-hover); padding: 1px 6px; border-radius: 3px; }\n.pending-field-req[_ngcontent-%COMP%] { color: var(--mj-color-error-600); font-weight: 700; }\n\n\n\n.auto-map-banner[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg); border: 1px solid var(--mj-color-info-100); border-radius: 8px;\n padding: 12px 16px; margin-bottom: 16px;\n display: flex; align-items: center; gap: 12px;\n}\n.auto-map-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { color: var(--mj-color-indigo-500); font-size: 18px; }\n.auto-map-banner[_ngcontent-%COMP%] .banner-text[_ngcontent-%COMP%] { flex: 1; }\n.auto-map-banner[_ngcontent-%COMP%] .banner-text[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { font-size: 13px; color: var(--mj-text-muted); margin: 0; }\n.auto-map-banner[_ngcontent-%COMP%] .banner-text[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] { color: var(--mj-text-primary); }\n\n\n\n.field-mapping-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.field-mapping-actions[_ngcontent-%COMP%] { display: flex; gap: 6px; }\n\n\n\n.field-map-cards[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; gap: 6px;\n}\n\n.field-map-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: var(--mj-bg-surface);\n transition: all 0.2s ease;\n overflow: hidden;\n}\n.field-map-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 2px 8px rgba(74, 108, 247, 0.06);\n}\n.field-map-card.has-transform[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-color-indigo-500);\n}\n.field-map-card.validation-error[_ngcontent-%COMP%] {\n border-color: var(--mj-color-warning-200);\n background: var(--mj-status-warning-bg);\n}\n\n\n\n.fmc-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 10px;\n padding: 10px 14px;\n}\n\n\n\n.fmc-source[_ngcontent-%COMP%] {\n flex: 1; min-width: 0;\n}\n.fmc-field-name[_ngcontent-%COMP%] {\n font-size: 13px; font-weight: 600; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.fmc-badges[_ngcontent-%COMP%] {\n display: flex; gap: 4px; margin-top: 3px; flex-wrap: wrap;\n}\n.fmc-badge[_ngcontent-%COMP%] {\n font-size: 9px; font-weight: 700; padding: 1px 5px;\n border-radius: 3px; text-transform: uppercase; letter-spacing: 0.3px;\n white-space: nowrap; line-height: 1.5;\n}\n.badge-type[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover); color: var(--mj-text-muted);\n}\n.badge-pk[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-warning-100), var(--mj-color-warning-200));\n color: var(--mj-color-warning-800);\n}\n.badge-pk[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 8px; margin-right: 2px; }\n.badge-req[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-error-100), var(--mj-color-error-200));\n color: var(--mj-color-error-800);\n}\n.badge-ro[_ngcontent-%COMP%] {\n background: var(--mj-color-purple-50); color: var(--mj-color-purple-700);\n}\n\n\n\n.fmc-transform-zone[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: center;\n width: 100px;\n}\n.fmc-arrow-btn[_ngcontent-%COMP%] {\n width: 32px; height: 32px;\n border-radius: 50%; border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page); color: var(--mj-text-disabled);\n cursor: pointer; font-size: 12px;\n display: flex; align-items: center; justify-content: center;\n transition: all 0.2s;\n}\n.fmc-arrow-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); border-color: var(--mj-color-indigo-500);\n transform: scale(1.1);\n}\n.fmc-transform-pill[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 4px;\n padding: 4px 10px; border-radius: 16px;\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border: 1px solid var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n font-size: 11px; font-weight: 600;\n cursor: pointer; transition: all 0.2s;\n white-space: nowrap;\n}\n.fmc-transform-pill[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-100), var(--mj-color-indigo-200));\n transform: scale(1.02);\n}\n.fmc-transform-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 10px; }\n.fmc-transform-direct[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-bg-page), var(--mj-bg-surface-hover));\n border-color: var(--mj-color-neutral-300); color: var(--mj-text-muted);\n}\n.fmc-transform-direct[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n}\n.fmc-step-count[_ngcontent-%COMP%] {\n background: var(--mj-color-indigo-700); color: var(--mj-bg-surface); font-size: 9px;\n padding: 0 4px; border-radius: 8px; font-weight: 700;\n}\n\n\n\n.fmc-dest[_ngcontent-%COMP%] {\n flex: 1; min-width: 0;\n}\n.fmc-select[_ngcontent-%COMP%] {\n width: 100%; padding: 6px 10px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-select[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n\n\n\n.fmc-input[_ngcontent-%COMP%] {\n width: 100%; padding: 5px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-input[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n.fmc-input.mono[_ngcontent-%COMP%] { font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-size: 12px; }\n\n\n\n.fmc-flags[_ngcontent-%COMP%] {\n display: flex; gap: 6px; flex-shrink: 0;\n}\n.fmc-flag[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 3px;\n font-size: 11px; color: var(--mj-text-disabled); cursor: pointer;\n padding: 2px 4px; border-radius: 4px;\n transition: color 0.15s;\n}\n.fmc-flag[_ngcontent-%COMP%]:hover { color: var(--mj-color-indigo-500); }\n.fmc-flag[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 13px; height: 13px; cursor: pointer;\n accent-color: var(--mj-color-indigo-500);\n}\n.fmc-flag[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 10px; }\n.fmc-req-star[_ngcontent-%COMP%] { font-size: 14px; font-weight: 700; color: inherit; }\n\n\n\n.fmc-remove[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 13px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-remove[_ngcontent-%COMP%]:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n\n\n.fmc-transform-editor[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-bg-surface-hover);\n background: linear-gradient(180deg, var(--mj-color-indigo-50) 0%, var(--mj-bg-page) 100%);\n padding: 12px 14px;\n}\n.fmc-te-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.fmc-te-title[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px;\n}\n.fmc-te-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 4px; }\n.fmc-te-add[_ngcontent-%COMP%] {\n font-size: 11px; font-weight: 600; color: var(--mj-color-indigo-500);\n background: none; border: 1px solid var(--mj-color-indigo-200);\n border-radius: 6px; padding: 3px 10px;\n cursor: pointer; transition: all 0.15s;\n}\n.fmc-te-add[_ngcontent-%COMP%]:hover { background: var(--mj-color-indigo-50); }\n.fmc-te-add[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 3px; font-size: 10px; }\n\n\n\n.fmc-te-step[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 10px 12px;\n margin-bottom: 8px;\n transition: box-shadow 0.15s;\n}\n.fmc-te-step[_ngcontent-%COMP%]:hover { box-shadow: 0 1px 4px rgba(0,0,0,0.05); }\n.fmc-te-step[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n\n.fmc-te-step-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px; margin-bottom: 8px;\n}\n.fmc-te-step-num[_ngcontent-%COMP%] {\n width: 22px; height: 22px; border-radius: 50%;\n background: linear-gradient(135deg, var(--mj-color-indigo-500), var(--mj-color-indigo-500));\n color: var(--mj-bg-surface); font-size: 11px; font-weight: 700;\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n.fmc-te-type-select[_ngcontent-%COMP%] {\n flex: 1; padding: 4px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 12px; font-weight: 600;\n color: var(--mj-text-primary); background: var(--mj-bg-page);\n}\n.fmc-te-type-select[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-error-select[_ngcontent-%COMP%] {\n width: 100px; padding: 4px 6px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 11px; color: var(--mj-text-muted);\n background: var(--mj-bg-page);\n}\n.fmc-te-error-select[_ngcontent-%COMP%]:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-remove-step[_ngcontent-%COMP%] {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 12px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-te-remove-step[_ngcontent-%COMP%]:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n\n\n.fmc-te-config[_ngcontent-%COMP%] {\n padding-left: 30px;\n}\n.fmc-te-field[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n.fmc-te-field[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n.fmc-te-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block; font-size: 11px; font-weight: 600;\n color: var(--mj-text-muted); margin-bottom: 3px;\n}\n.fmc-te-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover); padding: 0 3px; border-radius: 3px;\n font-size: 10px; color: var(--mj-color-indigo-700);\n}\n.fmc-te-hint[_ngcontent-%COMP%] { font-weight: 400; color: var(--mj-text-disabled); }\n.fmc-te-row[_ngcontent-%COMP%] {\n display: flex; gap: 10px; align-items: flex-end;\n}\n.fmc-te-sm[_ngcontent-%COMP%] { max-width: 140px; }\n.fmc-textarea[_ngcontent-%COMP%] {\n resize: vertical; min-height: 40px;\n}\n\n\n\n.fmc-combine-chips[_ngcontent-%COMP%] {\n display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px;\n}\n.fmc-chip[_ngcontent-%COMP%] {\n font-size: 11px; padding: 3px 8px; border-radius: 14px;\n border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface);\n color: var(--mj-text-muted); cursor: pointer;\n transition: all 0.15s; font-weight: 500;\n}\n.fmc-chip[_ngcontent-%COMP%]:hover { border-color: var(--mj-color-indigo-300); color: var(--mj-color-indigo-700); }\n.fmc-chip.selected[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-400); color: var(--mj-color-indigo-700); font-weight: 600;\n}\n\n\n\n.fmc-lookup-table[_ngcontent-%COMP%] {\n display: flex; flex-direction: column; gap: 4px; margin-top: 4px;\n}\n.fmc-lookup-row[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 6px;\n}\n.fmc-lookup-row[_ngcontent-%COMP%] .fmc-input[_ngcontent-%COMP%] { flex: 1; }\n.fmc-lookup-arrow[_ngcontent-%COMP%] { color: var(--mj-color-indigo-200); font-size: 10px; flex-shrink: 0; }\n.fmc-lookup-del[_ngcontent-%COMP%] {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 11px; padding: 2px;\n transition: color 0.15s;\n}\n.fmc-lookup-del[_ngcontent-%COMP%]:hover { color: var(--mj-status-error); }\n.fmc-lookup-add[_ngcontent-%COMP%] {\n font-size: 11px; color: var(--mj-color-indigo-500); background: none;\n border: 1px dashed var(--mj-color-indigo-200); border-radius: 6px;\n padding: 4px 10px; cursor: pointer;\n transition: all 0.15s; margin-top: 2px;\n}\n.fmc-lookup-add[_ngcontent-%COMP%]:hover { background: var(--mj-color-indigo-50); }\n.fmc-lookup-add[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 3px; font-size: 10px; }\n\n\n\n.data-preview-section[_ngcontent-%COMP%] { margin-top: 24px; border-top: 1px solid var(--mj-border-subtle); padding-top: 16px; }\n.preview-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; margin-bottom: 12px; }\n\n.preview-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 12px; margin-bottom: 12px;\n}\n.preview-panel-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 8px;\n}\n.preview-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; margin: 0; }\n.preview-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { margin-right: 6px; color: var(--mj-color-indigo-500); }\n\n.preview-table-wrapper[_ngcontent-%COMP%] { overflow-x: auto; }\n.preview-table[_ngcontent-%COMP%] {\n width: 100%; border-collapse: collapse; font-size: 12px;\n}\n.preview-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left; padding: 5px 8px;\n background: var(--mj-border-default); font-weight: 600; font-size: 10px;\n text-transform: uppercase; color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default); white-space: nowrap;\n}\n.preview-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 4px 8px; border-bottom: 1px solid var(--mj-border-subtle);\n white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;\n}\n.preview-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover { background: var(--mj-status-info-bg); }\n\n\n\n.run-summary-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border-radius: 8px; padding: 12px;\n}\n.run-summary-row[_ngcontent-%COMP%] {\n display: flex; justify-content: space-between;\n padding: 4px 0; font-size: 13px;\n}\n.run-summary-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-weight: 500; }\n.run-status[_ngcontent-%COMP%] {\n font-size: 11px; padding: 2px 6px; border-radius: 4px; font-weight: 600;\n}\n.status-green[_ngcontent-%COMP%] { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.status-amber[_ngcontent-%COMP%] { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n.status-red[_ngcontent-%COMP%] { background: var(--mj-status-error-bg); color: var(--mj-color-error-600); }\n\n.entity-stat-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-page); border-radius: 6px; padding: 10px;\n margin-bottom: 8px;\n}\n.entity-stat-name[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; margin-bottom: 6px; }\n.entity-stat-grid[_ngcontent-%COMP%] { display: flex; gap: 12px; }\n.mini-stat[_ngcontent-%COMP%] { text-align: center; }\n.mini-val[_ngcontent-%COMP%] { display: block; font-size: 16px; font-weight: 600; }\n.mini-val.has-errors[_ngcontent-%COMP%] { color: var(--mj-color-error-600); }\n.mini-label[_ngcontent-%COMP%] { font-size: 10px; color: var(--mj-text-disabled); }\n\n\n\n.validation-banner[_ngcontent-%COMP%] {\n background: var(--mj-color-warning-50); border: 1px solid var(--mj-color-warning-200); border-radius: 8px;\n padding: 10px 14px; margin-bottom: 14px;\n display: flex; align-items: flex-start; gap: 10px;\n font-size: 13px; color: var(--mj-color-warning-600);\n}\n.validation-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] { margin-top: 2px; }\n.validation-warnings[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; }\n\n.field-map-card.validation-error[_ngcontent-%COMP%] .fmc-source[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-color-warning-600);\n padding-left: 8px;\n}\n\n\n\n@media (max-width: 1100px) { .right-panel[_ngcontent-%COMP%] { display: none; } }\n@media (max-width: 800px) { .left-panel[_ngcontent-%COMP%] { width: 260px; } }"] });
|
|
2360
2348
|
};
|
|
2361
2349
|
MappingWorkspaceComponent = __decorate([
|
|
2362
2350
|
RegisterClass(BaseResourceComponent, 'IntegrationMappingWorkspace')
|
|
@@ -2364,7 +2352,7 @@ MappingWorkspaceComponent = __decorate([
|
|
|
2364
2352
|
export { MappingWorkspaceComponent };
|
|
2365
2353
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MappingWorkspaceComponent, [{
|
|
2366
2354
|
type: Component,
|
|
2367
|
-
args: [{ standalone: false, selector: 'app-mapping-workspace', template: "<div class=\"mapping-workspace\">\n <div class=\"workspace-header\">\n <h2><i class=\"fa-solid fa-diagram-project\"></i> Mapping Workspace</h2>\n </div>\n\n @if (IsLoadingIntegrations) {\n <mj-loading text=\"Loading integrations...\" size=\"medium\"></mj-loading>\n } @else {\n <div class=\"workspace-body\">\n <!-- ============================================================ -->\n <!-- LEFT PANEL: Integration selector + Entity map list -->\n <!-- ============================================================ -->\n <div class=\"left-panel\">\n <div class=\"integration-selector\">\n <label class=\"panel-label\">Integration</label>\n <kendo-dropdownlist\n [data]=\"Integrations\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedIntegrationID\"\n (valueChange)=\"OnIntegrationChange($event)\"\n [defaultItem]=\"{ ID: '', Name: '-- Select --' }\">\n </kendo-dropdownlist>\n </div>\n\n @if (IsLoadingEntityMaps) {\n <mj-loading text=\"Loading entity maps...\" size=\"small\"></mj-loading>\n } @else if (SelectedIntegrationID) {\n <!-- Entity Map Header -->\n <div class=\"entity-map-header\">\n <span class=\"panel-label\" style=\"margin: 0;\">Entity Maps</span>\n <div class=\"header-actions\">\n <button kendoButton [look]=\"'flat'\" [size]=\"'small'\"\n (click)=\"OpenAddPanel()\" title=\"Add entity map\">\n <i class=\"fa-solid fa-plus\"></i> Add Map\n </button>\n </div>\n </div>\n\n <!-- ==================== ADD MAP PANEL ==================== -->\n @if (ShowAddPanel) {\n <div class=\"add-map-panel\">\n <div class=\"add-panel-top\">\n <h5><i class=\"fa-solid fa-plus-circle\"></i> Add Entity Map</h5>\n <button class=\"add-panel-close\" (click)=\"CloseAddPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Source Object Dropdown -->\n <div class=\"form-group\">\n <label>Source Object</label>\n @if (IsDiscoveringObjects) {\n <div class=\"source-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Discovering objects...\n </div>\n } @else if (DiscoverError) {\n <div class=\"discover-error-inline\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n {{ DiscoverError }}\n </div>\n } @else if (DiscoveredObjects.length === 0) {\n <div class=\"discover-error-inline\">\n No objects found in external system.\n </div>\n } @else {\n <kendo-dropdownlist\n [data]=\"DiscoveredObjects\"\n [textField]=\"'Label'\"\n [valueField]=\"'Name'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedSourceObjectName\"\n (valueChange)=\"OnSourceObjectChange($event)\"\n [filterable]=\"true\"\n [defaultItem]=\"{ Name: '', Label: 'Select source object...' }\">\n </kendo-dropdownlist>\n }\n </div>\n\n <!-- Target Mode Toggle -->\n <div class=\"target-mode-toggle\">\n <button class=\"target-mode-btn\"\n [class.active]=\"TargetMode === 'existing'\"\n (click)=\"SetTargetMode('existing')\">\n <i class=\"fa-solid fa-database\"></i> Existing Entity\n </button>\n <button class=\"target-mode-btn\"\n [class.active]=\"TargetMode === 'new'\"\n (click)=\"SetTargetMode('new')\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> New Entity\n </button>\n </div>\n\n <!-- Existing entity picker -->\n @if (TargetMode === 'existing') {\n <div class=\"form-group\">\n <label>Target MJ Entity</label>\n @if (IsLoadingEntities) {\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n } @else {\n <kendo-dropdownlist\n [data]=\"MJEntities\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedEntityID\"\n [filterable]=\"true\"\n [defaultItem]=\"{ ID: null, Name: 'Select entity...' }\">\n </kendo-dropdownlist>\n }\n </div>\n }\n\n <!-- New entity form -->\n @if (TargetMode === 'new') {\n <div class=\"new-entity-form\">\n <div class=\"section-label\">Define New Entity</div>\n <div class=\"form-group\">\n <label>DB Schema</label>\n <kendo-combobox\n [data]=\"DBSchemas\"\n [(ngModel)]=\"NewEntitySchemaName\"\n (valueChange)=\"OnSchemaNameChange()\"\n [allowCustom]=\"true\"\n [filterable]=\"true\"\n [placeholder]=\"'Select or type schema...'\">\n </kendo-combobox>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Table Name</label>\n <input kendoTextBox [(ngModel)]=\"NewEntityTableName\"\n [placeholder]=\"SuggestedTableName || 'Table name'\" />\n @if (SuggestedTableName && !NewEntityTableName) {\n <span class=\"auto-hint\">Suggested: {{ SuggestedTableName }}</span>\n }\n </div>\n <div class=\"form-group\">\n <label>Entity Name</label>\n <input kendoTextBox [(ngModel)]=\"NewEntityName\"\n [placeholder]=\"SuggestedEntityName || 'Entity name'\" />\n </div>\n </div>\n\n <!-- DDL Preview -->\n @if (SelectedSourceObjectName && NewEntitySchemaName && NewEntityTableName) {\n <div class=\"ddl-preview-section\">\n <button kendoButton [look]=\"'outline'\" [size]=\"'small'\"\n [disabled]=\"IsGeneratingDDL\"\n (click)=\"PreviewDDL()\">\n @if (IsGeneratingDDL) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating...\n } @else {\n <i class=\"fa-solid fa-database\"></i> Preview DDL\n }\n </button>\n @if (DDLPreviewError) {\n <div class=\"discover-error-inline\" style=\"margin-top: 8px;\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> {{ DDLPreviewError }}\n </div>\n }\n @if (DDLPreviewContent) {\n <pre class=\"ddl-preview-code\">{{ DDLPreviewContent }}</pre>\n }\n </div>\n }\n </div>\n }\n\n <!-- Sync direction -->\n <div class=\"form-group\">\n <label>Sync Direction</label>\n <kendo-dropdownlist\n [data]=\"['Pull', 'Push', 'Bidirectional']\"\n [(ngModel)]=\"AddSyncDirection\">\n </kendo-dropdownlist>\n </div>\n\n <!-- Save / Cancel -->\n <div class=\"add-form-actions\">\n <button kendoButton [themeColor]=\"'primary'\" [size]=\"'small'\"\n [disabled]=\"!IsAddFormValid || IsSavingEntityMap\"\n (click)=\"SaveAddMap()\">\n @if (IsSavingEntityMap) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else if (TargetMode === 'new') {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Create Pending Map\n } @else {\n <i class=\"fa-solid fa-check\"></i> Add Map\n }\n </button>\n <button kendoButton [size]=\"'small'\" (click)=\"CloseAddPanel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Search -->\n @if (AllMaps.length > 0) {\n <div class=\"search-box\">\n <input kendoTextBox\n [(ngModel)]=\"EntityMapSearchText\"\n placeholder=\"Search entity maps...\" />\n </div>\n }\n\n <!-- Entity Map List -->\n @if (AllMaps.length === 0 && !ShowAddPanel) {\n <p class=\"empty-hint\">\n No entity maps configured.\n <a href=\"javascript:void(0)\" (click)=\"OpenAddPanel()\" style=\"color: var(--mj-brand-primary);\">Add one</a>\n </p>\n } @else if (FilteredMaps.length === 0 && AllMaps.length > 0) {\n <p class=\"empty-hint\">No matches for \"{{ EntityMapSearchText }}\".</p>\n } @else {\n <div class=\"entity-map-list\">\n @for (item of FilteredMaps; track item.ID) {\n <div class=\"entity-map-item\"\n [class.selected]=\"IsSelectedMap(item.ID)\"\n [class.pending]=\"item.IsPending\"\n (click)=\"OnMapSelect(item)\">\n <div class=\"em-top-row\">\n <span class=\"em-name\">{{ item.SourceName }}</span>\n <span class=\"em-arrow\"><i class=\"fa-solid fa-arrow-right\"></i></span>\n <span class=\"em-entity\">{{ item.TargetName }}</span>\n </div>\n <div class=\"em-bottom-row\">\n <div class=\"em-badges\">\n <span class=\"badge badge-direction\">{{ item.SyncDirection }}</span>\n @if (item.IsPending) {\n <span class=\"badge badge-pending\">Pending</span>\n }\n </div>\n <div class=\"em-actions\">\n <button class=\"em-delete\" title=\"Delete\"\n (click)=\"OnDeleteMap(item, $event)\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n @if (!item.IsPending && item.RealMap) {\n <kendo-switch\n [(ngModel)]=\"item.RealMap.SyncEnabled\"\n [size]=\"'small'\"\n (valueChange)=\"OnToggleEntityMap(item.RealMap)\">\n </kendo-switch>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <!-- ============================================================ -->\n <!-- CENTER PANEL: Field mapping / Pending entity / Placeholder -->\n <!-- ============================================================ -->\n <div class=\"center-panel\">\n @if (!SelectedMapID) {\n <!-- No selection placeholder -->\n <div class=\"placeholder-message\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n <p>Select an entity map from the left panel to view and edit field mappings.</p>\n </div>\n } @else if (SelectedPendingMap) {\n <!-- ==================== PENDING ENTITY VIEW ==================== -->\n <div class=\"pending-entity-panel\">\n <div class=\"pending-icon\"><i class=\"fa-solid fa-clock\"></i></div>\n <h3>Pending Entity: {{ SelectedPendingMap.EntityName }}</h3>\n <p>\n This entity map is waiting for the target entity\n <strong>{{ SelectedPendingMap.SchemaName }}.{{ SelectedPendingMap.TableName }}</strong>\n to be created. Run the DDL migration and CodeGen to activate this mapping.\n </p>\n\n <!-- Progress stepper -->\n <div class=\"pending-steps\">\n <div class=\"step\">\n <div class=\"step-circle done\"><i class=\"fa-solid fa-check\"></i></div>\n <span class=\"step-label\">Map Created</span>\n </div>\n <div class=\"step-connector\" [class.done]=\"SelectedPendingMap.DDLContent\"></div>\n <div class=\"step\">\n <div class=\"step-circle\" [ngClass]=\"GetPendingStepStatus(SelectedPendingMap, 2)\">\n @if (SelectedPendingMap.DDLContent) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n 2\n }\n </div>\n <span class=\"step-label\">DDL Generated</span>\n </div>\n <div class=\"step-connector\"></div>\n <div class=\"step\">\n <div class=\"step-circle future\">3</div>\n <span class=\"step-label\">Deploy & CodeGen</span>\n </div>\n <div class=\"step-connector\"></div>\n <div class=\"step\">\n <div class=\"step-circle future\">4</div>\n <span class=\"step-label\">Ready to Sync</span>\n </div>\n </div>\n\n <!-- DDL content -->\n @if (SelectedPendingMap.DDLContent) {\n <div class=\"ddl-preview-inline\">\n <h4 style=\"font-size: 14px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-database\"></i> Generated DDL\n </h4>\n <pre class=\"ddl-code-block\">{{ SelectedPendingMap.DDLContent }}</pre>\n <div class=\"ddl-actions\">\n <button kendoButton [look]=\"'outline'\" [size]=\"'small'\"\n (click)=\"CopyDDLToClipboard(SelectedPendingMap.DDLContent)\">\n <i class=\"fa-solid fa-copy\"></i> Copy DDL\n </button>\n </div>\n </div>\n }\n\n <!-- Source fields list -->\n @if (SelectedPendingMap.SourceFields.length > 0) {\n <div class=\"pending-fields-section\">\n <h4 style=\"font-size: 14px; margin: 16px 0 8px;\">\n <i class=\"fa-solid fa-list\"></i> Source Fields\n <span style=\"color: var(--mj-text-muted); font-weight: 400;\">({{ SelectedPendingMap.SourceFields.length }})</span>\n </h4>\n <div class=\"pending-fields-list\">\n @for (field of SelectedPendingMap.SourceFields; track field.Name) {\n <div class=\"pending-field-item\">\n <span class=\"pending-field-name\">{{ field.Name }}</span>\n <span class=\"pending-field-type\">{{ field.Type }}</span>\n @if (field.IsPrimaryKey) {\n <i class=\"fa-solid fa-key key-icon\" title=\"Key field\"></i>\n }\n @if (field.IsRequired) {\n <span class=\"pending-field-req\">*</span>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n } @else if (IsLoadingFieldMaps) {\n <mj-loading text=\"Loading field maps...\" size=\"medium\"></mj-loading>\n } @else {\n <!-- ==================== FIELD MAPPING EDITOR ==================== -->\n\n <!-- Auto-map banner -->\n @if (ShowAutoMapBanner) {\n <div class=\"auto-map-banner\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <div class=\"banner-text\">\n <p><strong>{{ AutoMapCount }} field{{ AutoMapCount !== 1 ? 's' : '' }} auto-mapped</strong> by matching source and destination field names.</p>\n </div>\n <button kendoButton [look]=\"'flat'\" [size]=\"'small'\" (click)=\"DismissAutoMapBanner()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n\n <!-- Validation warnings -->\n @if (ActiveEditableFields.length > 0 && !MappingValidation.IsValid) {\n <div class=\"validation-banner\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"validation-warnings\">\n @for (warning of MappingValidation.Warnings; track warning) {\n <span>{{ warning }}</span>\n }\n </div>\n </div>\n }\n\n <div class=\"field-mapping-header\">\n <h3 class=\"panel-title\">\n Field Mappings\n <span class=\"field-count\">({{ ActiveEditableFields.length }})</span>\n </h3>\n <div class=\"field-mapping-actions\">\n <button kendoButton [look]=\"'outline'\" [size]=\"'small'\"\n [disabled]=\"IsLoadingSourceFields\"\n (click)=\"RerunAutoMap()\" title=\"Auto-match source and destination fields by name\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map\n </button>\n <button kendoButton [look]=\"'outline'\" [size]=\"'small'\"\n (click)=\"AddFieldMapping()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n <button kendoButton [themeColor]=\"'primary'\" [size]=\"'small'\"\n [disabled]=\"!HasDirtyFields || IsSavingFields\"\n (click)=\"SaveFieldMappings()\">\n @if (IsSavingFields) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-floppy-disk\"></i> Save\n }\n </button>\n </div>\n </div>\n\n @if (ActiveEditableFields.length === 0) {\n <p class=\"empty-hint\">\n No field mappings yet.\n <a href=\"javascript:void(0)\" (click)=\"AddFieldMapping()\" style=\"color: var(--mj-brand-primary);\">Add one</a>\n </p>\n } @else {\n <div class=\"field-map-cards\">\n @for (field of ActiveEditableFields; track field; let i = $index) {\n <div class=\"field-map-card\" [class.validation-error]=\"field.IsRequired && !field.DestinationFieldName\"\n [class.has-transform]=\"field.TransformPipeline.length > 0\">\n\n <!-- Main mapping row -->\n <div class=\"fmc-row\">\n <!-- Source column -->\n <div class=\"fmc-source\">\n @if (field.IsNew) {\n <input type=\"text\" class=\"fmc-input\" [(ngModel)]=\"field.SourceFieldName\"\n (ngModelChange)=\"OnFieldChanged(field)\" placeholder=\"Source field name\" />\n } @else {\n <div class=\"fmc-field-name\">{{ field.SourceFieldName }}</div>\n <div class=\"fmc-badges\">\n @if (field.SourceFieldType) {\n <span class=\"fmc-badge badge-type\">{{ field.SourceFieldType }}</span>\n }\n @if (field.IsSourcePK) {\n <span class=\"fmc-badge badge-pk\" title=\"Primary Key\"><i class=\"fa-solid fa-key\"></i> PK</span>\n }\n @if (field.IsSourceRequired) {\n <span class=\"fmc-badge badge-req\" title=\"Required\">REQ</span>\n }\n @if (field.IsSourceReadOnly) {\n <span class=\"fmc-badge badge-ro\" title=\"Read-Only\">RO</span>\n }\n </div>\n }\n </div>\n\n <!-- Transform indicator -->\n <div class=\"fmc-transform-zone\">\n @if (field.TransformPipeline.length > 1) {\n <button class=\"fmc-transform-pill\" (click)=\"ToggleTransformEditor(field)\"\n [title]=\"field.TransformPipeline.length + ' transform step(s)'\">\n <i [class]=\"GetTransformIcon(field.TransformPipeline[0].Type)\"></i>\n <span>{{ GetTransformLabel(field.TransformPipeline[0].Type) }}</span>\n <span class=\"fmc-step-count\">+{{ field.TransformPipeline.length - 1 }}</span>\n </button>\n } @else {\n <button class=\"fmc-transform-pill fmc-transform-direct\" (click)=\"ToggleTransformEditor(field)\"\n title=\"Click to change transform type\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span>{{ field.TransformPipeline.length > 0 ? GetTransformLabel(field.TransformPipeline[0].Type) : 'Direct' }}</span>\n </button>\n }\n </div>\n\n <!-- Destination column -->\n <div class=\"fmc-dest\">\n @if (DestinationFields.length > 0) {\n <select class=\"fmc-select\" [(ngModel)]=\"field.DestinationFieldName\"\n (ngModelChange)=\"OnFieldChanged(field)\">\n <option value=\"\">-- Select destination --</option>\n @for (df of DestinationFields; track df.ID) {\n <option [value]=\"df.Name\">{{ df.Name }}</option>\n }\n </select>\n } @else {\n <input type=\"text\" class=\"fmc-input\" [(ngModel)]=\"field.DestinationFieldName\"\n (ngModelChange)=\"OnFieldChanged(field)\" placeholder=\"Destination field\" />\n }\n </div>\n\n <!-- Sync flags -->\n <div class=\"fmc-flags\">\n <label class=\"fmc-flag\" title=\"Key field for matching\">\n <input type=\"checkbox\" [(ngModel)]=\"field.IsKeyField\"\n (ngModelChange)=\"OnFieldChanged(field)\" />\n <i class=\"fa-solid fa-key\"></i>\n </label>\n <label class=\"fmc-flag\" title=\"Required field\">\n <input type=\"checkbox\" [(ngModel)]=\"field.IsRequired\"\n (ngModelChange)=\"OnFieldChanged(field)\" />\n <span class=\"fmc-req-star\">*</span>\n </label>\n </div>\n\n <!-- Remove button -->\n <button class=\"fmc-remove\" title=\"Remove mapping\" (click)=\"RemoveFieldMapping(i)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Transform pipeline editor (expandable) -->\n @if (field.ShowTransformEditor && field.TransformPipeline.length > 0) {\n <div class=\"fmc-transform-editor\">\n <div class=\"fmc-te-header\">\n <span class=\"fmc-te-title\"><i class=\"fa-solid fa-wand-magic-sparkles\"></i> Transform Pipeline</span>\n <button class=\"fmc-te-add\" (click)=\"AddTransformStep(field)\" title=\"Add another step\">\n <i class=\"fa-solid fa-plus\"></i> Add Step\n </button>\n </div>\n @for (step of field.TransformPipeline; track $index; let si = $index) {\n <div class=\"fmc-te-step\">\n <div class=\"fmc-te-step-header\">\n <span class=\"fmc-te-step-num\">{{ si + 1 }}</span>\n <select class=\"fmc-te-type-select\" [ngModel]=\"step.Type\"\n (ngModelChange)=\"OnTransformTypeChange(field, step, $event)\">\n @for (tt of TransformTypes; track tt.Value) {\n <option [value]=\"tt.Value\">{{ tt.Label }}</option>\n }\n </select>\n <select class=\"fmc-te-error-select\" [(ngModel)]=\"step.OnError\"\n (ngModelChange)=\"OnTransformConfigChange(field)\" title=\"On error\">\n <option value=\"Fail\">Fail</option>\n <option value=\"Skip\">Skip row</option>\n <option value=\"Null\">Set null</option>\n </select>\n <button class=\"fmc-te-remove-step\" (click)=\"RemoveTransformStep(field, si)\" title=\"Remove step\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n\n <!-- Config editors per type -->\n <div class=\"fmc-te-config\">\n @switch (step.Type) {\n @case ('direct') {\n <div class=\"fmc-te-field\">\n <label>Default value (when source is null)</label>\n <input type=\"text\" class=\"fmc-input\" [ngModel]=\"step.Config['DefaultValue'] ?? ''\"\n (ngModelChange)=\"step.Config['DefaultValue'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"Leave empty for no default\" />\n </div>\n }\n @case ('regex') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field\">\n <label>Pattern</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Pattern'] ?? ''\"\n (ngModelChange)=\"step.Config['Pattern'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"e.g. (\\d{3})-(\\d{4})\" />\n </div>\n <div class=\"fmc-te-field\">\n <label>Replacement</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Replacement'] ?? ''\"\n (ngModelChange)=\"step.Config['Replacement'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"e.g. $1$2\" />\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Flags</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Flags'] ?? 'g'\"\n (ngModelChange)=\"step.Config['Flags'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"gi\" />\n </div>\n </div>\n }\n @case ('split') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field\">\n <label>Delimiter</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Delimiter'] ?? ','\"\n (ngModelChange)=\"step.Config['Delimiter'] = $event; OnTransformConfigChange(field)\"\n placeholder=\",\" />\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Part index (0-based)</label>\n <input type=\"number\" class=\"fmc-input\" [ngModel]=\"step.Config['Index'] ?? 0\"\n (ngModelChange)=\"step.Config['Index'] = +$event; OnTransformConfigChange(field)\"\n min=\"0\" />\n </div>\n </div>\n }\n @case ('combine') {\n <div class=\"fmc-te-field\">\n <label>Source fields to combine</label>\n <div class=\"fmc-combine-chips\">\n @for (sf of GetAvailableSourceFields(); track sf) {\n <button class=\"fmc-chip\" [class.selected]=\"IsCombineFieldSelected(step.Config, sf)\"\n (click)=\"ToggleCombineField(step.Config, sf); OnTransformConfigChange(field)\">\n {{ sf }}\n </button>\n }\n </div>\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Separator</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Separator'] ?? ' '\"\n (ngModelChange)=\"step.Config['Separator'] = $event; OnTransformConfigChange(field)\"\n placeholder=\" \" />\n </div>\n }\n @case ('lookup') {\n <div class=\"fmc-te-field\">\n <label>Value mapping</label>\n <div class=\"fmc-lookup-table\">\n @for (entry of GetLookupEntries(step.Config); track $index) {\n <div class=\"fmc-lookup-row\">\n <input type=\"text\" class=\"fmc-input\" [value]=\"entry.key\" placeholder=\"Source value\"\n (change)=\"UpdateLookupEntry(step.Config, entry.key, $any($event.target).value, entry.value); OnTransformConfigChange(field)\" />\n <i class=\"fa-solid fa-arrow-right fmc-lookup-arrow\"></i>\n <input type=\"text\" class=\"fmc-input\" [value]=\"entry.value\" placeholder=\"Mapped value\"\n (change)=\"UpdateLookupEntry(step.Config, entry.key, entry.key, $any($event.target).value); OnTransformConfigChange(field)\" />\n <button class=\"fmc-lookup-del\" (click)=\"RemoveLookupEntry(step.Config, entry.key); OnTransformConfigChange(field)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n <button class=\"fmc-lookup-add\" (click)=\"AddLookupEntry(step.Config); OnTransformConfigChange(field)\">\n <i class=\"fa-solid fa-plus\"></i> Add mapping\n </button>\n </div>\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Default (when no match)</label>\n <input type=\"text\" class=\"fmc-input\" [ngModel]=\"step.Config['Default'] ?? ''\"\n (ngModelChange)=\"step.Config['Default'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"null\" />\n </div>\n }\n @case ('format') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Format type</label>\n <select class=\"fmc-select\" [ngModel]=\"step.Config['FormatType'] ?? 'date'\"\n (ngModelChange)=\"step.Config['FormatType'] = $event; OnTransformConfigChange(field)\">\n <option value=\"date\">Date</option>\n <option value=\"number\">Number</option>\n <option value=\"string\">String</option>\n </select>\n </div>\n <div class=\"fmc-te-field\">\n <label>Format string</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['FormatString'] ?? 'ISO'\"\n (ngModelChange)=\"step.Config['FormatString'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"ISO or decimal places\" />\n </div>\n </div>\n }\n @case ('coerce') {\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Target type</label>\n <select class=\"fmc-select\" [ngModel]=\"step.Config['TargetType'] ?? 'string'\"\n (ngModelChange)=\"step.Config['TargetType'] = $event; OnTransformConfigChange(field)\">\n <option value=\"string\">String</option>\n <option value=\"number\">Number</option>\n <option value=\"boolean\">Boolean</option>\n <option value=\"date\">Date</option>\n </select>\n </div>\n }\n @case ('substring') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Start index</label>\n <input type=\"number\" class=\"fmc-input\" [ngModel]=\"step.Config['Start'] ?? 0\"\n (ngModelChange)=\"step.Config['Start'] = +$event; OnTransformConfigChange(field)\"\n min=\"0\" />\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Length (blank = to end)</label>\n <input type=\"number\" class=\"fmc-input\" [ngModel]=\"step.Config['Length'] ?? ''\"\n (ngModelChange)=\"step.Config['Length'] = $event ? +$event : undefined; OnTransformConfigChange(field)\"\n min=\"1\" />\n </div>\n </div>\n }\n @case ('custom') {\n <div class=\"fmc-te-field\">\n <label>JavaScript expression <span class=\"fmc-te-hint\">(use <code>value</code> and <code>fields</code>)</span></label>\n <textarea class=\"fmc-input mono fmc-textarea\" [ngModel]=\"step.Config['Expression'] ?? 'value'\"\n (ngModelChange)=\"step.Config['Expression'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"value.toUpperCase()\" rows=\"2\"></textarea>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Data Preview Section -->\n <div class=\"data-preview-section\">\n <div class=\"preview-actions\">\n <button kendoButton [look]=\"'outline'\" [size]=\"'small'\"\n [disabled]=\"IsLoadingSourcePreview\"\n (click)=\"LoadSourcePreview()\">\n <i class=\"fa-solid fa-cloud-arrow-down\"></i> Preview Source\n </button>\n <button kendoButton [look]=\"'outline'\" [size]=\"'small'\"\n [disabled]=\"IsLoadingDestPreview\"\n (click)=\"LoadDestPreview()\">\n <i class=\"fa-solid fa-database\"></i> Preview Destination\n </button>\n </div>\n\n @if (ShowSourcePreview) {\n <div class=\"preview-panel\">\n <div class=\"preview-panel-header\">\n <h4><i class=\"fa-solid fa-cloud\"></i> Source Data Preview</h4>\n <button class=\"add-panel-close\" (click)=\"CloseSourcePreview()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n @if (IsLoadingSourcePreview) {\n <mj-loading text=\"Loading source data...\" size=\"small\"></mj-loading>\n } @else if (SourcePreviewData.length === 0) {\n <p class=\"empty-hint\">No source data available.</p>\n } @else {\n <div class=\"preview-table-wrapper\">\n <table class=\"preview-table\">\n <thead>\n <tr>\n @for (col of GetPreviewColumns(SourcePreviewData); track col) {\n <th>{{ col }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of SourcePreviewData; track $index) {\n <tr>\n @for (col of GetPreviewColumns(SourcePreviewData); track col) {\n <td>{{ FormatPreviewValue(row[col]) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n @if (ShowDestPreview) {\n <div class=\"preview-panel\">\n <div class=\"preview-panel-header\">\n <h4><i class=\"fa-solid fa-database\"></i> Destination Data Preview</h4>\n <button class=\"add-panel-close\" (click)=\"CloseDestPreview()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n @if (IsLoadingDestPreview) {\n <mj-loading text=\"Loading destination data...\" size=\"small\"></mj-loading>\n } @else if (DestPreviewData.length === 0) {\n <p class=\"empty-hint\">No destination data available.</p>\n } @else {\n <div class=\"preview-table-wrapper\">\n <table class=\"preview-table\">\n <thead>\n <tr>\n @for (col of GetPreviewColumns(DestPreviewData); track col) {\n <th>{{ col }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of DestPreviewData; track $index) {\n <tr>\n @for (col of GetPreviewColumns(DestPreviewData); track col) {\n <td>{{ FormatPreviewValue(row[col]) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- ============================================================ -->\n <!-- RIGHT PANEL: Last run details -->\n <!-- ============================================================ -->\n <div class=\"right-panel\">\n <h4 class=\"panel-label\">Last Run Details</h4>\n @if (!SelectedIntegrationID) {\n <p class=\"empty-hint\">Select an integration to see run details.</p>\n } @else if (IsLoadingRunDetails) {\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n } @else if (!LatestRun) {\n <p class=\"empty-hint\">No runs found.</p>\n } @else {\n <div class=\"run-summary-card\">\n <div class=\"run-summary-row\">\n <span class=\"label\">Status</span>\n <span class=\"run-status\" [class]=\"'status-' + RunStatusColor\">\n {{ LatestRun.Status }}\n </span>\n </div>\n <div class=\"run-summary-row\">\n <span class=\"label\">Started</span>\n <span>{{ FormatDate(LatestRun.StartedAt) }}</span>\n </div>\n <div class=\"run-summary-row\">\n <span class=\"label\">Total Records</span>\n <span>{{ LatestRun.TotalRecords | number }}</span>\n </div>\n <div class=\"run-summary-row\">\n <span class=\"label\">Run By</span>\n <span>{{ LatestRun.RunByUser }}</span>\n </div>\n </div>\n\n @if (RunEntityDetails.length > 0) {\n <h4 class=\"panel-label\" style=\"margin-top: 16px;\">Per-Entity Stats</h4>\n @for (detail of RunEntityDetails; track detail.EntityID) {\n <div class=\"entity-stat-card\">\n <div class=\"entity-stat-name\">{{ detail.Entity }}</div>\n <div class=\"entity-stat-grid\">\n <div class=\"mini-stat\">\n <span class=\"mini-val\">{{ detail.RecordsCreated }}</span>\n <span class=\"mini-label\">Created</span>\n </div>\n <div class=\"mini-stat\">\n <span class=\"mini-val\">{{ detail.RecordsUpdated }}</span>\n <span class=\"mini-label\">Updated</span>\n </div>\n <div class=\"mini-stat\">\n <span class=\"mini-val\" [class.has-errors]=\"detail.RecordsErrored > 0\">\n {{ detail.RecordsErrored }}\n </span>\n <span class=\"mini-label\">Errors</span>\n </div>\n </div>\n </div>\n }\n }\n }\n </div>\n </div>\n }\n</div>\n", styles: [".mapping-workspace { padding: 24px; height: 100%; display: flex; flex-direction: column; }\n.workspace-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.workspace-header h2 {\n margin: 0; font-size: 20px; font-weight: 600;\n}\n.workspace-header h2 i { margin-right: 8px; color: var(--mj-color-indigo-500); }\n\n/* ===== Three-panel layout ===== */\n.workspace-body {\n display: flex; flex: 1; gap: 1px; background: var(--mj-border-default);\n border-radius: 10px; overflow: hidden; min-height: 500px;\n}\n\n.left-panel { width: 320px; min-width: 280px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n.center-panel { flex: 1; background: var(--mj-bg-surface); padding: 20px; overflow-y: auto; }\n.right-panel { width: 280px; min-width: 240px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n\n/* ===== Shared ===== */\n.panel-label {\n font-size: 11px; font-weight: 700; color: var(--mj-text-disabled);\n text-transform: uppercase; letter-spacing: 0.6px;\n margin: 0 0 6px 0; display: block;\n}\n.panel-title { margin: 0 0 12px 0; font-size: 16px; font-weight: 600; }\n.panel-title .field-count { color: var(--mj-text-disabled); font-weight: 400; font-size: 13px; }\n.empty-hint { color: var(--mj-text-disabled); font-size: 13px; font-style: italic; }\n.search-box { margin-bottom: 12px; }\n\n/* ===== Integration selector ===== */\n.integration-selector { margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--mj-border-subtle); }\n\n/* ===== Entity Map Header ===== */\n.entity-map-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.header-actions { display: flex; gap: 4px; }\n\n/* ===== Add Map Panel ===== */\n.add-map-panel {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 10px;\n padding: 16px; margin-bottom: 14px;\n}\n.add-panel-top {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 14px;\n}\n.add-panel-top h5 { margin: 0; font-size: 14px; font-weight: 600; }\n.add-panel-close {\n background: none; border: none; cursor: pointer; color: var(--mj-text-disabled); font-size: 14px;\n}\n.add-panel-close:hover { color: var(--mj-text-primary); }\n\n.form-group { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }\n.form-group label { font-size: 12px; font-weight: 600; color: var(--mj-text-muted); }\n.form-row { display: flex; gap: 10px; }\n.form-row .form-group { flex: 1; }\n\n.source-loading {\n display: flex; align-items: center; gap: 8px;\n font-size: 12px; color: var(--mj-text-disabled); padding: 6px 0;\n}\n.source-loading i { color: var(--mj-color-indigo-500); }\n\n.discover-error-inline {\n font-size: 12px; color: var(--mj-color-error-600); padding: 6px 0;\n}\n.discover-error-inline i { margin-right: 4px; }\n\n/* Target mode toggle */\n.target-mode-toggle {\n display: flex; border: 1px solid var(--mj-border-default); border-radius: 6px;\n overflow: hidden; margin-bottom: 12px;\n}\n.target-mode-btn {\n flex: 1; padding: 8px 12px; font-size: 12px; font-weight: 600;\n text-align: center; cursor: pointer; background: var(--mj-bg-surface); border: none;\n color: var(--mj-text-muted); transition: all 0.15s;\n}\n.target-mode-btn:first-child { border-right: 1px solid var(--mj-border-default); }\n.target-mode-btn.active { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.target-mode-btn:not(.active):hover { background: var(--mj-status-info-bg); color: var(--mj-color-indigo-500); }\n.target-mode-btn i { margin-right: 4px; }\n\n/* New entity form */\n.new-entity-form {\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 14px; margin-bottom: 12px;\n}\n.new-entity-form .section-label {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 10px;\n}\n.auto-hint { font-size: 10px; color: var(--mj-text-disabled); font-style: italic; }\n\n/* DDL preview in add panel */\n.ddl-preview-section { margin-top: 8px; }\n.ddl-preview-code {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 10px;\n border-radius: 4px; font-size: 11px; line-height: 1.5;\n max-height: 200px; overflow: auto; white-space: pre-wrap;\n word-break: break-word; margin-top: 8px;\n}\n\n.add-form-actions { display: flex; gap: 6px; padding-top: 4px; }\n\n/* ===== Entity Map List ===== */\n.entity-map-list { display: flex; flex-direction: column; gap: 4px; }\n.entity-map-item {\n padding: 8px 10px; border-radius: 6px;\n cursor: pointer; border: 1px solid var(--mj-border-subtle); transition: all 0.15s;\n}\n.entity-map-item:hover { background: var(--mj-bg-page); }\n.entity-map-item.selected { background: var(--mj-status-info-bg); border-color: var(--mj-color-indigo-500); }\n.entity-map-item.pending { border-left: 3px solid var(--mj-status-warning); }\n\n.em-top-row {\n display: flex; align-items: center; gap: 4px;\n font-size: 13px; margin-bottom: 4px;\n}\n.em-name { font-weight: 600; }\n.em-arrow { color: var(--mj-text-disabled); font-size: 11px; }\n.em-entity { color: var(--mj-text-muted); }\n\n.em-bottom-row {\n display: flex; align-items: center; justify-content: space-between;\n font-size: 11px; color: var(--mj-text-disabled);\n}\n.em-badges { display: flex; gap: 4px; align-items: center; }\n.badge {\n font-size: 10px; padding: 1px 6px; border-radius: 4px; font-weight: 600;\n}\n.badge-direction { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n.badge-pending { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n\n.em-actions { display: flex; align-items: center; gap: 4px; }\n.em-delete {\n opacity: 0; transition: opacity 0.15s;\n cursor: pointer; color: var(--mj-color-error-600); background: none; border: none;\n padding: 2px 4px; font-size: 12px;\n}\n.entity-map-item:hover .em-delete { opacity: 1; }\n\n/* ===== Center Panel: Placeholder ===== */\n.placeholder-message {\n display: flex; flex-direction: column; align-items: center;\n justify-content: center; height: 300px; color: var(--mj-text-disabled);\n}\n.placeholder-message i { font-size: 36px; margin-bottom: 12px; }\n.placeholder-message p { text-align: center; }\n\n/* ===== Pending Entity Panel ===== */\n.pending-entity-panel {\n background: var(--mj-status-warning-bg); border: 1px solid var(--mj-color-warning-200); border-radius: 10px;\n padding: 24px; text-align: center;\n}\n.pending-icon { font-size: 40px; color: var(--mj-status-warning); margin-bottom: 12px; }\n.pending-entity-panel h3 { font-size: 16px; margin-bottom: 8px; }\n.pending-entity-panel p { font-size: 13px; color: var(--mj-text-disabled); margin-bottom: 16px; line-height: 1.5; }\n\n/* Stepper */\n.pending-steps {\n display: flex; gap: 0; margin: 20px 0; justify-content: center; align-items: center;\n}\n.step {\n display: flex; flex-direction: column; align-items: center; gap: 6px;\n padding: 0 16px;\n}\n.step-circle {\n width: 36px; height: 36px; border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n font-size: 14px; font-weight: 700;\n}\n.step-circle.done { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.step-circle.current { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.step-circle.future { background: var(--mj-bg-surface-hover); color: var(--mj-text-disabled); }\n.step-label { font-size: 10px; font-weight: 600; color: var(--mj-text-disabled); text-transform: uppercase; white-space: nowrap; }\n.step-connector { width: 32px; height: 2px; background: var(--mj-border-default); align-self: center; margin-bottom: 18px; }\n.step-connector.done { background: var(--mj-color-success-700); }\n\n/* DDL in pending view */\n.ddl-preview-inline { margin-top: 16px; text-align: left; }\n.ddl-code-block {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 12px;\n border-radius: 6px; font-size: 12px; line-height: 1.5;\n max-height: 250px; overflow: auto; white-space: pre-wrap;\n}\n.ddl-actions { display: flex; gap: 8px; margin-top: 12px; justify-content: center; }\n\n/* Pending fields list */\n.pending-fields-section { text-align: left; }\n.pending-fields-list {\n display: flex; flex-direction: column; gap: 2px;\n max-height: 200px; overflow-y: auto;\n}\n.pending-field-item {\n display: flex; align-items: center; gap: 8px;\n padding: 4px 8px; font-size: 13px; border-radius: 4px;\n}\n.pending-field-item:hover { background: var(--mj-status-warning-bg); }\n.pending-field-name { font-weight: 600; }\n.pending-field-type { font-size: 11px; color: var(--mj-text-disabled); background: var(--mj-bg-surface-hover); padding: 1px 6px; border-radius: 3px; }\n.pending-field-req { color: var(--mj-color-error-600); font-weight: 700; }\n\n/* ===== Auto-map banner ===== */\n.auto-map-banner {\n background: var(--mj-status-info-bg); border: 1px solid var(--mj-color-info-100); border-radius: 8px;\n padding: 12px 16px; margin-bottom: 16px;\n display: flex; align-items: center; gap: 12px;\n}\n.auto-map-banner > i { color: var(--mj-color-indigo-500); font-size: 18px; }\n.auto-map-banner .banner-text { flex: 1; }\n.auto-map-banner .banner-text p { font-size: 13px; color: var(--mj-text-muted); margin: 0; }\n.auto-map-banner .banner-text strong { color: var(--mj-text-primary); }\n\n/* ===== Field Mapping Editor ===== */\n.field-mapping-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.field-mapping-actions { display: flex; gap: 6px; }\n\n/* ===== Field Map Cards (New world-class design) ===== */\n.field-map-cards {\n display: flex; flex-direction: column; gap: 6px;\n}\n\n.field-map-card {\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: var(--mj-bg-surface);\n transition: all 0.2s ease;\n overflow: hidden;\n}\n.field-map-card:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 2px 8px rgba(74, 108, 247, 0.06);\n}\n.field-map-card.has-transform {\n border-left: 3px solid var(--mj-color-indigo-500);\n}\n.field-map-card.validation-error {\n border-color: var(--mj-color-warning-200);\n background: var(--mj-status-warning-bg);\n}\n\n/* Main mapping row */\n.fmc-row {\n display: flex; align-items: center; gap: 10px;\n padding: 10px 14px;\n}\n\n/* Source column */\n.fmc-source {\n flex: 1; min-width: 0;\n}\n.fmc-field-name {\n font-size: 13px; font-weight: 600; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.fmc-badges {\n display: flex; gap: 4px; margin-top: 3px; flex-wrap: wrap;\n}\n.fmc-badge {\n font-size: 9px; font-weight: 700; padding: 1px 5px;\n border-radius: 3px; text-transform: uppercase; letter-spacing: 0.3px;\n white-space: nowrap; line-height: 1.5;\n}\n.badge-type {\n background: var(--mj-bg-surface-hover); color: var(--mj-text-muted);\n}\n.badge-pk {\n background: linear-gradient(135deg, var(--mj-color-warning-100), var(--mj-color-warning-200));\n color: var(--mj-color-warning-800);\n}\n.badge-pk i { font-size: 8px; margin-right: 2px; }\n.badge-req {\n background: linear-gradient(135deg, var(--mj-color-error-100), var(--mj-color-error-200));\n color: var(--mj-color-error-800);\n}\n.badge-ro {\n background: var(--mj-color-purple-50); color: var(--mj-color-purple-700);\n}\n\n/* Transform zone (center arrow / pill) */\n.fmc-transform-zone {\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: center;\n width: 100px;\n}\n.fmc-arrow-btn {\n width: 32px; height: 32px;\n border-radius: 50%; border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page); color: var(--mj-text-disabled);\n cursor: pointer; font-size: 12px;\n display: flex; align-items: center; justify-content: center;\n transition: all 0.2s;\n}\n.fmc-arrow-btn:hover {\n background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); border-color: var(--mj-color-indigo-500);\n transform: scale(1.1);\n}\n.fmc-transform-pill {\n display: flex; align-items: center; gap: 4px;\n padding: 4px 10px; border-radius: 16px;\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border: 1px solid var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n font-size: 11px; font-weight: 600;\n cursor: pointer; transition: all 0.2s;\n white-space: nowrap;\n}\n.fmc-transform-pill:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-100), var(--mj-color-indigo-200));\n transform: scale(1.02);\n}\n.fmc-transform-pill i { font-size: 10px; }\n.fmc-transform-direct {\n background: linear-gradient(135deg, var(--mj-bg-page), var(--mj-bg-surface-hover));\n border-color: var(--mj-color-neutral-300); color: var(--mj-text-muted);\n}\n.fmc-transform-direct:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n}\n.fmc-step-count {\n background: var(--mj-color-indigo-700); color: var(--mj-bg-surface); font-size: 9px;\n padding: 0 4px; border-radius: 8px; font-weight: 700;\n}\n\n/* Destination column */\n.fmc-dest {\n flex: 1; min-width: 0;\n}\n.fmc-select {\n width: 100%; padding: 6px 10px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-select:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n\n/* Shared input style */\n.fmc-input {\n width: 100%; padding: 5px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-input:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n.fmc-input.mono { font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-size: 12px; }\n\n/* Flags (key, required) */\n.fmc-flags {\n display: flex; gap: 6px; flex-shrink: 0;\n}\n.fmc-flag {\n display: flex; align-items: center; gap: 3px;\n font-size: 11px; color: var(--mj-text-disabled); cursor: pointer;\n padding: 2px 4px; border-radius: 4px;\n transition: color 0.15s;\n}\n.fmc-flag:hover { color: var(--mj-color-indigo-500); }\n.fmc-flag input[type=\"checkbox\"] {\n width: 13px; height: 13px; cursor: pointer;\n accent-color: var(--mj-color-indigo-500);\n}\n.fmc-flag i { font-size: 10px; }\n.fmc-req-star { font-size: 14px; font-weight: 700; color: inherit; }\n\n/* Remove button */\n.fmc-remove {\n flex-shrink: 0;\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 13px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-remove:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n/* ===== Transform Pipeline Editor ===== */\n.fmc-transform-editor {\n border-top: 1px solid var(--mj-bg-surface-hover);\n background: linear-gradient(180deg, var(--mj-color-indigo-50) 0%, var(--mj-bg-page) 100%);\n padding: 12px 14px;\n}\n.fmc-te-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.fmc-te-title {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px;\n}\n.fmc-te-title i { margin-right: 4px; }\n.fmc-te-add {\n font-size: 11px; font-weight: 600; color: var(--mj-color-indigo-500);\n background: none; border: 1px solid var(--mj-color-indigo-200);\n border-radius: 6px; padding: 3px 10px;\n cursor: pointer; transition: all 0.15s;\n}\n.fmc-te-add:hover { background: var(--mj-color-indigo-50); }\n.fmc-te-add i { margin-right: 3px; font-size: 10px; }\n\n/* Individual transform step */\n.fmc-te-step {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 10px 12px;\n margin-bottom: 8px;\n transition: box-shadow 0.15s;\n}\n.fmc-te-step:hover { box-shadow: 0 1px 4px rgba(0,0,0,0.05); }\n.fmc-te-step:last-child { margin-bottom: 0; }\n\n.fmc-te-step-header {\n display: flex; align-items: center; gap: 8px; margin-bottom: 8px;\n}\n.fmc-te-step-num {\n width: 22px; height: 22px; border-radius: 50%;\n background: linear-gradient(135deg, var(--mj-color-indigo-500), var(--mj-color-indigo-500));\n color: var(--mj-bg-surface); font-size: 11px; font-weight: 700;\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n.fmc-te-type-select {\n flex: 1; padding: 4px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 12px; font-weight: 600;\n color: var(--mj-text-primary); background: var(--mj-bg-page);\n}\n.fmc-te-type-select:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-error-select {\n width: 100px; padding: 4px 6px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 11px; color: var(--mj-text-muted);\n background: var(--mj-bg-page);\n}\n.fmc-te-error-select:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-remove-step {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 12px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-te-remove-step:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n/* Config area */\n.fmc-te-config {\n padding-left: 30px;\n}\n.fmc-te-field {\n margin-bottom: 8px;\n}\n.fmc-te-field:last-child { margin-bottom: 0; }\n.fmc-te-field label {\n display: block; font-size: 11px; font-weight: 600;\n color: var(--mj-text-muted); margin-bottom: 3px;\n}\n.fmc-te-field label code {\n background: var(--mj-bg-surface-hover); padding: 0 3px; border-radius: 3px;\n font-size: 10px; color: var(--mj-color-indigo-700);\n}\n.fmc-te-hint { font-weight: 400; color: var(--mj-text-disabled); }\n.fmc-te-row {\n display: flex; gap: 10px; align-items: flex-end;\n}\n.fmc-te-sm { max-width: 140px; }\n.fmc-textarea {\n resize: vertical; min-height: 40px;\n}\n\n/* Combine chips */\n.fmc-combine-chips {\n display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px;\n}\n.fmc-chip {\n font-size: 11px; padding: 3px 8px; border-radius: 14px;\n border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface);\n color: var(--mj-text-muted); cursor: pointer;\n transition: all 0.15s; font-weight: 500;\n}\n.fmc-chip:hover { border-color: var(--mj-color-indigo-300); color: var(--mj-color-indigo-700); }\n.fmc-chip.selected {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-400); color: var(--mj-color-indigo-700); font-weight: 600;\n}\n\n/* Lookup table */\n.fmc-lookup-table {\n display: flex; flex-direction: column; gap: 4px; margin-top: 4px;\n}\n.fmc-lookup-row {\n display: flex; align-items: center; gap: 6px;\n}\n.fmc-lookup-row .fmc-input { flex: 1; }\n.fmc-lookup-arrow { color: var(--mj-color-indigo-200); font-size: 10px; flex-shrink: 0; }\n.fmc-lookup-del {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 11px; padding: 2px;\n transition: color 0.15s;\n}\n.fmc-lookup-del:hover { color: var(--mj-status-error); }\n.fmc-lookup-add {\n font-size: 11px; color: var(--mj-color-indigo-500); background: none;\n border: 1px dashed var(--mj-color-indigo-200); border-radius: 6px;\n padding: 4px 10px; cursor: pointer;\n transition: all 0.15s; margin-top: 2px;\n}\n.fmc-lookup-add:hover { background: var(--mj-color-indigo-50); }\n.fmc-lookup-add i { margin-right: 3px; font-size: 10px; }\n\n/* ===== Data Preview ===== */\n.data-preview-section { margin-top: 24px; border-top: 1px solid var(--mj-border-subtle); padding-top: 16px; }\n.preview-actions { display: flex; gap: 8px; margin-bottom: 12px; }\n\n.preview-panel {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 12px; margin-bottom: 12px;\n}\n.preview-panel-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 8px;\n}\n.preview-panel-header h4 { font-size: 13px; font-weight: 600; margin: 0; }\n.preview-panel-header h4 i { margin-right: 6px; color: var(--mj-color-indigo-500); }\n\n.preview-table-wrapper { overflow-x: auto; }\n.preview-table {\n width: 100%; border-collapse: collapse; font-size: 12px;\n}\n.preview-table th {\n text-align: left; padding: 5px 8px;\n background: var(--mj-border-default); font-weight: 600; font-size: 10px;\n text-transform: uppercase; color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default); white-space: nowrap;\n}\n.preview-table td {\n padding: 4px 8px; border-bottom: 1px solid var(--mj-border-subtle);\n white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;\n}\n.preview-table tr:hover { background: var(--mj-status-info-bg); }\n\n/* ===== Right panel: run details ===== */\n.run-summary-card {\n background: var(--mj-bg-page); border-radius: 8px; padding: 12px;\n}\n.run-summary-row {\n display: flex; justify-content: space-between;\n padding: 4px 0; font-size: 13px;\n}\n.run-summary-row .label { color: var(--mj-text-muted); font-weight: 500; }\n.run-status {\n font-size: 11px; padding: 2px 6px; border-radius: 4px; font-weight: 600;\n}\n.status-green { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.status-amber { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n.status-red { background: var(--mj-status-error-bg); color: var(--mj-color-error-600); }\n\n.entity-stat-card {\n background: var(--mj-bg-page); border-radius: 6px; padding: 10px;\n margin-bottom: 8px;\n}\n.entity-stat-name { font-size: 13px; font-weight: 600; margin-bottom: 6px; }\n.entity-stat-grid { display: flex; gap: 12px; }\n.mini-stat { text-align: center; }\n.mini-val { display: block; font-size: 16px; font-weight: 600; }\n.mini-val.has-errors { color: var(--mj-color-error-600); }\n.mini-label { font-size: 10px; color: var(--mj-text-disabled); }\n\n/* ===== Validation ===== */\n.validation-banner {\n background: var(--mj-color-warning-50); border: 1px solid var(--mj-color-warning-200); border-radius: 8px;\n padding: 10px 14px; margin-bottom: 14px;\n display: flex; align-items: flex-start; gap: 10px;\n font-size: 13px; color: var(--mj-color-warning-600);\n}\n.validation-banner > i { margin-top: 2px; }\n.validation-warnings { display: flex; flex-direction: column; gap: 2px; }\n\n.field-map-card.validation-error .fmc-source {\n border-left: 3px solid var(--mj-color-warning-600);\n padding-left: 8px;\n}\n\n/* ===== Responsive ===== */\n@media (max-width: 1100px) { .right-panel { display: none; } }\n@media (max-width: 800px) { .left-panel { width: 260px; } }\n"] }]
|
|
2355
|
+
args: [{ standalone: false, selector: 'app-mapping-workspace', template: "<div class=\"mapping-workspace\">\n <div class=\"workspace-header\">\n <h2><i class=\"fa-solid fa-diagram-project\"></i> Mapping Workspace</h2>\n </div>\n\n @if (IsLoadingIntegrations) {\n <mj-loading text=\"Loading integrations...\" size=\"medium\"></mj-loading>\n } @else {\n <div class=\"workspace-body\">\n <!-- ============================================================ -->\n <!-- LEFT PANEL: Integration selector + Entity map list -->\n <!-- ============================================================ -->\n <div class=\"left-panel\">\n <div class=\"integration-selector\">\n <label class=\"panel-label\">Integration</label>\n <mj-dropdown\n [Data]=\"Integrations\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedIntegrationID\"\n (ValueChange)=\"OnIntegrationChange($any($event))\"\n [DefaultItem]=\"{ ID: '', Name: '-- Select --' }\">\n </mj-dropdown>\n </div>\n\n @if (IsLoadingEntityMaps) {\n <mj-loading text=\"Loading entity maps...\" size=\"small\"></mj-loading>\n } @else if (SelectedIntegrationID) {\n <!-- Entity Map Header -->\n <div class=\"entity-map-header\">\n <span class=\"panel-label\" style=\"margin: 0;\">Entity Maps</span>\n <div class=\"header-actions\">\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"OpenAddPanel()\" title=\"Add entity map\">\n <i class=\"fa-solid fa-plus\"></i> Add Map\n </button>\n </div>\n </div>\n\n <!-- ==================== ADD MAP PANEL ==================== -->\n @if (ShowAddPanel) {\n <div class=\"add-map-panel\">\n <div class=\"add-panel-top\">\n <h5><i class=\"fa-solid fa-plus-circle\"></i> Add Entity Map</h5>\n <button class=\"add-panel-close\" (click)=\"CloseAddPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Source Object Dropdown -->\n <div class=\"form-group\">\n <label>Source Object</label>\n @if (IsDiscoveringObjects) {\n <div class=\"source-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Discovering objects...\n </div>\n } @else if (DiscoverError) {\n <div class=\"discover-error-inline\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n {{ DiscoverError }}\n </div>\n } @else if (DiscoveredObjects.length === 0) {\n <div class=\"discover-error-inline\">\n No objects found in external system.\n </div>\n } @else {\n <mj-dropdown\n [Data]=\"DiscoveredObjects\"\n TextField=\"Label\"\n ValueField=\"Name\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedSourceObjectName\"\n (ValueChange)=\"OnSourceObjectChange($any($event))\"\n [Filterable]=\"true\"\n [DefaultItem]=\"{ Name: '', Label: 'Select source object...' }\">\n </mj-dropdown>\n }\n </div>\n\n <!-- Target Mode Toggle -->\n <div class=\"target-mode-toggle\">\n <button class=\"target-mode-btn\"\n [class.active]=\"TargetMode === 'existing'\"\n (click)=\"SetTargetMode('existing')\">\n <i class=\"fa-solid fa-database\"></i> Existing Entity\n </button>\n <button class=\"target-mode-btn\"\n [class.active]=\"TargetMode === 'new'\"\n (click)=\"SetTargetMode('new')\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> New Entity\n </button>\n </div>\n\n <!-- Existing entity picker -->\n @if (TargetMode === 'existing') {\n <div class=\"form-group\">\n <label>Target MJ Entity</label>\n @if (IsLoadingEntities) {\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n } @else {\n <mj-dropdown\n [Data]=\"MJEntities\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"SelectedEntityID\"\n [Filterable]=\"true\"\n [DefaultItem]=\"{ ID: null, Name: 'Select entity...' }\">\n </mj-dropdown>\n }\n </div>\n }\n\n <!-- New entity form -->\n @if (TargetMode === 'new') {\n <div class=\"new-entity-form\">\n <div class=\"section-label\">Define New Entity</div>\n <div class=\"form-group\">\n <label>DB Schema</label>\n <mj-combobox\n [Data]=\"DBSchemas\"\n [(ngModel)]=\"NewEntitySchemaName\"\n (ValueChange)=\"OnSchemaNameChange()\"\n [AllowCustom]=\"true\"\n [Filterable]=\"true\"\n Placeholder=\"Select or type schema...\">\n </mj-combobox>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Table Name</label>\n <input class=\"mj-input\" [(ngModel)]=\"NewEntityTableName\"\n [placeholder]=\"SuggestedTableName || 'Table name'\" />\n @if (SuggestedTableName && !NewEntityTableName) {\n <span class=\"auto-hint\">Suggested: {{ SuggestedTableName }}</span>\n }\n </div>\n <div class=\"form-group\">\n <label>Entity Name</label>\n <input class=\"mj-input\" [(ngModel)]=\"NewEntityName\"\n [placeholder]=\"SuggestedEntityName || 'Entity name'\" />\n </div>\n </div>\n\n <!-- DDL Preview -->\n @if (SelectedSourceObjectName && NewEntitySchemaName && NewEntityTableName) {\n <div class=\"ddl-preview-section\">\n <button mjButton variant=\"outline\" size=\"sm\"\n [disabled]=\"IsGeneratingDDL\"\n (click)=\"PreviewDDL()\">\n @if (IsGeneratingDDL) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Generating...\n } @else {\n <i class=\"fa-solid fa-database\"></i> Preview DDL\n }\n </button>\n @if (DDLPreviewError) {\n <div class=\"discover-error-inline\" style=\"margin-top: 8px;\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> {{ DDLPreviewError }}\n </div>\n }\n @if (DDLPreviewContent) {\n <pre class=\"ddl-preview-code\">{{ DDLPreviewContent }}</pre>\n }\n </div>\n }\n </div>\n }\n\n <!-- Sync direction -->\n <div class=\"form-group\">\n <label>Sync Direction</label>\n <mj-dropdown\n [Data]=\"['Pull', 'Push', 'Bidirectional']\"\n [(ngModel)]=\"AddSyncDirection\">\n </mj-dropdown>\n </div>\n\n <!-- Save / Cancel -->\n <div class=\"add-form-actions\">\n <button mjButton variant=\"primary\" size=\"sm\"\n [disabled]=\"!IsAddFormValid || IsSavingEntityMap\"\n (click)=\"SaveAddMap()\">\n @if (IsSavingEntityMap) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else if (TargetMode === 'new') {\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Create Pending Map\n } @else {\n <i class=\"fa-solid fa-check\"></i> Add Map\n }\n </button>\n <button mjButton size=\"sm\" (click)=\"CloseAddPanel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Search -->\n @if (AllMaps.length > 0) {\n <div class=\"search-box\">\n <input class=\"mj-input\"\n [(ngModel)]=\"EntityMapSearchText\"\n placeholder=\"Search entity maps...\" />\n </div>\n }\n\n <!-- Entity Map List -->\n @if (AllMaps.length === 0 && !ShowAddPanel) {\n <p class=\"empty-hint\">\n No entity maps configured.\n <a href=\"javascript:void(0)\" (click)=\"OpenAddPanel()\" style=\"color: var(--mj-brand-primary);\">Add one</a>\n </p>\n } @else if (FilteredMaps.length === 0 && AllMaps.length > 0) {\n <p class=\"empty-hint\">No matches for \"{{ EntityMapSearchText }}\".</p>\n } @else {\n <div class=\"entity-map-list\">\n @for (item of FilteredMaps; track item.ID) {\n <div class=\"entity-map-item\"\n [class.selected]=\"IsSelectedMap(item.ID)\"\n [class.pending]=\"item.IsPending\"\n (click)=\"OnMapSelect(item)\">\n <div class=\"em-top-row\">\n <span class=\"em-name\">{{ item.SourceName }}</span>\n <span class=\"em-arrow\"><i class=\"fa-solid fa-arrow-right\"></i></span>\n <span class=\"em-entity\">{{ item.TargetName }}</span>\n </div>\n <div class=\"em-bottom-row\">\n <div class=\"em-badges\">\n <span class=\"badge badge-direction\">{{ item.SyncDirection }}</span>\n @if (item.IsPending) {\n <span class=\"badge badge-pending\">Pending</span>\n }\n </div>\n <div class=\"em-actions\">\n <button class=\"em-delete\" title=\"Delete\"\n (click)=\"OnDeleteMap(item, $event)\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n @if (!item.IsPending && item.RealMap) {\n <mj-switch\n [(ngModel)]=\"item.RealMap.SyncEnabled\"\n (ngModelChange)=\"OnToggleEntityMap(item.RealMap)\">\n </mj-switch>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <!-- ============================================================ -->\n <!-- CENTER PANEL: Field mapping / Pending entity / Placeholder -->\n <!-- ============================================================ -->\n <div class=\"center-panel\">\n @if (!SelectedMapID) {\n <!-- No selection placeholder -->\n <div class=\"placeholder-message\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n <p>Select an entity map from the left panel to view and edit field mappings.</p>\n </div>\n } @else if (SelectedPendingMap) {\n <!-- ==================== PENDING ENTITY VIEW ==================== -->\n <div class=\"pending-entity-panel\">\n <div class=\"pending-icon\"><i class=\"fa-solid fa-clock\"></i></div>\n <h3>Pending Entity: {{ SelectedPendingMap.EntityName }}</h3>\n <p>\n This entity map is waiting for the target entity\n <strong>{{ SelectedPendingMap.SchemaName }}.{{ SelectedPendingMap.TableName }}</strong>\n to be created. Run the DDL migration and CodeGen to activate this mapping.\n </p>\n\n <!-- Progress stepper -->\n <div class=\"pending-steps\">\n <div class=\"step\">\n <div class=\"step-circle done\"><i class=\"fa-solid fa-check\"></i></div>\n <span class=\"step-label\">Map Created</span>\n </div>\n <div class=\"step-connector\" [class.done]=\"SelectedPendingMap.DDLContent\"></div>\n <div class=\"step\">\n <div class=\"step-circle\" [ngClass]=\"GetPendingStepStatus(SelectedPendingMap, 2)\">\n @if (SelectedPendingMap.DDLContent) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n 2\n }\n </div>\n <span class=\"step-label\">DDL Generated</span>\n </div>\n <div class=\"step-connector\"></div>\n <div class=\"step\">\n <div class=\"step-circle future\">3</div>\n <span class=\"step-label\">Deploy & CodeGen</span>\n </div>\n <div class=\"step-connector\"></div>\n <div class=\"step\">\n <div class=\"step-circle future\">4</div>\n <span class=\"step-label\">Ready to Sync</span>\n </div>\n </div>\n\n <!-- DDL content -->\n @if (SelectedPendingMap.DDLContent) {\n <div class=\"ddl-preview-inline\">\n <h4 style=\"font-size: 14px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-database\"></i> Generated DDL\n </h4>\n <pre class=\"ddl-code-block\">{{ SelectedPendingMap.DDLContent }}</pre>\n <div class=\"ddl-actions\">\n <button mjButton variant=\"outline\" size=\"sm\"\n (click)=\"CopyDDLToClipboard(SelectedPendingMap.DDLContent)\">\n <i class=\"fa-solid fa-copy\"></i> Copy DDL\n </button>\n </div>\n </div>\n }\n\n <!-- Source fields list -->\n @if (SelectedPendingMap.SourceFields.length > 0) {\n <div class=\"pending-fields-section\">\n <h4 style=\"font-size: 14px; margin: 16px 0 8px;\">\n <i class=\"fa-solid fa-list\"></i> Source Fields\n <span style=\"color: var(--mj-text-muted); font-weight: 400;\">({{ SelectedPendingMap.SourceFields.length }})</span>\n </h4>\n <div class=\"pending-fields-list\">\n @for (field of SelectedPendingMap.SourceFields; track field.Name) {\n <div class=\"pending-field-item\">\n <span class=\"pending-field-name\">{{ field.Name }}</span>\n <span class=\"pending-field-type\">{{ field.Type }}</span>\n @if (field.IsPrimaryKey) {\n <i class=\"fa-solid fa-key key-icon\" title=\"Key field\"></i>\n }\n @if (field.IsRequired) {\n <span class=\"pending-field-req\">*</span>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n } @else if (IsLoadingFieldMaps) {\n <mj-loading text=\"Loading field maps...\" size=\"medium\"></mj-loading>\n } @else {\n <!-- ==================== FIELD MAPPING EDITOR ==================== -->\n\n <!-- Auto-map banner -->\n @if (ShowAutoMapBanner) {\n <div class=\"auto-map-banner\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <div class=\"banner-text\">\n <p><strong>{{ AutoMapCount }} field{{ AutoMapCount !== 1 ? 's' : '' }} auto-mapped</strong> by matching source and destination field names.</p>\n </div>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"DismissAutoMapBanner()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n\n <!-- Validation warnings -->\n @if (ActiveEditableFields.length > 0 && !MappingValidation.IsValid) {\n <div class=\"validation-banner\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div class=\"validation-warnings\">\n @for (warning of MappingValidation.Warnings; track warning) {\n <span>{{ warning }}</span>\n }\n </div>\n </div>\n }\n\n <div class=\"field-mapping-header\">\n <h3 class=\"panel-title\">\n Field Mappings\n <span class=\"field-count\">({{ ActiveEditableFields.length }})</span>\n </h3>\n <div class=\"field-mapping-actions\">\n <button mjButton variant=\"outline\" size=\"sm\"\n [disabled]=\"IsLoadingSourceFields\"\n (click)=\"RerunAutoMap()\" title=\"Auto-match source and destination fields by name\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-Map\n </button>\n <button mjButton variant=\"outline\" size=\"sm\"\n (click)=\"AddFieldMapping()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n <button mjButton variant=\"primary\" size=\"sm\"\n [disabled]=\"!HasDirtyFields || IsSavingFields\"\n (click)=\"SaveFieldMappings()\">\n @if (IsSavingFields) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-floppy-disk\"></i> Save\n }\n </button>\n </div>\n </div>\n\n @if (ActiveEditableFields.length === 0) {\n <p class=\"empty-hint\">\n No field mappings yet.\n <a href=\"javascript:void(0)\" (click)=\"AddFieldMapping()\" style=\"color: var(--mj-brand-primary);\">Add one</a>\n </p>\n } @else {\n <div class=\"field-map-cards\">\n @for (field of ActiveEditableFields; track field; let i = $index) {\n <div class=\"field-map-card\" [class.validation-error]=\"field.IsRequired && !field.DestinationFieldName\"\n [class.has-transform]=\"field.TransformPipeline.length > 0\">\n\n <!-- Main mapping row -->\n <div class=\"fmc-row\">\n <!-- Source column -->\n <div class=\"fmc-source\">\n @if (field.IsNew) {\n <input type=\"text\" class=\"fmc-input\" [(ngModel)]=\"field.SourceFieldName\"\n (ngModelChange)=\"OnFieldChanged(field)\" placeholder=\"Source field name\" />\n } @else {\n <div class=\"fmc-field-name\">{{ field.SourceFieldName }}</div>\n <div class=\"fmc-badges\">\n @if (field.SourceFieldType) {\n <span class=\"fmc-badge badge-type\">{{ field.SourceFieldType }}</span>\n }\n @if (field.IsSourcePK) {\n <span class=\"fmc-badge badge-pk\" title=\"Primary Key\"><i class=\"fa-solid fa-key\"></i> PK</span>\n }\n @if (field.IsSourceRequired) {\n <span class=\"fmc-badge badge-req\" title=\"Required\">REQ</span>\n }\n @if (field.IsSourceReadOnly) {\n <span class=\"fmc-badge badge-ro\" title=\"Read-Only\">RO</span>\n }\n </div>\n }\n </div>\n\n <!-- Transform indicator -->\n <div class=\"fmc-transform-zone\">\n @if (field.TransformPipeline.length > 1) {\n <button class=\"fmc-transform-pill\" (click)=\"ToggleTransformEditor(field)\"\n [title]=\"field.TransformPipeline.length + ' transform step(s)'\">\n <i [class]=\"GetTransformIcon(field.TransformPipeline[0].Type)\"></i>\n <span>{{ GetTransformLabel(field.TransformPipeline[0].Type) }}</span>\n <span class=\"fmc-step-count\">+{{ field.TransformPipeline.length - 1 }}</span>\n </button>\n } @else {\n <button class=\"fmc-transform-pill fmc-transform-direct\" (click)=\"ToggleTransformEditor(field)\"\n title=\"Click to change transform type\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span>{{ field.TransformPipeline.length > 0 ? GetTransformLabel(field.TransformPipeline[0].Type) : 'Direct' }}</span>\n </button>\n }\n </div>\n\n <!-- Destination column -->\n <div class=\"fmc-dest\">\n @if (DestinationFields.length > 0) {\n <select class=\"fmc-select\" [(ngModel)]=\"field.DestinationFieldName\"\n (ngModelChange)=\"OnFieldChanged(field)\">\n <option value=\"\">-- Select destination --</option>\n @for (df of DestinationFields; track df.ID) {\n <option [value]=\"df.Name\">{{ df.Name }}</option>\n }\n </select>\n } @else {\n <input type=\"text\" class=\"fmc-input\" [(ngModel)]=\"field.DestinationFieldName\"\n (ngModelChange)=\"OnFieldChanged(field)\" placeholder=\"Destination field\" />\n }\n </div>\n\n <!-- Sync flags -->\n <div class=\"fmc-flags\">\n <label class=\"fmc-flag\" title=\"Key field for matching\">\n <input type=\"checkbox\" [(ngModel)]=\"field.IsKeyField\"\n (ngModelChange)=\"OnFieldChanged(field)\" />\n <i class=\"fa-solid fa-key\"></i>\n </label>\n <label class=\"fmc-flag\" title=\"Required field\">\n <input type=\"checkbox\" [(ngModel)]=\"field.IsRequired\"\n (ngModelChange)=\"OnFieldChanged(field)\" />\n <span class=\"fmc-req-star\">*</span>\n </label>\n </div>\n\n <!-- Remove button -->\n <button class=\"fmc-remove\" title=\"Remove mapping\" (click)=\"RemoveFieldMapping(i)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Transform pipeline editor (expandable) -->\n @if (field.ShowTransformEditor && field.TransformPipeline.length > 0) {\n <div class=\"fmc-transform-editor\">\n <div class=\"fmc-te-header\">\n <span class=\"fmc-te-title\"><i class=\"fa-solid fa-wand-magic-sparkles\"></i> Transform Pipeline</span>\n <button class=\"fmc-te-add\" (click)=\"AddTransformStep(field)\" title=\"Add another step\">\n <i class=\"fa-solid fa-plus\"></i> Add Step\n </button>\n </div>\n @for (step of field.TransformPipeline; track $index; let si = $index) {\n <div class=\"fmc-te-step\">\n <div class=\"fmc-te-step-header\">\n <span class=\"fmc-te-step-num\">{{ si + 1 }}</span>\n <select class=\"fmc-te-type-select\" [ngModel]=\"step.Type\"\n (ngModelChange)=\"OnTransformTypeChange(field, step, $event)\">\n @for (tt of TransformTypes; track tt.Value) {\n <option [value]=\"tt.Value\">{{ tt.Label }}</option>\n }\n </select>\n <select class=\"fmc-te-error-select\" [(ngModel)]=\"step.OnError\"\n (ngModelChange)=\"OnTransformConfigChange(field)\" title=\"On error\">\n <option value=\"Fail\">Fail</option>\n <option value=\"Skip\">Skip row</option>\n <option value=\"Null\">Set null</option>\n </select>\n <button class=\"fmc-te-remove-step\" (click)=\"RemoveTransformStep(field, si)\" title=\"Remove step\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n\n <!-- Config editors per type -->\n <div class=\"fmc-te-config\">\n @switch (step.Type) {\n @case ('direct') {\n <div class=\"fmc-te-field\">\n <label>Default value (when source is null)</label>\n <input type=\"text\" class=\"fmc-input\" [ngModel]=\"step.Config['DefaultValue'] ?? ''\"\n (ngModelChange)=\"step.Config['DefaultValue'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"Leave empty for no default\" />\n </div>\n }\n @case ('regex') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field\">\n <label>Pattern</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Pattern'] ?? ''\"\n (ngModelChange)=\"step.Config['Pattern'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"e.g. (\\d{3})-(\\d{4})\" />\n </div>\n <div class=\"fmc-te-field\">\n <label>Replacement</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Replacement'] ?? ''\"\n (ngModelChange)=\"step.Config['Replacement'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"e.g. $1$2\" />\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Flags</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Flags'] ?? 'g'\"\n (ngModelChange)=\"step.Config['Flags'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"gi\" />\n </div>\n </div>\n }\n @case ('split') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field\">\n <label>Delimiter</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Delimiter'] ?? ','\"\n (ngModelChange)=\"step.Config['Delimiter'] = $event; OnTransformConfigChange(field)\"\n placeholder=\",\" />\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Part index (0-based)</label>\n <input type=\"number\" class=\"fmc-input\" [ngModel]=\"step.Config['Index'] ?? 0\"\n (ngModelChange)=\"step.Config['Index'] = +$event; OnTransformConfigChange(field)\"\n min=\"0\" />\n </div>\n </div>\n }\n @case ('combine') {\n <div class=\"fmc-te-field\">\n <label>Source fields to combine</label>\n <div class=\"fmc-combine-chips\">\n @for (sf of GetAvailableSourceFields(); track sf) {\n <button class=\"fmc-chip\" [class.selected]=\"IsCombineFieldSelected(step.Config, sf)\"\n (click)=\"ToggleCombineField(step.Config, sf); OnTransformConfigChange(field)\">\n {{ sf }}\n </button>\n }\n </div>\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Separator</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['Separator'] ?? ' '\"\n (ngModelChange)=\"step.Config['Separator'] = $event; OnTransformConfigChange(field)\"\n placeholder=\" \" />\n </div>\n }\n @case ('lookup') {\n <div class=\"fmc-te-field\">\n <label>Value mapping</label>\n <div class=\"fmc-lookup-table\">\n @for (entry of GetLookupEntries(step.Config); track $index) {\n <div class=\"fmc-lookup-row\">\n <input type=\"text\" class=\"fmc-input\" [value]=\"entry.key\" placeholder=\"Source value\"\n (change)=\"UpdateLookupEntry(step.Config, entry.key, $any($event.target).value, entry.value); OnTransformConfigChange(field)\" />\n <i class=\"fa-solid fa-arrow-right fmc-lookup-arrow\"></i>\n <input type=\"text\" class=\"fmc-input\" [value]=\"entry.value\" placeholder=\"Mapped value\"\n (change)=\"UpdateLookupEntry(step.Config, entry.key, entry.key, $any($event.target).value); OnTransformConfigChange(field)\" />\n <button class=\"fmc-lookup-del\" (click)=\"RemoveLookupEntry(step.Config, entry.key); OnTransformConfigChange(field)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n <button class=\"fmc-lookup-add\" (click)=\"AddLookupEntry(step.Config); OnTransformConfigChange(field)\">\n <i class=\"fa-solid fa-plus\"></i> Add mapping\n </button>\n </div>\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Default (when no match)</label>\n <input type=\"text\" class=\"fmc-input\" [ngModel]=\"step.Config['Default'] ?? ''\"\n (ngModelChange)=\"step.Config['Default'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"null\" />\n </div>\n }\n @case ('format') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Format type</label>\n <select class=\"fmc-select\" [ngModel]=\"step.Config['FormatType'] ?? 'date'\"\n (ngModelChange)=\"step.Config['FormatType'] = $event; OnTransformConfigChange(field)\">\n <option value=\"date\">Date</option>\n <option value=\"number\">Number</option>\n <option value=\"string\">String</option>\n </select>\n </div>\n <div class=\"fmc-te-field\">\n <label>Format string</label>\n <input type=\"text\" class=\"fmc-input mono\" [ngModel]=\"step.Config['FormatString'] ?? 'ISO'\"\n (ngModelChange)=\"step.Config['FormatString'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"ISO or decimal places\" />\n </div>\n </div>\n }\n @case ('coerce') {\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Target type</label>\n <select class=\"fmc-select\" [ngModel]=\"step.Config['TargetType'] ?? 'string'\"\n (ngModelChange)=\"step.Config['TargetType'] = $event; OnTransformConfigChange(field)\">\n <option value=\"string\">String</option>\n <option value=\"number\">Number</option>\n <option value=\"boolean\">Boolean</option>\n <option value=\"date\">Date</option>\n </select>\n </div>\n }\n @case ('substring') {\n <div class=\"fmc-te-row\">\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Start index</label>\n <input type=\"number\" class=\"fmc-input\" [ngModel]=\"step.Config['Start'] ?? 0\"\n (ngModelChange)=\"step.Config['Start'] = +$event; OnTransformConfigChange(field)\"\n min=\"0\" />\n </div>\n <div class=\"fmc-te-field fmc-te-sm\">\n <label>Length (blank = to end)</label>\n <input type=\"number\" class=\"fmc-input\" [ngModel]=\"step.Config['Length'] ?? ''\"\n (ngModelChange)=\"step.Config['Length'] = $event ? +$event : undefined; OnTransformConfigChange(field)\"\n min=\"1\" />\n </div>\n </div>\n }\n @case ('custom') {\n <div class=\"fmc-te-field\">\n <label>JavaScript expression <span class=\"fmc-te-hint\">(use <code>value</code> and <code>fields</code>)</span></label>\n <textarea class=\"fmc-input mono fmc-textarea\" [ngModel]=\"step.Config['Expression'] ?? 'value'\"\n (ngModelChange)=\"step.Config['Expression'] = $event; OnTransformConfigChange(field)\"\n placeholder=\"value.toUpperCase()\" rows=\"2\"></textarea>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Data Preview Section -->\n <div class=\"data-preview-section\">\n <div class=\"preview-actions\">\n <button mjButton variant=\"outline\" size=\"sm\"\n [disabled]=\"IsLoadingSourcePreview\"\n (click)=\"LoadSourcePreview()\">\n <i class=\"fa-solid fa-cloud-arrow-down\"></i> Preview Source\n </button>\n <button mjButton variant=\"outline\" size=\"sm\"\n [disabled]=\"IsLoadingDestPreview\"\n (click)=\"LoadDestPreview()\">\n <i class=\"fa-solid fa-database\"></i> Preview Destination\n </button>\n </div>\n\n @if (ShowSourcePreview) {\n <div class=\"preview-panel\">\n <div class=\"preview-panel-header\">\n <h4><i class=\"fa-solid fa-cloud\"></i> Source Data Preview</h4>\n <button class=\"add-panel-close\" (click)=\"CloseSourcePreview()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n @if (IsLoadingSourcePreview) {\n <mj-loading text=\"Loading source data...\" size=\"small\"></mj-loading>\n } @else if (SourcePreviewData.length === 0) {\n <p class=\"empty-hint\">No source data available.</p>\n } @else {\n <div class=\"preview-table-wrapper\">\n <table class=\"preview-table\">\n <thead>\n <tr>\n @for (col of GetPreviewColumns(SourcePreviewData); track col) {\n <th>{{ col }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of SourcePreviewData; track $index) {\n <tr>\n @for (col of GetPreviewColumns(SourcePreviewData); track col) {\n <td>{{ FormatPreviewValue(row[col]) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n @if (ShowDestPreview) {\n <div class=\"preview-panel\">\n <div class=\"preview-panel-header\">\n <h4><i class=\"fa-solid fa-database\"></i> Destination Data Preview</h4>\n <button class=\"add-panel-close\" (click)=\"CloseDestPreview()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n @if (IsLoadingDestPreview) {\n <mj-loading text=\"Loading destination data...\" size=\"small\"></mj-loading>\n } @else if (DestPreviewData.length === 0) {\n <p class=\"empty-hint\">No destination data available.</p>\n } @else {\n <div class=\"preview-table-wrapper\">\n <table class=\"preview-table\">\n <thead>\n <tr>\n @for (col of GetPreviewColumns(DestPreviewData); track col) {\n <th>{{ col }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of DestPreviewData; track $index) {\n <tr>\n @for (col of GetPreviewColumns(DestPreviewData); track col) {\n <td>{{ FormatPreviewValue(row[col]) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- ============================================================ -->\n <!-- RIGHT PANEL: Last run details -->\n <!-- ============================================================ -->\n <div class=\"right-panel\">\n <h4 class=\"panel-label\">Last Run Details</h4>\n @if (!SelectedIntegrationID) {\n <p class=\"empty-hint\">Select an integration to see run details.</p>\n } @else if (IsLoadingRunDetails) {\n <mj-loading text=\"Loading...\" size=\"small\"></mj-loading>\n } @else if (!LatestRun) {\n <p class=\"empty-hint\">No runs found.</p>\n } @else {\n <div class=\"run-summary-card\">\n <div class=\"run-summary-row\">\n <span class=\"label\">Status</span>\n <span class=\"run-status\" [class]=\"'status-' + RunStatusColor\">\n {{ LatestRun.Status }}\n </span>\n </div>\n <div class=\"run-summary-row\">\n <span class=\"label\">Started</span>\n <span>{{ FormatDate(LatestRun.StartedAt) }}</span>\n </div>\n <div class=\"run-summary-row\">\n <span class=\"label\">Total Records</span>\n <span>{{ LatestRun.TotalRecords | number }}</span>\n </div>\n <div class=\"run-summary-row\">\n <span class=\"label\">Run By</span>\n <span>{{ LatestRun.RunByUser }}</span>\n </div>\n </div>\n\n @if (RunEntityDetails.length > 0) {\n <h4 class=\"panel-label\" style=\"margin-top: 16px;\">Per-Entity Stats</h4>\n @for (detail of RunEntityDetails; track detail.EntityID) {\n <div class=\"entity-stat-card\">\n <div class=\"entity-stat-name\">{{ detail.Entity }}</div>\n <div class=\"entity-stat-grid\">\n <div class=\"mini-stat\">\n <span class=\"mini-val\">{{ detail.RecordsCreated }}</span>\n <span class=\"mini-label\">Created</span>\n </div>\n <div class=\"mini-stat\">\n <span class=\"mini-val\">{{ detail.RecordsUpdated }}</span>\n <span class=\"mini-label\">Updated</span>\n </div>\n <div class=\"mini-stat\">\n <span class=\"mini-val\" [class.has-errors]=\"detail.RecordsErrored > 0\">\n {{ detail.RecordsErrored }}\n </span>\n <span class=\"mini-label\">Errors</span>\n </div>\n </div>\n </div>\n }\n }\n }\n </div>\n </div>\n }\n</div>\n", styles: [".mapping-workspace { padding: 24px; height: 100%; display: flex; flex-direction: column; }\n.workspace-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.workspace-header h2 {\n margin: 0; font-size: 20px; font-weight: 600;\n}\n.workspace-header h2 i { margin-right: 8px; color: var(--mj-color-indigo-500); }\n\n/* ===== Three-panel layout ===== */\n.workspace-body {\n display: flex; flex: 1; gap: 1px; background: var(--mj-border-default);\n border-radius: 10px; overflow: hidden; min-height: 500px;\n}\n\n.left-panel { width: 320px; min-width: 280px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n.center-panel { flex: 1; background: var(--mj-bg-surface); padding: 20px; overflow-y: auto; }\n.right-panel { width: 280px; min-width: 240px; background: var(--mj-bg-surface); padding: 16px; overflow-y: auto; flex-shrink: 0; }\n\n/* ===== Shared ===== */\n.panel-label {\n font-size: 11px; font-weight: 700; color: var(--mj-text-disabled);\n text-transform: uppercase; letter-spacing: 0.6px;\n margin: 0 0 6px 0; display: block;\n}\n.panel-title { margin: 0 0 12px 0; font-size: 16px; font-weight: 600; }\n.panel-title .field-count { color: var(--mj-text-disabled); font-weight: 400; font-size: 13px; }\n.empty-hint { color: var(--mj-text-disabled); font-size: 13px; font-style: italic; }\n.search-box { margin-bottom: 12px; }\n\n/* ===== Integration selector ===== */\n.integration-selector { margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--mj-border-subtle); }\n\n/* ===== Entity Map Header ===== */\n.entity-map-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.header-actions { display: flex; gap: 4px; }\n\n/* ===== Add Map Panel ===== */\n.add-map-panel {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 10px;\n padding: 16px; margin-bottom: 14px;\n}\n.add-panel-top {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 14px;\n}\n.add-panel-top h5 { margin: 0; font-size: 14px; font-weight: 600; }\n.add-panel-close {\n background: none; border: none; cursor: pointer; color: var(--mj-text-disabled); font-size: 14px;\n}\n.add-panel-close:hover { color: var(--mj-text-primary); }\n\n.form-group { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }\n.form-group label { font-size: 12px; font-weight: 600; color: var(--mj-text-muted); }\n.form-row { display: flex; gap: 10px; }\n.form-row .form-group { flex: 1; }\n\n.source-loading {\n display: flex; align-items: center; gap: 8px;\n font-size: 12px; color: var(--mj-text-disabled); padding: 6px 0;\n}\n.source-loading i { color: var(--mj-color-indigo-500); }\n\n.discover-error-inline {\n font-size: 12px; color: var(--mj-color-error-600); padding: 6px 0;\n}\n.discover-error-inline i { margin-right: 4px; }\n\n/* Target mode toggle */\n.target-mode-toggle {\n display: flex; border: 1px solid var(--mj-border-default); border-radius: 6px;\n overflow: hidden; margin-bottom: 12px;\n}\n.target-mode-btn {\n flex: 1; padding: 8px 12px; font-size: 12px; font-weight: 600;\n text-align: center; cursor: pointer; background: var(--mj-bg-surface); border: none;\n color: var(--mj-text-muted); transition: all 0.15s;\n}\n.target-mode-btn:first-child { border-right: 1px solid var(--mj-border-default); }\n.target-mode-btn.active { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.target-mode-btn:not(.active):hover { background: var(--mj-status-info-bg); color: var(--mj-color-indigo-500); }\n.target-mode-btn i { margin-right: 4px; }\n\n/* New entity form */\n.new-entity-form {\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 14px; margin-bottom: 12px;\n}\n.new-entity-form .section-label {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 10px;\n}\n.auto-hint { font-size: 10px; color: var(--mj-text-disabled); font-style: italic; }\n\n/* DDL preview in add panel */\n.ddl-preview-section { margin-top: 8px; }\n.ddl-preview-code {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 10px;\n border-radius: 4px; font-size: 11px; line-height: 1.5;\n max-height: 200px; overflow: auto; white-space: pre-wrap;\n word-break: break-word; margin-top: 8px;\n}\n\n.add-form-actions { display: flex; gap: 6px; padding-top: 4px; }\n\n/* ===== Entity Map List ===== */\n.entity-map-list { display: flex; flex-direction: column; gap: 4px; }\n.entity-map-item {\n padding: 8px 10px; border-radius: 6px;\n cursor: pointer; border: 1px solid var(--mj-border-subtle); transition: all 0.15s;\n}\n.entity-map-item:hover { background: var(--mj-bg-page); }\n.entity-map-item.selected { background: var(--mj-status-info-bg); border-color: var(--mj-color-indigo-500); }\n.entity-map-item.pending { border-left: 3px solid var(--mj-status-warning); }\n\n.em-top-row {\n display: flex; align-items: center; gap: 4px;\n font-size: 13px; margin-bottom: 4px;\n}\n.em-name { font-weight: 600; }\n.em-arrow { color: var(--mj-text-disabled); font-size: 11px; }\n.em-entity { color: var(--mj-text-muted); }\n\n.em-bottom-row {\n display: flex; align-items: center; justify-content: space-between;\n font-size: 11px; color: var(--mj-text-disabled);\n}\n.em-badges { display: flex; gap: 4px; align-items: center; }\n.badge {\n font-size: 10px; padding: 1px 6px; border-radius: 4px; font-weight: 600;\n}\n.badge-direction { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n.badge-pending { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n\n.em-actions { display: flex; align-items: center; gap: 4px; }\n.em-delete {\n opacity: 0; transition: opacity 0.15s;\n cursor: pointer; color: var(--mj-color-error-600); background: none; border: none;\n padding: 2px 4px; font-size: 12px;\n}\n.entity-map-item:hover .em-delete { opacity: 1; }\n\n/* ===== Center Panel: Placeholder ===== */\n.placeholder-message {\n display: flex; flex-direction: column; align-items: center;\n justify-content: center; height: 300px; color: var(--mj-text-disabled);\n}\n.placeholder-message i { font-size: 36px; margin-bottom: 12px; }\n.placeholder-message p { text-align: center; }\n\n/* ===== Pending Entity Panel ===== */\n.pending-entity-panel {\n background: var(--mj-status-warning-bg); border: 1px solid var(--mj-color-warning-200); border-radius: 10px;\n padding: 24px; text-align: center;\n}\n.pending-icon { font-size: 40px; color: var(--mj-status-warning); margin-bottom: 12px; }\n.pending-entity-panel h3 { font-size: 16px; margin-bottom: 8px; }\n.pending-entity-panel p { font-size: 13px; color: var(--mj-text-disabled); margin-bottom: 16px; line-height: 1.5; }\n\n/* Stepper */\n.pending-steps {\n display: flex; gap: 0; margin: 20px 0; justify-content: center; align-items: center;\n}\n.step {\n display: flex; flex-direction: column; align-items: center; gap: 6px;\n padding: 0 16px;\n}\n.step-circle {\n width: 36px; height: 36px; border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n font-size: 14px; font-weight: 700;\n}\n.step-circle.done { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.step-circle.current { background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); }\n.step-circle.future { background: var(--mj-bg-surface-hover); color: var(--mj-text-disabled); }\n.step-label { font-size: 10px; font-weight: 600; color: var(--mj-text-disabled); text-transform: uppercase; white-space: nowrap; }\n.step-connector { width: 32px; height: 2px; background: var(--mj-border-default); align-self: center; margin-bottom: 18px; }\n.step-connector.done { background: var(--mj-color-success-700); }\n\n/* DDL in pending view */\n.ddl-preview-inline { margin-top: 16px; text-align: left; }\n.ddl-code-block {\n background: var(--mj-text-primary); color: var(--mj-color-neutral-300); padding: 12px;\n border-radius: 6px; font-size: 12px; line-height: 1.5;\n max-height: 250px; overflow: auto; white-space: pre-wrap;\n}\n.ddl-actions { display: flex; gap: 8px; margin-top: 12px; justify-content: center; }\n\n/* Pending fields list */\n.pending-fields-section { text-align: left; }\n.pending-fields-list {\n display: flex; flex-direction: column; gap: 2px;\n max-height: 200px; overflow-y: auto;\n}\n.pending-field-item {\n display: flex; align-items: center; gap: 8px;\n padding: 4px 8px; font-size: 13px; border-radius: 4px;\n}\n.pending-field-item:hover { background: var(--mj-status-warning-bg); }\n.pending-field-name { font-weight: 600; }\n.pending-field-type { font-size: 11px; color: var(--mj-text-disabled); background: var(--mj-bg-surface-hover); padding: 1px 6px; border-radius: 3px; }\n.pending-field-req { color: var(--mj-color-error-600); font-weight: 700; }\n\n/* ===== Auto-map banner ===== */\n.auto-map-banner {\n background: var(--mj-status-info-bg); border: 1px solid var(--mj-color-info-100); border-radius: 8px;\n padding: 12px 16px; margin-bottom: 16px;\n display: flex; align-items: center; gap: 12px;\n}\n.auto-map-banner > i { color: var(--mj-color-indigo-500); font-size: 18px; }\n.auto-map-banner .banner-text { flex: 1; }\n.auto-map-banner .banner-text p { font-size: 13px; color: var(--mj-text-muted); margin: 0; }\n.auto-map-banner .banner-text strong { color: var(--mj-text-primary); }\n\n/* ===== Field Mapping Editor ===== */\n.field-mapping-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 16px;\n}\n.field-mapping-actions { display: flex; gap: 6px; }\n\n/* ===== Field Map Cards (New world-class design) ===== */\n.field-map-cards {\n display: flex; flex-direction: column; gap: 6px;\n}\n\n.field-map-card {\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n background: var(--mj-bg-surface);\n transition: all 0.2s ease;\n overflow: hidden;\n}\n.field-map-card:hover {\n border-color: var(--mj-border-strong);\n box-shadow: 0 2px 8px rgba(74, 108, 247, 0.06);\n}\n.field-map-card.has-transform {\n border-left: 3px solid var(--mj-color-indigo-500);\n}\n.field-map-card.validation-error {\n border-color: var(--mj-color-warning-200);\n background: var(--mj-status-warning-bg);\n}\n\n/* Main mapping row */\n.fmc-row {\n display: flex; align-items: center; gap: 10px;\n padding: 10px 14px;\n}\n\n/* Source column */\n.fmc-source {\n flex: 1; min-width: 0;\n}\n.fmc-field-name {\n font-size: 13px; font-weight: 600; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.fmc-badges {\n display: flex; gap: 4px; margin-top: 3px; flex-wrap: wrap;\n}\n.fmc-badge {\n font-size: 9px; font-weight: 700; padding: 1px 5px;\n border-radius: 3px; text-transform: uppercase; letter-spacing: 0.3px;\n white-space: nowrap; line-height: 1.5;\n}\n.badge-type {\n background: var(--mj-bg-surface-hover); color: var(--mj-text-muted);\n}\n.badge-pk {\n background: linear-gradient(135deg, var(--mj-color-warning-100), var(--mj-color-warning-200));\n color: var(--mj-color-warning-800);\n}\n.badge-pk i { font-size: 8px; margin-right: 2px; }\n.badge-req {\n background: linear-gradient(135deg, var(--mj-color-error-100), var(--mj-color-error-200));\n color: var(--mj-color-error-800);\n}\n.badge-ro {\n background: var(--mj-color-purple-50); color: var(--mj-color-purple-700);\n}\n\n/* Transform zone (center arrow / pill) */\n.fmc-transform-zone {\n flex-shrink: 0;\n display: flex; align-items: center; justify-content: center;\n width: 100px;\n}\n.fmc-arrow-btn {\n width: 32px; height: 32px;\n border-radius: 50%; border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-page); color: var(--mj-text-disabled);\n cursor: pointer; font-size: 12px;\n display: flex; align-items: center; justify-content: center;\n transition: all 0.2s;\n}\n.fmc-arrow-btn:hover {\n background: var(--mj-color-indigo-500); color: var(--mj-bg-surface); border-color: var(--mj-color-indigo-500);\n transform: scale(1.1);\n}\n.fmc-transform-pill {\n display: flex; align-items: center; gap: 4px;\n padding: 4px 10px; border-radius: 16px;\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border: 1px solid var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n font-size: 11px; font-weight: 600;\n cursor: pointer; transition: all 0.2s;\n white-space: nowrap;\n}\n.fmc-transform-pill:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-100), var(--mj-color-indigo-200));\n transform: scale(1.02);\n}\n.fmc-transform-pill i { font-size: 10px; }\n.fmc-transform-direct {\n background: linear-gradient(135deg, var(--mj-bg-page), var(--mj-bg-surface-hover));\n border-color: var(--mj-color-neutral-300); color: var(--mj-text-muted);\n}\n.fmc-transform-direct:hover {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-200); color: var(--mj-color-indigo-700);\n}\n.fmc-step-count {\n background: var(--mj-color-indigo-700); color: var(--mj-bg-surface); font-size: 9px;\n padding: 0 4px; border-radius: 8px; font-weight: 700;\n}\n\n/* Destination column */\n.fmc-dest {\n flex: 1; min-width: 0;\n}\n.fmc-select {\n width: 100%; padding: 6px 10px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-select:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n\n/* Shared input style */\n.fmc-input {\n width: 100%; padding: 5px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 13px; color: var(--mj-text-primary);\n background: var(--mj-bg-page);\n transition: border-color 0.15s;\n}\n.fmc-input:focus { border-color: var(--mj-color-indigo-500); outline: none; box-shadow: 0 0 0 2px rgba(74, 108, 247, 0.12); }\n.fmc-input.mono { font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-size: 12px; }\n\n/* Flags (key, required) */\n.fmc-flags {\n display: flex; gap: 6px; flex-shrink: 0;\n}\n.fmc-flag {\n display: flex; align-items: center; gap: 3px;\n font-size: 11px; color: var(--mj-text-disabled); cursor: pointer;\n padding: 2px 4px; border-radius: 4px;\n transition: color 0.15s;\n}\n.fmc-flag:hover { color: var(--mj-color-indigo-500); }\n.fmc-flag input[type=\"checkbox\"] {\n width: 13px; height: 13px; cursor: pointer;\n accent-color: var(--mj-color-indigo-500);\n}\n.fmc-flag i { font-size: 10px; }\n.fmc-req-star { font-size: 14px; font-weight: 700; color: inherit; }\n\n/* Remove button */\n.fmc-remove {\n flex-shrink: 0;\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 13px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-remove:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n/* ===== Transform Pipeline Editor ===== */\n.fmc-transform-editor {\n border-top: 1px solid var(--mj-bg-surface-hover);\n background: linear-gradient(180deg, var(--mj-color-indigo-50) 0%, var(--mj-bg-page) 100%);\n padding: 12px 14px;\n}\n.fmc-te-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 10px;\n}\n.fmc-te-title {\n font-size: 11px; font-weight: 700; color: var(--mj-color-indigo-500);\n text-transform: uppercase; letter-spacing: 0.5px;\n}\n.fmc-te-title i { margin-right: 4px; }\n.fmc-te-add {\n font-size: 11px; font-weight: 600; color: var(--mj-color-indigo-500);\n background: none; border: 1px solid var(--mj-color-indigo-200);\n border-radius: 6px; padding: 3px 10px;\n cursor: pointer; transition: all 0.15s;\n}\n.fmc-te-add:hover { background: var(--mj-color-indigo-50); }\n.fmc-te-add i { margin-right: 3px; font-size: 10px; }\n\n/* Individual transform step */\n.fmc-te-step {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 10px 12px;\n margin-bottom: 8px;\n transition: box-shadow 0.15s;\n}\n.fmc-te-step:hover { box-shadow: 0 1px 4px rgba(0,0,0,0.05); }\n.fmc-te-step:last-child { margin-bottom: 0; }\n\n.fmc-te-step-header {\n display: flex; align-items: center; gap: 8px; margin-bottom: 8px;\n}\n.fmc-te-step-num {\n width: 22px; height: 22px; border-radius: 50%;\n background: linear-gradient(135deg, var(--mj-color-indigo-500), var(--mj-color-indigo-500));\n color: var(--mj-bg-surface); font-size: 11px; font-weight: 700;\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n.fmc-te-type-select {\n flex: 1; padding: 4px 8px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 12px; font-weight: 600;\n color: var(--mj-text-primary); background: var(--mj-bg-page);\n}\n.fmc-te-type-select:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-error-select {\n width: 100px; padding: 4px 6px; border: 1px solid var(--mj-border-default);\n border-radius: 6px; font-size: 11px; color: var(--mj-text-muted);\n background: var(--mj-bg-page);\n}\n.fmc-te-error-select:focus { border-color: var(--mj-color-indigo-500); outline: none; }\n.fmc-te-remove-step {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 12px; padding: 4px;\n border-radius: 4px; transition: all 0.15s;\n}\n.fmc-te-remove-step:hover { color: var(--mj-status-error); background: var(--mj-status-error-bg); }\n\n/* Config area */\n.fmc-te-config {\n padding-left: 30px;\n}\n.fmc-te-field {\n margin-bottom: 8px;\n}\n.fmc-te-field:last-child { margin-bottom: 0; }\n.fmc-te-field label {\n display: block; font-size: 11px; font-weight: 600;\n color: var(--mj-text-muted); margin-bottom: 3px;\n}\n.fmc-te-field label code {\n background: var(--mj-bg-surface-hover); padding: 0 3px; border-radius: 3px;\n font-size: 10px; color: var(--mj-color-indigo-700);\n}\n.fmc-te-hint { font-weight: 400; color: var(--mj-text-disabled); }\n.fmc-te-row {\n display: flex; gap: 10px; align-items: flex-end;\n}\n.fmc-te-sm { max-width: 140px; }\n.fmc-textarea {\n resize: vertical; min-height: 40px;\n}\n\n/* Combine chips */\n.fmc-combine-chips {\n display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px;\n}\n.fmc-chip {\n font-size: 11px; padding: 3px 8px; border-radius: 14px;\n border: 1px solid var(--mj-border-default); background: var(--mj-bg-surface);\n color: var(--mj-text-muted); cursor: pointer;\n transition: all 0.15s; font-weight: 500;\n}\n.fmc-chip:hover { border-color: var(--mj-color-indigo-300); color: var(--mj-color-indigo-700); }\n.fmc-chip.selected {\n background: linear-gradient(135deg, var(--mj-color-indigo-50), var(--mj-color-indigo-100));\n border-color: var(--mj-color-indigo-400); color: var(--mj-color-indigo-700); font-weight: 600;\n}\n\n/* Lookup table */\n.fmc-lookup-table {\n display: flex; flex-direction: column; gap: 4px; margin-top: 4px;\n}\n.fmc-lookup-row {\n display: flex; align-items: center; gap: 6px;\n}\n.fmc-lookup-row .fmc-input { flex: 1; }\n.fmc-lookup-arrow { color: var(--mj-color-indigo-200); font-size: 10px; flex-shrink: 0; }\n.fmc-lookup-del {\n background: none; border: none; cursor: pointer;\n color: var(--mj-color-neutral-300); font-size: 11px; padding: 2px;\n transition: color 0.15s;\n}\n.fmc-lookup-del:hover { color: var(--mj-status-error); }\n.fmc-lookup-add {\n font-size: 11px; color: var(--mj-color-indigo-500); background: none;\n border: 1px dashed var(--mj-color-indigo-200); border-radius: 6px;\n padding: 4px 10px; cursor: pointer;\n transition: all 0.15s; margin-top: 2px;\n}\n.fmc-lookup-add:hover { background: var(--mj-color-indigo-50); }\n.fmc-lookup-add i { margin-right: 3px; font-size: 10px; }\n\n/* ===== Data Preview ===== */\n.data-preview-section { margin-top: 24px; border-top: 1px solid var(--mj-border-subtle); padding-top: 16px; }\n.preview-actions { display: flex; gap: 8px; margin-bottom: 12px; }\n\n.preview-panel {\n background: var(--mj-bg-page); border: 1px solid var(--mj-border-default); border-radius: 8px;\n padding: 12px; margin-bottom: 12px;\n}\n.preview-panel-header {\n display: flex; align-items: center; justify-content: space-between;\n margin-bottom: 8px;\n}\n.preview-panel-header h4 { font-size: 13px; font-weight: 600; margin: 0; }\n.preview-panel-header h4 i { margin-right: 6px; color: var(--mj-color-indigo-500); }\n\n.preview-table-wrapper { overflow-x: auto; }\n.preview-table {\n width: 100%; border-collapse: collapse; font-size: 12px;\n}\n.preview-table th {\n text-align: left; padding: 5px 8px;\n background: var(--mj-border-default); font-weight: 600; font-size: 10px;\n text-transform: uppercase; color: var(--mj-text-muted);\n border-bottom: 1px solid var(--mj-border-default); white-space: nowrap;\n}\n.preview-table td {\n padding: 4px 8px; border-bottom: 1px solid var(--mj-border-subtle);\n white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;\n}\n.preview-table tr:hover { background: var(--mj-status-info-bg); }\n\n/* ===== Right panel: run details ===== */\n.run-summary-card {\n background: var(--mj-bg-page); border-radius: 8px; padding: 12px;\n}\n.run-summary-row {\n display: flex; justify-content: space-between;\n padding: 4px 0; font-size: 13px;\n}\n.run-summary-row .label { color: var(--mj-text-muted); font-weight: 500; }\n.run-status {\n font-size: 11px; padding: 2px 6px; border-radius: 4px; font-weight: 600;\n}\n.status-green { background: var(--mj-status-success-bg); color: var(--mj-color-success-700); }\n.status-amber { background: var(--mj-color-warning-50); color: var(--mj-color-warning-600); }\n.status-red { background: var(--mj-status-error-bg); color: var(--mj-color-error-600); }\n\n.entity-stat-card {\n background: var(--mj-bg-page); border-radius: 6px; padding: 10px;\n margin-bottom: 8px;\n}\n.entity-stat-name { font-size: 13px; font-weight: 600; margin-bottom: 6px; }\n.entity-stat-grid { display: flex; gap: 12px; }\n.mini-stat { text-align: center; }\n.mini-val { display: block; font-size: 16px; font-weight: 600; }\n.mini-val.has-errors { color: var(--mj-color-error-600); }\n.mini-label { font-size: 10px; color: var(--mj-text-disabled); }\n\n/* ===== Validation ===== */\n.validation-banner {\n background: var(--mj-color-warning-50); border: 1px solid var(--mj-color-warning-200); border-radius: 8px;\n padding: 10px 14px; margin-bottom: 14px;\n display: flex; align-items: flex-start; gap: 10px;\n font-size: 13px; color: var(--mj-color-warning-600);\n}\n.validation-banner > i { margin-top: 2px; }\n.validation-warnings { display: flex; flex-direction: column; gap: 2px; }\n\n.field-map-card.validation-error .fmc-source {\n border-left: 3px solid var(--mj-color-warning-600);\n padding-left: 8px;\n}\n\n/* ===== Responsive ===== */\n@media (max-width: 1100px) { .right-panel { display: none; } }\n@media (max-width: 800px) { .left-panel { width: 260px; } }\n"] }]
|
|
2368
2356
|
}], null, null); })();
|
|
2369
2357
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MappingWorkspaceComponent, { className: "MappingWorkspaceComponent", filePath: "src/Integration/components/mapping-workspace/mapping-workspace.component.ts", lineNumber: 118 }); })();
|
|
2370
2358
|
export function LoadMappingWorkspace() {
|