UNPKG

dbweb-common

Version:

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

197 lines 15 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { SimpleReuseStrategy, ElementsService } from 'dbweb-core'; import { Router, NavigationEnd } from '@angular/router'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "dbweb-core"; export class Tab { /** * @param {?} state */ constructor(state) { for (const key of Object.keys(state)) { this[key] = state[key]; } this.titleObservable = new BehaviorSubject(state.title); } /** * @return {?} */ data() { return { url: this.url, key: this.key, title: this.title }; } } if (false) { /** @type {?} */ Tab.prototype.url; /** @type {?} */ Tab.prototype.key; /** @type {?} */ Tab.prototype.title; /** @type {?} */ Tab.prototype.titleObservable; } export class TabsService { /** * @param {?} router * @param {?} eles */ constructor(router, eles) { this.router = router; this.eles = eles; this.tabs = []; } // 激活一个tab,如果不存在,则新增并激活 /** * @param {?} data * @return {?} */ activeTab(data) { /** @type {?} */ const find = this.tabs.findIndex((/** * @param {?} v * @return {?} */ v => v.key === data.key)); if (find === -1) { this.tabs.push(new Tab(data)); this._activeIndex = this.tabs.length - 1; } else { this._activeIndex = find; // 同时需要更新url和title this.tabs[this._activeIndex].url = data.url; this.tabs[this._activeIndex].title = data.title; } } // 删除指定序号的tab,并切换激活的tab,如果只有一个tab,则不能被删除 // 返回true指示激活页已经切换 /** * @param {?} index * @return {?} */ removeTab(index) { if (this.tabs.length === 1) { return false; } /** @type {?} */ const deleteURL = this.tabs[index].url.toString(); // 如果是关闭当前页面,则会引起路由变化,所以需要在导航结束事件中删除,因为导航过程中还会进行保存 if (index === this._activeIndex) { /** @type {?} */ const sub = this.router.events.subscribe((/** * @param {?} v * @return {?} */ v => { if (v instanceof NavigationEnd) { SimpleReuseStrategy.deleteRouteSnapshot(deleteURL); sub.unsubscribe(); } })); } else { SimpleReuseStrategy.deleteRouteSnapshot(deleteURL); } this.tabs.splice(index, 1); if (this._activeIndex === index) { this._activeIndex = Math.min(this.tabs.length - 1, index); return true; } if (this._activeIndex > index) { this._activeIndex--; } return false; } // 删除所有的页,一般是logout /** * @return {?} */ clear() { this.tabs.splice(0); this._activeIndex = undefined; SimpleReuseStrategy.clearRouteSnapshot(); } // 关闭当前页,并自动导航到新的页 /** * @return {?} */ close() { if (this.activeIndex >= 0) { /** @type {?} */ const idx = this.activeIndex; if (this.tabs.length === 1) { this.router.navigateByUrl(this.eles.frontElementURL(this.eles.indexElementName)).then((/** * @return {?} */ () => { this.removeTab(idx); })); } if (this.removeTab(idx)) { this.router.navigateByUrl(this.active.url, { state: this.active.data() }); } } } /** * @return {?} */ get active() { if (this._activeIndex >= 0) { return this.tabs[this._activeIndex]; } return undefined; } /** * @return {?} */ get activeIndex() { return this._activeIndex; } /** * @param {?} val * @return {?} */ set activeIndex(val) { this._activeIndex = val; } } TabsService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ TabsService.ctorParameters = () => [ { type: Router }, { type: ElementsService } ]; /** @nocollapse */ TabsService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function TabsService_Factory() { return new TabsService(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.ElementsService)); }, token: TabsService, providedIn: "root" }); if (false) { /** @type {?} */ TabsService.prototype.tabs; /** @type {?} */ TabsService.prototype._activeIndex; /** * @type {?} * @private */ TabsService.prototype.router; /** * @type {?} * @private */ TabsService.prototype.eles; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2hvbWUvdGFicy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRSxPQUFPLEVBQVcsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBQ2pFLE1BQU0sT0FBTyxHQUFHOzs7O0lBS2YsWUFBWSxLQUFtQjtRQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7SUFDRCxJQUFJO1FBQ0gsT0FBTztZQUNOLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNqQixDQUFDO0lBQ0gsQ0FBQztDQUNEOzs7SUFqQkEsa0JBQWE7O0lBQ2Isa0JBQVk7O0lBQ1osb0JBQWM7O0lBQ2QsOEJBQXlDOztBQW1CMUMsTUFBTSxPQUFPLFdBQVc7Ozs7O0lBR3ZCLFlBQW9CLE1BQWMsRUFBVSxJQUFxQjtRQUE3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFGakUsU0FBSSxHQUFVLEVBQUUsQ0FBQztJQUVtRCxDQUFD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RixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixDQUFDLEVBQUMsQ0FBQzthQUNIO1lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2lCQUN6QixDQUFDLENBQUM7YUFDSDtTQUNEO0lBQ0YsQ0FBQzs7OztJQUNELElBQUksTUFBTTtRQUNULElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7Ozs7SUFDRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFDRCxJQUFJLFdBQVcsQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7OztZQWpGRCxVQUFVLFNBQUM7Z0JBQ1gsVUFBVSxFQUFFLE1BQU07YUFDbEI7Ozs7WUF2QmlCLE1BQU07WUFETSxlQUFlOzs7OztJQTBCNUMsMkJBQWlCOztJQUNqQixtQ0FBc0I7Ozs7O0lBQ1YsNkJBQXNCOzs7OztJQUFFLDJCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSVJvdXRlclN0YXRlIH0gZnJvbSAnLi4vcm91dGVyLXN0YXRlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNpbXBsZVJldXNlU3RyYXRlZ3ksIEVsZW1lbnRzU2VydmljZSB9IGZyb20gJ2Rid2ViLWNvcmUnO1xyXG5pbXBvcnQgeyBVcmxUcmVlLCBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5leHBvcnQgY2xhc3MgVGFiIGltcGxlbWVudHMgSVJvdXRlclN0YXRlIHtcclxuXHR1cmw6IFVybFRyZWU7XHJcblx0a2V5OiBzdHJpbmc7XHJcblx0dGl0bGU6IHN0cmluZztcclxuXHR0aXRsZU9ic2VydmFibGU6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xyXG5cdGNvbnN0cnVjdG9yKHN0YXRlOiBJUm91dGVyU3RhdGUpIHtcclxuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0YXRlKSkge1xyXG5cdFx0XHR0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy50aXRsZU9ic2VydmFibGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oc3RhdGUudGl0bGUpO1xyXG5cdH1cclxuXHRkYXRhKCk6IElSb3V0ZXJTdGF0ZSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHR1cmw6IHRoaXMudXJsLFxyXG5cdFx0XHRrZXk6IHRoaXMua2V5LFxyXG5cdFx0XHR0aXRsZTogdGhpcy50aXRsZVxyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYnNTZXJ2aWNlIHtcclxuXHR0YWJzOiBUYWJbXSA9IFtdO1xyXG5cdF9hY3RpdmVJbmRleD86IG51bWJlcjtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGVsZXM6IEVsZW1lbnRzU2VydmljZSkge31cclxuXHQvLyDmv4DmtLvkuIDkuKp0YWLvvIzlpoLmnpzkuI3lrZjlnKjvvIzliJnmlrDlop7lubbmv4DmtLtcclxuXHRhY3RpdmVUYWIoZGF0YTogSVJvdXRlclN0YXRlKSB7XHJcblx0XHRjb25zdCBmaW5kID0gdGhpcy50YWJzLmZpbmRJbmRleCh2ID0+IHYua2V5ID09PSBkYXRhLmtleSk7XHJcblx0XHRpZiAoZmluZCA9PT0gLTEpIHtcclxuXHRcdFx0dGhpcy50YWJzLnB1c2gobmV3IFRhYihkYXRhKSk7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZUluZGV4ID0gdGhpcy50YWJzLmxlbmd0aCAtIDE7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVJbmRleCA9IGZpbmQ7XHJcblx0XHRcdC8vIOWQjOaXtumcgOimgeabtOaWsHVybOWSjHRpdGxlXHJcblx0XHRcdHRoaXMudGFic1t0aGlzLl9hY3RpdmVJbmRleF0udXJsID0gZGF0YS51cmw7XHJcblx0XHRcdHRoaXMudGFic1t0aGlzLl9hY3RpdmVJbmRleF0udGl0bGUgPSBkYXRhLnRpdGxlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvLyDliKDpmaTmjIflrprluo/lj7fnmoR0YWLvvIzlubbliIfmjaLmv4DmtLvnmoR0YWLvvIzlpoLmnpzlj6rmnInkuIDkuKp0YWLvvIzliJnkuI3og73ooqvliKDpmaRcclxuXHQvLyDov5Tlm550cnVl5oyH56S65r+A5rS76aG15bey57uP5YiH5o2iXHJcblx0cmVtb3ZlVGFiKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLnRhYnMubGVuZ3RoID09PSAxKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGRlbGV0ZVVSTCA9IHRoaXMudGFic1tpbmRleF0udXJsLnRvU3RyaW5nKCk7XHJcblx0XHQvLyDlpoLmnpzmmK/lhbPpl63lvZPliY3pobXpnaLvvIzliJnkvJrlvJXotbfot6/nlLHlj5jljJbvvIzmiYDku6XpnIDopoHlnKjlr7zoiKrnu5PmnZ/kuovku7bkuK3liKDpmaTvvIzlm6DkuLrlr7zoiKrov4fnqIvkuK3ov5jkvJrov5vooYzkv53lrZhcclxuXHRcdGlmIChpbmRleCA9PT0gdGhpcy5fYWN0aXZlSW5kZXgpIHtcclxuXHRcdFx0Y29uc3Qgc3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0XHRpZiAodiBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuXHRcdFx0XHRcdFNpbXBsZVJldXNlU3RyYXRlZ3kuZGVsZXRlUm91dGVTbmFwc2hvdChkZWxldGVVUkwpO1xyXG5cdFx0XHRcdFx0c3ViLnVuc3Vic2NyaWJlKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdFNpbXBsZVJldXNlU3RyYXRlZ3kuZGVsZXRlUm91dGVTbmFwc2hvdChkZWxldGVVUkwpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy50YWJzLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRpZiAodGhpcy5fYWN0aXZlSW5kZXggPT09IGluZGV4KSB7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZUluZGV4ID0gTWF0aC5taW4odGhpcy50YWJzLmxlbmd0aCAtIDEsIGluZGV4KTtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5fYWN0aXZlSW5kZXggPiBpbmRleCkge1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVJbmRleC0tO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHQvLyDliKDpmaTmiYDmnInnmoTpobXvvIzkuIDoiKzmmK9sb2dvdXRcclxuXHRjbGVhcigpIHtcclxuXHRcdHRoaXMudGFicy5zcGxpY2UoMCk7XHJcblx0XHR0aGlzLl9hY3RpdmVJbmRleCA9IHVuZGVmaW5lZDtcclxuXHRcdFNpbXBsZVJldXNlU3RyYXRlZ3kuY2xlYXJSb3V0ZVNuYXBzaG90KCk7XHJcblx0fVxyXG5cdC8vIOWFs+mXreW9k+WJjemhte+8jOW5tuiHquWKqOWvvOiIquWIsOaWsOeahOmhtVxyXG5cdGNsb3NlKCkge1xyXG5cdFx0aWYgKHRoaXMuYWN0aXZlSW5kZXggPj0gMCkge1xyXG5cdFx0XHRjb25zdCBpZHggPSB0aGlzLmFjdGl2ZUluZGV4O1xyXG5cdFx0XHRpZiAodGhpcy50YWJzLmxlbmd0aCA9PT0gMSkge1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5lbGVzLmZyb250RWxlbWVudFVSTCh0aGlzLmVsZXMuaW5kZXhFbGVtZW50TmFtZSkpLnRoZW4oKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5yZW1vdmVUYWIoaWR4KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodGhpcy5yZW1vdmVUYWIoaWR4KSkge1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5hY3RpdmUudXJsLCB7XHJcblx0XHRcdFx0XHRzdGF0ZTogdGhpcy5hY3RpdmUuZGF0YSgpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0Z2V0IGFjdGl2ZSgpIHtcclxuXHRcdGlmICh0aGlzLl9hY3RpdmVJbmRleCA+PSAwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRhYnNbdGhpcy5fYWN0aXZlSW5kZXhdO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHR9XHJcblx0Z2V0IGFjdGl2ZUluZGV4KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2FjdGl2ZUluZGV4O1xyXG5cdH1cclxuXHRzZXQgYWN0aXZlSW5kZXgodmFsOiBudW1iZXIpIHtcclxuXHRcdHRoaXMuX2FjdGl2ZUluZGV4ID0gdmFsO1xyXG5cdH1cclxufVxyXG4iXX0=