From f3065bcbfcb75d4bb28941f9129a69ec1ae3e0fc Mon Sep 17 00:00:00 2001 From: lotte Date: Wed, 26 Mar 2025 17:59:31 +0100 Subject: [PATCH] 129694: PoC #4099 solution with resolvers --- src/app/app-routes.ts | 11 +++- .../collection-page/collection-page-routes.ts | 4 ++ .../collection-page.component.html | 1 - .../collection-page.component.ts | 3 +- .../community-page/community-page-routes.ts | 4 ++ .../community-page.component.html | 1 - .../community-page.component.ts | 3 +- src/app/home-page/home-page-routes.ts | 6 +- src/app/home-page/home-page.component.html | 3 - src/app/home-page/home-page.component.ts | 4 +- .../full/full-item-page.component.html | 1 - .../full/full-item-page.component.spec.ts | 4 +- .../full/full-item-page.component.ts | 3 +- src/app/item-page/item-page-routes.ts | 8 +++ .../item-page/simple/item-page.component.html | 1 - .../simple/item-page.component.spec.ts | 4 +- .../item-page/simple/item-page.component.ts | 3 +- src/app/shared/theme-support/theme.service.ts | 2 +- .../dspace/view-tracker-resolver.service.ts | 66 +++++++++++++++++++ .../dspace/view-tracker.component.html | 1 - .../dspace/view-tracker.component.scss | 3 - .../dspace/view-tracker.component.ts | 63 ------------------ .../dspace/view-tracker.resolver.ts | 11 ++++ .../collection-page.component.ts | 3 +- .../community-page.component.ts | 3 +- .../app/home-page/home-page.component.ts | 4 +- .../full/full-item-page.component.ts | 3 +- .../item-page/simple/item-page.component.ts | 3 +- 28 files changed, 122 insertions(+), 104 deletions(-) create mode 100644 src/app/statistics/angulartics/dspace/view-tracker-resolver.service.ts delete mode 100644 src/app/statistics/angulartics/dspace/view-tracker.component.html delete mode 100644 src/app/statistics/angulartics/dspace/view-tracker.component.scss delete mode 100644 src/app/statistics/angulartics/dspace/view-tracker.component.ts create mode 100644 src/app/statistics/angulartics/dspace/view-tracker.resolver.ts diff --git a/src/app/app-routes.ts b/src/app/app-routes.ts index 29a78364b5..ad320671f6 100644 --- a/src/app/app-routes.ts +++ b/src/app/app-routes.ts @@ -42,6 +42,8 @@ import { ThemedPageNotFoundComponent } from './pagenotfound/themed-pagenotfound. import { PROCESS_MODULE_PATH } from './process-page/process-page-routing.paths'; import { provideSubmissionState } from './submission/provide-submission-state'; import { SUGGESTION_MODULE_PATH } from './suggestions-page/suggestions-page-routing-paths'; +import { homePageResolver } from './home-page/home-page.resolver'; +import { viewTrackerResolver } from './statistics/angulartics/dspace/view-tracker.resolver'; export const APP_ROUTES: Route[] = [ { path: INTERNAL_SERVER_ERROR, component: ThemedPageInternalServerErrorComponent }, @@ -63,9 +65,16 @@ export const APP_ROUTES: Route[] = [ path: 'home', loadChildren: () => import('./home-page/home-page-routes') .then((m) => m.ROUTES), - data: { showBreadcrumbs: false }, + data: { + showBreadcrumbs: false, + dsoPath: 'site' + }, providers: [provideSuggestionNotificationsState()], canActivate: [endUserAgreementCurrentUserGuard], + resolve: { + site: homePageResolver, + tracking: viewTrackerResolver, + }, }, { path: 'community-list', diff --git a/src/app/collection-page/collection-page-routes.ts b/src/app/collection-page/collection-page-routes.ts index f2dadc3fbe..480ce4b2b9 100644 --- a/src/app/collection-page/collection-page-routes.ts +++ b/src/app/collection-page/collection-page-routes.ts @@ -24,6 +24,7 @@ import { DeleteCollectionPageComponent } from './delete-collection-page/delete-c import { itemTemplatePageResolver } from './edit-item-template-page/item-template-page.resolver'; import { ThemedEditItemTemplatePageComponent } from './edit-item-template-page/themed-edit-item-template-page.component'; import { ThemedCollectionPageComponent } from './themed-collection-page.component'; +import { viewTrackerResolver } from '../statistics/angulartics/dspace/view-tracker.resolver'; export const ROUTES: Route[] = [ { @@ -100,6 +101,9 @@ export const ROUTES: Route[] = [ data: { breadcrumbKey: 'browse.metadata' }, }, ], + resolve: { + tracking: viewTrackerResolver, + }, }, ], data: { diff --git a/src/app/collection-page/collection-page.component.html b/src/app/collection-page/collection-page.component.html index 4a3e28c6aa..08f338b2d8 100644 --- a/src/app/collection-page/collection-page.component.html +++ b/src/app/collection-page/collection-page.component.html @@ -3,7 +3,6 @@ *ngVar="(collectionRD$ | async) as collectionRD">
-
diff --git a/src/app/collection-page/collection-page.component.ts b/src/app/collection-page/collection-page.component.ts index 0d240f5328..3f5deaaa31 100644 --- a/src/app/collection-page/collection-page.component.ts +++ b/src/app/collection-page/collection-page.component.ts @@ -50,7 +50,7 @@ import { ThemedLoadingComponent } from '../shared/loading/themed-loading.compone import { ObjectCollectionComponent } from '../shared/object-collection/object-collection.component'; import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model'; import { VarDirective } from '../shared/utils/var.directive'; -import { ViewTrackerComponent } from '../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../statistics/angulartics/dspace/view-tracker-resolver.service'; import { getCollectionPageRoute } from './collection-page-routing-paths'; @Component({ @@ -68,7 +68,6 @@ import { getCollectionPageRoute } from './collection-page-routing-paths'; NgIf, ThemedLoadingComponent, TranslateModule, - ViewTrackerComponent, VarDirective, AsyncPipe, ComcolPageHeaderComponent, diff --git a/src/app/community-page/community-page-routes.ts b/src/app/community-page/community-page-routes.ts index d9505c53b1..8d67b98dba 100644 --- a/src/app/community-page/community-page-routes.ts +++ b/src/app/community-page/community-page-routes.ts @@ -21,6 +21,7 @@ import { createCommunityPageGuard } from './create-community-page/create-communi import { DeleteCommunityPageComponent } from './delete-community-page/delete-community-page.component'; import { SubComColSectionComponent } from './sections/sub-com-col-section/sub-com-col-section.component'; import { ThemedCommunityPageComponent } from './themed-community-page.component'; +import { viewTrackerResolver } from '../statistics/angulartics/dspace/view-tracker.resolver'; export const ROUTES: Route[] = [ { @@ -70,6 +71,9 @@ export const ROUTES: Route[] = [ { path: '', component: ThemedCommunityPageComponent, + resolve: { + tracking: viewTrackerResolver, + }, children: [ { path: '', diff --git a/src/app/community-page/community-page.component.html b/src/app/community-page/community-page.component.html index a695e2019a..740a7c8a72 100644 --- a/src/app/community-page/community-page.component.html +++ b/src/app/community-page/community-page.component.html @@ -1,7 +1,6 @@
-
diff --git a/src/app/community-page/community-page.component.ts b/src/app/community-page/community-page.component.ts index d04ecbee19..74ccc533b6 100644 --- a/src/app/community-page/community-page.component.ts +++ b/src/app/community-page/community-page.component.ts @@ -41,7 +41,7 @@ import { hasValue } from '../shared/empty.util'; import { ErrorComponent } from '../shared/error/error.component'; import { ThemedLoadingComponent } from '../shared/loading/themed-loading.component'; import { VarDirective } from '../shared/utils/var.directive'; -import { ViewTrackerComponent } from '../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../statistics/angulartics/dspace/view-tracker-resolver.service'; import { getCommunityPageRoute } from './community-page-routing-paths'; import { ThemedCollectionPageSubCollectionListComponent } from './sections/sub-com-col-section/sub-collection-list/themed-community-page-sub-collection-list.component'; import { ThemedCommunityPageSubCommunityListComponent } from './sections/sub-com-col-section/sub-community-list/themed-community-page-sub-community-list.component'; @@ -66,7 +66,6 @@ import { ThemedCommunityPageSubCommunityListComponent } from './sections/sub-com ComcolPageLogoComponent, ComcolPageHeaderComponent, AsyncPipe, - ViewTrackerComponent, VarDirective, RouterOutlet, RouterModule, diff --git a/src/app/home-page/home-page-routes.ts b/src/app/home-page/home-page-routes.ts index 6e4a8f353f..f44daab3fe 100644 --- a/src/app/home-page/home-page-routes.ts +++ b/src/app/home-page/home-page-routes.ts @@ -4,6 +4,7 @@ import { LinkMenuItemModel } from '../shared/menu/menu-item/models/link.model'; import { MenuItemType } from '../shared/menu/menu-item-type.model'; import { homePageResolver } from './home-page.resolver'; import { ThemedHomePageComponent } from './themed-home-page.component'; +import { viewTrackerResolver } from '../statistics/angulartics/dspace/view-tracker.resolver'; export const ROUTES: Route[] = [ { @@ -24,10 +25,7 @@ export const ROUTES: Route[] = [ link: 'statistics', } as LinkMenuItemModel, }], - }, - }, - resolve: { - site: homePageResolver, + } }, }, ]; diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html index ad48fb328c..9a1b23d9c6 100644 --- a/src/app/home-page/home-page.component.html +++ b/src/app/home-page/home-page.component.html @@ -14,9 +14,6 @@ - - - diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts index c954e90402..de4977323b 100644 --- a/src/app/home-page/home-page.component.ts +++ b/src/app/home-page/home-page.component.ts @@ -23,7 +23,7 @@ import { SuggestionsPopupComponent } from '../notifications/suggestions-popup/su import { ThemedConfigurationSearchPageComponent } from '../search-page/themed-configuration-search-page.component'; import { ThemedSearchFormComponent } from '../shared/search-form/themed-search-form.component'; import { PageWithSidebarComponent } from '../shared/sidebar/page-with-sidebar.component'; -import { ViewTrackerComponent } from '../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../statistics/angulartics/dspace/view-tracker-resolver.service'; import { HomeCoarComponent } from './home-coar/home-coar.component'; import { ThemedHomeNewsComponent } from './home-news/themed-home-news.component'; import { RecentItemListComponent } from './recent-item-list/recent-item-list.component'; @@ -34,7 +34,7 @@ import { ThemedTopLevelCommunityListComponent } from './top-level-community-list styleUrls: ['./home-page.component.scss'], templateUrl: './home-page.component.html', standalone: true, - imports: [ThemedHomeNewsComponent, NgTemplateOutlet, NgIf, ViewTrackerComponent, ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, RecentItemListComponent, AsyncPipe, TranslateModule, NgClass, SuggestionsPopupComponent, ThemedConfigurationSearchPageComponent, PageWithSidebarComponent, HomeCoarComponent], + imports: [ThemedHomeNewsComponent, NgTemplateOutlet, NgIf, ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, RecentItemListComponent, AsyncPipe, TranslateModule, NgClass, SuggestionsPopupComponent, ThemedConfigurationSearchPageComponent, PageWithSidebarComponent, HomeCoarComponent], }) export class HomePageComponent implements OnInit { diff --git a/src/app/item-page/full/full-item-page.component.html b/src/app/item-page/full/full-item-page.component.html index b6e1d1e6ed..b6110c86a7 100644 --- a/src/app/item-page/full/full-item-page.component.html +++ b/src/app/item-page/full/full-item-page.component.html @@ -3,7 +3,6 @@
-
diff --git a/src/app/item-page/full/full-item-page.component.spec.ts b/src/app/item-page/full/full-item-page.component.spec.ts index 0d05510fbf..f2bf0af421 100644 --- a/src/app/item-page/full/full-item-page.component.spec.ts +++ b/src/app/item-page/full/full-item-page.component.spec.ts @@ -45,7 +45,7 @@ import { createPaginatedList } from '../../shared/testing/utils.test'; import { ThemeService } from '../../shared/theme-support/theme.service'; import { TruncatePipe } from '../../shared/utils/truncate.pipe'; import { VarDirective } from '../../shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../statistics/angulartics/dspace/view-tracker-resolver.service'; import { ThemedItemAlertsComponent } from '../alerts/themed-item-alerts.component'; import { CollectionsComponent } from '../field-components/collections/collections.component'; import { ThemedItemPageTitleFieldComponent } from '../simple/field-components/specific-field/title/themed-item-page-field.component'; @@ -162,7 +162,7 @@ describe('FullItemPageComponent', () => { ThemedLoadingComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, - ViewTrackerComponent, + ViewTrackerResolverService, ThemedItemAlertsComponent, CollectionsComponent, ThemedFullFileSectionComponent, diff --git a/src/app/item-page/full/full-item-page.component.ts b/src/app/item-page/full/full-item-page.component.ts index 88a1254feb..a780f895e4 100644 --- a/src/app/item-page/full/full-item-page.component.ts +++ b/src/app/item-page/full/full-item-page.component.ts @@ -44,7 +44,7 @@ import { hasValue } from '../../shared/empty.util'; import { ErrorComponent } from '../../shared/error/error.component'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; import { VarDirective } from '../../shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../statistics/angulartics/dspace/view-tracker-resolver.service'; import { ThemedItemAlertsComponent } from '../alerts/themed-item-alerts.component'; import { CollectionsComponent } from '../field-components/collections/collections.component'; import { ThemedItemPageTitleFieldComponent } from '../simple/field-components/specific-field/title/themed-item-page-field.component'; @@ -79,7 +79,6 @@ import { ThemedFullFileSectionComponent } from './field-components/file-section/ ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, ItemVersionsNoticeComponent, - ViewTrackerComponent, ThemedItemAlertsComponent, VarDirective, ], diff --git a/src/app/item-page/item-page-routes.ts b/src/app/item-page/item-page-routes.ts index 684ea56459..8f75474097 100644 --- a/src/app/item-page/item-page-routes.ts +++ b/src/app/item-page/item-page-routes.ts @@ -20,6 +20,8 @@ import { orcidPageGuard } from './orcid-page/orcid-page.guard'; import { ThemedItemPageComponent } from './simple/themed-item-page.component'; import { versionResolver } from './version-page/version.resolver'; import { VersionPageComponent } from './version-page/version-page/version-page.component'; +import { ViewTrackerResolverService } from '../statistics/angulartics/dspace/view-tracker-resolver.service'; +import { viewTrackerResolver } from '../statistics/angulartics/dspace/view-tracker.resolver'; export const ROUTES: Route[] = [ { @@ -35,10 +37,16 @@ export const ROUTES: Route[] = [ path: '', component: ThemedItemPageComponent, pathMatch: 'full', + resolve: { + tracking: viewTrackerResolver, + } }, { path: 'full', component: ThemedFullItemPageComponent, + resolve: { + tracking: viewTrackerResolver, + } }, { path: ITEM_EDIT_PATH, diff --git a/src/app/item-page/simple/item-page.component.html b/src/app/item-page/simple/item-page.component.html index 912115c961..b9b6fbf30e 100644 --- a/src/app/item-page/simple/item-page.component.html +++ b/src/app/item-page/simple/item-page.component.html @@ -5,7 +5,6 @@ -
diff --git a/src/app/item-page/simple/item-page.component.spec.ts b/src/app/item-page/simple/item-page.component.spec.ts index 7b29711206..80686a682d 100644 --- a/src/app/item-page/simple/item-page.component.spec.ts +++ b/src/app/item-page/simple/item-page.component.spec.ts @@ -44,7 +44,7 @@ import { import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { createPaginatedList } from '../../shared/testing/utils.test'; import { VarDirective } from '../../shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../statistics/angulartics/dspace/view-tracker-resolver.service'; import { ThemedItemAlertsComponent } from '../alerts/themed-item-alerts.component'; import { ItemVersionsComponent } from '../versions/item-versions.component'; import { ItemVersionsNoticeComponent } from '../versions/notice/item-versions-notice.component'; @@ -142,7 +142,7 @@ describe('ItemPageComponent', () => { remove: { imports: [ ThemedItemAlertsComponent, ItemVersionsNoticeComponent, - ViewTrackerComponent, + ViewTrackerResolverService, ListableObjectComponentLoaderComponent, ItemVersionsComponent, ErrorComponent, diff --git a/src/app/item-page/simple/item-page.component.ts b/src/app/item-page/simple/item-page.component.ts index fb2db4ad05..1247bd0d7e 100644 --- a/src/app/item-page/simple/item-page.component.ts +++ b/src/app/item-page/simple/item-page.component.ts @@ -48,7 +48,7 @@ import { ErrorComponent } from '../../shared/error/error.component'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; import { ListableObjectComponentLoaderComponent } from '../../shared/object-collection/shared/listable-object/listable-object-component-loader.component'; import { VarDirective } from '../../shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../statistics/angulartics/dspace/view-tracker-resolver.service'; import { ThemedItemAlertsComponent } from '../alerts/themed-item-alerts.component'; import { getItemPageRoute } from '../item-page-routing-paths'; import { ItemVersionsComponent } from '../versions/item-versions.component'; @@ -72,7 +72,6 @@ import { QaEventNotificationComponent } from './qa-event-notification/qa-event-n VarDirective, ThemedItemAlertsComponent, ItemVersionsNoticeComponent, - ViewTrackerComponent, ListableObjectComponentLoaderComponent, ItemVersionsComponent, ErrorComponent, diff --git a/src/app/shared/theme-support/theme.service.ts b/src/app/shared/theme-support/theme.service.ts index 6d0ba38b5b..d82bd2b836 100644 --- a/src/app/shared/theme-support/theme.service.ts +++ b/src/app/shared/theme-support/theme.service.ts @@ -5,7 +5,7 @@ import { Injector, } from '@angular/core'; import { - ActivatedRouteSnapshot, + ActivatedRouteSnapshot, NavigationStart, ResolveEnd, Router, } from '@angular/router'; diff --git a/src/app/statistics/angulartics/dspace/view-tracker-resolver.service.ts b/src/app/statistics/angulartics/dspace/view-tracker-resolver.service.ts new file mode 100644 index 0000000000..f9a24e091a --- /dev/null +++ b/src/app/statistics/angulartics/dspace/view-tracker-resolver.service.ts @@ -0,0 +1,66 @@ +import { + AfterViewChecked, AfterViewInit, + Component, Injectable, + Input, + OnDestroy, + OnInit, +} from '@angular/core'; +import { Angulartics2 } from 'angulartics2'; +import { Observable, Subscription, switchMap } from 'rxjs'; +import { filter, take } from 'rxjs/operators'; + +import { ReferrerService } from '../../../core/services/referrer.service'; +import { DSpaceObject } from '../../../core/shared/dspace-object.model'; +import { hasValue } from '../../../shared/empty.util'; +import { ActivatedRoute, ActivatedRouteSnapshot, Resolve, ResolveEnd, Router, RouterStateSnapshot } from '@angular/router'; +import { BreadcrumbConfig } from '../../../breadcrumbs/breadcrumb/breadcrumb-config.model'; +import { SubmissionObject } from '../../../core/submission/models/submission-object.model'; + +/** + * This component triggers a page view statistic + */ +@Injectable({ + providedIn: 'root' +}) +export class ViewTrackerResolverService { + + constructor( + public angulartics2: Angulartics2, + public referrerService: ReferrerService, + public router: Router, + ) { + } + + resolve(routeSnapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + const dsoPath = routeSnapshot.data['dsoPath'] || 'dso.payload'; // Fetch the resolvers passed via the route data + this.router.events.pipe( + filter(event => event instanceof ResolveEnd), + take(1), + switchMap(() => + this.referrerService.getReferrer().pipe(take(1)))) + .subscribe((referrer: string) => { + this.angulartics2.eventTrack.next({ + action: 'page_view', + properties: { + object: this.getNestedProperty(routeSnapshot.data, dsoPath), + referrer, + }, + }); + }); + return true; + } + + private getNestedProperty(obj: any, path: string) { + const keys = path.split('.'); + let result = obj; + + for (const key of keys) { + if (result && result.hasOwnProperty(key)) { + result = result[key]; + } else { + return undefined; + } + } + return result; + } +} diff --git a/src/app/statistics/angulartics/dspace/view-tracker.component.html b/src/app/statistics/angulartics/dspace/view-tracker.component.html deleted file mode 100644 index c0c0ffe181..0000000000 --- a/src/app/statistics/angulartics/dspace/view-tracker.component.html +++ /dev/null @@ -1 +0,0 @@ -  diff --git a/src/app/statistics/angulartics/dspace/view-tracker.component.scss b/src/app/statistics/angulartics/dspace/view-tracker.component.scss deleted file mode 100644 index c76cafbe44..0000000000 --- a/src/app/statistics/angulartics/dspace/view-tracker.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -:host { - display: none -} diff --git a/src/app/statistics/angulartics/dspace/view-tracker.component.ts b/src/app/statistics/angulartics/dspace/view-tracker.component.ts deleted file mode 100644 index 801f4fd2cb..0000000000 --- a/src/app/statistics/angulartics/dspace/view-tracker.component.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { - Component, - Input, - OnDestroy, - OnInit, -} from '@angular/core'; -import { Angulartics2 } from 'angulartics2'; -import { Subscription } from 'rxjs'; -import { take } from 'rxjs/operators'; - -import { ReferrerService } from '../../../core/services/referrer.service'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { hasValue } from '../../../shared/empty.util'; - -/** - * This component triggers a page view statistic - */ -@Component({ - selector: 'ds-view-tracker', - styleUrls: ['./view-tracker.component.scss'], - templateUrl: './view-tracker.component.html', - standalone: true, -}) -export class ViewTrackerComponent implements OnInit, OnDestroy { - /** - * The DSpaceObject to track a view event about - */ - @Input() object: DSpaceObject; - - /** - * The subscription on this.referrerService.getReferrer() - * @protected - */ - protected sub: Subscription; - - constructor( - public angulartics2: Angulartics2, - public referrerService: ReferrerService, - ) { - } - - ngOnInit(): void { - this.sub = this.referrerService.getReferrer() - .pipe(take(1)) - .subscribe((referrer: string) => { - this.angulartics2.eventTrack.next({ - action: 'page_view', - properties: { - object: this.object, - referrer, - }, - }); - }); - } - - ngOnDestroy(): void { - // unsubscribe in the case that this component is destroyed before - // this.referrerService.getReferrer() has emitted - if (hasValue(this.sub)) { - this.sub.unsubscribe(); - } - } -} diff --git a/src/app/statistics/angulartics/dspace/view-tracker.resolver.ts b/src/app/statistics/angulartics/dspace/view-tracker.resolver.ts new file mode 100644 index 0000000000..9b98185d61 --- /dev/null +++ b/src/app/statistics/angulartics/dspace/view-tracker.resolver.ts @@ -0,0 +1,11 @@ +import { inject } from '@angular/core'; +import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot, } from '@angular/router'; +import { ViewTrackerResolverService } from './view-tracker-resolver.service'; + +export const viewTrackerResolver: ResolveFn = ( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot, + viewTrackerResolverService: ViewTrackerResolverService = inject(ViewTrackerResolverService), +): boolean => { + return viewTrackerResolverService.resolve(route, state); +}; diff --git a/src/themes/custom/app/collection-page/collection-page.component.ts b/src/themes/custom/app/collection-page/collection-page.component.ts index 4b2f9e3245..f2dbe2619c 100644 --- a/src/themes/custom/app/collection-page/collection-page.component.ts +++ b/src/themes/custom/app/collection-page/collection-page.component.ts @@ -24,7 +24,7 @@ import { ErrorComponent } from '../../../../app/shared/error/error.component'; import { ThemedLoadingComponent } from '../../../../app/shared/loading/themed-loading.component'; import { ObjectCollectionComponent } from '../../../../app/shared/object-collection/object-collection.component'; import { VarDirective } from '../../../../app/shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../../../app/statistics/angulartics/dspace/view-tracker-resolver.service'; @Component({ selector: 'ds-themed-collection-page', @@ -44,7 +44,6 @@ import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dsp NgIf, ThemedLoadingComponent, TranslateModule, - ViewTrackerComponent, VarDirective, AsyncPipe, ComcolPageHeaderComponent, diff --git a/src/themes/custom/app/community-page/community-page.component.ts b/src/themes/custom/app/community-page/community-page.component.ts index 5aa7e85527..f86d787ebf 100644 --- a/src/themes/custom/app/community-page/community-page.component.ts +++ b/src/themes/custom/app/community-page/community-page.component.ts @@ -25,7 +25,7 @@ import { DsoEditMenuComponent } from '../../../../app/shared/dso-page/dso-edit-m import { ErrorComponent } from '../../../../app/shared/error/error.component'; import { ThemedLoadingComponent } from '../../../../app/shared/loading/themed-loading.component'; import { VarDirective } from '../../../../app/shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../../../app/statistics/angulartics/dspace/view-tracker-resolver.service'; @Component({ selector: 'ds-themed-community-page', @@ -50,7 +50,6 @@ import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dsp ComcolPageLogoComponent, ComcolPageHeaderComponent, AsyncPipe, - ViewTrackerComponent, VarDirective, RouterOutlet, RouterModule, diff --git a/src/themes/custom/app/home-page/home-page.component.ts b/src/themes/custom/app/home-page/home-page.component.ts index 2b45f69754..838311f323 100644 --- a/src/themes/custom/app/home-page/home-page.component.ts +++ b/src/themes/custom/app/home-page/home-page.component.ts @@ -16,7 +16,7 @@ import { SuggestionsPopupComponent } from '../../../../app/notifications/suggest import { ThemedConfigurationSearchPageComponent } from '../../../../app/search-page/themed-configuration-search-page.component'; import { ThemedSearchFormComponent } from '../../../../app/shared/search-form/themed-search-form.component'; import { PageWithSidebarComponent } from '../../../../app/shared/sidebar/page-with-sidebar.component'; -import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../../../app/statistics/angulartics/dspace/view-tracker-resolver.service'; @Component({ selector: 'ds-themed-home-page', @@ -25,7 +25,7 @@ import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dsp // templateUrl: './home-page.component.html' templateUrl: '../../../../app/home-page/home-page.component.html', standalone: true, - imports: [ThemedHomeNewsComponent, NgTemplateOutlet, NgIf, ViewTrackerComponent, ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, RecentItemListComponent, AsyncPipe, TranslateModule, NgClass, SuggestionsPopupComponent, ThemedConfigurationSearchPageComponent, PageWithSidebarComponent, HomeCoarComponent], + imports: [ThemedHomeNewsComponent, NgTemplateOutlet, NgIf, ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, RecentItemListComponent, AsyncPipe, TranslateModule, NgClass, SuggestionsPopupComponent, ThemedConfigurationSearchPageComponent, PageWithSidebarComponent, HomeCoarComponent], }) export class HomePageComponent extends BaseComponent { diff --git a/src/themes/custom/app/item-page/full/full-item-page.component.ts b/src/themes/custom/app/item-page/full/full-item-page.component.ts index c1bad7ba89..a0fda3fc10 100644 --- a/src/themes/custom/app/item-page/full/full-item-page.component.ts +++ b/src/themes/custom/app/item-page/full/full-item-page.component.ts @@ -23,7 +23,7 @@ import { DsoEditMenuComponent } from '../../../../../app/shared/dso-page/dso-edi import { ErrorComponent } from '../../../../../app/shared/error/error.component'; import { ThemedLoadingComponent } from '../../../../../app/shared/loading/themed-loading.component'; import { VarDirective } from '../../../../../app/shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../../../../app/statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../../../../app/statistics/angulartics/dspace/view-tracker-resolver.service'; /** * This component renders a full item page. @@ -54,7 +54,6 @@ import { ViewTrackerComponent } from '../../../../../app/statistics/angulartics/ ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, ItemVersionsNoticeComponent, - ViewTrackerComponent, ThemedItemAlertsComponent, VarDirective, ], diff --git a/src/themes/custom/app/item-page/simple/item-page.component.ts b/src/themes/custom/app/item-page/simple/item-page.component.ts index 7daa65287a..ae86537d1f 100644 --- a/src/themes/custom/app/item-page/simple/item-page.component.ts +++ b/src/themes/custom/app/item-page/simple/item-page.component.ts @@ -19,7 +19,7 @@ import { ErrorComponent } from '../../../../../app/shared/error/error.component' import { ThemedLoadingComponent } from '../../../../../app/shared/loading/themed-loading.component'; import { ListableObjectComponentLoaderComponent } from '../../../../../app/shared/object-collection/shared/listable-object/listable-object-component-loader.component'; import { VarDirective } from '../../../../../app/shared/utils/var.directive'; -import { ViewTrackerComponent } from '../../../../../app/statistics/angulartics/dspace/view-tracker.component'; +import { ViewTrackerResolverService } from '../../../../../app/statistics/angulartics/dspace/view-tracker-resolver.service'; /** * This component renders a simple item page. @@ -39,7 +39,6 @@ import { ViewTrackerComponent } from '../../../../../app/statistics/angulartics/ VarDirective, ThemedItemAlertsComponent, ItemVersionsNoticeComponent, - ViewTrackerComponent, ListableObjectComponentLoaderComponent, ItemVersionsComponent, ErrorComponent,