@memberjunction/ng-dashboards 3.3.0 → 4.0.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/ai-dashboard.component.d.ts +62 -0
- package/dist/AI/ai-dashboard.component.d.ts.map +1 -0
- package/dist/AI/ai-dashboard.component.js +338 -0
- package/dist/AI/ai-dashboard.component.js.map +1 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts +36 -5
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +287 -141
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +149 -211
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
- package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.js +6 -7
- package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +33 -37
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management-v2.component.d.ts +96 -0
- package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -0
- package/dist/AI/components/models/model-management-v2.component.js +981 -0
- package/dist/AI/components/models/model-management-v2.component.js.map +1 -0
- package/dist/AI/components/models/model-management.component.d.ts +26 -6
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +216 -103
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +97 -0
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -0
- package/dist/AI/components/prompts/prompt-management-v2.component.js +811 -0
- package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts +26 -6
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +164 -57
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +26 -27
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.js +52 -42
- package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
- package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.d.ts +5 -5
- package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +242 -239
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts +4 -5
- package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +237 -217
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.d.ts +1 -3
- package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +268 -249
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.d.ts +2 -3
- package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +136 -133
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +6 -6
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +335 -358
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +151 -155
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +237 -234
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/actions-management-dashboard.component.d.ts +52 -0
- package/dist/Actions/actions-management-dashboard.component.d.ts.map +1 -0
- package/dist/Actions/actions-management-dashboard.component.js +308 -0
- package/dist/Actions/actions-management-dashboard.component.js.map +1 -0
- package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +15 -14
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +3 -6
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +17 -19
- 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 +6 -6
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +0 -4
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +3 -9
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +0 -4
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +3 -9
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +13 -16
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +3 -3
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts +22 -0
- package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/action-breadcrumb.component.js +139 -0
- package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -0
- package/dist/Actions/components/explorer/action-card.component.d.ts +39 -0
- package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/action-card.component.js +411 -0
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -0
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +58 -0
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/action-explorer.component.js +523 -0
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -0
- package/dist/Actions/components/explorer/action-list-item.component.d.ts +24 -0
- package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/action-list-item.component.js +210 -0
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -0
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +63 -0
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/action-toolbar.component.js +484 -0
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -0
- package/dist/Actions/components/explorer/action-tree-panel.component.d.ts +57 -0
- package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/action-tree-panel.component.js +455 -0
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -0
- package/dist/Actions/components/explorer/index.d.ts +9 -0
- package/dist/Actions/components/explorer/index.d.ts.map +1 -0
- package/dist/Actions/components/explorer/index.js +10 -0
- package/dist/Actions/components/explorer/index.js.map +1 -0
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts +49 -0
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/new-action-panel.component.js +359 -0
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -0
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts +37 -0
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -0
- package/dist/Actions/components/explorer/new-category-panel.component.js +282 -0
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -0
- package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +3 -9
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +0 -4
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +3 -9
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/Actions/index.d.ts +2 -6
- package/dist/Actions/index.d.ts.map +1 -1
- package/dist/Actions/index.js +4 -7
- package/dist/Actions/index.js.map +1 -1
- package/dist/Actions/services/action-explorer-state.service.d.ts +104 -0
- package/dist/Actions/services/action-explorer-state.service.d.ts.map +1 -0
- package/dist/Actions/services/action-explorer-state.service.js +352 -0
- package/dist/Actions/services/action-explorer-state.service.js.map +1 -0
- package/dist/Communication/communication-dashboard.component.d.ts +2 -7
- package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +143 -107
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +10 -8
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +270 -134
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts +38 -7
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +469 -186
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts +16 -9
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +262 -139
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts +4 -6
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +168 -159
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +39 -0
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -0
- package/dist/Communication/communication-templates-resource.component.js +388 -0
- package/dist/Communication/communication-templates-resource.component.js.map +1 -0
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +69 -271
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +705 -1808
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +68 -0
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +400 -0
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -0
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.d.ts +44 -0
- package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/browser/component-browser.component.js +638 -0
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -0
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts +35 -0
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +380 -0
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -0
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +24 -0
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +221 -0
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -0
- package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts +28 -0
- package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +263 -0
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -0
- package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts +34 -0
- package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +307 -0
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -0
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts +29 -0
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +159 -0
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -0
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts +20 -0
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +192 -0
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -0
- package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +57 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +343 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -0
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +15 -0
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +144 -0
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -0
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts +203 -0
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -0
- package/dist/ComponentStudio/services/component-studio-state.service.js +651 -0
- package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -0
- package/dist/ComponentStudio/services/component-version.service.d.ts +120 -0
- package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -0
- package/dist/ComponentStudio/services/component-version.service.js +394 -0
- package/dist/ComponentStudio/services/component-version.service.js.map +1 -0
- package/dist/Credentials/components/credential-category-edit-panel.component.js +1 -1
- package/dist/Credentials/components/credential-edit-panel.component.js +1 -1
- package/dist/Credentials/components/credential-type-edit-panel.component.js +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +1 -2
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +1 -2
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +252 -241
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +1 -2
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +31 -44
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.js +2 -1
- package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +2 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +245 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +1143 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +0 -4
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +49 -54
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/index.d.ts +2 -2
- package/dist/DataExplorer/index.d.ts.map +1 -1
- package/dist/DataExplorer/index.js +2 -2
- package/dist/DataExplorer/index.js.map +1 -1
- package/dist/EntityAdmin/components/entity-details.component.d.ts +50 -0
- package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/entity-details.component.js +680 -0
- package/dist/EntityAdmin/components/entity-details.component.js.map +1 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +31 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.js +160 -0
- package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -0
- package/dist/EntityAdmin/components/erd-composite.component.d.ts +73 -0
- package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/erd-composite.component.js +271 -0
- package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -0
- package/dist/EntityAdmin/components/erd-diagram.component.d.ts +47 -0
- package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +1 -0
- package/dist/EntityAdmin/components/erd-diagram.component.js +618 -0
- package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-application.d.ts +0 -5
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +0 -9
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +0 -4
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +141 -139
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +761 -685
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +340 -316
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -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 +530 -482
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +508 -455
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +0 -1
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +0 -11
- package/dist/Lists/index.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts +68 -0
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -0
- package/dist/MCP/components/mcp-connection-dialog.component.js +523 -0
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -0
- package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +73 -0
- package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -0
- package/dist/MCP/components/mcp-log-detail-panel.component.js +533 -0
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -0
- package/dist/MCP/components/mcp-server-dialog.component.d.ts +76 -0
- package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -0
- package/dist/MCP/components/mcp-server-dialog.component.js +546 -0
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -0
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +267 -0
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -0
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +1300 -0
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -0
- package/dist/MCP/index.d.ts +11 -0
- package/dist/MCP/index.d.ts.map +1 -0
- package/dist/MCP/index.js +15 -0
- package/dist/MCP/index.js.map +1 -0
- package/dist/MCP/mcp-dashboard.component.d.ts +467 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -0
- package/dist/MCP/mcp-dashboard.component.js +2765 -0
- package/dist/MCP/mcp-dashboard.component.js.map +1 -0
- package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
- package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
- package/dist/MCP/mcp-filter-panel.component.js +288 -0
- package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
- package/dist/MCP/mcp-resource.component.d.ts +26 -0
- package/dist/MCP/mcp-resource.component.d.ts.map +1 -0
- package/dist/MCP/mcp-resource.component.js +54 -0
- package/dist/MCP/mcp-resource.component.js.map +1 -0
- package/dist/MCP/mcp.module.d.ts +24 -0
- package/dist/MCP/mcp.module.d.ts.map +1 -0
- package/dist/MCP/mcp.module.js +113 -0
- package/dist/MCP/mcp.module.js.map +1 -0
- package/dist/MCP/services/mcp-tools.service.d.ts +115 -0
- package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -0
- package/dist/MCP/services/mcp-tools.service.js +221 -0
- package/dist/MCP/services/mcp-tools.service.js.map +1 -0
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/index.d.ts +5 -8
- package/dist/Scheduling/components/index.d.ts.map +1 -1
- package/dist/Scheduling/components/index.js +6 -9
- package/dist/Scheduling/components/index.js.map +1 -1
- package/dist/Scheduling/components/job-slideout.component.d.ts +45 -0
- package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -0
- package/dist/Scheduling/components/job-slideout.component.js +459 -0
- package/dist/Scheduling/components/job-slideout.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +15 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +45 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +71 -0
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-activity.component.js +714 -0
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-health-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-health.component.js +1 -1
- package/dist/Scheduling/components/scheduling-history-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-history.component.js +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +3 -8
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +5 -15
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +52 -34
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +452 -262
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-monitor-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-monitoring.component.js +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +15 -0
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +45 -0
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +43 -0
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-overview.component.js +600 -0
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-types-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-types.component.js +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +22 -33
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +173 -175
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +49 -6
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +218 -149
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/index.d.ts +7 -8
- package/dist/Testing/components/index.d.ts.map +1 -1
- package/dist/Testing/components/index.js +8 -9
- package/dist/Testing/components/index.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +0 -4
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +3 -9
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +52 -37
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +1024 -570
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +16 -0
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +47 -0
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +57 -0
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-dashboard-tab.component.js +649 -0
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -0
- package/dist/Testing/components/testing-execution-resource.component.js +1 -1
- package/dist/Testing/components/testing-execution.component.js +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +16 -0
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-explorer-resource.component.js +47 -0
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-explorer.component.d.ts +193 -0
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-explorer.component.js +2219 -0
- package/dist/Testing/components/testing-explorer.component.js.map +1 -0
- package/dist/Testing/components/testing-feedback-resource.component.js +1 -1
- package/dist/Testing/components/testing-feedback.component.js +1 -1
- package/dist/Testing/components/testing-overview-resource.component.js +1 -1
- package/dist/Testing/components/testing-overview.component.js +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +16 -0
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-review-resource.component.js +47 -0
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-review.component.d.ts +60 -0
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-review.component.js +985 -0
- package/dist/Testing/components/testing-review.component.js.map +1 -0
- package/dist/Testing/components/testing-runs-resource.component.d.ts +16 -0
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-runs-resource.component.js +47 -0
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-runs.component.d.ts +82 -0
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-runs.component.js +1067 -0
- package/dist/Testing/components/testing-runs.component.js.map +1 -0
- package/dist/Testing/components/testing-version-comparison.component.js +1 -1
- package/dist/Testing/components/testing-version-resource.component.js +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
- package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +12 -16
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +51 -72
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/graph-resource.component.js +521 -0
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/index.d.ts +5 -0
- package/dist/VersionHistory/components/index.d.ts.map +1 -0
- package/dist/VersionHistory/components/index.js +5 -0
- package/dist/VersionHistory/components/index.js.map +1 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/labels-resource.component.js +968 -0
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/restore-resource.component.js +472 -0
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
- package/dist/VersionHistory/index.d.ts +2 -0
- package/dist/VersionHistory/index.d.ts.map +1 -0
- package/dist/VersionHistory/index.js +2 -0
- package/dist/VersionHistory/index.js.map +1 -0
- package/dist/generic/base-dashboard.d.ts +65 -0
- package/dist/generic/base-dashboard.d.ts.map +1 -0
- package/dist/generic/base-dashboard.js +74 -0
- package/dist/generic/base-dashboard.js.map +1 -0
- package/dist/module.d.ts +127 -104
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +221 -95
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +22 -19
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +28 -119
- package/dist/public-api.js.map +1 -1
- package/dist/shared/pipes/highlight-search.pipe.d.ts +17 -0
- package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -0
- package/dist/shared/pipes/highlight-search.pipe.js +41 -0
- package/dist/shared/pipes/highlight-search.pipe.js.map +1 -0
- package/dist/shared/pipes/index.d.ts +2 -0
- package/dist/shared/pipes/index.d.ts.map +1 -0
- package/dist/shared/pipes/index.js +2 -0
- package/dist/shared/pipes/index.js.map +1 -0
- package/dist/shared/shared-pipes.module.d.ts +11 -0
- package/dist/shared/shared-pipes.module.d.ts.map +1 -0
- package/dist/shared/shared-pipes.module.js +24 -0
- package/dist/shared/shared-pipes.module.js.map +1 -0
- package/package.json +65 -56
|
@@ -13,21 +13,21 @@ import * as i0 from "@angular/core";
|
|
|
13
13
|
import * as i1 from "@memberjunction/ng-shared";
|
|
14
14
|
import * as i2 from "@angular/common";
|
|
15
15
|
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
16
|
-
function
|
|
17
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
16
|
+
function CredentialsOverviewResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵelement(0, "mj-loading", 1);
|
|
18
18
|
} }
|
|
19
|
-
function
|
|
19
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
20
20
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
21
|
-
i0.ɵɵelementStart(0, "button",
|
|
22
|
-
i0.ɵɵlistener("click", function
|
|
23
|
-
i0.ɵɵelement(1, "i",
|
|
21
|
+
i0.ɵɵelementStart(0, "button", 60);
|
|
22
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewCredential()); });
|
|
23
|
+
i0.ɵɵelement(1, "i", 61);
|
|
24
24
|
i0.ɵɵelementStart(2, "span");
|
|
25
25
|
i0.ɵɵtext(3, "New Credential");
|
|
26
26
|
i0.ɵɵelementEnd()();
|
|
27
27
|
} }
|
|
28
|
-
function
|
|
29
|
-
i0.ɵɵelementStart(0, "span",
|
|
30
|
-
i0.ɵɵelement(1, "i",
|
|
28
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
30
|
+
i0.ɵɵelement(1, "i", 62);
|
|
31
31
|
i0.ɵɵtext(2);
|
|
32
32
|
i0.ɵɵelementEnd();
|
|
33
33
|
} if (rf & 2) {
|
|
@@ -35,11 +35,11 @@ function CredentialsOverviewResourceComponent_ng_container_2_span_23_Template(rf
|
|
|
35
35
|
i0.ɵɵadvance(2);
|
|
36
36
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.expiredCredentials, " expired ");
|
|
37
37
|
} }
|
|
38
|
-
function
|
|
38
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
39
39
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
40
|
-
i0.ɵɵelementStart(0, "span",
|
|
41
|
-
i0.ɵɵlistener("click", function
|
|
42
|
-
i0.ɵɵelement(1, "i",
|
|
40
|
+
i0.ɵɵelementStart(0, "span", 63);
|
|
41
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_23_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.viewExpiringCredentials()); });
|
|
42
|
+
i0.ɵɵelement(1, "i", 38);
|
|
43
43
|
i0.ɵɵtext(2);
|
|
44
44
|
i0.ɵɵelementEnd();
|
|
45
45
|
} if (rf & 2) {
|
|
@@ -47,45 +47,45 @@ function CredentialsOverviewResourceComponent_ng_container_2_span_24_Template(rf
|
|
|
47
47
|
i0.ɵɵadvance(2);
|
|
48
48
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.expiringSoonCount, " expiring soon ");
|
|
49
49
|
} }
|
|
50
|
-
function
|
|
51
|
-
i0.ɵɵelementStart(0, "span",
|
|
52
|
-
i0.ɵɵelement(1, "i",
|
|
50
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵelementStart(0, "span", 22);
|
|
52
|
+
i0.ɵɵelement(1, "i", 33);
|
|
53
53
|
i0.ɵɵtext(2, " All credentials healthy ");
|
|
54
54
|
i0.ɵɵelementEnd();
|
|
55
55
|
} }
|
|
56
|
-
function
|
|
57
|
-
i0.ɵɵelementStart(0, "div",
|
|
58
|
-
i0.ɵɵelement(1, "i",
|
|
56
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_63_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
58
|
+
i0.ɵɵelement(1, "i", 31);
|
|
59
59
|
i0.ɵɵelementEnd();
|
|
60
60
|
} }
|
|
61
|
-
function
|
|
61
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
62
62
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
63
63
|
i0.ɵɵnamespaceSVG();
|
|
64
64
|
i0.ɵɵelementContainerStart(0);
|
|
65
|
-
i0.ɵɵelementStart(1, "circle",
|
|
66
|
-
i0.ɵɵlistener("click", function
|
|
65
|
+
i0.ɵɵelementStart(1, "circle", 72);
|
|
66
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_For_5_Template_circle_click_1_listener() { const stat_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCategoryClick(stat_r6)); });
|
|
67
67
|
i0.ɵɵelementEnd();
|
|
68
68
|
i0.ɵɵelementContainerEnd();
|
|
69
69
|
} if (rf & 2) {
|
|
70
70
|
const stat_r6 = ctx.$implicit;
|
|
71
|
-
const
|
|
71
|
+
const ɵ$index_184_r7 = ctx.$index;
|
|
72
72
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
73
73
|
i0.ɵɵadvance();
|
|
74
|
-
i0.ɵɵattribute("stroke", stat_r6.color)("stroke-dasharray", stat_r6.percentage * 2.51 + " " + (251 - stat_r6.percentage * 2.51))("stroke-dashoffset", ctx_r1.getDonutOffset(
|
|
74
|
+
i0.ɵɵattribute("stroke", stat_r6.color)("stroke-dasharray", stat_r6.percentage * 2.51 + " " + (251 - stat_r6.percentage * 2.51))("stroke-dashoffset", ctx_r1.getDonutOffset(ɵ$index_184_r7));
|
|
75
75
|
} }
|
|
76
|
-
function
|
|
76
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
77
77
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
78
|
-
i0.ɵɵelementStart(0, "div",
|
|
79
|
-
i0.ɵɵlistener("click", function
|
|
80
|
-
i0.ɵɵelement(1, "div",
|
|
81
|
-
i0.ɵɵelementStart(2, "div",
|
|
78
|
+
i0.ɵɵelementStart(0, "div", 73);
|
|
79
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_For_13_Template_div_click_0_listener() { const stat_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCategoryClick(stat_r9)); });
|
|
80
|
+
i0.ɵɵelement(1, "div", 74);
|
|
81
|
+
i0.ɵɵelementStart(2, "div", 75)(3, "div", 76);
|
|
82
82
|
i0.ɵɵelement(4, "i");
|
|
83
83
|
i0.ɵɵtext(5);
|
|
84
84
|
i0.ɵɵelementEnd();
|
|
85
|
-
i0.ɵɵelementStart(6, "div",
|
|
85
|
+
i0.ɵɵelementStart(6, "div", 77);
|
|
86
86
|
i0.ɵɵtext(7);
|
|
87
87
|
i0.ɵɵelementEnd()();
|
|
88
|
-
i0.ɵɵelement(8, "i",
|
|
88
|
+
i0.ɵɵelement(8, "i", 78);
|
|
89
89
|
i0.ɵɵelementEnd();
|
|
90
90
|
} if (rf & 2) {
|
|
91
91
|
const stat_r9 = ctx.$implicit;
|
|
@@ -98,42 +98,42 @@ function CredentialsOverviewResourceComponent_ng_container_2_div_83_div_11_Templ
|
|
|
98
98
|
i0.ɵɵadvance(2);
|
|
99
99
|
i0.ɵɵtextInterpolate2("", stat_r9.count, " (", stat_r9.percentage, "%)");
|
|
100
100
|
} }
|
|
101
|
-
function
|
|
102
|
-
i0.ɵɵelementStart(0, "div",
|
|
101
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 64);
|
|
103
103
|
i0.ɵɵnamespaceSVG();
|
|
104
|
-
i0.ɵɵelementStart(2, "svg",
|
|
105
|
-
i0.ɵɵelement(3, "circle",
|
|
106
|
-
i0.ɵɵ
|
|
104
|
+
i0.ɵɵelementStart(2, "svg", 65);
|
|
105
|
+
i0.ɵɵelement(3, "circle", 66);
|
|
106
|
+
i0.ɵɵrepeaterCreate(4, CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_For_5_Template, 2, 3, ":svg:ng-container", null, i0.ɵɵrepeaterTrackByIdentity);
|
|
107
107
|
i0.ɵɵelementEnd();
|
|
108
108
|
i0.ɵɵnamespaceHTML();
|
|
109
|
-
i0.ɵɵelementStart(
|
|
110
|
-
i0.ɵɵtext(
|
|
109
|
+
i0.ɵɵelementStart(6, "div", 67)(7, "div", 68);
|
|
110
|
+
i0.ɵɵtext(8);
|
|
111
111
|
i0.ɵɵelementEnd();
|
|
112
|
-
i0.ɵɵelementStart(
|
|
113
|
-
i0.ɵɵtext(
|
|
112
|
+
i0.ɵɵelementStart(9, "div", 69);
|
|
113
|
+
i0.ɵɵtext(10, "Total");
|
|
114
114
|
i0.ɵɵelementEnd()()();
|
|
115
|
-
i0.ɵɵelementStart(
|
|
116
|
-
i0.ɵɵ
|
|
115
|
+
i0.ɵɵelementStart(11, "div", 70);
|
|
116
|
+
i0.ɵɵrepeaterCreate(12, CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_For_13_Template, 9, 7, "div", 71, i0.ɵɵrepeaterTrackByIdentity);
|
|
117
117
|
i0.ɵɵelementEnd()();
|
|
118
118
|
} if (rf & 2) {
|
|
119
119
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
120
120
|
i0.ɵɵadvance(4);
|
|
121
|
-
i0.ɵɵ
|
|
122
|
-
i0.ɵɵadvance(
|
|
121
|
+
i0.ɵɵrepeater(ctx_r1.categoryStats);
|
|
122
|
+
i0.ɵɵadvance(4);
|
|
123
123
|
i0.ɵɵtextInterpolate(ctx_r1.totalCredentials);
|
|
124
124
|
i0.ɵɵadvance(4);
|
|
125
|
-
i0.ɵɵ
|
|
125
|
+
i0.ɵɵrepeater(ctx_r1.categoryStats);
|
|
126
126
|
} }
|
|
127
|
-
function
|
|
128
|
-
i0.ɵɵelementStart(0, "div",
|
|
129
|
-
i0.ɵɵelement(1, "i",
|
|
127
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_83_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵelementStart(0, "div", 49);
|
|
129
|
+
i0.ɵɵelement(1, "i", 79);
|
|
130
130
|
i0.ɵɵelementStart(2, "span");
|
|
131
131
|
i0.ɵɵtext(3, "No credentials configured");
|
|
132
132
|
i0.ɵɵelementEnd()();
|
|
133
133
|
} }
|
|
134
|
-
function
|
|
135
|
-
i0.ɵɵelementStart(0, "span",
|
|
136
|
-
i0.ɵɵelement(1, "i",
|
|
134
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
135
|
+
i0.ɵɵelementStart(0, "span", 92);
|
|
136
|
+
i0.ɵɵelement(1, "i", 94);
|
|
137
137
|
i0.ɵɵtext(2);
|
|
138
138
|
i0.ɵɵelementEnd();
|
|
139
139
|
} if (rf & 2) {
|
|
@@ -141,9 +141,9 @@ function CredentialsOverviewResourceComponent_ng_container_2_div_95_div_1_span_1
|
|
|
141
141
|
i0.ɵɵadvance(2);
|
|
142
142
|
i0.ɵɵtextInterpolate1(" ", type_r11.activeCount, " ");
|
|
143
143
|
} }
|
|
144
|
-
function
|
|
145
|
-
i0.ɵɵelementStart(0, "span",
|
|
146
|
-
i0.ɵɵelement(1, "i",
|
|
144
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
+
i0.ɵɵelementStart(0, "span", 93);
|
|
146
|
+
i0.ɵɵelement(1, "i", 38);
|
|
147
147
|
i0.ɵɵtext(2);
|
|
148
148
|
i0.ɵɵelementEnd();
|
|
149
149
|
} if (rf & 2) {
|
|
@@ -151,27 +151,28 @@ function CredentialsOverviewResourceComponent_ng_container_2_div_95_div_1_span_1
|
|
|
151
151
|
i0.ɵɵadvance(2);
|
|
152
152
|
i0.ɵɵtextInterpolate1(" ", type_r11.expiringCount, " ");
|
|
153
153
|
} }
|
|
154
|
-
function
|
|
154
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
155
155
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
156
|
-
i0.ɵɵelementStart(0, "div",
|
|
157
|
-
i0.ɵɵlistener("click", function
|
|
158
|
-
i0.ɵɵelementStart(1, "div",
|
|
156
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
157
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Template_div_click_0_listener() { const type_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onTypeClick(type_r11)); });
|
|
158
|
+
i0.ɵɵelementStart(1, "div", 82)(2, "div", 83);
|
|
159
159
|
i0.ɵɵtext(3);
|
|
160
160
|
i0.ɵɵelementEnd();
|
|
161
|
-
i0.ɵɵelementStart(4, "div",
|
|
161
|
+
i0.ɵɵelementStart(4, "div", 84);
|
|
162
162
|
i0.ɵɵtext(5);
|
|
163
163
|
i0.ɵɵelementEnd()();
|
|
164
|
-
i0.ɵɵelementStart(6, "div",
|
|
164
|
+
i0.ɵɵelementStart(6, "div", 85)(7, "div", 86)(8, "span", 87);
|
|
165
165
|
i0.ɵɵtext(9);
|
|
166
166
|
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵelementStart(10, "span",
|
|
167
|
+
i0.ɵɵelementStart(10, "span", 88);
|
|
168
168
|
i0.ɵɵtext(11, "credentials");
|
|
169
169
|
i0.ɵɵelementEnd()();
|
|
170
|
-
i0.ɵɵelementStart(12, "div",
|
|
171
|
-
i0.ɵɵelement(13, "div",
|
|
170
|
+
i0.ɵɵelementStart(12, "div", 89);
|
|
171
|
+
i0.ɵɵelement(13, "div", 90);
|
|
172
172
|
i0.ɵɵelementEnd();
|
|
173
|
-
i0.ɵɵelementStart(14, "div",
|
|
174
|
-
i0.ɵɵ
|
|
173
|
+
i0.ɵɵelementStart(14, "div", 91);
|
|
174
|
+
i0.ɵɵconditionalCreate(15, CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Conditional_15_Template, 3, 1, "span", 92);
|
|
175
|
+
i0.ɵɵconditionalCreate(16, CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Conditional_16_Template, 3, 1, "span", 93);
|
|
175
176
|
i0.ɵɵelementEnd()()();
|
|
176
177
|
} if (rf & 2) {
|
|
177
178
|
const type_r11 = ctx.$implicit;
|
|
@@ -185,54 +186,54 @@ function CredentialsOverviewResourceComponent_ng_container_2_div_95_div_1_Templa
|
|
|
185
186
|
i0.ɵɵadvance(4);
|
|
186
187
|
i0.ɵɵstyleProp("width", ctx_r1.totalCredentials > 0 ? type_r11.credentialCount / ctx_r1.totalCredentials * 100 : 0, "%");
|
|
187
188
|
i0.ɵɵadvance(2);
|
|
188
|
-
i0.ɵɵ
|
|
189
|
+
i0.ɵɵconditional(type_r11.activeCount > 0 ? 15 : -1);
|
|
189
190
|
i0.ɵɵadvance();
|
|
190
|
-
i0.ɵɵ
|
|
191
|
+
i0.ɵɵconditional(type_r11.expiringCount > 0 ? 16 : -1);
|
|
191
192
|
} }
|
|
192
|
-
function
|
|
193
|
-
i0.ɵɵelementStart(0, "div",
|
|
194
|
-
i0.ɵɵ
|
|
193
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_Template(rf, ctx) { if (rf & 1) {
|
|
194
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
195
|
+
i0.ɵɵrepeaterCreate(1, CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_For_2_Template, 17, 7, "div", 80, i0.ɵɵrepeaterTrackByIdentity);
|
|
195
196
|
i0.ɵɵelementEnd();
|
|
196
197
|
} if (rf & 2) {
|
|
197
198
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
198
199
|
i0.ɵɵadvance();
|
|
199
|
-
i0.ɵɵ
|
|
200
|
+
i0.ɵɵrepeater(ctx_r1.typeStats.slice(0, 6));
|
|
200
201
|
} }
|
|
201
|
-
function
|
|
202
|
-
i0.ɵɵelementStart(0, "div",
|
|
203
|
-
i0.ɵɵelement(1, "i",
|
|
202
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_95_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
i0.ɵɵelementStart(0, "div", 49);
|
|
204
|
+
i0.ɵɵelement(1, "i", 95);
|
|
204
205
|
i0.ɵɵelementStart(2, "span");
|
|
205
206
|
i0.ɵɵtext(3, "No credential types configured");
|
|
206
207
|
i0.ɵɵelementEnd()();
|
|
207
208
|
} }
|
|
208
|
-
function
|
|
209
|
-
i0.ɵɵelementStart(0, "span",
|
|
209
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
210
|
+
i0.ɵɵelementStart(0, "span", 104);
|
|
210
211
|
i0.ɵɵtext(1);
|
|
211
212
|
i0.ɵɵelementEnd();
|
|
212
213
|
} if (rf & 2) {
|
|
213
214
|
const activity_r13 = i0.ɵɵnextContext().$implicit;
|
|
214
215
|
i0.ɵɵadvance();
|
|
215
|
-
i0.ɵɵtextInterpolate1("by ", activity_r13.user
|
|
216
|
+
i0.ɵɵtextInterpolate1("by ", activity_r13.user);
|
|
216
217
|
} }
|
|
217
|
-
function
|
|
218
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
218
219
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
219
|
-
i0.ɵɵelementStart(0, "div",
|
|
220
|
-
i0.ɵɵlistener("click", function
|
|
221
|
-
i0.ɵɵelementStart(1, "div",
|
|
220
|
+
i0.ɵɵelementStart(0, "div", 97);
|
|
221
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_For_2_Template_div_click_0_listener() { const activity_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onActivityClick(activity_r13)); });
|
|
222
|
+
i0.ɵɵelementStart(1, "div", 98);
|
|
222
223
|
i0.ɵɵelement(2, "i");
|
|
223
224
|
i0.ɵɵelementEnd();
|
|
224
|
-
i0.ɵɵelementStart(3, "div",
|
|
225
|
+
i0.ɵɵelementStart(3, "div", 99)(4, "div", 100);
|
|
225
226
|
i0.ɵɵtext(5);
|
|
226
227
|
i0.ɵɵelementEnd();
|
|
227
|
-
i0.ɵɵelementStart(6, "div",
|
|
228
|
+
i0.ɵɵelementStart(6, "div", 101)(7, "span", 102);
|
|
228
229
|
i0.ɵɵtext(8);
|
|
229
230
|
i0.ɵɵelementEnd();
|
|
230
|
-
i0.ɵɵelementStart(9, "span",
|
|
231
|
+
i0.ɵɵelementStart(9, "span", 103);
|
|
231
232
|
i0.ɵɵtext(10);
|
|
232
233
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵ
|
|
234
|
+
i0.ɵɵconditionalCreate(11, CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_For_2_Conditional_11_Template, 2, 1, "span", 104);
|
|
234
235
|
i0.ɵɵelementEnd()();
|
|
235
|
-
i0.ɵɵelementStart(12, "div",
|
|
236
|
+
i0.ɵɵelementStart(12, "div", 105);
|
|
236
237
|
i0.ɵɵtext(13);
|
|
237
238
|
i0.ɵɵelementEnd()();
|
|
238
239
|
} if (rf & 2) {
|
|
@@ -249,195 +250,198 @@ function CredentialsOverviewResourceComponent_ng_container_2_div_107_div_1_Templ
|
|
|
249
250
|
i0.ɵɵadvance(2);
|
|
250
251
|
i0.ɵɵtextInterpolate(activity_r13.action);
|
|
251
252
|
i0.ɵɵadvance();
|
|
252
|
-
i0.ɵɵ
|
|
253
|
+
i0.ɵɵconditional(activity_r13.user ? 11 : -1);
|
|
253
254
|
i0.ɵɵadvance(2);
|
|
254
255
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatDate(activity_r13.date), " ");
|
|
255
256
|
} }
|
|
256
|
-
function
|
|
257
|
-
i0.ɵɵelementStart(0, "div",
|
|
258
|
-
i0.ɵɵ
|
|
257
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_Template(rf, ctx) { if (rf & 1) {
|
|
258
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
259
|
+
i0.ɵɵrepeaterCreate(1, CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_For_2_Template, 14, 8, "div", 96, i0.ɵɵrepeaterTrackByIdentity);
|
|
259
260
|
i0.ɵɵelementEnd();
|
|
260
261
|
} if (rf & 2) {
|
|
261
262
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
262
263
|
i0.ɵɵadvance();
|
|
263
|
-
i0.ɵɵ
|
|
264
|
+
i0.ɵɵrepeater(ctx_r1.recentActivity);
|
|
264
265
|
} }
|
|
265
|
-
function
|
|
266
|
-
i0.ɵɵelementStart(0, "div",
|
|
267
|
-
i0.ɵɵelement(1, "i",
|
|
266
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_107_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
+
i0.ɵɵelementStart(0, "div", 49);
|
|
268
|
+
i0.ɵɵelement(1, "i", 106);
|
|
268
269
|
i0.ɵɵelementStart(2, "span");
|
|
269
270
|
i0.ɵɵtext(3, "No recent activity");
|
|
270
271
|
i0.ɵɵelementEnd()();
|
|
271
272
|
} }
|
|
272
|
-
function
|
|
273
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Conditional_108_Template(rf, ctx) { if (rf & 1) {
|
|
273
274
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
274
|
-
i0.ɵɵelementStart(0, "div",
|
|
275
|
+
i0.ɵɵelementStart(0, "div", 56)(1, "div", 107);
|
|
275
276
|
i0.ɵɵtext(2, "Quick Actions");
|
|
276
277
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵelementStart(3, "div",
|
|
278
|
-
i0.ɵɵlistener("click", function
|
|
279
|
-
i0.ɵɵelement(5, "i",
|
|
278
|
+
i0.ɵɵelementStart(3, "div", 108)(4, "button", 109);
|
|
279
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_108_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.createNewCredential()); });
|
|
280
|
+
i0.ɵɵelement(5, "i", 61);
|
|
280
281
|
i0.ɵɵelementStart(6, "span");
|
|
281
282
|
i0.ɵɵtext(7, "Add Credential");
|
|
282
283
|
i0.ɵɵelementEnd()();
|
|
283
|
-
i0.ɵɵelementStart(8, "button",
|
|
284
|
-
i0.ɵɵlistener("click", function
|
|
285
|
-
i0.ɵɵelement(9, "i",
|
|
284
|
+
i0.ɵɵelementStart(8, "button", 109);
|
|
285
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_108_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.viewAllTypes()); });
|
|
286
|
+
i0.ɵɵelement(9, "i", 95);
|
|
286
287
|
i0.ɵɵelementStart(10, "span");
|
|
287
288
|
i0.ɵɵtext(11, "Manage Types");
|
|
288
289
|
i0.ɵɵelementEnd()();
|
|
289
|
-
i0.ɵɵelementStart(12, "button",
|
|
290
|
-
i0.ɵɵlistener("click", function
|
|
291
|
-
i0.ɵɵelement(13, "i",
|
|
290
|
+
i0.ɵɵelementStart(12, "button", 109);
|
|
291
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_108_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.viewAllCategories()); });
|
|
292
|
+
i0.ɵɵelement(13, "i", 110);
|
|
292
293
|
i0.ɵɵelementStart(14, "span");
|
|
293
294
|
i0.ɵɵtext(15, "Categories");
|
|
294
295
|
i0.ɵɵelementEnd()();
|
|
295
|
-
i0.ɵɵelementStart(16, "button",
|
|
296
|
-
i0.ɵɵlistener("click", function
|
|
297
|
-
i0.ɵɵelement(17, "i",
|
|
296
|
+
i0.ɵɵelementStart(16, "button", 109);
|
|
297
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Conditional_108_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.viewAuditLog()); });
|
|
298
|
+
i0.ɵɵelement(17, "i", 111);
|
|
298
299
|
i0.ɵɵelementStart(18, "span");
|
|
299
300
|
i0.ɵɵtext(19, "Audit Log");
|
|
300
301
|
i0.ɵɵelementEnd()()()();
|
|
301
302
|
} }
|
|
302
|
-
function
|
|
303
|
+
function CredentialsOverviewResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
303
304
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
304
|
-
i0.ɵɵ
|
|
305
|
-
i0.ɵɵ
|
|
306
|
-
i0.ɵɵtext(4, "Credential Overview");
|
|
305
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "h2", 4);
|
|
306
|
+
i0.ɵɵtext(3, "Credential Overview");
|
|
307
307
|
i0.ɵɵelementEnd();
|
|
308
|
-
i0.ɵɵelementStart(
|
|
309
|
-
i0.ɵɵtext(
|
|
308
|
+
i0.ɵɵelementStart(4, "p", 5);
|
|
309
|
+
i0.ɵɵtext(5, "Monitor and manage your organization's credentials");
|
|
310
310
|
i0.ɵɵelementEnd()();
|
|
311
|
-
i0.ɵɵelementStart(
|
|
312
|
-
i0.ɵɵlistener("click", function
|
|
313
|
-
i0.ɵɵelement(
|
|
311
|
+
i0.ɵɵelementStart(6, "div", 6)(7, "button", 7);
|
|
312
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refresh()); });
|
|
313
|
+
i0.ɵɵelement(8, "i", 8);
|
|
314
314
|
i0.ɵɵelementEnd();
|
|
315
|
-
i0.ɵɵ
|
|
315
|
+
i0.ɵɵconditionalCreate(9, CredentialsOverviewResourceComponent_Conditional_2_Conditional_9_Template, 4, 0, "button", 9);
|
|
316
316
|
i0.ɵɵelementEnd()();
|
|
317
|
-
i0.ɵɵelementStart(
|
|
317
|
+
i0.ɵɵelementStart(10, "div", 10)(11, "div", 11)(12, "div", 12);
|
|
318
318
|
i0.ɵɵnamespaceSVG();
|
|
319
|
-
i0.ɵɵelementStart(
|
|
320
|
-
i0.ɵɵelement(
|
|
319
|
+
i0.ɵɵelementStart(13, "svg", 13);
|
|
320
|
+
i0.ɵɵelement(14, "path", 14)(15, "path", 15);
|
|
321
321
|
i0.ɵɵelementEnd();
|
|
322
322
|
i0.ɵɵnamespaceHTML();
|
|
323
|
-
i0.ɵɵelementStart(
|
|
324
|
-
i0.ɵɵtext(
|
|
323
|
+
i0.ɵɵelementStart(16, "div", 16);
|
|
324
|
+
i0.ɵɵtext(17);
|
|
325
325
|
i0.ɵɵelementEnd()()();
|
|
326
|
-
i0.ɵɵelementStart(
|
|
327
|
-
i0.ɵɵtext(
|
|
326
|
+
i0.ɵɵelementStart(18, "div", 17)(19, "div", 18);
|
|
327
|
+
i0.ɵɵtext(20);
|
|
328
328
|
i0.ɵɵelementEnd();
|
|
329
|
-
i0.ɵɵelementStart(
|
|
330
|
-
i0.ɵɵ
|
|
329
|
+
i0.ɵɵelementStart(21, "div", 19);
|
|
330
|
+
i0.ɵɵconditionalCreate(22, CredentialsOverviewResourceComponent_Conditional_2_Conditional_22_Template, 3, 1, "span", 20);
|
|
331
|
+
i0.ɵɵconditionalCreate(23, CredentialsOverviewResourceComponent_Conditional_2_Conditional_23_Template, 3, 1, "span", 21);
|
|
332
|
+
i0.ɵɵconditionalCreate(24, CredentialsOverviewResourceComponent_Conditional_2_Conditional_24_Template, 3, 0, "span", 22);
|
|
331
333
|
i0.ɵɵelementEnd()()();
|
|
332
|
-
i0.ɵɵelementStart(
|
|
333
|
-
i0.ɵɵlistener("click", function
|
|
334
|
-
i0.ɵɵelementStart(
|
|
335
|
-
i0.ɵɵelement(
|
|
334
|
+
i0.ɵɵelementStart(25, "div", 23)(26, "div", 24);
|
|
335
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Template_div_click_26_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.viewAllCredentials()); });
|
|
336
|
+
i0.ɵɵelementStart(27, "div", 25);
|
|
337
|
+
i0.ɵɵelement(28, "i", 26);
|
|
336
338
|
i0.ɵɵelementEnd();
|
|
337
|
-
i0.ɵɵelementStart(
|
|
338
|
-
i0.ɵɵtext(
|
|
339
|
+
i0.ɵɵelementStart(29, "div", 27)(30, "div", 28);
|
|
340
|
+
i0.ɵɵtext(31);
|
|
339
341
|
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelementStart(
|
|
341
|
-
i0.ɵɵtext(
|
|
342
|
+
i0.ɵɵelementStart(32, "div", 29);
|
|
343
|
+
i0.ɵɵtext(33, "Total Credentials");
|
|
342
344
|
i0.ɵɵelementEnd()();
|
|
343
|
-
i0.ɵɵelementStart(
|
|
344
|
-
i0.ɵɵelement(
|
|
345
|
+
i0.ɵɵelementStart(34, "div", 30);
|
|
346
|
+
i0.ɵɵelement(35, "i", 31);
|
|
345
347
|
i0.ɵɵelementEnd()();
|
|
346
|
-
i0.ɵɵelementStart(
|
|
347
|
-
i0.ɵɵlistener("click", function
|
|
348
|
-
i0.ɵɵelementStart(
|
|
349
|
-
i0.ɵɵelement(
|
|
348
|
+
i0.ɵɵelementStart(36, "div", 32);
|
|
349
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Template_div_click_36_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.viewAllCredentials()); });
|
|
350
|
+
i0.ɵɵelementStart(37, "div", 25);
|
|
351
|
+
i0.ɵɵelement(38, "i", 33);
|
|
350
352
|
i0.ɵɵelementEnd();
|
|
351
|
-
i0.ɵɵelementStart(
|
|
352
|
-
i0.ɵɵtext(
|
|
353
|
+
i0.ɵɵelementStart(39, "div", 27)(40, "div", 28);
|
|
354
|
+
i0.ɵɵtext(41);
|
|
353
355
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵelementStart(
|
|
355
|
-
i0.ɵɵtext(
|
|
356
|
+
i0.ɵɵelementStart(42, "div", 29);
|
|
357
|
+
i0.ɵɵtext(43, "Active");
|
|
356
358
|
i0.ɵɵelementEnd()();
|
|
357
|
-
i0.ɵɵelementStart(
|
|
358
|
-
i0.ɵɵtext(
|
|
359
|
+
i0.ɵɵelementStart(44, "div", 34)(45, "span", 35);
|
|
360
|
+
i0.ɵɵtext(46);
|
|
359
361
|
i0.ɵɵelementEnd()()();
|
|
360
|
-
i0.ɵɵelementStart(
|
|
361
|
-
i0.ɵɵelement(
|
|
362
|
+
i0.ɵɵelementStart(47, "div", 36)(48, "div", 25);
|
|
363
|
+
i0.ɵɵelement(49, "i", 37);
|
|
362
364
|
i0.ɵɵelementEnd();
|
|
363
|
-
i0.ɵɵelementStart(
|
|
364
|
-
i0.ɵɵtext(
|
|
365
|
+
i0.ɵɵelementStart(50, "div", 27)(51, "div", 28);
|
|
366
|
+
i0.ɵɵtext(52);
|
|
365
367
|
i0.ɵɵelementEnd();
|
|
366
|
-
i0.ɵɵelementStart(
|
|
367
|
-
i0.ɵɵtext(
|
|
368
|
+
i0.ɵɵelementStart(53, "div", 29);
|
|
369
|
+
i0.ɵɵtext(54, "Types");
|
|
368
370
|
i0.ɵɵelementEnd()()();
|
|
369
|
-
i0.ɵɵelementStart(
|
|
370
|
-
i0.ɵɵlistener("click", function
|
|
371
|
-
i0.ɵɵelementStart(
|
|
372
|
-
i0.ɵɵelement(
|
|
371
|
+
i0.ɵɵelementStart(55, "div", 24);
|
|
372
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Template_div_click_55_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.viewExpiringCredentials()); });
|
|
373
|
+
i0.ɵɵelementStart(56, "div", 25);
|
|
374
|
+
i0.ɵɵelement(57, "i", 38);
|
|
373
375
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(
|
|
375
|
-
i0.ɵɵtext(
|
|
376
|
+
i0.ɵɵelementStart(58, "div", 27)(59, "div", 28);
|
|
377
|
+
i0.ɵɵtext(60);
|
|
376
378
|
i0.ɵɵelementEnd();
|
|
377
|
-
i0.ɵɵelementStart(
|
|
378
|
-
i0.ɵɵtext(
|
|
379
|
+
i0.ɵɵelementStart(61, "div", 29);
|
|
380
|
+
i0.ɵɵtext(62, "Expiring Soon");
|
|
379
381
|
i0.ɵɵelementEnd()();
|
|
380
|
-
i0.ɵɵ
|
|
382
|
+
i0.ɵɵconditionalCreate(63, CredentialsOverviewResourceComponent_Conditional_2_Conditional_63_Template, 2, 0, "div", 39);
|
|
381
383
|
i0.ɵɵelementEnd();
|
|
382
|
-
i0.ɵɵelementStart(
|
|
383
|
-
i0.ɵɵelement(
|
|
384
|
+
i0.ɵɵelementStart(64, "div", 36)(65, "div", 25);
|
|
385
|
+
i0.ɵɵelement(66, "i", 40);
|
|
384
386
|
i0.ɵɵelementEnd();
|
|
385
|
-
i0.ɵɵelementStart(
|
|
386
|
-
i0.ɵɵtext(
|
|
387
|
+
i0.ɵɵelementStart(67, "div", 27)(68, "div", 28);
|
|
388
|
+
i0.ɵɵtext(69);
|
|
387
389
|
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵelementStart(
|
|
389
|
-
i0.ɵɵtext(
|
|
390
|
+
i0.ɵɵelementStart(70, "div", 29);
|
|
391
|
+
i0.ɵɵtext(71, "Expired");
|
|
390
392
|
i0.ɵɵelementEnd()()()();
|
|
391
|
-
i0.ɵɵelementStart(
|
|
392
|
-
i0.ɵɵelement(
|
|
393
|
-
i0.ɵɵelementStart(
|
|
394
|
-
i0.ɵɵtext(
|
|
393
|
+
i0.ɵɵelementStart(72, "div", 41)(73, "div", 42)(74, "div", 43)(75, "div", 44);
|
|
394
|
+
i0.ɵɵelement(76, "i", 45);
|
|
395
|
+
i0.ɵɵelementStart(77, "span");
|
|
396
|
+
i0.ɵɵtext(78, "Credentials by Category");
|
|
395
397
|
i0.ɵɵelementEnd()();
|
|
396
|
-
i0.ɵɵelementStart(
|
|
397
|
-
i0.ɵɵtext(
|
|
398
|
+
i0.ɵɵelementStart(79, "span", 46);
|
|
399
|
+
i0.ɵɵtext(80, "Click to filter by category");
|
|
398
400
|
i0.ɵɵelementEnd()();
|
|
399
|
-
i0.ɵɵelementStart(
|
|
400
|
-
i0.ɵɵ
|
|
401
|
+
i0.ɵɵelementStart(81, "div", 47);
|
|
402
|
+
i0.ɵɵconditionalCreate(82, CredentialsOverviewResourceComponent_Conditional_2_Conditional_82_Template, 14, 1, "div", 48);
|
|
403
|
+
i0.ɵɵconditionalCreate(83, CredentialsOverviewResourceComponent_Conditional_2_Conditional_83_Template, 4, 0, "div", 49);
|
|
401
404
|
i0.ɵɵelementEnd()();
|
|
402
|
-
i0.ɵɵelementStart(
|
|
403
|
-
i0.ɵɵelement(
|
|
404
|
-
i0.ɵɵelementStart(
|
|
405
|
-
i0.ɵɵtext(
|
|
405
|
+
i0.ɵɵelementStart(84, "div", 50)(85, "div", 43)(86, "div", 44);
|
|
406
|
+
i0.ɵɵelement(87, "i", 37);
|
|
407
|
+
i0.ɵɵelementStart(88, "span");
|
|
408
|
+
i0.ɵɵtext(89, "Top Credential Types");
|
|
406
409
|
i0.ɵɵelementEnd()();
|
|
407
|
-
i0.ɵɵelementStart(
|
|
408
|
-
i0.ɵɵlistener("click", function
|
|
409
|
-
i0.ɵɵtext(
|
|
410
|
-
i0.ɵɵelement(
|
|
410
|
+
i0.ɵɵelementStart(90, "button", 51);
|
|
411
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Template_button_click_90_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.viewAllTypes()); });
|
|
412
|
+
i0.ɵɵtext(91, " View All ");
|
|
413
|
+
i0.ɵɵelement(92, "i", 31);
|
|
411
414
|
i0.ɵɵelementEnd()();
|
|
412
|
-
i0.ɵɵelementStart(
|
|
413
|
-
i0.ɵɵ
|
|
415
|
+
i0.ɵɵelementStart(93, "div", 47);
|
|
416
|
+
i0.ɵɵconditionalCreate(94, CredentialsOverviewResourceComponent_Conditional_2_Conditional_94_Template, 3, 0, "div", 52);
|
|
417
|
+
i0.ɵɵconditionalCreate(95, CredentialsOverviewResourceComponent_Conditional_2_Conditional_95_Template, 4, 0, "div", 49);
|
|
414
418
|
i0.ɵɵelementEnd()();
|
|
415
|
-
i0.ɵɵelementStart(
|
|
416
|
-
i0.ɵɵelement(
|
|
417
|
-
i0.ɵɵelementStart(
|
|
418
|
-
i0.ɵɵtext(
|
|
419
|
+
i0.ɵɵelementStart(96, "div", 53)(97, "div", 43)(98, "div", 44);
|
|
420
|
+
i0.ɵɵelement(99, "i", 54);
|
|
421
|
+
i0.ɵɵelementStart(100, "span");
|
|
422
|
+
i0.ɵɵtext(101, "Recent Activity");
|
|
419
423
|
i0.ɵɵelementEnd()();
|
|
420
|
-
i0.ɵɵelementStart(
|
|
421
|
-
i0.ɵɵlistener("click", function
|
|
422
|
-
i0.ɵɵtext(
|
|
423
|
-
i0.ɵɵelement(
|
|
424
|
+
i0.ɵɵelementStart(102, "button", 51);
|
|
425
|
+
i0.ɵɵlistener("click", function CredentialsOverviewResourceComponent_Conditional_2_Template_button_click_102_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.viewAuditLog()); });
|
|
426
|
+
i0.ɵɵtext(103, " View All ");
|
|
427
|
+
i0.ɵɵelement(104, "i", 31);
|
|
424
428
|
i0.ɵɵelementEnd()();
|
|
425
|
-
i0.ɵɵelementStart(
|
|
426
|
-
i0.ɵɵ
|
|
429
|
+
i0.ɵɵelementStart(105, "div", 47);
|
|
430
|
+
i0.ɵɵconditionalCreate(106, CredentialsOverviewResourceComponent_Conditional_2_Conditional_106_Template, 3, 0, "div", 55);
|
|
431
|
+
i0.ɵɵconditionalCreate(107, CredentialsOverviewResourceComponent_Conditional_2_Conditional_107_Template, 4, 0, "div", 49);
|
|
427
432
|
i0.ɵɵelementEnd()()();
|
|
428
|
-
i0.ɵɵ
|
|
429
|
-
i0.ɵɵelementStart(
|
|
430
|
-
i0.ɵɵelement(
|
|
431
|
-
i0.ɵɵelementStart(
|
|
432
|
-
i0.ɵɵtext(
|
|
433
|
+
i0.ɵɵconditionalCreate(108, CredentialsOverviewResourceComponent_Conditional_2_Conditional_108_Template, 20, 0, "div", 56);
|
|
434
|
+
i0.ɵɵelementStart(109, "div", 57);
|
|
435
|
+
i0.ɵɵelement(110, "i", 58);
|
|
436
|
+
i0.ɵɵelementStart(111, "div", 59)(112, "strong");
|
|
437
|
+
i0.ɵɵtext(113, "Security Note:");
|
|
433
438
|
i0.ɵɵelementEnd();
|
|
434
|
-
i0.ɵɵtext(
|
|
439
|
+
i0.ɵɵtext(114, " All credential values are encrypted. Access to credentials is logged in the audit trail for compliance and security monitoring. ");
|
|
435
440
|
i0.ɵɵelementEnd()();
|
|
436
|
-
i0.ɵɵelementContainerEnd();
|
|
437
441
|
} if (rf & 2) {
|
|
438
442
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
439
|
-
i0.ɵɵadvance(
|
|
440
|
-
i0.ɵɵ
|
|
443
|
+
i0.ɵɵadvance(9);
|
|
444
|
+
i0.ɵɵconditional(ctx_r1.UserCanCreateCredentials ? 9 : -1);
|
|
441
445
|
i0.ɵɵadvance();
|
|
442
446
|
i0.ɵɵproperty("ngClass", ctx_r1.getHealthClass());
|
|
443
447
|
i0.ɵɵadvance(5);
|
|
@@ -447,11 +451,11 @@ function CredentialsOverviewResourceComponent_ng_container_2_Template(rf, ctx) {
|
|
|
447
451
|
i0.ɵɵadvance(3);
|
|
448
452
|
i0.ɵɵtextInterpolate(ctx_r1.getHealthLabel());
|
|
449
453
|
i0.ɵɵadvance(2);
|
|
450
|
-
i0.ɵɵ
|
|
454
|
+
i0.ɵɵconditional(ctx_r1.expiredCredentials > 0 ? 22 : -1);
|
|
451
455
|
i0.ɵɵadvance();
|
|
452
|
-
i0.ɵɵ
|
|
456
|
+
i0.ɵɵconditional(ctx_r1.expiringSoonCount > 0 ? 23 : -1);
|
|
453
457
|
i0.ɵɵadvance();
|
|
454
|
-
i0.ɵɵ
|
|
458
|
+
i0.ɵɵconditional(ctx_r1.expiredCredentials === 0 && ctx_r1.expiringSoonCount === 0 ? 24 : -1);
|
|
455
459
|
i0.ɵɵadvance(7);
|
|
456
460
|
i0.ɵɵtextInterpolate(ctx_r1.totalCredentials);
|
|
457
461
|
i0.ɵɵadvance(10);
|
|
@@ -465,29 +469,26 @@ function CredentialsOverviewResourceComponent_ng_container_2_Template(rf, ctx) {
|
|
|
465
469
|
i0.ɵɵadvance(5);
|
|
466
470
|
i0.ɵɵtextInterpolate(ctx_r1.expiringSoonCount);
|
|
467
471
|
i0.ɵɵadvance(3);
|
|
468
|
-
i0.ɵɵ
|
|
472
|
+
i0.ɵɵconditional(ctx_r1.expiringSoonCount > 0 ? 63 : -1);
|
|
469
473
|
i0.ɵɵadvance();
|
|
470
474
|
i0.ɵɵclassProp("danger", ctx_r1.expiredCredentials > 0);
|
|
471
475
|
i0.ɵɵadvance(5);
|
|
472
476
|
i0.ɵɵtextInterpolate(ctx_r1.expiredCredentials);
|
|
473
477
|
i0.ɵɵadvance(13);
|
|
474
|
-
i0.ɵɵ
|
|
478
|
+
i0.ɵɵconditional(ctx_r1.categoryStats.length > 0 ? 82 : -1);
|
|
475
479
|
i0.ɵɵadvance();
|
|
476
|
-
i0.ɵɵ
|
|
480
|
+
i0.ɵɵconditional(ctx_r1.categoryStats.length === 0 ? 83 : -1);
|
|
477
481
|
i0.ɵɵadvance(11);
|
|
478
|
-
i0.ɵɵ
|
|
482
|
+
i0.ɵɵconditional(ctx_r1.typeStats.length > 0 ? 94 : -1);
|
|
479
483
|
i0.ɵɵadvance();
|
|
480
|
-
i0.ɵɵ
|
|
484
|
+
i0.ɵɵconditional(ctx_r1.typeStats.length === 0 ? 95 : -1);
|
|
481
485
|
i0.ɵɵadvance(11);
|
|
482
|
-
i0.ɵɵ
|
|
486
|
+
i0.ɵɵconditional(ctx_r1.recentActivity.length > 0 ? 106 : -1);
|
|
483
487
|
i0.ɵɵadvance();
|
|
484
|
-
i0.ɵɵ
|
|
488
|
+
i0.ɵɵconditional(ctx_r1.recentActivity.length === 0 ? 107 : -1);
|
|
485
489
|
i0.ɵɵadvance();
|
|
486
|
-
i0.ɵɵ
|
|
490
|
+
i0.ɵɵconditional(ctx_r1.UserCanCreateCredentials ? 108 : -1);
|
|
487
491
|
} }
|
|
488
|
-
export function LoadCredentialsOverviewResource() {
|
|
489
|
-
// Prevents tree-shaking
|
|
490
|
-
}
|
|
491
492
|
let CredentialsOverviewResourceComponent = class CredentialsOverviewResourceComponent extends BaseResourceComponent {
|
|
492
493
|
cdr;
|
|
493
494
|
navigationService;
|
|
@@ -913,16 +914,17 @@ let CredentialsOverviewResourceComponent = class CredentialsOverviewResourceComp
|
|
|
913
914
|
return offset;
|
|
914
915
|
}
|
|
915
916
|
static ɵfac = function CredentialsOverviewResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CredentialsOverviewResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.NavigationService)); };
|
|
916
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CredentialsOverviewResourceComponent, selectors: [["mj-credentials-overview-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [[1, "overview-container"], ["text", "Loading overview..."
|
|
917
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CredentialsOverviewResourceComponent, selectors: [["mj-credentials-overview-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [[1, "overview-container"], ["text", "Loading overview..."], [1, "overview-header"], [1, "header-left"], [1, "overview-title"], [1, "overview-subtitle"], [1, "header-actions"], ["title", "Refresh", 1, "btn-refresh", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "btn-primary"], [1, "health-banner", 3, "ngClass"], [1, "health-score-container"], [1, "health-score-ring"], ["viewBox", "0 0 36 36", 1, "circular-chart"], ["d", "M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831", 1, "circle-bg"], ["d", "M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831", 1, "circle"], [1, "health-score-value"], [1, "health-info"], [1, "health-label"], [1, "health-details"], [1, "health-alert"], [1, "health-warning-text"], [1, "health-ok"], [1, "kpi-row"], [1, "kpi-card", "clickable", 3, "click"], [1, "kpi-icon"], [1, "fa-solid", "fa-key"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-trend"], [1, "fa-solid", "fa-arrow-right"], [1, "kpi-card", "active", "clickable", 3, "click"], [1, "fa-solid", "fa-check-circle"], [1, "kpi-trend", "success"], [1, "percentage"], [1, "kpi-card"], [1, "fa-solid", "fa-cubes"], [1, "fa-solid", "fa-clock"], [1, "kpi-trend", "warning"], [1, "fa-solid", "fa-circle-xmark"], [1, "content-grid"], [1, "panel", "category-panel"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-chart-pie"], [1, "panel-subtitle"], [1, "panel-body"], [1, "category-chart"], [1, "empty-state"], [1, "panel", "types-panel"], [1, "panel-action", 3, "click"], [1, "type-list"], [1, "panel", "activity-panel"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "activity-list"], [1, "quick-actions"], [1, "security-notice"], [1, "fa-solid", "fa-shield-check"], [1, "notice-content"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-circle-exclamation"], [1, "health-warning-text", 3, "click"], [1, "donut-chart-container"], ["viewBox", "0 0 100 100", 1, "donut-chart"], ["cx", "50", "cy", "50", "r", "40", "fill", "none", "stroke", "#e5e7eb", "stroke-width", "12"], [1, "donut-center"], [1, "donut-total"], [1, "donut-label"], [1, "category-legend"], [1, "legend-item"], ["cx", "50", "cy", "50", "r", "40", "fill", "none", "stroke-width", "12", 1, "donut-segment", 3, "click"], [1, "legend-item", 3, "click"], [1, "legend-color"], [1, "legend-info"], [1, "legend-name"], [1, "legend-value"], [1, "fa-solid", "fa-chevron-right", "legend-arrow"], [1, "fa-solid", "fa-folder-open"], [1, "type-item"], [1, "type-item", 3, "click"], [1, "type-info"], [1, "type-name"], [1, "type-category"], [1, "type-stats"], [1, "type-count"], [1, "count-value"], [1, "count-label"], [1, "type-bar"], [1, "type-bar-fill"], [1, "type-indicators"], ["title", "Active", 1, "indicator", "active"], ["title", "Expiring Soon", 1, "indicator", "warning"], [1, "fa-solid", "fa-circle"], [1, "fa-solid", "fa-shapes"], [1, "activity-item"], [1, "activity-item", 3, "click"], [1, "activity-icon", 3, "ngClass"], [1, "activity-info"], [1, "activity-name"], [1, "activity-meta"], [1, "activity-type"], [1, "activity-action"], [1, "activity-user"], [1, "activity-time"], [1, "fa-solid", "fa-inbox"], [1, "quick-actions-title"], [1, "quick-actions-grid"], [1, "quick-action", 3, "click"], [1, "fa-solid", "fa-folder-tree"], [1, "fa-solid", "fa-clipboard-list"]], template: function CredentialsOverviewResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
917
918
|
i0.ɵɵelementStart(0, "div", 0);
|
|
918
|
-
i0.ɵɵ
|
|
919
|
+
i0.ɵɵconditionalCreate(1, CredentialsOverviewResourceComponent_Conditional_1_Template, 1, 0, "mj-loading", 1);
|
|
920
|
+
i0.ɵɵconditionalCreate(2, CredentialsOverviewResourceComponent_Conditional_2_Template, 115, 26);
|
|
919
921
|
i0.ɵɵelementEnd();
|
|
920
922
|
} if (rf & 2) {
|
|
921
923
|
i0.ɵɵadvance();
|
|
922
|
-
i0.ɵɵ
|
|
924
|
+
i0.ɵɵconditional(ctx.isLoading ? 1 : -1);
|
|
923
925
|
i0.ɵɵadvance();
|
|
924
|
-
i0.ɵɵ
|
|
925
|
-
} }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i3.LoadingComponent], styles: [".overview-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.overview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.overview-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0 0 4px 0;\n}\n\n.overview-subtitle[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n}\n\n.btn-refresh[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-refresh[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.btn-refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--text-secondary, #6b7280);\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n\n\n.health-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border: 1px solid #a7f3d0;\n border-radius: 16px;\n margin-bottom: 24px;\n}\n\n.health-banner.health-warning[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);\n border-color: #fcd34d;\n}\n\n.health-banner.health-critical[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border-color: #fca5a5;\n}\n\n.health-score-container[_ngcontent-%COMP%] {\n margin-right: 24px;\n}\n\n.health-score-ring[_ngcontent-%COMP%] {\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.circular-chart[_ngcontent-%COMP%] {\n display: block;\n margin: 0 auto;\n max-height: 80px;\n transform: rotate(-90deg);\n}\n\n.circle-bg[_ngcontent-%COMP%] {\n fill: none;\n stroke: #e5e7eb;\n stroke-width: 3.8;\n}\n\n.circle[_ngcontent-%COMP%] {\n fill: none;\n stroke-width: 3.8;\n stroke-linecap: round;\n stroke: #10b981;\n animation: _ngcontent-%COMP%_progress 1s ease-out forwards;\n}\n\n.health-banner.health-warning[_ngcontent-%COMP%] .circle[_ngcontent-%COMP%] {\n stroke: #f59e0b;\n}\n\n.health-banner.health-critical[_ngcontent-%COMP%] .circle[_ngcontent-%COMP%] {\n stroke: #ef4444;\n}\n\n@keyframes _ngcontent-%COMP%_progress {\n 0% {\n stroke-dasharray: 0 100;\n }\n}\n\n.health-score-value[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 20px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.health-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.health-label[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: #059669;\n margin-bottom: 4px;\n}\n\n.health-banner.health-warning[_ngcontent-%COMP%] .health-label[_ngcontent-%COMP%] {\n color: #d97706;\n}\n\n.health-banner.health-critical[_ngcontent-%COMP%] .health-label[_ngcontent-%COMP%] {\n color: #dc2626;\n}\n\n.health-details[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.health-alert[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #dc2626;\n font-weight: 500;\n font-size: 14px;\n}\n\n.health-warning-text[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #d97706;\n font-weight: 500;\n font-size: 14px;\n cursor: pointer;\n}\n\n.health-warning-text[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.health-ok[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #059669;\n font-weight: 500;\n font-size: 14px;\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n\n.kpi-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.kpi-card.clickable[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n}\n\n.kpi-card.active[_ngcontent-%COMP%] .kpi-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n}\n\n.kpi-card.warning[_ngcontent-%COMP%] .kpi-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.kpi-card.danger[_ngcontent-%COMP%] .kpi-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n border-radius: 10px;\n margin-right: 14px;\n flex-shrink: 0;\n}\n\n.kpi-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: white;\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1.2;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n}\n\n.kpi-trend[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-left: 8px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.kpi-trend.success[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n.kpi-trend.warning[_ngcontent-%COMP%] {\n color: #f59e0b;\n}\n\n.kpi-trend[_ngcontent-%COMP%] .percentage[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.content-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.category-panel[_ngcontent-%COMP%] {\n grid-row: span 2;\n}\n\n.panel[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color, #6366f1);\n}\n\n.panel-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.panel-action[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.panel-action[_ngcontent-%COMP%]:hover {\n background: var(--accent-color, #6366f1);\n border-color: var(--accent-color, #6366f1);\n color: white;\n}\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n\n\n.category-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n}\n\n.donut-chart-container[_ngcontent-%COMP%] {\n position: relative;\n width: 200px;\n height: 200px;\n margin: 0 auto;\n}\n\n.donut-chart[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.donut-segment[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.donut-segment[_ngcontent-%COMP%]:hover {\n opacity: 0.8;\n}\n\n.donut-center[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n\n.donut-total[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.donut-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n\n\n.category-legend[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.legend-item[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n transform: translateX(4px);\n}\n\n.legend-color[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n border-radius: 4px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.legend-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.legend-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.legend-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-arrow[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 10px;\n}\n\n\n\n.type-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-category[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 2px;\n}\n\n.type-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.type-count[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: 4px;\n}\n\n.count-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.count-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.type-bar[_ngcontent-%COMP%] {\n width: 100px;\n height: 4px;\n background: #e5e7eb;\n border-radius: 2px;\n overflow: hidden;\n}\n\n.type-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, #6366f1, #8b5cf6);\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n.type-indicators[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n}\n\n.indicator.active[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n.indicator.warning[_ngcontent-%COMP%] {\n color: #f59e0b;\n}\n\n.indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 6px;\n}\n\n\n\n.activity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.activity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.activity-item[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.activity-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #e0e7ff);\n border-radius: 6px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.activity-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.activity-icon.action-created[_ngcontent-%COMP%] {\n background: #d1fae5;\n}\n\n.activity-icon.action-created[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #059669;\n}\n\n.activity-icon.action-updated[_ngcontent-%COMP%] {\n background: #e0e7ff;\n}\n\n.activity-icon.action-updated[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6366f1;\n}\n\n.activity-icon.action-accessed[_ngcontent-%COMP%] {\n background: #fef3c7;\n}\n\n.activity-icon.action-accessed[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #d97706;\n}\n\n.activity-icon.action-rotated[_ngcontent-%COMP%] {\n background: #dbeafe;\n}\n\n.activity-icon.action-rotated[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n.activity-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.activity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.activity-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.activity-type[_ngcontent-%COMP%] {\n background: var(--tag-background, #e5e7eb);\n padding: 1px 6px;\n border-radius: 4px;\n}\n\n.activity-action[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.activity-time[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n white-space: nowrap;\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.quick-actions-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin-bottom: 12px;\n}\n\n.quick-actions-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n}\n\n.quick-action[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.quick-action[_ngcontent-%COMP%]:hover {\n border-color: var(--accent-color, #6366f1);\n background: #f5f3ff;\n transform: translateY(-2px);\n}\n\n.quick-action[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--accent-color, #6366f1);\n}\n\n.quick-action[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--text-secondary, #6b7280);\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n\n\n.security-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n padding: 16px 20px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-radius: 12px;\n border: 1px solid #bfdbfe;\n}\n\n.security-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #3b82f6;\n margin-right: 12px;\n margin-top: 2px;\n}\n\n.notice-content[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #1e40af;\n line-height: 1.5;\n}\n\n.notice-content[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n@media (max-width: 1024px) {\n .content-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .category-panel[_ngcontent-%COMP%] {\n grid-row: auto;\n }\n\n .category-chart[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .donut-chart-container[_ngcontent-%COMP%] {\n width: 160px;\n height: 160px;\n }\n\n .category-legend[_ngcontent-%COMP%] {\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .overview-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .overview-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: flex-end;\n }\n\n .health-banner[_ngcontent-%COMP%] {\n flex-direction: column;\n text-align: center;\n }\n\n .health-score-container[_ngcontent-%COMP%] {\n margin-right: 0;\n margin-bottom: 16px;\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .category-chart[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .quick-actions-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}"], changeDetection: 0 });
|
|
926
|
+
i0.ɵɵconditional(!ctx.isLoading ? 2 : -1);
|
|
927
|
+
} }, dependencies: [i2.NgClass, i3.LoadingComponent], styles: [".overview-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.overview-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.overview-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0 0 4px 0;\n}\n\n.overview-subtitle[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n}\n\n.btn-refresh[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-refresh[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.btn-refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--text-secondary, #6b7280);\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n\n\n.health-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border: 1px solid #a7f3d0;\n border-radius: 16px;\n margin-bottom: 24px;\n}\n\n.health-banner.health-warning[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);\n border-color: #fcd34d;\n}\n\n.health-banner.health-critical[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border-color: #fca5a5;\n}\n\n.health-score-container[_ngcontent-%COMP%] {\n margin-right: 24px;\n}\n\n.health-score-ring[_ngcontent-%COMP%] {\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.circular-chart[_ngcontent-%COMP%] {\n display: block;\n margin: 0 auto;\n max-height: 80px;\n transform: rotate(-90deg);\n}\n\n.circle-bg[_ngcontent-%COMP%] {\n fill: none;\n stroke: #e5e7eb;\n stroke-width: 3.8;\n}\n\n.circle[_ngcontent-%COMP%] {\n fill: none;\n stroke-width: 3.8;\n stroke-linecap: round;\n stroke: #10b981;\n animation: _ngcontent-%COMP%_progress 1s ease-out forwards;\n}\n\n.health-banner.health-warning[_ngcontent-%COMP%] .circle[_ngcontent-%COMP%] {\n stroke: #f59e0b;\n}\n\n.health-banner.health-critical[_ngcontent-%COMP%] .circle[_ngcontent-%COMP%] {\n stroke: #ef4444;\n}\n\n@keyframes _ngcontent-%COMP%_progress {\n 0% {\n stroke-dasharray: 0 100;\n }\n}\n\n.health-score-value[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 20px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.health-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.health-label[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: #059669;\n margin-bottom: 4px;\n}\n\n.health-banner.health-warning[_ngcontent-%COMP%] .health-label[_ngcontent-%COMP%] {\n color: #d97706;\n}\n\n.health-banner.health-critical[_ngcontent-%COMP%] .health-label[_ngcontent-%COMP%] {\n color: #dc2626;\n}\n\n.health-details[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.health-alert[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #dc2626;\n font-weight: 500;\n font-size: 14px;\n}\n\n.health-warning-text[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #d97706;\n font-weight: 500;\n font-size: 14px;\n cursor: pointer;\n}\n\n.health-warning-text[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.health-ok[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #059669;\n font-weight: 500;\n font-size: 14px;\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n\n.kpi-card.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.kpi-card.clickable[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n}\n\n.kpi-card.active[_ngcontent-%COMP%] .kpi-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n}\n\n.kpi-card.warning[_ngcontent-%COMP%] .kpi-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.kpi-card.danger[_ngcontent-%COMP%] .kpi-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n border-radius: 10px;\n margin-right: 14px;\n flex-shrink: 0;\n}\n\n.kpi-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: white;\n}\n\n.kpi-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1.2;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n}\n\n.kpi-trend[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-left: 8px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.kpi-trend.success[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n.kpi-trend.warning[_ngcontent-%COMP%] {\n color: #f59e0b;\n}\n\n.kpi-trend[_ngcontent-%COMP%] .percentage[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.content-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.category-panel[_ngcontent-%COMP%] {\n grid-row: span 2;\n}\n\n.panel[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color, #6366f1);\n}\n\n.panel-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.panel-action[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.panel-action[_ngcontent-%COMP%]:hover {\n background: var(--accent-color, #6366f1);\n border-color: var(--accent-color, #6366f1);\n color: white;\n}\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n\n\n.category-chart[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n}\n\n.donut-chart-container[_ngcontent-%COMP%] {\n position: relative;\n width: 200px;\n height: 200px;\n margin: 0 auto;\n}\n\n.donut-chart[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.donut-segment[_ngcontent-%COMP%] {\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.donut-segment[_ngcontent-%COMP%]:hover {\n opacity: 0.8;\n}\n\n.donut-center[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n\n.donut-total[_ngcontent-%COMP%] {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.donut-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n\n\n.category-legend[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.legend-item[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n transform: translateX(4px);\n}\n\n.legend-color[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n border-radius: 4px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.legend-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.legend-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.legend-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-arrow[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #9ca3af);\n font-size: 10px;\n}\n\n\n\n.type-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-category[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 2px;\n}\n\n.type-stats[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.type-count[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: 4px;\n}\n\n.count-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.count-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.type-bar[_ngcontent-%COMP%] {\n width: 100px;\n height: 4px;\n background: #e5e7eb;\n border-radius: 2px;\n overflow: hidden;\n}\n\n.type-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: linear-gradient(90deg, #6366f1, #8b5cf6);\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n.type-indicators[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n}\n\n.indicator.active[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n.indicator.warning[_ngcontent-%COMP%] {\n color: #f59e0b;\n}\n\n.indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 6px;\n}\n\n\n\n.activity-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.activity-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.activity-item[_ngcontent-%COMP%]:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.activity-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #e0e7ff);\n border-radius: 6px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.activity-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.activity-icon.action-created[_ngcontent-%COMP%] {\n background: #d1fae5;\n}\n\n.activity-icon.action-created[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #059669;\n}\n\n.activity-icon.action-updated[_ngcontent-%COMP%] {\n background: #e0e7ff;\n}\n\n.activity-icon.action-updated[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6366f1;\n}\n\n.activity-icon.action-accessed[_ngcontent-%COMP%] {\n background: #fef3c7;\n}\n\n.activity-icon.action-accessed[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #d97706;\n}\n\n.activity-icon.action-rotated[_ngcontent-%COMP%] {\n background: #dbeafe;\n}\n\n.activity-icon.action-rotated[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n.activity-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.activity-name[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.activity-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.activity-type[_ngcontent-%COMP%] {\n background: var(--tag-background, #e5e7eb);\n padding: 1px 6px;\n border-radius: 4px;\n}\n\n.activity-action[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.activity-time[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n white-space: nowrap;\n}\n\n\n\n.quick-actions[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.quick-actions-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin-bottom: 12px;\n}\n\n.quick-actions-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n}\n\n.quick-action[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.quick-action[_ngcontent-%COMP%]:hover {\n border-color: var(--accent-color, #6366f1);\n background: #f5f3ff;\n transform: translateY(-2px);\n}\n\n.quick-action[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--accent-color, #6366f1);\n}\n\n.quick-action[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--text-secondary, #6b7280);\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n\n\n.security-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n padding: 16px 20px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-radius: 12px;\n border: 1px solid #bfdbfe;\n}\n\n.security-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #3b82f6;\n margin-right: 12px;\n margin-top: 2px;\n}\n\n.notice-content[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #1e40af;\n line-height: 1.5;\n}\n\n.notice-content[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n@media (max-width: 1024px) {\n .content-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .category-panel[_ngcontent-%COMP%] {\n grid-row: auto;\n }\n\n .category-chart[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .donut-chart-container[_ngcontent-%COMP%] {\n width: 160px;\n height: 160px;\n }\n\n .category-legend[_ngcontent-%COMP%] {\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .overview-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .overview-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: flex-end;\n }\n\n .health-banner[_ngcontent-%COMP%] {\n flex-direction: column;\n text-align: center;\n }\n\n .health-score-container[_ngcontent-%COMP%] {\n margin-right: 0;\n margin-bottom: 16px;\n }\n\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .category-chart[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .quick-actions-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}"], changeDetection: 0 });
|
|
926
928
|
};
|
|
927
929
|
CredentialsOverviewResourceComponent = __decorate([
|
|
928
930
|
RegisterClass(BaseResourceComponent, 'CredentialsOverviewResource')
|
|
@@ -930,7 +932,7 @@ CredentialsOverviewResourceComponent = __decorate([
|
|
|
930
932
|
export { CredentialsOverviewResourceComponent };
|
|
931
933
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsOverviewResourceComponent, [{
|
|
932
934
|
type: Component,
|
|
933
|
-
args: [{ selector: 'mj-credentials-overview-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"overview-container\">\n <mj-loading *ngIf=\"isLoading\" text=\"Loading overview...\"></mj-loading>\n\n <ng-container *ngIf=\"!isLoading\">\n <!-- Header with Actions -->\n <div class=\"overview-header\">\n <div class=\"header-left\">\n <h2 class=\"overview-title\">Credential Overview</h2>\n <p class=\"overview-subtitle\">Monitor and manage your organization's credentials</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-refresh\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n <button class=\"btn-primary\" *ngIf=\"UserCanCreateCredentials\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Credential</span>\n </button>\n </div>\n </div>\n\n <!-- Health Score Banner -->\n <div class=\"health-banner\" [ngClass]=\"getHealthClass()\">\n <div class=\"health-score-container\">\n <div class=\"health-score-ring\">\n <svg viewBox=\"0 0 36 36\" class=\"circular-chart\">\n <path class=\"circle-bg\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <path class=\"circle\"\n [attr.stroke-dasharray]=\"getHealthScore() + ', 100'\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n </svg>\n <div class=\"health-score-value\">{{getHealthScore()}}</div>\n </div>\n </div>\n <div class=\"health-info\">\n <div class=\"health-label\">{{getHealthLabel()}}</div>\n <div class=\"health-details\">\n <span *ngIf=\"expiredCredentials > 0\" class=\"health-alert\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{expiredCredentials}} expired\n </span>\n <span *ngIf=\"expiringSoonCount > 0\" class=\"health-warning-text\" (click)=\"viewExpiringCredentials()\">\n <i class=\"fa-solid fa-clock\"></i>\n {{expiringSoonCount}} expiring soon\n </span>\n <span *ngIf=\"expiredCredentials === 0 && expiringSoonCount === 0\" class=\"health-ok\">\n <i class=\"fa-solid fa-check-circle\"></i>\n All credentials healthy\n </span>\n </div>\n </div>\n </div>\n\n <!-- KPI Cards Row -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card clickable\" (click)=\"viewAllCredentials()\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{totalCredentials}}</div>\n <div class=\"kpi-label\">Total Credentials</div>\n </div>\n <div class=\"kpi-trend\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n\n <div class=\"kpi-card active clickable\" (click)=\"viewAllCredentials()\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{activeCredentials}}</div>\n <div class=\"kpi-label\">Active</div>\n </div>\n <div class=\"kpi-trend success\">\n <span class=\"percentage\">{{totalCredentials > 0 ? (activeCredentials / totalCredentials * 100).toFixed(0) : 0}}%</span>\n </div>\n </div>\n\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{credentialTypes}}</div>\n <div class=\"kpi-label\">Types</div>\n </div>\n </div>\n\n <div class=\"kpi-card clickable\" [class.warning]=\"expiringSoonCount > 0\" (click)=\"viewExpiringCredentials()\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-clock\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{expiringSoonCount}}</div>\n <div class=\"kpi-label\">Expiring Soon</div>\n </div>\n <div class=\"kpi-trend warning\" *ngIf=\"expiringSoonCount > 0\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n\n <div class=\"kpi-card\" [class.danger]=\"expiredCredentials > 0\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{expiredCredentials}}</div>\n <div class=\"kpi-label\">Expired</div>\n </div>\n </div>\n </div>\n\n <!-- Content Grid -->\n <div class=\"content-grid\">\n <!-- Category Distribution Chart -->\n <div class=\"panel category-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-chart-pie\"></i>\n <span>Credentials by Category</span>\n </div>\n <span class=\"panel-subtitle\">Click to filter by category</span>\n </div>\n <div class=\"panel-body\">\n <div class=\"category-chart\" *ngIf=\"categoryStats.length > 0\">\n <!-- Visual Donut Chart -->\n <div class=\"donut-chart-container\">\n <svg viewBox=\"0 0 100 100\" class=\"donut-chart\">\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\" stroke=\"#e5e7eb\" stroke-width=\"12\"/>\n <ng-container *ngFor=\"let stat of categoryStats; let i = index\">\n <circle\n cx=\"50\" cy=\"50\" r=\"40\"\n fill=\"none\"\n [attr.stroke]=\"stat.color\"\n stroke-width=\"12\"\n [attr.stroke-dasharray]=\"stat.percentage * 2.51 + ' ' + (251 - stat.percentage * 2.51)\"\n [attr.stroke-dashoffset]=\"getDonutOffset(i)\"\n class=\"donut-segment\"\n (click)=\"onCategoryClick(stat)\"\n />\n </ng-container>\n </svg>\n <div class=\"donut-center\">\n <div class=\"donut-total\">{{totalCredentials}}</div>\n <div class=\"donut-label\">Total</div>\n </div>\n </div>\n <!-- Legend -->\n <div class=\"category-legend\">\n <div class=\"legend-item\" *ngFor=\"let stat of categoryStats\" (click)=\"onCategoryClick(stat)\">\n <div class=\"legend-color\" [style.backgroundColor]=\"stat.color\"></div>\n <div class=\"legend-info\">\n <div class=\"legend-name\">\n <i [class]=\"stat.iconClass\"></i>\n {{stat.category}}\n </div>\n <div class=\"legend-value\">{{stat.count}} ({{stat.percentage}}%)</div>\n </div>\n <i class=\"fa-solid fa-chevron-right legend-arrow\"></i>\n </div>\n </div>\n </div>\n <div class=\"empty-state\" *ngIf=\"categoryStats.length === 0\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <span>No credentials configured</span>\n </div>\n </div>\n </div>\n\n <!-- Types Breakdown -->\n <div class=\"panel types-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-cubes\"></i>\n <span>Top Credential Types</span>\n </div>\n <button class=\"panel-action\" (click)=\"viewAllTypes()\">\n View All <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n <div class=\"panel-body\">\n <div class=\"type-list\" *ngIf=\"typeStats.length > 0\">\n <div class=\"type-item\" *ngFor=\"let type of typeStats.slice(0, 6)\" (click)=\"onTypeClick(type)\">\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.typeName}}</div>\n <div class=\"type-category\">{{type.category}}</div>\n </div>\n <div class=\"type-stats\">\n <div class=\"type-count\">\n <span class=\"count-value\">{{type.credentialCount}}</span>\n <span class=\"count-label\">credentials</span>\n </div>\n <div class=\"type-bar\">\n <div class=\"type-bar-fill\"\n [style.width.%]=\"totalCredentials > 0 ? (type.credentialCount / totalCredentials * 100) : 0\">\n </div>\n </div>\n <div class=\"type-indicators\">\n <span class=\"indicator active\" *ngIf=\"type.activeCount > 0\" title=\"Active\">\n <i class=\"fa-solid fa-circle\"></i> {{type.activeCount}}\n </span>\n <span class=\"indicator warning\" *ngIf=\"type.expiringCount > 0\" title=\"Expiring Soon\">\n <i class=\"fa-solid fa-clock\"></i> {{type.expiringCount}}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"empty-state\" *ngIf=\"typeStats.length === 0\">\n <i class=\"fa-solid fa-shapes\"></i>\n <span>No credential types configured</span>\n </div>\n </div>\n </div>\n\n <!-- Recent Activity -->\n <div class=\"panel activity-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n <span>Recent Activity</span>\n </div>\n <button class=\"panel-action\" (click)=\"viewAuditLog()\">\n View All <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n <div class=\"panel-body\">\n <div class=\"activity-list\" *ngIf=\"recentActivity.length > 0\">\n <div class=\"activity-item\" *ngFor=\"let activity of recentActivity\" (click)=\"onActivityClick(activity)\">\n <div class=\"activity-icon\" [ngClass]=\"getActionClass(activity.action)\">\n <i [class]=\"getActionIcon(activity.action)\"></i>\n </div>\n <div class=\"activity-info\">\n <div class=\"activity-name\">{{activity.credentialName}}</div>\n <div class=\"activity-meta\">\n <span class=\"activity-type\">{{activity.typeName}}</span>\n <span class=\"activity-action\">{{activity.action}}</span>\n <span class=\"activity-user\" *ngIf=\"activity.user\">by {{activity.user}}</span>\n </div>\n </div>\n <div class=\"activity-time\">\n {{formatDate(activity.date)}}\n </div>\n </div>\n </div>\n <div class=\"empty-state\" *ngIf=\"recentActivity.length === 0\">\n <i class=\"fa-solid fa-inbox\"></i>\n <span>No recent activity</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Quick Actions -->\n <div class=\"quick-actions\" *ngIf=\"UserCanCreateCredentials\">\n <div class=\"quick-actions-title\">Quick Actions</div>\n <div class=\"quick-actions-grid\">\n <button class=\"quick-action\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Add Credential</span>\n </button>\n <button class=\"quick-action\" (click)=\"viewAllTypes()\">\n <i class=\"fa-solid fa-shapes\"></i>\n <span>Manage Types</span>\n </button>\n <button class=\"quick-action\" (click)=\"viewAllCategories()\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n <span>Categories</span>\n </button>\n <button class=\"quick-action\" (click)=\"viewAuditLog()\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n <span>Audit Log</span>\n </button>\n </div>\n </div>\n\n <!-- Security Notice -->\n <div class=\"security-notice\">\n <i class=\"fa-solid fa-shield-check\"></i>\n <div class=\"notice-content\">\n <strong>Security Note:</strong> All credential values are encrypted.\n Access to credentials is logged in the audit trail for compliance and security monitoring.\n </div>\n </div>\n </ng-container>\n</div>\n", styles: [".overview-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n/* Header */\n.overview-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.header-left {\n flex: 1;\n}\n\n.overview-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0 0 4px 0;\n}\n\n.overview-subtitle {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions {\n display: flex;\n gap: 12px;\n}\n\n.btn-refresh {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-refresh:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.btn-refresh i {\n color: var(--text-secondary, #6b7280);\n}\n\n.btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n/* Health Banner */\n.health-banner {\n display: flex;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border: 1px solid #a7f3d0;\n border-radius: 16px;\n margin-bottom: 24px;\n}\n\n.health-banner.health-warning {\n background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);\n border-color: #fcd34d;\n}\n\n.health-banner.health-critical {\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border-color: #fca5a5;\n}\n\n.health-score-container {\n margin-right: 24px;\n}\n\n.health-score-ring {\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.circular-chart {\n display: block;\n margin: 0 auto;\n max-height: 80px;\n transform: rotate(-90deg);\n}\n\n.circle-bg {\n fill: none;\n stroke: #e5e7eb;\n stroke-width: 3.8;\n}\n\n.circle {\n fill: none;\n stroke-width: 3.8;\n stroke-linecap: round;\n stroke: #10b981;\n animation: progress 1s ease-out forwards;\n}\n\n.health-banner.health-warning .circle {\n stroke: #f59e0b;\n}\n\n.health-banner.health-critical .circle {\n stroke: #ef4444;\n}\n\n@keyframes progress {\n 0% {\n stroke-dasharray: 0 100;\n }\n}\n\n.health-score-value {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 20px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.health-info {\n flex: 1;\n}\n\n.health-label {\n font-size: 18px;\n font-weight: 700;\n color: #059669;\n margin-bottom: 4px;\n}\n\n.health-banner.health-warning .health-label {\n color: #d97706;\n}\n\n.health-banner.health-critical .health-label {\n color: #dc2626;\n}\n\n.health-details {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.health-alert {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #dc2626;\n font-weight: 500;\n font-size: 14px;\n}\n\n.health-warning-text {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #d97706;\n font-weight: 500;\n font-size: 14px;\n cursor: pointer;\n}\n\n.health-warning-text:hover {\n text-decoration: underline;\n}\n\n.health-ok {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #059669;\n font-weight: 500;\n font-size: 14px;\n}\n\n/* KPI Cards */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n\n.kpi-card.clickable {\n cursor: pointer;\n}\n\n.kpi-card.clickable:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n}\n\n.kpi-card.active .kpi-icon {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n}\n\n.kpi-card.warning .kpi-icon {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.kpi-card.danger .kpi-icon {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n border-radius: 10px;\n margin-right: 14px;\n flex-shrink: 0;\n}\n\n.kpi-icon i {\n font-size: 20px;\n color: white;\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1.2;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n}\n\n.kpi-trend {\n display: flex;\n align-items: center;\n margin-left: 8px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.kpi-trend.success {\n color: #10b981;\n}\n\n.kpi-trend.warning {\n color: #f59e0b;\n}\n\n.kpi-trend .percentage {\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Content Grid */\n.content-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.category-panel {\n grid-row: span 2;\n}\n\n.panel {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n}\n\n.panel-title i {\n color: var(--accent-color, #6366f1);\n}\n\n.panel-subtitle {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.panel-action {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.panel-action:hover {\n background: var(--accent-color, #6366f1);\n border-color: var(--accent-color, #6366f1);\n color: white;\n}\n\n.panel-body {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n/* Category Chart */\n.category-chart {\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n}\n\n.donut-chart-container {\n position: relative;\n width: 200px;\n height: 200px;\n margin: 0 auto;\n}\n\n.donut-chart {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.donut-segment {\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.donut-segment:hover {\n opacity: 0.8;\n}\n\n.donut-center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n\n.donut-total {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.donut-label {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n/* Category Legend */\n.category-legend {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.legend-item:hover {\n background: var(--item-hover, #f3f4f6);\n transform: translateX(4px);\n}\n\n.legend-color {\n width: 12px;\n height: 12px;\n border-radius: 4px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.legend-info {\n flex: 1;\n}\n\n.legend-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.legend-name i {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-value {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-arrow {\n color: var(--text-tertiary, #9ca3af);\n font-size: 10px;\n}\n\n/* Type List */\n.type-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-category {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 2px;\n}\n\n.type-stats {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.type-count {\n display: flex;\n align-items: baseline;\n gap: 4px;\n}\n\n.count-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.count-label {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.type-bar {\n width: 100px;\n height: 4px;\n background: #e5e7eb;\n border-radius: 2px;\n overflow: hidden;\n}\n\n.type-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, #6366f1, #8b5cf6);\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n.type-indicators {\n display: flex;\n gap: 8px;\n}\n\n.indicator {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n}\n\n.indicator.active {\n color: #10b981;\n}\n\n.indicator.warning {\n color: #f59e0b;\n}\n\n.indicator i {\n font-size: 6px;\n}\n\n/* Activity List */\n.activity-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.activity-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.activity-item:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.activity-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #e0e7ff);\n border-radius: 6px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.activity-icon i {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.activity-icon.action-created {\n background: #d1fae5;\n}\n\n.activity-icon.action-created i {\n color: #059669;\n}\n\n.activity-icon.action-updated {\n background: #e0e7ff;\n}\n\n.activity-icon.action-updated i {\n color: #6366f1;\n}\n\n.activity-icon.action-accessed {\n background: #fef3c7;\n}\n\n.activity-icon.action-accessed i {\n color: #d97706;\n}\n\n.activity-icon.action-rotated {\n background: #dbeafe;\n}\n\n.activity-icon.action-rotated i {\n color: #3b82f6;\n}\n\n.activity-info {\n flex: 1;\n min-width: 0;\n}\n\n.activity-name {\n font-weight: 500;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.activity-meta {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.activity-type {\n background: var(--tag-background, #e5e7eb);\n padding: 1px 6px;\n border-radius: 4px;\n}\n\n.activity-action {\n font-weight: 500;\n}\n\n.activity-time {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n white-space: nowrap;\n}\n\n/* Quick Actions */\n.quick-actions {\n margin-bottom: 24px;\n}\n\n.quick-actions-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin-bottom: 12px;\n}\n\n.quick-actions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n}\n\n.quick-action {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.quick-action:hover {\n border-color: var(--accent-color, #6366f1);\n background: #f5f3ff;\n transform: translateY(-2px);\n}\n\n.quick-action i {\n font-size: 20px;\n color: var(--accent-color, #6366f1);\n}\n\n.quick-action span {\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--text-secondary, #6b7280);\n text-align: center;\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n/* Security Notice */\n.security-notice {\n display: flex;\n align-items: flex-start;\n padding: 16px 20px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-radius: 12px;\n border: 1px solid #bfdbfe;\n}\n\n.security-notice i {\n font-size: 20px;\n color: #3b82f6;\n margin-right: 12px;\n margin-top: 2px;\n}\n\n.notice-content {\n font-size: 13px;\n color: #1e40af;\n line-height: 1.5;\n}\n\n.notice-content strong {\n font-weight: 600;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .content-grid {\n grid-template-columns: 1fr;\n }\n\n .category-panel {\n grid-row: auto;\n }\n\n .category-chart {\n flex-direction: row;\n align-items: center;\n }\n\n .donut-chart-container {\n width: 160px;\n height: 160px;\n }\n\n .category-legend {\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .overview-container {\n padding: 16px;\n }\n\n .overview-header {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: flex-end;\n }\n\n .health-banner {\n flex-direction: column;\n text-align: center;\n }\n\n .health-score-container {\n margin-right: 0;\n margin-bottom: 16px;\n }\n\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .category-chart {\n flex-direction: column;\n }\n\n .quick-actions-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n"] }]
|
|
935
|
+
args: [{ standalone: false, selector: 'mj-credentials-overview-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"overview-container\">\n @if (isLoading) {\n <mj-loading text=\"Loading overview...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Header with Actions -->\n <div class=\"overview-header\">\n <div class=\"header-left\">\n <h2 class=\"overview-title\">Credential Overview</h2>\n <p class=\"overview-subtitle\">Monitor and manage your organization's credentials</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-refresh\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n @if (UserCanCreateCredentials) {\n <button class=\"btn-primary\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Credential</span>\n </button>\n }\n </div>\n </div>\n <!-- Health Score Banner -->\n <div class=\"health-banner\" [ngClass]=\"getHealthClass()\">\n <div class=\"health-score-container\">\n <div class=\"health-score-ring\">\n <svg viewBox=\"0 0 36 36\" class=\"circular-chart\">\n <path class=\"circle-bg\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n <path class=\"circle\"\n [attr.stroke-dasharray]=\"getHealthScore() + ', 100'\"\n d=\"M18 2.0845\n a 15.9155 15.9155 0 0 1 0 31.831\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n />\n </svg>\n <div class=\"health-score-value\">{{getHealthScore()}}</div>\n </div>\n </div>\n <div class=\"health-info\">\n <div class=\"health-label\">{{getHealthLabel()}}</div>\n <div class=\"health-details\">\n @if (expiredCredentials > 0) {\n <span class=\"health-alert\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{expiredCredentials}} expired\n </span>\n }\n @if (expiringSoonCount > 0) {\n <span class=\"health-warning-text\" (click)=\"viewExpiringCredentials()\">\n <i class=\"fa-solid fa-clock\"></i>\n {{expiringSoonCount}} expiring soon\n </span>\n }\n @if (expiredCredentials === 0 && expiringSoonCount === 0) {\n <span class=\"health-ok\">\n <i class=\"fa-solid fa-check-circle\"></i>\n All credentials healthy\n </span>\n }\n </div>\n </div>\n </div>\n <!-- KPI Cards Row -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card clickable\" (click)=\"viewAllCredentials()\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{totalCredentials}}</div>\n <div class=\"kpi-label\">Total Credentials</div>\n </div>\n <div class=\"kpi-trend\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n <div class=\"kpi-card active clickable\" (click)=\"viewAllCredentials()\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{activeCredentials}}</div>\n <div class=\"kpi-label\">Active</div>\n </div>\n <div class=\"kpi-trend success\">\n <span class=\"percentage\">{{totalCredentials > 0 ? (activeCredentials / totalCredentials * 100).toFixed(0) : 0}}%</span>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{credentialTypes}}</div>\n <div class=\"kpi-label\">Types</div>\n </div>\n </div>\n <div class=\"kpi-card clickable\" [class.warning]=\"expiringSoonCount > 0\" (click)=\"viewExpiringCredentials()\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-clock\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{expiringSoonCount}}</div>\n <div class=\"kpi-label\">Expiring Soon</div>\n </div>\n @if (expiringSoonCount > 0) {\n <div class=\"kpi-trend warning\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n }\n </div>\n <div class=\"kpi-card\" [class.danger]=\"expiredCredentials > 0\">\n <div class=\"kpi-icon\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{expiredCredentials}}</div>\n <div class=\"kpi-label\">Expired</div>\n </div>\n </div>\n </div>\n <!-- Content Grid -->\n <div class=\"content-grid\">\n <!-- Category Distribution Chart -->\n <div class=\"panel category-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-chart-pie\"></i>\n <span>Credentials by Category</span>\n </div>\n <span class=\"panel-subtitle\">Click to filter by category</span>\n </div>\n <div class=\"panel-body\">\n @if (categoryStats.length > 0) {\n <div class=\"category-chart\">\n <!-- Visual Donut Chart -->\n <div class=\"donut-chart-container\">\n <svg viewBox=\"0 0 100 100\" class=\"donut-chart\">\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"none\" stroke=\"#e5e7eb\" stroke-width=\"12\"/>\n @for (stat of categoryStats; track stat; let i = $index) {\n <ng-container>\n <circle\n cx=\"50\" cy=\"50\" r=\"40\"\n fill=\"none\"\n [attr.stroke]=\"stat.color\"\n stroke-width=\"12\"\n [attr.stroke-dasharray]=\"stat.percentage * 2.51 + ' ' + (251 - stat.percentage * 2.51)\"\n [attr.stroke-dashoffset]=\"getDonutOffset(i)\"\n class=\"donut-segment\"\n (click)=\"onCategoryClick(stat)\"\n />\n </ng-container>\n }\n </svg>\n <div class=\"donut-center\">\n <div class=\"donut-total\">{{totalCredentials}}</div>\n <div class=\"donut-label\">Total</div>\n </div>\n </div>\n <!-- Legend -->\n <div class=\"category-legend\">\n @for (stat of categoryStats; track stat) {\n <div class=\"legend-item\" (click)=\"onCategoryClick(stat)\">\n <div class=\"legend-color\" [style.backgroundColor]=\"stat.color\"></div>\n <div class=\"legend-info\">\n <div class=\"legend-name\">\n <i [class]=\"stat.iconClass\"></i>\n {{stat.category}}\n </div>\n <div class=\"legend-value\">{{stat.count}} ({{stat.percentage}}%)</div>\n </div>\n <i class=\"fa-solid fa-chevron-right legend-arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n @if (categoryStats.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <span>No credentials configured</span>\n </div>\n }\n </div>\n </div>\n <!-- Types Breakdown -->\n <div class=\"panel types-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-cubes\"></i>\n <span>Top Credential Types</span>\n </div>\n <button class=\"panel-action\" (click)=\"viewAllTypes()\">\n View All <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n <div class=\"panel-body\">\n @if (typeStats.length > 0) {\n <div class=\"type-list\">\n @for (type of typeStats.slice(0, 6); track type) {\n <div class=\"type-item\" (click)=\"onTypeClick(type)\">\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.typeName}}</div>\n <div class=\"type-category\">{{type.category}}</div>\n </div>\n <div class=\"type-stats\">\n <div class=\"type-count\">\n <span class=\"count-value\">{{type.credentialCount}}</span>\n <span class=\"count-label\">credentials</span>\n </div>\n <div class=\"type-bar\">\n <div class=\"type-bar-fill\"\n [style.width.%]=\"totalCredentials > 0 ? (type.credentialCount / totalCredentials * 100) : 0\">\n </div>\n </div>\n <div class=\"type-indicators\">\n @if (type.activeCount > 0) {\n <span class=\"indicator active\" title=\"Active\">\n <i class=\"fa-solid fa-circle\"></i> {{type.activeCount}}\n </span>\n }\n @if (type.expiringCount > 0) {\n <span class=\"indicator warning\" title=\"Expiring Soon\">\n <i class=\"fa-solid fa-clock\"></i> {{type.expiringCount}}\n </span>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n @if (typeStats.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shapes\"></i>\n <span>No credential types configured</span>\n </div>\n }\n </div>\n </div>\n <!-- Recent Activity -->\n <div class=\"panel activity-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-title\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n <span>Recent Activity</span>\n </div>\n <button class=\"panel-action\" (click)=\"viewAuditLog()\">\n View All <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n <div class=\"panel-body\">\n @if (recentActivity.length > 0) {\n <div class=\"activity-list\">\n @for (activity of recentActivity; track activity) {\n <div class=\"activity-item\" (click)=\"onActivityClick(activity)\">\n <div class=\"activity-icon\" [ngClass]=\"getActionClass(activity.action)\">\n <i [class]=\"getActionIcon(activity.action)\"></i>\n </div>\n <div class=\"activity-info\">\n <div class=\"activity-name\">{{activity.credentialName}}</div>\n <div class=\"activity-meta\">\n <span class=\"activity-type\">{{activity.typeName}}</span>\n <span class=\"activity-action\">{{activity.action}}</span>\n @if (activity.user) {\n <span class=\"activity-user\">by {{activity.user}}</span>\n }\n </div>\n </div>\n <div class=\"activity-time\">\n {{formatDate(activity.date)}}\n </div>\n </div>\n }\n </div>\n }\n @if (recentActivity.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <span>No recent activity</span>\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Quick Actions -->\n @if (UserCanCreateCredentials) {\n <div class=\"quick-actions\">\n <div class=\"quick-actions-title\">Quick Actions</div>\n <div class=\"quick-actions-grid\">\n <button class=\"quick-action\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Add Credential</span>\n </button>\n <button class=\"quick-action\" (click)=\"viewAllTypes()\">\n <i class=\"fa-solid fa-shapes\"></i>\n <span>Manage Types</span>\n </button>\n <button class=\"quick-action\" (click)=\"viewAllCategories()\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n <span>Categories</span>\n </button>\n <button class=\"quick-action\" (click)=\"viewAuditLog()\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n <span>Audit Log</span>\n </button>\n </div>\n </div>\n }\n <!-- Security Notice -->\n <div class=\"security-notice\">\n <i class=\"fa-solid fa-shield-check\"></i>\n <div class=\"notice-content\">\n <strong>Security Note:</strong> All credential values are encrypted.\n Access to credentials is logged in the audit trail for compliance and security monitoring.\n </div>\n </div>\n }\n</div>\n", styles: [".overview-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n/* Header */\n.overview-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.header-left {\n flex: 1;\n}\n\n.overview-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0 0 4px 0;\n}\n\n.overview-subtitle {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions {\n display: flex;\n gap: 12px;\n}\n\n.btn-refresh {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-refresh:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.btn-refresh i {\n color: var(--text-secondary, #6b7280);\n}\n\n.btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n/* Health Banner */\n.health-banner {\n display: flex;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border: 1px solid #a7f3d0;\n border-radius: 16px;\n margin-bottom: 24px;\n}\n\n.health-banner.health-warning {\n background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);\n border-color: #fcd34d;\n}\n\n.health-banner.health-critical {\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border-color: #fca5a5;\n}\n\n.health-score-container {\n margin-right: 24px;\n}\n\n.health-score-ring {\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.circular-chart {\n display: block;\n margin: 0 auto;\n max-height: 80px;\n transform: rotate(-90deg);\n}\n\n.circle-bg {\n fill: none;\n stroke: #e5e7eb;\n stroke-width: 3.8;\n}\n\n.circle {\n fill: none;\n stroke-width: 3.8;\n stroke-linecap: round;\n stroke: #10b981;\n animation: progress 1s ease-out forwards;\n}\n\n.health-banner.health-warning .circle {\n stroke: #f59e0b;\n}\n\n.health-banner.health-critical .circle {\n stroke: #ef4444;\n}\n\n@keyframes progress {\n 0% {\n stroke-dasharray: 0 100;\n }\n}\n\n.health-score-value {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 20px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.health-info {\n flex: 1;\n}\n\n.health-label {\n font-size: 18px;\n font-weight: 700;\n color: #059669;\n margin-bottom: 4px;\n}\n\n.health-banner.health-warning .health-label {\n color: #d97706;\n}\n\n.health-banner.health-critical .health-label {\n color: #dc2626;\n}\n\n.health-details {\n display: flex;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.health-alert {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #dc2626;\n font-weight: 500;\n font-size: 14px;\n}\n\n.health-warning-text {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #d97706;\n font-weight: 500;\n font-size: 14px;\n cursor: pointer;\n}\n\n.health-warning-text:hover {\n text-decoration: underline;\n}\n\n.health-ok {\n display: flex;\n align-items: center;\n gap: 6px;\n color: #059669;\n font-weight: 500;\n font-size: 14px;\n}\n\n/* KPI Cards */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n\n.kpi-card.clickable {\n cursor: pointer;\n}\n\n.kpi-card.clickable:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n}\n\n.kpi-card.active .kpi-icon {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n}\n\n.kpi-card.warning .kpi-icon {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.kpi-card.danger .kpi-icon {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n}\n\n.kpi-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n border-radius: 10px;\n margin-right: 14px;\n flex-shrink: 0;\n}\n\n.kpi-icon i {\n font-size: 20px;\n color: white;\n}\n\n.kpi-content {\n flex: 1;\n min-width: 0;\n}\n\n.kpi-value {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1.2;\n}\n\n.kpi-label {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n}\n\n.kpi-trend {\n display: flex;\n align-items: center;\n margin-left: 8px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.kpi-trend.success {\n color: #10b981;\n}\n\n.kpi-trend.warning {\n color: #f59e0b;\n}\n\n.kpi-trend .percentage {\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Content Grid */\n.content-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 20px;\n margin-bottom: 24px;\n}\n\n.category-panel {\n grid-row: span 2;\n}\n\n.panel {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n}\n\n.panel-title i {\n color: var(--accent-color, #6366f1);\n}\n\n.panel-subtitle {\n font-size: 12px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.panel-action {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.panel-action:hover {\n background: var(--accent-color, #6366f1);\n border-color: var(--accent-color, #6366f1);\n color: white;\n}\n\n.panel-body {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n/* Category Chart */\n.category-chart {\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n}\n\n.donut-chart-container {\n position: relative;\n width: 200px;\n height: 200px;\n margin: 0 auto;\n}\n\n.donut-chart {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.donut-segment {\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.donut-segment:hover {\n opacity: 0.8;\n}\n\n.donut-center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n\n.donut-total {\n font-size: 32px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.donut-label {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n/* Category Legend */\n.category-legend {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.legend-item:hover {\n background: var(--item-hover, #f3f4f6);\n transform: translateX(4px);\n}\n\n.legend-color {\n width: 12px;\n height: 12px;\n border-radius: 4px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.legend-info {\n flex: 1;\n}\n\n.legend-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.legend-name i {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-value {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-arrow {\n color: var(--text-tertiary, #9ca3af);\n font-size: 10px;\n}\n\n/* Type List */\n.type-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-category {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n margin-top: 2px;\n}\n\n.type-stats {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 4px;\n flex-shrink: 0;\n margin-left: 16px;\n}\n\n.type-count {\n display: flex;\n align-items: baseline;\n gap: 4px;\n}\n\n.count-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n}\n\n.count-label {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n}\n\n.type-bar {\n width: 100px;\n height: 4px;\n background: #e5e7eb;\n border-radius: 2px;\n overflow: hidden;\n}\n\n.type-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, #6366f1, #8b5cf6);\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n.type-indicators {\n display: flex;\n gap: 8px;\n}\n\n.indicator {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n}\n\n.indicator.active {\n color: #10b981;\n}\n\n.indicator.warning {\n color: #f59e0b;\n}\n\n.indicator i {\n font-size: 6px;\n}\n\n/* Activity List */\n.activity-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.activity-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.activity-item:hover {\n background: var(--item-hover, #f3f4f6);\n}\n\n.activity-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #e0e7ff);\n border-radius: 6px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.activity-icon i {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.activity-icon.action-created {\n background: #d1fae5;\n}\n\n.activity-icon.action-created i {\n color: #059669;\n}\n\n.activity-icon.action-updated {\n background: #e0e7ff;\n}\n\n.activity-icon.action-updated i {\n color: #6366f1;\n}\n\n.activity-icon.action-accessed {\n background: #fef3c7;\n}\n\n.activity-icon.action-accessed i {\n color: #d97706;\n}\n\n.activity-icon.action-rotated {\n background: #dbeafe;\n}\n\n.activity-icon.action-rotated i {\n color: #3b82f6;\n}\n\n.activity-info {\n flex: 1;\n min-width: 0;\n}\n\n.activity-name {\n font-weight: 500;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.activity-meta {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 2px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.activity-type {\n background: var(--tag-background, #e5e7eb);\n padding: 1px 6px;\n border-radius: 4px;\n}\n\n.activity-action {\n font-weight: 500;\n}\n\n.activity-time {\n font-size: 11px;\n color: var(--text-tertiary, #9ca3af);\n white-space: nowrap;\n}\n\n/* Quick Actions */\n.quick-actions {\n margin-bottom: 24px;\n}\n\n.quick-actions-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin-bottom: 12px;\n}\n\n.quick-actions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px;\n}\n\n.quick-action {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.quick-action:hover {\n border-color: var(--accent-color, #6366f1);\n background: #f5f3ff;\n transform: translateY(-2px);\n}\n\n.quick-action i {\n font-size: 20px;\n color: var(--accent-color, #6366f1);\n}\n\n.quick-action span {\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary, #6b7280);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 32px;\n color: var(--text-secondary, #6b7280);\n text-align: center;\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n/* Security Notice */\n.security-notice {\n display: flex;\n align-items: flex-start;\n padding: 16px 20px;\n background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);\n border-radius: 12px;\n border: 1px solid #bfdbfe;\n}\n\n.security-notice i {\n font-size: 20px;\n color: #3b82f6;\n margin-right: 12px;\n margin-top: 2px;\n}\n\n.notice-content {\n font-size: 13px;\n color: #1e40af;\n line-height: 1.5;\n}\n\n.notice-content strong {\n font-weight: 600;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .content-grid {\n grid-template-columns: 1fr;\n }\n\n .category-panel {\n grid-row: auto;\n }\n\n .category-chart {\n flex-direction: row;\n align-items: center;\n }\n\n .donut-chart-container {\n width: 160px;\n height: 160px;\n }\n\n .category-legend {\n flex: 1;\n }\n}\n\n@media (max-width: 768px) {\n .overview-container {\n padding: 16px;\n }\n\n .overview-header {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-actions {\n width: 100%;\n justify-content: flex-end;\n }\n\n .health-banner {\n flex-direction: column;\n text-align: center;\n }\n\n .health-score-container {\n margin-right: 0;\n margin-bottom: 16px;\n }\n\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .category-chart {\n flex-direction: column;\n }\n\n .quick-actions-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n"] }]
|
|
934
936
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.NavigationService }], null); })();
|
|
935
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsOverviewResourceComponent, { className: "CredentialsOverviewResourceComponent", filePath: "src/
|
|
937
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsOverviewResourceComponent, { className: "CredentialsOverviewResourceComponent", filePath: "src/credentials/components/credentials-overview-resource.component.ts", lineNumber: 50 }); })();
|
|
936
938
|
//# sourceMappingURL=credentials-overview-resource.component.js.map
|