-
Notifications
You must be signed in to change notification settings - Fork 4
[NAE-2085] Refactor User #281
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release/7.0.0-rev2
Are you sure you want to change the base?
Conversation
- user rework changes
WalkthroughThis update introduces a major refactor of navigation logic, replacing the node-based Changes
Sequence Diagram(s)Remote Configuration Loading at App StartupsequenceDiagram
participant Browser
participant AngularApp
participant ConfigurationService
participant ConfigurationResourceService
participant Backend
Browser->>AngularApp: Loads index.html (includes env.js)
AngularApp->>ConfigurationService: APP_INITIALIZER calls loadConfiguration()
ConfigurationService->>ConfigurationResourceService: getPublicApplicationConfiguration(appConfig)
ConfigurationResourceService->>Backend: GET /frontend-config/public/{application}/{type}
Backend-->>ConfigurationResourceService: Returns app configuration
ConfigurationResourceService-->>ConfigurationService: Observable<ApplicationConfiguration>
ConfigurationService->>AngularApp: Initialization complete (config loaded)
Navigation Path Change (PathService Usage)sequenceDiagram
participant Component
participant PathService
Component->>PathService: set activePath('/some/path')
PathService-->>Component: emits activePath$ observable
Component->>PathService: get activePath (string)
Possibly related PRs
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (11)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (4)
🧰 Additional context used🧬 Code Graph Analysis (6)projects/netgrif-components/src/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-item/user-assign-item.component.spec.ts (1)
projects/netgrif-components/src/lib/side-menu/content-components/user-assign/user-assign-list/user-assign-list.component.spec.ts (2)
projects/netgrif-components/src/lib/side-menu/content-components/admin-impersonate/admin-impersonate-list/admin-impersonate-list.component.spec.ts (2)
projects/netgrif-components/src/lib/side-menu/content-components/multi-user-assign/multi-user-assign-list/multi-user-assign-item/multi-user-assign-item.component.spec.ts (1)
projects/netgrif-components/src/lib/side-menu/content-components/admin-impersonate/admin-impersonate-list/admin-impersonate-item/admin-impersonate-item.component.spec.ts (1)
projects/netgrif-components/src/lib/side-menu/content-components/multi-user-assign/multi-user-assign-list/multi-user-assign-list.component.spec.ts (2)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
🔇 Additional comments (6)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
- pull application configuration (nae.json) from backend (gateway which redirects to admin node) - load new pulled configuration inside configuration.service - add environment setup (env.js, environment.ts, index.html)
- documentation
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- testing pipeline
- rework based on pr comments - fix tests
- include not found error handling
- production env fix
- Replaced all instances of `UriService` with `PathService` for improved consistency and clarity in naming. Updated constructors, imports, and references throughout the codebase, including components, tests, and documentation. - Removed use of uri nodes across the frontend, and implemented use of string path instead of uri nodes
- Updated references to `_uriService` to `_pathService` in multiple components.
- Refactored `PathService` constructor to handle `pageSize` more robustly, including type validation and fallback logging. - Fixed improper binding in `navigation-double-drawer.component.html` for `routerLink`.
- Improved breadcrumbs redirection logic by adding null checks and appropriate error logging for missing targets. - Simplified and optimized left and right navigation item loading with reusable `processItems` and `getChildCasesFromPage` logic. - Enhanced error handling and loading state management to ensure robustness in edge cases.
- Added unit tests for `AbstractBreadcrumbsComponent` to validate redirection logic and error handling. - Enhanced test coverage for `AbstractNavigationDoubleDrawerComponent` by adding tests for menu state, sorting, and resize handling. - Updated `MockUriResourceService` with consistent root path conventions. - Extended `MockUserService` with logout and empty user functionality.
- Added unit tests for `AbstractBreadcrumbsComponent` to validate redirection logic and error handling. - Enhanced test coverage for `AbstractNavigationDoubleDrawerComponent` by adding tests for menu state, sorting, and resize handling. - Updated `MockUriResourceService` with consistent root path conventions. - Extended `MockUserService` with logout and empty user functionality.
- extended `MockUserService` logout functionality to notify user change via `_userChange$`.
- fix possible null pointer exception
[NAE-2125] Remove URI service usage from admin and menu items #318
[NAE-2116] Frontend remote configuration
# Conflicts: # projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
- fixes/changes after merging with the newest version
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 10
🔭 Outside diff range comments (2)
projects/netgrif-components-core/src/lib/navigation/service/uri.service.spec.ts (1)
1-121
: Remove deprecated UriService tests and add coverage for PathServiceThe commented-out
uri.service.spec.ts
should be deleted, and a new test suite forPathService
must be created to match the original scenarios. Currently there are noPathService
spec files underprojects/netgrif-components-core/src/lib/navigation/service/
.Please address the following:
- Delete or remove all commented code in
projects/netgrif-components-core/src/lib/navigation/service/uri.service.spec.ts
.- Add a new spec file
projects/netgrif-components-core/src/lib/navigation/service/path.service.spec.ts
that covers at least:
- Service creation (
should be created
)- Retrieving the root node
- Setting, getting, and resetting the active node
- Fetching a node by path
- Getting child nodes, siblings, and nodes by level
- Resolving parent paths and splitting paths into parts
- Verify that each test mirrors the behavior previously covered by the UriService tests, adapting method names if needed.
- Update any migration or refactor documentation to note the removal of
UriService
tests and the addition ofPathService
tests.docs/compodoc/components-core/components/AbstractNavigationDoubleDrawerComponent.html (1)
1-4555
: Auto-generated Compodoc artifacts should not be committed
docs/compodoc/**
HTML files are produced by the Compodoc generator during CI/release. Keeping them under version control leads to massive, noisy diffs and frequent merge conflicts.
Please drop these files from the PR and adddocs/compodoc/
to.gitignore
. The real change must be done in the corresponding TypeScript sources – documentation will be regenerated automatically.
🧹 Nitpick comments (17)
projects/nae-example-app/src/index.html (1)
9-9
: Load env script non-blocking & guard against missing fileThe config script executes synchronously and can delay first paint if the file is large or unavailable. Consider:
-<script src="assets/env.js"></script> +<script src="assets/env.js" defer></script>Also ensure build tooling copies
env.js
toassets/
for both prod & dev builds; otherwise the app will 404 at runtime.docs/compodoc/components-core/coverage.html (1)
4633-4642
: Consider dropping generated docs from PRsIncluding thousands-line HTML artifacts obscures code review and often causes merge noise. Unless your release process requires version-controlling generated docs, add them to
.gitignore
or push them only on release branches.projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.spec.ts (1)
12-16
: Remove redundant provider & injectHttpTestingController
for stricter tests
HttpClientTestingModule
already registers anHttpClient
provider – adding it manually is needless (and might shadow future overrides).
Moreover, consider injectingHttpTestingController
and verifying that no unexpected HTTP calls remain after each test; this will surface regressions immediately.- imports: [HttpClientTestingModule, NoopAnimationsModule], - providers: [HttpClient] + imports: [HttpClientTestingModule, NoopAnimationsModule]Add:
let httpMock: HttpTestingController; beforeEach(() => { ... httpMock = TestBed.inject(HttpTestingController); }); afterEach(() => httpMock.verify());projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts (1)
34-35
: Avoid repetitive empty allocations – introduce a shared constant
new UserValue('', '', '', '', '')
is instantiated every timegetLast()
is called on an empty list. A tiny optimisation & readability win:+const EMPTY_USER = new UserValue('', '', '', '', ''); public getLast(): UserValue { if (this._userValues.size == 0) { - return new UserValue('', '', '', '', ''); + return EMPTY_USER; } return Array.from(this._userValues.values()).pop()!; }Creates one object instead of potentially many and clarifies intent.
projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts (1)
16-21
: Consider making snackBarAction more configurable.The implementation correctly follows the
FrontActionDefinition
interface, but uses hardcoded values for type, position, and duration. Consider allowing these to be configured throughfrontAction.args
for greater flexibility.export const snackBarAction: FrontActionDefinition = { call: (injector: Injector, frontAction: FrontAction) => { const snackBarService = injector.get(SnackBarService); - snackBarService.openGenericSnackBar(frontAction.args[0], 'info', SnackBarVerticalPosition.BOTTOM, SnackBarHorizontalPosition.CENTER, 2500) + snackBarService.openGenericSnackBar( + frontAction.args.message || frontAction.args[0], + frontAction.args.type || 'info', + frontAction.args.verticalPosition || SnackBarVerticalPosition.BOTTOM, + frontAction.args.horizontalPosition || SnackBarHorizontalPosition.CENTER, + frontAction.args.duration || 2500 + ) } }projects/nae-example-app/src/environments/environment.prod.ts (1)
3-6
: Add safer access pattern for window['env'] object.The direct access to
window['env']
properties could cause runtime errors if theenv
object is not properly initialized. Consider adding null checks for better error handling.Apply this diff to add safer access:
export const environment = { production: true, - resolve_configuration: window['env']['resolve_configuration'] || false, - gateway_url: window['env']['gateway_url'] || 'http://localhost:8800/api', - application_identifier: window['env']['application_identifier'] || 'nae', - type_identifier: window['env']['type_identifier'] || 'default' + resolve_configuration: window['env']?.['resolve_configuration'] || false, + gateway_url: window['env']?.['gateway_url'] || 'http://localhost:8800/api', + application_identifier: window['env']?.['application_identifier'] || 'nae', + type_identifier: window['env']?.['type_identifier'] || 'default' };projects/netgrif-components-core/src/lib/utility/load-configuration.ts (2)
24-28
: Add missing semicolon for consistency.The function is missing a semicolon after the return statement.
Apply this diff to add the missing semicolon:
export function loadConfiguration(configurationService: ConfigurationService): () => Observable<any> { return (): Observable<any> => { return configurationService.loadConfiguration(); - } + }; }
5-23
: Consider enhancing JSDoc with error handling information.The documentation is comprehensive, but it could benefit from more specific information about what happens when configuration loading fails, based on the relevant code snippet showing error handling in the ConfigurationService.
Apply this diff to enhance the documentation:
/** * Factory function that creates a configuration loader for application initialization. * This function serves as an APP_INITIALIZER provider factory to load configuration * before the application bootstrap completes. * * @param configurationService - Injectable service handling configuration loading and management * @returns A function that returns an Observable which resolves when configuration is loaded - * @throws {Error} When configuration service fails to load required configuration + * @note If configuration loading fails (e.g., 404 errors), the service handles errors gracefully + * by returning null and continuing with default configuration * @exampleprojects/nae-example-app/src/environments/environment.ts (1)
6-11
: Verify window['env'] initialization and add type safety.The dynamic configuration approach looks good, but consider these potential issues:
- Runtime safety: Accessing
window['env']
without verification could cause errors if the object doesn't exist- Type safety: No TypeScript typing for the
window['env']
objectConsider adding type safety and runtime verification:
+declare global { + interface Window { + env?: { + resolve_configuration?: boolean; + gateway_url?: string; + application_identifier?: string; + type_identifier?: string; + }; + } +} export const environment = { production: false, - resolve_configuration: window['env']['resolve_configuration'] || false, - gateway_url: window['env']['gateway_url'] || 'http://localhost:8800/api', - application_identifier: window['env']['application_identifier'] || 'nae', - type_identifier: window['env']['type_identifier'] || 'default' + resolve_configuration: window.env?.resolve_configuration || false, + gateway_url: window.env?.gateway_url || 'http://localhost:8800/api', + application_identifier: window.env?.application_identifier || 'nae', + type_identifier: window.env?.type_identifier || 'default' };projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts (1)
16-24
: Consider removing unnecessary constructor.The constructor only passes parameters to the parent class without additional logic, making it redundant. TypeScript can handle dependency injection without an explicit constructor when no additional initialization is needed.
Consider removing the unnecessary constructor:
- constructor(_pathService: PathService, - _caseResourceService: CaseResourceService, - _activatedRoute: ActivatedRoute, - _router: Router, - _dynamicRoutingService: DynamicNavigationRouteProviderService, - _translateService: TranslateService, - _log: LoggerService) { - super(_pathService, _caseResourceService, _activatedRoute, _router, _dynamicRoutingService, _translateService, _log); - }The Angular DI system will automatically inject dependencies into the parent constructor.
docs/compodoc/components/components/ImportNetComponent.html (2)
197-198
: Rename constructor parameter from_uriService
to_pathService
in the TypeScript sourceThe injected service was migrated to
PathService
, yet the parameter is still called_uriService
.
Keeping the old name is misleading and will propagate confusion throughout the codebase and auto-generated docs.- protected _uriService: PathService, + protected _pathService: PathService, ... - super(_sideMenuControl, _petriNetResource, _uriService, _log, _snackbar, _translate); + super(_sideMenuControl, _petriNetResource, _pathService, _log, _snackbar, _translate);Apply the change in
projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
(and any subclasses) – the documentation will regenerate automatically.Also applies to: 341-348
1-10
: Avoid committing Compodoc artefacts
docs/compodoc/**
files are auto-generated during the release pipeline.
Checking them into the repository bloats diffs and forces reviewers to scan thousands of irrelevant HTML lines.Consider removing these files from the PR and adding them to
.gitignore
, or generating them only in release branches.docs/compodoc/components/components/BreadcrumbsComponent.html (2)
190-217
: Update parameter naming to reflect the new serviceSame issue as in
ImportNetComponent
: the constructor still uses_uriService
while the type isPathService
.- constructor(protected _uriService: PathService, + constructor(protected _pathService: PathService, ... - super(_uriService, _caseResourceService, ... + super(_pathService, _caseResourceService, ...Change it in
projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts
.
Docs will regenerate with the corrected signature.Also applies to: 330-338
1-10
: Compodoc HTML should not be part of the reviewAs noted previously, committing generated documentation causes unnecessary noise.
Excludedocs/compodoc/
from version control or regenerate it only in release artifacts.projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts (1)
12-30
: Remove unnecessary constructorThe constructor only passes parameters to the parent class without adding any logic. TypeScript will automatically generate this behavior when omitted.
class TestBreadcrumbsComponent extends AbstractBreadcrumbsComponent { - constructor( - pathService, - caseResourceService, - activatedRoute, - router, - dynamicRoutingService, - translateService, - logger - ) { - super( - pathService, - caseResourceService, - activatedRoute, - router, - dynamicRoutingService, - translateService, - logger - ); - } public setRedirectUrls(map: Map<string, Array<string>>) { (this as any).redirectUrls = map; }projects/netgrif-components-core/src/lib/configuration/configuration.service.ts (1)
284-284
: Use console.error for error loggingError messages should use
console.error
instead ofconsole.log
for better visibility in browser consoles.- console.log(err.message); + console.error(err.message);projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts (1)
478-478
: Remove redundant double negationThe
if
statement already coerces values to boolean, making the!!
operator unnecessary.- if (!!this._childCustomViews[this.currentPath]) { + if (this._childCustomViews[this.currentPath]) {- if (!!this._childCustomViews[this.extractParent(this.currentPath)]) { + if (this._childCustomViews[this.extractParent(this.currentPath)]) {Also applies to: 484-484
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (65)
.github/workflows/pr-build.yml
(2 hunks)docs/compodoc/components-core/classes/FileUploadModel.html
(4 hunks)docs/compodoc/components-core/components/AbstractBreadcrumbsComponent.html
(9 hunks)docs/compodoc/components-core/components/AbstractImportNetComponent.html
(17 hunks)docs/compodoc/components-core/components/AbstractNavigationDoubleDrawerComponent.html
(43 hunks)docs/compodoc/components-core/coverage.html
(1 hunks)docs/compodoc/components-core/injectables/UriService.html
(24 hunks)docs/compodoc/components-core/interfaces/FileList.html
(3 hunks)docs/compodoc/components-core/interfaces/ViewNavigationItem.html
(5 hunks)docs/compodoc/components-core/js/menu-wc.js
(2 hunks)docs/compodoc/components/components/BreadcrumbsComponent.html
(5 hunks)docs/compodoc/components/components/ImportNetComponent.html
(6 hunks)docs/compodoc/components/components/ImportNetDialogComponent.html
(17 hunks)docs/compodoc/components/components/NavigationDoubleDrawerComponent.html
(8 hunks)docs/compodoc/components/interfaces/FileList.html
(3 hunks)package.json
(1 hunks)projects/nae-example-app/src/app/app.module.ts
(3 hunks)projects/nae-example-app/src/app/nae-example-app-configuration.service.ts
(1 hunks)projects/nae-example-app/src/assets/env.js
(1 hunks)projects/nae-example-app/src/assets/env.template.js
(1 hunks)projects/nae-example-app/src/environments/environment.prod.ts
(1 hunks)projects/nae-example-app/src/environments/environment.ts
(1 hunks)projects/nae-example-app/src/index.html
(1 hunks)projects/netgrif-components-core/package.json
(1 hunks)projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts
(1 hunks)projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.spec.ts
(4 hunks)projects/netgrif-components-core/src/lib/authentication/sign-up/services/sign-up.service.spec.ts
(4 hunks)projects/netgrif-components-core/src/lib/configuration/application-configuration.ts
(1 hunks)projects/netgrif-components-core/src/lib/configuration/configuration.service.ts
(2 hunks)projects/netgrif-components-core/src/lib/configuration/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-field.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.ts
(6 hunks)projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.spec.ts
(5 hunks)projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts
(15 hunks)projects/netgrif-components-core/src/lib/navigation/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/service/path.service.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/service/uri.service.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts
(0 hunks)projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts
(1 hunks)projects/netgrif-components-core/src/lib/resources/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.spec.ts
(3 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.ts
(2 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/multi-user-assign-list/abstract-multi-user-assign-list.component.ts
(1 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.ts
(1 hunks)projects/netgrif-components-core/src/lib/side-menu/side-menu-container/abstract-side-menu-container.component.spec.ts
(2 hunks)projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
(2 hunks)projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
(1 hunks)projects/netgrif-components-core/src/lib/utility/load-configuration.ts
(1 hunks)projects/netgrif-components-core/src/lib/utility/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-uri-resource.service.ts
(4 hunks)projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-user.service.ts
(2 hunks)projects/netgrif-components-core/src/lib/utility/tests/test-config.ts
(2 hunks)projects/netgrif-components-core/src/lib/utility/tests/test-mock-dependencies.module.ts
(2 hunks)projects/netgrif-components/package.json
(2 hunks)projects/netgrif-components/src/lib/dialog/import-net-dialog/import-net-dialog.component.ts
(1 hunks)projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts
(2 hunks)projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.html
(1 hunks)projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.ts
(2 hunks)projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
(2 hunks)
💤 Files with no reviewable changes (1)
- projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts
🧰 Additional context used
🧠 Learnings (12)
docs/compodoc/components-core/js/menu-wc.js (3)
undefined
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
</retrieved_learning>
docs/compodoc/components/components/NavigationDoubleDrawerComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components-core/interfaces/FileList.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
docs/compodoc/components-core/classes/FileUploadModel.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
docs/compodoc/components-core/components/AbstractBreadcrumbsComponent.html (2)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components/interfaces/FileList.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
docs/compodoc/components/components/ImportNetComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components-core/components/AbstractNavigationDoubleDrawerComponent.html (1)
undefined
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
</retrieved_learning>
docs/compodoc/components-core/components/AbstractImportNetComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components/components/ImportNetDialogComponent.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
docs/compodoc/components-core/interfaces/ViewNavigationItem.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
docs/compodoc/components-core/coverage.html (2)
undefined
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
</retrieved_learning>
🧬 Code Graph Analysis (14)
projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts (1)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)
projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts (3)
projects/nae-example-app/src/app/nae-example-app-configuration.service.ts (1)
Injectable
(6-19)projects/netgrif-components-core/src/lib/utility/tests/test-config.ts (1)
Injectable
(8-448)projects/netgrif-components-core/src/lib/configuration/application-configuration.ts (1)
ApplicationConfiguration
(27-33)
projects/netgrif-components-core/src/lib/utility/load-configuration.ts (1)
projects/netgrif-components-core/src/lib/configuration/configuration.service.ts (1)
loadConfiguration
(274-295)
projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/multi-user-assign-list/abstract-multi-user-assign-list.component.ts (1)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)
projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.spec.ts (3)
projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts (1)
Injectable
(13-45)projects/netgrif-components-core/src/lib/utility/tests/test-config.ts (1)
Injectable
(8-448)projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.ts (1)
Injectable
(11-34)
projects/netgrif-components-core/src/lib/authentication/sign-up/services/sign-up.service.spec.ts (3)
projects/nae-example-app/src/app/nae-example-app-configuration.service.ts (1)
Injectable
(6-19)projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts (1)
Injectable
(13-45)projects/netgrif-components-core/src/lib/utility/tests/test-config.ts (1)
Injectable
(8-448)
projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.ts (1)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.ts (1)
projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (1)
splitPath
(62-64)
projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (1)
projects/netgrif-components-core/src/lib/navigation/model/size-menu-injection-token.ts (1)
NAE_URI_NODE_CASES_PAGE_SIZE
(6-6)
projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts (2)
projects/netgrif-components-core/src/lib/actions/model/front-action-definition.ts (1)
FrontActionDefinition
(4-6)projects/netgrif-components-core/src/lib/data-fields/models/changed-fields.ts (1)
FrontAction
(48-53)
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-uri-resource.service.ts (1)
projects/netgrif-components-core/src/lib/navigation/model/uri-resource.ts (1)
UriNodeResource
(2-13)
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts (3)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-field.ts (1)
UserField
(9-26)projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts (1)
UserListValue
(8-49)
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-user.service.ts (1)
projects/netgrif-components-core/src/lib/user/models/user.ts (1)
User
(7-63)
projects/netgrif-components-core/src/lib/configuration/configuration.service.ts (2)
projects/netgrif-components-core/src/commons/schema.ts (2)
Services
(279-346)NetgrifApplicationEngine
(18-27)projects/netgrif-components-core/src/lib/configuration/application-configuration.ts (1)
ApplicationConfiguration
(27-33)
🪛 Biome (1.9.4)
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts
[error] 12-30: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
[error] 87-87: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts
[error] 16-24: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts
[error] 478-478: Avoid redundant double-negation.
It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation
(lint/complexity/noExtraBooleanCast)
[error] 484-484: Avoid redundant double-negation.
It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation
(lint/complexity/noExtraBooleanCast)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
- GitHub Check: task-list-completed
- GitHub Check: Matrix Test (24)
- GitHub Check: Test with SonarCloud
- GitHub Check: Matrix Test (20)
- GitHub Check: Matrix Test (22)
- GitHub Check: task-list-completed
- GitHub Check: task-list-completed
🔇 Additional comments (78)
package.json (1)
3-3
: Confirm ancillary artifacts get the bump as wellVersion was bumped to
7.0.0-rc.4
, but I don’t see an accompanying CHANGELOG entry or an updatedpackage-lock.json
/pnpm-lock.yaml
. Please make sure the lock file and release notes are generated in the same commit, otherwise CI and consumers might still resolverc.3
.projects/netgrif-components-core/package.json (1)
3-3
: Synchronise peer/optional ranges with the new core versionThe package version moved to
rc.4
, yet peer-dependency ranges still reference~17.1.0
Angular packages while the root project already sits on17.3.x
. Verify that the published artifact really builds against17.3
or loosen the ranges to^17.0.0
to avoid unmet-peer warnings.projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.ts (1)
7-8
: Constructor arg order may be out-of-sync with the abstract class
super()
now receives_pathService
between_config
and_caseResourceService
. Double-checkAbstractNavigationDoubleDrawerComponent
’s signature after theUriService
→PathService
swap; a mismatch will only surface at runtime.If the base class expects
(config, caseResource, pathService)
you’ll get silent DI mis-wiring.Also applies to: 67-74
projects/netgrif-components/package.json (1)
3-3
: Version bump looks good and maintains consistency.The version increment from
7.0.0-rc.3
to7.0.0-rc.4
is properly coordinated between the package version and its peer dependency on@netgrif/components-core
.Also applies to: 32-32
projects/netgrif-components-core/src/lib/utility/public-api.ts (1)
30-30
: Good addition to the public API.The export statement follows the established pattern and makes the load-configuration utility available for external use, supporting the dynamic configuration loading feature mentioned in the PR objectives.
projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts (1)
80-82
: UserValue constructor updated appropriately.The constructor call has been updated to include the additional parameter, aligning with the User refactoring. The use of empty strings for the additional parameters appears intentional for this context where only the user ID is available.
projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.spec.ts (1)
19-21
: Expand beyond the “should be created” smoke-testThe service’s core job is to hit the configuration endpoint and map the response. A single instantiation check won’t protect that contract. Add a test that
- calls the public fetch method,
- flushes a mocked response via
HttpTestingController
,- asserts that the mapped object matches expectations.
That gives immediate feedback if the endpoint path or response mapping changes.
projects/netgrif-components-core/src/lib/configuration/public-api.ts (1)
3-3
: Good addition –ApplicationConfiguration
now exposed publicly
Makes the new dynamic-configuration flow consumable by downstream code.projects/netgrif-components-core/src/lib/resources/public-api.ts (1)
9-9
: Public export looks correct
ConfigurationResourceService
is now consumable outside the core package, aligning with the new configuration loader.projects/netgrif-components-core/src/lib/navigation/public-api.ts (1)
15-17
: Confirm allUriService
imports removed & tree-shaken
PathService
is now the official navigation API, buturi-resource.service
andmodel/uri-resource
artefacts remain exported. Double-check that code still depending on the retiredUriService
was fully migrated; stale imports will now error only at compile time.If everything compiles cleanly this comment can be ignored.
projects/netgrif-components-core/src/lib/utility/tests/test-mock-dependencies.module.ts (1)
7-7
: LGTM - ResourceProvider addition supports enhanced configuration management.The addition of
ResourceProvider
to the test dependencies is consistent with the broader infrastructure changes for configuration resource services.Also applies to: 27-27
projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.ts (1)
13-13
: LGTM - Consistent migration from UriService to PathService.The changes properly update the import and constructor parameter as part of the systematic migration to string-based path management.
Also applies to: 46-46
projects/netgrif-components/src/lib/dialog/import-net-dialog/import-net-dialog.component.ts (1)
8-8
: LGTM - UriService removal aligns with systematic migration.The complete removal of
UriService
without replacement is appropriate for a dialog component that doesn't require path management functionality.projects/netgrif-components-core/src/lib/side-menu/side-menu-container/abstract-side-menu-container.component.spec.ts (1)
17-17
: LGTM - Test properly updated for PathService migration.The test changes consistently update all references from
UriService
toPathService
, maintaining proper test coverage during the service migration.Also applies to: 91-91, 95-95
.github/workflows/pr-build.yml (3)
8-8
: LGTM: Specifying Ubuntu version for better reproducibility.Using
ubuntu-24.04
instead ofubuntu-latest
ensures consistent CI environment across builds and avoids potential breaking changes from unexpected Ubuntu version updates.
11-11
: LGTM: Updated Node.js version matrix aligns with current LTS support.Expanding from
[18, 20]
to[20, 22, 24]
ensures compatibility with current and future Node.js LTS versions while dropping Node.js 18 support.
20-21
: LGTM: Standardized dependency installation step.The rename to "Install dependencies" and using
npm install
instead ofnpm i
improves clarity and follows npm best practices.projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts (2)
10-10
: LGTM: Service replacement aligns with the refactoring.The replacement of
UriService
withPathService
is consistent with the broader refactoring mentioned in the PR objectives.
35-39
: LGTM: Constructor parameter and super call updated consistently.The constructor parameter and super call have been correctly updated to use
_pathService
instead of_uriService
, maintaining consistency with the service replacement.docs/compodoc/components/components/ImportNetDialogComponent.html (1)
297-297
: Skip: Auto-generated documentation file.This is an auto-generated Compodoc documentation file that gets regenerated during the release process. Changes should be made to the actual TypeScript source files rather than the HTML documentation files.
Also applies to: 371-371
projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.html (1)
136-136
: LGTM: Updated navigation logic aligns with path-based refactoring.The change from
isItemAndNodeEqual(folder, currentNode)
toisItemAndPathEqual(folder, currentPath)
is consistent with the broader refactoring from node-based to path-based navigation usingPathService
instead ofUriService
.projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/multi-user-assign-list/abstract-multi-user-assign-list.component.ts (2)
62-62
: LGTM! UserValue constructor correctly updated for userUnselected event.The parameter mapping correctly follows the refactored
UserValue
constructor signature with the new user identity model.
65-65
: LGTM! UserValue constructor correctly updated for userSelected event.The parameter mapping correctly follows the refactored
UserValue
constructor signature with the new user identity model.projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.spec.ts (4)
24-24
: LGTM! Import statement correctly updated for PathService.The import change is consistent with the broader UriService to PathService refactor.
52-52
: LGTM! Provider configuration correctly updated for PathService.The test module provider configuration is properly updated to use PathService.
112-112
: LGTM! Constructor parameter type correctly updated.The constructor parameter type is properly updated from
UriService
toPathService
.
116-116
: LGTM! Super constructor call correctly updated.The super constructor call is properly updated to pass the
_pathService
parameter.projects/nae-example-app/src/assets/env.template.js (1)
1-8
: LGTM! Well-structured environment configuration template.The implementation follows good practices:
- Uses defensive programming with
window["env"] = window["env"] || {}
to extend rather than overwrite existing configuration- Employs proper placeholder syntax for build-time substitution
- Includes all necessary configuration properties for dynamic environment loading
docs/compodoc/components/components/NavigationDoubleDrawerComponent.html (1)
233-233
: Documentation correctly reflects PathService refactor.The documentation shows the constructor parameter has been updated from
UriService
toPathService
, which correctly reflects the broader refactor. However, note that this is an auto-generated Compodoc documentation file that should not be manually modified as it will be regenerated during the release process.Also applies to: 367-367, 563-563, 623-623
docs/compodoc/components-core/injectables/UriService.html (1)
94-94
: Auto-generated documentation should not be manually edited.This HTML file is auto-generated by Compodoc during the release process from TypeScript source files. Any changes to service names, references, or documentation should be made in the actual TypeScript source files, as this HTML documentation will be overwritten on the next build.
The service refactoring from
UriService
toPathService
should be reflected in the source TypeScript files, not in this generated documentation.Also applies to: 99-107, 1384-1384, 1593-1593, 1660-1660
projects/nae-example-app/src/assets/env.js (1)
1-8
: LGTM! Well-structured runtime environment configuration.The implementation follows good practices:
- Uses IIFE to avoid global scope pollution beyond the intended
window.env
object- Properly initializes the environment object with fallback handling
- Provides centralized configuration for dynamic loading features
- Clean separation between static and runtime configuration
This setup effectively supports the dynamic configuration loading mechanism introduced in the PR.
docs/compodoc/components/interfaces/FileList.html (1)
106-114
: Auto-generated documentation should not be manually edited.This HTML file is auto-generated by Compodoc during the release process. The service refactoring from
UriService
toPathService
and any formatting improvements should be applied to the source TypeScript files (ImportNetDialogComponent
and related components) rather than this generated documentation file, as it will be overwritten during the next documentation build.Also applies to: 163-163, 199-199
projects/nae-example-app/src/app/app.module.ts (2)
2-2
: LGTM! Proper imports for dynamic configuration loading.The imports are correctly added for implementing the APP_INITIALIZER pattern with dynamic configuration loading functionality.
Also applies to: 22-24
248-259
: LGTM! Well-structured APP_INITIALIZER configuration.The provider configuration follows Angular best practices:
ResourceProvider
is positioned first to ensure base services are availableConfigurationService
is properly configured with the custom implementationAPP_INITIALIZER
is correctly set up with theloadConfiguration
factory function- Dependencies are properly specified and
multi: true
is set appropriatelyThis implementation effectively integrates dynamic configuration loading into the Angular app lifecycle.
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-user.service.ts (2)
2-2
: LGTM! Proper RxJS import for logout functionality.The
of
import is correctly added to support the logout method's return value.
53-61
: LGTM! Well-implemented logout functionality.The logout implementation follows good practices:
- Properly resets user state using the
emptyUser()
helper method- Emits the change via
ReplaySubject
to notify subscribers- Returns an observable as expected for logout operations
- The
emptyUser()
method creates a User instance with appropriate empty values that match the User constructor signatureThis enhancement provides consistent logout behavior for mock testing scenarios.
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts (3)
82-82
: LGTM! UserValue constructor updated correctly.The UserValue constructor call has been properly updated to include the new
realmId
parameter and useusername
instead of
89-89
: LGTM! UserListValue construction updated correctly.The UserValue instances within the UserListValue are correctly constructed with the new parameter signature including
realmId
andusername
.
291-291
: LGTM! Backend value formatting updated correctly.The UserValue construction in
formatValueFromBackend
has been properly updated to match the new constructor signature.docs/compodoc/components-core/classes/FileUploadModel.html (1)
103-113
: Skip reviewing auto-generated documentation.Based on previous learnings, HTML files in the
docs/compodoc/
directory are auto-generated during the release process from TypeScript source files. These files should not be manually edited as they will be overwritten on the next documentation build.Any refactoring or updates should be made to the actual TypeScript source files, and the documentation will be regenerated during the build process.
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-uri-resource.service.ts (4)
12-14
: LGTM! Static path constants updated consistently.The static test paths have been correctly updated from "root/test1" and "root/test2" to "/test1" and "/test2", aligning with the new path-based navigation approach.
17-18
: LGTM! Root node standardized to "/" path.The root node has been properly updated to use "/" as both the ID and path, which is a logical choice for path-based navigation systems.
31-31
: LGTM! Parent ID references updated consistently.The parentId references in both test nodes have been correctly updated from "root" to "/" to maintain consistency with the new root node representation.
Also applies to: 42-42
64-64
: LGTM! Method logic updated to match new root ID.The
getNodesByParent
method has been properly updated to check for parentId equal to "/" instead of "root", maintaining the method's functionality with the new root node representation.docs/compodoc/components-core/interfaces/FileList.html (2)
106-115
: Auto-generated documentation should not be manually edited.Based on previous learnings, HTML files in the
docs/compodoc/
directory are auto-generated documentation that gets regenerated during the release process. These formatting changes and service renames should be made to the actual TypeScript source files instead, as the HTML documentation files will be overwritten on the next documentation build.
168-201
: Changes should be applied to source TypeScript files.The service rename from
UriService
toPathService
in the embedded TypeScript code should be applied to the actual source file rather than this auto-generated documentation. The HTML documentation will be regenerated from the source files during the build process.docs/compodoc/components-core/interfaces/ViewNavigationItem.html (2)
92-103
: Auto-generated documentation should not be manually edited.This is auto-generated Compodoc documentation that gets regenerated during the release process. Manual edits to HTML files will be overwritten, so changes should be made to the source TypeScript files instead.
214-320
: Service rename should be applied to source files.The
UriService
toPathService
rename in the embedded TypeScript code should be applied to the actual source file. The HTML documentation will be regenerated from the source files during the build process.projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.ts (1)
77-77
: LGTM! UserValue constructor correctly updated.The constructor parameters have been properly updated to match the new
UserValue
model structure. The property mapping is correct:
id
→id
realmId
→realmId
(new property)firstName
→firstName
(renamed fromname
)lastName
→lastName
(renamed fromsurname
)username
→username
(renamed fromThis change aligns with the backend User rework mentioned in the PR objectives.
projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts (1)
3-3
: LGTM! Service import correctly updated.The import change from
UriService
toPathService
is part of the systematic migration to string path-based navigation mentioned in the PR objectives.projects/netgrif-components-core/src/lib/configuration/application-configuration.ts (1)
1-33
: Well-defined interface with comprehensive documentation.The
ApplicationConfiguration
interface is properly structured with clear separation of required and optional properties. The JSDoc documentation provides excellent context for each field's purpose, making the interface self-documenting and developer-friendly.projects/nae-example-app/src/app/nae-example-app-configuration.service.ts (1)
10-17
: Properly implemented dynamic configuration loading.The constructor correctly creates an
ApplicationConfiguration
object from environment variables and passes it to the parentConfigurationService
along with the injectedConfigurationResourceService
. This implementation follows the new configuration loading pattern introduced in the core services.projects/netgrif-components-core/src/lib/authentication/sign-up/services/sign-up.service.spec.ts (3)
9-12
: Properly updated imports for new dependencies.The additional imports correctly include the new services required for the updated configuration loading mechanism.
92-94
: Correct test setup for new service dependencies.The test module configuration properly includes the required providers (
HttpClient
,ResourceProvider
,ConfigurationResourceService
) for the updated configuration service architecture.
128-154
: Test configuration service properly updated.The
MissingEndpointsConfigurationService
correctly:
- Uses
@Injectable()
decorator- Accepts
ConfigurationResourceService
in constructor- Passes the required parameters to the parent constructor matching the new
ApplicationConfiguration
interface structuredocs/compodoc/components-core/components/AbstractImportNetComponent.html (2)
281-281
: Documentation correctly reflects the service migration from UriService to PathService.The constructor documentation shows the updated parameter type from
UriService
toPathService
, which aligns with the broader refactoring effort. As these Compodoc files are auto-generated from TypeScript source files, this update indicates that the underlying source code has been properly updated.
331-331
: Parameter type documentation updated consistently.The parameter table correctly shows
PathService
as the type for the_uriService
parameter, maintaining consistency with the constructor signature update.projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (3)
6-11
: Well-structured service with proper Angular patterns.The service follows Angular best practices with proper dependency injection configuration using
providedIn: 'root'
and clear JSDoc documentation.
18-43
: Robust pageSize parameter validation with comprehensive error handling.The constructor properly validates the injected pageSize parameter with appropriate fallbacks and logging. The validation handles both string and number types correctly, with clear error messages for invalid inputs.
45-64
: Clean reactive API design for path management.The service provides a well-designed reactive API using BehaviorSubject for path state management. The getter/setter pattern for
activePath
along with the observable streamactivePath$
follows Angular reactive patterns effectively.docs/compodoc/components-core/components/AbstractNavigationDoubleDrawerComponent.html (1)
3838-3841
: Suspicious import path forPathService
The generated source snippet shows
import {PathService} from '../service/uri.service';If the new service file is
path.service.ts
, the correct import should be'../service/path.service'
.
Double-check the actual TypeScript implementation; a wrong path will break compilation even if the docs render fine.projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.spec.ts (3)
10-13
: LGTM - Import additions support the configuration refactor.The new imports align with the broader changes to support dynamic configuration loading via
ConfigurationResourceService
.
63-65
: LGTM - Provider setup supports the new dependency injection chain.The providers are correctly configured to support the
ConfigurationResourceService
dependency injection requirements.
84-108
: LGTM - Service updated to match new ConfigurationService constructor.The
MissingEndpointsConfigurationService
is correctly updated with the@Injectable()
decorator and updated constructor signature that matches the newConfigurationService
requirements.projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts (3)
13-26
: LGTM - Well-structured service with appropriate constants.The service follows Angular best practices with proper singleton configuration and well-named constants for URL construction.
28-28
: LGTM - Constructor properly injects required dependencies.The constructor correctly injects
ResourceProvider
with appropriate access modifier.
39-44
: LGTM - Method correctly implements configuration fetching.The
getPublicApplicationConfiguration
method properly constructs the URL from configuration parameters and returns the appropriate Observable type.projects/netgrif-components-core/src/lib/utility/tests/test-config.ts (3)
2-8
: LGTM - Import additions and Injectable decorator support test configuration.The imports and
@Injectable()
decorator are correctly added to support the updated test configuration service.
11-13
: LGTM - Constructor properly sets up test dependency injection chain.The constructor correctly instantiates the required services for testing the configuration service.
439-454
: LGTM - Configuration parameters correctly passed to superclass.The superclass constructor call now includes the required
configurationResource
andApplicationConfiguration
parameters.Note: The
TestHttp.handle()
method returnsundefined
. Verify this is intentional for testing purposes.docs/compodoc/components-core/components/AbstractBreadcrumbsComponent.html (1)
269-295
: Skip review - Auto-generated documentation.This is auto-generated Compodoc documentation that reflects the
UriService
toPathService
migration in the source code. Per previous learnings, these files are regenerated during the release process.projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.ts (6)
2-2
: LGTM - Import updated for PathService migration.The import statement correctly reflects the migration from
UriService
toPathService
.
41-41
: LGTM - Constructor parameter updated for PathService.The constructor parameter correctly reflects the service migration from
UriService
toPathService
.
69-69
: LGTM - Method call updated for PathService API.The method call correctly uses the new
PathService.splitPath()
method withactivePath
instead of the previous node-based approach.
100-100
: LGTM - Property access updated for PathService.The property access correctly uses
_pathService.activePath.length
instead of the previous node-based approach.
117-122
: LGTM - Redirect method enhanced with better error handling.The redirect method correctly uses
_pathService.activePath
and adds appropriate error handling with logging for missing redirect targets.
138-149
: LGTM - changePath method simplified for PathService migration.The method correctly uses
PathService
methods and simplifies the logic by removing asynchronous node retrieval in favor of direct path setting.projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
1-42
: Well-structured refactoring of the UserValue modelThe updates improve clarity with more precise field names and add multi-tenant support through the realmId field. The implementation is clean and consistent.
...s/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.spec.ts
Outdated
Show resolved
Hide resolved
user = new UserValue('0', 'name', 'surname', 'mail'); | ||
expect(user.id).toEqual('0'); | ||
expect(user.name).toEqual('name'); | ||
expect(user.surname).toEqual('surname'); | ||
expect(user.firstName).toEqual('name'); | ||
expect(user.lastName).toEqual('surname'); | ||
expect(user.fullName).toEqual('name surname'); | ||
expect(user.email).toEqual('mail'); | ||
expect(user.username).toEqual('mail'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify UserValue constructor signature consistency.
The test expectations have been updated to use the new property names (firstName
, lastName
, username
), but the constructor call still uses 4 parameters. However, in the delegate service file, the UserValue constructor is called with 5 parameters. This suggests the test might not be fully updated to match the new constructor signature.
🏁 Script executed:
#!/bin/bash
# Description: Verify UserValue constructor signature and usage across the codebase
# Expected: Find the actual constructor signature and all its usages
# Find the UserValue class definition
ast-grep --pattern 'class UserValue {
$$$
constructor($$$) {
$$$
}
$$$
}'
# Find all UserValue constructor calls
rg -A 2 'new UserValue\('
Length of output: 299288
Fix UserValue constructor usage in tests
The UserValue constructor now requires five parameters—(id, realmId, firstName, lastName, username)—but tests still call it with four. Update all test instantiations to include the new realmId argument (e.g. an empty string if not relevant).
• projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts
- user = new UserValue('0', 'name', 'surname', 'mail');
+ user = new UserValue('0', '', 'name', 'surname', 'mail');
+ expect(user.realmId).toEqual('');
• Apply the same pattern to other specs invoking new UserValue(...)
with four args (e.g. user-assign, multi-user-assign, delegate-task.service, etc.), inserting ''
as the second parameter and, where useful, adding expect(...realmId).toEqual('')
.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
user = new UserValue('0', 'name', 'surname', 'mail'); | |
expect(user.id).toEqual('0'); | |
expect(user.name).toEqual('name'); | |
expect(user.surname).toEqual('surname'); | |
expect(user.firstName).toEqual('name'); | |
expect(user.lastName).toEqual('surname'); | |
expect(user.fullName).toEqual('name surname'); | |
expect(user.email).toEqual('mail'); | |
expect(user.username).toEqual('mail'); | |
user = new UserValue('0', '', 'name', 'surname', 'mail'); | |
expect(user.realmId).toEqual(''); | |
expect(user.id).toEqual('0'); | |
expect(user.firstName).toEqual('name'); | |
expect(user.lastName).toEqual('surname'); | |
expect(user.fullName).toEqual('name surname'); | |
expect(user.username).toEqual('mail'); |
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts
lines 7 to 12, the UserValue constructor is called with four arguments but now
requires five (id, realmId, firstName, lastName, username). Fix this by adding
an empty string '' as the second argument for realmId in all UserValue
instantiations in this file and other related specs like user-assign,
multi-user-assign, and delegate-task.service. Also, add assertions to check that
realmId equals '' where applicable.
<a href="./injectables/PathService.html">projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts</a> | ||
</td> | ||
<td>injectable</td> | ||
<td>UriService</td> | ||
<td>PathService</td> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Broken link & manual edit of auto-generated Compodoc – please regenerate, don’t patch HTML
The anchor still targets uri.service.ts
while the displayed entity is PathService
, so the link will 404 in the generated site.
More importantly, Compodoc files are regenerated from the TypeScript sources during the build; committing hand-edited HTML will be lost on the next run and pollutes the diff.
Fix in source:
- Make sure the actual file was renamed to
path.service.ts
and all references updated. - Run the Compodoc generation task (
npm run docs
or equivalent) and commit the refreshed output.
🤖 Prompt for AI Agents
In docs/compodoc/components-core/coverage.html around lines 4636 to 4639, the
link incorrectly points to uri.service.ts instead of path.service.ts, causing a
broken link. To fix this, ensure the original TypeScript file is renamed to
path.service.ts and all references updated accordingly. Then regenerate the
Compodoc documentation by running the appropriate docs generation command (e.g.,
npm run docs) and commit the updated generated files instead of manually editing
the HTML.
<a href="injectables/UriResourceService.html" data-type="entity-link" >UriResourceService</a> | ||
</li> | ||
<li class="link"> | ||
<a href="injectables/UriService.html" data-type="entity-link" >UriService</a> | ||
<a href="injectables/PathService.html" data-type="entity-link" >PathService</a> | ||
</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Stop committing Compodoc-generated HTML/JS – these files are overwritten on every build
docs/compodoc/**
is produced by Compodoc at release time. Hand-edited diffs (like adding the PathService
link here) will disappear the next time docs are regenerated and will only create noisy merge conflicts and bigger PRs.
Strip this directory from the PR (or add it to .gitignore
), let CI regenerate docs, and make the real change in the TypeScript sources that feed Compodoc instead.
🤖 Prompt for AI Agents
In docs/compodoc/components-core/js/menu-wc.js around lines 1473 to 1477, the
changes are made to Compodoc-generated files which get overwritten on every
build. Remove these manual edits from the PR and do not commit changes to this
directory. Instead, add docs/compodoc/** to .gitignore or exclude it from
commits, then make the necessary changes in the original TypeScript source files
that generate these docs so that CI can regenerate the documentation correctly.
} from '@netgrif/components-core'; | ||
import {TranslateService} from '@ngx-translate/core'; | ||
import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Remove unused or incorrect import.
The import of Path
from @schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript
appears to be unused and from an unusual internal TypeScript path. This should be removed unless it's specifically needed.
-import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"; |
🤖 Prompt for AI Agents
In
projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
at line 13, remove the import statement for `Path` from
`@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript`
because it is unused and references an unusual internal TypeScript path.
@@ -21,6 +21,6 @@ export class UserField extends DataField<UserValue> { | |||
} | |||
|
|||
protected valueEquality(a: UserValue, b: UserValue): boolean { | |||
return (!a && !b) || (!!a && !!b && a.email === b.email); | |||
return (!a && !b) || (!!a && !!b && a.username === b.username); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
LGTM: Updated equality check aligns with UserValue model refactoring.
The change from a.email === b.email
to a.username === b.username
is consistent with the broader refactoring of user models mentioned in the PR objectives.
Verify that all other references to UserValue properties have been consistently updated throughout the codebase:
🏁 Script executed:
#!/bin/bash
# Description: Check for any remaining references to the old email property in UserValue contexts
# Expected: No remaining references to UserValue.email in comparison or assignment contexts
# Search for potential remaining email references in user-related files
rg -A 3 -B 3 "\.email" --type ts | grep -E "(UserValue|user.*email|email.*user)"
Length of output: 2647
Fix required: Update residual email
references to username
in user-related code
We still have a number of occurrences where the old email
property is used instead of username
. Please update these to align with the refactored UserValue
model and adjust any affected tests:
- projects/nae-example-app/src/app/doc/dashboard-case-example/dashboard-case-example.component.ts
Replaceauthor: { email: userService.user.email }
withauthor: { username: userService.user.username }
- projects/netgrif-components-core/src/lib/user/services/user-comparator.service.ts
Changethis._userService.user.email.includes('anonymous')
tothis._userService.user.username.includes('anonymous')
- projects/netgrif-components-core/src/lib/resources/engine-endpoint/user-resource.service.spec.ts
Updateexpect(res.email).toEqual('string')
→expect(res.username).toEqual('string')
- projects/netgrif-components-core/src/lib/public/factories/public-factory-resolver.ts
ReplaceuserService.user.email !== 'anonymous@netgrif.com'
withuserService.user.username !== 'anonymous'
(or appropriate default) - projects/netgrif-components-core/src/lib/impersonation/services/impersonation.service.spec.ts
Adjust fixture construction:(id, username, email, …)
→(id, username, username, …)
or remove unusedemail
- projects/netgrif-components-core/src/lib/groups/services/next-group.service.ts
Changeg.author.email === this._userService.user.email
tog.author.username === this._userService.user.username
- projects/netgrif-components-core/src/lib/forms/change-password/abstract-change-password.component.ts
Updatelogin: this.user.user.email
→login: this.user.user.username
- projects/netgrif-components-core/src/lib/authentication/store/effects/authentication.effects.ts
Review commented code referencingaction.user.email
and replace if still relevant - projects/netgrif-components-core/src/lib/authentication/models/user.transformer.ts
Replaceuser.email
mapping withuser.username
Once these are updated, rerun your grep to confirm no stray .email
accesses remain in user contexts.
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-field.ts
at line 24 and across the specified files, replace all remaining references to
the old 'email' property with 'username' to align with the updated UserValue
model. This includes updating property accesses, test expectations, fixture
constructions, and any conditional checks involving user email to use username
instead. After making these changes, rerun a search for '.email' in user-related
contexts to ensure no outdated references remain.
case FieldTypeResource.USER_LIST: | ||
let userListValue = new UserListValue(new Map<string, UserValue>()); | ||
if (item.value) { | ||
item.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.firstName, u.lastName, u.email))); | ||
item.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.realmId, u.firstName, u.lastName, u.username))); | ||
} | ||
return new UserListField(item.stringId, item.name, item.behavior, userListValue, | ||
item.roles, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix switch declaration scope issue.
The static analysis tool correctly identifies that the userListValue
declaration can be erroneously accessed from other switch cases.
Apply this diff to wrap the declaration in a block:
case FieldTypeResource.USER_LIST:
+ {
let userListValue = new UserListValue(new Map<string, UserValue>());
if (item.value) {
item.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.realmId, u.firstName, u.lastName, u.username)));
}
return new UserListField(item.stringId, item.name, item.behavior, userListValue,
item.roles, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
+ }
🧰 Tools
🪛 Biome (1.9.4)
[error] 87-87: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
around lines 86 to 92, the variable userListValue is declared directly inside a
switch case without a block, which can cause scope leakage to other cases. To
fix this, wrap the entire case block in curly braces {} so that userListValue is
scoped only within this case and cannot be accessed from other cases.
|
||
public static SEPARATOR: string = '/'; | ||
private readonly _activePath$: BehaviorSubject<string>; | ||
protected pageSize: number; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify pageSize property usage in extending services.
The pageSize
property is set during construction but not used within this service. Please ensure this property is intended for use by extending services or components that inject this service.
Also applies to: 39-39
🏁 Script executed:
#!/bin/bash
# Check if pageSize property is used in extending services or components
rg -A 3 -B 3 "pageSize" --type ts
Length of output: 20419
Action Required: Clean up unused pageSize
in PathService
The pageSize
field in projects/netgrif-components-core/src/lib/navigation/service/path.service.ts
(declared at line 16 and set in the constructor) is only ever used in a debug log and is not referenced by PathService itself or by any subclasses. Please choose one of the following:
- Remove the
pageSize
property, its constructor injection token (NAE_URI_NODE_CASES_PAGE_SIZE
), and related debug logging, since it’s unused. - OR document its intended purpose and add the necessary methods/accessors so that consumers of PathService can actually use the configured page size.
Files/locations to review:
- projects/netgrif-components-core/src/lib/navigation/service/path.service.ts
• Line 16:protected pageSize: number;
• Constructor assignment and_logger.debug
call
🤖 Prompt for AI Agents
In projects/netgrif-components-core/src/lib/navigation/service/path.service.ts
at line 16, the pageSize property is declared and assigned but only used in a
debug log and nowhere else. To fix this, either remove the pageSize property,
its constructor injection token NAE_URI_NODE_CASES_PAGE_SIZE, and all related
debug logging since it is unused, or alternatively, document the intended
purpose of pageSize and add appropriate methods or accessors so that consumers
of PathService can utilize the configured page size.
]; | ||
component.itemsOrder = MenuOrder.Ascending; | ||
component.switchOrder(); | ||
console.log(MenuOrder); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove debugging console.log statement
- console.log(MenuOrder);
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
console.log(MenuOrder); |
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.spec.ts
at line 151, remove the console.log(MenuOrder) statement as it is a debugging
leftover and should not be present in the final code.
tap((data: ApplicationConfiguration) => { | ||
if (!data || !data.properties) { | ||
return of(null); | ||
} | ||
this.configuration = data.properties as NetgrifApplicationEngine; | ||
this.initialize(); | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix incorrect tap operator usage
The tap
operator is for side effects only - its return value is ignored. The null check should guard the configuration update instead.
tap((data: ApplicationConfiguration) => {
- if (!data || !data.properties) {
- return of(null);
- }
- this.configuration = data.properties as NetgrifApplicationEngine;
- this.initialize();
+ if (data && data.properties) {
+ this.configuration = data.properties as NetgrifApplicationEngine;
+ this.initialize();
+ }
})
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
tap((data: ApplicationConfiguration) => { | |
if (!data || !data.properties) { | |
return of(null); | |
} | |
this.configuration = data.properties as NetgrifApplicationEngine; | |
this.initialize(); | |
}) | |
tap((data: ApplicationConfiguration) => { | |
if (data && data.properties) { | |
this.configuration = data.properties as NetgrifApplicationEngine; | |
this.initialize(); | |
} | |
}) |
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/configuration/configuration.service.ts
around lines 287 to 293, the tap operator is incorrectly used to return an
observable, which is ignored. Instead, move the null check outside the tap
operator to guard the configuration update and initialization. Use tap only for
side effects without returning any value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 17
🔭 Outside diff range comments (4)
projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.spec.ts (2)
19-19
: Fix the UserValue constructor call to match the expected 5-argument signature.This UserValue constructor call also needs to be updated to provide the expected 5 arguments.
25-25
: Fix the UserValue constructor call to match the expected 5-argument signature.This UserValue constructor call also needs to be updated to provide the expected 5 arguments.
docs/compodoc/components-core/injectables/UriService.html (1)
1-1706
: Remove auto-generated documentation files from the PR.Based on previous learnings, compodoc documentation files are auto-generated during the release process and should not be manually edited. These HTML files will be overwritten on the next documentation build.
The changes here reflect the
UriService
→PathService
rename, but this documentation will be automatically regenerated from the source TypeScript files.Consider removing this file from the PR since it will be regenerated automatically during the build process.
docs/compodoc/components-core/interfaces/ViewNavigationItem.html (1)
1-739
: Remove auto-generated documentation files from the PR.This is another auto-generated compodoc documentation file that should not be manually edited. The changes (trailing space removal and
UriService
→PathService
rename) will be automatically applied when the documentation is regenerated from the source TypeScript files.Please remove this file from the PR as it will be overwritten during the next documentation build process.
🧹 Nitpick comments (11)
.github/workflows/pr-build.yml (2)
11-11
: Re-evaluate dropping Node 18 and adding Node 24.Node 24 is the current stable but not yet LTS, while Node 18 is still under active LTS until April 2025. Removing 18 may break consumers still pinned to that version.
Recommendation: keep 18 in the matrix (or add a scheduled job to cover it) until you officially deprecate it in a major release.- node-version: [ 20, 22, 24 ] + node-version: [ 18, 20, 22, 24 ]Alternatively, update the README / package engines field to state the new minimum supported version.
20-21
: Good call on explicitnpm install
, but add cache for speed.Switching from the alias
npm i
tonpm install
improves clarity – LGTM.
While touching this step, consider adding the officialactions/setup-node
cache to cut CI time (~40-60 %). Example:- name: Install dependencies run: npm install --legacy-peer-deps + name: Cache & install dependencies + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + run: npm ci --legacy-peer-deps(Use
npm ci
in CI for reproducible installs.)projects/netgrif-components-core/package.json (1)
30-58
: Duplicateangular2-hotkeys
entry in bothdependencies
andpeerDependencies
.Having the same package in both sections is confusing and can lead to version-resolution conflicts when consumers install the library.
- "angular2-hotkeys": "^16.0.0",
Either remove it from
dependencies
orpeerDependencies
(preferred: keep it only inpeerDependencies
, since this library is expected to be provided by the host app).package.json (1)
90-96
:angular2-hotkeys
should not be pinned twice across workspace packages.The root project also declares
angular2-hotkeys
. Keeping three potentially divergent version constraints (root + core dep + core peerDep) invites drift.Align on a single constraint (e.g.
"~16.0.0"
) and declare it only where necessary.projects/nae-example-app/src/index.html (1)
8-11
: Adddefer
to the injectedenv.js
to avoid blocking first paint.The script is not required for the initial HTML parsing. Loading it synchronously delays rendering.
- <script src="assets/env.js"></script> + <script src="assets/env.js" defer></script>Also verify that
assets/env.js
is included in the Angular buildassets
array, otherwise the file will be missing in production bundles.projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts (1)
80-82
: Prefer a descriptive factory/helper instead of five positional empty-string params.Long positional constructors are fragile and unreadable.
- this._safeTask.userId, '', '', '', '' + this._safeTask.userId, '', /* realmId */ + '', /* firstName */ + '', /* lastName */ + '' /* username */Better: introduce a static
UserValue.blank(id)
factory or a dedicated interface.This improves self-documentation and reduces maintenance overhead when the signature changes again.
projects/netgrif-components-core/src/lib/configuration/public-api.ts (1)
3-3
: Export addition is correct; consider alphabetical ordering
Re-exportingapplication-configuration
makes the interface publicly available, which aligns with the rest of the refactor. To reduce future merge conflicts and keep the barrel tidy, you may want to sort the exports alphabetically:-export * from './configuration.service'; -export * from './application-configuration'; +export * from './application-configuration'; +export * from './configuration.service';projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts (1)
16-21
: New snackBarAction definition with hardcoded parameters.The implementation follows the same pattern as the existing
redirectAction
and correctly uses dependency injection. However, consider making the snackbar configuration more flexible by accepting additional parameters fromfrontAction.args
.export const snackBarAction: FrontActionDefinition = { call: (injector: Injector, frontAction: FrontAction) => { const snackBarService = injector.get(SnackBarService); - snackBarService.openGenericSnackBar(frontAction.args[0], 'info', SnackBarVerticalPosition.BOTTOM, SnackBarHorizontalPosition.CENTER, 2500) + snackBarService.openGenericSnackBar( + frontAction.args[0], + frontAction.args[1] || 'info', + frontAction.args[2] || SnackBarVerticalPosition.BOTTOM, + frontAction.args[3] || SnackBarHorizontalPosition.CENTER, + frontAction.args[4] || 2500 + ) } }Additionally, consider adding error handling for missing
args[0]
:export const snackBarAction: FrontActionDefinition = { call: (injector: Injector, frontAction: FrontAction) => { + if (!frontAction.args[0]) { + console.warn('snackBarAction: Missing message argument'); + return; + } const snackBarService = injector.get(SnackBarService); snackBarService.openGenericSnackBar(frontAction.args[0], 'info', SnackBarVerticalPosition.BOTTOM, SnackBarHorizontalPosition.CENTER, 2500) } }projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (2)
45-47
: Consider adding path validation in the setter.The path setter directly updates the BehaviorSubject without validation. Consider adding basic validation to ensure the path is a valid string and follows expected patterns.
public set activePath(path: string) { + if (typeof path !== 'string') { + this._logger.warn('Invalid path type provided, defaulting to separator', { provided: path }); + path = PathService.SEPARATOR; + } this._activePath$.next(path); }
62-64
: Consider making the separator configurable.The
splitPath
method uses a hardcoded separator. Consider making the separator configurable if different path formats might be needed in the future.projects/netgrif-components-core/src/lib/configuration/configuration.service.ts (1)
274-295
: Improve error logging specificity.The configuration loading implementation is well-structured with proper error handling. Consider making the error message more descriptive to aid debugging.
catchError((err: HttpErrorResponse) => { if (err.status === 404) { return of(null); } - console.log(err.message); + console.error(`Failed to load application configuration: ${err.status} - ${err.message}`); return of(null); }),
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (65)
.github/workflows/pr-build.yml
(2 hunks)docs/compodoc/components-core/classes/FileUploadModel.html
(4 hunks)docs/compodoc/components-core/components/AbstractBreadcrumbsComponent.html
(9 hunks)docs/compodoc/components-core/components/AbstractImportNetComponent.html
(17 hunks)docs/compodoc/components-core/components/AbstractNavigationDoubleDrawerComponent.html
(43 hunks)docs/compodoc/components-core/coverage.html
(1 hunks)docs/compodoc/components-core/injectables/UriService.html
(24 hunks)docs/compodoc/components-core/interfaces/FileList.html
(3 hunks)docs/compodoc/components-core/interfaces/ViewNavigationItem.html
(5 hunks)docs/compodoc/components-core/js/menu-wc.js
(2 hunks)docs/compodoc/components/components/BreadcrumbsComponent.html
(5 hunks)docs/compodoc/components/components/ImportNetComponent.html
(6 hunks)docs/compodoc/components/components/ImportNetDialogComponent.html
(17 hunks)docs/compodoc/components/components/NavigationDoubleDrawerComponent.html
(8 hunks)docs/compodoc/components/interfaces/FileList.html
(3 hunks)package.json
(1 hunks)projects/nae-example-app/src/app/app.module.ts
(3 hunks)projects/nae-example-app/src/app/nae-example-app-configuration.service.ts
(1 hunks)projects/nae-example-app/src/assets/env.js
(1 hunks)projects/nae-example-app/src/assets/env.template.js
(1 hunks)projects/nae-example-app/src/environments/environment.prod.ts
(1 hunks)projects/nae-example-app/src/environments/environment.ts
(1 hunks)projects/nae-example-app/src/index.html
(1 hunks)projects/netgrif-components-core/package.json
(1 hunks)projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts
(1 hunks)projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.spec.ts
(4 hunks)projects/netgrif-components-core/src/lib/authentication/sign-up/services/sign-up.service.spec.ts
(4 hunks)projects/netgrif-components-core/src/lib/configuration/application-configuration.ts
(1 hunks)projects/netgrif-components-core/src/lib/configuration/configuration.service.ts
(2 hunks)projects/netgrif-components-core/src/lib/configuration/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-field.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.ts
(6 hunks)projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.spec.ts
(5 hunks)projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts
(15 hunks)projects/netgrif-components-core/src/lib/navigation/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/service/path.service.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/service/uri.service.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts
(0 hunks)projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.spec.ts
(1 hunks)projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts
(1 hunks)projects/netgrif-components-core/src/lib/resources/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.spec.ts
(3 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.ts
(2 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/multi-user-assign-list/abstract-multi-user-assign-list.component.ts
(1 hunks)projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.ts
(1 hunks)projects/netgrif-components-core/src/lib/side-menu/side-menu-container/abstract-side-menu-container.component.spec.ts
(2 hunks)projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
(2 hunks)projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
(1 hunks)projects/netgrif-components-core/src/lib/utility/load-configuration.ts
(1 hunks)projects/netgrif-components-core/src/lib/utility/public-api.ts
(1 hunks)projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-uri-resource.service.ts
(4 hunks)projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-user.service.ts
(2 hunks)projects/netgrif-components-core/src/lib/utility/tests/test-config.ts
(2 hunks)projects/netgrif-components-core/src/lib/utility/tests/test-mock-dependencies.module.ts
(2 hunks)projects/netgrif-components/package.json
(2 hunks)projects/netgrif-components/src/lib/dialog/import-net-dialog/import-net-dialog.component.ts
(1 hunks)projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts
(2 hunks)projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.html
(1 hunks)projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.ts
(2 hunks)projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
(2 hunks)
💤 Files with no reviewable changes (1)
- projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts
🧰 Additional context used
🧠 Learnings (13)
docs/compodoc/components/components/BreadcrumbsComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components/components/NavigationDoubleDrawerComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components-core/components/AbstractBreadcrumbsComponent.html (2)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components/components/ImportNetDialogComponent.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
docs/compodoc/components/components/ImportNetComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components/interfaces/FileList.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
docs/compodoc/components-core/classes/FileUploadModel.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
docs/compodoc/components-core/interfaces/ViewNavigationItem.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
docs/compodoc/components-core/interfaces/FileList.html (4)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
docs/compodoc/components-core/components/AbstractNavigationDoubleDrawerComponent.html (2)
undefined
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
</retrieved_learning>
docs/compodoc/components-core/coverage.html (3)
undefined
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
</retrieved_learning>
docs/compodoc/components-core/components/AbstractImportNetComponent.html (1)
Learnt from: machacjozef
PR: netgrif/components#287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
docs/compodoc/components-core/js/menu-wc.js (4)
undefined
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:343-343
Timestamp: 2025-06-23T11:42:59.041Z
Learning: Auto-generated documentation files (like Compodoc HTML files) should not be manually edited. Changes should be made to the actual TypeScript source files, and the documentation will be regenerated during the build/release process.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components-core/injectables/UriService.html:99-102
Timestamp: 2025-06-23T11:43:15.755Z
Learning: HTML files in the docs/compodoc/ directory are auto-generated documentation that gets regenerated during the release process. Changes should be made to source TypeScript files rather than the generated HTML documentation files, as they will be overwritten.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/components/ImportNetComponent.html:197-197
Timestamp: 2025-06-23T11:42:59.266Z
Learning: Compodoc documentation files (like those in docs/compodoc/) are auto-generated during the release process from TypeScript source files. Any refactoring or parameter renaming should be done in the actual TypeScript source files, not in the HTML documentation files, as the HTML docs will be overwritten on the next documentation build.
</retrieved_learning>
<retrieved_learning>
Learnt from: machacjozef
PR: #287
File: docs/compodoc/components/interfaces/FileList.html:106-109
Timestamp: 2025-06-23T11:43:15.166Z
Learning: Documentation HTML files in the docs/compodoc/ directory are auto-generated during the release process from TypeScript source files. Any HTML issues or refactoring suggestions should be applied to the source TypeScript files instead of the HTML documentation files, as the HTML files will be overwritten on the next documentation build.
</retrieved_learning>
🧬 Code Graph Analysis (12)
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.ts (1)
projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (1)
splitPath
(62-64)
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-user.service.ts (1)
projects/netgrif-components-core/src/lib/user/models/user.ts (1)
User
(7-63)
projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (1)
projects/netgrif-components-core/src/lib/navigation/model/size-menu-injection-token.ts (1)
NAE_URI_NODE_CASES_PAGE_SIZE
(6-6)
projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts (3)
projects/nae-example-app/src/app/nae-example-app-configuration.service.ts (1)
Injectable
(6-19)projects/netgrif-components-core/src/lib/utility/tests/test-config.ts (1)
Injectable
(8-448)projects/netgrif-components-core/src/lib/configuration/application-configuration.ts (1)
ApplicationConfiguration
(27-33)
projects/netgrif-components-core/src/lib/utility/load-configuration.ts (1)
projects/netgrif-components-core/src/lib/configuration/configuration.service.ts (1)
loadConfiguration
(274-295)
projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts (2)
projects/netgrif-components-core/src/lib/actions/model/front-action-definition.ts (1)
FrontActionDefinition
(4-6)projects/netgrif-components-core/src/lib/data-fields/models/changed-fields.ts (1)
FrontAction
(48-53)
projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/multi-user-assign-list/abstract-multi-user-assign-list.component.ts (1)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts (3)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-field.ts (1)
UserField
(9-26)projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts (1)
UserListValue
(8-49)
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts (3)
projects/netgrif-components-core/src/lib/resources/interface/case.ts (1)
Case
(11-135)projects/netgrif-components-core/src/lib/filter/models/case-search-request-body.ts (1)
CaseSearchRequestBody
(9-72)projects/netgrif-components-core/src/lib/navigation/model/navigation-configs.ts (2)
NavigationItem
(12-15)RIGHT_SIDE_INIT_PAGE_SIZE
(27-27)
projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts (1)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-uri-resource.service.ts (1)
projects/netgrif-components-core/src/lib/navigation/model/uri-resource.ts (1)
UriNodeResource
(2-13)
projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.ts (1)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)
🪛 Biome (1.9.4)
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts
[error] 12-30: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts
[error] 16-24: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts
[error] 87-87: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.
The declaration is defined in this switch clause:
Unsafe fix: Wrap the declaration in a block.
(lint/correctness/noSwitchDeclarations)
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts
[error] 478-478: Avoid redundant double-negation.
It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation
(lint/complexity/noExtraBooleanCast)
[error] 484-484: Avoid redundant double-negation.
It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation
(lint/complexity/noExtraBooleanCast)
🪛 GitHub Actions: Build
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts
[error] 7-7: TypeScript error TS2554: Expected 5 arguments, but got 4.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
- GitHub Check: task-list-completed
- GitHub Check: task-list-completed
- GitHub Check: task-list-completed
- GitHub Check: task-list-completed
- GitHub Check: task-list-completed
🔇 Additional comments (73)
.github/workflows/pr-build.yml (1)
8-8
: Confirm runner availability –ubuntu-24.04
is still in preview.
ubuntu-24.04
has only recently been introduced and, in some organizations, is still behind apreview
flag. A job will fail immediately if the runner image is unavailable in the current GitHub plan / region.If you need broader CI reliability, consider keeping
ubuntu-latest
or adding a fallback strategy, e.g.:- runs-on: ubuntu-24.04 + runs-on: ${{ matrix.os }}with
matrix: os: [ubuntu-24.04, ubuntu-latest]At minimum, please verify that the runner is enabled in your organisation before merging.
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts (1)
9-12
: LGTM: Property name updates are correct.The test assertions have been properly updated to use the new property names (
firstName
,lastName
,username
) which align with the user data model refactoring.projects/netgrif-components/package.json (2)
3-3
: LGTM: Version bump is appropriate.The version update from
7.0.0-rc.3
to7.0.0-rc.4
correctly reflects the major refactoring changes in this PR.
32-32
: LGTM: Peer dependency version updated consistently.The peer dependency version for
@netgrif/components-core
has been correctly updated to match the main package version, ensuring compatibility.projects/netgrif-components-core/src/lib/utility/tests/test-mock-dependencies.module.ts (2)
7-7
: LGTM: ResourceProvider import added.The import is correctly added to support the new configuration services in the test environment.
27-27
: LGTM: ResourceProvider added to providers.The addition of
ResourceProvider
to the providers array ensures tests can properly inject and mock this service, which is consistent with the expanded use ofResourceProvider
in the application.projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.spec.ts (1)
11-14
: LGTM: Property name updates are correct.The test assertions have been properly updated to use the new property names (
firstName
,lastName
,username
) which align with the user data model refactoring.projects/netgrif-components-core/src/lib/resources/public-api.ts (1)
9-9
: LGTM: ConfigurationResourceService properly exportedThe addition of the ConfigurationResourceService export is correctly placed among other engine endpoint services and aligns with the PR's goal of adding frontend remote configuration capabilities.
projects/netgrif-components-core/src/lib/navigation/public-api.ts (1)
15-15
: LGTM: Service export updated for UriService → PathService refactorThe export change from
uri.service
topath.service
correctly reflects the refactor from node-based URI management to string-based path management as mentioned in the PR objectives.projects/netgrif-components-core/src/lib/utility/public-api.ts (1)
30-30
: LGTM: Load configuration utility properly exportedThe addition of the
load-configuration
export is correctly placed and supports the new frontend remote configuration feature by making the utility function publicly accessible.projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts (1)
3-3
: LGTM! Service replacement is consistent with the architectural change.The import change from
UriService
toPathService
aligns with the broader refactor mentioned in the PR objectives.projects/netgrif-components-core/src/lib/side-menu/side-menu-container/abstract-side-menu-container.component.spec.ts (2)
17-17
: LGTM! Test import updated correctly.The import change from
UriService
toPathService
is consistent with the service replacement.
91-95
: LGTM! Test component updated correctly.The constructor parameter and super constructor call have been updated to use
PathService
instead ofUriService
, maintaining consistency with the service replacement.projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-field.ts (1)
24-24
: Fix leftover email-based user comparisonsThere’s a remaining comparison using
username
to align with the user model refactor:
- projects/netgrif-components-core/src/lib/groups/services/next-group.service.ts (owner group filter)
Apply:
- const ownerGroups = groups.filter(g => g.author.email === this._userService.user.email); + const ownerGroups = groups.filter(g => g.author.username === this._userService.user.username);Likely an incorrect or invalid review comment.
projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.ts (3)
13-13
: LGTM! Service import updated correctly.The import change from
UriService
toPathService
is consistent with the architectural refactor.
46-46
: LGTM! Constructor parameter updated correctly.The constructor parameter change from
_uriService
to_pathService
aligns with the service replacement.
126-165
: Confirmed removal ofuriNodeId
logic fromuploadFile
methodA global search for
uriNodeId
,activeNode
andUriService
returned no matches inabstract-import-net.component.ts
(or itsuploadFile
method). All remaininguriNodeId
references live in tests, mocks, interfaces and other domain classes—none in the refactored upload logic. This change has been applied correctly.projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.ts (2)
7-7
: LGTM! Service import updated correctly.The import change from
UriService
toPathService
is consistent with the architectural refactor.
67-73
: LGTM! Constructor updated correctly.The constructor parameter change from
_uriService
to_pathService
and the corresponding super constructor call update are consistent with the service replacement.projects/netgrif-components/src/lib/dialog/import-net-dialog/import-net-dialog.component.ts (2)
8-8
: UriService import removed as part of service refactor.This change aligns with the broader migration from
UriService
toPathService
across the codebase. The removal is consistent with the dialog component no longer needing path-based navigation state management.
40-44
: Remove_uriService
ParameterVerified that
uriNodeId
is no longer referenced inPetriNetResourceService
(projects/netgrif-components-core/src/lib/resources/engine-endpoint/petri-net-resource.service.ts) or anywhere else in the codebase. The import API no longer requires theuriNodeId
FormData field—no further changes needed.projects/netgrif-components/src/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.html (1)
136-136
: Navigation comparison updated to use path-based logic.The change from
isItemAndNodeEqual(folder, currentNode)
toisItemAndPathEqual(folder, currentPath)
is consistent with the broader refactor from node-based to path-based navigation. This maintains the same UI behavior while using the newPathService
architecture.docs/compodoc/components/components/ImportNetDialogComponent.html (1)
1-1516
: Skip auto-generated documentation file.This is a Compodoc-generated HTML documentation file that will be automatically regenerated during the release process. Changes should be made to the source TypeScript files rather than this generated documentation.
projects/netgrif-components-core/src/lib/actions/model/router-action-definitions.ts (1)
5-6
: New imports for SnackBarService functionality.The imports are correctly added to support the new
snackBarAction
definition.docs/compodoc/components/components/NavigationDoubleDrawerComponent.html (1)
233-233
: Auto-generated documentation reflects source code changes correctly.This compodoc documentation file is auto-generated during the release process and correctly reflects the refactor from
UriService
toPathService
. The changes in constructor parameters and template method calls are consistent with the broader navigation refactor.Also applies to: 367-367, 563-563, 623-623, 776-776
projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/multi-user-assign-list/abstract-multi-user-assign-list.component.ts (1)
62-62
: LGTM! UserValue constructor updated correctly.The constructor calls have been properly updated to use the new UserValue properties:
realmId
instead of previous propertyfirstName
instead ofname
lastName
instead ofsurname
username
instead ofThese changes align with the updated UserValue model and maintain consistency across the codebase.
Also applies to: 65-65
projects/nae-example-app/src/assets/env.template.js (1)
1-8
: LGTM! Safe IIFE pattern for global environment configuration.The implementation uses a safe IIFE pattern to attach the environment object to the global window object:
window["env"] = window["env"] || {};
safely creates the object if it doesn't exist- Placeholder syntax
${VARIABLE}
indicates this is a template for runtime substitution- IIFE prevents global namespace pollution
This template file provides a robust foundation for dynamic environment configuration.
docs/compodoc/components-core/classes/FileUploadModel.html (1)
103-116
: Skip reviewing auto-generated documentation files.Based on previous learnings, Compodoc documentation files are auto-generated during the release process and will be overwritten. Any changes should be made to the actual TypeScript source files instead.
projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.spec.ts (3)
24-24
: LGTM: Consistent service refactoring.The import statement correctly updates from
UriService
toPathService
, aligning with the broader refactoring effort.
52-52
: LGTM: Provider registration updated correctly.The provider registration correctly changes from
UriService
toPathService
, maintaining consistency with the service refactoring.
112-116
: LGTM: Constructor parameter and super call updated correctly.The constructor parameter correctly changes from
UriService
toPathService
, and the super call properly passes the updated service instance.docs/compodoc/components/interfaces/FileList.html (1)
106-116
: Skip reviewing auto-generated documentation files.Based on previous learnings, Compodoc documentation files are auto-generated during the release process and will be overwritten. Any changes should be made to the actual TypeScript source files instead.
projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-uri-resource.service.ts (4)
12-14
: LGTM: Path constants updated to use root separator.The static path constants correctly change from
'root/test1'
and'root/test2'
to'/test1'
and'/test2'
, aligning with the new root path separator convention.
17-18
: LGTM: Root node updated to use '/' identifier.The root node correctly changes from
'root'
to'/'
for both id and path, consistent with the new path-based navigation model.
31-31
: LGTM: Parent IDs updated consistently.The parent IDs for test nodes correctly change from
'root'
to'/'
, maintaining consistency with the new root identifier.Also applies to: 42-42
64-64
: LGTM: Method updated to use new root identifier.The
getNodesByParent
method correctly updates the condition to check for'/'
instead of'root'
, ensuring proper hierarchical navigation with the new path structure.projects/netgrif-components-core/src/lib/utility/tests/mocks/mock-user.service.ts (3)
2-2
: LGTM: Import statement updated for new functionality.The import correctly adds the
of
operator fromrxjs
to support the newlogout()
method's return value.
53-57
: LGTM: Logout method implementation is correct.The
logout()
method properly resets the user state using theemptyUser()
helper, emits the change via the ReplaySubject, and returns an observable. This enhances the mock service to support logout functionality in tests.
59-61
: LGTM: Empty user helper method is well-implemented.The
emptyUser()
method correctly creates a newUser
instance with empty strings and arrays, matching the User constructor signature. This provides a clean way to reset user state.projects/netgrif-components-core/src/lib/utility/load-configuration.ts (1)
1-28
: Well-implemented configuration loader factory.The implementation is clean and follows Angular best practices for
APP_INITIALIZER
providers. The JSDoc documentation is comprehensive with a practical usage example, making it easy for developers to understand how to integrate this into their modules.docs/compodoc/components-core/components/AbstractBreadcrumbsComponent.html (1)
269-269
: Documentation correctly reflects UriService to PathService refactor.The documentation updates accurately reflect the service refactor from
UriService
toPathService
in the constructor parameters, type references, and import statements. However, since this is auto-generated Compodoc documentation, any corrections should be made to the source TypeScript files rather than this HTML file.Also applies to: 295-295, 901-901, 940-940
docs/compodoc/components-core/interfaces/FileList.html (1)
106-114
: Auto-generated documentation reflects service refactor correctly.The documentation updates show the proper migration from
UriService
toPathService
and include minor HTML formatting improvements. Since this is auto-generated Compodoc documentation, these changes will be regenerated during the release process from the source TypeScript files.Also applies to: 168-168, 201-201
projects/netgrif-components-core/src/lib/task-content/services/field-converter.service.ts (1)
82-82
: UserValue constructor calls updated correctly for new data model.The
UserValue
constructor calls have been properly updated to include the newrealmId
parameter and useusername
instead of(id, realmId, firstName, lastName, username)
.Also applies to: 89-89, 291-291
projects/nae-example-app/src/app/app.module.ts (2)
2-2
: LGTM! Proper imports for application initialization.The imports for
APP_INITIALIZER
andloadConfiguration
are correctly added to support the new configuration loading mechanism.Also applies to: 22-23
248-259
: LGTM! Proper APP_INITIALIZER configuration.The
APP_INITIALIZER
provider is correctly configured with:
loadConfiguration
factory functionConfigurationService
dependencymulti: true
flag (essential for APP_INITIALIZER)The positioning of
ResourceProvider
at the beginning may be intentional for dependency ordering during application initialization.projects/netgrif-components-core/src/lib/configuration/application-configuration.ts (1)
27-33
: Well-designed interface with comprehensive documentation.The
ApplicationConfiguration
interface is properly structured with clear property names, appropriate optional fields, and excellent JSDoc documentation. The interface effectively supports the dynamic configuration loading feature.projects/netgrif-components-core/src/lib/side-menu/content-components/user-assign/user-assign-list/abstract-user-assign-list.component.ts (1)
77-77
: Correct property mapping to updated UserValue constructor.The UserValue constructor call has been properly updated to use the new property names (
realmId
,firstName
,lastName
,username
) that align with the refactored user model structure.projects/nae-example-app/src/app/nae-example-app-configuration.service.ts (1)
10-17
: Environment variables verifiedThe grep output confirms that
application_identifier
,type_identifier
,gateway_url
, andresolve_configuration
are defined with appropriate defaults in both
projects/nae-example-app/src/environments/environment.ts
projects/nae-example-app/src/environments/environment.prod.ts
No further action is needed—environment variables are in place and the configuration service implementation is correct.
projects/netgrif-components-core/src/lib/navigation/service/path.service.ts (1)
18-43
: Well-implemented constructor with robust parameter validation.The constructor properly handles optional page size injection with comprehensive validation, type conversion, and fallback defaults. The logging provides good visibility into the initialization process.
docs/compodoc/components/components/ImportNetComponent.html (1)
1-580
: Auto-generated documentation file - no review needed.This file is auto-generated by compodoc during the release process. The changes from
UriService
toPathService
reflect the updates made in the actual TypeScript source files.docs/compodoc/components-core/components/AbstractImportNetComponent.html (1)
281-281
: Auto-generated Documentation: Update Only TypeScript SourceCompodoc HTML files are regenerated from the TypeScript sources and must not be edited by hand. The replacement of
UriService
withPathService
has already been applied in:
projects/netgrif-components-core/src/lib/side-menu/content-components/import-net/abstract-import-net.component.ts
- Line 13:
import {PathService} from …/service/path.service
- Line 46: constructor parameter
_pathService: PathService
No manual updates to
docs/compodoc/components-core/components/AbstractImportNetComponent.html
(or its related lines 281, 331, 1114) are required—these will be regenerated on the next documentation build.projects/netgrif-components-core/src/lib/authentication/profile/services/profile.service.spec.ts (3)
10-13
: LGTM - Proper dependency injection setup.The addition of required imports (
ConfigurationResourceService
,ResourceProvider
,HttpClient
,Injectable
) aligns with the new configuration loading architecture.
63-66
: LGTM - Test setup updated for new dependencies.The test providers now include the necessary services (
HttpClient
,ResourceProvider
,ConfigurationResourceService
) required by the updatedMissingEndpointsConfigurationService
.
84-109
: LGTM - Configuration service properly updated.The
MissingEndpointsConfigurationService
is now properly decorated with@Injectable()
and the constructor correctly injectsConfigurationResourceService
. The superclass constructor call includes the properApplicationConfiguration
object with all required fields.docs/compodoc/components/components/BreadcrumbsComponent.html (1)
190-190
: Ignore auto-generated documentation – source files updated correctlyThe Compodoc HTML is regenerated from your TypeScript sources. The constructor in
projects/netgrif-components/src/lib/navigation/breadcrumbs/breadcrumbs.component.ts
already usesPathService
and no longer referencesUriService
:• Line 3: import of
PathService
• Line 16: constructor parameter_pathService: PathService
No changes to the generated HTML are necessary—focus future edits on the
.ts
source.projects/netgrif-components-core/src/lib/authentication/sign-up/services/sign-up.service.spec.ts (3)
9-12
: LGTM - Consistent dependency injection setup.The addition of required imports aligns with the new configuration loading architecture and is consistent with similar changes in other test files.
92-94
: LGTM - Test providers updated consistently.The test setup now includes the necessary services (
HttpClient
,ResourceProvider
,ConfigurationResourceService
) required by the updated configuration service, maintaining consistency with other test files.
128-155
: LGTM - Configuration service implementation is consistent.The
MissingEndpointsConfigurationService
updates are consistent with the pattern used in other test files:
- Proper
@Injectable()
decorator- Correct constructor parameter injection
- Proper
ApplicationConfiguration
object structureThis maintains consistency across the test infrastructure.
projects/netgrif-components-core/src/lib/utility/tests/test-config.ts (1)
8-13
: LGTM: Proper Angular service setup with dependency injection.The addition of the
@Injectable()
decorator and the enhanced constructor with HTTP client and resource service setup properly aligns the test service with the new configuration architecture.projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts (1)
35-39
: LGTM: Proper migration from UriService to PathService.The constructor parameter change from
_uriService
to_pathService
and the corresponding super constructor call correctly implement the migration to the new path-based navigation system.projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
15-40
: LGTM: Well-structured refactoring with improved clarity.The refactoring improves the model by:
- Using more descriptive property names (
firstName
/lastName
instead ofname
/surname
)- Replacing
username
for better semantic accuracy- Adding
realmId
to support multi-tenant scenarios- Updating the
fullName
getter to use the new property namesThe implementation is consistent and maintains backward compatibility through the getter methods.
projects/netgrif-components-core/src/lib/resources/engine-endpoint/configuration-resource.service.ts (1)
13-45
: LGTM: Well-designed service following Angular best practices.The service implementation is excellent with:
- Proper singleton pattern using
providedIn: 'root'
- Clear private constants for URL construction
- Good TypeScript typing with Observable return type
- Comprehensive JSDoc documentation
- Clean separation of concerns using ResourceProvider for HTTP operations
The URL construction logic correctly builds the endpoint path using the configuration parameters.
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.ts (4)
41-41
: LGTM: Proper migration from UriService to PathService.The constructor parameter change correctly implements the migration to the new path-based navigation system, maintaining the same dependency injection pattern.
69-69
: LGTM: Method calls updated to use PathService API.The method calls are correctly updated from
UriService.splitNodePath()
toPathService.splitPath()
and property access fromactiveNode
toactivePath
, maintaining the same functionality with the new service.Also applies to: 138-138
117-123
: LGTM: Improved error handling in redirect method.The enhanced error handling properly validates the existence of the target URL before navigation and logs meaningful error messages when redirect data is missing, improving debugging capabilities.
145-148
: LGTM: Simplified changePath method with direct path setting.The simplified approach directly sets the
activePath
onPathService
and updates the breadcrumbs, removing unnecessary asynchronous complexity while maintaining the same functionality.projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.spec.ts (3)
36-36
: LGTM! Clean migration to PathService.The imports correctly reflect the migration from
UriService
toPathService
and include necessary navigation models.Also applies to: 41-43
77-78
: Good improvement to spy configuration.Using
callThrough()
provides better test coverage by executing the actual implementation while still tracking calls.
91-131
: Correct migration to path-based navigation.The changes properly update all assertions from node-based to path-based navigation, and fix the method invocation bug on lines 129-131.
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts (1)
37-106
: Excellent test coverage for redirect functionality.The test suite comprehensively covers all redirect scenarios including success, error, and disabled states.
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts (3)
358-371
: Excellent refactor to reactive programming patterns.The migration to RxJS operators with proper error handling and loading state management improves code maintainability and readability.
Also applies to: 387-401
603-611
: Well-implemented path extraction utility.The
extractParent
method properly handles all edge cases for path extraction, providing a clean abstraction for path manipulation.
185-195
: Successful migration to path-based navigation.The refactor consistently replaces all node-based navigation with path strings, using
PathService.SEPARATOR
for the root path throughout.Also applies to: 307-339
public getLast(): UserValue { | ||
if (this._userValues.size == 0) { | ||
return new UserValue('', '', '', ''); | ||
return new UserValue('', '', '', '', ''); | ||
} | ||
return Array.from(this._userValues.values()).pop(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Returning a dummy UserValue
object can mask “no user” states.
getLast()
now returns new UserValue('', '', '', '', '')
when the list is empty.
Down-stream code can’t distinguish between “no value” and “empty value” and may treat the blank object as a real user.
Consider returning undefined
(or null
) and updating call-sites accordingly, or expose a typed EMPTY
constant so equality checks stay explicit.
- return new UserValue('', '', '', '', '');
+ return undefined as any; // or handle with Optional chaining at call-sites
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.ts
around lines 32 to 36, the getLast() method returns a dummy UserValue with empty
strings when the list is empty, which can confuse downstream code by masking "no
user" states. Modify getLast() to return undefined (or null) instead of a dummy
UserValue when the list is empty, and update all call-sites to handle this new
return type properly. Alternatively, define and expose a typed EMPTY constant
UserValue and return that to allow explicit equality checks.
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.spec.ts
Outdated
Show resolved
Hide resolved
...s/netgrif-components-core/src/lib/data-fields/user-list-field/models/user-list-value.spec.ts
Outdated
Show resolved
Hide resolved
<tr class="medium"> | ||
<td> | ||
<!-- miscellaneous --> | ||
<a href="./injectables/UriService.html">projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts</a> | ||
<a href="./injectables/PathService.html">projects/netgrif-components-core/src/lib/navigation/service/uri.service.ts</a> | ||
</td> | ||
<td>injectable</td> | ||
<td>UriService</td> | ||
<td>PathService</td> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid manual edits of auto-generated Compodoc HTML – please drop this change
Files under docs/compodoc/
are generated by Compodoc during the build/release process. Manually committing edits (like the updated row here) will be overwritten next time the docs are regenerated and causes noisy diffs.
Additionally, the visible text still references uri.service.ts
while the link points to PathService.html
, so even the manual fix is internally inconsistent.
Action:
- Revert this HTML file from the PR.
- Ensure the underlying TypeScript (
path.service.ts
) is correctly documented; the doc generator will then produce an accurate coverage table automatically.
🤖 Prompt for AI Agents
In docs/compodoc/components-core/coverage.html lines 4633 to 4639, the changes
are manual edits to an auto-generated Compodoc HTML file, which should be
avoided as they will be overwritten. Revert this HTML file to its original state
in the PR and instead verify and update the documentation comments in the
underlying TypeScript file path.service.ts so that the documentation generator
produces the correct coverage table automatically.
// HttpClientTestingModule, | ||
// NoopAnimationsModule, | ||
// AuthenticationModule, | ||
// RouterTestingModule.withRoutes([]), | ||
// ], | ||
// providers: [ | ||
// {provide: ConfigurationService, useClass: TestLoggingConfigurationService}, | ||
// {provide: UriResourceService, useClass: MockUriResourceService}, | ||
// {provide: CaseResourceService, useClass: MockCaseResourceService}, | ||
// ], | ||
// }); | ||
// service = TestBed.inject(UriService); | ||
// }); | ||
// | ||
// afterEach(() => { | ||
// TestBed.resetTestingModule(); | ||
// }); | ||
// | ||
// it('should be created', () => { | ||
// expect(service).toBeTruthy(); | ||
// }); | ||
// | ||
// it('should get root node', () => { | ||
// const root = service.root; | ||
// expect(root.id).toEqual('root'); | ||
// expect(service.isRoot(root)).toBeTruthy(); | ||
// expect(service.activeNode).toEqual(root); | ||
// }); | ||
// | ||
// it('should set and reset activeNode', done => { | ||
// service.getNodeByPath(MockUriResourceService.TEST1_PATH).subscribe(node => { | ||
// service.activeNode = node; | ||
// expect(service.activeNode).not.toEqual(service.root); | ||
// service.reset(); | ||
// expect(service.activeNode).toEqual(service.root); | ||
// done(); | ||
// }); | ||
// }); | ||
// | ||
// it('should get node by path', done => { | ||
// service.getNodeByPath(MockUriResourceService.TEST1_PATH).subscribe(res => { | ||
// expect(res.path).toEqual(MockUriResourceService.TEST1_PATH); | ||
// expect(res.id).toEqual(MockUriResourceService.TEST1_ID); | ||
// done(); | ||
// }); | ||
// }); | ||
// | ||
// it('should get child nodes', done => { | ||
// service.getChildNodes(service.root).subscribe(res => { | ||
// expect(res.length).toEqual(2); | ||
// res.forEach(r => { | ||
// expect(r.id).toContain('test'); | ||
// expect(r.parentId).toEqual('root'); | ||
// }); | ||
// done(); | ||
// }); | ||
// }); | ||
// | ||
// it('should get cases of node', done => { | ||
// service.getCasesOfNode().subscribe(page => { | ||
// expect(page.content.length).toEqual(1); | ||
// }); | ||
// done(); | ||
// }); | ||
// | ||
// it('should get siblings of a node', done => { | ||
// service.getNodeByPath(MockUriResourceService.TEST1_PATH).subscribe(node => { | ||
// expect(node.id).toEqual(MockUriResourceService.TEST1_ID); | ||
// service.getSiblingsOfNode(node).subscribe(siblings => { | ||
// expect(siblings.find(n => n.id === MockUriResourceService.TEST2_ID)).not.toBeUndefined(); | ||
// done(); | ||
// }); | ||
// }); | ||
// }); | ||
// | ||
// it('should get nodes by level', done => { | ||
// service.getNodesOnLevel(1).subscribe(res => { | ||
// expect(res.length).toEqual(2); | ||
// done(); | ||
// }); | ||
// }); | ||
// | ||
// it('it should return path of a node\'s parent', done => { | ||
// service.getNodeByPath(MockUriResourceService.TEST1_PATH).subscribe(node => { | ||
// const parentPath = service.resolveParentPath(node); | ||
// expect(parentPath).toEqual('root'); | ||
// done(); | ||
// }); | ||
// }); | ||
// | ||
// it('should get parts of path', done => { | ||
// service.getNodeByPath(MockUriResourceService.TEST1_PATH).subscribe(node => { | ||
// const path = service.splitNodePath(node); | ||
// expect(path.length).toEqual(1); | ||
// expect(path[0]).toEqual(MockUriResourceService.TEST1_ID); | ||
// done(); | ||
// }); | ||
// }); | ||
// | ||
// }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Remove the file entirely instead of commenting out tests
Since UriService
has been completely replaced with PathService
as part of this refactor, this test file should be deleted rather than having all tests commented out. Commented-out test code creates maintenance overhead and potential confusion.
Consider removing this file completely:
-// import {HttpClientTestingModule} from '@angular/common/http/testing';
-// import {TestBed} from '@angular/core/testing';
-// ... (all commented lines)
And ensure that appropriate tests for PathService
exist elsewhere in the codebase.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/navigation/service/uri.service.spec.ts
from lines 1 to 120, all tests for UriService are commented out because
UriService has been replaced by PathService. Instead of leaving these tests
commented out, delete this entire test file to avoid maintenance overhead and
confusion. Also, verify that tests for PathService are implemented in the
codebase to maintain coverage.
class TestHttp extends HttpHandler { | ||
handle(req: HttpRequest<any>): Observable<HttpEvent<any>> { | ||
return undefined; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix the TestHttp.handle() method to return a proper Observable.
The handle
method currently returns undefined
, which will cause runtime errors since callers expect an Observable<HttpEvent<any>>
. For a proper test mock, it should return an empty or error Observable.
class TestHttp extends HttpHandler {
handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {
- return undefined;
+ return new Observable(subscriber => {
+ subscriber.error(new Error('TestHttp: No mock response configured'));
+ });
}
}
Alternatively, you could use Angular's HttpClientTestingModule
for more robust HTTP testing.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
class TestHttp extends HttpHandler { | |
handle(req: HttpRequest<any>): Observable<HttpEvent<any>> { | |
return undefined; | |
} | |
} | |
class TestHttp extends HttpHandler { | |
handle(req: HttpRequest<any>): Observable<HttpEvent<any>> { | |
return new Observable(subscriber => { | |
subscriber.error(new Error('TestHttp: No mock response configured')); | |
}); | |
} | |
} |
🤖 Prompt for AI Agents
In projects/netgrif-components-core/src/lib/utility/tests/test-config.ts around
lines 450 to 454, the TestHttp.handle() method incorrectly returns undefined
instead of an Observable<HttpEvent<any>>. To fix this, modify the handle method
to return a valid Observable, such as an empty Observable or one that emits an
error, ensuring it matches the expected return type and prevents runtime errors
during testing.
} from '@netgrif/components-core'; | ||
import {TranslateService} from '@ngx-translate/core'; | ||
import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Fix the incorrect Path import.
The import from @schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript
is incorrect and references internal Angular schematics paths. This import should likely be removed or replaced with the correct Path type.
-import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
🏁 Script executed:
#!/bin/bash
# Search for other Path imports in the codebase to understand the correct import
rg -A 2 -B 2 "import.*Path.*from" --type ts
Length of output: 27591
🏁 Script executed:
#!/bin/bash
sed -n '1,200p' projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
Length of output: 1541
Remove the incorrect and unused Path import
The import from
"@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"
is neither correct nor used in this component. Please remove it. If you actually require a Path
type, import it from the proper package (e.g. @angular-devkit/core
).
• File: projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
Remove this line:
- import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
import {Path} from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"; |
🤖 Prompt for AI Agents
In
projects/netgrif-components/src/lib/side-menu/content-components/import-net/import-net.component.ts
at line 13, remove the import statement for Path from
"@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"
because it is incorrect and unused. If a Path type is needed, import it from the
correct package such as "@angular-devkit/core".
it('should load more items', () => { | ||
component.moreItems = [{id: 'a'}, {id: 'b'}, {id: 'c'}] as any; | ||
component.rightItems = []; | ||
component.loadMoreItems(); | ||
expect(component.rightItems.length).toBeGreaterThan(0); | ||
}); | ||
|
||
it('should switch order and change sorting', () => { | ||
component.rightItems = [ | ||
{navigation: {title: 'Z'}, id: '1'} as any, | ||
{navigation: {title: 'A'}, id: '2'} as any | ||
]; | ||
component.leftItems = [ | ||
{navigation: {title: 'B'}, id: '3'} as any, | ||
{navigation: {title: 'C'}, id: '4'} as any | ||
]; | ||
component.itemsOrder = MenuOrder.Ascending; | ||
component.switchOrder(); | ||
console.log(MenuOrder); | ||
expect(component.itemsOrder).toBe(MenuOrder.Descending as any); | ||
}); | ||
|
||
|
||
it('should return id in itemsTrackBy', () => { | ||
expect(component.itemsTrackBy(1, {id: 'test'} as any)).toBe('test'); | ||
}); | ||
|
||
it('should return node path in uriNodeTrackBy', () => { | ||
expect(component.uriNodeTrackBy(2, {path: '/test'} as any)).toBe('/test'); | ||
}); | ||
|
||
it('should handle resize event', () => { | ||
const event = {rectangle: {width: 420}} as any; | ||
component.onResizeEvent(event); | ||
expect(component.configRightMenu.width).toBe(420); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove debug console.log statement.
The new test cases provide excellent coverage for the new functionality. However, the console.log statement on line 151 should be removed.
- console.log(MenuOrder);
expect(component.itemsOrder).toBe(MenuOrder.Descending as any);
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
it('should load more items', () => { | |
component.moreItems = [{id: 'a'}, {id: 'b'}, {id: 'c'}] as any; | |
component.rightItems = []; | |
component.loadMoreItems(); | |
expect(component.rightItems.length).toBeGreaterThan(0); | |
}); | |
it('should switch order and change sorting', () => { | |
component.rightItems = [ | |
{navigation: {title: 'Z'}, id: '1'} as any, | |
{navigation: {title: 'A'}, id: '2'} as any | |
]; | |
component.leftItems = [ | |
{navigation: {title: 'B'}, id: '3'} as any, | |
{navigation: {title: 'C'}, id: '4'} as any | |
]; | |
component.itemsOrder = MenuOrder.Ascending; | |
component.switchOrder(); | |
console.log(MenuOrder); | |
expect(component.itemsOrder).toBe(MenuOrder.Descending as any); | |
}); | |
it('should return id in itemsTrackBy', () => { | |
expect(component.itemsTrackBy(1, {id: 'test'} as any)).toBe('test'); | |
}); | |
it('should return node path in uriNodeTrackBy', () => { | |
expect(component.uriNodeTrackBy(2, {path: '/test'} as any)).toBe('/test'); | |
}); | |
it('should handle resize event', () => { | |
const event = {rectangle: {width: 420}} as any; | |
component.onResizeEvent(event); | |
expect(component.configRightMenu.width).toBe(420); | |
}); | |
it('should switch order and change sorting', () => { | |
component.rightItems = [ | |
{navigation: {title: 'Z'}, id: '1'} as any, | |
{navigation: {title: 'A'}, id: '2'} as any | |
]; | |
component.leftItems = [ | |
{navigation: {title: 'B'}, id: '3'} as any, | |
{navigation: {title: 'C'}, id: '4'} as any | |
]; | |
component.itemsOrder = MenuOrder.Ascending; | |
component.switchOrder(); | |
expect(component.itemsOrder).toBe(MenuOrder.Descending as any); | |
}); |
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.spec.ts
between lines 133 and 168, remove the console.log(MenuOrder) statement on line
151 to clean up debug output from the test case 'should switch order and change
sorting'.
class TestBreadcrumbsComponent extends AbstractBreadcrumbsComponent { | ||
constructor( | ||
pathService, | ||
caseResourceService, | ||
activatedRoute, | ||
router, | ||
dynamicRoutingService, | ||
translateService, | ||
logger | ||
) { | ||
super( | ||
pathService, | ||
caseResourceService, | ||
activatedRoute, | ||
router, | ||
dynamicRoutingService, | ||
translateService, | ||
logger | ||
); | ||
} | ||
public setRedirectUrls(map: Map<string, Array<string>>) { | ||
(this as any).redirectUrls = map; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Remove unnecessary constructor.
The constructor doesn't add any logic beyond calling super, making it redundant.
class TestBreadcrumbsComponent extends AbstractBreadcrumbsComponent {
- constructor(
- pathService,
- caseResourceService,
- activatedRoute,
- router,
- dynamicRoutingService,
- translateService,
- logger
- ) {
- super(
- pathService,
- caseResourceService,
- activatedRoute,
- router,
- dynamicRoutingService,
- translateService,
- logger
- );
- }
public setRedirectUrls(map: Map<string, Array<string>>) {
(this as any).redirectUrls = map;
}
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
class TestBreadcrumbsComponent extends AbstractBreadcrumbsComponent { | |
constructor( | |
pathService, | |
caseResourceService, | |
activatedRoute, | |
router, | |
dynamicRoutingService, | |
translateService, | |
logger | |
) { | |
super( | |
pathService, | |
caseResourceService, | |
activatedRoute, | |
router, | |
dynamicRoutingService, | |
translateService, | |
logger | |
); | |
} | |
public setRedirectUrls(map: Map<string, Array<string>>) { | |
(this as any).redirectUrls = map; | |
} | |
} | |
class TestBreadcrumbsComponent extends AbstractBreadcrumbsComponent { | |
public setRedirectUrls(map: Map<string, Array<string>>) { | |
(this as any).redirectUrls = map; | |
} | |
} |
🧰 Tools
🪛 Biome (1.9.4)
[error] 12-30: This constructor is unnecessary.
Unsafe fix: Remove the unnecessary constructor.
(lint/complexity/noUselessConstructor)
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.spec.ts
between lines 11 and 34, the constructor in TestBreadcrumbsComponent only calls
the superclass constructor without adding any extra logic, making it redundant.
Remove the entire constructor method from the class to simplify the code while
preserving functionality.
@@ -485,14 +475,14 @@ export abstract class AbstractNavigationDoubleDrawerComponent implements OnInit, | |||
} | |||
|
|||
protected resolveCustomViewsInRightSide() { | |||
if (!!this._childCustomViews[this._currentNode.path]) { | |||
this.rightItems.push(...Object.values(this._childCustomViews[this._currentNode.path])); | |||
if (!!this._childCustomViews[this.currentPath]) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Remove redundant double-negation.
The double-negation is unnecessary in conditional statements as values are already coerced to boolean.
- if (!!this._childCustomViews[this.currentPath]) {
+ if (this._childCustomViews[this.currentPath]) {
this.rightItems.push(...Object.values(this._childCustomViews[this.currentPath]));
}
- if (!!this._childCustomViews[this.extractParent(this.currentPath)]) {
+ if (this._childCustomViews[this.extractParent(this.currentPath)]) {
this.leftItems.push(...Object.values(this._childCustomViews[this.extractParent(this.currentPath)]));
}
Also applies to: 484-484
🧰 Tools
🪛 Biome (1.9.4)
[error] 478-478: Avoid redundant double-negation.
It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation
(lint/complexity/noExtraBooleanCast)
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.ts
at lines 478 and 484, remove the redundant double-negation (!!) from the
conditional statements. Simply use the variable or expression directly in the if
condition since JavaScript automatically coerces values to boolean in
conditionals.
# Conflicts: # projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
# Conflicts: # projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (1)
projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts (1)
132-132
: Remove redundant double-negation.The double-negation
!!changedFieldsMap
is unnecessary since theif
statement already coerces the value to boolean.Apply this diff:
- if (!!changedFieldsMap) { + if (changedFieldsMap) {
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
projects/netgrif-components-core/src/lib/authentication/models/user.transformer.ts
(1 hunks)projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
(2 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts (2)
projects/netgrif-components-core/src/lib/data-fields/user-field/models/user-value.ts (1)
UserValue
(6-41)projects/netgrif-components-core/src/lib/event/model/event-outcomes/task-outcomes/delegate-task-event-outcome.ts (1)
DelegateTaskEventOutcome
(3-6)
🪛 Biome (1.9.4)
projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
[error] 132-132: Avoid redundant double-negation.
It is not necessary to use double-negation when a value will already be coerced to a boolean.
Unsafe fix: Remove redundant double-negation
(lint/complexity/noExtraBooleanCast)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
- GitHub Check: task-list-completed
- GitHub Check: task-list-completed
- GitHub Check: Matrix Test (20)
- GitHub Check: Test with SonarCloud
- GitHub Check: Matrix Test (24)
- GitHub Check: Matrix Test (22)
🔇 Additional comments (1)
projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts (1)
121-153
: Excellent improvements to formatting and error handling.The code formatting enhancements improve readability, and the explicit error handling for
outcomeResource.error
provides better user feedback through the error snackbar.
// value: !this._safeTask.user ? undefined : new UserValue( | ||
// this._safeTask.user.id, this._safeTask.user.realmId, this._safeTask.user.firstName, this._safeTask.user.lastName, this._safeTask.user.username | ||
// ), | ||
value: !this._safeTask.userId ? undefined : new UserValue( | ||
this._safeTask.userId, '', '', '' | ||
this._safeTask.userId, '', '', '', '' | ||
), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use proper UserValue instantiation instead of empty strings.
The commented-out code shows the correct way to instantiate UserValue
with actual user data, but the active implementation uses empty strings for all parameters. This will result in no user information being displayed in the delegate UI.
Apply this diff to use the proper user data:
- // value: !this._safeTask.user ? undefined : new UserValue(
- // this._safeTask.user.id, this._safeTask.user.realmId, this._safeTask.user.firstName, this._safeTask.user.lastName, this._safeTask.user.username
- // ),
- value: !this._safeTask.userId ? undefined : new UserValue(
- this._safeTask.userId, '', '', '', ''
- ),
+ value: !this._safeTask.user ? undefined : new UserValue(
+ this._safeTask.user.id, this._safeTask.user.realmId, this._safeTask.user.firstName, this._safeTask.user.lastName, this._safeTask.user.username
+ ),
If the _safeTask.user
property is no longer available and only _safeTask.userId
exists, please verify that the missing user details are not needed for the delegate functionality.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
// value: !this._safeTask.user ? undefined : new UserValue( | |
// this._safeTask.user.id, this._safeTask.user.realmId, this._safeTask.user.firstName, this._safeTask.user.lastName, this._safeTask.user.username | |
// ), | |
value: !this._safeTask.userId ? undefined : new UserValue( | |
this._safeTask.userId, '', '', '' | |
this._safeTask.userId, '', '', '', '' | |
), | |
value: !this._safeTask.user ? undefined : new UserValue( | |
this._safeTask.user.id, this._safeTask.user.realmId, this._safeTask.user.firstName, this._safeTask.user.lastName, this._safeTask.user.username | |
), |
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts
between lines 80 and 85, the UserValue is instantiated with empty strings
instead of actual user data, causing missing user information in the delegate
UI. Fix this by replacing the empty strings with the correct user properties
from _safeTask.user if available, or verify if the additional user details are
necessary; if they are, ensure those details are retrieved and passed properly
when creating the UserValue instance.
user.firstName, | ||
user.lastName, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
LGTM! Property names updated correctly for user model refactoring.
The change from user.name
/user.surname
to user.firstName
/user.lastName
aligns with the broader user model refactoring described in the PR objectives. The transformation logic remains sound.
Let me verify that the User constructor and UserResource interface have been updated consistently:
🏁 Script executed:
#!/bin/bash
# Description: Verify User constructor signature and UserResource interface consistency
# Check User constructor to ensure it expects firstName/lastName in the correct positions
ast-grep --pattern $'class User {
$$$
constructor($$$) {
$$$
}
$$$
}'
# Check UserResource interface for firstName/lastName properties
ast-grep --pattern $'interface UserResource {
$$$
firstName: $_;
lastName: $_;
$$$
}'
# Verify no remaining references to old property names in user-related files
echo "Checking for any remaining references to old property names..."
rg -A 3 "user\.name|user\.surname" --type ts
Length of output: 854
Update remaining test to use firstName/lastName
The transformation logic and model updates look correct, but there’s a leftover reference to the old properties in the user-autocomplete spec:
• File: projects/netgrif-components-core/src/lib/search/models/category/user-autocomplete.spec.ts
Update the fullName
assignment:
- fullName: `${user.name} ${user.surname}`,
+ fullName: `${user.firstName} ${user.lastName}`,
Please adjust this test (and any similar occurrences) to complete the refactoring.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
user.firstName, | |
user.lastName, | |
// File: projects/netgrif-components-core/src/lib/search/models/category/user-autocomplete.spec.ts | |
describe('UserAutocompleteModel', () => { | |
it('should construct fullName correctly', () => { | |
const user = { | |
firstName: 'John', | |
lastName: 'Doe', | |
// …other properties | |
}; | |
const expected = { | |
id: '1', | |
- fullName: `${user.name} ${user.surname}`, | |
+ fullName: `${user.firstName} ${user.lastName}`, | |
// …other expected fields | |
}; | |
expect(transformToAutocomplete(user)).toEqual(expected); | |
}); | |
}); |
🤖 Prompt for AI Agents
In
projects/netgrif-components-core/src/lib/search/models/category/user-autocomplete.spec.ts
around the lines where fullName is assigned, update the test code to use
user.firstName and user.lastName instead of the old property names. Search for
any other occurrences of the old property names in this test file and replace
them with firstName and lastName to complete the refactoring consistently.
|
Description
Changes needed after backend User rework.
Implements NAE-2085
Dependencies
No new dependencies were introduced
Third party dependencies
No new dependencies were introduced
Blocking Pull requests
There are no dependencies on other PR
How Has Been This Tested?
Manually tested in application
Checklist:
Summary by CodeRabbit
New Features
Refactor
Bug Fixes
Chores
Documentation