dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
217 lines • 18.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Injector } from '@angular/core';
import { MatIconRegistry } from '@angular/material/icon';
import { DomSanitizer, Title } from '@angular/platform-browser';
import { Router, RoutesRecognized } from '@angular/router';
import { ApplicationInited, AuthService, ElementsService, ProjectService, StoreService } from 'dbweb-core';
import { IconList } from './icon-list';
import * as i0 from "@angular/core";
import * as i1 from "dbweb-core";
import * as i2 from "@angular/platform-browser";
import * as i3 from "@angular/material/icon";
import * as i4 from "./icon-list";
export class AppLoadService {
/**
* @param {?} injector
* @param {?} eles
* @param {?} project
* @param {?} title
* @param {?} iconRegistry
* @param {?} sanitizer
* @param {?} iconList
*/
constructor(injector, eles, project, title, iconRegistry, sanitizer, iconList // private snackBar: MatSnackBar
) {
this.injector = injector;
this.eles = eles;
this.project = project;
this.title = title;
this.iconList = iconList;
// this.goRoute = this.goRoute.bind(this);
Object.keys(this.iconList.icons).forEach((/**
* @param {?} ns
* @return {?}
*/
ns => {
this.iconList.icons[ns].forEach((/**
* @param {?} cate
* @return {?}
*/
cate => {
cate.icons.forEach((/**
* @param {?} icon
* @return {?}
*/
icon => {
iconRegistry.addSvgIconInNamespace(ns, icon.name, sanitizer.bypassSecurityTrustResourceUrl('assets/icon/' + icon.fs));
}));
}));
}));
}
/**
* @return {?}
*/
initializeApp() {
/** @type {?} */
const This = this;
window.onbeforeunload = (/**
* @return {?}
*/
() => {
if (This.store) {
This.store.save();
}
});
this.project.applicationStatus = 'start-init';
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
setTimeout((/**
* @return {?}
*/
() => {
// 获取Project前缀
/** @type {?} */
let projectName;
/** @type {?} */
let creator;
This.router = this.injector.get(Router);
/** @type {?} */
const subscribeRouter = This.router.events.subscribe((/**
* @param {?} event
* @return {?}
*/
event => {
if (event instanceof RoutesRecognized) {
subscribeRouter.unsubscribe();
// 防止根目录跳转到login,url取到的是根目录
/** @type {?} */
const paths = event.urlAfterRedirects.split('/');
creator = decodeURIComponent(decodeURI(paths[2]));
projectName = decodeURIComponent(decodeURI(paths[3]));
/** @type {?} */
const eleName = decodeURIComponent(decodeURI(paths[4]));
this.project.setProject(projectName, creator);
// 这里不能自动注入authservice,因为其用到了router,会出现undefine
This.auth = this.injector.get(AuthService);
This.auth.serverIsLogged().subscribe((/**
* @param {?} v
* @return {?}
*/
v => {
This.project.getProjectInfo().subscribe((/**
* @param {?} state
* @return {?}
*/
state => {
this.title.setTitle(this.project.projectLabel);
this.eles.setPub(this.project.publicElements);
if (v) {
this.store = this.injector.get(StoreService);
this.store.load();
}
else {
// 判断是否是公共的菜单项,公共的菜单项不需要重新路由
if (!this.eles.getPubEles()[eleName]) {
// 如果没有登录,则路由到默认页
this.router.navigate(['']);
}
}
resolve();
return;
}));
}), (/**
* @param {?} err
* @return {?}
*/
err => {
// this.snackBar.open(err.message, '确定', { verticalPosition: 'top' });
reject();
}));
}
}));
}));
})).then((/**
* @param {?} v
* @return {?}
*/
v => {
this.project.applicationStatus = 'init-done';
ApplicationInited.next(v);
}), (/**
* @param {?} v
* @return {?}
*/
v => {
this.project.applicationStatus = 'init-error';
// 路由到默认页面,要防止当前url是具体内部的业务功能,没有针对init-error的处理呈现
// 默认页面一般是login页面,有对这种情况的呈现处理
this.router.navigate(['']);
}));
}
}
AppLoadService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
AppLoadService.ctorParameters = () => [
{ type: Injector },
{ type: ElementsService },
{ type: ProjectService },
{ type: Title },
{ type: MatIconRegistry },
{ type: DomSanitizer },
{ type: IconList }
];
/** @nocollapse */ AppLoadService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AppLoadService_Factory() { return new AppLoadService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.ElementsService), i0.ɵɵinject(i1.ProjectService), i0.ɵɵinject(i2.Title), i0.ɵɵinject(i3.MatIconRegistry), i0.ɵɵinject(i2.DomSanitizer), i0.ɵɵinject(i4.IconList)); }, token: AppLoadService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
AppLoadService.prototype.auth;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.store;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.router;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.injector;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.eles;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.project;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.title;
/**
* @type {?}
* @private
*/
AppLoadService.prototype.iconList;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Rid2ViLWNvbW1vbi8iLCJzb3VyY2VzIjpbImxpYi9hcHAtbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFJdkMsTUFBTSxPQUFPLGNBQWM7Ozs7Ozs7Ozs7SUFJMUIsWUFDUyxRQUFrQixFQUNsQixJQUFxQixFQUNyQixPQUF1QixFQUN2QixLQUFZLEVBQ3BCLFlBQTZCLEVBQzdCLFNBQXVCLEVBQ2YsUUFBa0IsQ0FBQyxnQ0FBZ0M7O1FBTm5ELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUdaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFMUIsMENBQTBDO1FBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPOzs7O1FBQUMsRUFBRSxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTzs7OztZQUFDLElB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QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUNBQzNCO2lDQUNEO2dDQUNELE9BQU8sRUFBRSxDQUFDO2dDQUNWLE9BQU87NEJBQ1IsQ0FBQyxFQUFDLENBQUM7d0JBQ0osQ0FBQzs7Ozt3QkFDRCxHQUFHLENBQUMsRUFBRTs0QkFDTCxzRUFBc0U7NEJBQ3RFLE1BQU0sRUFBRSxDQUFDO3dCQUNWLENBQUMsRUFDRCxDQUFDO3FCQUNGO2dCQUNGLENBQUMsRUFBQztZQUNILENBQUMsRUFBQyxDQUFDO1FBQ0osQ0FBQyxFQUFDLENBQUMsSUFBSTs7OztRQUNOLENBQUMsQ0FBQyxFQUFFO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUM7WUFDN0MsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7Ozs7UUFDRCxDQUFDLENBQUMsRUFBRTtZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDO1lBQzlDLGlEQUFpRDtZQUNqRCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsRUFDRCxDQUFDO0lBQ0gsQ0FBQzs7O1lBN0ZELFVBQVUsU0FBQztnQkFDWCxVQUFVLEVBQUUsTUFBTTthQUNsQjs7OztZQVJvQixRQUFRO1lBSVksZUFBZTtZQUFFLGNBQWM7WUFGakQsS0FBSztZQURuQixlQUFlO1lBQ2YsWUFBWTtZQUdaLFFBQVE7Ozs7Ozs7O0lBS2hCLDhCQUEwQjs7Ozs7SUFDMUIsK0JBQTRCOzs7OztJQUM1QixnQ0FBdUI7Ozs7O0lBRXRCLGtDQUEwQjs7Ozs7SUFDMUIsOEJBQTZCOzs7OztJQUM3QixpQ0FBK0I7Ozs7O0lBQy9CLCtCQUFvQjs7Ozs7SUFHcEIsa0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXNSZWNvZ25pemVkIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25Jbml0ZWQsIEF1dGhTZXJ2aWNlLCBFbGVtZW50c1NlcnZpY2UsIFByb2plY3RTZXJ2aWNlLCBTdG9yZVNlcnZpY2UgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgSWNvbkxpc3QgfSBmcm9tICcuL2ljb24tbGlzdCc7XHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcExvYWRTZXJ2aWNlIHtcclxuXHRwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlO1xyXG5cdHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZTtcclxuXHRwcml2YXRlIHJvdXRlcjogUm91dGVyO1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRwcml2YXRlIGVsZXM6IEVsZW1lbnRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgcHJvamVjdDogUHJvamVjdFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRpdGxlOiBUaXRsZSxcclxuXHRcdGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxyXG5cdFx0c2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcblx0XHRwcml2YXRlIGljb25MaXN0OiBJY29uTGlzdCAvLyBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhclxyXG5cdCkge1xyXG5cdFx0Ly8gdGhpcy5nb1JvdXRlID0gdGhpcy5nb1JvdXRlLmJpbmQodGhpcyk7XHJcblx0XHRPYmplY3Qua2V5cyh0aGlzLmljb25MaXN0Lmljb25zKS5mb3JFYWNoKG5zID0+IHtcclxuXHRcdFx0dGhpcy5pY29uTGlzdC5pY29uc1tuc10uZm9yRWFjaChjYXRlID0+IHtcclxuXHRcdFx0XHRjYXRlLmljb25zLmZvckVhY2goaWNvbiA9PiB7XHJcblx0XHRcdFx0XHRpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKFxyXG5cdFx0XHRcdFx0XHRucyxcclxuXHRcdFx0XHRcdFx0aWNvbi5uYW1lLFxyXG5cdFx0XHRcdFx0XHRzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvaWNvbi8nICsgaWNvbi5mcylcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdGluaXRpYWxpemVBcHAoKTogUHJvbWlzZTxhbnk+IHtcclxuXHRcdGNvbnN0IFRoaXMgPSB0aGlzO1xyXG5cdFx0d2luZG93Lm9uYmVmb3JldW5sb2FkID0gKCkgPT4ge1xyXG5cdFx0XHRpZiAoVGhpcy5zdG9yZSkge1xyXG5cdFx0XHRcdFRoaXMuc3RvcmUuc2F2ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0dGhpcy5wcm9qZWN0LmFwcGxpY2F0aW9uU3RhdHVzID0gJ3N0YXJ0LWluaXQnO1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Ly8g6I635Y+WUHJvamVjdOWJjee8gFxyXG5cdFx0XHRcdGxldCBwcm9qZWN0TmFtZTogc3RyaW5nO1xyXG5cdFx0XHRcdGxldCBjcmVhdG9yOiBzdHJpbmc7XHJcblx0XHRcdFx0VGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHN1YnNjcmliZVJvdXRlciA9IFRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCkge1xyXG5cdFx0XHRcdFx0XHRzdWJzY3JpYmVSb3V0ZXIudW5zdWJzY3JpYmUoKTtcclxuXHRcdFx0XHRcdFx0Ly8g6Ziy5q2i5qC555uu5b2V6Lez6L2s5YiwbG9naW7vvIx1cmzlj5bliLDnmoTmmK/moLnnm67lvZVcclxuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aHMgPSBldmVudC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnLycpO1xyXG5cdFx0XHRcdFx0XHRjcmVhdG9yID0gZGVjb2RlVVJJQ29tcG9uZW50KGRlY29kZVVSSShwYXRoc1syXSkpO1xyXG5cdFx0XHRcdFx0XHRwcm9qZWN0TmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUkkocGF0aHNbM10pKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZWxlTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUkkocGF0aHNbNF0pKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5wcm9qZWN0LnNldFByb2plY3QocHJvamVjdE5hbWUsIGNyZWF0b3IpO1xyXG5cdFx0XHRcdFx0XHQvLyDov5nph4zkuI3og73oh6rliqjms6jlhaVhdXRoc2VydmljZe+8jOWboOS4uuWFtueUqOWIsOS6hnJvdXRlcu+8jOS8muWHuueOsHVuZGVmaW5lXHJcblx0XHRcdFx0XHRcdFRoaXMuYXV0aCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcclxuXHRcdFx0XHRcdFx0VGhpcy5hdXRoLnNlcnZlcklzTG9nZ2VkKCkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdFx0XHRcdHYgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0VGhpcy5wcm9qZWN0LmdldFByb2plY3RJbmZvKCkuc3Vic2NyaWJlKHN0YXRlID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy50aXRsZS5zZXRUaXRsZSh0aGlzLnByb2plY3QucHJvamVjdExhYmVsKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5lbGVzLnNldFB1Yih0aGlzLnByb2plY3QucHVibGljRWxlbWVudHMpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RvcmUgPSB0aGlzLmluamVjdG9yLmdldChTdG9yZVNlcnZpY2UpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RvcmUubG9hZCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIOWIpOaWreaYr+WQpuaYr+WFrOWFseeahOiPnOWNlemhue+8jOWFrOWFseeahOiPnOWNlemhueS4jemcgOimgemHjeaWsOi3r+eUsVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5lbGVzLmdldFB1YkVsZXMoKVtlbGVOYW1lXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8g5aaC5p6c5rKh5pyJ55m75b2V77yM5YiZ6Lev55Sx5Yiw6buY6K6k6aG1XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJyddKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyLm1lc3NhZ2UsICfnoa7lrponLCB7IHZlcnRpY2FsUG9zaXRpb246ICd0b3AnIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pLnRoZW4oXHJcblx0XHRcdHYgPT4ge1xyXG5cdFx0XHRcdHRoaXMucHJvamVjdC5hcHBsaWNhdGlvblN0YXR1cyA9ICdpbml0LWRvbmUnO1xyXG5cdFx0XHRcdEFwcGxpY2F0aW9uSW5pdGVkLm5leHQodik7XHJcblx0XHRcdH0sXHJcblx0XHRcdHYgPT4ge1xyXG5cdFx0XHRcdHRoaXMucHJvamVjdC5hcHBsaWNhdGlvblN0YXR1cyA9ICdpbml0LWVycm9yJztcclxuXHRcdFx0XHQvLyDot6/nlLHliLDpu5jorqTpobXpnaLvvIzopoHpmLLmraLlvZPliY11cmzmmK/lhbfkvZPlhoXpg6jnmoTkuJrliqHlip/og73vvIzmsqHmnInpkojlr7lpbml0LWVycm9y55qE5aSE55CG5ZGI546wXHJcblx0XHRcdFx0Ly8g6buY6K6k6aG16Z2i5LiA6Iis5pivbG9naW7pobXpnaLvvIzmnInlr7nov5nnp43mg4XlhrXnmoTlkYjnjrDlpITnkIZcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJyddKTtcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19