feat(preloader): preloader service which can take a list of promises and execute smth once all promises are completed

This commit is contained in:
nixa 2016-05-24 16:40:17 +03:00
parent 02fdd09bc0
commit d1f368e571
6 changed files with 63 additions and 4 deletions

View file

@ -7,6 +7,9 @@ import {Pages} from './pages';
import {AppState} from './app.state';
import {BaThemeConfigProvider, BaThemeConfig, BaThemeSpinner} from './theme';
import {BaThemeRun} from './theme/directives';
import {BaImageLoaderService, BaThemePreloader} from './theme/services';
import {layoutPaths} from './theme/theme.constants';
/*
* App Component
@ -16,7 +19,7 @@ import {BaThemeRun} from './theme/directives';
selector: 'app',
pipes: [],
directives: [BaThemeRun],
providers: [BaThemeConfigProvider, BaThemeConfig, BaThemeSpinner],
providers: [BaThemeConfigProvider, BaThemeConfig, BaImageLoaderService, BaThemeSpinner],
encapsulation: ViewEncapsulation.None,
styles: [require('normalize.css'), require('./app.scss')],
template: `
@ -38,14 +41,23 @@ export class App {
isMenuCollapsed:boolean = false;
constructor(private _state:AppState, private _baThemeConfig:BaThemeConfig, private _baSpinner:BaThemeSpinner) {
constructor(private _state:AppState, private _imageLoader:BaImageLoaderService, private _spinner:BaThemeSpinner) {
this._loadImages();
this._state.subscribe('menu.isCollapsed', (isCollapsed) => {
this.isMenuCollapsed = isCollapsed;
});
}
ngAfterViewInit() {
this._baSpinner.hide(200);
public ngAfterViewInit():void {
// hide spinner once all loaders are completed
BaThemePreloader.load().then((values) => {
this._spinner.hide();
});
}
private _loadImages():void {
// register some loaders
BaThemePreloader.registerLoader(this._imageLoader.load(layoutPaths.images.root + 'blur-bg-mobile.jpg'));
}
}