all files / app/utils/ base_component.ts

24.24% Statements 8/33
0% Branches 0/16
12.5% Functions 1/8
22.58% Lines 7/31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86            1× 1×         1×           1×                                                                       1×                     1×                                     1×  
/* Copyright CloudLinux Zug GmbH 2010-2017 All Rights Reserved
 *
 * Licensed under CLOUD LINUX LICENSE AGREEMENT
 * http://cloudlinux.com/docs/LICENSE.TXT
 */
 
import { Loader, LoaderSelector } from './loader';
import { ViewModes } from '../services/view_modes';
import { ViewMode } from '../model/view_mode';
import { UiSelectOption } from './ui-elements/ui-select/ui-select';
import { ElementRef } from '@angular/core';
import { AppState } from '../app.service';
import { InstanceInjector } from '../services/instance-injector';
 
declare const panelName: any;
declare const panelVersion: any;
declare var jQuery: any;
 
export class BaseComponent {
 
    public appState: AppState;
    public viewModes: ViewMode[] = ViewModes.availableModes;
    public availableViewModes: ViewMode[];
    public elementRef: ElementRef;
 
    public viewModesForPackages: ViewMode[] = ViewModes.availableModesForPackages();
    public availableViewModesForPackages: ViewMode[];
 
    public periodList: UiSelectOption[] = [
        {'id': 'seconds', 'caption': 'seconds'},
        {'id': 'minutes', 'caption': 'minutes'},
        {'id': 'hours', 'caption': 'hours'},
        {'id': 'days', 'caption': 'days'},
    ];
 
    public periodListShort: UiSelectOption[] = [
        {'id': 'hours', 'caption': 'hours'},
        {'id': 'days', 'caption': 'days'},
    ];
 
    public loaderSelector: LoaderSelector = null;
    private _loading: boolean = false;
 
    constructor() {
        this.availableViewModes = ViewModes.availableModes.filter((mode) => {
            return mode.active;
        });
        this.availableViewModesForPackages = ViewModes.availableModesForPackages()
            .filter((mode) => {
            return mode.active;
        });
    }
 
 
    get panelInfo(){
        let info = '';
        if (typeof panelName !== 'undefined') {
            info += panelName + '_';
        }
        if (typeof panelVersion !== 'undefined') {
            info += panelVersion;
        }
        return info;
    }
 
    set loading(value: boolean) {
        if (this.loaderSelector && value !== this._loading) {
            this._loading = value;
            setTimeout(() => {
                if (this.appState && !this.loaderSelector.showBigLoader) {
                    this.appState.set('menuLoader', value);
                    InstanceInjector.loadingBarServiceInstance[value ? 'start' : 'complete']();
                }
            });
            Loader[
                this.loaderSelector.showBigLoader ? '__switchBigLoader' : '__switchBlockingWrapper'
            ](jQuery(this.loaderSelector.selector), value);
        }
    }
 
    get loading() {
        return this._loading;
    }
 
}