@memberjunction/ng-dashboards 5.34.0 → 5.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +781 -783
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +79 -30
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +196 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +234 -246
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +107 -93
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +36 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +31 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -22,19 +22,19 @@ const _forTrack0 = ($index, $item) => $item.ID;
|
|
|
22
22
|
const _forTrack1 = ($index, $item) => $item.Name;
|
|
23
23
|
const _forTrack2 = ($index, $item) => $item.Value;
|
|
24
24
|
const _forTrack3 = ($index, $item) => $item.EntityID;
|
|
25
|
-
function
|
|
25
|
+
function MappingWorkspaceComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
26
26
|
i0.ɵɵelement(0, "mj-loading", 3);
|
|
27
27
|
} }
|
|
28
|
-
function
|
|
28
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
29
29
|
i0.ɵɵelement(0, "mj-loading", 9);
|
|
30
30
|
} }
|
|
31
|
-
function
|
|
31
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
32
32
|
i0.ɵɵelementStart(0, "div", 30);
|
|
33
33
|
i0.ɵɵelement(1, "i", 42);
|
|
34
34
|
i0.ɵɵtext(2, " Discovering objects... ");
|
|
35
35
|
i0.ɵɵelementEnd();
|
|
36
36
|
} }
|
|
37
|
-
function
|
|
37
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
38
38
|
i0.ɵɵelementStart(0, "div", 31);
|
|
39
39
|
i0.ɵɵelement(1, "i", 43);
|
|
40
40
|
i0.ɵɵtext(2);
|
|
@@ -44,16 +44,16 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
44
44
|
i0.ɵɵadvance(2);
|
|
45
45
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.DiscoverError, " ");
|
|
46
46
|
} }
|
|
47
|
-
function
|
|
47
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
48
48
|
i0.ɵɵelementStart(0, "div", 31);
|
|
49
49
|
i0.ɵɵtext(1, " No objects found in external system. ");
|
|
50
50
|
i0.ɵɵelementEnd();
|
|
51
51
|
} }
|
|
52
|
-
function
|
|
52
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
53
53
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
54
54
|
i0.ɵɵelementStart(0, "mj-dropdown", 44);
|
|
55
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
56
|
-
i0.ɵɵlistener("ValueChange", function
|
|
55
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
56
|
+
i0.ɵɵlistener("ValueChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
57
57
|
i0.ɵɵelementEnd();
|
|
58
58
|
} if (rf & 2) {
|
|
59
59
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -61,13 +61,13 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
61
61
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedSourceObjectName);
|
|
62
62
|
i0.ɵɵproperty("Filterable", true)("DefaultItem", i0.ɵɵpureFunction0(5, _c2));
|
|
63
63
|
} }
|
|
64
|
-
function
|
|
64
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
65
65
|
i0.ɵɵelement(0, "mj-loading", 16);
|
|
66
66
|
} }
|
|
67
|
-
function
|
|
67
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_21_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
68
68
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
69
69
|
i0.ɵɵelementStart(0, "mj-dropdown", 46);
|
|
70
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
70
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
71
71
|
i0.ɵɵelementEnd();
|
|
72
72
|
} if (rf & 2) {
|
|
73
73
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -75,18 +75,18 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
75
75
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SelectedEntityID);
|
|
76
76
|
i0.ɵɵproperty("Filterable", true)("DefaultItem", i0.ɵɵpureFunction0(5, _c3));
|
|
77
77
|
} }
|
|
78
|
-
function
|
|
78
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
79
79
|
i0.ɵɵelementStart(0, "div", 29)(1, "label");
|
|
80
80
|
i0.ɵɵtext(2, "Target MJ Entity");
|
|
81
81
|
i0.ɵɵelementEnd();
|
|
82
|
-
i0.ɵɵconditionalCreate(3,
|
|
82
|
+
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_21_Conditional_3_Template, 1, 0, "mj-loading", 16)(4, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_21_Conditional_4_Template, 1, 6, "mj-dropdown", 45);
|
|
83
83
|
i0.ɵɵelementEnd();
|
|
84
84
|
} if (rf & 2) {
|
|
85
85
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
86
86
|
i0.ɵɵadvance(3);
|
|
87
87
|
i0.ɵɵconditional(ctx_r1.IsLoadingEntities ? 3 : 4);
|
|
88
88
|
} }
|
|
89
|
-
function
|
|
89
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
90
90
|
i0.ɵɵelementStart(0, "span", 51);
|
|
91
91
|
i0.ɵɵtext(1);
|
|
92
92
|
i0.ɵɵelementEnd();
|
|
@@ -95,15 +95,15 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
95
95
|
i0.ɵɵadvance();
|
|
96
96
|
i0.ɵɵtextInterpolate1("Suggested: ", ctx_r1.SuggestedTableName);
|
|
97
97
|
} }
|
|
98
|
-
function
|
|
98
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
99
99
|
i0.ɵɵelement(0, "i", 42);
|
|
100
100
|
i0.ɵɵtext(1, " Generating... ");
|
|
101
101
|
} }
|
|
102
|
-
function
|
|
102
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
103
103
|
i0.ɵɵelement(0, "i", 35);
|
|
104
104
|
i0.ɵɵtext(1, " Preview DDL ");
|
|
105
105
|
} }
|
|
106
|
-
function
|
|
106
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
107
107
|
i0.ɵɵelementStart(0, "div", 54);
|
|
108
108
|
i0.ɵɵelement(1, "i", 43);
|
|
109
109
|
i0.ɵɵtext(2);
|
|
@@ -113,7 +113,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
113
113
|
i0.ɵɵadvance(2);
|
|
114
114
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.DDLPreviewError, " ");
|
|
115
115
|
} }
|
|
116
|
-
function
|
|
116
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
117
117
|
i0.ɵɵelementStart(0, "pre", 55);
|
|
118
118
|
i0.ɵɵtext(1);
|
|
119
119
|
i0.ɵɵelementEnd();
|
|
@@ -122,14 +122,14 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
122
122
|
i0.ɵɵadvance();
|
|
123
123
|
i0.ɵɵtextInterpolate(ctx_r1.DDLPreviewContent);
|
|
124
124
|
} }
|
|
125
|
-
function
|
|
125
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
126
126
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
127
127
|
i0.ɵɵelementStart(0, "div", 52)(1, "button", 53);
|
|
128
|
-
i0.ɵɵlistener("click", function
|
|
129
|
-
i0.ɵɵconditionalCreate(2,
|
|
128
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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()); });
|
|
129
|
+
i0.ɵɵconditionalCreate(2, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_2_Template, 2, 0)(3, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_3_Template, 2, 0);
|
|
130
130
|
i0.ɵɵelementEnd();
|
|
131
|
-
i0.ɵɵconditionalCreate(4,
|
|
132
|
-
i0.ɵɵconditionalCreate(5,
|
|
131
|
+
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_4_Template, 3, 1, "div", 54);
|
|
132
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Conditional_5_Template, 2, 1, "pre", 55);
|
|
133
133
|
i0.ɵɵelementEnd();
|
|
134
134
|
} if (rf & 2) {
|
|
135
135
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
@@ -142,7 +142,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
142
142
|
i0.ɵɵadvance();
|
|
143
143
|
i0.ɵɵconditional(ctx_r1.DDLPreviewContent ? 5 : -1);
|
|
144
144
|
} }
|
|
145
|
-
function
|
|
145
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
146
146
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
147
147
|
i0.ɵɵelementStart(0, "div", 37)(1, "div", 47);
|
|
148
148
|
i0.ɵɵtext(2, "Define New Entity");
|
|
@@ -151,24 +151,24 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
151
151
|
i0.ɵɵtext(5, "DB Schema");
|
|
152
152
|
i0.ɵɵelementEnd();
|
|
153
153
|
i0.ɵɵelementStart(6, "mj-combobox", 48);
|
|
154
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
155
|
-
i0.ɵɵlistener("ValueChange", function
|
|
154
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
155
|
+
i0.ɵɵlistener("ValueChange", function MappingWorkspaceComponent_Conditional_5_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()); });
|
|
156
156
|
i0.ɵɵelementEnd()();
|
|
157
157
|
i0.ɵɵelementStart(7, "div", 49)(8, "div", 29)(9, "label");
|
|
158
158
|
i0.ɵɵtext(10, "Table Name");
|
|
159
159
|
i0.ɵɵelementEnd();
|
|
160
160
|
i0.ɵɵelementStart(11, "input", 50);
|
|
161
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
161
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
162
162
|
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵconditionalCreate(12,
|
|
163
|
+
i0.ɵɵconditionalCreate(12, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_12_Template, 2, 1, "span", 51);
|
|
164
164
|
i0.ɵɵelementEnd();
|
|
165
165
|
i0.ɵɵelementStart(13, "div", 29)(14, "label");
|
|
166
166
|
i0.ɵɵtext(15, "Entity Name");
|
|
167
167
|
i0.ɵɵelementEnd();
|
|
168
168
|
i0.ɵɵelementStart(16, "input", 50);
|
|
169
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
169
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
170
170
|
i0.ɵɵelementEnd()()();
|
|
171
|
-
i0.ɵɵconditionalCreate(17,
|
|
171
|
+
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Conditional_17_Template, 6, 4, "div", 52);
|
|
172
172
|
i0.ɵɵelementEnd();
|
|
173
173
|
} if (rf & 2) {
|
|
174
174
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -187,57 +187,57 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Con
|
|
|
187
187
|
i0.ɵɵadvance();
|
|
188
188
|
i0.ɵɵconditional(ctx_r1.SelectedSourceObjectName && ctx_r1.NewEntitySchemaName && ctx_r1.NewEntityTableName ? 17 : -1);
|
|
189
189
|
} }
|
|
190
|
-
function
|
|
190
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
191
191
|
i0.ɵɵelement(0, "i", 42);
|
|
192
192
|
i0.ɵɵtext(1, " Saving... ");
|
|
193
193
|
} }
|
|
194
|
-
function
|
|
194
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
195
195
|
i0.ɵɵelement(0, "i", 36);
|
|
196
196
|
i0.ɵɵtext(1, " Create Pending Map ");
|
|
197
197
|
} }
|
|
198
|
-
function
|
|
198
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
199
199
|
i0.ɵɵelement(0, "i", 56);
|
|
200
200
|
i0.ɵɵtext(1, " Add Map ");
|
|
201
201
|
} }
|
|
202
|
-
function
|
|
202
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
203
203
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
204
204
|
i0.ɵɵelementStart(0, "div", 22)(1, "div", 25)(2, "h5");
|
|
205
205
|
i0.ɵɵelement(3, "i", 26);
|
|
206
206
|
i0.ɵɵtext(4, " Add Entity Map");
|
|
207
207
|
i0.ɵɵelementEnd();
|
|
208
208
|
i0.ɵɵelementStart(5, "button", 27);
|
|
209
|
-
i0.ɵɵlistener("click", function
|
|
209
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAddPanel()); });
|
|
210
210
|
i0.ɵɵelement(6, "i", 28);
|
|
211
211
|
i0.ɵɵelementEnd()();
|
|
212
212
|
i0.ɵɵelementStart(7, "div", 29)(8, "label");
|
|
213
213
|
i0.ɵɵtext(9, "Source Object");
|
|
214
214
|
i0.ɵɵelementEnd();
|
|
215
|
-
i0.ɵɵconditionalCreate(10,
|
|
215
|
+
i0.ɵɵconditionalCreate(10, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_10_Template, 3, 0, "div", 30)(11, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_11_Template, 3, 1, "div", 31)(12, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_12_Template, 2, 0, "div", 31)(13, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_13_Template, 1, 6, "mj-dropdown", 32);
|
|
216
216
|
i0.ɵɵelementEnd();
|
|
217
217
|
i0.ɵɵelementStart(14, "div", 33)(15, "button", 34);
|
|
218
|
-
i0.ɵɵlistener("click", function
|
|
218
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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")); });
|
|
219
219
|
i0.ɵɵelement(16, "i", 35);
|
|
220
220
|
i0.ɵɵtext(17, " Existing Entity ");
|
|
221
221
|
i0.ɵɵelementEnd();
|
|
222
222
|
i0.ɵɵelementStart(18, "button", 34);
|
|
223
|
-
i0.ɵɵlistener("click", function
|
|
223
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SetTargetMode("new")); });
|
|
224
224
|
i0.ɵɵelement(19, "i", 36);
|
|
225
225
|
i0.ɵɵtext(20, " New Entity ");
|
|
226
226
|
i0.ɵɵelementEnd()();
|
|
227
|
-
i0.ɵɵconditionalCreate(21,
|
|
228
|
-
i0.ɵɵconditionalCreate(22,
|
|
227
|
+
i0.ɵɵconditionalCreate(21, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_21_Template, 5, 1, "div", 29);
|
|
228
|
+
i0.ɵɵconditionalCreate(22, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_22_Template, 18, 10, "div", 37);
|
|
229
229
|
i0.ɵɵelementStart(23, "div", 29)(24, "label");
|
|
230
230
|
i0.ɵɵtext(25, "Sync Direction");
|
|
231
231
|
i0.ɵɵelementEnd();
|
|
232
232
|
i0.ɵɵelementStart(26, "mj-dropdown", 38);
|
|
233
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
233
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
234
234
|
i0.ɵɵelementEnd()();
|
|
235
235
|
i0.ɵɵelementStart(27, "div", 39)(28, "button", 40);
|
|
236
|
-
i0.ɵɵlistener("click", function
|
|
237
|
-
i0.ɵɵconditionalCreate(29,
|
|
236
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SaveAddMap()); });
|
|
237
|
+
i0.ɵɵconditionalCreate(29, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_29_Template, 2, 0)(30, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_30_Template, 2, 0)(31, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Conditional_31_Template, 2, 0);
|
|
238
238
|
i0.ɵɵelementEnd();
|
|
239
239
|
i0.ɵɵelementStart(32, "button", 41);
|
|
240
|
-
i0.ɵɵlistener("click", function
|
|
240
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseAddPanel()); });
|
|
241
241
|
i0.ɵɵtext(33, " Cancel ");
|
|
242
242
|
i0.ɵɵelementEnd()()();
|
|
243
243
|
} if (rf & 2) {
|
|
@@ -260,26 +260,26 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_7_Tem
|
|
|
260
260
|
i0.ɵɵadvance();
|
|
261
261
|
i0.ɵɵconditional(ctx_r1.IsSavingEntityMap ? 29 : ctx_r1.TargetMode === "new" ? 30 : 31);
|
|
262
262
|
} }
|
|
263
|
-
function
|
|
263
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
264
264
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
265
265
|
i0.ɵɵelementStart(0, "div", 23)(1, "input", 57);
|
|
266
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
266
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
267
267
|
i0.ɵɵelementEnd()();
|
|
268
268
|
} if (rf & 2) {
|
|
269
269
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
270
270
|
i0.ɵɵadvance();
|
|
271
271
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.EntityMapSearchText);
|
|
272
272
|
} }
|
|
273
|
-
function
|
|
273
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
274
274
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
275
275
|
i0.ɵɵelementStart(0, "p", 15);
|
|
276
276
|
i0.ɵɵtext(1, " No entity maps configured. ");
|
|
277
277
|
i0.ɵɵelementStart(2, "a", 58);
|
|
278
|
-
i0.ɵɵlistener("click", function
|
|
278
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_9_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenAddPanel()); });
|
|
279
279
|
i0.ɵɵtext(3, "Add one");
|
|
280
280
|
i0.ɵɵelementEnd()();
|
|
281
281
|
} }
|
|
282
|
-
function
|
|
282
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
283
283
|
i0.ɵɵelementStart(0, "p", 15);
|
|
284
284
|
i0.ɵɵtext(1);
|
|
285
285
|
i0.ɵɵelementEnd();
|
|
@@ -288,25 +288,25 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_10_Te
|
|
|
288
288
|
i0.ɵɵadvance();
|
|
289
289
|
i0.ɵɵtextInterpolate1("No matches for \"", ctx_r1.EntityMapSearchText, "\".");
|
|
290
290
|
} }
|
|
291
|
-
function
|
|
291
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
292
292
|
i0.ɵɵelementStart(0, "span", 69);
|
|
293
293
|
i0.ɵɵtext(1, "Pending");
|
|
294
294
|
i0.ɵɵelementEnd();
|
|
295
295
|
} }
|
|
296
|
-
function
|
|
296
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
297
297
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
298
298
|
i0.ɵɵelementStart(0, "mj-switch", 74);
|
|
299
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
300
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
299
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
300
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
301
301
|
i0.ɵɵelementEnd();
|
|
302
302
|
} if (rf & 2) {
|
|
303
303
|
const item_r12 = i0.ɵɵnextContext().$implicit;
|
|
304
304
|
i0.ɵɵtwoWayProperty("ngModel", item_r12.RealMap.SyncEnabled);
|
|
305
305
|
} }
|
|
306
|
-
function
|
|
306
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
307
307
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
308
308
|
i0.ɵɵelementStart(0, "div", 60);
|
|
309
|
-
i0.ɵɵlistener("click", function
|
|
309
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
310
310
|
i0.ɵɵelementStart(1, "div", 61)(2, "span", 62);
|
|
311
311
|
i0.ɵɵtext(3);
|
|
312
312
|
i0.ɵɵelementEnd();
|
|
@@ -319,13 +319,13 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_Fo
|
|
|
319
319
|
i0.ɵɵelementStart(8, "div", 66)(9, "div", 67)(10, "span", 68);
|
|
320
320
|
i0.ɵɵtext(11);
|
|
321
321
|
i0.ɵɵelementEnd();
|
|
322
|
-
i0.ɵɵconditionalCreate(12,
|
|
322
|
+
i0.ɵɵconditionalCreate(12, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_For_2_Conditional_12_Template, 2, 0, "span", 69);
|
|
323
323
|
i0.ɵɵelementEnd();
|
|
324
324
|
i0.ɵɵelementStart(13, "div", 70)(14, "button", 71);
|
|
325
|
-
i0.ɵɵlistener("click", function
|
|
325
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
326
326
|
i0.ɵɵelement(15, "i", 72);
|
|
327
327
|
i0.ɵɵelementEnd();
|
|
328
|
-
i0.ɵɵconditionalCreate(16,
|
|
328
|
+
i0.ɵɵconditionalCreate(16, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_For_2_Conditional_16_Template, 1, 1, "mj-switch", 73);
|
|
329
329
|
i0.ɵɵelementEnd()()();
|
|
330
330
|
} if (rf & 2) {
|
|
331
331
|
const item_r12 = ctx.$implicit;
|
|
@@ -342,28 +342,28 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Conditional_11_Fo
|
|
|
342
342
|
i0.ɵɵadvance(4);
|
|
343
343
|
i0.ɵɵconditional(!item_r12.IsPending && item_r12.RealMap ? 16 : -1);
|
|
344
344
|
} }
|
|
345
|
-
function
|
|
345
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
346
346
|
i0.ɵɵelementStart(0, "div", 24);
|
|
347
|
-
i0.ɵɵrepeaterCreate(1,
|
|
347
|
+
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_For_2_Template, 17, 9, "div", 59, _forTrack0);
|
|
348
348
|
i0.ɵɵelementEnd();
|
|
349
349
|
} if (rf & 2) {
|
|
350
350
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
351
351
|
i0.ɵɵadvance();
|
|
352
352
|
i0.ɵɵrepeater(ctx_r1.FilteredMaps);
|
|
353
353
|
} }
|
|
354
|
-
function
|
|
354
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
355
355
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
356
356
|
i0.ɵɵelementStart(0, "div", 17)(1, "span", 18);
|
|
357
357
|
i0.ɵɵtext(2, "Entity Maps");
|
|
358
358
|
i0.ɵɵelementEnd();
|
|
359
359
|
i0.ɵɵelementStart(3, "div", 19)(4, "button", 20);
|
|
360
|
-
i0.ɵɵlistener("click", function
|
|
360
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenAddPanel()); });
|
|
361
361
|
i0.ɵɵelement(5, "i", 21);
|
|
362
362
|
i0.ɵɵtext(6, " Add Map ");
|
|
363
363
|
i0.ɵɵelementEnd()()();
|
|
364
|
-
i0.ɵɵconditionalCreate(7,
|
|
365
|
-
i0.ɵɵconditionalCreate(8,
|
|
366
|
-
i0.ɵɵconditionalCreate(9,
|
|
364
|
+
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_7_Template, 34, 12, "div", 22);
|
|
365
|
+
i0.ɵɵconditionalCreate(8, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_8_Template, 2, 1, "div", 23);
|
|
366
|
+
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_9_Template, 4, 0, "p", 15)(10, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_10_Template, 2, 1, "p", 15)(11, MappingWorkspaceComponent_Conditional_5_Conditional_7_Conditional_11_Template, 3, 0, "div", 24);
|
|
367
367
|
} if (rf & 2) {
|
|
368
368
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
369
369
|
i0.ɵɵadvance(7);
|
|
@@ -373,20 +373,20 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_7_Template(rf, ctx)
|
|
|
373
373
|
i0.ɵɵadvance();
|
|
374
374
|
i0.ɵɵconditional(ctx_r1.AllMaps.length === 0 && !ctx_r1.ShowAddPanel ? 9 : ctx_r1.FilteredMaps.length === 0 && ctx_r1.AllMaps.length > 0 ? 10 : 11);
|
|
375
375
|
} }
|
|
376
|
-
function
|
|
376
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
377
377
|
i0.ɵɵelementStart(0, "div", 11);
|
|
378
378
|
i0.ɵɵelement(1, "i", 75);
|
|
379
379
|
i0.ɵɵelementStart(2, "p");
|
|
380
380
|
i0.ɵɵtext(3, "Select an entity map from the left panel to view and edit field mappings.");
|
|
381
381
|
i0.ɵɵelementEnd()();
|
|
382
382
|
} }
|
|
383
|
-
function
|
|
383
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
384
384
|
i0.ɵɵelement(0, "i", 56);
|
|
385
385
|
} }
|
|
386
|
-
function
|
|
386
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
387
387
|
i0.ɵɵtext(0, " 2 ");
|
|
388
388
|
} }
|
|
389
|
-
function
|
|
389
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
390
390
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
391
391
|
i0.ɵɵelementStart(0, "div", 85)(1, "h4", 87);
|
|
392
392
|
i0.ɵɵelement(2, "i", 35);
|
|
@@ -396,7 +396,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_35_T
|
|
|
396
396
|
i0.ɵɵtext(5);
|
|
397
397
|
i0.ɵɵelementEnd();
|
|
398
398
|
i0.ɵɵelementStart(6, "div", 89)(7, "button", 90);
|
|
399
|
-
i0.ɵɵlistener("click", function
|
|
399
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
400
400
|
i0.ɵɵelement(8, "i", 91);
|
|
401
401
|
i0.ɵɵtext(9, " Copy DDL ");
|
|
402
402
|
i0.ɵɵelementEnd()()();
|
|
@@ -405,23 +405,23 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_35_T
|
|
|
405
405
|
i0.ɵɵadvance(5);
|
|
406
406
|
i0.ɵɵtextInterpolate(ctx_r1.SelectedPendingMap.DDLContent);
|
|
407
407
|
} }
|
|
408
|
-
function
|
|
408
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_For_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
409
409
|
i0.ɵɵelement(0, "i", 99);
|
|
410
410
|
} }
|
|
411
|
-
function
|
|
411
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_For_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
412
412
|
i0.ɵɵelementStart(0, "span", 100);
|
|
413
413
|
i0.ɵɵtext(1, "*");
|
|
414
414
|
i0.ɵɵelementEnd();
|
|
415
415
|
} }
|
|
416
|
-
function
|
|
416
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
417
417
|
i0.ɵɵelementStart(0, "div", 96)(1, "span", 97);
|
|
418
418
|
i0.ɵɵtext(2);
|
|
419
419
|
i0.ɵɵelementEnd();
|
|
420
420
|
i0.ɵɵelementStart(3, "span", 98);
|
|
421
421
|
i0.ɵɵtext(4);
|
|
422
422
|
i0.ɵɵelementEnd();
|
|
423
|
-
i0.ɵɵconditionalCreate(5,
|
|
424
|
-
i0.ɵɵconditionalCreate(6,
|
|
423
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_For_8_Conditional_5_Template, 1, 0, "i", 99);
|
|
424
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_For_8_Conditional_6_Template, 2, 0, "span", 100);
|
|
425
425
|
i0.ɵɵelementEnd();
|
|
426
426
|
} if (rf & 2) {
|
|
427
427
|
const field_r15 = ctx.$implicit;
|
|
@@ -434,7 +434,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_F
|
|
|
434
434
|
i0.ɵɵadvance();
|
|
435
435
|
i0.ɵɵconditional(field_r15.IsRequired ? 6 : -1);
|
|
436
436
|
} }
|
|
437
|
-
function
|
|
437
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
438
438
|
i0.ɵɵelementStart(0, "div", 86)(1, "h4", 92);
|
|
439
439
|
i0.ɵɵelement(2, "i", 93);
|
|
440
440
|
i0.ɵɵtext(3, " Source Fields ");
|
|
@@ -442,7 +442,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_T
|
|
|
442
442
|
i0.ɵɵtext(5);
|
|
443
443
|
i0.ɵɵelementEnd()();
|
|
444
444
|
i0.ɵɵelementStart(6, "div", 95);
|
|
445
|
-
i0.ɵɵrepeaterCreate(7,
|
|
445
|
+
i0.ɵɵrepeaterCreate(7, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_For_8_Template, 7, 4, "div", 96, _forTrack1);
|
|
446
446
|
i0.ɵɵelementEnd()();
|
|
447
447
|
} if (rf & 2) {
|
|
448
448
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -451,7 +451,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Conditional_36_T
|
|
|
451
451
|
i0.ɵɵadvance(2);
|
|
452
452
|
i0.ɵɵrepeater(ctx_r1.SelectedPendingMap.SourceFields);
|
|
453
453
|
} }
|
|
454
|
-
function
|
|
454
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
455
455
|
i0.ɵɵelementStart(0, "div", 12)(1, "div", 76);
|
|
456
456
|
i0.ɵɵelement(2, "i", 77);
|
|
457
457
|
i0.ɵɵelementEnd();
|
|
@@ -473,7 +473,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Template(rf, ctx
|
|
|
473
473
|
i0.ɵɵelementEnd()();
|
|
474
474
|
i0.ɵɵelement(16, "div", 82);
|
|
475
475
|
i0.ɵɵelementStart(17, "div", 79)(18, "div", 83);
|
|
476
|
-
i0.ɵɵconditionalCreate(19,
|
|
476
|
+
i0.ɵɵconditionalCreate(19, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_19_Template, 1, 0, "i", 56)(20, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_20_Template, 1, 0);
|
|
477
477
|
i0.ɵɵelementEnd();
|
|
478
478
|
i0.ɵɵelementStart(21, "span", 81);
|
|
479
479
|
i0.ɵɵtext(22, "DDL Generated");
|
|
@@ -492,8 +492,8 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Template(rf, ctx
|
|
|
492
492
|
i0.ɵɵelementStart(33, "span", 81);
|
|
493
493
|
i0.ɵɵtext(34, "Ready to Sync");
|
|
494
494
|
i0.ɵɵelementEnd()()();
|
|
495
|
-
i0.ɵɵconditionalCreate(35,
|
|
496
|
-
i0.ɵɵconditionalCreate(36,
|
|
495
|
+
i0.ɵɵconditionalCreate(35, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_35_Template, 10, 1, "div", 85);
|
|
496
|
+
i0.ɵɵconditionalCreate(36, MappingWorkspaceComponent_Conditional_5_Conditional_10_Conditional_36_Template, 9, 1, "div", 86);
|
|
497
497
|
i0.ɵɵelementEnd();
|
|
498
498
|
} if (rf & 2) {
|
|
499
499
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -512,10 +512,10 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_10_Template(rf, ctx
|
|
|
512
512
|
i0.ɵɵadvance();
|
|
513
513
|
i0.ɵɵconditional(ctx_r1.SelectedPendingMap.SourceFields.length > 0 ? 36 : -1);
|
|
514
514
|
} }
|
|
515
|
-
function
|
|
515
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
516
516
|
i0.ɵɵelement(0, "mj-loading", 13);
|
|
517
517
|
} }
|
|
518
|
-
function
|
|
518
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
519
519
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
520
520
|
i0.ɵɵelementStart(0, "div", 101);
|
|
521
521
|
i0.ɵɵelement(1, "i", 36);
|
|
@@ -525,7 +525,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Te
|
|
|
525
525
|
i0.ɵɵtext(6, " by matching source and destination field names.");
|
|
526
526
|
i0.ɵɵelementEnd()();
|
|
527
527
|
i0.ɵɵelementStart(7, "button", 114);
|
|
528
|
-
i0.ɵɵlistener("click", function
|
|
528
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.DismissAutoMapBanner()); });
|
|
529
529
|
i0.ɵɵelement(8, "i", 28);
|
|
530
530
|
i0.ɵɵelementEnd()();
|
|
531
531
|
} if (rf & 2) {
|
|
@@ -533,7 +533,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_0_Te
|
|
|
533
533
|
i0.ɵɵadvance(5);
|
|
534
534
|
i0.ɵɵtextInterpolate2("", ctx_r1.AutoMapCount, " field", ctx_r1.AutoMapCount !== 1 ? "s" : "", " auto-mapped");
|
|
535
535
|
} }
|
|
536
|
-
function
|
|
536
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_1_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
537
537
|
i0.ɵɵelementStart(0, "span");
|
|
538
538
|
i0.ɵɵtext(1);
|
|
539
539
|
i0.ɵɵelementEnd();
|
|
@@ -542,45 +542,45 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_1_Fo
|
|
|
542
542
|
i0.ɵɵadvance();
|
|
543
543
|
i0.ɵɵtextInterpolate(warning_r18);
|
|
544
544
|
} }
|
|
545
|
-
function
|
|
545
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
546
546
|
i0.ɵɵelementStart(0, "div", 102);
|
|
547
547
|
i0.ɵɵelement(1, "i", 43);
|
|
548
548
|
i0.ɵɵelementStart(2, "div", 115);
|
|
549
|
-
i0.ɵɵrepeaterCreate(3,
|
|
549
|
+
i0.ɵɵrepeaterCreate(3, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_1_For_4_Template, 2, 1, "span", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
550
550
|
i0.ɵɵelementEnd()();
|
|
551
551
|
} if (rf & 2) {
|
|
552
552
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
553
553
|
i0.ɵɵadvance(3);
|
|
554
554
|
i0.ɵɵrepeater(ctx_r1.MappingValidation.Warnings);
|
|
555
555
|
} }
|
|
556
|
-
function
|
|
556
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
557
557
|
i0.ɵɵelement(0, "i", 42);
|
|
558
558
|
i0.ɵɵtext(1, " Saving... ");
|
|
559
559
|
} }
|
|
560
|
-
function
|
|
560
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
561
561
|
i0.ɵɵelement(0, "i", 116);
|
|
562
562
|
i0.ɵɵtext(1, " Save ");
|
|
563
563
|
} }
|
|
564
|
-
function
|
|
564
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
565
565
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
566
566
|
i0.ɵɵelementStart(0, "p", 15);
|
|
567
567
|
i0.ɵɵtext(1, " No field mappings yet. ");
|
|
568
568
|
i0.ɵɵelementStart(2, "a", 58);
|
|
569
|
-
i0.ɵɵlistener("click", function
|
|
569
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_17_Template_a_click_2_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AddFieldMapping()); });
|
|
570
570
|
i0.ɵɵtext(3, "Add one");
|
|
571
571
|
i0.ɵɵelementEnd()();
|
|
572
572
|
} }
|
|
573
|
-
function
|
|
573
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
574
574
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
575
575
|
i0.ɵɵelementStart(0, "input", 136);
|
|
576
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
577
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
576
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
577
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
578
578
|
i0.ɵɵelementEnd();
|
|
579
579
|
} if (rf & 2) {
|
|
580
580
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
581
581
|
i0.ɵɵtwoWayProperty("ngModel", field_r22.SourceFieldName);
|
|
582
582
|
} }
|
|
583
|
-
function
|
|
583
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
584
584
|
i0.ɵɵelementStart(0, "span", 139);
|
|
585
585
|
i0.ɵɵtext(1);
|
|
586
586
|
i0.ɵɵelementEnd();
|
|
@@ -589,31 +589,31 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
589
589
|
i0.ɵɵadvance();
|
|
590
590
|
i0.ɵɵtextInterpolate(field_r22.SourceFieldType);
|
|
591
591
|
} }
|
|
592
|
-
function
|
|
592
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
593
593
|
i0.ɵɵelementStart(0, "span", 140);
|
|
594
594
|
i0.ɵɵelement(1, "i", 131);
|
|
595
595
|
i0.ɵɵtext(2, " PK");
|
|
596
596
|
i0.ɵɵelementEnd();
|
|
597
597
|
} }
|
|
598
|
-
function
|
|
598
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
599
599
|
i0.ɵɵelementStart(0, "span", 141);
|
|
600
600
|
i0.ɵɵtext(1, "REQ");
|
|
601
601
|
i0.ɵɵelementEnd();
|
|
602
602
|
} }
|
|
603
|
-
function
|
|
603
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
604
604
|
i0.ɵɵelementStart(0, "span", 142);
|
|
605
605
|
i0.ɵɵtext(1, "RO");
|
|
606
606
|
i0.ɵɵelementEnd();
|
|
607
607
|
} }
|
|
608
|
-
function
|
|
608
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
609
609
|
i0.ɵɵelementStart(0, "div", 137);
|
|
610
610
|
i0.ɵɵtext(1);
|
|
611
611
|
i0.ɵɵelementEnd();
|
|
612
612
|
i0.ɵɵelementStart(2, "div", 138);
|
|
613
|
-
i0.ɵɵconditionalCreate(3,
|
|
614
|
-
i0.ɵɵconditionalCreate(4,
|
|
615
|
-
i0.ɵɵconditionalCreate(5,
|
|
616
|
-
i0.ɵɵconditionalCreate(6,
|
|
613
|
+
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_3_Template, 2, 1, "span", 139);
|
|
614
|
+
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_4_Template, 3, 0, "span", 140);
|
|
615
|
+
i0.ɵɵconditionalCreate(5, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_5_Template, 2, 0, "span", 141);
|
|
616
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Conditional_6_Template, 2, 0, "span", 142);
|
|
617
617
|
i0.ɵɵelementEnd();
|
|
618
618
|
} if (rf & 2) {
|
|
619
619
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -628,10 +628,10 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
628
628
|
i0.ɵɵadvance();
|
|
629
629
|
i0.ɵɵconditional(field_r22.IsSourceReadOnly ? 6 : -1);
|
|
630
630
|
} }
|
|
631
|
-
function
|
|
631
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
632
632
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
633
633
|
i0.ɵɵelementStart(0, "button", 143);
|
|
634
|
-
i0.ɵɵlistener("click", function
|
|
634
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
635
635
|
i0.ɵɵelement(1, "i");
|
|
636
636
|
i0.ɵɵelementStart(2, "span");
|
|
637
637
|
i0.ɵɵtext(3);
|
|
@@ -650,10 +650,10 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
650
650
|
i0.ɵɵadvance(2);
|
|
651
651
|
i0.ɵɵtextInterpolate1("+", field_r22.TransformPipeline.length - 1);
|
|
652
652
|
} }
|
|
653
|
-
function
|
|
653
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
654
654
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
655
655
|
i0.ɵɵelementStart(0, "button", 145);
|
|
656
|
-
i0.ɵɵlistener("click", function
|
|
656
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
657
657
|
i0.ɵɵelement(1, "i", 64);
|
|
658
658
|
i0.ɵɵelementStart(2, "span");
|
|
659
659
|
i0.ɵɵtext(3);
|
|
@@ -664,7 +664,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
664
664
|
i0.ɵɵadvance(3);
|
|
665
665
|
i0.ɵɵtextInterpolate(field_r22.TransformPipeline.length > 0 ? ctx_r1.GetTransformLabel(field_r22.TransformPipeline[0].Type) : "Direct");
|
|
666
666
|
} }
|
|
667
|
-
function
|
|
667
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_9_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
668
668
|
i0.ɵɵelementStart(0, "option", 148);
|
|
669
669
|
i0.ɵɵtext(1);
|
|
670
670
|
i0.ɵɵelementEnd();
|
|
@@ -674,15 +674,15 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
674
674
|
i0.ɵɵadvance();
|
|
675
675
|
i0.ɵɵtextInterpolate(df_r26.Name);
|
|
676
676
|
} }
|
|
677
|
-
function
|
|
677
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
678
678
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
679
679
|
i0.ɵɵelementStart(0, "select", 146);
|
|
680
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
681
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
680
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
681
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
682
682
|
i0.ɵɵelementStart(1, "option", 147);
|
|
683
683
|
i0.ɵɵtext(2, "-- Select destination --");
|
|
684
684
|
i0.ɵɵelementEnd();
|
|
685
|
-
i0.ɵɵrepeaterCreate(3,
|
|
685
|
+
i0.ɵɵrepeaterCreate(3, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_9_For_4_Template, 2, 2, "option", 148, _forTrack0);
|
|
686
686
|
i0.ɵɵelementEnd();
|
|
687
687
|
} if (rf & 2) {
|
|
688
688
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
@@ -691,17 +691,17 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
691
691
|
i0.ɵɵadvance(3);
|
|
692
692
|
i0.ɵɵrepeater(ctx_r1.DestinationFields);
|
|
693
693
|
} }
|
|
694
|
-
function
|
|
694
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
695
695
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
696
696
|
i0.ɵɵelementStart(0, "input", 149);
|
|
697
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
698
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
697
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
698
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
699
699
|
i0.ɵɵelementEnd();
|
|
700
700
|
} if (rf & 2) {
|
|
701
701
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
702
702
|
i0.ɵɵtwoWayProperty("ngModel", field_r22.DestinationFieldName);
|
|
703
703
|
} }
|
|
704
|
-
function
|
|
704
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
705
705
|
i0.ɵɵelementStart(0, "option", 148);
|
|
706
706
|
i0.ɵɵtext(1);
|
|
707
707
|
i0.ɵɵelementEnd();
|
|
@@ -711,38 +711,38 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
711
711
|
i0.ɵɵadvance();
|
|
712
712
|
i0.ɵɵtextInterpolate(tt_r32.Label);
|
|
713
713
|
} }
|
|
714
|
-
function
|
|
714
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_17_Template(rf, ctx) { if (rf & 1) {
|
|
715
715
|
const _r34 = i0.ɵɵgetCurrentView();
|
|
716
716
|
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
717
717
|
i0.ɵɵtext(2, "Default value (when source is null)");
|
|
718
718
|
i0.ɵɵelementEnd();
|
|
719
719
|
i0.ɵɵelementStart(3, "input", 166);
|
|
720
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
720
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
721
721
|
i0.ɵɵelementEnd()();
|
|
722
722
|
} if (rf & 2) {
|
|
723
723
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
724
724
|
i0.ɵɵadvance(3);
|
|
725
725
|
i0.ɵɵproperty("ngModel", step_r31.Config["DefaultValue"] ?? "");
|
|
726
726
|
} }
|
|
727
|
-
function
|
|
727
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template(rf, ctx) { if (rf & 1) {
|
|
728
728
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
729
729
|
i0.ɵɵelementStart(0, "div", 164)(1, "div", 163)(2, "label");
|
|
730
730
|
i0.ɵɵtext(3, "Pattern");
|
|
731
731
|
i0.ɵɵelementEnd();
|
|
732
732
|
i0.ɵɵelementStart(4, "input", 167);
|
|
733
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
733
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
734
734
|
i0.ɵɵelementEnd()();
|
|
735
735
|
i0.ɵɵelementStart(5, "div", 163)(6, "label");
|
|
736
736
|
i0.ɵɵtext(7, "Replacement");
|
|
737
737
|
i0.ɵɵelementEnd();
|
|
738
738
|
i0.ɵɵelementStart(8, "input", 168);
|
|
739
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
739
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
740
740
|
i0.ɵɵelementEnd()();
|
|
741
741
|
i0.ɵɵelementStart(9, "div", 165)(10, "label");
|
|
742
742
|
i0.ɵɵtext(11, "Flags");
|
|
743
743
|
i0.ɵɵelementEnd();
|
|
744
744
|
i0.ɵɵelementStart(12, "input", 169);
|
|
745
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
745
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
746
746
|
i0.ɵɵelementEnd()()();
|
|
747
747
|
} if (rf & 2) {
|
|
748
748
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
@@ -753,19 +753,19 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
753
753
|
i0.ɵɵadvance(4);
|
|
754
754
|
i0.ɵɵproperty("ngModel", step_r31.Config["Flags"] ?? "g");
|
|
755
755
|
} }
|
|
756
|
-
function
|
|
756
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_19_Template(rf, ctx) { if (rf & 1) {
|
|
757
757
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
758
758
|
i0.ɵɵelementStart(0, "div", 164)(1, "div", 163)(2, "label");
|
|
759
759
|
i0.ɵɵtext(3, "Delimiter");
|
|
760
760
|
i0.ɵɵelementEnd();
|
|
761
761
|
i0.ɵɵelementStart(4, "input", 170);
|
|
762
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
762
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
763
763
|
i0.ɵɵelementEnd()();
|
|
764
764
|
i0.ɵɵelementStart(5, "div", 165)(6, "label");
|
|
765
765
|
i0.ɵɵtext(7, "Part index (0-based)");
|
|
766
766
|
i0.ɵɵelementEnd();
|
|
767
767
|
i0.ɵɵelementStart(8, "input", 171);
|
|
768
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
768
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
769
769
|
i0.ɵɵelementEnd()()();
|
|
770
770
|
} if (rf & 2) {
|
|
771
771
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
@@ -774,10 +774,10 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
774
774
|
i0.ɵɵadvance(4);
|
|
775
775
|
i0.ɵɵproperty("ngModel", step_r31.Config["Index"] ?? 0);
|
|
776
776
|
} }
|
|
777
|
-
function
|
|
777
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
778
778
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
779
779
|
i0.ɵɵelementStart(0, "button", 175);
|
|
780
|
-
i0.ɵɵlistener("click", function
|
|
780
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
781
781
|
i0.ɵɵtext(1);
|
|
782
782
|
i0.ɵɵelementEnd();
|
|
783
783
|
} if (rf & 2) {
|
|
@@ -788,19 +788,19 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
788
788
|
i0.ɵɵadvance();
|
|
789
789
|
i0.ɵɵtextInterpolate1(" ", sf_r39, " ");
|
|
790
790
|
} }
|
|
791
|
-
function
|
|
791
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_Template(rf, ctx) { if (rf & 1) {
|
|
792
792
|
const _r37 = i0.ɵɵgetCurrentView();
|
|
793
793
|
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
794
794
|
i0.ɵɵtext(2, "Source fields to combine");
|
|
795
795
|
i0.ɵɵelementEnd();
|
|
796
796
|
i0.ɵɵelementStart(3, "div", 172);
|
|
797
|
-
i0.ɵɵrepeaterCreate(4,
|
|
797
|
+
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_For_5_Template, 2, 3, "button", 173, i0.ɵɵrepeaterTrackByIdentity);
|
|
798
798
|
i0.ɵɵelementEnd()();
|
|
799
799
|
i0.ɵɵelementStart(6, "div", 165)(7, "label");
|
|
800
800
|
i0.ɵɵtext(8, "Separator");
|
|
801
801
|
i0.ɵɵelementEnd();
|
|
802
802
|
i0.ɵɵelementStart(9, "input", 174);
|
|
803
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
803
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
804
804
|
i0.ɵɵelementEnd()();
|
|
805
805
|
} if (rf & 2) {
|
|
806
806
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
@@ -810,17 +810,17 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
810
810
|
i0.ɵɵadvance(5);
|
|
811
811
|
i0.ɵɵproperty("ngModel", step_r31.Config["Separator"] ?? " ");
|
|
812
812
|
} }
|
|
813
|
-
function
|
|
813
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
814
814
|
const _r41 = i0.ɵɵgetCurrentView();
|
|
815
815
|
i0.ɵɵelementStart(0, "div", 177)(1, "input", 180);
|
|
816
|
-
i0.ɵɵlistener("change", function
|
|
816
|
+
i0.ɵɵlistener("change", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
817
817
|
i0.ɵɵelementEnd();
|
|
818
818
|
i0.ɵɵelement(2, "i", 181);
|
|
819
819
|
i0.ɵɵelementStart(3, "input", 182);
|
|
820
|
-
i0.ɵɵlistener("change", function
|
|
820
|
+
i0.ɵɵlistener("change", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
821
821
|
i0.ɵɵelementEnd();
|
|
822
822
|
i0.ɵɵelementStart(4, "button", 183);
|
|
823
|
-
i0.ɵɵlistener("click", function
|
|
823
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
824
824
|
i0.ɵɵelement(5, "i", 28);
|
|
825
825
|
i0.ɵɵelementEnd()();
|
|
826
826
|
} if (rf & 2) {
|
|
@@ -830,15 +830,15 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
830
830
|
i0.ɵɵadvance(2);
|
|
831
831
|
i0.ɵɵproperty("value", entry_r42.value);
|
|
832
832
|
} }
|
|
833
|
-
function
|
|
833
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_Template(rf, ctx) { if (rf & 1) {
|
|
834
834
|
const _r40 = i0.ɵɵgetCurrentView();
|
|
835
835
|
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
836
836
|
i0.ɵɵtext(2, "Value mapping");
|
|
837
837
|
i0.ɵɵelementEnd();
|
|
838
838
|
i0.ɵɵelementStart(3, "div", 176);
|
|
839
|
-
i0.ɵɵrepeaterCreate(4,
|
|
839
|
+
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_For_5_Template, 6, 2, "div", 177, i0.ɵɵrepeaterTrackByIndex);
|
|
840
840
|
i0.ɵɵelementStart(6, "button", 178);
|
|
841
|
-
i0.ɵɵlistener("click", function
|
|
841
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
842
842
|
i0.ɵɵelement(7, "i", 21);
|
|
843
843
|
i0.ɵɵtext(8, " Add mapping ");
|
|
844
844
|
i0.ɵɵelementEnd()()();
|
|
@@ -846,7 +846,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
846
846
|
i0.ɵɵtext(11, "Default (when no match)");
|
|
847
847
|
i0.ɵɵelementEnd();
|
|
848
848
|
i0.ɵɵelementStart(12, "input", 179);
|
|
849
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
849
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
850
850
|
i0.ɵɵelementEnd()();
|
|
851
851
|
} if (rf & 2) {
|
|
852
852
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
@@ -856,13 +856,13 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
856
856
|
i0.ɵɵadvance(8);
|
|
857
857
|
i0.ɵɵproperty("ngModel", step_r31.Config["Default"] ?? "");
|
|
858
858
|
} }
|
|
859
|
-
function
|
|
859
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_22_Template(rf, ctx) { if (rf & 1) {
|
|
860
860
|
const _r43 = i0.ɵɵgetCurrentView();
|
|
861
861
|
i0.ɵɵelementStart(0, "div", 164)(1, "div", 165)(2, "label");
|
|
862
862
|
i0.ɵɵtext(3, "Format type");
|
|
863
863
|
i0.ɵɵelementEnd();
|
|
864
864
|
i0.ɵɵelementStart(4, "select", 146);
|
|
865
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
865
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
866
866
|
i0.ɵɵelementStart(5, "option", 184);
|
|
867
867
|
i0.ɵɵtext(6, "Date");
|
|
868
868
|
i0.ɵɵelementEnd();
|
|
@@ -876,7 +876,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
876
876
|
i0.ɵɵtext(13, "Format string");
|
|
877
877
|
i0.ɵɵelementEnd();
|
|
878
878
|
i0.ɵɵelementStart(14, "input", 187);
|
|
879
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
879
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
880
880
|
i0.ɵɵelementEnd()()();
|
|
881
881
|
} if (rf & 2) {
|
|
882
882
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
@@ -885,13 +885,13 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
885
885
|
i0.ɵɵadvance(10);
|
|
886
886
|
i0.ɵɵproperty("ngModel", step_r31.Config["FormatString"] ?? "ISO");
|
|
887
887
|
} }
|
|
888
|
-
function
|
|
888
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_23_Template(rf, ctx) { if (rf & 1) {
|
|
889
889
|
const _r44 = i0.ɵɵgetCurrentView();
|
|
890
890
|
i0.ɵɵelementStart(0, "div", 165)(1, "label");
|
|
891
891
|
i0.ɵɵtext(2, "Target type");
|
|
892
892
|
i0.ɵɵelementEnd();
|
|
893
893
|
i0.ɵɵelementStart(3, "select", 146);
|
|
894
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
894
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
895
895
|
i0.ɵɵelementStart(4, "option", 186);
|
|
896
896
|
i0.ɵɵtext(5, "String");
|
|
897
897
|
i0.ɵɵelementEnd();
|
|
@@ -909,19 +909,19 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
909
909
|
i0.ɵɵadvance(3);
|
|
910
910
|
i0.ɵɵproperty("ngModel", step_r31.Config["TargetType"] ?? "string");
|
|
911
911
|
} }
|
|
912
|
-
function
|
|
912
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_24_Template(rf, ctx) { if (rf & 1) {
|
|
913
913
|
const _r45 = i0.ɵɵgetCurrentView();
|
|
914
914
|
i0.ɵɵelementStart(0, "div", 164)(1, "div", 165)(2, "label");
|
|
915
915
|
i0.ɵɵtext(3, "Start index");
|
|
916
916
|
i0.ɵɵelementEnd();
|
|
917
917
|
i0.ɵɵelementStart(4, "input", 171);
|
|
918
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
918
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
919
919
|
i0.ɵɵelementEnd()();
|
|
920
920
|
i0.ɵɵelementStart(5, "div", 165)(6, "label");
|
|
921
921
|
i0.ɵɵtext(7, "Length (blank = to end)");
|
|
922
922
|
i0.ɵɵelementEnd();
|
|
923
923
|
i0.ɵɵelementStart(8, "input", 189);
|
|
924
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
924
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
925
925
|
i0.ɵɵelementEnd()()();
|
|
926
926
|
} if (rf & 2) {
|
|
927
927
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
@@ -930,7 +930,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
930
930
|
i0.ɵɵadvance(4);
|
|
931
931
|
i0.ɵɵproperty("ngModel", step_r31.Config["Length"] ?? "");
|
|
932
932
|
} }
|
|
933
|
-
function
|
|
933
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_25_Template(rf, ctx) { if (rf & 1) {
|
|
934
934
|
const _r46 = i0.ɵɵgetCurrentView();
|
|
935
935
|
i0.ɵɵelementStart(0, "div", 163)(1, "label");
|
|
936
936
|
i0.ɵɵtext(2, "JavaScript expression ");
|
|
@@ -946,25 +946,25 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
946
946
|
i0.ɵɵtext(10, ")");
|
|
947
947
|
i0.ɵɵelementEnd()();
|
|
948
948
|
i0.ɵɵelementStart(11, "textarea", 191);
|
|
949
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
949
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
950
950
|
i0.ɵɵelementEnd()();
|
|
951
951
|
} if (rf & 2) {
|
|
952
952
|
const step_r31 = i0.ɵɵnextContext().$implicit;
|
|
953
953
|
i0.ɵɵadvance(11);
|
|
954
954
|
i0.ɵɵproperty("ngModel", step_r31.Config["Expression"] ?? "value");
|
|
955
955
|
} }
|
|
956
|
-
function
|
|
956
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
957
957
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
958
958
|
i0.ɵɵelementStart(0, "div", 153)(1, "div", 154)(2, "span", 155);
|
|
959
959
|
i0.ɵɵtext(3);
|
|
960
960
|
i0.ɵɵelementEnd();
|
|
961
961
|
i0.ɵɵelementStart(4, "select", 156);
|
|
962
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
963
|
-
i0.ɵɵrepeaterCreate(5,
|
|
962
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
963
|
+
i0.ɵɵrepeaterCreate(5, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_For_6_Template, 2, 2, "option", 148, _forTrack2);
|
|
964
964
|
i0.ɵɵelementEnd();
|
|
965
965
|
i0.ɵɵelementStart(7, "select", 157);
|
|
966
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
967
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
966
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
967
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
968
968
|
i0.ɵɵelementStart(8, "option", 158);
|
|
969
969
|
i0.ɵɵtext(9, "Fail");
|
|
970
970
|
i0.ɵɵelementEnd();
|
|
@@ -975,19 +975,19 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
975
975
|
i0.ɵɵtext(13, "Set null");
|
|
976
976
|
i0.ɵɵelementEnd()();
|
|
977
977
|
i0.ɵɵelementStart(14, "button", 161);
|
|
978
|
-
i0.ɵɵlistener("click", function
|
|
978
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template_button_click_14_listener() { const ɵ$index_533_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_533_r33)); });
|
|
979
979
|
i0.ɵɵelement(15, "i", 72);
|
|
980
980
|
i0.ɵɵelementEnd()();
|
|
981
981
|
i0.ɵɵelementStart(16, "div", 162);
|
|
982
|
-
i0.ɵɵconditionalCreate(17,
|
|
982
|
+
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_17_Template, 4, 1, "div", 163)(18, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_18_Template, 13, 3, "div", 164)(19, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_19_Template, 9, 2, "div", 164)(20, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_20_Template, 10, 1)(21, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_21_Template, 13, 1)(22, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_22_Template, 15, 2, "div", 164)(23, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_23_Template, 12, 1, "div", 165)(24, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_24_Template, 9, 2, "div", 164)(25, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Case_25_Template, 12, 1, "div", 163);
|
|
983
983
|
i0.ɵɵelementEnd()();
|
|
984
984
|
} if (rf & 2) {
|
|
985
985
|
let tmp_30_0;
|
|
986
986
|
const step_r31 = ctx.$implicit;
|
|
987
|
-
const ɵ$
|
|
987
|
+
const ɵ$index_533_r33 = ctx.$index;
|
|
988
988
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
989
989
|
i0.ɵɵadvance(3);
|
|
990
|
-
i0.ɵɵtextInterpolate(ɵ$
|
|
990
|
+
i0.ɵɵtextInterpolate(ɵ$index_533_r33 + 1);
|
|
991
991
|
i0.ɵɵadvance();
|
|
992
992
|
i0.ɵɵproperty("ngModel", step_r31.Type);
|
|
993
993
|
i0.ɵɵadvance();
|
|
@@ -997,53 +997,53 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
997
997
|
i0.ɵɵadvance(10);
|
|
998
998
|
i0.ɵɵconditional((tmp_30_0 = step_r31.Type) === "direct" ? 17 : tmp_30_0 === "regex" ? 18 : tmp_30_0 === "split" ? 19 : tmp_30_0 === "combine" ? 20 : tmp_30_0 === "lookup" ? 21 : tmp_30_0 === "format" ? 22 : tmp_30_0 === "coerce" ? 23 : tmp_30_0 === "substring" ? 24 : tmp_30_0 === "custom" ? 25 : -1);
|
|
999
999
|
} }
|
|
1000
|
-
function
|
|
1000
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
1001
1001
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
1002
1002
|
i0.ɵɵelementStart(0, "div", 135)(1, "div", 150)(2, "span", 151);
|
|
1003
1003
|
i0.ɵɵelement(3, "i", 36);
|
|
1004
1004
|
i0.ɵɵtext(4, " Transform Pipeline");
|
|
1005
1005
|
i0.ɵɵelementEnd();
|
|
1006
1006
|
i0.ɵɵelementStart(5, "button", 152);
|
|
1007
|
-
i0.ɵɵlistener("click", function
|
|
1007
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
1008
1008
|
i0.ɵɵelement(6, "i", 21);
|
|
1009
1009
|
i0.ɵɵtext(7, " Add Step ");
|
|
1010
1010
|
i0.ɵɵelementEnd()();
|
|
1011
|
-
i0.ɵɵrepeaterCreate(8,
|
|
1011
|
+
i0.ɵɵrepeaterCreate(8, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_For_9_Template, 26, 4, "div", 153, i0.ɵɵrepeaterTrackByIndex);
|
|
1012
1012
|
i0.ɵɵelementEnd();
|
|
1013
1013
|
} if (rf & 2) {
|
|
1014
1014
|
const field_r22 = i0.ɵɵnextContext().$implicit;
|
|
1015
1015
|
i0.ɵɵadvance(8);
|
|
1016
1016
|
i0.ɵɵrepeater(field_r22.TransformPipeline);
|
|
1017
1017
|
} }
|
|
1018
|
-
function
|
|
1018
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1019
1019
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
1020
1020
|
i0.ɵɵelementStart(0, "div", 118)(1, "div", 119)(2, "div", 120);
|
|
1021
|
-
i0.ɵɵconditionalCreate(3,
|
|
1021
|
+
i0.ɵɵconditionalCreate(3, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_3_Template, 1, 1, "input", 121)(4, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_4_Template, 7, 5);
|
|
1022
1022
|
i0.ɵɵelementEnd();
|
|
1023
1023
|
i0.ɵɵelementStart(5, "div", 122);
|
|
1024
|
-
i0.ɵɵconditionalCreate(6,
|
|
1024
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_6_Template, 6, 5, "button", 123)(7, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_7_Template, 4, 1, "button", 124);
|
|
1025
1025
|
i0.ɵɵelementEnd();
|
|
1026
1026
|
i0.ɵɵelementStart(8, "div", 125);
|
|
1027
|
-
i0.ɵɵconditionalCreate(9,
|
|
1027
|
+
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_9_Template, 5, 1, "select", 126)(10, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_10_Template, 1, 1, "input", 127);
|
|
1028
1028
|
i0.ɵɵelementEnd();
|
|
1029
1029
|
i0.ɵɵelementStart(11, "div", 128)(12, "label", 129)(13, "input", 130);
|
|
1030
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1031
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
1030
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
1031
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
1032
1032
|
i0.ɵɵelementEnd();
|
|
1033
1033
|
i0.ɵɵelement(14, "i", 131);
|
|
1034
1034
|
i0.ɵɵelementEnd();
|
|
1035
1035
|
i0.ɵɵelementStart(15, "label", 132)(16, "input", 130);
|
|
1036
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1037
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
1036
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
1037
|
+
i0.ɵɵlistener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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)); });
|
|
1038
1038
|
i0.ɵɵelementEnd();
|
|
1039
1039
|
i0.ɵɵelementStart(17, "span", 133);
|
|
1040
1040
|
i0.ɵɵtext(18, "*");
|
|
1041
1041
|
i0.ɵɵelementEnd()()();
|
|
1042
1042
|
i0.ɵɵelementStart(19, "button", 134);
|
|
1043
|
-
i0.ɵɵlistener("click", function
|
|
1043
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Template_button_click_19_listener() { const ɵ$index_429_r28 = i0.ɵɵrestoreView(_r20).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.RemoveFieldMapping(ɵ$index_429_r28)); });
|
|
1044
1044
|
i0.ɵɵelement(20, "i", 28);
|
|
1045
1045
|
i0.ɵɵelementEnd()();
|
|
1046
|
-
i0.ɵɵconditionalCreate(21,
|
|
1046
|
+
i0.ɵɵconditionalCreate(21, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Conditional_21_Template, 10, 0, "div", 135);
|
|
1047
1047
|
i0.ɵɵelementEnd();
|
|
1048
1048
|
} if (rf & 2) {
|
|
1049
1049
|
const field_r22 = ctx.$implicit;
|
|
@@ -1062,24 +1062,24 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_18_F
|
|
|
1062
1062
|
i0.ɵɵadvance(5);
|
|
1063
1063
|
i0.ɵɵconditional(field_r22.ShowTransformEditor && field_r22.TransformPipeline.length > 0 ? 21 : -1);
|
|
1064
1064
|
} }
|
|
1065
|
-
function
|
|
1065
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1066
1066
|
i0.ɵɵelementStart(0, "div", 108);
|
|
1067
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1067
|
+
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_For_2_Template, 22, 10, "div", 117, i0.ɵɵrepeaterTrackByIdentity);
|
|
1068
1068
|
i0.ɵɵelementEnd();
|
|
1069
1069
|
} if (rf & 2) {
|
|
1070
1070
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1071
1071
|
i0.ɵɵadvance();
|
|
1072
1072
|
i0.ɵɵrepeater(ctx_r1.ActiveEditableFields);
|
|
1073
1073
|
} }
|
|
1074
|
-
function
|
|
1074
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1075
1075
|
i0.ɵɵelement(0, "mj-loading", 194);
|
|
1076
1076
|
} }
|
|
1077
|
-
function
|
|
1077
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1078
1078
|
i0.ɵɵelementStart(0, "p", 15);
|
|
1079
1079
|
i0.ɵɵtext(1, "No source data available.");
|
|
1080
1080
|
i0.ɵɵelementEnd();
|
|
1081
1081
|
} }
|
|
1082
|
-
function
|
|
1082
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
1083
1083
|
i0.ɵɵelementStart(0, "th");
|
|
1084
1084
|
i0.ɵɵtext(1);
|
|
1085
1085
|
i0.ɵɵelementEnd();
|
|
@@ -1088,7 +1088,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_C
|
|
|
1088
1088
|
i0.ɵɵadvance();
|
|
1089
1089
|
i0.ɵɵtextInterpolate(col_r48);
|
|
1090
1090
|
} }
|
|
1091
|
-
function
|
|
1091
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_For_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1092
1092
|
i0.ɵɵelementStart(0, "td");
|
|
1093
1093
|
i0.ɵɵtext(1);
|
|
1094
1094
|
i0.ɵɵelementEnd();
|
|
@@ -1099,21 +1099,21 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_C
|
|
|
1099
1099
|
i0.ɵɵadvance();
|
|
1100
1100
|
i0.ɵɵtextInterpolate(ctx_r1.FormatPreviewValue(row_r50[col_r49]));
|
|
1101
1101
|
} }
|
|
1102
|
-
function
|
|
1102
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
1103
1103
|
i0.ɵɵelementStart(0, "tr");
|
|
1104
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1104
|
+
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_For_8_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
1105
1105
|
i0.ɵɵelementEnd();
|
|
1106
1106
|
} if (rf & 2) {
|
|
1107
1107
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1108
1108
|
i0.ɵɵadvance();
|
|
1109
1109
|
i0.ɵɵrepeater(ctx_r1.GetPreviewColumns(ctx_r1.SourcePreviewData));
|
|
1110
1110
|
} }
|
|
1111
|
-
function
|
|
1111
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1112
1112
|
i0.ɵɵelementStart(0, "div", 195)(1, "table", 196)(2, "thead")(3, "tr");
|
|
1113
|
-
i0.ɵɵrepeaterCreate(4,
|
|
1113
|
+
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
1114
1114
|
i0.ɵɵelementEnd()();
|
|
1115
1115
|
i0.ɵɵelementStart(6, "tbody");
|
|
1116
|
-
i0.ɵɵrepeaterCreate(7,
|
|
1116
|
+
i0.ɵɵrepeaterCreate(7, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_For_8_Template, 3, 0, "tr", null, i0.ɵɵrepeaterTrackByIndex);
|
|
1117
1117
|
i0.ɵɵelementEnd()()();
|
|
1118
1118
|
} if (rf & 2) {
|
|
1119
1119
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1122,32 +1122,32 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_27_C
|
|
|
1122
1122
|
i0.ɵɵadvance(3);
|
|
1123
1123
|
i0.ɵɵrepeater(ctx_r1.SourcePreviewData);
|
|
1124
1124
|
} }
|
|
1125
|
-
function
|
|
1125
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
1126
1126
|
const _r47 = i0.ɵɵgetCurrentView();
|
|
1127
1127
|
i0.ɵɵelementStart(0, "div", 112)(1, "div", 192)(2, "h4");
|
|
1128
1128
|
i0.ɵɵelement(3, "i", 193);
|
|
1129
1129
|
i0.ɵɵtext(4, " Source Data Preview");
|
|
1130
1130
|
i0.ɵɵelementEnd();
|
|
1131
1131
|
i0.ɵɵelementStart(5, "button", 27);
|
|
1132
|
-
i0.ɵɵlistener("click", function
|
|
1132
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r47); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseSourcePreview()); });
|
|
1133
1133
|
i0.ɵɵelement(6, "i", 28);
|
|
1134
1134
|
i0.ɵɵelementEnd()();
|
|
1135
|
-
i0.ɵɵconditionalCreate(7,
|
|
1135
|
+
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_7_Template, 1, 0, "mj-loading", 194)(8, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_8_Template, 2, 0, "p", 15)(9, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Conditional_9_Template, 9, 0, "div", 195);
|
|
1136
1136
|
i0.ɵɵelementEnd();
|
|
1137
1137
|
} if (rf & 2) {
|
|
1138
1138
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1139
1139
|
i0.ɵɵadvance(7);
|
|
1140
1140
|
i0.ɵɵconditional(ctx_r1.IsLoadingSourcePreview ? 7 : ctx_r1.SourcePreviewData.length === 0 ? 8 : 9);
|
|
1141
1141
|
} }
|
|
1142
|
-
function
|
|
1142
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1143
1143
|
i0.ɵɵelement(0, "mj-loading", 197);
|
|
1144
1144
|
} }
|
|
1145
|
-
function
|
|
1145
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1146
1146
|
i0.ɵɵelementStart(0, "p", 15);
|
|
1147
1147
|
i0.ɵɵtext(1, "No destination data available.");
|
|
1148
1148
|
i0.ɵɵelementEnd();
|
|
1149
1149
|
} }
|
|
1150
|
-
function
|
|
1150
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
1151
1151
|
i0.ɵɵelementStart(0, "th");
|
|
1152
1152
|
i0.ɵɵtext(1);
|
|
1153
1153
|
i0.ɵɵelementEnd();
|
|
@@ -1156,7 +1156,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_C
|
|
|
1156
1156
|
i0.ɵɵadvance();
|
|
1157
1157
|
i0.ɵɵtextInterpolate(col_r52);
|
|
1158
1158
|
} }
|
|
1159
|
-
function
|
|
1159
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_For_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1160
1160
|
i0.ɵɵelementStart(0, "td");
|
|
1161
1161
|
i0.ɵɵtext(1);
|
|
1162
1162
|
i0.ɵɵelementEnd();
|
|
@@ -1167,21 +1167,21 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_C
|
|
|
1167
1167
|
i0.ɵɵadvance();
|
|
1168
1168
|
i0.ɵɵtextInterpolate(ctx_r1.FormatPreviewValue(row_r54[col_r53]));
|
|
1169
1169
|
} }
|
|
1170
|
-
function
|
|
1170
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
1171
1171
|
i0.ɵɵelementStart(0, "tr");
|
|
1172
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1172
|
+
i0.ɵɵrepeaterCreate(1, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_For_8_For_2_Template, 2, 1, "td", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
1173
1173
|
i0.ɵɵelementEnd();
|
|
1174
1174
|
} if (rf & 2) {
|
|
1175
1175
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1176
1176
|
i0.ɵɵadvance();
|
|
1177
1177
|
i0.ɵɵrepeater(ctx_r1.GetPreviewColumns(ctx_r1.DestPreviewData));
|
|
1178
1178
|
} }
|
|
1179
|
-
function
|
|
1179
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1180
1180
|
i0.ɵɵelementStart(0, "div", 195)(1, "table", 196)(2, "thead")(3, "tr");
|
|
1181
|
-
i0.ɵɵrepeaterCreate(4,
|
|
1181
|
+
i0.ɵɵrepeaterCreate(4, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_For_5_Template, 2, 1, "th", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
1182
1182
|
i0.ɵɵelementEnd()();
|
|
1183
1183
|
i0.ɵɵelementStart(6, "tbody");
|
|
1184
|
-
i0.ɵɵrepeaterCreate(7,
|
|
1184
|
+
i0.ɵɵrepeaterCreate(7, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_For_8_Template, 3, 0, "tr", null, i0.ɵɵrepeaterTrackByIndex);
|
|
1185
1185
|
i0.ɵɵelementEnd()()();
|
|
1186
1186
|
} if (rf & 2) {
|
|
1187
1187
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1190,59 +1190,59 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Conditional_28_C
|
|
|
1190
1190
|
i0.ɵɵadvance(3);
|
|
1191
1191
|
i0.ɵɵrepeater(ctx_r1.DestPreviewData);
|
|
1192
1192
|
} }
|
|
1193
|
-
function
|
|
1193
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
1194
1194
|
const _r51 = i0.ɵɵgetCurrentView();
|
|
1195
1195
|
i0.ɵɵelementStart(0, "div", 112)(1, "div", 192)(2, "h4");
|
|
1196
1196
|
i0.ɵɵelement(3, "i", 35);
|
|
1197
1197
|
i0.ɵɵtext(4, " Destination Data Preview");
|
|
1198
1198
|
i0.ɵɵelementEnd();
|
|
1199
1199
|
i0.ɵɵelementStart(5, "button", 27);
|
|
1200
|
-
i0.ɵɵlistener("click", function
|
|
1200
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r51); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.CloseDestPreview()); });
|
|
1201
1201
|
i0.ɵɵelement(6, "i", 28);
|
|
1202
1202
|
i0.ɵɵelementEnd()();
|
|
1203
|
-
i0.ɵɵconditionalCreate(7,
|
|
1203
|
+
i0.ɵɵconditionalCreate(7, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_7_Template, 1, 0, "mj-loading", 197)(8, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_8_Template, 2, 0, "p", 15)(9, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Conditional_9_Template, 9, 0, "div", 195);
|
|
1204
1204
|
i0.ɵɵelementEnd();
|
|
1205
1205
|
} if (rf & 2) {
|
|
1206
1206
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1207
1207
|
i0.ɵɵadvance(7);
|
|
1208
1208
|
i0.ɵɵconditional(ctx_r1.IsLoadingDestPreview ? 7 : ctx_r1.DestPreviewData.length === 0 ? 8 : 9);
|
|
1209
1209
|
} }
|
|
1210
|
-
function
|
|
1210
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1211
1211
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
1212
|
-
i0.ɵɵconditionalCreate(0,
|
|
1213
|
-
i0.ɵɵconditionalCreate(1,
|
|
1212
|
+
i0.ɵɵconditionalCreate(0, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_0_Template, 9, 2, "div", 101);
|
|
1213
|
+
i0.ɵɵconditionalCreate(1, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_1_Template, 5, 0, "div", 102);
|
|
1214
1214
|
i0.ɵɵelementStart(2, "div", 103)(3, "h3", 104);
|
|
1215
1215
|
i0.ɵɵtext(4, " Field Mappings ");
|
|
1216
1216
|
i0.ɵɵelementStart(5, "span", 105);
|
|
1217
1217
|
i0.ɵɵtext(6);
|
|
1218
1218
|
i0.ɵɵelementEnd()();
|
|
1219
1219
|
i0.ɵɵelementStart(7, "div", 106)(8, "button", 107);
|
|
1220
|
-
i0.ɵɵlistener("click", function
|
|
1220
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RerunAutoMap()); });
|
|
1221
1221
|
i0.ɵɵelement(9, "i", 36);
|
|
1222
1222
|
i0.ɵɵtext(10, " Auto-Map ");
|
|
1223
1223
|
i0.ɵɵelementEnd();
|
|
1224
1224
|
i0.ɵɵelementStart(11, "button", 90);
|
|
1225
|
-
i0.ɵɵlistener("click", function
|
|
1225
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.AddFieldMapping()); });
|
|
1226
1226
|
i0.ɵɵelement(12, "i", 21);
|
|
1227
1227
|
i0.ɵɵtext(13, " Add Field ");
|
|
1228
1228
|
i0.ɵɵelementEnd();
|
|
1229
1229
|
i0.ɵɵelementStart(14, "button", 40);
|
|
1230
|
-
i0.ɵɵlistener("click", function
|
|
1231
|
-
i0.ɵɵconditionalCreate(15,
|
|
1230
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveFieldMappings()); });
|
|
1231
|
+
i0.ɵɵconditionalCreate(15, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_15_Template, 2, 0)(16, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_16_Template, 2, 0);
|
|
1232
1232
|
i0.ɵɵelementEnd()()();
|
|
1233
|
-
i0.ɵɵconditionalCreate(17,
|
|
1233
|
+
i0.ɵɵconditionalCreate(17, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_17_Template, 4, 0, "p", 15)(18, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_18_Template, 3, 0, "div", 108);
|
|
1234
1234
|
i0.ɵɵelementStart(19, "div", 109)(20, "div", 110)(21, "button", 53);
|
|
1235
|
-
i0.ɵɵlistener("click", function
|
|
1235
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.LoadSourcePreview()); });
|
|
1236
1236
|
i0.ɵɵelement(22, "i", 111);
|
|
1237
1237
|
i0.ɵɵtext(23, " Preview Source ");
|
|
1238
1238
|
i0.ɵɵelementEnd();
|
|
1239
1239
|
i0.ɵɵelementStart(24, "button", 53);
|
|
1240
|
-
i0.ɵɵlistener("click", function
|
|
1240
|
+
i0.ɵɵlistener("click", function MappingWorkspaceComponent_Conditional_5_Conditional_12_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.LoadDestPreview()); });
|
|
1241
1241
|
i0.ɵɵelement(25, "i", 35);
|
|
1242
1242
|
i0.ɵɵtext(26, " Preview Destination ");
|
|
1243
1243
|
i0.ɵɵelementEnd()();
|
|
1244
|
-
i0.ɵɵconditionalCreate(27,
|
|
1245
|
-
i0.ɵɵconditionalCreate(28,
|
|
1244
|
+
i0.ɵɵconditionalCreate(27, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_27_Template, 10, 1, "div", 112);
|
|
1245
|
+
i0.ɵɵconditionalCreate(28, MappingWorkspaceComponent_Conditional_5_Conditional_12_Conditional_28_Template, 10, 1, "div", 112);
|
|
1246
1246
|
i0.ɵɵelementEnd();
|
|
1247
1247
|
} if (rf & 2) {
|
|
1248
1248
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1268,20 +1268,20 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_12_Template(rf, ctx
|
|
|
1268
1268
|
i0.ɵɵadvance();
|
|
1269
1269
|
i0.ɵɵconditional(ctx_r1.ShowDestPreview ? 28 : -1);
|
|
1270
1270
|
} }
|
|
1271
|
-
function
|
|
1271
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
1272
1272
|
i0.ɵɵelementStart(0, "p", 15);
|
|
1273
1273
|
i0.ɵɵtext(1, "Select an integration to see run details.");
|
|
1274
1274
|
i0.ɵɵelementEnd();
|
|
1275
1275
|
} }
|
|
1276
|
-
function
|
|
1276
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
1277
1277
|
i0.ɵɵelement(0, "mj-loading", 16);
|
|
1278
1278
|
} }
|
|
1279
|
-
function
|
|
1279
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1280
1280
|
i0.ɵɵelementStart(0, "p", 15);
|
|
1281
1281
|
i0.ɵɵtext(1, "No runs found.");
|
|
1282
1282
|
i0.ɵɵelementEnd();
|
|
1283
1283
|
} }
|
|
1284
|
-
function
|
|
1284
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_19_Conditional_22_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
1285
1285
|
i0.ɵɵelementStart(0, "div", 203)(1, "div", 204);
|
|
1286
1286
|
i0.ɵɵtext(2);
|
|
1287
1287
|
i0.ɵɵelementEnd();
|
|
@@ -1316,17 +1316,17 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_19_Conditional_22_F
|
|
|
1316
1316
|
i0.ɵɵadvance();
|
|
1317
1317
|
i0.ɵɵtextInterpolate1(" ", detail_r55.RecordsErrored, " ");
|
|
1318
1318
|
} }
|
|
1319
|
-
function
|
|
1319
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_19_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
1320
1320
|
i0.ɵɵelementStart(0, "h4", 202);
|
|
1321
1321
|
i0.ɵɵtext(1, "Per-Entity Stats");
|
|
1322
1322
|
i0.ɵɵelementEnd();
|
|
1323
|
-
i0.ɵɵrepeaterCreate(2,
|
|
1323
|
+
i0.ɵɵrepeaterCreate(2, MappingWorkspaceComponent_Conditional_5_Conditional_19_Conditional_22_For_3_Template, 19, 6, "div", 203, _forTrack3);
|
|
1324
1324
|
} if (rf & 2) {
|
|
1325
1325
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1326
1326
|
i0.ɵɵadvance(2);
|
|
1327
1327
|
i0.ɵɵrepeater(ctx_r1.RunEntityDetails);
|
|
1328
1328
|
} }
|
|
1329
|
-
function
|
|
1329
|
+
function MappingWorkspaceComponent_Conditional_5_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
1330
1330
|
i0.ɵɵelementStart(0, "div", 198)(1, "div", 199)(2, "span", 200);
|
|
1331
1331
|
i0.ɵɵtext(3, "Status");
|
|
1332
1332
|
i0.ɵɵelementEnd();
|
|
@@ -1352,7 +1352,7 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_19_Template(rf, ctx
|
|
|
1352
1352
|
i0.ɵɵelementStart(20, "span");
|
|
1353
1353
|
i0.ɵɵtext(21);
|
|
1354
1354
|
i0.ɵɵelementEnd()()();
|
|
1355
|
-
i0.ɵɵconditionalCreate(22,
|
|
1355
|
+
i0.ɵɵconditionalCreate(22, MappingWorkspaceComponent_Conditional_5_Conditional_19_Conditional_22_Template, 4, 0);
|
|
1356
1356
|
} if (rf & 2) {
|
|
1357
1357
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1358
1358
|
i0.ɵɵadvance(4);
|
|
@@ -1368,24 +1368,24 @@ function MappingWorkspaceComponent_Conditional_6_Conditional_19_Template(rf, ctx
|
|
|
1368
1368
|
i0.ɵɵadvance();
|
|
1369
1369
|
i0.ɵɵconditional(ctx_r1.RunEntityDetails.length > 0 ? 22 : -1);
|
|
1370
1370
|
} }
|
|
1371
|
-
function
|
|
1371
|
+
function MappingWorkspaceComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1372
1372
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1373
1373
|
i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "div", 6)(3, "label", 7);
|
|
1374
1374
|
i0.ɵɵtext(4, "Integration");
|
|
1375
1375
|
i0.ɵɵelementEnd();
|
|
1376
1376
|
i0.ɵɵelementStart(5, "mj-dropdown", 8);
|
|
1377
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1378
|
-
i0.ɵɵlistener("ValueChange", function
|
|
1377
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MappingWorkspaceComponent_Conditional_5_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); });
|
|
1378
|
+
i0.ɵɵlistener("ValueChange", function MappingWorkspaceComponent_Conditional_5_Template_mj_dropdown_ValueChange_5_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnIntegrationChange($event)); });
|
|
1379
1379
|
i0.ɵɵelementEnd()();
|
|
1380
|
-
i0.ɵɵconditionalCreate(6,
|
|
1380
|
+
i0.ɵɵconditionalCreate(6, MappingWorkspaceComponent_Conditional_5_Conditional_6_Template, 1, 0, "mj-loading", 9)(7, MappingWorkspaceComponent_Conditional_5_Conditional_7_Template, 12, 3);
|
|
1381
1381
|
i0.ɵɵelementEnd();
|
|
1382
1382
|
i0.ɵɵelementStart(8, "div", 10);
|
|
1383
|
-
i0.ɵɵconditionalCreate(9,
|
|
1383
|
+
i0.ɵɵconditionalCreate(9, MappingWorkspaceComponent_Conditional_5_Conditional_9_Template, 4, 0, "div", 11)(10, MappingWorkspaceComponent_Conditional_5_Conditional_10_Template, 37, 9, "div", 12)(11, MappingWorkspaceComponent_Conditional_5_Conditional_11_Template, 1, 0, "mj-loading", 13)(12, MappingWorkspaceComponent_Conditional_5_Conditional_12_Template, 29, 11);
|
|
1384
1384
|
i0.ɵɵelementEnd();
|
|
1385
1385
|
i0.ɵɵelementStart(13, "div", 14)(14, "h4", 7);
|
|
1386
1386
|
i0.ɵɵtext(15, "Last Run Details");
|
|
1387
1387
|
i0.ɵɵelementEnd();
|
|
1388
|
-
i0.ɵɵconditionalCreate(16,
|
|
1388
|
+
i0.ɵɵconditionalCreate(16, MappingWorkspaceComponent_Conditional_5_Conditional_16_Template, 2, 0, "p", 15)(17, MappingWorkspaceComponent_Conditional_5_Conditional_17_Template, 1, 0, "mj-loading", 16)(18, MappingWorkspaceComponent_Conditional_5_Conditional_18_Template, 2, 0, "p", 15)(19, MappingWorkspaceComponent_Conditional_5_Conditional_19_Template, 23, 9);
|
|
1389
1389
|
i0.ɵɵelementEnd()();
|
|
1390
1390
|
} if (rf & 2) {
|
|
1391
1391
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2335,17 +2335,18 @@ let MappingWorkspaceComponent = class MappingWorkspaceComponent extends BaseReso
|
|
|
2335
2335
|
return 'fa-solid fa-diagram-project';
|
|
2336
2336
|
}
|
|
2337
2337
|
static ɵfac = /*@__PURE__*/ (() => { let ɵMappingWorkspaceComponent_BaseFactory; return function MappingWorkspaceComponent_Factory(__ngFactoryType__) { return (ɵMappingWorkspaceComponent_BaseFactory || (ɵMappingWorkspaceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(MappingWorkspaceComponent)))(__ngFactoryType__ || MappingWorkspaceComponent); }; })();
|
|
2338
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MappingWorkspaceComponent, selectors: [["app-mapping-workspace"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
2339
|
-
i0.ɵɵelementStart(0, "
|
|
2340
|
-
i0.ɵɵelement(
|
|
2341
|
-
i0.ɵɵ
|
|
2342
|
-
i0.ɵɵ
|
|
2343
|
-
i0.ɵɵ
|
|
2344
|
-
i0.ɵɵelementEnd();
|
|
2338
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MappingWorkspaceComponent, selectors: [["app-mapping-workspace"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 3, consts: [["Title", "Mapping Workspace", "Icon", "fa-solid fa-diagram-project", "Subtitle", "Build and validate entity field mappings"], [3, "Flex", "Padding"], [1, "mapping-workspace"], ["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) {
|
|
2339
|
+
i0.ɵɵelementStart(0, "mj-page-layout");
|
|
2340
|
+
i0.ɵɵelement(1, "mj-page-header", 0);
|
|
2341
|
+
i0.ɵɵelementStart(2, "mj-page-body", 1)(3, "div", 2);
|
|
2342
|
+
i0.ɵɵconditionalCreate(4, MappingWorkspaceComponent_Conditional_4_Template, 1, 0, "mj-loading", 3)(5, MappingWorkspaceComponent_Conditional_5_Template, 20, 8, "div", 4);
|
|
2343
|
+
i0.ɵɵelementEnd()()();
|
|
2345
2344
|
} if (rf & 2) {
|
|
2346
|
-
i0.ɵɵadvance(
|
|
2347
|
-
i0.ɵɵ
|
|
2348
|
-
} }, 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; } }"] });
|
|
2345
|
+
i0.ɵɵadvance(2);
|
|
2346
|
+
i0.ɵɵproperty("Flex", true)("Padding", false);
|
|
2347
|
+
i0.ɵɵadvance(2);
|
|
2348
|
+
i0.ɵɵconditional(ctx.IsLoadingIntegrations ? 4 : 5);
|
|
2349
|
+
} }, 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, i3.MJPageLayoutComponent, i3.MJPageHeaderComponent, i3.MJPageBodyComponent, 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; } }"] });
|
|
2349
2350
|
};
|
|
2350
2351
|
MappingWorkspaceComponent = __decorate([
|
|
2351
2352
|
RegisterClass(BaseResourceComponent, 'IntegrationMappingWorkspace')
|
|
@@ -2353,7 +2354,7 @@ MappingWorkspaceComponent = __decorate([
|
|
|
2353
2354
|
export { MappingWorkspaceComponent };
|
|
2354
2355
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MappingWorkspaceComponent, [{
|
|
2355
2356
|
type: Component,
|
|
2356
|
-
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"] }]
|
|
2357
|
+
args: [{ standalone: false, selector: 'app-mapping-workspace', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Mapping Workspace\"\n Icon=\"fa-solid fa-diagram-project\"\n Subtitle=\"Build and validate entity field mappings\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n<div class=\"mapping-workspace\">\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 </mj-page-body>\n</mj-page-layout>\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"] }]
|
|
2357
2358
|
}], null, null); })();
|
|
2358
2359
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MappingWorkspaceComponent, { className: "MappingWorkspaceComponent", filePath: "src/Integration/components/mapping-workspace/mapping-workspace.component.ts", lineNumber: 118 }); })();
|
|
2359
2360
|
export function LoadMappingWorkspace() {
|