myowjaYOY/ngx-admin
April 19, 2026
Document Date: April 2026
This Feature Inventory catalogs every distinct feature observable from the screen documentation provided for the ngx-admin web application. Features are extracted exclusively from implemented behavior as described in the source documentation for three screens: the Charts shell (/charts), the Chart.js screen (/charts/chartjs), and the D3 screen (/charts/d3). Features that exist on undocumented screens (e.g., /charts/echarts or any screen outside the /charts route hierarchy), planned or unreleased features, and backend-only behaviors not visible in any documented screen are explicitly excluded from this inventory.
Features were extracted by systematically scanning each section of the screen documentation — UI layout, user interactions, navigation, routing, error handling, real-time behavior, integration points, security, and accessibility — for distinct, independently valuable capabilities. Each feature is classified using BABOK v3.0 requirements categories (Functional, Non-Functional, Constraint), prioritized using MoSCoW notation where determinable, and assessed for complexity based on the number of UI components, API interactions, and error-handling paths involved. Quality dimensions are assigned per ISO/IEC 25010:2023.
A feature is defined as a distinct capability that delivers value to a user role, is independently testable, and can be described in one sentence without using "and" to join unrelated capabilities. Because the three documented screens are all thin shell or presentational components with no business logic, state management, or API calls, the resulting feature set is small. Several features that would normally be cataloged at the child-component level (e.g., individual chart type rendering, data filtering, export) cannot be documented because the child component source files and templates were not provided.
This Feature Inventory covers 3 screen(s) of the ngx-admin application:
| Screen Name | Route |
|---|---|
| Charts | /charts |
| Chartjs | /charts/chartjs |
| D3 | /charts/d3 |
Features derived from screens not included in the assessed documentation are outside the scope of this document. This document reflects a partial view of the application. The /charts route hierarchy references additional child routes (e.g., /charts/echarts) that are not documented here.
Generated by DocAgent — automated codebase documentation analysis. Subject matter expert review is recommended before distribution.
| # | Feature Name | Screen(s) | Category | Sub-Category | User Role(s) | Type | Status | Priority | Complexity | Description |
|---|---|---|---|---|---|---|---|---|---|---|
| FEAT-001 | Host Child Chart Routes | Charts (/charts) |
Navigation | Routing Structure | All Authenticated Users | Functional | Active | Must | Simple | The Charts screen provides an Angular <router-outlet> that dynamically renders the correct child chart component based on the active URL segment beneath /charts. |
| FEAT-002 | Navigate to Chart Sub-Pages | Charts (/charts) |
Navigation | Client-Side Routing | All Authenticated Users | Functional | Active | Must | Simple | Users can navigate between chart sub-pages (e.g., /charts/chartjs, /charts/d3) via the application's global navigation, with Angular's router loading the correct child component into the outlet. |
| FEAT-003 | Display Chart.js Visualizations | Chartjs (/charts/chartjs) |
Data Visualization | Chart Rendering | All Authenticated Users | Functional | Partial | Should | Medium | The Chart.js screen renders one or more Chart.js-based chart visualizations (e.g., bar, line, pie, doughnut, radar) within a card-based layout for user viewing. |
| FEAT-004 | Display D3 Visualizations | D3 (/charts/d3) |
Data Visualization | Chart Rendering | All Authenticated Users | Functional | Partial | Should | Medium | The D3 screen renders one or more D3.js-based data visualizations (e.g., SVG charts, force-directed graphs) within the application's standard page layout for user viewing. |
| FEAT-005 | Enforce Route-Level Access Control | Charts (/charts), Chartjs (/charts/chartjs), D3 (/charts/d3) |
Security | Authentication & Authorization | All Authenticated Users | Non-Functional | Partial | Must | Medium | Angular route guards (e.g., CanActivate) are expected to restrict access to the /charts route hierarchy, redirecting unauthorized users to a login or access-denied page. |
| FEAT-006 | Chart.js Native Chart Interactivity | Chartjs (/charts/chartjs) |
Data Visualization | User Interaction | All Authenticated Users | Functional | Partial | Could | Simple | Users can interact with Chart.js charts using built-in library behaviors such as hover tooltips and legend toggling, without any custom event handling by the application. |
Category: Navigation > Routing Structure Screen(s): Charts (/charts) User Role(s): All Authenticated Users Type: Functional Status: Active Priority: Must Complexity: Simple
Description: The Charts screen acts as a structural shell that hosts Angular's <router-outlet> directive, enabling the application to dynamically render child chart screens (such as /charts/chartjs and /charts/d3) within the same layout context. Without this shell, child chart routes cannot be rendered. This is a foundational routing feature that enables the entire charts section of the application.
User Interaction: The user does not interact with this feature directly. When a user navigates to any URL beneath /charts, Angular's router matches the child route and inserts the corresponding component into the outlet automatically. The user perceives this as arriving at a chart page; the shell is invisible.
Acceptance Criteria:
/charts/chartjs, the Chart.js child component is rendered in the outlet without a full page reload./charts/d3, the D3 child component is rendered in the outlet without a full page reload./charts, the router handles the unmatched route gracefully (e.g., redirects to a 404 page or a default child route).Technical Components:
<router-outlet> directive in ChartsComponent templateError Handling: No error handling is implemented at this component level. Unmatched child routes are handled by Angular's router wildcard configuration, which is defined in the routing module (not documented here).
Quality Dimensions (ISO 25010):
Known Limitations: The ChartsComponent does not specify ChangeDetectionStrategy.OnPush, which is a minor best-practice deviation for a stateless shell component. The component uses NgModule-based architecture rather than Angular's standalone component pattern, which may represent a future migration opportunity.
Source Evidence: Charts (/charts)
Related Features: FEAT-002, FEAT-003, FEAT-004
Category: Navigation > Client-Side Routing Screen(s): Charts (/charts) User Role(s): All Authenticated Users Type: Functional Status: Active Priority: Must Complexity: Simple
Description: Users can move between the different chart sub-pages within the /charts section of the application by using the application's global navigation menu or sidebar. Angular's router handles the URL change and renders the appropriate child component into the <router-outlet> of the Charts shell without a full browser page reload.
User Interaction: The user clicks a navigation link (e.g., in the application sidebar or top menu) that targets a chart sub-page URL such as /charts/chartjs or /charts/d3. Angular intercepts the navigation event, matches the route, and renders the corresponding child component. The user sees the new chart page appear in the content area.
Acceptance Criteria:
/charts/chartjs, the Chart.js visualization page loads without a full browser reload./charts/d3, the D3 visualization page loads without a full browser reload./charts with no child segment, the router either renders a default child route or handles the empty path gracefully.[Not documented — WHO: Engineering lead; WHAT: Is there a default redirect configured for the bare /charts route (e.g., redirect to /charts/chartjs)? WHERE: Insert in AC-3 of FEAT-002 and in FGAP-01]
Technical Components:
Error Handling: No error handling is implemented within the ChartsComponent. Navigation failures (e.g., route guard rejection) are handled by the router guard configuration in the routing module.
Quality Dimensions (ISO 25010):
Known Limitations: The navigation menu that triggers this feature is defined outside the documented screens and cannot be fully specified here. The full child route configuration (including any lazy-loading setup) is in charts-routing.module.ts, which was not provided.
Source Evidence: Charts (/charts)
Related Features: FEAT-001, FEAT-003, FEAT-004
Category: Data Visualization > Chart Rendering Screen(s): Chartjs (/charts/chartjs) User Role(s): All Authenticated Users Type: Functional Status: Partial Priority: Should Complexity: Medium
Description: The Chart.js screen presents users with one or more Chart.js-based chart visualizations arranged in a card-based layout. Users can view these charts to understand the data being represented. The screen serves as either a data visualization dashboard or a demonstration of available Chart.js chart types integrated into the application.
User Interaction: The user navigates to /charts/chartjs via the application's navigation. The screen renders automatically upon arrival, displaying chart visualizations without requiring any user input. The user views the charts in a read-only capacity.
Acceptance Criteria:
/charts/chartjs, one or more Chart.js charts are rendered visibly on the screen without user interaction.(Acceptance criteria are partially inferred from technology conventions — verify against the chartjs.component.html template and child chart component definitions.)
[Not documented — WHO: Product owner; WHAT: What specific chart types (bar, line, pie, doughnut, radar, etc.) are required to be displayed on this screen?; WHERE: Insert in AC-2 of FEAT-003 and in the Description field]
[Not documented — WHO: Product owner; WHAT: Is this screen a static demo/showcase or does it display live/dynamic application data?; WHERE: Insert in the Description field of FEAT-003 and in FGAP-06]
Technical Components:
ChartjsComponent (ngx-chartjs selector), nb-card layout components (inferred from Nebular UI framework — verify against chartjs.component.html), Chart.js <canvas> elementschartjs.component.html for hardcoded datasets)Error Handling: No error handling is implemented in ChartjsComponent. If Chart.js fails to render (e.g., invalid data or missing canvas context), the error surfaces as an unhandled JavaScript runtime error in the browser console.
Quality Dimensions (ISO 25010):
Known Limitations: All chart configuration and data is (inferred from the stateless component pattern — verify against chartjs.component.html) hardcoded in the HTML template, making it difficult to maintain, test, or make data-driven. No error state, loading state, or empty state is handled by the component. Accessibility for <canvas> elements is not documented and represents a known gap.
Source Evidence: Chartjs (/charts/chartjs)
Related Features: FEAT-001, FEAT-006
Category: Data Visualization > Chart Rendering Screen(s): D3 (/charts/d3) User Role(s): All Authenticated Users Type: Functional Status: Partial Priority: Should Complexity: Medium
Description: The D3 screen presents users with one or more D3.js-based data visualizations, such as SVG charts, force-directed graphs, or tree diagrams. Users can view these visualizations within the application's standard page layout. The screen acts as a host for D3-powered child components that perform the actual rendering.
User Interaction: The user navigates to /charts/d3 via the application's navigation. The screen renders automatically upon arrival, displaying D3 visualizations without requiring any user input at the parent component level. The user views the visualizations in a read-only capacity (any interactive D3 behaviors such as zoom or pan are handled within child components).
Acceptance Criteria:
/charts/d3, one or more D3.js visualizations are rendered visibly on the screen without user interaction.(Acceptance criteria are partially inferred from technology conventions — verify against the d3.component.html template and child D3 component definitions.)
[Not documented — WHO: Product owner; WHAT: What specific D3 visualization types (force-directed graph, bar chart, tree diagram, etc.) are required on this screen?; WHERE: Insert in AC-1 of FEAT-004 and in the Description field]
[Not documented — WHO: Engineering lead; WHAT: Is the d3.component.html template substantive or a placeholder stub? The component class is entirely empty.; WHERE: Insert in the Status field of FEAT-004 and in FGAP-01]
Technical Components:
D3Component (ngx-d3 selector), child D3 chart components (declared at module level, not in component class), SVG elements rendered by D3.jsd3.component.html and child component source files)Error Handling: No error handling is implemented in D3Component. Rendering failures within D3 child components would surface as unhandled JavaScript errors in the browser console.
Quality Dimensions (ISO 25010):
.html() and .append() methods in child components carry XSS risk if user-supplied data is rendered as raw HTML (applies to child components, not this shell)Known Limitations: The D3Component class body is entirely empty, which may indicate this component is a stub or placeholder that was never fully implemented. The template file (d3.component.html) was not provided, so the actual rendered content cannot be confirmed. Accessibility for SVG elements is not documented. The ChangeDetectionStrategy.OnPush is not set, which is a minor best-practice deviation.
Source Evidence: D3 (/charts/d3)
Related Features: FEAT-001
Category: Security > Authentication & Authorization Screen(s): Charts (/charts), Chartjs (/charts/chartjs), D3 (/charts/d3) User Role(s): All Authenticated Users Type: Non-Functional Status: Partial Priority: Must Complexity: Medium
Description: Access to the /charts route hierarchy is expected to be restricted to authorized users via Angular route guards (e.g., CanActivate). Unauthorized users attempting to access any chart screen are expected to be redirected to a login page or an access-denied page before the chart component is instantiated.
User Interaction: This feature is transparent to authorized users — they navigate to chart screens without interruption. Unauthorized users are redirected away from the chart screens automatically by the router guard before any chart content is displayed.
Acceptance Criteria:
/charts, /charts/chartjs, or /charts/d3, they are redirected to the application's login page.(AC-3 is inferred from common Angular route guard patterns — verify against the routing module and AuthGuard/RoleGuard implementation to confirm whether role-based restrictions beyond authentication are enforced.)
[Not documented — WHO: Engineering lead; WHAT: Which specific route guard(s) (e.g., AuthGuard, RoleGuard) are applied to the /charts route and its children? Is the guard applied at the parent /charts level or individually on each child route?; WHERE: Insert in the Technical Components section of FEAT-005]
[Not documented — WHO: Product owner; WHAT: Are there role-based restrictions on chart access (e.g., only admins or analysts can view charts), or is access granted to all authenticated users?; WHERE: Insert in the User Role(s) field of FEAT-005 and in the Feature-Role Matrix]
Technical Components:
AuthGuard implementation) Authentication token validation endpointError Handling: Unauthorized access is handled by the route guard, which redirects the user rather than displaying an error within the chart component. The specific redirect target (login page, 403 page) is defined in the routing module.
Quality Dimensions (ISO 25010):
Known Limitations: The route guard implementation is not included in the provided source documentation. It cannot be confirmed whether a guard is actually applied, which guard class is used, or whether role-based (as opposed to authentication-only) restrictions are enforced. This feature is marked Partial because the guard's existence is referenced in the documentation but its implementation is unverified.
Source Evidence: Charts (/charts), Chartjs (/charts/chartjs), D3 (/charts/d3)
Related Features: FEAT-001, FEAT-002
Category: Data Visualization > User Interaction Screen(s): Chartjs (/charts/chartjs) User Role(s): All Authenticated Users Type: Functional Status: Partial Priority: Could Complexity: Simple
Description: Users can interact with Chart.js charts on the /charts/chartjs screen using Chart.js's built-in interaction behaviors, including hover tooltips that display data point values and legend item toggling to show or hide individual datasets. These interactions are provided natively by the Chart.js library and require no custom event handling by the application.
User Interaction: The user hovers over a data point or bar on a chart to see a tooltip displaying the value. The user clicks a legend item to toggle the visibility of the corresponding dataset on the chart. No form submission or application-level event handling is involved.
Acceptance Criteria:
(Acceptance criteria are inferred from Chart.js default behavior — verify against the chart configuration options defined in chartjs.component.html or child chart components to confirm tooltips and legend toggling are not disabled.)
Technical Components:
<canvas> elements, Chart.js built-in tooltip and legend pluginsError Handling: No application-level error handling. Chart.js manages its own internal interaction state. If a chart fails to render, interactions are unavailable and no error message is displayed to the user.
Quality Dimensions (ISO 25010):
Known Limitations: Interactivity is entirely dependent on Chart.js library defaults. The application does not implement custom keyboard navigation, screen reader announcements, or ARIA live regions for tooltip content. The specific Chart.js configuration (which may enable or disable certain interactions) is defined in the template file, which was not provided.
Source Evidence: Chartjs (/charts/chartjs)
Related Features: FEAT-003
| Feature | Charts (/charts) |
Chartjs (/charts/chartjs) |
D3 (/charts/d3) |
|---|---|---|---|
| FEAT-001: Host Child Chart Routes | Primary | Supporting | Supporting |
| FEAT-002: Navigate to Chart Sub-Pages | Primary | — | — |
| FEAT-003: Display Chart.js Visualizations | — | Primary | — |
| FEAT-004: Display D3 Visualizations | — | — | Primary |
| FEAT-005: Enforce Route-Level Access Control | Primary | Supporting | Supporting |
| FEAT-006: Chart.js Native Chart Interactivity | — | Primary | — |
[Not documented — WHO: Product owner; WHAT: What named user roles exist in the application (e.g., Admin, Analyst, Viewer, Guest)? The source documentation does not define specific roles for the charts section.; WHERE: Replace "All Authenticated Users" throughout this matrix with the specific role names once confirmed]
| Feature | All Authenticated Users | Unauthenticated Users |
|---|---|---|
| FEAT-001: Host Child Chart Routes | Full | — |
| FEAT-002: Navigate to Chart Sub-Pages | Full | — |
| FEAT-003: Display Chart.js Visualizations | Read-only | — |
| FEAT-004: Display D3 Visualizations | Read-only | — |
| FEAT-005: Enforce Route-Level Access Control | Conditional | — |
| FEAT-006: Chart.js Native Chart Interactivity | Full | — |
Note on FEAT-005: "Conditional" indicates that authenticated users with appropriate permissions are granted access, while those without are redirected. The specific conditions are not documented in the source — verify against the route guard implementation.
| Feature | Depends On | Relationship | Description |
|---|---|---|---|
| FEAT-002 | FEAT-001 | Requires | Navigation to chart sub-pages requires the <router-outlet> in ChartsComponent to be present; without it, child routes cannot render. |
| FEAT-003 | FEAT-001 | Requires | The Chart.js screen is a child route rendered inside the ChartsComponent outlet; the outlet must exist for the screen to load. |
| FEAT-004 | FEAT-001 | Requires | The D3 screen is a child route rendered inside the ChartsComponent outlet; the outlet must exist for the screen to load. |
| FEAT-005 | FEAT-001 | Enhances | Route-level access control protects the Charts shell and all its children; FEAT-001 functions structurally without FEAT-005, but FEAT-005 is required for secure operation. |
| FEAT-006 | FEAT-003 | Requires | Chart.js native interactivity (tooltips, legend toggling) requires Chart.js charts to be rendered; FEAT-006 cannot function if FEAT-003 fails to render. |
| FEAT-003 | FEAT-005 | Shares Data | Both features operate on the user's authenticated session state — FEAT-005 gates access, FEAT-003 is the protected resource. |
| FEAT-004 | FEAT-005 | Shares Data | Both features operate on the user's authenticated session state — FEAT-005 gates access, FEAT-004 is the protected resource. |
Type: Undocumented Screen Affected Feature(s): FEAT-001, FEAT-002 Risk Level: High
Description: The source documentation for the Charts shell (/charts) explicitly references child routes beneath /charts (e.g., /charts/echarts, /charts/chartjs, /charts/d3). Only two child screens (/charts/chartjs and /charts/d3) are included in the provided documentation. Additional child screens — most notably /charts/echarts — are referenced by name in the documentation but not documented. The full child route configuration in charts-routing.module.ts was not provided, so the complete list of child routes is unknown. Additionally, the D3Component class is entirely empty, raising the possibility that /charts/d3 is itself a stub or placeholder screen.
Recommendation: Obtain and document the charts-routing.module.ts file to enumerate all registered child routes. Document each child screen (especially /charts/echarts) using the same screen documentation format. Verify with the engineering lead whether d3.component.html contains substantive content or is a placeholder.
Type: Undocumented Screen Affected Feature(s): FEAT-001, FEAT-002 Risk Level: High
Description: The ECharts screen (likely at /charts/echarts) is referenced by name in the Charts shell documentation as an example child route but is not included in the provided screen documentation. ECharts (Apache ECharts) is a major charting library, and a dedicated screen for it would likely contain a significant number of features comparable to or exceeding those on the Chart.js screen. Its absence means this inventory is materially incomplete with respect to the charts section.
Recommendation: Request screen documentation for /charts/echarts (and any other undocumented chart library screens) from the engineering team. Add corresponding features to this inventory once documentation is available.
Type: Accessibility Affected Feature(s): FEAT-003, FEAT-004, FEAT-006 Risk Level: High
Description: Chart.js renders charts onto HTML <canvas> elements, which are inherently inaccessible to screen readers because canvas content is not part of the browser's accessibility tree. D3.js renders charts as SVG elements, which can be made accessible but require explicit role, aria-label, and tabindex attributes applied through D3's imperative DOM manipulation. Neither the ChartjsComponent nor the D3Component documentation describes any accessibility implementation. The template files — where ARIA attributes would be applied — were not provided. This represents a potential WCAG 2.1 AA compliance gap across all chart screens.
Recommendation: Review chartjs.component.html and d3.component.html (and all child chart component templates) for the presence of role="img", aria-label, fallback text within <canvas> tags, and keyboard navigation support. If absent, implement WCAG 2.1 AA-compliant accessibility patterns for all chart elements. Conduct an accessibility audit with assistive technology (e.g., NVDA, VoiceOver) before release.
Type: Error State Affected Feature(s): FEAT-003, FEAT-004, FEAT-006 Risk Level: Medium
Description: Neither the ChartjsComponent nor the D3Component implements any error handling for chart rendering failures. If Chart.js fails to render (e.g., due to an invalid dataset, a missing canvas context, or a library load failure), or if a D3 visualization fails (e.g., due to malformed SVG data or a D3 computation error), the failure surfaces only as an unhandled JavaScript runtime error in the browser console. No user-facing error message, fallback content, or retry mechanism is documented for any chart screen.
Recommendation: Define and implement user-facing error states for chart rendering failures on both the Chart.js and D3 screens. At minimum, display a visible error message within the chart card when a chart fails to render. Consider implementing Angular's ErrorHandler or a try/catch wrapper in child chart components.
Type: Missing NFR Affected Feature(s): FEAT-005 Risk Level: Critical
Description: The source documentation for all three screens acknowledges that route guards are expected to enforce access control but explicitly states that the routing module (where guards are configured) was not provided. As a result, it cannot be confirmed whether any route guard is actually applied to the /charts route hierarchy, which guard class is used, what authentication mechanism it relies on, or whether role-based restrictions (beyond simple authentication) are enforced. The user roles for the application are entirely undocumented in the provided source.
Recommendation: Provide the charts-routing.module.ts and app-routing.module.ts files for review. Document the specific CanActivate guard(s) applied to the /charts route, the authentication mechanism used, and any role-based access rules. Update the Feature-Role Matrix in this document once roles are confirmed.
Type: Missing CRUD Affected Feature(s): FEAT-003, FEAT-004 Risk Level: Medium
Description: Both the Chart.js and D3 screens are documented as stateless presentational components with no API calls and no data-fetching logic. It is unclear whether the chart data displayed is: (a) entirely static/hardcoded in the HTML templates (a demo/showcase), (b) sourced from child components that fetch data from an API, or (c) intended to be connected to live application data in a future iteration. If the charts are intended to visualize real application data, the Read operation is the only CRUD operation present, and Create, Update, and Delete operations on the underlying data entities are entirely absent from the documented screens.
Recommendation: Clarify with the product owner whether the chart screens display static demo data or live application data. If live data is intended, document the data entities, API endpoints, and any planned data management features (filtering, date range selection, export) for inclusion in this inventory.
Type: Missing NFR Affected Feature(s): FEAT-003, FEAT-004 Risk Level: Low
Description: No non-functional requirements related to chart rendering performance (e.g., maximum acceptable render time for large datasets), data export (e.g., exporting chart images as PNG or data as CSV), or print support are documented for any chart screen. For a data visualization section of an application, these are commonly expected capabilities that are absent from the current documentation.
Recommendation: Confirm with the product owner whether chart image export, data export (CSV/XLSX), and performance benchmarks are in scope for the charts section. If so, add corresponding features to this inventory and define acceptance criteria.
| Term | Definition |
|---|---|
| Functional (BABOK Type) | A feature that describes what the system does — a behavior, capability, or action the system performs in response to user or system input. |
| Non-Functional (BABOK Type) | A feature that describes a quality attribute of the system — how well it performs a function (e.g., security, performance, accessibility, reliability). |
| Constraint (BABOK Type) | A restriction on the design or implementation of the system that limits the solution space (e.g., must use a specific technology, must comply with a regulation). |
| Acceptance Criteria | Testable conditions that must be satisfied for a feature to be considered complete and correct. Written in Given/When/Then format where possible. |
| Must (MoSCoW) | The feature is a core requirement; the system cannot function correctly without it. |
| Should (MoSCoW) | The feature is important and expected, but the system can function without it in the short term. |
| Could (MoSCoW) | The feature is a nice-to-have that adds value but is not critical; it can be deferred without significant impact. |
| N/A (MoSCoW) | Priority cannot be determined from the available documentation. |
| Active (Status) | The feature is fully implemented and functional as documented. |
| Partial (Status) | The feature is implemented but has documented limitations, missing error handling, unconfirmed behavior, or relies on undocumented components. |
| Planned (Status) | The feature is not yet implemented but is referenced in documentation as intended. |
| Simple (Complexity) | The feature involves a single interaction or display, fewer than 3 components, no asynchronous behavior, and minimal error handling. |
| Medium (Complexity) | The feature involves multiple steps or display elements, 3–7 components, and may include asynchronous behavior or error handling. |
| Complex (Complexity) | The feature involves multi-step workflows, 7+ components, significant asynchronous behavior, and comprehensive error handling. |
| Term | Definition |
|---|---|
<router-outlet> |
An Angular directive that acts as a placeholder in the DOM where the router renders the component matched by the current URL. Child route components are dynamically inserted and removed here as navigation occurs. |
| Shell Component | An Angular component whose sole purpose is to provide a routing structure (via <router-outlet>) for child routes, containing no business logic or UI of its own. ChartsComponent is an example of this pattern. |
| Child Route | A route defined as a nested entry under a parent path (e.g., /charts) in the routing module. These routes render their components inside the <router-outlet> of the parent shell component. |
| Leaf Route | A route that has no child routes — it is a terminal destination in the application's routing tree. /charts/chartjs and /charts/d3 are leaf routes. |
| Feature Module | An Angular NgModule that encapsulates a related set of components, services, and routes for a specific application feature — in this case, the charts feature. |
| Presentational Component | An Angular component that contains no business logic, no state management, and no service dependencies — it only renders its template. ChartjsComponent is a presentational component. |
CanActivate Guard |
An Angular router interface used to protect routes from unauthorized access. Implementing classes return true to allow navigation or false/a UrlTree to block or redirect it. |
| Chart.js | An open-source JavaScript charting library that renders charts onto HTML5 <canvas> elements. It is the underlying visualization engine for the /charts/chartjs screen. |
| D3 (D3.js) | Data-Driven Documents — a JavaScript library for producing dynamic, interactive data visualizations in web browsers using SVG, Canvas, and HTML. It is the underlying visualization engine for the /charts/d3 screen. |
| Canvas Element | The HTML <canvas> element used by Chart.js to draw chart graphics programmatically via the browser's 2D rendering context. Canvas content is not natively accessible to screen readers. |
| SVG | Scalable Vector Graphics — the DOM-based rendering target most commonly used by D3.js to draw charts, graphs, and other visualizations. SVG elements can be made accessible with explicit ARIA attributes. |
| Nebular / NGX | A customizable Angular UI framework (@nebular/theme) that provides layout components (cards, grids, sidebars) used to structure the application's screens. Identified by the ngx- component selector prefix. |
ngx- prefix |
A naming convention used in this codebase for component selectors, derived from the Nebular UI framework (@nebular/theme) or a similar Angular component library. |
| Lazy Loading | An Angular router feature where a feature module's JavaScript bundle is only downloaded when the user first navigates to that module's route, improving initial load performance. |
ChangeDetectionStrategy.OnPush |
An Angular optimization setting that limits a component's change detection cycle to run only when its @Input references change or an event originates from within the component, rather than on every application-wide change detection cycle. |
| Standalone Component | An Angular component that declares its own dependencies directly (without an NgModule), introduced as a modern alternative to the NgModule-based architecture used in this codebase. |
| Role | Definition |
|---|---|
| All Authenticated Users | Any user who has successfully authenticated with the application. The specific named roles within this group (e.g., Admin, Analyst, Viewer) are not documented in the provided source and require confirmation from the product owner. See FGAP-05. |
| Unauthenticated Users | Users who have not authenticated with the application. Based on the expected route guard behavior, these users are redirected away from chart screens before any content is displayed. |