UNPKG

dbweb-common

Version:

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

215 lines 18.4 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"; var AppLoadService = /** @class */ (function () { function AppLoadService(injector, eles, project, title, iconRegistry, sanitizer, iconList // private snackBar: MatSnackBar ) { var _this = this; 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 {?} */ function (ns) { _this.iconList.icons[ns].forEach((/** * @param {?} cate * @return {?} */ function (cate) { cate.icons.forEach((/** * @param {?} icon * @return {?} */ function (icon) { iconRegistry.addSvgIconInNamespace(ns, icon.name, sanitizer.bypassSecurityTrustResourceUrl('assets/icon/' + icon.fs)); })); })); })); } /** * @return {?} */ AppLoadService.prototype.initializeApp = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var This = this; window.onbeforeunload = (/** * @return {?} */ function () { if (This.store) { This.store.save(); } }); this.project.applicationStatus = 'start-init'; return new Promise((/** * @param {?} resolve * @param {?} reject * @return {?} */ function (resolve, reject) { setTimeout((/** * @return {?} */ function () { // 获取Project前缀 /** @type {?} */ var projectName; /** @type {?} */ var creator; This.router = _this.injector.get(Router); /** @type {?} */ var subscribeRouter = This.router.events.subscribe((/** * @param {?} event * @return {?} */ function (event) { if (event instanceof RoutesRecognized) { subscribeRouter.unsubscribe(); // 防止根目录跳转到login,url取到的是根目录 /** @type {?} */ var paths = event.urlAfterRedirects.split('/'); creator = decodeURIComponent(decodeURI(paths[2])); projectName = decodeURIComponent(decodeURI(paths[3])); /** @type {?} */ var eleName_1 = 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 {?} */ function (v) { This.project.getProjectInfo().subscribe((/** * @param {?} state * @return {?} */ function (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_1]) { // 如果没有登录,则路由到默认页 _this.router.navigate(['']); } } resolve(); return; })); }), (/** * @param {?} err * @return {?} */ function (err) { // this.snackBar.open(err.message, '确定', { verticalPosition: 'top' }); reject(); })); } })); })); })).then((/** * @param {?} v * @return {?} */ function (v) { _this.project.applicationStatus = 'init-done'; ApplicationInited.next(v); }), (/** * @param {?} v * @return {?} */ function (v) { _this.project.applicationStatus = 'init-error'; // 路由到默认页面,要防止当前url是具体内部的业务功能,没有针对init-error的处理呈现 // 默认页面一般是login页面,有对这种情况的呈现处理 _this.router.navigate(['']); })); }; AppLoadService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ AppLoadService.ctorParameters = function () { return [ { 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" }); return AppLoadService; }()); export { AppLoadService }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Rid2ViLWNvbW1vbi8iLCJzb3VyY2VzIjpbImxpYi9hcHAtbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFDdkM7SUFPQyx3QkFDUyxRQUFrQixFQUNsQixJQUFxQixFQUNyQixPQUF1QixFQUN2QixLQUFZLEVBQ3BCLFlBQTZCLEVBQzdCLFNBQXVCLEVBQ2YsUUFBa0IsQ0FBQyxnQ0FBZ0M7O1FBUDVELGlCQXFCQztRQXBCUSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQU87UUFHWixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLDBDQUEwQztRQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsRUFBRTtZQUMxQyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPOzs7O1lBQUMsVUFBQSxJQUFJO2dCQUNuQyxJ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LEVBQUUsQ0FBQztnQ0FDVixPQUFPOzRCQUNSLENBQUMsRUFBQyxDQUFDO3dCQUNKLENBQUM7Ozs7d0JBQ0QsVUFBQSxHQUFHOzRCQUNGLHNFQUFzRTs0QkFDdEUsTUFBTSxFQUFFLENBQUM7d0JBQ1YsQ0FBQyxFQUNELENBQUM7cUJBQ0Y7Z0JBQ0YsQ0FBQyxFQUFDO1lBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSixDQUFDLEVBQUMsQ0FBQyxJQUFJOzs7O1FBQ04sVUFBQSxDQUFDO1lBQ0EsS0FBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUM7WUFDN0MsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7Ozs7UUFDRCxVQUFBLENBQUM7WUFDQSxLQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQztZQUM5QyxpREFBaUQ7WUFDakQsNkJBQTZCO1lBQzdCLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDLEVBQ0QsQ0FBQztJQUNILENBQUM7O2dCQTdGRCxVQUFVLFNBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzs7O2dCQVJvQixRQUFRO2dCQUlZLGVBQWU7Z0JBQUUsY0FBYztnQkFGakQsS0FBSztnQkFEbkIsZUFBZTtnQkFDZixZQUFZO2dCQUdaLFFBQVE7Ozt5QkFMakI7Q0FvR0MsQUE5RkQsSUE4RkM7U0EzRlksY0FBYzs7Ozs7O0lBQzFCLDhCQUEwQjs7Ozs7SUFDMUIsK0JBQTRCOzs7OztJQUM1QixnQ0FBdUI7Ozs7O0lBRXRCLGtDQUEwQjs7Ozs7SUFDMUIsOEJBQTZCOzs7OztJQUM3QixpQ0FBK0I7Ozs7O0lBQy9CLCtCQUFvQjs7Ozs7SUFHcEIsa0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXNSZWNvZ25pemVkIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25Jbml0ZWQsIEF1dGhTZXJ2aWNlLCBFbGVtZW50c1NlcnZpY2UsIFByb2plY3RTZXJ2aWNlLCBTdG9yZVNlcnZpY2UgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgSWNvbkxpc3QgfSBmcm9tICcuL2ljb24tbGlzdCc7XHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcExvYWRTZXJ2aWNlIHtcclxuXHRwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlO1xyXG5cdHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZTtcclxuXHRwcml2YXRlIHJvdXRlcjogUm91dGVyO1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRwcml2YXRlIGVsZXM6IEVsZW1lbnRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgcHJvamVjdDogUHJvamVjdFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRpdGxlOiBUaXRsZSxcclxuXHRcdGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxyXG5cdFx0c2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcblx0XHRwcml2YXRlIGljb25MaXN0OiBJY29uTGlzdCAvLyBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhclxyXG5cdCkge1xyXG5cdFx0Ly8gdGhpcy5nb1JvdXRlID0gdGhpcy5nb1JvdXRlLmJpbmQodGhpcyk7XHJcblx0XHRPYmplY3Qua2V5cyh0aGlzLmljb25MaXN0Lmljb25zKS5mb3JFYWNoKG5zID0+IHtcclxuXHRcdFx0dGhpcy5pY29uTGlzdC5pY29uc1tuc10uZm9yRWFjaChjYXRlID0+IHtcclxuXHRcdFx0XHRjYXRlLmljb25zLmZvckVhY2goaWNvbiA9PiB7XHJcblx0XHRcdFx0XHRpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKFxyXG5cdFx0XHRcdFx0XHRucyxcclxuXHRcdFx0XHRcdFx0aWNvbi5uYW1lLFxyXG5cdFx0XHRcdFx0XHRzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvaWNvbi8nICsgaWNvbi5mcylcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdGluaXRpYWxpemVBcHAoKTogUHJvbWlzZTxhbnk+IHtcclxuXHRcdGNvbnN0IFRoaXMgPSB0aGlzO1xyXG5cdFx0d2luZG93Lm9uYmVmb3JldW5sb2FkID0gKCkgPT4ge1xyXG5cdFx0XHRpZiAoVGhpcy5zdG9yZSkge1xyXG5cdFx0XHRcdFRoaXMuc3RvcmUuc2F2ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0dGhpcy5wcm9qZWN0LmFwcGxpY2F0aW9uU3RhdHVzID0gJ3N0YXJ0LWluaXQnO1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Ly8g6I635Y+WUHJvamVjdOWJjee8gFxyXG5cdFx0XHRcdGxldCBwcm9qZWN0TmFtZTogc3RyaW5nO1xyXG5cdFx0XHRcdGxldCBjcmVhdG9yOiBzdHJpbmc7XHJcblx0XHRcdFx0VGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHN1YnNjcmliZVJvdXRlciA9IFRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCkge1xyXG5cdFx0XHRcdFx0XHRzdWJzY3JpYmVSb3V0ZXIudW5zdWJzY3JpYmUoKTtcclxuXHRcdFx0XHRcdFx0Ly8g6Ziy5q2i5qC555uu5b2V6Lez6L2s5YiwbG9naW7vvIx1cmzlj5bliLDnmoTmmK/moLnnm67lvZVcclxuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aHMgPSBldmVudC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnLycpO1xyXG5cdFx0XHRcdFx0XHRjcmVhdG9yID0gZGVjb2RlVVJJQ29tcG9uZW50KGRlY29kZVVSSShwYXRoc1syXSkpO1xyXG5cdFx0XHRcdFx0XHRwcm9qZWN0TmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUkkocGF0aHNbM10pKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZWxlTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChkZWNvZGVVUkkocGF0aHNbNF0pKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5wcm9qZWN0LnNldFByb2plY3QocHJvamVjdE5hbWUsIGNyZWF0b3IpO1xyXG5cdFx0XHRcdFx0XHQvLyDov5nph4zkuI3og73oh6rliqjms6jlhaVhdXRoc2VydmljZe+8jOWboOS4uuWFtueUqOWIsOS6hnJvdXRlcu+8jOS8muWHuueOsHVuZGVmaW5lXHJcblx0XHRcdFx0XHRcdFRoaXMuYXV0aCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcclxuXHRcdFx0XHRcdFx0VGhpcy5hdXRoLnNlcnZlcklzTG9nZ2VkKCkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdFx0XHRcdHYgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0VGhpcy5wcm9qZWN0LmdldFByb2plY3RJbmZvKCkuc3Vic2NyaWJlKHN0YXRlID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy50aXRsZS5zZXRUaXRsZSh0aGlzLnByb2plY3QucHJvamVjdExhYmVsKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5lbGVzLnNldFB1Yih0aGlzLnByb2plY3QucHVibGljRWxlbWVudHMpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RvcmUgPSB0aGlzLmluamVjdG9yLmdldChTdG9yZVNlcnZpY2UpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RvcmUubG9hZCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIOWIpOaWreaYr+WQpuaYr+WFrOWFseeahOiPnOWNlemhue+8jOWFrOWFseeahOiPnOWNlemhueS4jemcgOimgemHjeaWsOi3r+eUsVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5lbGVzLmdldFB1YkVsZXMoKVtlbGVOYW1lXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8g5aaC5p6c5rKh5pyJ55m75b2V77yM5YiZ6Lev55Sx5Yiw6buY6K6k6aG1XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJyddKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyLm1lc3NhZ2UsICfnoa7lrponLCB7IHZlcnRpY2FsUG9zaXRpb246ICd0b3AnIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pLnRoZW4oXHJcblx0XHRcdHYgPT4ge1xyXG5cdFx0XHRcdHRoaXMucHJvamVjdC5hcHBsaWNhdGlvblN0YXR1cyA9ICdpbml0LWRvbmUnO1xyXG5cdFx0XHRcdEFwcGxpY2F0aW9uSW5pdGVkLm5leHQodik7XHJcblx0XHRcdH0sXHJcblx0XHRcdHYgPT4ge1xyXG5cdFx0XHRcdHRoaXMucHJvamVjdC5hcHBsaWNhdGlvblN0YXR1cyA9ICdpbml0LWVycm9yJztcclxuXHRcdFx0XHQvLyDot6/nlLHliLDpu5jorqTpobXpnaLvvIzopoHpmLLmraLlvZPliY11cmzmmK/lhbfkvZPlhoXpg6jnmoTkuJrliqHlip/og73vvIzmsqHmnInpkojlr7lpbml0LWVycm9y55qE5aSE55CG5ZGI546wXHJcblx0XHRcdFx0Ly8g6buY6K6k6aG16Z2i5LiA6Iis5pivbG9naW7pobXpnaLvvIzmnInlr7nov5nnp43mg4XlhrXnmoTlkYjnjrDlpITnkIZcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJyddKTtcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19