Merge pull request #2040 from atmire/Duplicate-GA-page-view-fix

Fix duplicate GA page_view events
This commit is contained in:
Tim Donohue
2023-01-20 16:00:16 -06:00
committed by GitHub
6 changed files with 21 additions and 11 deletions

View File

@@ -11,7 +11,7 @@ describe('Angulartics2DSpace', () => {
beforeEach(() => { beforeEach(() => {
angulartics2 = { angulartics2 = {
eventTrack: observableOf({action: 'pageView', properties: {object: 'mock-object'}}), eventTrack: observableOf({action: 'page_view', properties: {object: 'mock-object'}}),
filterDeveloperMode: () => filter(() => true) filterDeveloperMode: () => filter(() => true)
} as any; } as any;
statisticsService = jasmine.createSpyObj('statisticsService', {trackViewEvent: null}); statisticsService = jasmine.createSpyObj('statisticsService', {trackViewEvent: null});

View File

@@ -24,7 +24,7 @@ export class Angulartics2DSpace {
} }
private eventTrack(event) { private eventTrack(event) {
if (event.action === 'pageView') { if (event.action === 'page_view') {
this.statisticsService.trackViewEvent(event.properties.object); this.statisticsService.trackViewEvent(event.properties.object);
} else if (event.action === 'search') { } else if (event.action === 'search') {
this.statisticsService.trackSearchEvent( this.statisticsService.trackSearchEvent(

View File

@@ -20,7 +20,7 @@ export class ViewTrackerComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.angulartics2.eventTrack.next({ this.angulartics2.eventTrack.next({
action: 'pageView', action: 'page_view',
properties: {object: this.object}, properties: {object: this.object},
}); });
} }

View File

@@ -1,4 +1,7 @@
import { Angulartics2GoogleAnalytics, Angulartics2GoogleTagManager } from 'angulartics2'; import {
Angulartics2GoogleAnalytics,
Angulartics2GoogleGlobalSiteTag,
} from 'angulartics2';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { GoogleAnalyticsService } from './google-analytics.service'; import { GoogleAnalyticsService } from './google-analytics.service';
@@ -16,7 +19,7 @@ describe('GoogleAnalyticsService', () => {
const srcTestValue = 'mock-script-src'; const srcTestValue = 'mock-script-src';
let service: GoogleAnalyticsService; let service: GoogleAnalyticsService;
let googleAnalyticsSpy: Angulartics2GoogleAnalytics; let googleAnalyticsSpy: Angulartics2GoogleAnalytics;
let googleTagManagerSpy: Angulartics2GoogleTagManager; let googleTagManagerSpy: Angulartics2GoogleGlobalSiteTag;
let configSpy: ConfigurationDataService; let configSpy: ConfigurationDataService;
let klaroServiceSpy: jasmine.SpyObj<KlaroService>; let klaroServiceSpy: jasmine.SpyObj<KlaroService>;
let scriptElementMock: any; let scriptElementMock: any;
@@ -37,7 +40,7 @@ describe('GoogleAnalyticsService', () => {
googleAnalyticsSpy = jasmine.createSpyObj('Angulartics2GoogleAnalytics', [ googleAnalyticsSpy = jasmine.createSpyObj('Angulartics2GoogleAnalytics', [
'startTracking', 'startTracking',
]); ]);
googleTagManagerSpy = jasmine.createSpyObj('Angulartics2GoogleTagManager', [ googleTagManagerSpy = jasmine.createSpyObj('Angulartics2GoogleGlobalSiteTag', [
'startTracking', 'startTracking',
]); ]);

View File

@@ -1,7 +1,10 @@
import { DOCUMENT } from '@angular/common'; import { DOCUMENT } from '@angular/common';
import { Inject, Injectable } from '@angular/core'; import { Inject, Injectable } from '@angular/core';
import { Angulartics2GoogleAnalytics, Angulartics2GoogleTagManager } from 'angulartics2'; import {
Angulartics2GoogleAnalytics,
Angulartics2GoogleGlobalSiteTag,
} from 'angulartics2';
import { combineLatest } from 'rxjs'; import { combineLatest } from 'rxjs';
import { ConfigurationDataService } from '../core/data/configuration-data.service'; import { ConfigurationDataService } from '../core/data/configuration-data.service';
@@ -19,7 +22,7 @@ export class GoogleAnalyticsService {
constructor( constructor(
private googleAnalytics: Angulartics2GoogleAnalytics, private googleAnalytics: Angulartics2GoogleAnalytics,
private googleTagManager: Angulartics2GoogleTagManager, private googleGlobalSiteTag: Angulartics2GoogleGlobalSiteTag,
private klaroService: KlaroService, private klaroService: KlaroService,
private configService: ConfigurationDataService, private configService: ConfigurationDataService,
@Inject(DOCUMENT) private document: any, @Inject(DOCUMENT) private document: any,
@@ -70,7 +73,7 @@ export class GoogleAnalyticsService {
this.document.body.appendChild(libScript); this.document.body.appendChild(libScript);
// start tracking // start tracking
this.googleTagManager.startTracking(); this.googleGlobalSiteTag.startTracking();
} else { } else {
// add trackingId snippet to page // add trackingId snippet to page
const keyScript = this.document.createElement('script'); const keyScript = this.document.createElement('script');

View File

@@ -6,7 +6,11 @@ import { ServerModule, ServerTransferStateModule } from '@angular/platform-serve
import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { Angulartics2, Angulartics2GoogleAnalytics, Angulartics2GoogleTagManager } from 'angulartics2'; import {
Angulartics2,
Angulartics2GoogleAnalytics,
Angulartics2GoogleGlobalSiteTag
} from 'angulartics2';
import { AppComponent } from '../../app/app.component'; import { AppComponent } from '../../app/app.component';
@@ -63,7 +67,7 @@ export function createTranslateLoader(transferState: TransferState) {
useClass: AngularticsProviderMock useClass: AngularticsProviderMock
}, },
{ {
provide: Angulartics2GoogleTagManager, provide: Angulartics2GoogleGlobalSiteTag,
useClass: AngularticsProviderMock useClass: AngularticsProviderMock
}, },
{ {