File

projects/app-base-library/src/lib/angular/services/config.service.ts

Index

Properties
Methods

Constructor

constructor()

Methods

initialize
initialize(options: )
Parameters :
Name Optional
options no
Returns : any
initRouter
initRouter(router: , routes: , translateService: )
Parameters :
Name Optional
router no
routes no
translateService no
Returns : void
loadTranslation
loadTranslation(language: string, translateService: any)
Parameters :
Name Type Optional
language string no
translateService any no
Returns : any

Properties

Public services
services: any
Type : any
Default value : { appService: undefined, translateService: undefined, }
import {Config} from '../../shared/config';
// import {Config} from '@ema/js-base-library';
import {Injectable} from '@angular/core';

@Injectable()
export class ConfigService extends Config {

    constructor() {
        super();
    }

    public services: any = {
        appService: undefined,
        translateService: undefined,
    };

    initialize(options) {
        const self = this;
        return new Promise(function (resolve, reject) {
            if(options.config) {
                self.add(options.config);
            }
            self.fetch(options.settingsFile,true).then((newConfig) => {
                self.setLocalSettings(self.get('id'), self.all());
                self.set('ready', true);
                resolve(self.all());
                // todo:
                // if(self.settings.xdomain){
                //   self.initXdomain(res.xdomain)
                // }
                // fixme: deprecate - loads 2 times
                // if (options.translateService && self.get('language')) {
                //     self.loadTranslation(self.get('language'), options.translateService).then(() => {
                //         self.set('ready', true);
                //         resolve(self.all());
                //     });
                // } else {
                //     self.set('ready', true);
                //     resolve(self.all());
                // }
            });
        });

    }

    initRouter(router, routes, translateService) {
        // set router classes on body tag
        router.events.subscribe( (event) => {
            let classes = '';
            let url: string;
            if (event.urlAfterRedirects && typeof event.urlAfterRedirects === 'string') {
                url = event.urlAfterRedirects;
                const urlParts = url.split('/');
                urlParts.forEach((part) => {
                    if (part.match(';')) {
                        // has queryParams
                    }
                    classes += (part + ' ');
                });
            }
            classes = classes.substring(1);
            classes = classes.substring(0, classes.length - 1);
            if (classes === '') {
                classes = 'route-frontpage';
            }
            document.querySelector('body').className = classes;
            document.querySelector('body').id = url;
        });
        if (routes && routes.length) {
            let routerMenu = [];
            routes.forEach((route) => {
                if (!route.data) {
                    route.data = {};
                }
                if(!route.data.title) {
                    route.data.title = route.path;
                }
                // set router translations
                if (translateService) {
                    if (route.data.title !== '') {
                        route.data.title = translateService.instant(route.data.title);
                    } else {
                        route.data.title = translateService.instant('HOME');
                    }
                }
                // todo: deprecate + use url
                route.href = route.path;
                routerMenu.push(route);
            });
            // define routerMenu in config
            if (!this.get('menus')) {
                this.set('menus', {});
            }
            let menus = this.get('menus');
            menus['routerMenu'] = routerMenu;
        }
    }

    loadTranslation(language: string, translateService: any) {
        return new Promise(function (resolve, reject) {
            translateService.setDefaultLang(language);
            translateService.getTranslation(language).subscribe(function (res) {
                resolve();
            });
        });
    }

}

results matching ""

    No results matching ""