UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

217 lines 18.2 kB
/** * @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