dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
197 lines • 15 kB
JavaScript
/**
* @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=