@memberjunction/ng-dashboards 5.22.0 → 5.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +364 -362
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +2 -2
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +947 -64
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7645 -430
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +285 -6
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2454 -277
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +191 -197
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +9 -8
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +305 -299
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +319 -313
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +20 -2
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +419 -232
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +10 -12
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +61 -68
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +10 -11
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +82 -96
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +130 -134
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +40 -46
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.js +2 -2
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +2 -2
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +127 -132
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +2 -2
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +11 -17
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +2 -2
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +2 -2
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +17 -17
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -4
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +5 -4
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +247 -259
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +1 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +1 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/components/widgets/integration-card.component.js +7 -9
- package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +6 -10
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +12 -20
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +411 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4266 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +140 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +780 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +8 -2
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +246 -195
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +75 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +601 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +93 -12
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +637 -107
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +9 -7
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +10 -9
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +6 -9
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +20 -22
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +9 -10
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/__tests__/analytics-resource.test.d.ts +2 -0
- package/dist/__tests__/analytics-resource.test.d.ts.map +1 -0
- package/dist/__tests__/analytics-resource.test.js +181 -0
- package/dist/__tests__/analytics-resource.test.js.map +1 -0
- package/dist/__tests__/scheduling.test.d.ts +2 -0
- package/dist/__tests__/scheduling.test.d.ts.map +1 -0
- package/dist/__tests__/scheduling.test.js +205 -0
- package/dist/__tests__/scheduling.test.js.map +1 -0
- package/dist/actions-dashboards.module.d.ts +8 -13
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +6 -27
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +20 -20
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +43 -44
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +4 -8
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +0 -19
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/component-studio-dashboards.module.d.ts +7 -11
- package/dist/component-studio-dashboards.module.d.ts.map +1 -1
- package/dist/component-studio-dashboards.module.js +22 -34
- package/dist/component-studio-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +12 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +15 -31
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +5 -8
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +3 -19
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +7 -13
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +0 -27
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +5 -8
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +3 -19
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +6 -10
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +3 -23
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +44 -0
- package/dist/shared/entity-field-display.d.ts.map +1 -0
- package/dist/shared/entity-field-display.js +118 -0
- package/dist/shared/entity-field-display.js.map +1 -0
- package/dist/testing-dashboards.module.d.ts +7 -13
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +0 -27
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +48 -55
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduling-resource.component.js","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/scheduling/scheduling-resource.component.ts","../../../../src/KnowledgeHub/components/scheduling/scheduling-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Knowledge Hub Scheduled Pipelines Dashboard Tab\n *\n * Full-page resource component for managing scheduled pipelines within the\n * Knowledge Hub application. Displays job cards in a compact grid, recent\n * activity table, and provides create/edit via the reusable\n * ScheduledJobDialogComponent from @memberjunction/ng-scheduling.\n *\n * Registered as BaseResourceComponent for the Knowledge Hub application.\n */\n\nimport { Component, ChangeDetectorRef, OnDestroy, AfterViewInit, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { ResourceData, MJScheduledJobEntity, MJScheduledJobRunEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { ScheduledJobService, ScheduledJobDialogResult } from '@memberjunction/ng-scheduling';\n\n/** Simple cron-to-English mapping for common patterns */\ninterface CronParts {\n Second: string;\n Minute: string;\n Hour: string;\n DayOfMonth: string;\n Month: string;\n DayOfWeek: string;\n}\n\n@RegisterClass(BaseResourceComponent, 'SchedulingResource')\n@Component({\n standalone: false,\n selector: 'app-scheduling-resource',\n templateUrl: './scheduling-resource.component.html',\n styleUrls: ['./scheduling-resource.component.css'],\n})\nexport class SchedulingResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private navigationService = inject(NavigationService);\n private scheduledJobService = inject(ScheduledJobService);\n private destroy$ = new Subject<void>();\n\n // ================================================================\n // Resource overrides\n // ================================================================\n\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'Schedules';\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-clock';\n }\n\n // ================================================================\n // State\n // ================================================================\n\n public IsLoading = true;\n public AllJobs: MJScheduledJobEntity[] = [];\n public FilteredJobs: MJScheduledJobEntity[] = [];\n public RecentRuns: MJScheduledJobRunEntity[] = [];\n public StatusFilter = '';\n public SearchQuery = '';\n\n /** Map of jobID -> last 7 run statuses for sparkline display */\n private sparklineCache = new Map<string, string[]>();\n\n // Edit dialog\n public ShowEditDialog = false;\n public EditingJobID: string | null = null;\n\n // ================================================================\n // Computed\n // ================================================================\n\n public get ActiveCount(): number {\n return this.AllJobs.filter(j => j.Status === 'Active').length;\n }\n\n public get PausedCount(): number {\n return this.AllJobs.filter(j => j.Status === 'Paused').length;\n }\n\n public get DisabledCount(): number {\n return this.AllJobs.filter(j => j.Status === 'Disabled').length;\n }\n\n // ================================================================\n // Lifecycle\n // ================================================================\n\n async ngAfterViewInit(): Promise<void> {\n await this.loadData();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ================================================================\n // Public Methods — Toolbar\n // ================================================================\n\n public OnNewSchedule(): void {\n this.EditingJobID = null;\n this.ShowEditDialog = true;\n this.cdr.detectChanges();\n }\n\n public OnFilterChanged(): void {\n this.applyFilters();\n this.cdr.detectChanges();\n }\n\n public OnSearchChanged(): void {\n this.applyFilters();\n this.cdr.detectChanges();\n }\n\n // ================================================================\n // Public Methods — Card Actions\n // ================================================================\n\n public OnEditJob(job: MJScheduledJobEntity): void {\n this.EditingJobID = job.ID;\n this.ShowEditDialog = true;\n this.cdr.detectChanges();\n }\n\n public async OnRunNow(job: MJScheduledJobEntity): Promise<void> {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Triggering \"${job.Name}\" — this feature requires server-side support.`,\n 'info', 4000\n );\n }\n\n // ================================================================\n // Public Methods — Dialog\n // ================================================================\n\n public async OnDialogClosed(result: ScheduledJobDialogResult): Promise<void> {\n this.ShowEditDialog = false;\n this.EditingJobID = null;\n\n if (result.Saved || result.Deleted) {\n await this.loadData();\n }\n\n this.cdr.detectChanges();\n }\n\n /** Navigate to the full Scheduling application */\n public GoToSchedulingApp(): void {\n const md = new Metadata();\n const schedulingApp = md.Applications.find(a => a.Name === 'Scheduling');\n if (schedulingApp) {\n this.navigationService.SwitchToApp(schedulingApp.ID);\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Scheduling app not found. Check application configuration.',\n 'warning', 3000\n );\n }\n }\n\n // ================================================================\n // Public Methods — Card Display Helpers\n // ================================================================\n\n public GetStatusDotClass(job: MJScheduledJobEntity): string {\n return (job.Status ?? 'pending').toLowerCase();\n }\n\n public GetCronDescription(cron: string): string {\n if (!cron) return 'No schedule';\n const parts = this.parseCron(cron);\n if (!parts) return cron;\n return this.cronToHuman(parts);\n }\n\n public GetSparkline(jobID: string): string[] {\n return this.sparklineCache.get(jobID) ?? [];\n }\n\n public GetTimeAgo(date: Date | null): string {\n if (!date) return 'Never';\n const now = new Date();\n const d = new Date(date);\n const diffMs = now.getTime() - d.getTime();\n return this.formatDuration(diffMs);\n }\n\n public GetTimeUntil(date: Date | null): string {\n if (!date) return '--';\n const now = new Date();\n const d = new Date(date);\n const diffMs = d.getTime() - now.getTime();\n if (diffMs <= 0) return 'Due';\n return this.formatDuration(diffMs);\n }\n\n public GetSuccessRate(job: MJScheduledJobEntity): string {\n if (job.RunCount === 0) return 'N/A';\n return Math.round((job.SuccessCount / job.RunCount) * 100) + '%';\n }\n\n public GetSuccessRateClass(job: MJScheduledJobEntity): string {\n if (job.RunCount === 0) return '';\n const rate = job.SuccessCount / job.RunCount;\n if (rate >= 0.95) return 'high';\n if (rate >= 0.80) return 'mid';\n return '';\n }\n\n public GetDuration(run: MJScheduledJobRunEntity): string {\n if (!run.StartedAt || !run.CompletedAt) return '--';\n const start = new Date(run.StartedAt).getTime();\n const end = new Date(run.CompletedAt).getTime();\n const diffMs = end - start;\n return this.formatDurationShort(diffMs);\n }\n\n public GetItemsProcessed(run: MJScheduledJobRunEntity): string {\n if (!run.Details) return '--';\n try {\n const details = JSON.parse(run.Details) as Record<string, unknown>;\n if (details['ItemsProcessed'] != null) {\n const total = details['TotalItems'] as number | undefined;\n const processed = details['ItemsProcessed'] as number;\n if (run.Status === 'Failed' && total != null) {\n return `${this.formatNumber(processed)} / ${this.formatNumber(total)}`;\n }\n return this.formatNumber(processed);\n }\n } catch {\n // details not parseable\n }\n return '--';\n }\n\n // ================================================================\n // Private Methods\n // ================================================================\n\n private async loadData(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n\n try {\n const rv = new RunView();\n const [jobsResult, runsResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Scheduled Jobs',\n ExtraFilter: `Name LIKE '%Autotag%' OR Name LIKE '%Vector%' OR Name LIKE '%Content%' OR Name LIKE '%Knowledge%' OR Name LIKE '%Tag%'`,\n OrderBy: 'Name',\n ResultType: 'entity_object',\n },\n {\n EntityName: 'MJ: Scheduled Job Runs',\n ExtraFilter: '',\n OrderBy: 'StartedAt DESC',\n MaxRows: 100,\n ResultType: 'entity_object',\n },\n ]);\n\n if (jobsResult.Success) {\n this.AllJobs = jobsResult.Results as MJScheduledJobEntity[];\n } else {\n this.AllJobs = [];\n }\n\n const allRuns = runsResult.Success\n ? (runsResult.Results as MJScheduledJobRunEntity[])\n : [];\n\n this.RecentRuns = allRuns.slice(0, 10);\n this.buildSparklineCache(allRuns);\n this.applyFilters();\n } catch (error) {\n console.error('[SchedulingResource] Error loading data:', error);\n this.AllJobs = [];\n this.FilteredJobs = [];\n this.RecentRuns = [];\n } finally {\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private applyFilters(): void {\n let jobs = this.AllJobs;\n\n if (this.StatusFilter) {\n jobs = jobs.filter(j => j.Status === this.StatusFilter);\n }\n\n if (this.SearchQuery.trim()) {\n const query = this.SearchQuery.trim().toLowerCase();\n jobs = jobs.filter(j =>\n j.Name.toLowerCase().includes(query) ||\n (j.Description ?? '').toLowerCase().includes(query)\n );\n }\n\n this.FilteredJobs = jobs;\n }\n\n /**\n * Build sparkline data for each job from the last 7 runs.\n * Each dot is 'ok', 'fail', or 'skip'.\n */\n private buildSparklineCache(allRuns: MJScheduledJobRunEntity[]): void {\n this.sparklineCache.clear();\n\n // Group runs by job ID\n const runsByJob = new Map<string, MJScheduledJobRunEntity[]>();\n for (const run of allRuns) {\n const jobID = run.ScheduledJobID;\n if (!runsByJob.has(jobID)) {\n runsByJob.set(jobID, []);\n }\n runsByJob.get(jobID)!.push(run);\n }\n\n // Build sparkline for each job (up to 7 most recent runs)\n for (const job of this.AllJobs) {\n const runs = runsByJob.get(job.ID) ?? [];\n const last7 = runs.slice(0, 7);\n const dots: string[] = last7.map(r => this.runStatusToDot(r));\n\n // Pad to 7 with 'skip' dots if fewer runs\n while (dots.length < 7) {\n dots.push('skip');\n }\n\n this.sparklineCache.set(job.ID, dots);\n }\n }\n\n private runStatusToDot(run: MJScheduledJobRunEntity): string {\n if (run.Status === 'Completed' && run.Success) return 'ok';\n if (run.Status === 'Failed' || (run.Status === 'Completed' && !run.Success)) return 'fail';\n if (run.Status === 'Running') return 'ok'; // treat in-progress as OK\n return 'skip';\n }\n\n // ================================================================\n // Cron Parsing\n // ================================================================\n\n private parseCron(cron: string): CronParts | null {\n const parts = cron.trim().split(/\\s+/);\n // Support 5-part (no seconds) and 6-part (with seconds) cron\n if (parts.length === 5) {\n return {\n Second: '0',\n Minute: parts[0],\n Hour: parts[1],\n DayOfMonth: parts[2],\n Month: parts[3],\n DayOfWeek: parts[4],\n };\n }\n if (parts.length === 6) {\n return {\n Second: parts[0],\n Minute: parts[1],\n Hour: parts[2],\n DayOfMonth: parts[3],\n Month: parts[4],\n DayOfWeek: parts[5],\n };\n }\n return null;\n }\n\n private cronToHuman(p: CronParts): string {\n // Every N minutes: */N * * * *\n if (p.Minute.startsWith('*/') && p.Hour === '*' && p.DayOfMonth === '*' && p.Month === '*' && p.DayOfWeek === '*') {\n const interval = parseInt(p.Minute.slice(2), 10);\n if (interval === 1) return 'Every minute';\n return `Every ${interval} minutes`;\n }\n\n // Every N hours: 0 */N * * *\n if (p.Minute !== '*' && !p.Minute.includes('/') && p.Hour.startsWith('*/') && p.DayOfMonth === '*') {\n const interval = parseInt(p.Hour.slice(2), 10);\n if (interval === 1) return 'Every hour';\n return `Every ${interval} hours`;\n }\n\n // Specific hour with specific or wildcard day fields\n if (!p.Minute.includes('*') && !p.Minute.includes('/') &&\n !p.Hour.includes('*') && !p.Hour.includes('/') &&\n p.Month === '*') {\n\n const hour = parseInt(p.Hour, 10);\n const minute = parseInt(p.Minute, 10);\n const timeStr = this.formatTime(hour, minute);\n\n // Weekly: specific day of week\n if (p.DayOfWeek !== '*' && p.DayOfMonth === '*') {\n const dayName = this.dayOfWeekName(p.DayOfWeek);\n return `Weekly on ${dayName} at ${timeStr}`;\n }\n\n // Monthly: specific day of month\n if (p.DayOfMonth !== '*' && p.DayOfWeek === '*') {\n return `Monthly on day ${p.DayOfMonth} at ${timeStr}`;\n }\n\n // Daily\n if (p.DayOfMonth === '*' && p.DayOfWeek === '*') {\n return `Daily at ${timeStr}`;\n }\n }\n\n // Fallback: return the raw cron expression\n return `${p.Minute} ${p.Hour} ${p.DayOfMonth} ${p.Month} ${p.DayOfWeek}`;\n }\n\n private formatTime(hour: number, minute: number): string {\n const ampm = hour >= 12 ? 'PM' : 'AM';\n const h = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;\n const m = minute.toString().padStart(2, '0');\n return `${h}:${m} ${ampm}`;\n }\n\n private dayOfWeekName(dow: string): string {\n const names: Record<string, string> = {\n '0': 'Sunday', '1': 'Monday', '2': 'Tuesday',\n '3': 'Wednesday', '4': 'Thursday', '5': 'Friday',\n '6': 'Saturday', '7': 'Sunday',\n 'SUN': 'Sunday', 'MON': 'Monday', 'TUE': 'Tuesday',\n 'WED': 'Wednesday', 'THU': 'Thursday', 'FRI': 'Friday',\n 'SAT': 'Saturday',\n };\n return names[dow.toUpperCase()] ?? dow;\n }\n\n // ================================================================\n // Formatting Helpers\n // ================================================================\n\n private formatDuration(ms: number): string {\n const seconds = Math.floor(ms / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return 'Just now';\n }\n\n private formatDurationShort(ms: number): string {\n const totalSeconds = Math.floor(ms / 1000);\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n\n if (minutes >= 60) {\n const hours = Math.floor(minutes / 60);\n const remainMinutes = minutes % 60;\n return `${hours}h ${remainMinutes}m`;\n }\n return `${minutes}m ${seconds.toString().padStart(2, '0')}s`;\n }\n\n private formatNumber(n: number): string {\n return n.toLocaleString();\n }\n}\n\n/** Tree-shaking prevention */\nexport function LoadSchedulingResource(): void {\n // Prevents tree-shaking of the component\n}\n","@if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading scheduled pipelines...\"></mj-loading>\n </div>\n} @else {\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <button class=\"btn-primary\" (click)=\"OnNewSchedule()\">\n <i class=\"fa-solid fa-plus\"></i> New Schedule\n </button>\n <select class=\"filter-select\" [(ngModel)]=\"StatusFilter\" (ngModelChange)=\"OnFilterChanged()\">\n <option value=\"\">All Statuses</option>\n <option value=\"Active\">Active</option>\n <option value=\"Paused\">Paused</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search pipelines...\"\n [(ngModel)]=\"SearchQuery\"\n (ngModelChange)=\"OnSearchChanged()\" />\n <div class=\"toolbar-spacer\"></div>\n <span class=\"toolbar-stat\">\n @if (ActiveCount > 0) { <strong>{{ ActiveCount }}</strong> active }\n @if (PausedCount > 0) { · <strong>{{ PausedCount }}</strong> paused }\n </span>\n </div>\n\n <!-- Job Cards Grid -->\n @if (FilteredJobs.length > 0) {\n <div class=\"cards-grid\">\n @for (job of FilteredJobs; track job.ID) {\n <div class=\"job-card\"\n [class.paused]=\"job.Status === 'Paused'\"\n [class.disabled]=\"job.Status === 'Disabled'\"\n (click)=\"OnEditJob(job)\">\n <div class=\"card-top\">\n <span class=\"status-dot\"\n [class.dot-active]=\"job.Status === 'Active'\"\n [class.dot-paused]=\"job.Status === 'Paused'\"\n [class.dot-disabled]=\"job.Status === 'Disabled'\"></span>\n <div class=\"card-title-area\">\n <div class=\"card-name\">{{ job.Name }}</div>\n <div class=\"card-cron\">\n <i class=\"fa-regular fa-clock\"></i>\n {{ GetCronDescription(job.CronExpression) }}\n </div>\n </div>\n </div>\n <div class=\"sparkline\">\n @for (dotClass of GetSparkline(job.ID); track $index) {\n <span class=\"spark-dot\" [class]=\"dotClass\"></span>\n }\n <span class=\"sparkline-label\">last 7 runs</span>\n </div>\n <div class=\"card-stats\">\n <span class=\"stat\">\n <i class=\"fa-regular fa-clock\"></i>\n Last: <strong>{{ GetTimeAgo(job.LastRunAt) }}</strong>\n </span>\n <span class=\"stat\">\n <i class=\"fa-solid fa-chart-simple\"></i>\n <strong>{{ GetSuccessRate(job) }}</strong>\n </span>\n <span class=\"stat\">\n <i class=\"fa-regular fa-calendar\"></i>\n Next: <strong>{{ GetTimeUntil(job.NextRunAt) }}</strong>\n </span>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-regular fa-calendar-xmark\"></i>\n <p>No Knowledge Hub schedules found</p>\n <span>Create a new schedule to automate classification and vector sync</span>\n </div>\n }\n\n <!-- Link to full Scheduling App -->\n <div class=\"scheduling-app-link\">\n <button class=\"btn-secondary\" (click)=\"GoToSchedulingApp()\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Scheduling App\n </button>\n <span class=\"link-hint\">Manage all scheduled jobs across the system</span>\n </div>\n\n <!-- Edit Dialog -->\n <mj-scheduled-job-dialog\n [Visible]=\"ShowEditDialog\"\n [ScheduledJobID]=\"EditingJobID\"\n (Close)=\"OnDialogClosed($event)\">\n </mj-scheduled-job-dialog>\n}\n"]}
|
|
@@ -6,17 +6,11 @@
|
|
|
6
6
|
* Registered as BaseResourceComponent for the Knowledge Hub app.
|
|
7
7
|
*/
|
|
8
8
|
import { OnDestroy, AfterViewInit } from '@angular/core';
|
|
9
|
-
import { ResourceData } from '@memberjunction/core-entities';
|
|
9
|
+
import { MJKnowledgeHubSavedSearchEntity, ResourceData } from '@memberjunction/core-entities';
|
|
10
10
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
11
11
|
import { SearchResultItem, SearchResultGroup, SearchFilter, SearchResultSelectedEvent, SearchFilterChangeEvent } from '@memberjunction/ng-search';
|
|
12
12
|
import { RecentSearch } from '@memberjunction/ng-search';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
|
-
/** Saved search entry */
|
|
15
|
-
interface SavedSearch {
|
|
16
|
-
Query: string;
|
|
17
|
-
FilterCount: number;
|
|
18
|
-
SavedAt: Date;
|
|
19
|
-
}
|
|
20
14
|
export declare class KnowledgeSearchResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {
|
|
21
15
|
private cdr;
|
|
22
16
|
private searchService;
|
|
@@ -37,12 +31,32 @@ export declare class KnowledgeSearchResourceComponent extends BaseResourceCompon
|
|
|
37
31
|
ElapsedMs: number;
|
|
38
32
|
/** Minimum relevance score threshold (0-1). Results below this are hidden. */
|
|
39
33
|
MinScoreThreshold: number;
|
|
34
|
+
/**
|
|
35
|
+
* The minimum relevance threshold that was last sent to the server.
|
|
36
|
+
* When the slider moves above this, we filter client-side.
|
|
37
|
+
* When it moves below, we must re-fetch from the server.
|
|
38
|
+
*/
|
|
39
|
+
ServerMinRelevance: number;
|
|
40
|
+
/** Count of server-side results before any client-side filtering */
|
|
41
|
+
ServerResultCount: number;
|
|
40
42
|
RecentSearches: RecentSearch[];
|
|
41
|
-
SavedSearches:
|
|
43
|
+
SavedSearches: MJKnowledgeHubSavedSearchEntity[];
|
|
44
|
+
/** Popular tags for "Filter by Tag" preset buttons, sized by relative frequency */
|
|
45
|
+
PopularTags: {
|
|
46
|
+
Name: string;
|
|
47
|
+
Count: number;
|
|
48
|
+
FontSize: number;
|
|
49
|
+
}[];
|
|
50
|
+
ShowSaveDialog: boolean;
|
|
51
|
+
SaveSearchName: string;
|
|
42
52
|
GetResourceDisplayName(_data: ResourceData): Promise<string>;
|
|
43
53
|
GetResourceIconClass(_data: ResourceData): Promise<string>;
|
|
44
|
-
ngAfterViewInit(): void
|
|
54
|
+
ngAfterViewInit(): Promise<void>;
|
|
45
55
|
ngOnDestroy(): void;
|
|
56
|
+
/** Report current search state to the agent via NavigationService */
|
|
57
|
+
private emitAgentContext;
|
|
58
|
+
/** Register client tools the agent can invoke on this dashboard */
|
|
59
|
+
private registerAgentTools;
|
|
46
60
|
/** Execute a search query */
|
|
47
61
|
RunSearch(): Promise<void>;
|
|
48
62
|
/** Handle pressing Enter in the search box */
|
|
@@ -58,28 +72,95 @@ export declare class KnowledgeSearchResourceComponent extends BaseResourceCompon
|
|
|
58
72
|
CloseResultDetail(): void;
|
|
59
73
|
/** Toggle the filter sidebar */
|
|
60
74
|
ToggleFilters(): void;
|
|
61
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Handle a filter change from the filter component.
|
|
77
|
+
* Uses client-side filtering on the cached full result set — no server re-query.
|
|
78
|
+
*/
|
|
62
79
|
OnFilterChanged(event: SearchFilterChangeEvent): void;
|
|
63
80
|
/** Handle clearing all filters */
|
|
64
81
|
OnFiltersCleared(): void;
|
|
65
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Handle relevance threshold slider change.
|
|
84
|
+
* - Moving UP (narrowing): filter client-side from cached server results.
|
|
85
|
+
* - Moving DOWN past ServerMinRelevance (widening): re-fetch from server.
|
|
86
|
+
*/
|
|
66
87
|
OnThresholdChanged(value: number): void;
|
|
88
|
+
/**
|
|
89
|
+
* Re-fetch from the server with a new minimum relevance threshold,
|
|
90
|
+
* then update the server baseline so future narrowing stays client-side.
|
|
91
|
+
*/
|
|
92
|
+
private RunSearchWithThreshold;
|
|
93
|
+
/** Toggle select all / unselect all for a filter category (Kayak-style) */
|
|
94
|
+
ToggleSelectAll(category: string): void;
|
|
95
|
+
/** Check if all options in a category are selected */
|
|
96
|
+
IsAllSelected(category: string): boolean;
|
|
67
97
|
/** Open the chat overlay with Knowledge Agent context */
|
|
68
98
|
OnAskAgent(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Handle "See Similar Items" — re-runs the search using the result's title as the query.
|
|
101
|
+
* This provides a lightweight "more like this" experience without needing raw vector access.
|
|
102
|
+
*/
|
|
103
|
+
OnMoreLikeThis(result: SearchResultItem): void;
|
|
69
104
|
/** Apply a recent search */
|
|
70
105
|
ApplyRecentSearch(recent: RecentSearch): void;
|
|
106
|
+
/** Open the save search dialog */
|
|
107
|
+
OpenSaveDialog(): void;
|
|
108
|
+
/** Cancel the save dialog */
|
|
109
|
+
CancelSaveDialog(): void;
|
|
110
|
+
/**
|
|
111
|
+
* Save the current search as a named saved search using MJKnowledgeHubSavedSearchEntity.
|
|
112
|
+
* Persists query, active filters, min score, and max results.
|
|
113
|
+
*/
|
|
114
|
+
ConfirmSaveSearch(): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Apply a saved search — populates query, filters, and threshold, then executes.
|
|
117
|
+
*/
|
|
118
|
+
ApplySavedSearch(saved: MJKnowledgeHubSavedSearchEntity): void;
|
|
119
|
+
/**
|
|
120
|
+
* Delete a saved search by ID and remove it from the local list.
|
|
121
|
+
*/
|
|
122
|
+
DeleteSavedSearch(saved: MJKnowledgeHubSavedSearchEntity, event: MouseEvent): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Search by a popular tag: sets the query text and runs a search.
|
|
125
|
+
* Does NOT add a sticky filter — just a simple text search.
|
|
126
|
+
*/
|
|
127
|
+
FilterByTag(tagName: string): void;
|
|
71
128
|
/** Clear the current search */
|
|
72
129
|
ClearSearch(): void;
|
|
73
130
|
/** Check if any filters are active */
|
|
74
131
|
HasActiveFilters(): boolean;
|
|
132
|
+
GetActiveFilterCount(): number;
|
|
75
133
|
/** Parse URL parameters for deep links (e.g., ?conversationId=xxx or ?q=search+term) */
|
|
76
134
|
private parseUrlParameters;
|
|
135
|
+
/**
|
|
136
|
+
* Load saved searches for the current user from the database.
|
|
137
|
+
* Runs in the background — does not block initialization.
|
|
138
|
+
*/
|
|
139
|
+
private loadSavedSearches;
|
|
140
|
+
/**
|
|
141
|
+
* Load the top 10 most-used tags for the "Filter by Tag" preset buttons.
|
|
142
|
+
* Loads TaggedItems (TagID only), aggregates counts client-side, resolves
|
|
143
|
+
* display names from Tags, then sizes each tag by relative frequency.
|
|
144
|
+
* Font sizes range from 0.8rem (least used in top 10) to 1.3rem (most used).
|
|
145
|
+
*/
|
|
146
|
+
private loadPopularTags;
|
|
77
147
|
private subscribeToSearchState;
|
|
148
|
+
/** Full unfiltered result set from the last server query */
|
|
149
|
+
private cachedFullResults;
|
|
150
|
+
/**
|
|
151
|
+
* Apply filters client-side on the cached full result set.
|
|
152
|
+
* This avoids re-querying the server when entity/tag checkboxes change.
|
|
153
|
+
*/
|
|
154
|
+
private applyClientSideFilters;
|
|
155
|
+
private static readonly PREFS_KEY;
|
|
156
|
+
/** Persist user search preferences via UserInfoEngine */
|
|
157
|
+
private PersistSearchPreferences;
|
|
158
|
+
/** Load persisted search preferences from UserInfoEngine */
|
|
159
|
+
private LoadSearchPreferences;
|
|
78
160
|
private applySearchResponse;
|
|
79
161
|
static ɵfac: i0.ɵɵFactoryDeclaration<KnowledgeSearchResourceComponent, never>;
|
|
80
162
|
static ɵcmp: i0.ɵɵComponentDeclaration<KnowledgeSearchResourceComponent, "app-knowledge-search-resource", never, {}, {}, never, never, false, never>;
|
|
81
163
|
}
|
|
82
164
|
/** Tree-shaking prevention */
|
|
83
165
|
export declare function LoadKnowledgeSearchResource(): void;
|
|
84
|
-
export {};
|
|
85
166
|
//# sourceMappingURL=knowledge-search-resource.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-search-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/search/knowledge-search-resource.component.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgC,SAAS,EAAE,aAAa,EAAoB,MAAM,eAAe,CAAC;AAIzG,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"knowledge-search-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/search/knowledge-search-resource.component.ts"],"names":[],"mappings":"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"}
|