[ACA-1608] lazy loading support for Viewer and About screens (#526)

* move viewer and directives to separate modules

* lazy loading for Viewer and About screens

* lazy loading support for extensions module
This commit is contained in:
Denys Vuika
2018-07-21 15:36:26 +01:00
committed by GitHub
parent af63af575c
commit 9c92fca44f
10 changed files with 306 additions and 76 deletions

View File

@@ -23,10 +23,9 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { NgModule } from '@angular/core';
import { NgModule, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';
import { AuthGuardEcm, CoreModule } from '@alfresco/adf-core';
import { ExtensionService } from './extension.service';
import { AboutComponent } from '../components/about/about.component';
import { LayoutComponent } from '../components/layout/layout.component';
import { ToolbarActionComponent } from './components/toolbar-action/toolbar-action.component';
import { CommonModule } from '@angular/common';
@@ -38,30 +37,58 @@ import {
hasFileSelected,
canDownloadSelection
} from './evaluators/app.evaluators';
import { TrashcanComponent } from '../components/trashcan/trashcan.component';
function setupExtensions(extensions: ExtensionService): Function {
return () =>
new Promise(resolve => {
extensions
.setComponent('app.layout.main', LayoutComponent)
.setComponent('app.components.trashcan', TrashcanComponent)
.setAuthGuard('app.auth', AuthGuardEcm)
.setEvaluator('core.every', every)
.setEvaluator('core.some', some)
.setEvaluator('app.selection.canDownload', canDownloadSelection)
.setEvaluator('app.selection.file', hasFileSelected)
.setEvaluator('app.selection.folder', hasFolderSelected)
.setEvaluator(
'app.selection.folder.canUpdate',
canUpdateSelectedFolder
)
.setEvaluator(
'app.navigation.folder.canCreate',
canCreateFolder
);
resolve(true);
});
}
@NgModule({
imports: [CommonModule, CoreModule.forChild()],
declarations: [ToolbarActionComponent],
exports: [ToolbarActionComponent],
entryComponents: [AboutComponent],
providers: [ExtensionService]
exports: [ToolbarActionComponent]
})
export class CoreExtensionsModule {
constructor(extensions: ExtensionService) {
extensions
.setComponent('app.layout.main', LayoutComponent)
.setComponent('app.components.about', AboutComponent)
.setAuthGuard('app.auth', AuthGuardEcm)
static forRoot(): ModuleWithProviders {
return {
ngModule: CoreExtensionsModule,
providers: [
ExtensionService,
{
provide: APP_INITIALIZER,
useFactory: setupExtensions,
deps: [ExtensionService],
multi: true
}
]
};
}
.setEvaluator('core.every', every)
.setEvaluator('core.some', some)
.setEvaluator('app.selection.canDownload', canDownloadSelection)
.setEvaluator('app.selection.file', hasFileSelected)
.setEvaluator('app.selection.folder', hasFolderSelected)
.setEvaluator(
'app.selection.folder.canUpdate',
canUpdateSelectedFolder
)
.setEvaluator('app.navigation.folder.canCreate', canCreateFolder);
static forChild(): ModuleWithProviders {
return {
ngModule: CoreExtensionsModule
};
}
}