[ADF-2064] Lazy loading support (#2811)

* remove BrowserAnimationsModule dependency

* improve test shim

* update test shim

* test shim updates

* example of lazy-loaded datatable

* local and global i18n demo for lazy modules

* lazy loading support for CoreModule providers

* test shim updates

* update test shim

* support global i18n for lazy modules

* cleanup lazy loading example

* update card view after rebase

* backwards compatibility

* cleanup files

* fix code after rebase
This commit is contained in:
Denys Vuika
2018-01-31 17:39:26 +00:00
committed by Eugenio Romano
parent 49456b3fcd
commit 0d93c65fd7
23 changed files with 298 additions and 165 deletions

View File

@@ -17,15 +17,12 @@
import { CommonModule } from '@angular/common';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { NgModule } from '@angular/core';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TRANSLATION_PROVIDER, TranslationService } from './services/translation.service';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateStore } from '@ngx-translate/core/src/translate.store';
import { MaterialModule } from './material.module';
import { AppConfigModule } from './app-config/app-config.module';
import { CardViewModule } from './card-view/card-view.module';
import { CollapsableModule } from './collapsable/collapsable.module';
@@ -45,16 +42,47 @@ import { SideBarActionModule } from './sidebar/sidebar-action.module';
import { DirectiveModule } from './directives/directive.module';
import { PipeModule } from './pipes/pipe.module';
import { ServiceModule } from './services/service.module';
import { AlfrescoApiService } from './services/alfresco-api.service';
import { AppsProcessService } from './services/apps-process.service';
import { AuthGuardBpm } from './services/auth-guard-bpm.service';
import { AuthGuardEcm } from './services/auth-guard-ecm.service';
import { AuthGuard } from './services/auth-guard.service';
import { AuthenticationService } from './services/authentication.service';
import { CardItemTypeService } from './card-view/services/card-item-types.service';
import { CardViewUpdateService } from './card-view/services/card-view-update.service';
import { CommentProcessService } from './services/comment-process.service';
import { ContentService } from './services/content.service';
import { CookieService } from './services/cookie.service';
import { DeletedNodesApiService } from './services/deleted-nodes-api.service';
import { DiscoveryApiService } from './services/discovery-api.service';
import { FavoritesApiService } from './services/favorites-api.service';
import { HighlightTransformService } from './services/highlight-transform.service';
import { LogService } from './services/log.service';
import { NodesApiService } from './services/nodes-api.service';
import { NotificationService } from './services/notification.service';
import { PageTitleService } from './services/page-title.service';
import { PeopleContentService } from './services/people-content.service';
import { PeopleProcessService } from './services/people-process.service';
import { RenditionsService } from './services/renditions.service';
import { SearchService } from './services/search.service';
import { SettingsService } from './services/settings.service';
import { SharedLinksApiService } from './services/shared-links-api.service';
import { SitesService } from './services/sites.service';
import { StorageService } from './services/storage.service';
import { ThumbnailService } from './services/thumbnail.service';
import { TranslateLoaderService } from './services/translate-loader.service';
import { TRANSLATION_PROVIDER, TranslationService } from './services/translation.service';
import { UploadService } from './services/upload.service';
import { UserPreferencesService } from './services/user-preferences.service';
import { SearchConfigurationService } from './services/search-configuration.service';
export function createTranslateLoader(http: HttpClient, logService: LogService) {
return new TranslateLoaderService(http, logService);
}
@NgModule({
imports: [
export function modules() {
return [
ViewerModule,
SideBarActionModule,
PipeModule,
@@ -63,7 +91,6 @@ export function createTranslateLoader(http: HttpClient, logService: LogService)
FormsModule,
ReactiveFormsModule,
HttpClientModule,
BrowserAnimationsModule,
HostSettingsModule,
UserInfoModule,
MaterialModule,
@@ -73,8 +100,75 @@ export function createTranslateLoader(http: HttpClient, logService: LogService)
ContextMenuModule,
CardViewModule,
CollapsableModule,
ServiceModule,
FormModule,
LoginModule,
LanguageMenuModule,
InfoDrawerModule,
DataColumnModule,
DataTableModule
];
}
export function providers() {
return [
AuthenticationService,
AlfrescoApiService,
SettingsService,
ContentService,
AuthGuard,
AuthGuardEcm,
AuthGuardBpm,
AppsProcessService,
PageTitleService,
StorageService,
CookieService,
RenditionsService,
NotificationService,
LogService,
TranslationService,
TranslateLoaderService,
ThumbnailService,
UploadService,
CardItemTypeService,
CardViewUpdateService,
UserPreferencesService,
HighlightTransformService,
DeletedNodesApiService,
FavoritesApiService,
NodesApiService,
PeopleContentService,
PeopleProcessService,
SearchService,
SharedLinksApiService,
SitesService,
DiscoveryApiService,
CommentProcessService,
SearchConfigurationService
];
}
@NgModule({
imports: [
...modules(),
TranslateModule.forChild({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient, LogService]
}
})
],
exports: [
...modules(),
TranslateModule
]
})
export class CoreModuleLazy {
}
@NgModule({
imports: [
...modules(),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
@@ -83,6 +177,10 @@ export function createTranslateLoader(http: HttpClient, logService: LogService)
}
})
],
exports: [
...modules(),
TranslateModule
],
providers: [
{
provide: TRANSLATION_PROVIDER,
@@ -92,35 +190,31 @@ export function createTranslateLoader(http: HttpClient, logService: LogService)
source: 'assets/adf-core'
}
},
TranslationService
],
exports: [
AppConfigModule,
BrowserAnimationsModule,
CommonModule,
FormsModule,
ReactiveFormsModule,
TranslateModule,
ContextMenuModule,
CardViewModule,
CollapsableModule,
PaginationModule,
ToolbarModule,
LoginModule,
UserInfoModule,
LanguageMenuModule,
InfoDrawerModule,
DataColumnModule,
DataTableModule,
HostSettingsModule,
ServiceModule,
ViewerModule,
SideBarActionModule,
PipeModule,
DirectiveModule,
FormModule,
MaterialModule
...providers()
]
})
export class CoreModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: CoreModule,
providers: [
{
provide: TRANSLATION_PROVIDER,
multi: true,
useValue: {
name: 'adf-core',
source: 'assets/adf-core'
}
},
TranslateStore,
...providers()
]
};
}
static forChild(): ModuleWithProviders {
return {
ngModule: CoreModuleLazy
};
}
}