Merge branch 'master' into w2p-50632_Replace-mock-registry-service-with-implementation

This commit is contained in:
Kristof De Langhe
2018-05-03 11:41:48 +02:00
12 changed files with 60 additions and 2 deletions

View File

@@ -30,6 +30,8 @@ import { NativeWindowRef, NativeWindowService } from './shared/window.service';
import { MockTranslateLoader } from './shared/mocks/mock-translate-loader';
import { MockMetadataService } from './shared/mocks/mock-metadata-service';
import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
import { AngularticsMock } from './shared/mocks/mock-angulartics.service';
let comp: AppComponent;
let fixture: ComponentFixture<AppComponent>;
@@ -56,6 +58,7 @@ describe('App component', () => {
{ provide: GLOBAL_CONFIG, useValue: ENV_CONFIG },
{ provide: NativeWindowService, useValue: new NativeWindowRef() },
{ provide: MetadataService, useValue: new MockMetadataService() },
{ provide: Angulartics2GoogleAnalytics, useValue: new AngularticsMock() },
AppComponent
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]

View File

@@ -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<HostWindowState>,
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');

View File

@@ -0,0 +1,4 @@
/* tslint:disable:no-empty */
export class AngularticsMock {
public eventTrack(action, properties) { }
}

View File

@@ -9,6 +9,7 @@ export interface GlobalConfig extends Config {
production: boolean;
cache: CacheConfig;
universal: UniversalConfig;
gaTrackingId: string;
logDirectory: string;
debug: boolean;
}

View File

@@ -6,7 +6,7 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { bootloader } from '@angularclass/bootloader';
import { load as loadWebFont } from 'webfontloader';
import { hasValue } from './app/shared/empty.util';
import { hasValue, isNotEmpty } from './app/shared/empty.util';
import { BrowserAppModule } from './modules/app/browser-app.module';
@@ -25,9 +25,25 @@ export function main() {
}
});
addGoogleAnalytics();
return platformBrowserDynamic().bootstrapModule(BrowserAppModule);
}
function addGoogleAnalytics() {
// Add google analytics if key is present in config
const trackingId = ENV_CONFIG.gaTrackingId;
if (isNotEmpty(trackingId)) {
const keyScript = document.createElement('script');
keyScript.innerHTML = `(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');`
+ 'ga(\'create\', \'' + ENV_CONFIG.gaTrackingId + '\', \'auto\');';
document.body.appendChild(keyScript);
}
}
// support async tag or hmr
if (hasValue(ENV_CONFIG.universal) && ENV_CONFIG.universal.preboot === false) {
bootloader(main);

View File

@@ -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({

View File

@@ -16,6 +16,9 @@ import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.ser
import { TranslateUniversalLoader } from '../translate-universal-loader';
import { Angulartics2GoogleAnalytics } from 'angulartics2/ga';
import { AngularticsMock } from '../../app/shared/mocks/mock-angulartics.service';
export function createTranslateLoader() {
return new TranslateUniversalLoader('dist/assets/i18n/', '.json');
}
@@ -42,6 +45,7 @@ export function createTranslateLoader() {
AppModule
],
providers: [
{ provide: Angulartics2GoogleAnalytics, useClass: AngularticsMock }
]
})
export class ServerAppModule {