UNPKG

dbweb-common

Version:

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

246 lines 17.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; 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"; var Tab = /** @class */ (function () { function Tab(state) { var e_1, _a; try { for (var _b = tslib_1.__values(Object.keys(state)), _c = _b.next(); !_c.done; _c = _b.next()) { var key = _c.value; this[key] = state[key]; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } this.titleObservable = new BehaviorSubject(state.title); } /** * @return {?} */ Tab.prototype.data = /** * @return {?} */ function () { return { url: this.url, key: this.key, title: this.title }; }; return Tab; }()); export { Tab }; if (false) { /** @type {?} */ Tab.prototype.url; /** @type {?} */ Tab.prototype.key; /** @type {?} */ Tab.prototype.title; /** @type {?} */ Tab.prototype.titleObservable; } var TabsService = /** @class */ (function () { function TabsService(router, eles) { this.router = router; this.eles = eles; this.tabs = []; } // 激活一个tab,如果不存在,则新增并激活 // 激活一个tab,如果不存在,则新增并激活 /** * @param {?} data * @return {?} */ TabsService.prototype.activeTab = // 激活一个tab,如果不存在,则新增并激活 /** * @param {?} data * @return {?} */ function (data) { /** @type {?} */ var find = this.tabs.findIndex((/** * @param {?} v * @return {?} */ function (v) { return 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指示激活页已经切换 // 删除指定序号的tab,并切换激活的tab,如果只有一个tab,则不能被删除 // 返回true指示激活页已经切换 /** * @param {?} index * @return {?} */ TabsService.prototype.removeTab = // 删除指定序号的tab,并切换激活的tab,如果只有一个tab,则不能被删除 // 返回true指示激活页已经切换 /** * @param {?} index * @return {?} */ function (index) { if (this.tabs.length === 1) { return false; } /** @type {?} */ var deleteURL = this.tabs[index].url.toString(); // 如果是关闭当前页面,则会引起路由变化,所以需要在导航结束事件中删除,因为导航过程中还会进行保存 if (index === this._activeIndex) { /** @type {?} */ var sub_1 = this.router.events.subscribe((/** * @param {?} v * @return {?} */ function (v) { if (v instanceof NavigationEnd) { SimpleReuseStrategy.deleteRouteSnapshot(deleteURL); sub_1.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 // 删除所有的页,一般是logout /** * @return {?} */ TabsService.prototype.clear = // 删除所有的页,一般是logout /** * @return {?} */ function () { this.tabs.splice(0); this._activeIndex = undefined; SimpleReuseStrategy.clearRouteSnapshot(); }; // 关闭当前页,并自动导航到新的页 // 关闭当前页,并自动导航到新的页 /** * @return {?} */ TabsService.prototype.close = // 关闭当前页,并自动导航到新的页 /** * @return {?} */ function () { var _this = this; if (this.activeIndex >= 0) { /** @type {?} */ var idx_1 = this.activeIndex; if (this.tabs.length === 1) { this.router.navigateByUrl(this.eles.frontElementURL(this.eles.indexElementName)).then((/** * @return {?} */ function () { _this.removeTab(idx_1); })); } if (this.removeTab(idx_1)) { this.router.navigateByUrl(this.active.url, { state: this.active.data() }); } } }; Object.defineProperty(TabsService.prototype, "active", { get: /** * @return {?} */ function () { if (this._activeIndex >= 0) { return this.tabs[this._activeIndex]; } return undefined; }, enumerable: true, configurable: true }); Object.defineProperty(TabsService.prototype, "activeIndex", { get: /** * @return {?} */ function () { return this._activeIndex; }, set: /** * @param {?} val * @return {?} */ function (val) { this._activeIndex = val; }, enumerable: true, configurable: true }); TabsService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ TabsService.ctorParameters = function () { return [ { 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" }); return TabsService; }()); export { TabsService }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2hvbWUvdGFicy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEUsT0FBTyxFQUFXLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUNqRTtJQUtDLGFBQVksS0FBbUI7OztZQUM5QixLQUFrQixJQUFBLEtBQUEsaUJBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtnQkFBakMsSUFBTSxHQUFHLFdBQUE7Z0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2Qjs7Ozs7Ozs7O1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7OztJQUNELGtCQUFJOzs7SUFBSjtRQUNDLE9BQU87WUFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDakIsQ0FBQztJQUNILENBQUM7SUFDRixVQUFDO0FBQUQsQ0FBQyxBQWxCRCxJQWtCQzs7OztJQWpCQSxrQkFBYTs7SUFDYixrQkFBWTs7SUFDWixvQkFBYzs7SUFDZCw4QkFBeUM7O0FBZ0IxQztJQU1DLHFCQUFvQixNQUFjLEVBQVUsSUFBcUI7UUFBN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFNBQUksR0FBSixJ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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uL3JvdXRlci1zdGF0ZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTaW1wbGVSZXVzZVN0cmF0ZWd5LCBFbGVtZW50c1NlcnZpY2UgfSBmcm9tICdkYndlYi1jb3JlJztcclxuaW1wb3J0IHsgVXJsVHJlZSwgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuZXhwb3J0IGNsYXNzIFRhYiBpbXBsZW1lbnRzIElSb3V0ZXJTdGF0ZSB7XHJcblx0dXJsOiBVcmxUcmVlO1xyXG5cdGtleTogc3RyaW5nO1xyXG5cdHRpdGxlOiBzdHJpbmc7XHJcblx0dGl0bGVPYnNlcnZhYmxlOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPjtcclxuXHRjb25zdHJ1Y3RvcihzdGF0ZTogSVJvdXRlclN0YXRlKSB7XHJcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzdGF0ZSkpIHtcclxuXHRcdFx0dGhpc1trZXldID0gc3RhdGVba2V5XTtcclxuXHRcdH1cclxuXHRcdHRoaXMudGl0bGVPYnNlcnZhYmxlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHN0YXRlLnRpdGxlKTtcclxuXHR9XHJcblx0ZGF0YSgpOiBJUm91dGVyU3RhdGUge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0dXJsOiB0aGlzLnVybCxcclxuXHRcdFx0a2V5OiB0aGlzLmtleSxcclxuXHRcdFx0dGl0bGU6IHRoaXMudGl0bGVcclxuXHRcdH07XHJcblx0fVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJzU2VydmljZSB7XHJcblx0dGFiczogVGFiW10gPSBbXTtcclxuXHRfYWN0aXZlSW5kZXg/OiBudW1iZXI7XHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBlbGVzOiBFbGVtZW50c1NlcnZpY2UpIHt9XHJcblx0Ly8g5r+A5rS75LiA5LiqdGFi77yM5aaC5p6c5LiN5a2Y5Zyo77yM5YiZ5paw5aKe5bm25r+A5rS7XHJcblx0YWN0aXZlVGFiKGRhdGE6IElSb3V0ZXJTdGF0ZSkge1xyXG5cdFx0Y29uc3QgZmluZCA9IHRoaXMudGFicy5maW5kSW5kZXgodiA9PiB2LmtleSA9PT0gZGF0YS5rZXkpO1xyXG5cdFx0aWYgKGZpbmQgPT09IC0xKSB7XHJcblx0XHRcdHRoaXMudGFicy5wdXNoKG5ldyBUYWIoZGF0YSkpO1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5fYWN0aXZlSW5kZXggPSBmaW5kO1xyXG5cdFx0XHQvLyDlkIzml7bpnIDopoHmm7TmlrB1cmzlkox0aXRsZVxyXG5cdFx0XHR0aGlzLnRhYnNbdGhpcy5fYWN0aXZlSW5kZXhdLnVybCA9IGRhdGEudXJsO1xyXG5cdFx0XHR0aGlzLnRhYnNbdGhpcy5fYWN0aXZlSW5kZXhdLnRpdGxlID0gZGF0YS50aXRsZTtcclxuXHRcdH1cclxuXHR9XHJcblx0Ly8g5Yig6Zmk5oyH5a6a5bqP5Y+355qEdGFi77yM5bm25YiH5o2i5r+A5rS755qEdGFi77yM5aaC5p6c5Y+q5pyJ5LiA5LiqdGFi77yM5YiZ5LiN6IO96KKr5Yig6ZmkXHJcblx0Ly8g6L+U5ZuedHJ1ZeaMh+ekuua/gOa0u+mhteW3sue7j+WIh+aNolxyXG5cdHJlbW92ZVRhYihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcblx0XHRpZiAodGhpcy50YWJzLmxlbmd0aCA9PT0gMSkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0XHRjb25zdCBkZWxldGVVUkwgPSB0aGlzLnRhYnNbaW5kZXhdLnVybC50b1N0cmluZygpO1xyXG5cdFx0Ly8g5aaC5p6c5piv5YWz6Zet5b2T5YmN6aG16Z2i77yM5YiZ5Lya5byV6LW36Lev55Sx5Y+Y5YyW77yM5omA5Lul6ZyA6KaB5Zyo5a+86Iiq57uT5p2f5LqL5Lu25Lit5Yig6Zmk77yM5Zug5Li65a+86Iiq6L+H56iL5Lit6L+Y5Lya6L+b6KGM5L+d5a2YXHJcblx0XHRpZiAoaW5kZXggPT09IHRoaXMuX2FjdGl2ZUluZGV4KSB7XHJcblx0XHRcdGNvbnN0IHN1YiA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdFx0aWYgKHYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblx0XHRcdFx0XHRTaW1wbGVSZXVzZVN0cmF0ZWd5LmRlbGV0ZVJvdXRlU25hcHNob3QoZGVsZXRlVVJMKTtcclxuXHRcdFx0XHRcdHN1Yi51bnN1YnNjcmliZSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRTaW1wbGVSZXVzZVN0cmF0ZWd5LmRlbGV0ZVJvdXRlU25hcHNob3QoZGVsZXRlVVJMKTtcclxuXHRcdH1cclxuXHRcdHRoaXMudGFicy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0aWYgKHRoaXMuX2FjdGl2ZUluZGV4ID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVJbmRleCA9IE1hdGgubWluKHRoaXMudGFicy5sZW5ndGggLSAxLCBpbmRleCk7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuX2FjdGl2ZUluZGV4ID4gaW5kZXgpIHtcclxuXHRcdFx0dGhpcy5fYWN0aXZlSW5kZXgtLTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblx0Ly8g5Yig6Zmk5omA5pyJ55qE6aG177yM5LiA6Iis5pivbG9nb3V0XHJcblx0Y2xlYXIoKSB7XHJcblx0XHR0aGlzLnRhYnMuc3BsaWNlKDApO1xyXG5cdFx0dGhpcy5fYWN0aXZlSW5kZXggPSB1bmRlZmluZWQ7XHJcblx0XHRTaW1wbGVSZXVzZVN0cmF0ZWd5LmNsZWFyUm91dGVTbmFwc2hvdCgpO1xyXG5cdH1cclxuXHQvLyDlhbPpl63lvZPliY3pobXvvIzlubboh6rliqjlr7zoiKrliLDmlrDnmoTpobVcclxuXHRjbG9zZSgpIHtcclxuXHRcdGlmICh0aGlzLmFjdGl2ZUluZGV4ID49IDApIHtcclxuXHRcdFx0Y29uc3QgaWR4ID0gdGhpcy5hY3RpdmVJbmRleDtcclxuXHRcdFx0aWYgKHRoaXMudGFicy5sZW5ndGggPT09IDEpIHtcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZWxlcy5mcm9udEVsZW1lbnRVUkwodGhpcy5lbGVzLmluZGV4RWxlbWVudE5hbWUpKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMucmVtb3ZlVGFiKGlkeCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMucmVtb3ZlVGFiKGlkeCkpIHtcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuYWN0aXZlLnVybCwge1xyXG5cdFx0XHRcdFx0c3RhdGU6IHRoaXMuYWN0aXZlLmRhdGEoKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdGdldCBhY3RpdmUoKSB7XHJcblx0XHRpZiAodGhpcy5fYWN0aXZlSW5kZXggPj0gMCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50YWJzW3RoaXMuX2FjdGl2ZUluZGV4XTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB1bmRlZmluZWQ7XHJcblx0fVxyXG5cdGdldCBhY3RpdmVJbmRleCgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9hY3RpdmVJbmRleDtcclxuXHR9XHJcblx0c2V0IGFjdGl2ZUluZGV4KHZhbDogbnVtYmVyKSB7XHJcblx0XHR0aGlzLl9hY3RpdmVJbmRleCA9IHZhbDtcclxuXHR9XHJcbn1cclxuIl19