From 35cbedf6fe77bc5ed0d9011d7df7edac7bd66904 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Tue, 20 Mar 2018 15:29:05 +0100 Subject: [PATCH] 50479: Added google analytics support --- config/environment.default.js | 2 ++ package.json | 1 + src/app/app.component.ts | 4 +++- src/config/global-config.interface.ts | 1 + src/index.csr.html | 6 ++++++ src/index.html | 6 ++++++ src/main.browser.ts | 5 +++++ src/modules/app/browser-app.module.ts | 3 +++ src/modules/app/server-app.module.ts | 7 +++++++ yarn.lock | 6 ++++++ 10 files changed, 40 insertions(+), 1 deletion(-) diff --git a/config/environment.default.js b/config/environment.default.js index ad7be69b9e..e8d69d8b38 100644 --- a/config/environment.default.js +++ b/config/environment.default.js @@ -27,6 +27,8 @@ module.exports = { async: true, time: false }, + // Google Analytics tracking id + gaTrackingId: '', // Log directory logDirectory: '.', // NOTE: will log all redux actions and transfers in console diff --git a/package.json b/package.json index 35bd2602b6..6e6f898bce 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "@ngx-translate/core": "9.1.1", "@ngx-translate/http-loader": "2.0.1", "angular-idle-preload": "2.0.4", + "angulartics2": "^5.2.0", "body-parser": "1.18.2", "bootstrap": "^4.0.0", "cerialize": "0.1.18", diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 25bdde2d23..c1c84d6dbc 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -17,6 +17,7 @@ import { MetadataService } from './core/metadata/metadata.service'; import { HostWindowResizeAction } from './shared/host-window.actions'; import { HostWindowState } from './shared/host-window.reducer'; import { NativeWindowRef, NativeWindowService } from './shared/window.service'; +import { Angulartics2GoogleAnalytics } from 'angulartics2/ga'; @Component({ selector: 'ds-app', @@ -32,7 +33,8 @@ export class AppComponent implements OnInit { @Inject(NativeWindowService) private _window: NativeWindowRef, private translate: TranslateService, private store: Store, - private metadata: MetadataService + private metadata: MetadataService, + private angulartics2GoogleAnalytics: Angulartics2GoogleAnalytics ) { // this language will be used as a fallback when a translation isn't found in the current language translate.setDefaultLang('en'); diff --git a/src/config/global-config.interface.ts b/src/config/global-config.interface.ts index bd04f9d3a7..e85f67b4ab 100644 --- a/src/config/global-config.interface.ts +++ b/src/config/global-config.interface.ts @@ -9,6 +9,7 @@ export interface GlobalConfig extends Config { production: boolean; cache: CacheConfig; universal: UniversalConfig; + gaTrackingId: string; logDirectory: string; debug: boolean; } diff --git a/src/index.csr.html b/src/index.csr.html index 8c25dfa084..a2a48079ad 100644 --- a/src/index.csr.html +++ b/src/index.csr.html @@ -10,6 +10,12 @@ + diff --git a/src/index.html b/src/index.html index 491a2d319c..2ea6498627 100644 --- a/src/index.html +++ b/src/index.html @@ -10,6 +10,12 @@ + diff --git a/src/main.browser.ts b/src/main.browser.ts index ebb9b56169..388693ca06 100644 --- a/src/main.browser.ts +++ b/src/main.browser.ts @@ -25,6 +25,11 @@ export function main() { } }); + // Add google analytics key + var script = document.createElement('script'); + script.innerHTML = 'ga(\'create\', \'' + ENV_CONFIG.gaTrackingId + '\', \'auto\');'; + document.body.appendChild(script); + return platformBrowserDynamic().bootstrapModule(BrowserAppModule); } diff --git a/src/modules/app/browser-app.module.ts b/src/modules/app/browser-app.module.ts index df77dad74f..1112ebdb23 100644 --- a/src/modules/app/browser-app.module.ts +++ b/src/modules/app/browser-app.module.ts @@ -14,6 +14,8 @@ import { AppComponent } from '../../app/app.component'; import { AppModule } from '../../app/app.module'; import { DSpaceBrowserTransferStateModule } from '../transfer-state/dspace-browser-transfer-state.module'; import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.service'; +import { Angulartics2Module } from 'angulartics2'; +import { Angulartics2GoogleAnalytics } from 'angulartics2/ga'; export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, 'assets/i18n/', '.json'); @@ -34,6 +36,7 @@ export function createTranslateLoader(http: HttpClient) { preloadingStrategy: IdlePreload }), + Angulartics2Module.forRoot([Angulartics2GoogleAnalytics]), BrowserAnimationsModule, DSpaceBrowserTransferStateModule, TranslateModule.forRoot({ diff --git a/src/modules/app/server-app.module.ts b/src/modules/app/server-app.module.ts index ff8455cca0..0e307667c8 100644 --- a/src/modules/app/server-app.module.ts +++ b/src/modules/app/server-app.module.ts @@ -16,10 +16,16 @@ import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.ser import { TranslateUniversalLoader } from '../translate-universal-loader'; +import { Angulartics2GoogleAnalytics } from 'angulartics2/ga'; + export function createTranslateLoader() { return new TranslateUniversalLoader('dist/assets/i18n/', '.json'); } +class AngularticsMock { + public eventTrack(action, properties) { } +} + @NgModule({ bootstrap: [AppComponent], imports: [ @@ -42,6 +48,7 @@ export function createTranslateLoader() { AppModule ], providers: [ + { provide: Angulartics2GoogleAnalytics, useClass: AngularticsMock } ] }) export class ServerAppModule { diff --git a/yarn.lock b/yarn.lock index b6e461e9b6..a42c00539f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -417,6 +417,12 @@ angular2-template-loader@0.6.2: dependencies: loader-utils "^0.2.15" +angulartics2@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/angulartics2/-/angulartics2-5.2.0.tgz#5bac82d4b6acf798b7db906488861e70b49fe04c" + dependencies: + tslib "^1.7.1" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"