@yelon/bis 12.0.17 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/bis.d.ts +5 -4
- package/{esm2015/bis.js → esm2020/bis.mjs} +4 -4
- package/esm2020/layout/act.guard.mjs +108 -0
- package/{esm2015/layout/bis.config.js → esm2020/layout/bis.config.mjs} +10 -10
- package/esm2020/layout/contact/contact.component.mjs +492 -0
- package/esm2020/layout/contact/contact.service.mjs +146 -0
- package/esm2020/layout/layout.mjs +5 -0
- package/esm2020/layout/layout.module.mjs +73 -0
- package/{esm2015/layout/path-to-regexp.service.js → esm2020/layout/path-to-regexp.service.mjs} +238 -237
- package/{esm2015/layout/public_api.js → esm2020/layout/public_api.mjs} +15 -15
- package/esm2020/layout/stomp.config.mjs +18 -0
- package/{esm2015/layout/widgets/index.js → esm2020/layout/widgets/index.mjs} +7 -7
- package/esm2020/layout/widgets/yz.application.component.mjs +271 -0
- package/esm2020/layout/widgets/yz.clear-storage.component.mjs +45 -0
- package/esm2020/layout/widgets/yz.fullscreen.component.mjs +45 -0
- package/esm2020/layout/widgets/yz.i18n.component.mjs +115 -0
- package/esm2020/layout/widgets/yz.notify.component.mjs +184 -0
- package/esm2020/layout/widgets/yz.them-btn.component.mjs +196 -0
- package/esm2020/layout/widgets/yz.user.component.mjs +112 -0
- package/esm2020/layout/yz.auth.service.mjs +156 -0
- package/esm2020/layout/yz.basic.component.mjs +207 -0
- package/esm2020/layout/yz.default.interceptor.mjs +203 -0
- package/esm2020/layout/yz.i18n.service.mjs +93 -0
- package/esm2020/layout/yz.startup.service.mjs +137 -0
- package/esm2020/layout/yz.stomp.service.mjs +88 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
- package/{esm2015/shared/public_api.js → esm2020/shared/public_api.mjs} +4 -4
- package/{esm2015/shared/shared-yelon.module.js → esm2020/shared/shared-yelon.module.mjs} +107 -107
- package/{esm2015/shared/shared-zorro.module.js → esm2020/shared/shared-zorro.module.mjs} +80 -80
- package/{esm2015/shared/shared.js → esm2020/shared/shared.mjs} +4 -4
- package/esm2020/shared/shared.module.mjs +116 -0
- package/{esm2015/shared/style-icons.js → esm2020/shared/style-icons.mjs} +795 -795
- package/fesm2015/{bis.js → bis.mjs} +3 -3
- package/fesm2015/bis.mjs.map +1 -0
- package/fesm2015/{layout.js → layout.mjs} +2514 -2181
- package/fesm2015/layout.mjs.map +1 -0
- package/fesm2015/{shared.js → shared.mjs} +1004 -910
- package/fesm2015/shared.mjs.map +1 -0
- package/fesm2020/bis.mjs +6 -0
- package/fesm2020/bis.mjs.map +1 -0
- package/fesm2020/layout.mjs +2796 -0
- package/fesm2020/layout.mjs.map +1 -0
- package/fesm2020/shared.mjs +1106 -0
- package/fesm2020/shared.mjs.map +1 -0
- package/layout/act.guard.d.ts +23 -20
- package/layout/bis.config.d.ts +3 -3
- package/layout/contact/contact.component.d.ts +169 -166
- package/layout/contact/contact.service.d.ts +118 -115
- package/layout/layout.d.ts +5 -7
- package/layout/layout.module.d.ts +20 -2
- package/layout/package.json +5 -6
- package/layout/path-to-regexp.service.d.ts +26 -23
- package/layout/public_api.d.ts +14 -12
- package/layout/stomp.config.d.ts +3 -3
- package/layout/widgets/index.d.ts +7 -7
- package/layout/widgets/yz.application.component.d.ts +48 -45
- package/layout/widgets/yz.clear-storage.component.d.ts +11 -8
- package/layout/widgets/yz.fullscreen.component.d.ts +8 -6
- package/layout/widgets/yz.i18n.component.d.ts +22 -19
- package/layout/widgets/yz.notify.component.d.ts +30 -25
- package/layout/widgets/yz.them-btn.component.d.ts +32 -29
- package/layout/widgets/yz.user.component.d.ts +28 -25
- package/layout/yz.auth.service.d.ts +22 -19
- package/layout/yz.basic.component.d.ts +24 -15
- package/layout/yz.default.interceptor.d.ts +29 -26
- package/layout/yz.i18n.service.d.ts +27 -24
- package/layout/yz.startup.service.d.ts +34 -31
- package/layout/yz.stomp.service.d.ts +42 -39
- package/package.json +46 -18
- package/public_api.d.ts +2 -2
- package/shared/package.json +5 -6
- package/shared/public_api.d.ts +4 -4
- package/shared/shared-yelon.module.d.ts +3 -3
- package/shared/shared-zorro.module.d.ts +2 -2
- package/shared/shared.d.ts +5 -4
- package/shared/shared.module.d.ts +95 -2
- package/shared/style-icons.d.ts +1 -1
- package/bis.metadata.json +0 -1
- package/bundles/bis.umd.js +0 -18
- package/bundles/bis.umd.js.map +0 -1
- package/bundles/layout.umd.js +0 -2669
- package/bundles/layout.umd.js.map +0 -1
- package/bundles/shared.umd.js +0 -1249
- package/bundles/shared.umd.js.map +0 -1
- package/esm2015/layout/act.guard.js +0 -115
- package/esm2015/layout/contact/contact.component.js +0 -434
- package/esm2015/layout/contact/contact.service.js +0 -150
- package/esm2015/layout/layout.js +0 -8
- package/esm2015/layout/layout.module.js +0 -47
- package/esm2015/layout/stomp.config.js +0 -20
- package/esm2015/layout/widgets/yz.application.component.js +0 -200
- package/esm2015/layout/widgets/yz.clear-storage.component.js +0 -39
- package/esm2015/layout/widgets/yz.fullscreen.component.js +0 -36
- package/esm2015/layout/widgets/yz.i18n.component.js +0 -78
- package/esm2015/layout/widgets/yz.notify.component.js +0 -154
- package/esm2015/layout/widgets/yz.them-btn.component.js +0 -146
- package/esm2015/layout/widgets/yz.user.component.js +0 -81
- package/esm2015/layout/yz.auth.service.js +0 -158
- package/esm2015/layout/yz.basic.component.js +0 -101
- package/esm2015/layout/yz.default.interceptor.js +0 -204
- package/esm2015/layout/yz.i18n.service.js +0 -102
- package/esm2015/layout/yz.startup.service.js +0 -138
- package/esm2015/layout/yz.stomp.service.js +0 -91
- package/esm2015/shared/shared.module.js +0 -22
- package/fesm2015/bis.js.map +0 -1
- package/fesm2015/layout.js.map +0 -1
- package/fesm2015/shared.js.map +0 -1
- package/layout/layout.metadata.json +0 -1
- package/shared/shared.metadata.json +0 -1
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Injectable, Injector, isDevMode } from '@angular/core';
|
|
3
|
-
import { RxStomp } from '@stomp/rx-stomp';
|
|
4
|
-
import { NzNotificationService } from 'ng-zorro-antd/notification';
|
|
5
|
-
import { CacheService } from '@yelon/cache';
|
|
6
|
-
import { log, WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
7
|
-
import { mergeBisConfig } from './bis.config';
|
|
8
|
-
import { mergeStompConfig } from './stomp.config';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@yelon/util/config";
|
|
11
|
-
import * as i2 from "@yelon/cache";
|
|
12
|
-
import * as i3 from "ng-zorro-antd/notification";
|
|
13
|
-
export class YzStompService {
|
|
14
|
-
constructor(csr, cache, injector, notification) {
|
|
15
|
-
this.csr = csr;
|
|
16
|
-
this.cache = cache;
|
|
17
|
-
this.injector = injector;
|
|
18
|
-
this.notification = notification;
|
|
19
|
-
this.subs = [];
|
|
20
|
-
if (!this.user) {
|
|
21
|
-
this.user = this.cache.get('_yz_user', { mode: 'none' });
|
|
22
|
-
}
|
|
23
|
-
if (!this.config) {
|
|
24
|
-
this.config = mergeStompConfig(this.csr);
|
|
25
|
-
}
|
|
26
|
-
if (!this.bisConfig) {
|
|
27
|
-
this.bisConfig = mergeBisConfig(csr);
|
|
28
|
-
}
|
|
29
|
-
if (!this.rxStomp) {
|
|
30
|
-
this.rxStomp = new RxStomp();
|
|
31
|
-
if (isDevMode()) {
|
|
32
|
-
log('yz.stomp.service: is dev mode');
|
|
33
|
-
log('yz.stomp.service: ', `config is ${JSON.stringify(this.config)}`);
|
|
34
|
-
this.rxStomp.configure(this.config);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const { location } = this.injector.get(DOCUMENT);
|
|
38
|
-
const { protocol, host } = location;
|
|
39
|
-
log('yz.stomp.service: ', `protocol is ${protocol},host is ${host}`);
|
|
40
|
-
if (protocol.includes('http') && !protocol.includes('https')) {
|
|
41
|
-
this.config.brokerURL = `ws://${host}${this.config.brokerURL}`;
|
|
42
|
-
}
|
|
43
|
-
if (protocol.includes('https')) {
|
|
44
|
-
this.config.brokerURL = `wss://${host}${this.config.brokerURL}`;
|
|
45
|
-
}
|
|
46
|
-
log('yz.stomp.service: ', `config is ${this.config}`);
|
|
47
|
-
this.rxStomp.configure(this.config);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
listen() {
|
|
51
|
-
this.subs.push(this.rxStomp.watch(`/topic/layout_${this.user.username}`).subscribe(message => {
|
|
52
|
-
this.createNotification(JSON.parse(message.body));
|
|
53
|
-
}));
|
|
54
|
-
this.subs.push(this.rxStomp.watch(`/topic/layout_xx_${this.user.username}`).subscribe((message) => {
|
|
55
|
-
this.logoutNotification(JSON.parse(message.body));
|
|
56
|
-
}));
|
|
57
|
-
this.rxStomp.activate();
|
|
58
|
-
}
|
|
59
|
-
createNotification(message) {
|
|
60
|
-
this.notification.create(message.type, message.title, `<a href=${message.href}>${message.content}</a>`);
|
|
61
|
-
}
|
|
62
|
-
logoutNotification(message) {
|
|
63
|
-
this.notification.create(message.type, message.title, `${message.content},剩余时间5秒`);
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
this.cache.clear();
|
|
66
|
-
localStorage.clear();
|
|
67
|
-
this.injector.get(WINDOW).location.href = `${this.bisConfig.baseUrl}/cas-proxy/app/logout`;
|
|
68
|
-
}, 5000);
|
|
69
|
-
}
|
|
70
|
-
unListen() {
|
|
71
|
-
this.subs.forEach(s => s.unsubscribe());
|
|
72
|
-
this.rxStomp.deactivate().then();
|
|
73
|
-
}
|
|
74
|
-
publish(parameters) {
|
|
75
|
-
this.rxStomp.publish(parameters);
|
|
76
|
-
}
|
|
77
|
-
watch(destination, headers) {
|
|
78
|
-
return this.rxStomp.watch(destination, headers);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
YzStompService.ɵprov = i0.ɵɵdefineInjectable({ factory: function YzStompService_Factory() { return new YzStompService(i0.ɵɵinject(i1.YunzaiConfigService), i0.ɵɵinject(i2.CacheService), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i3.NzNotificationService)); }, token: YzStompService, providedIn: "root" });
|
|
82
|
-
YzStompService.decorators = [
|
|
83
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
84
|
-
];
|
|
85
|
-
YzStompService.ctorParameters = () => [
|
|
86
|
-
{ type: YunzaiConfigService },
|
|
87
|
-
{ type: CacheService },
|
|
88
|
-
{ type: Injector },
|
|
89
|
-
{ type: NzNotificationService }
|
|
90
|
-
];
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouc3RvbXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXouc3RvbXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUF3QixtQkFBbUIsRUFBcUIsTUFBTSxhQUFhLENBQUM7QUFFeEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFrQmxELE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ1UsR0FBd0IsRUFDeEIsS0FBbUIsRUFDbkIsUUFBa0IsRUFDbEIsWUFBbUM7UUFIbkMsUUFBRyxHQUFILEdBQUcsQ0FBcUI7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQU43QyxTQUFJLEdBQW1CLEVBQUUsQ0FBQztRQVF4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDMUQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksU0FBUyxFQUFFLEVBQUU7Z0JBQ2YsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQ3JDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwQyxPQUFPO2FBQ1I7WUFDRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakQsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUM7WUFDcEMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLGVBQWUsUUFBUSxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNoRTtZQUNELElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNqRTtZQUNELEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQXFCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFLLEVBQUUsT0FBTyxDQUFDLEtBQU0sRUFBRSxXQUFXLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sTUFBTSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQXFCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFLLEVBQUUsT0FBTyxDQUFDLEtBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzdGLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsVUFBaUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFtQixFQUFFLE9BQXNCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7WUFuRkYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBcEJVLG1CQUFtQjtZQUR0RCxZQUFZO1lBVkEsUUFBUTtZQVFwQixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUnhTdG9tcCB9IGZyb20gJ0BzdG9tcC9yeC1zdG9tcCc7XG5pbXBvcnQgeyBJUnhTdG9tcFB1Ymxpc2hQYXJhbXMgfSBmcm9tICdAc3RvbXAvcngtc3RvbXAvZXNtNi9pLXJ4LXN0b21wLXB1Ymxpc2gtcGFyYW1zJztcbmltcG9ydCB7IElNZXNzYWdlLCBTdG9tcEhlYWRlcnMgfSBmcm9tICdAc3RvbXAvc3RvbXBqcyc7XG5cbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBOek5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL25vdGlmaWNhdGlvbic7XG5cbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBsb2csIFdJTkRPVywgWXVuemFpQnVzaW5lc3NDb25maWcsIFl1bnphaUNvbmZpZ1NlcnZpY2UsIFl1bnphaVN0b21wQ29uZmlnIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuXG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4vYmlzLmNvbmZpZyc7XG5pbXBvcnQgeyBtZXJnZVN0b21wQ29uZmlnIH0gZnJvbSAnLi9zdG9tcC5jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b21wTWVzc2FnZSB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBocmVmPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljb25TdG9tcE1lc3NhZ2UgZXh0ZW5kcyBTdG9tcE1lc3NhZ2Uge1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJTdG9tcE1lc3NhZ2UgZXh0ZW5kcyBTdG9tcE1lc3NhZ2Uge1xuICB1c2VydXJpPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFl6U3RvbXBTZXJ2aWNlIHtcbiAgY29uZmlnOiBZdW56YWlTdG9tcENvbmZpZztcbiAgYmlzQ29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcbiAgcnhTdG9tcDogUnhTdG9tcDtcbiAgdXNlcjogTnpTYWZlQW55O1xuICBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY3NyOiBZdW56YWlDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FjaGU6IENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogTnpOb3RpZmljYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIGlmICghdGhpcy51c2VyKSB7XG4gICAgICB0aGlzLnVzZXIgPSB0aGlzLmNhY2hlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSBtZXJnZVN0b21wQ29uZmlnKHRoaXMuY3NyKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmJpc0NvbmZpZykge1xuICAgICAgdGhpcy5iaXNDb25maWcgPSBtZXJnZUJpc0NvbmZpZyhjc3IpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucnhTdG9tcCkge1xuICAgICAgdGhpcy5yeFN0b21wID0gbmV3IFJ4U3RvbXAoKTtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBsb2coJ3l6LnN0b21wLnNlcnZpY2U6IGlzIGRldiBtb2RlJyk7XG4gICAgICAgIGxvZygneXouc3RvbXAuc2VydmljZTogJywgYGNvbmZpZyBpcyAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKX1gKTtcbiAgICAgICAgdGhpcy5yeFN0b21wLmNvbmZpZ3VyZSh0aGlzLmNvbmZpZyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgbG9jYXRpb24gfSA9IHRoaXMuaW5qZWN0b3IuZ2V0KERPQ1VNRU5UKTtcbiAgICAgIGNvbnN0IHsgcHJvdG9jb2wsIGhvc3QgfSA9IGxvY2F0aW9uO1xuICAgICAgbG9nKCd5ei5zdG9tcC5zZXJ2aWNlOiAnLCBgcHJvdG9jb2wgaXMgJHtwcm90b2NvbH0saG9zdCBpcyAke2hvc3R9YCk7XG4gICAgICBpZiAocHJvdG9jb2wuaW5jbHVkZXMoJ2h0dHAnKSAmJiAhcHJvdG9jb2wuaW5jbHVkZXMoJ2h0dHBzJykpIHtcbiAgICAgICAgdGhpcy5jb25maWcuYnJva2VyVVJMID0gYHdzOi8vJHtob3N0fSR7dGhpcy5jb25maWcuYnJva2VyVVJMfWA7XG4gICAgICB9XG4gICAgICBpZiAocHJvdG9jb2wuaW5jbHVkZXMoJ2h0dHBzJykpIHtcbiAgICAgICAgdGhpcy5jb25maWcuYnJva2VyVVJMID0gYHdzczovLyR7aG9zdH0ke3RoaXMuY29uZmlnLmJyb2tlclVSTH1gO1xuICAgICAgfVxuICAgICAgbG9nKCd5ei5zdG9tcC5zZXJ2aWNlOiAnLCBgY29uZmlnIGlzICR7dGhpcy5jb25maWd9YCk7XG4gICAgICB0aGlzLnJ4U3RvbXAuY29uZmlndXJlKHRoaXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBsaXN0ZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICB0aGlzLnJ4U3RvbXAud2F0Y2goYC90b3BpYy9sYXlvdXRfJHt0aGlzLnVzZXIudXNlcm5hbWV9YCkuc3Vic2NyaWJlKG1lc3NhZ2UgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZU5vdGlmaWNhdGlvbihKU09OLnBhcnNlKG1lc3NhZ2UuYm9keSkpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgdGhpcy5yeFN0b21wLndhdGNoKGAvdG9waWMvbGF5b3V0X3h4XyR7dGhpcy51c2VyLnVzZXJuYW1lfWApLnN1YnNjcmliZSgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9nb3V0Tm90aWZpY2F0aW9uKEpTT04ucGFyc2UobWVzc2FnZS5ib2R5KSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yeFN0b21wLmFjdGl2YXRlKCk7XG4gIH1cblxuICBjcmVhdGVOb3RpZmljYXRpb24obWVzc2FnZTogU3RvbXBNZXNzYWdlKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb24uY3JlYXRlKG1lc3NhZ2UudHlwZSEsIG1lc3NhZ2UudGl0bGUhLCBgPGEgaHJlZj0ke21lc3NhZ2UuaHJlZn0+JHttZXNzYWdlLmNvbnRlbnR9PC9hPmApO1xuICB9XG5cbiAgbG9nb3V0Tm90aWZpY2F0aW9uKG1lc3NhZ2U6IFN0b21wTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uLmNyZWF0ZShtZXNzYWdlLnR5cGUhLCBtZXNzYWdlLnRpdGxlISwgYCR7bWVzc2FnZS5jb250ZW50fSzliankvZnml7bpl7Q156eSYCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykubG9jYXRpb24uaHJlZiA9IGAke3RoaXMuYmlzQ29uZmlnLmJhc2VVcmx9L2Nhcy1wcm94eS9hcHAvbG9nb3V0YDtcbiAgICB9LCA1MDAwKTtcbiAgfVxuXG4gIHVuTGlzdGVuKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnJ4U3RvbXAuZGVhY3RpdmF0ZSgpLnRoZW4oKTtcbiAgfVxuXG4gIHB1Ymxpc2gocGFyYW1ldGVyczogSVJ4U3RvbXBQdWJsaXNoUGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5yeFN0b21wLnB1Ymxpc2gocGFyYW1ldGVycyk7XG4gIH1cblxuICB3YXRjaChkZXN0aW5hdGlvbjogc3RyaW5nLCBoZWFkZXJzPzogU3RvbXBIZWFkZXJzKTogT2JzZXJ2YWJsZTxJTWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLnJ4U3RvbXAud2F0Y2goZGVzdGluYXRpb24sIGhlYWRlcnMpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: cui <devcui@outlook.com>
|
|
3
|
-
* @Editor: microsoft vscode
|
|
4
|
-
* @Date: 2021-11-27 11:30:50
|
|
5
|
-
* @LastEditTime: 2021-11-27 14:41:18
|
|
6
|
-
* @LastEditors: cui <devcui@outlook.com>
|
|
7
|
-
* @Description: empty description
|
|
8
|
-
* @FilePath: \yelon\packages\bis\shared\shared.module.ts
|
|
9
|
-
* LICENSE HERE
|
|
10
|
-
*/
|
|
11
|
-
import { NgModule } from '@angular/core';
|
|
12
|
-
import { YZ_SHARED_YELON_MODULES } from './shared-yelon.module';
|
|
13
|
-
import { YZ_SHARED_ZORRO_MODULES } from './shared-zorro.module';
|
|
14
|
-
export class YzSharedModule {
|
|
15
|
-
}
|
|
16
|
-
YzSharedModule.decorators = [
|
|
17
|
-
{ type: NgModule, args: [{
|
|
18
|
-
imports: [...YZ_SHARED_YELON_MODULES, ...YZ_SHARED_ZORRO_MODULES],
|
|
19
|
-
exports: [...YZ_SHARED_YELON_MODULES, ...YZ_SHARED_ZORRO_MODULES]
|
|
20
|
-
},] }
|
|
21
|
-
];
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zaGFyZWQvc2hhcmVkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTWhFLE1BQU0sT0FBTyxjQUFjOzs7WUFKMUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsR0FBRyx1QkFBdUIsQ0FBQztnQkFDakUsT0FBTyxFQUFFLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLHVCQUF1QixDQUFDO2FBQ2xFIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IGN1aSA8ZGV2Y3VpQG91dGxvb2suY29tPlxuICogQEVkaXRvcjogbWljcm9zb2Z0IHZzY29kZVxuICogQERhdGU6IDIwMjEtMTEtMjcgMTE6MzA6NTBcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMTEtMjcgMTQ6NDE6MThcbiAqIEBMYXN0RWRpdG9yczogY3VpIDxkZXZjdWlAb3V0bG9vay5jb20+XG4gKiBARGVzY3JpcHRpb246IGVtcHR5IGRlc2NyaXB0aW9uXG4gKiBARmlsZVBhdGg6IFxceWVsb25cXHBhY2thZ2VzXFxiaXNcXHNoYXJlZFxcc2hhcmVkLm1vZHVsZS50c1xuICogTElDRU5TRSBIRVJFXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFlaX1NIQVJFRF9ZRUxPTl9NT0RVTEVTIH0gZnJvbSAnLi9zaGFyZWQteWVsb24ubW9kdWxlJztcbmltcG9ydCB7IFlaX1NIQVJFRF9aT1JST19NT0RVTEVTIH0gZnJvbSAnLi9zaGFyZWQtem9ycm8ubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLllaX1NIQVJFRF9ZRUxPTl9NT0RVTEVTLCAuLi5ZWl9TSEFSRURfWk9SUk9fTU9EVUxFU10sXG4gIGV4cG9ydHM6IFsuLi5ZWl9TSEFSRURfWUVMT05fTU9EVUxFUywgLi4uWVpfU0hBUkVEX1pPUlJPX01PRFVMRVNdXG59KVxuZXhwb3J0IGNsYXNzIFl6U2hhcmVkTW9kdWxlIHt9XG4iXX0=
|
package/fesm2015/bis.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bis.js","sources":["../../../../packages/bis/public_api.ts","../../../../packages/bis/bis.ts"],"sourcesContent":["export default void 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"AAAA,iBAAe,KAAK,CAAC;;ACArB;;"}
|
package/fesm2015/layout.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sources":["../../../../packages/bis/layout/yz.i18n.service.ts","../../../../packages/bis/layout/widgets/yz.application.component.ts","../../../../packages/bis/layout/widgets/yz.i18n.component.ts","../../../../packages/bis/layout/widgets/yz.notify.component.ts","../../../../packages/bis/layout/widgets/yz.them-btn.component.ts","../../../../packages/bis/layout/bis.config.ts","../../../../packages/bis/layout/widgets/yz.user.component.ts","../../../../packages/bis/layout/widgets/yz.clear-storage.component.ts","../../../../packages/bis/layout/widgets/yz.fullscreen.component.ts","../../../../packages/bis/layout/contact/contact.service.ts","../../../../packages/bis/layout/contact/contact.component.ts","../../../../packages/bis/layout/stomp.config.ts","../../../../packages/bis/layout/yz.stomp.service.ts","../../../../packages/bis/layout/yz.basic.component.ts","../../../../packages/bis/layout/layout.module.ts","../../../../packages/bis/layout/yz.auth.service.ts","../../../../packages/bis/layout/yz.default.interceptor.ts","../../../../packages/bis/layout/yz.startup.service.ts","../../../../packages/bis/layout/path-to-regexp.service.ts","../../../../packages/bis/layout/act.guard.ts","../../../../packages/bis/layout/public_api.ts","../../../../packages/bis/layout/layout.ts"],"sourcesContent":["// 请参考:https://ng.yunzainfo.com/docs/i18n\nimport { Platform } from '@angular/cdk/platform';\nimport { registerLocaleData } from '@angular/common';\nimport ngEn from '@angular/common/locales/en';\nimport ngZh from '@angular/common/locales/zh';\nimport ngZhTw from '@angular/common/locales/zh-Hant';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw } from 'date-fns/locale';\n\nimport {\n YelonLocaleService,\n en_US as yelonEnUS,\n SettingsService,\n zh_CN as yelonZhCn,\n zh_TW as yelonZhTw,\n _HttpClient,\n YunzaiI18nBaseService\n} from '@yelon/theme';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { en_US as zorroEnUS, NzI18nService, zh_CN as zorroZhCN, zh_TW as zorroZhTW } from 'ng-zorro-antd/i18n';\n\ninterface LangConfigData {\n abbr: string;\n text: string;\n ng: NzSafeAny;\n zorro: NzSafeAny;\n date: NzSafeAny;\n yelon: NzSafeAny;\n}\n\nconst DEFAULT = 'zh-CN';\nconst LANGS: { [key: string]: LangConfigData } = {\n 'zh-CN': {\n text: '简体中文',\n ng: ngZh,\n zorro: zorroZhCN,\n date: dfZhCn,\n yelon: yelonZhCn,\n abbr: '🇨🇳'\n },\n 'zh-TW': {\n text: '繁体中文',\n ng: ngZhTw,\n zorro: zorroZhTW,\n date: dfZhTw,\n yelon: yelonZhTw,\n abbr: '🇭🇰'\n },\n 'en-US': {\n text: 'English',\n ng: ngEn,\n zorro: zorroEnUS,\n date: dfEn,\n yelon: yelonEnUS,\n abbr: '🇬🇧'\n }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class YzI18NService extends YunzaiI18nBaseService {\n protected _defaultLang = DEFAULT;\n private _langs = Object.keys(LANGS).map(code => {\n const item = LANGS[code];\n return { code, text: item.text, abbr: item.abbr };\n });\n\n constructor(\n private http: _HttpClient,\n private settings: SettingsService,\n private nzI18nService: NzI18nService,\n private yelonLocaleService: YelonLocaleService,\n private platform: Platform,\n cogSrv: YunzaiConfigService\n ) {\n super(cogSrv);\n const defaultLang = this.getDefaultLang();\n this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;\n }\n\n private getDefaultLang(): string {\n if (!this.platform.isBrowser) {\n return DEFAULT;\n }\n if (this.settings.layout.lang) {\n return this.settings.layout.lang;\n }\n let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;\n const arr = res.split('-');\n return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;\n }\n\n loadLangData(lang: string): Observable<NzSafeAny> {\n return this.http.get(`assets/tmp/i18n/${lang}.json`);\n }\n\n use(lang: string, data: Record<string, unknown>): void {\n if (this._currentLang === lang) return;\n\n this._data = this.flatData(data, []);\n\n const item = LANGS[lang];\n registerLocaleData(item.ng);\n this.nzI18nService.setLocale(item.zorro);\n this.nzI18nService.setDateLocale(item.date);\n this.yelonLocaleService.setLocale(item.yelon);\n this._currentLang = lang;\n\n this._change$.next(lang);\n }\n\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\n return this._langs;\n }\n}\n","import { ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\nexport enum TOPIC {\n FULL,\n OWN,\n EVERY\n}\n\nexport interface HeaderTopic {\n // 忘了\n attribute: any;\n // 子菜单\n children: HeaderTopic[];\n // 描述\n intro: string;\n // key\n key: string;\n // 名称\n name: string;\n // 打开方式\n target: string;\n // 是否有权限打开\n auth: boolean;\n // 路径\n url: string;\n // 版本\n version: string;\n}\n\n@Component({\n selector: 'yz-header-application',\n template: `\n <!-- template start-->\n <ng-template #search>\n <div nz-row class=\"yz-application-list-search\">\n <nz-input-group [nzPrefix]=\"prefixTemplate\">\n <input\n type=\"text\"\n nz-input\n placeholder=\"{{ 'application.search' | i18n }}\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"onSearch()\"\n />\n <ng-template #prefixTemplate>\n <i nz-icon nzType=\"search\" nzTheme=\"outline\"></i>\n </ng-template>\n </nz-input-group>\n </div>\n </ng-template>\n <ng-template #ld>\n <div class=\"yz-application-list\">\n <ul>\n <li *ngFor=\"let d of listData\">\n <h5>{{ d.name }}</h5>\n <a href=\"javascript:;\" *ngFor=\"let cd of d.children\" (click)=\"open(cd)\">{{ cd.name }}</a>\n </li>\n </ul>\n </div>\n </ng-template>\n <!-- template end-->\n\n <!-- button start-->\n <div class=\"yunzai-default__nav-item\" (click)=\"diffChange()\"> {{ 'application.button' | i18n }}</div>\n <!-- button end-->\n\n <!-- header start-->\n <div class=\"yz-application\" nz-row *ngIf=\"active\">\n <div nz-col [nzSpan]=\"3\" class=\"yz-application-topic\">\n <div class=\"yz-application-text\" (click)=\"full()\">{{ 'application.all' | i18n }}</div>\n <div class=\"yz-application-text\" (click)=\"own()\">{{ 'application.mine' | i18n }}</div>\n <div class=\"yz-application-text\" *ngFor=\"let d of topicData\" (click)=\"every(d)\">\n {{ d.name }}\n </div>\n </div>\n <div nz-col [nzSpan]=\"21\" [ngSwitch]=\"topic\" class=\"yz-application-container\">\n <div *ngSwitchCase=\"T.FULL\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"ld\"></ng-template>\n </div>\n <div *ngSwitchCase=\"T.OWN\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"ld\"></ng-template>\n </div>\n <div *ngSwitchCase=\"T.EVERY\" class=\"yz-application-list\">\n <div class=\"yz-application-list-item\">\n <ul>\n <li *ngFor=\"let d of listData\" (click)=\"open(d)\">\n <a href=\"javascript:;\">\n <h4>{{ d.name }}</h4>\n <p>{{ d.intro }}</p>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <!-- header end-->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderApplicationComponent implements OnInit, OnDestroy {\n T = TOPIC;\n active: boolean = false;\n topicData: HeaderTopic[] = [];\n listData: HeaderTopic[] = [];\n topic: TOPIC = TOPIC.FULL;\n choosed: HeaderTopic | undefined;\n searchValue: string | null = null;\n subs: Subscription[] = [];\n\n constructor(\n private inject: Injector,\n private cacheService: CacheService,\n private i18n: YzI18NService,\n private http: _HttpClient\n ) {}\n\n ngOnInit(): void {\n this.topicData = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(f => f.unsubscribe());\n }\n\n diffChange(flag?: boolean) {\n if (flag) {\n this.active = flag;\n } else {\n this.active = !this.active;\n }\n }\n\n initTopic(topic: TOPIC) {\n this.searchValue = null;\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n this.topic = topic;\n }\n\n full() {\n this.initTopic(TOPIC.FULL);\n }\n\n own() {\n this.initTopic(TOPIC.OWN);\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = temp\n .filter((topic: HeaderTopic) => {\n topic.children = topic.children.filter((child: HeaderTopic) => {\n return child.auth;\n });\n return topic;\n })\n .filter((topic: HeaderTopic) => {\n return topic.children.length > 0;\n });\n }\n\n every(e: HeaderTopic) {\n this.initTopic(TOPIC.EVERY);\n this.choosed = e;\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = [...temp.filter(t => t.key === e.key)[0].children];\n }\n\n onSearch() {\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n // 如果搜索输入的有值\n if (this.searchValue) {\n // 过滤菜单过滤出搜索的值\n this.listData = temp\n .filter((topic: HeaderTopic) => {\n if (this.i18n.fanyi(topic.name).includes(this.searchValue!)) {\n return topic;\n } else {\n topic.children = topic.children.filter((child: HeaderTopic) => {\n return this.i18n.fanyi(child.name).includes(this.searchValue!);\n });\n return topic;\n }\n })\n .filter((topic: HeaderTopic) => {\n return topic.children.length > 0;\n });\n } else {\n // 如果没有值,取消搜索\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n }\n }\n\n open(topic: HeaderTopic) {\n if (topic.key) {\n this.subs.push(\n this.http\n .post(`/app-manager/web-scan/save`, {\n appId: topic.key,\n createDate: new Date()\n })\n .subscribe()\n );\n }\n switch (topic.target) {\n case 'href':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n case 'blank':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n case 'target':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n default:\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\n\nimport { YUNZAI_I18N_TOKEN, SettingsService } from '@yelon/theme';\nimport { BooleanInput, InputBoolean } from '@yelon/util/decorator';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\n@Component({\n selector: 'yz-header-i18n',\n template: `\n <div *ngIf=\"showLangText\" nz-dropdown [nzDropdownMenu]=\"langMenu\" nzPlacement=\"bottomRight\">\n <i nz-icon nzType=\"global\"></i>\n {{ 'menu.lang' | i18n }}\n <i nz-icon nzType=\"down\"></i>\n </div>\n <i\n *ngIf=\"!showLangText\"\n nz-dropdown\n [nzDropdownMenu]=\"langMenu\"\n nzPlacement=\"bottomRight\"\n nz-icon\n nzType=\"global\"\n ></i>\n <nz-dropdown-menu #langMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li\n nz-menu-item\n *ngFor=\"let item of langs\"\n [nzSelected]=\"item.code === curLangCode\"\n (click)=\"change(item.code)\"\n >\n <span role=\"img\" [attr.aria-label]=\"item.text\" class=\"pr-xs\">{{ item.abbr }}</span>\n {{ item.text }}\n </li>\n </ul>\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderI18NComponent {\n static ngAcceptInputType_showLangText: BooleanInput;\n /** Whether to display language text */\n @Input() @InputBoolean() showLangText = true;\n\n get langs(): Array<{ code: string; text: string; abbr: string }> {\n return this.i18n.getLangs();\n }\n\n get curLangCode(): string {\n return this.settings.layout.lang;\n }\n\n constructor(\n private settings: SettingsService,\n @Inject(YUNZAI_I18N_TOKEN) private i18n: YzI18NService,\n @Inject(DOCUMENT) private doc: any\n ) {}\n\n change(lang: string): void {\n const spinEl = this.doc.createElement('div');\n spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);\n spinEl.innerHTML = `<span class=\"ant-spin-dot ant-spin-dot-spin\"><i></i><i></i><i></i><i></i></span>`;\n this.doc.body.appendChild(spinEl);\n\n this.i18n.loadLangData(lang).subscribe(res => {\n this.i18n.use(lang, res);\n this.settings.setLayout('lang', lang);\n setTimeout(() => this.doc.location.reload());\n });\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { forkJoin, Observable, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { formatDistanceToNow } from 'date-fns';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzI18nService } from 'ng-zorro-antd/i18n';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\nimport { NoticeIconSelect, NoticeItem } from '@yelon/abc/notice-icon';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\nimport { log } from '@yelon/util/other';\n\n@Component({\n selector: 'yz-header-notify',\n template: `\n <notice-icon\n [data]=\"data\"\n [count]=\"count\"\n [loading]=\"loading\"\n btnClass=\"yunzai-default__nav-item\"\n btnIconClass=\"yunzai-default__nav-item-icon\"\n (select)=\"select($event)\"\n (clear)=\"clear($event)\"\n ></notice-icon>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderNotifyComponent implements OnInit, OnDestroy {\n data: NoticeItem[] = [\n {\n key: 'msg',\n title: '消息',\n list: [],\n emptyText: '您已读完所有消息',\n emptyImage: './assets/tmp/img/message.svg',\n clearText: '清空消息'\n },\n {\n key: 'todo',\n title: '待办',\n list: [],\n emptyText: '你已完成所有待办',\n emptyImage: './assets/tmp/img/todo.svg',\n clearText: '重新加载'\n },\n {\n key: 'notice',\n title: '通知',\n list: [],\n emptyText: '你已查看所有通知',\n emptyImage: './assets/tmp/img/notice.svg',\n clearText: '重新加载'\n }\n ];\n loading = false;\n count = 0;\n subs: Subscription[] = [];\n\n constructor(\n private injector: Injector,\n private msg: NzMessageService,\n private nzI18n: NzI18nService,\n private cdr: ChangeDetectorRef,\n private httpClient: _HttpClient\n ) {}\n\n ngOnInit(): void {\n this.loadData();\n }\n\n loadData(): void {\n this.count = 0;\n this.loading = true;\n this.subs.push(\n forkJoin(this.loadTodo(), this.loadMessage()).subscribe(() => {\n this.loading = false;\n this.cdr.detectChanges();\n })\n );\n }\n\n loadMessage(): Observable<void> {\n log('notify.component: ', 'fetch message list');\n const formatMessageStatus = (status: string): NzSafeAny => {\n switch (status) {\n case '0':\n return { extra: '未读', color: 'red' };\n case '1':\n return { extra: '已读', color: 'green' };\n default:\n return { extra: '无状态', color: 'primary' };\n }\n };\n return this.httpClient\n .post(`/message-center-3/my-msg-and-todo/msg-list`, {\n pageNum: 1,\n pageSize: 10,\n status: '0'\n })\n .pipe(\n map((response: NzSafeAny) => {\n const viewMessage = this.data.filter(d => d.key === 'msg')[0];\n viewMessage.list = response.data.list.map((m: NzSafeAny) => {\n return {\n ...m,\n avatar: m?.imgUrl || './assets/tmp/img/message.png',\n title: m.systemName,\n description: m.content,\n extra: formatMessageStatus(m.status).extra,\n color: formatMessageStatus(m.status).color,\n datetime: formatDistanceToNow(new Date(m.date), { locale: this.nzI18n.getDateLocale() })\n };\n });\n this.count += viewMessage.list.length;\n })\n );\n }\n\n loadTodo(): Observable<void> {\n log('notify.component: ', 'fetch todo list');\n const formatTodoStatus = (status: string): NzSafeAny => {\n switch (status) {\n case '0':\n return { extra: '未开始', color: 'red' };\n case '1':\n return { extra: '已开始', color: 'green' };\n default:\n return { extra: '无状态', color: 'primary' };\n }\n };\n return this.httpClient\n .post(`/message-center-3/my-msg-and-todo/todo-list`, {\n pageNum: 1,\n pageSize: 10,\n status: '0'\n })\n .pipe(\n map((response: NzSafeAny) => {\n const viewTodo = this.data.filter(d => d.key === 'todo')[0];\n viewTodo.list = response.data.list.map((t: NzSafeAny) => {\n return {\n ...t,\n avatar: t?.imgUrl || './assets/tmp/img/todo.png',\n title: t.systemName,\n description: t.content,\n datetime: formatDistanceToNow(new Date(t.date), { locale: this.nzI18n.getDateLocale() }),\n extra: formatTodoStatus(t.status).extra,\n color: formatTodoStatus(t.status).color\n };\n });\n this.count += viewTodo.list.length;\n })\n );\n }\n\n clear(type: string): void {\n const t = this.data.filter(d => d.title === type)[0];\n if (t.key == 'msg' || t.key == 'notice') {\n this.subs.push(\n this.httpClient.post(`/message-center-3/my-msg-and-todo/msg-clear`, {}).subscribe(_ => {\n this.msg.success(`清空了 ${type}`);\n this.loadData();\n })\n );\n }\n if (t.key == 'todo') {\n this.loadData();\n }\n }\n\n select(res: NoticeIconSelect): void {\n this.injector.get(WINDOW).open(res.item.url);\n this.loadData();\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(a => a.unsubscribe());\n }\n}\n","import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n Inject,\n Optional\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ThemeBtnType, YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';\nimport { YunzaiConfigService } from '@yelon/util/config';\n\nexport interface YzThemeBtnType extends ThemeBtnType {\n color?: string;\n}\n\n@Component({\n selector: 'yz-header-theme-btn',\n template: `\n <div\n class=\"yunzai-default__nav-item\"\n nz-dropdown\n [nzDropdownMenu]=\"iconMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n >\n <svg nz-tooltip class=\"anticon\" role=\"img\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"currentColor\">\n <g fill-rule=\"evenodd\">\n <g fill-rule=\"nonzero\">\n <path\n d=\"M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z\"\n ></path>\n </g>\n </g>\n </svg>\n </div>\n <nz-dropdown-menu #iconMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li\n nz-menu-item\n *ngFor=\"let theme of types\"\n (click)=\"onThemeChange(theme.key)\"\n [style]=\"{ color: theme.color }\"\n >\n <i nz-icon nzType=\"bg-colors\"></i>\n {{ theme.text | i18n }}\n </li>\n </ul>\n <!-- <div nz-menu class=\"wd-xl animated jello\">-->\n <!-- <div nz-row [nzJustify]=\"'space-between'\" [nzAlign]=\"'middle'\" class=\"app-icons\">-->\n <!-- <div nz-col [nzSpan]=\"4\" *ngFor=\"let theme of types\" (click)=\"onThemeChange(theme.key)\">-->\n <!-- <i nz-icon nzType=\"bg-colors\" class=\"text-white\" [style]=\"{ backgroundColor: theme.color }\"></i>-->\n <!-- <span [ngStyle]=\"{ color: theme.color }\">{{ theme.text | i18n }}</span>-->\n <!-- </div>-->\n <!-- </div>-->\n <!-- </div>-->\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderThemBtnComponent implements OnInit, OnDestroy {\n private theme = 'default';\n @Input() types: YzThemeBtnType[] = [\n { key: 'default', text: 'theme.default', color: '#2163ff' },\n { key: 'compact', text: 'theme.compact', color: '#2163ff' },\n { key: 'dark', text: 'theme.dark', color: '#020202' },\n { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },\n { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },\n { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },\n { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },\n { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },\n { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },\n { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },\n { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },\n { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }\n ];\n @Input() devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;\n @Input() deployUrl = '';\n private destroy$ = new Subject<void>();\n dir: Direction = 'ltr';\n\n constructor(\n private renderer: Renderer2,\n private configSrv: YunzaiConfigService,\n private platform: Platform,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n @Optional() private directionality: Directionality,\n @Inject(YUNZAI_THEME_BTN_KEYS) private KEYS: string\n ) {}\n\n ngOnInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n this.initTheme();\n }\n\n private initTheme(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.theme = localStorage.getItem(this.KEYS) || 'default';\n this.updateChartTheme();\n this.onThemeChange(this.theme);\n }\n\n private updateChartTheme(): void {\n this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });\n }\n\n onThemeChange(theme: string): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.theme = theme;\n this.renderer.setAttribute(this.doc.body, 'data-theme', theme);\n const dom = this.doc.getElementById(this.KEYS);\n if (dom) {\n dom.remove();\n }\n localStorage.removeItem(this.KEYS);\n if (theme !== 'default') {\n const el = this.doc.createElement('link');\n el.type = 'text/css';\n el.rel = 'stylesheet';\n el.id = this.KEYS;\n el.href = `${this.deployUrl}assets/style.${theme}.css`;\n\n localStorage.setItem(this.KEYS, theme);\n this.doc.body.append(el);\n }\n this.updateChartTheme();\n }\n\n ngOnDestroy(): void {\n const el = this.doc.getElementById(this.KEYS);\n if (el != null) {\n this.doc.body.removeChild(el);\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\n\nexport const BUSINESS_DEFAULT_CONFIG: YunzaiBusinessConfig = {\n baseUrl: '/backstage',\n systemCode: 'portal',\n loginForm: null,\n refreshTokenEnabled: true,\n refreshTokenType: 're-request'\n};\n\nexport function mergeBisConfig(srv: YunzaiConfigService): YunzaiBusinessConfig {\n return srv.merge('bis', BUSINESS_DEFAULT_CONFIG)!;\n}\n","import { ChangeDetectionStrategy, Component, Inject, Injector, OnInit } from '@angular/core';\n\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\nimport { YA_SERVICE_TOKEN, ITokenService } from '@yelon/auth';\nimport { CacheService } from '@yelon/cache';\nimport { WINDOW, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\n\nimport { mergeBisConfig } from '../bis.config';\n\nexport interface UserLink {\n icon: string;\n name: string;\n url: string;\n}\n\n@Component({\n selector: 'yz-header-user',\n template: `\n <div\n class=\"yunzai-default__nav-item d-flex align-items-center px-sm\"\n nz-dropdown\n nzPlacement=\"bottomRight\"\n [nzDropdownMenu]=\"userMenu\"\n >\n <nz-avatar [nzSrc]=\"icon\" nzSize=\"small\" class=\"mr-sm\"></nz-avatar>\n {{ username }}\n </div>\n <nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div nz-menu class=\"width-sm\">\n <div nz-menu-item *ngFor=\"let m of menus\" (click)=\"to(m.url)\">\n <i nz-icon [nzType]=\"m.icon\" class=\"mr-sm\"></i>\n {{ m.name | i18n }}\n </div>\n <li nz-menu-divider></li>\n <div nz-menu-item (click)=\"logout()\">\n <i nz-icon nzType=\"logout\" class=\"mr-sm\"></i>\n {{ 'menu.account.logout' | i18n }}\n </div>\n </div>\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderUserComponent implements OnInit {\n private config: YunzaiBusinessConfig;\n\n constructor(\n private injector: Injector,\n private msg: NzMessageService,\n @Inject(YA_SERVICE_TOKEN) private tokenService: ITokenService,\n // @ts-ignore\n private configService: YunzaiConfigService,\n private cacheService: CacheService\n ) {\n this.config = mergeBisConfig(configService);\n }\n\n icon: string = '';\n username: string = '';\n menus: UserLink[] = [];\n\n ngOnInit(): void {\n const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });\n const user = this.cacheService.get('_yz_user', { mode: 'none' });\n this.username = user.realname ? user.realname : '未命名';\n this.icon = user.avatarId\n ? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`\n : `./assets/tmp/img/avatar.jpg`;\n this.menus = projectInfo.profileList;\n }\n\n logout(): void {\n localStorage.clear();\n this.tokenService.clear();\n this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;\n }\n\n to(href: string): void {\n if (href) {\n this.injector.get(WINDOW).open(href);\n } else {\n this.msg.error('该菜单没有配置链接!');\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';\n\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { NzModalService } from 'ng-zorro-antd/modal';\n\n@Component({\n selector: 'yz-header-clear-storage',\n template: `\n <i nz-icon nzType=\"tool\"></i>\n {{ 'menu.clear.local.storage' | i18n }}\n `,\n host: {\n '[class.d-block]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderClearStorageComponent {\n constructor(private modalSrv: NzModalService, private messageSrv: NzMessageService) {}\n\n @HostListener('click')\n _click(): void {\n this.modalSrv.confirm({\n nzTitle: 'Make sure clear all local storage?',\n nzOnOk: () => {\n localStorage.clear();\n this.messageSrv.success('Clear Finished!');\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';\n\nimport * as screenfull from 'screenfull';\n\n@Component({\n selector: 'yz-header-fullscreen',\n template: `\n <i nz-icon [nzType]=\"status ? 'fullscreen-exit' : 'fullscreen'\"></i>\n {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}\n `,\n host: {\n '[class.d-block]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderFullScreenComponent {\n status = false;\n private get sf(): screenfull.Screenfull {\n return screenfull as screenfull.Screenfull;\n }\n\n @HostListener('window:resize')\n _resize(): void {\n this.status = this.sf.isFullscreen;\n }\n\n @HostListener('click')\n _click(): void {\n if (this.sf.isEnabled) {\n this.sf.toggle();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTreeNodeOptions } from 'ng-zorro-antd/tree';\n\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\n\nexport interface BaseUserParam {\n realName?: string;\n userCode?: string;\n deptId?: string;\n roleId?: string;\n friendGroupId?: string;\n userTypes?: string;\n buildId?: string;\n floor?: string;\n roomId?: string;\n // FIXME: fix that use personType or peopleType or anything type\n rylb?: string;\n}\n\nexport interface Page<T> {\n pageNum: number;\n pageSize: number;\n pageParam?: T;\n}\n\nexport interface PageRes<T> {\n endRow: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n isFirstPage: boolean;\n isLastPage: boolean;\n list: T[];\n navigateFirstPage: number;\n navigateLastPage: number;\n navigatePages: number;\n navigatepageNums: number[];\n nextPage: number;\n pageNum: number;\n pageSize: number;\n pages: number;\n prePage: number;\n size: number;\n startRow: number;\n total: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContactService {\n constructor(private http: _HttpClient, private cache: CacheService) {}\n\n // TIPS: How to write an override function in typescript\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @returns 可观察部门树\n */\n dept(clas: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean, grade: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @param gradeID 系部ID\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean, grade: boolean, gradeID: string): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @param gradeID 系部ID\n * @returns 可观察部门树\n */\n dept(clas?: boolean, his?: boolean, grade?: boolean, gradeID?: string): Observable<NzTreeNodeOptions[]> {\n let baseUrl = `/auth/baseDepartMent/tree?debug=false`;\n\n if (clas) {\n baseUrl += `&includeClass=true`;\n } else {\n baseUrl += `&includeClass=false`;\n }\n\n if (his) {\n baseUrl += `&includeHisClass=true`;\n } else {\n baseUrl += `&includeHisClass=false`;\n }\n\n if (grade) {\n baseUrl += `&deptTypes=2,class`;\n }\n\n if (gradeID) {\n baseUrl += `&gradeId=${gradeID}`;\n }\n\n return this.http.get(baseUrl).pipe(\n map((response: NzSafeAny) => {\n return response.data || [];\n })\n );\n }\n\n page<U, T>(uri: string, page: Page<U>): Observable<PageRes<T>> {\n return this.http.post(`${uri}/queryListForPage`, page);\n }\n\n pageBaseUser(page: Page<BaseUserParam>): Observable<PageRes<NzSafeAny>> {\n return this.page<BaseUserParam, NzSafeAny>('/auth/baseUser', page);\n }\n\n getUserByIds(ids: string[]): Observable<any[]> {\n return this.http\n .post('/auth/baseUser/users', {\n userIds: ids\n })\n .pipe((response: NzSafeAny) => {\n return response.data || [];\n });\n }\n\n /**\n * 查询人员信息\n *\n * @param userIds[] 用户id数组,[\"aaa\",\"bbb\",\"ccc\"]\n */\n getUserByUserIds(userIds: any): Observable<any[]> {\n return this.http\n .post(`/auth/baseUser/users`, {\n userIds: userIds\n })\n .pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 获取角色组角色\n *\n * @param roleGroupCode 角色组code\n */\n getGroupRole(roleGroupCode: string): Observable<NzTreeNodeOptions[]> {\n return this.http\n .post(`/auth/baseRole/findGroupRole`, {\n roleGroupCode: roleGroupCode\n })\n .pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询当前用户好友分组\n */\n getFriendGroup(): Observable<any[]> {\n return this.http.post(`/contact/appcontact/findGroup`, {}).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询年级\n */\n getGrade(): Observable<any[]> {\n return this.http.get(`/auth/gradeYear/queryListForPage`).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询人员类别列表\n */\n getRylbs(): Observable<any[]> {\n return this.http.post(`/auth/baseTeacher/queryRylbs`, {}).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 获取学生公寓树\n *\n * @param isPower 是否带有权限,默认false\n * @param treeType 树类型 0:宿舍楼 1:宿舍楼+层 2:宿舍楼+层+房间\n */\n getDormTree(isPower: boolean, treeType: number): Observable<any[]> {\n const user = this.cache.get('_yz_user', { mode: 'none' });\n let params = {};\n if (isPower) {\n params = {\n isPower: isPower,\n userId: user.userId,\n treeType: treeType\n };\n } else {\n params = {\n isPower: isPower,\n treeType: treeType\n };\n }\n\n return this.http.post(`/auth/dorm/tree`, params).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Optional,\n ViewChild,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTreeNodeOptions, NzFormatEmitEvent } from 'ng-zorro-antd/tree';\n\nimport { STComponent } from '@yelon/abc/st';\n\nimport { ContactService } from './contact.service';\n\n@Component({\n selector: 'contact',\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.less']\n})\nexport class ContactComponent implements OnInit, OnDestroy, AfterViewInit {\n subs: Subscription[] = [];\n\n /**\n * tabset\n */\n @Optional() @Input() nzTabsetSearch: string | null = null;\n @Optional() @Input() nzTabsetLoading: boolean = false;\n\n /**\n * 树展开状态\n */\n @Optional() @Input() nzExpandAll: boolean = true;\n\n /**\n * 部门树和部门查询的一些选项/可传可不传\n */\n @Optional() @Input() nzDepts: NzTreeNodeOptions[] = [];\n private _nzDeptsCopy: NzTreeNodeOptions[] = [];\n @Optional() @Input() nzDeptTreeVirtualHeight: string | null = null;\n @Optional() @Input() nzDeptClass: boolean = true;\n @Optional() @Input() nzDeptClassHistory: boolean = true;\n @Optional() @Input() nzDeptGrade: boolean = false;\n @Optional() @Input() nzDeptGradeID: string;\n\n /**\n * 角色树\n */\n @Optional() @Input() nzRoles: NzTreeNodeOptions[] = [];\n private _nzRolesCopy: NzTreeNodeOptions[] = [];\n @Optional() @Input() nzRoleTreeVirtualHeight: string | null = null;\n\n /**\n * 好友分组\n */\n @Optional() @Input() nzFriendGroups: NzSafeAny[] = [];\n _nzFriendGroupsCopy: NzSafeAny[] = [];\n\n /**\n * table组件,帮助文档: https://ng.yunzainfo.com/components/st/zh?#API\n */\n @ViewChild('st', { static: false }) st: STComponent;\n\n /**\n * 联系人\n */\n @Optional() @Input() defaultContacts: string[] = [];\n @Optional() @Input() nzContacts: NzSafeAny[] = [];\n @Optional() @Input() nzContactLoading: boolean = false;\n\n /**\n * 提交和提交按钮\n */\n @Optional() @Input() button: boolean = true;\n @Output() readonly confirmed: EventEmitter<NzSafeAny[]> = new EventEmitter();\n\n constructor(private contact: ContactService, private changeDetectorRef: ChangeDetectorRef) {}\n\n /**\n * 初始化,首先加载部门树和默认选中的人的数据\n */\n ngOnInit(): void {\n this.onTabsetDept();\n this.onContactsInit();\n }\n\n /**\n * 视图初始化完毕后进行table初始化\n */\n ngAfterViewInit(): void {\n this.onTableInit();\n }\n\n /**\n * 初始化默认选中联系人\n */\n onContactsInit(): void {\n if (this.defaultContacts && this.defaultContacts.length > 0) {\n this.nzContactLoading = true;\n this.subs.push(\n this.contact.getUserByUserIds(this.defaultContacts).subscribe(contacts => {\n this.nzContacts = contacts;\n this.nzContactLoading = false;\n this.refresh();\n })\n );\n }\n }\n\n /**\n * table初始化\n */\n onTableInit(): void {\n // 设置表头\n this.st.resetColumns({\n columns: [\n { title: '选择', type: 'checkbox' },\n { title: '序号', type: 'no' },\n { title: '姓名', index: 'realName' },\n { title: '学号/工号', index: 'userCode' },\n { title: '部门', index: 'dept.deptName' }\n ]\n });\n // 订阅table点击checkbox事件变化\n this.subs.push(\n this.st.change.subscribe(e => {\n if (e.type === 'checkbox') {\n // 点击checkbox新增联系人\n const contactIds = this.nzContacts.map(c => c.userId);\n this.nzContacts = this.nzContacts.concat(e.checkbox!.filter(c => !contactIds.includes(c.userId)));\n // 取消checkbox取消联系人\n const cancelIds = this.st.list.filter(d => !d.checked).map(d => d.userId);\n this.nzContacts = this.nzContacts.filter(d => !cancelIds.includes(d.userId));\n }\n })\n );\n }\n\n /**\n * tabset进入加载状态\n */\n onTabsetLoadStart(): void {\n this.nzTabsetLoading = true;\n }\n\n /**\n * tabset取消加载状态\n */\n onTabsetLoadEnd(): void {\n this.nzTabsetLoading = false;\n }\n\n /**\n * tabset搜索框清除\n */\n onTabsetSearchClean(): void {\n this.nzDepts = this._nzDeptsCopy;\n this.nzRoles = this._nzRolesCopy;\n this.nzFriendGroups = this._nzFriendGroupsCopy;\n this.nzTabsetSearch = null;\n }\n\n /**\n * tabset搜索框输入\n *\n * @param type 类型\n * @param value 值\n */\n onTabsetSearchChange(type: 'dept' | 'role' | 'friendGroup', value: string): void {\n this.onTabsetLoadStart();\n if (!value || value === '') {\n this.nzDepts = this._nzDeptsCopy;\n this.nzRoles = this._nzRolesCopy;\n this.nzFriendGroups = this._nzFriendGroupsCopy;\n } else {\n const trees: NzTreeNodeOptions[] = [];\n if (type === 'dept') {\n this.searchTree(value, this._nzDeptsCopy, trees);\n this.nzDepts = trees;\n }\n if (type === 'role') {\n this.searchTree(value, this._nzRolesCopy, trees);\n this.nzRoles = trees;\n }\n if (type === 'friendGroup') {\n this.nzFriendGroups = this._nzFriendGroupsCopy.filter(f => {\n return !f.name.indexOf(value);\n });\n }\n }\n this.onTabsetLoadEnd();\n this.refresh();\n }\n\n /**\n * tabset切换到部门\n */\n onTabsetDept(): void {\n this.onTabsetSearchClean();\n if (!this.nzDepts || this.nzDepts.length === 0) {\n this.onTabsetDeptFlush();\n }\n }\n\n /**\n * tabset切换到角色\n */\n onTabsetRole(): void {\n this.onTabsetSearchClean();\n if (!this.nzRoles || this.nzRoles.length === 0) {\n this.onTabsetRoleFlush(null as NzSafeAny);\n }\n }\n\n /**\n * tabset切换到好友分组\n */\n onTabsetFriendGroup(): void {\n this.onTabsetSearchClean();\n if (!this.nzFriendGroups || this.nzFriendGroups.length === 0) {\n this.onTabsetFriendGroupFlush();\n }\n }\n\n /**\n * 获取部门树\n */\n onTabsetDeptFlush(): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact\n .dept(this.nzDeptClass, this.nzDeptClassHistory, this.nzDeptGrade, this.nzDeptGradeID)\n .subscribe((trees: NzTreeNodeOptions[]) => {\n this.expandTree(trees);\n this.nzDepts = trees;\n this._nzDeptsCopy = trees;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n // 获取角色树\n onTabsetRoleFlush(groupRoleCode: string): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact.getGroupRole(groupRoleCode).subscribe((roles: NzTreeNodeOptions[]) => {\n this.expandTree(roles);\n this.nzRoles = roles;\n this._nzRolesCopy = roles;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n // 获取好友分组列表\n onTabsetFriendGroupFlush(): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact.getFriendGroup().subscribe((group: NzSafeAny[]) => {\n this.nzFriendGroups = group;\n this._nzFriendGroupsCopy = group;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n /**\n * 部门树点击\n *\n * @param e 节点\n */\n onDeptClick(e: NzFormatEmitEvent): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n deptId: e.keys?.pop()\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 角色树点击\n *\n * @param e 节点\n */\n onRoleClick(e: NzFormatEmitEvent): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n roleId: e.keys?.pop()\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 好友分组点击\n *\n * @param e 分组\n */\n onFriendGroupClick(e: NzSafeAny): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n friendGroupId: e.id\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 点击右侧联系人进行删除\n *\n * @param c 点击的联系人\n */\n onContactRemove(c: NzSafeAny): void {\n this.nzContacts = this.nzContacts.filter(contact => {\n return contact.userId != c.userId;\n });\n this.st.reload();\n }\n\n /**\n * 预处理table当前页数据,和nzContat对比,确定checkbox状态\n *\n * @param data 预处理数据\n */\n onTableCheck(data: NzSafeAny[]): void {\n const ids = this.nzContacts.map(u => u.userId);\n data.forEach(d => {\n if (ids.includes(d.userId)) {\n d.checked = true;\n } else {\n d.checked = false;\n }\n });\n }\n\n /**\n * 递归树寻找name相同节点\n *\n * @param name 名称\n * @param trees 需要递归的树\n * @param list 搜索结果\n */\n searchTree(name: string, trees: NzTreeNodeOptions[], list: NzTreeNodeOptions[]): void {\n if (trees && trees.length && trees.length > 0) {\n trees.forEach((tree: NzTreeNodeOptions) => {\n if (tree.title.indexOf(name) != -1) {\n list.push(tree);\n }\n if (tree.children) {\n this.searchTree(name, tree.children, list);\n }\n });\n }\n }\n\n /**\n * 递归树展开所有有子节点的节点\n *\n * @param trees 需要展开的树\n */\n expandTree(trees: NzTreeNodeOptions[]): void {\n if (trees && trees.length && trees.length > 0) {\n trees.forEach(tree => {\n if (!tree.children || tree.children.length === 0) {\n tree.expanded = false;\n tree.isLeaf = true;\n }\n if (tree.children) {\n tree.expanded = this.nzExpandAll;\n tree.isLeaf = false;\n this.expandTree(tree.children);\n }\n });\n }\n }\n\n /**\n * 刷新当前页面\n */\n refresh(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * 确认按钮output数据\n */\n confirm(): void {\n this.confirmed.next(this.nzContacts);\n }\n\n /**\n * 销毁函数\n */\n ngOnDestroy(): void {\n this.nzDepts = [];\n this.nzRoles = [];\n this.nzContacts = [];\n this.subs.forEach(s => s.unsubscribe());\n }\n}\n","import { log, YunzaiConfigService, YunzaiStompConfig } from '@yelon/util';\n\nexport const STOMP_DEFAULT_CONFIG: YunzaiStompConfig = {\n connectHeaders: {\n login: 'guest',\n passcode: 'guest'\n },\n brokerURL: '/websocket/ws/',\n heartbeatIncoming: 1000 * 60,\n heartbeatOutgoing: 1000 * 60,\n reconnectDelay: 30000000,\n debug: msg => {\n log(msg);\n }\n};\n\nexport function mergeStompConfig(srv: YunzaiConfigService): YunzaiStompConfig {\n return srv.merge('stomp', STOMP_DEFAULT_CONFIG)!;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Injector, isDevMode } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { IRxStompPublishParams } from '@stomp/rx-stomp/esm6/i-rx-stomp-publish-params';\nimport { IMessage, StompHeaders } from '@stomp/stompjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nimport { CacheService } from '@yelon/cache';\nimport { log, WINDOW, YunzaiBusinessConfig, YunzaiConfigService, YunzaiStompConfig } from '@yelon/util';\n\nimport { mergeBisConfig } from './bis.config';\nimport { mergeStompConfig } from './stomp.config';\n\nexport interface StompMessage {\n title?: string;\n content?: string;\n href?: string;\n type?: string;\n}\n\nexport interface IconStompMessage extends StompMessage {\n icon?: string;\n}\n\nexport interface UserStompMessage extends StompMessage {\n useruri?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class YzStompService {\n config: YunzaiStompConfig;\n bisConfig: YunzaiBusinessConfig;\n rxStomp: RxStomp;\n user: NzSafeAny;\n subs: Subscription[] = [];\n\n constructor(\n private csr: YunzaiConfigService,\n private cache: CacheService,\n private injector: Injector,\n private notification: NzNotificationService\n ) {\n if (!this.user) {\n this.user = this.cache.get('_yz_user', { mode: 'none' });\n }\n if (!this.config) {\n this.config = mergeStompConfig(this.csr);\n }\n if (!this.bisConfig) {\n this.bisConfig = mergeBisConfig(csr);\n }\n if (!this.rxStomp) {\n this.rxStomp = new RxStomp();\n if (isDevMode()) {\n log('yz.stomp.service: is dev mode');\n log('yz.stomp.service: ', `config is ${JSON.stringify(this.config)}`);\n this.rxStomp.configure(this.config);\n return;\n }\n const { location } = this.injector.get(DOCUMENT);\n const { protocol, host } = location;\n log('yz.stomp.service: ', `protocol is ${protocol},host is ${host}`);\n if (protocol.includes('http') && !protocol.includes('https')) {\n this.config.brokerURL = `ws://${host}${this.config.brokerURL}`;\n }\n if (protocol.includes('https')) {\n this.config.brokerURL = `wss://${host}${this.config.brokerURL}`;\n }\n log('yz.stomp.service: ', `config is ${this.config}`);\n this.rxStomp.configure(this.config);\n }\n }\n\n listen(): void {\n this.subs.push(\n this.rxStomp.watch(`/topic/layout_${this.user.username}`).subscribe(message => {\n this.createNotification(JSON.parse(message.body));\n })\n );\n this.subs.push(\n this.rxStomp.watch(`/topic/layout_xx_${this.user.username}`).subscribe((message: any) => {\n this.logoutNotification(JSON.parse(message.body));\n })\n );\n this.rxStomp.activate();\n }\n\n createNotification(message: StompMessage): void {\n this.notification.create(message.type!, message.title!, `<a href=${message.href}>${message.content}</a>`);\n }\n\n logoutNotification(message: StompMessage): void {\n this.notification.create(message.type!, message.title!, `${message.content},剩余时间5秒`);\n setTimeout(() => {\n this.cache.clear();\n localStorage.clear();\n this.injector.get(WINDOW).location.href = `${this.bisConfig.baseUrl}/cas-proxy/app/logout`;\n }, 5000);\n }\n\n unListen(): void {\n this.subs.forEach(s => s.unsubscribe());\n this.rxStomp.deactivate().then();\n }\n\n publish(parameters: IRxStompPublishParams): void {\n this.rxStomp.publish(parameters);\n }\n\n watch(destination: string, headers?: StompHeaders): Observable<IMessage> {\n return this.rxStomp.watch(destination, headers);\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { CacheService } from '@yelon/cache';\nimport { LayoutDefaultOptions } from '@yelon/theme/layout-default';\n\nimport { YzStompService } from './yz.stomp.service';\n\n@Component({\n selector: 'yz-layout-basic',\n template: `\n <layout-default [options]=\"options\" [asideUser]=\"asideUserTpl\" [content]=\"contentTpl\">\n <layout-default-header-item direction=\"left\">\n <yz-header-application></yz-header-application>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <yz-header-notify></yz-header-notify>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <yz-header-theme-btn></yz-header-theme-btn>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <div\n layout-default-header-item-trigger\n nz-dropdown\n [nzDropdownMenu]=\"settingsMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n >\n <i nz-icon nzType=\"setting\"></i>\n </div>\n <nz-dropdown-menu #settingsMenu=\"nzDropdownMenu\">\n <div nz-menu style=\"width: 200px;\">\n <div nz-menu-item>\n <yz-header-fullscreen></yz-header-fullscreen>\n </div>\n <div nz-menu-item>\n <yz-header-clear-storage></yz-header-clear-storage>\n </div>\n <div nz-menu-item>\n <yz-header-i18n></yz-header-i18n>\n </div>\n </div>\n </nz-dropdown-menu>\n </layout-default-header-item>\n <layout-default-header-item direction=\"right\">\n <yz-header-user></yz-header-user>\n </layout-default-header-item>\n <ng-template #asideUserTpl>\n <div nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"userMenu\" class=\"yunzai-default__aside-user\">\n <nz-avatar class=\"yunzai-default__aside-user-avatar\" [nzSrc]=\"icon\"></nz-avatar>\n <div class=\"yunzai-default__aside-user-info\">\n <strong>{{ text }}</strong>\n <p class=\"mb0\">{{ intro }}</p>\n </div>\n </div>\n <nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li nz-menu-item routerLink=\"/\">{{ 'menu.backtohome' | i18n }}</li>\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n <ng-template #contentTpl>\n <reuse-tab #reuseTab></reuse-tab>\n <router-outlet (activate)=\"reuseTab.activate($event)\"></router-outlet>\n </ng-template>\n </layout-default>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzLayoutBasicComponent implements OnInit, OnDestroy {\n options: LayoutDefaultOptions = {\n logoExpanded: `./assets/logo-full.svg`,\n logoCollapsed: `./assets/logo.svg`\n };\n\n intro: string = '';\n text: string = '';\n icon: string = '';\n\n constructor(private cacheService: CacheService, private yzStompService: YzStompService) {}\n\n ngOnInit(): void {\n const current: NzSafeAny = this.cacheService.get('_yz_current', { mode: 'none' });\n const project: NzSafeAny = this.cacheService.get('_yz_project_info', { mode: 'none' });\n this.text = current.text ? current.text : '应用名称';\n this.intro = current.intro ? current.intro : '应用描述';\n this.icon = current.icon ? current.icon : `./assets/tmp/img/avatar.jpg`;\n this.options.logoExpanded = project.maxLogoUrl ? project.maxLogoUrl : `./assets/logo-full.svg`;\n this.options.logoCollapsed = project.miniLogoUrl ? project.miniLogoUrl : `./assets/logo.svg`;\n this.yzStompService.listen();\n }\n\n ngOnDestroy(): void {\n this.yzStompService.unListen();\n }\n}\n","/*\n * @Author: cui <devcui@outlook.com>\n * @Editor: microsoft vscode\n * @Date: 2021-11-27 11:30:50\n * @LastEditTime: 2021-11-27 14:38:46\n * @LastEditors: cui <devcui@outlook.com>\n * @Description: empty description\n * @FilePath: \\yelon\\packages\\bis\\layout\\layout.module.ts\n * LICENSE HERE\n */\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { YzSharedModule } from '@yelon/bis/shared';\nimport { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';\n\nimport { ContactComponent } from './contact/contact.component';\nimport {\n YzHeaderApplicationComponent,\n YzHeaderNotifyComponent,\n YzHeaderThemBtnComponent,\n YzHeaderUserComponent,\n YzHeaderClearStorageComponent,\n YzHeaderFullScreenComponent,\n YzHeaderI18NComponent\n} from './widgets';\nimport { YzLayoutBasicComponent } from './yz.basic.component';\nconst COMPONENTS = [\n ContactComponent,\n YzLayoutBasicComponent,\n YzHeaderApplicationComponent,\n YzHeaderNotifyComponent,\n YzHeaderThemBtnComponent,\n YzHeaderUserComponent,\n YzHeaderFullScreenComponent,\n YzHeaderClearStorageComponent,\n YzHeaderI18NComponent\n];\n\n@NgModule({\n imports: [HttpClientModule, CommonModule, FormsModule, RouterModule, ReactiveFormsModule, YzSharedModule],\n providers: [\n {\n provide: YUNZAI_THEME_BTN_KEYS,\n useValue: 'site-theme'\n }\n ],\n declarations: [...COMPONENTS],\n exports: [...COMPONENTS]\n})\nexport class YunzaiLayoutModule {}\n","import { Injectable, Injector } from '@angular/core';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { map, mergeAll, mergeMap } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { ITokenModel, ITokenService, mergeConfig as mergeAuthConfig, YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW, YunzaiAuthConfig, YunzaiBusinessConfig } from '@yelon/util';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { log } from '@yelon/util/other';\n\nimport { mergeBisConfig } from './bis.config';\n\n@Injectable({ providedIn: 'root' })\nexport class YzAuthService {\n protected option: YunzaiAuthConfig;\n protected bis: YunzaiBusinessConfig;\n\n constructor(private injector: Injector) {\n this.option = mergeAuthConfig(this.csr);\n this.bis = mergeBisConfig(this.csr);\n }\n\n private get csr(): YunzaiConfigService {\n return this.injector.get(YunzaiConfigService);\n }\n\n private get tokenService(): ITokenService {\n return this.injector.get(YA_SERVICE_TOKEN);\n }\n\n private get httpClient(): _HttpClient {\n return this.injector.get(_HttpClient);\n }\n\n private get cacheService(): CacheService {\n return this.injector.get(CacheService);\n }\n\n askToken(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'askToken');\n if (this.tokenService.get()?.token) {\n return of(this.tokenService.get()!);\n } else {\n if (this.bis.loginForm) {\n return this.fetchTokenByUP();\n } else {\n return this.fetchTokenByCas();\n }\n }\n }\n\n fetchTokenByUP(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'fetchTokenByUP');\n return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.bis.loginForm).pipe(\n map((response: NzSafeAny) => {\n const { access_token, expires_in, refresh_token, scope, token_type } = response;\n return {\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n };\n })\n );\n }\n\n fetchTokenByCas(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'fetchTokenByCas');\n const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);\n return this.httpClient\n .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)\n .pipe(\n map((response: NzSafeAny) => {\n switch (response.errcode) {\n case 2000:\n const { access_token, expires_in, refresh_token, scope, token_type } = response.data;\n return {\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n } as ITokenModel;\n case 2001:\n this.injector.get(WINDOW).location.href = response.msg;\n throw Error(\"Cookie Error: Can't find Cas Cookie,So jump to login!\");\n default:\n if (response.data) {\n console.error(response.data);\n throw Error(response.data);\n } else if (response.msg) {\n console.error(response.msg);\n throw Error(response.msg);\n } else {\n console.error('cas unknown error');\n throw Error('Unknown Error: Cas auth exception!');\n }\n }\n })\n );\n }\n\n login(): Observable<void> {\n log('yz.auth.service: ', 'login white login form->', this.bis.loginForm);\n return this.askToken().pipe(\n mergeMap(token => {\n log('yz.auth.service: get token->', token);\n this.csr.set('auth', {\n token_send_key: 'Authorization',\n token_send_template: `${token.tokenType} \\${token}`,\n token_send_place: 'header'\n });\n log('yz.auth.service: ', 'set token');\n this.tokenService.set(token);\n return this.cacheInit();\n }),\n mergeAll()\n );\n }\n\n cacheInit(): Observable<void[]> {\n log('yz.auth.service: ', 'cacheInit');\n const user = this.cacheService.get('_yz_user', { mode: 'none' });\n const header = this.cacheService.get('_yz_header', { mode: 'none' });\n const project = this.cacheService.get('_yz_project_info', { mode: 'none' });\n return forkJoin(of(user), of(header), of(project)).pipe(\n mergeMap(([u, h, p]) => {\n let list = [];\n // user cache\n if (!u) {\n log('yz.auth.service: ', 'fetch user cache');\n list.push(\n this.httpClient.get(`/auth/user`).pipe(\n map((user: NzSafeAny) => {\n this.cacheService.set('_yz_user', user.principal);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'user recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n // header cache\n if (!h) {\n log('yz.auth.service: ', 'fetch header cache');\n list.push(\n this.httpClient.get(`/auth/allheader/v2`).pipe(\n map((header: NzSafeAny) => {\n this.cacheService.set('_yz_header', header.data);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'header recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n // project cache\n if (!p) {\n log('yz.auth.service: ', 'fetch project cache');\n list.push(\n this.httpClient.get(`/app-manager/project/info`).pipe(\n map((info: NzSafeAny) => {\n this.cacheService.set('_yz_project_info', info.data);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'project recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n return forkJoin(list);\n })\n );\n }\n}\n","import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpHeaders,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n HttpResponseBase\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\nimport { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators';\n\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nimport { YA_SERVICE_TOKEN, ITokenService } from '@yelon/auth';\nimport { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\nimport { YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util/config';\nimport { log } from '@yelon/util/other';\n\nimport { mergeBisConfig } from './bis.config';\n\nconst CODEMESSAGE: { [key: number]: string } = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\n/**\n * 默认HTTP拦截器,其注册细节见 `app.module.ts`\n */\n@Injectable()\nexport class YzDefaultInterceptor implements HttpInterceptor {\n private jump = false;\n private refreshToking = false;\n private refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n private get notification(): NzNotificationService {\n return this.injector.get(NzNotificationService);\n }\n\n private get tokenSrv(): ITokenService {\n return this.injector.get(YA_SERVICE_TOKEN);\n }\n\n private get http(): _HttpClient {\n return this.injector.get(_HttpClient);\n }\n\n private get config(): YunzaiBusinessConfig {\n return mergeBisConfig(this.injector.get(YunzaiConfigService));\n }\n\n private goTo(url: string): void {\n setTimeout(() => this.injector.get(Router).navigateByUrl(url));\n }\n\n constructor(private injector: Injector) {\n if (this.config.refreshTokenType === 'auth-refresh') {\n console.error(\"can't use auth-refresh, please change yz.default.interceptor to default.interceptor!\");\n }\n }\n\n private checkStatus(ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n\n if (ev instanceof HttpErrorResponse && (ev.error.message || ev.error.errorMessage)) {\n if (ev.error.errorMessage) {\n this.notification.error(`发生了一些错误 `, ev.error.errorMessage);\n } else {\n this.notification.error(`发生了一些错误 `, ev.error.message);\n }\n return;\n }\n\n if (ev instanceof HttpResponse && ev.body.errorMessage) {\n this.notification.error(`发生了一些错误 `, ev.body.errorMessage);\n return;\n }\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n this.notification.error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n }\n\n private ToLogin() {\n this.notification.error(`未登录或登录状态已过期,5秒后将跳转到登录页面。`, ``);\n setTimeout(() => {\n localStorage.clear();\n this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;\n }, 5000);\n }\n\n private reAttachToken(req: HttpRequest<any>): HttpRequest<any> {\n const token = this.tokenSrv.get()?.token;\n return req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n private refreshTokenRequest(): Observable<any> {\n const model = this.tokenSrv.get();\n const form = new FormData();\n form.set('refresh_token', model?.refreshToken);\n log('yz.default.interceptor: use the refresh token to request a new token', model?.refreshToken);\n return this.http.post(`/auth/user/token/refresh?_allow_anonymous=true`, form);\n }\n\n private tryRefreshToken(ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n // 连刷新Token的请求都错了,那就是真错了\n if (['/auth/oauth/token'].some(url => req.url.includes(url))) {\n this.ToLogin();\n return throwError(ev);\n }\n\n // 正在刷新token,所有其他请求排队\n if (this.refreshToking) {\n return this.refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next.handle(this.reAttachToken(req)))\n );\n }\n\n //尝试调用刷新 Token\n this.refreshToking = true;\n this.refreshToken$.next(null);\n\n // 处理Token\n return this.refreshTokenRequest().pipe(\n switchMap(res => {\n log('yz.default.interceptor: refresh token accessed -> ', res);\n // 重新保存新 token\n const { access_token, expires_in, refresh_token, scope, token_type } = res;\n this.tokenSrv.set({\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n });\n // 通知后续请求继续执行\n this.refreshToking = false;\n this.refreshToken$.next(res);\n // 重新发起请求\n return next.handle(this.reAttachToken(req));\n }),\n catchError(err => {\n this.refreshToking = false;\n this.ToLogin();\n return throwError(err);\n })\n );\n }\n\n private getAdditionalHeaders(headers?: HttpHeaders): { [name: string]: string } {\n const res: { [name: string]: string } = {};\n const lang = this.injector.get(YUNZAI_I18N_TOKEN).currentLang;\n if (!headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n return res;\n }\n\n private handleData(ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n this.checkStatus(ev);\n switch (ev.status) {\n case 200:\n return of(ev);\n case 401:\n if (this.config.refreshTokenEnabled && this.config.refreshTokenType === 're-request') {\n return this.tryRefreshToken(ev, req, next);\n }\n this.ToLogin();\n break;\n case 403:\n case 404:\n case 500:\n if (this.jump) {\n this.goTo(`/exception/${ev.status}`);\n }\n break;\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn(\n '未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题',\n ev\n );\n }\n break;\n }\n if (ev instanceof HttpErrorResponse) {\n return throwError(ev);\n } else {\n return of(ev);\n }\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n log('yz.default.interceptor.ts: ', 'request ', req);\n // 统一加前缀\n let url = req.url;\n if (!url.startsWith('https://') && !url.startsWith('http://')) {\n url = this.config.baseUrl + url;\n }\n if (url.includes('.json') && url.includes('assets')) {\n url = req.url;\n }\n // 加入语言头\n const newReq = req.clone({ url, setHeaders: this.getAdditionalHeaders(req.headers) });\n return next.handle(newReq).pipe(\n mergeMap(ev => {\n // 允许统一对请求错误处理\n if (ev instanceof HttpResponseBase) {\n return this.handleData(ev, newReq, next);\n }\n // 若一切都正常,则后续操作\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => this.handleData(err, newReq, next))\n );\n }\n}\n","import { APP_INITIALIZER, Inject, Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzIconService } from 'ng-zorro-antd/icon';\n\nimport { ACLService } from '@yelon/acl';\nimport { ICONS } from '@yelon/bis/shared';\nimport { CacheService } from '@yelon/cache';\nimport { Menu, MenuService, SettingsService, TitleService, User, YUNZAI_I18N_TOKEN } from '@yelon/theme';\nimport { deepCopy, log, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';\nimport { YzAuthService } from './yz.auth.service';\nimport { YzI18NService } from './yz.i18n.service';\n\nexport function mapYzSideToYelonMenu(menus: Menu[]) {\n menus.forEach(menu => {\n menu.badgeDot = menu.badge_dot || null;\n menu.badgeStatus = menu.badge_status || null;\n menu.shortcutRoot = menu.shortcut_root || null;\n menu.reuse = true;\n if (menu.children) {\n mapYzSideToYelonMenu(menu.children);\n }\n });\n}\n\nexport function generateAbility(menus: Menu[], abilities: string[], prefix: string): void {\n menus.forEach(menu => {\n if (menu.link) {\n prefix += menu.link;\n } else {\n prefix += '';\n }\n if (menu.menuAuths) {\n menu.menuAuths.forEach((a: string) => {\n abilities.push(`${prefix}:${a}`);\n abilities.push(a);\n });\n }\n\n if (menu.children) {\n generateAbility(menu.children, abilities, prefix);\n }\n });\n}\n\n@Injectable()\nexport class YzStartupService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n\n constructor(\n iconSrv: NzIconService,\n private menuService: MenuService,\n @Inject(YUNZAI_I18N_TOKEN) private i18n: YzI18NService,\n private settingService: SettingsService,\n private aclService: ACLService,\n private titleService: TitleService,\n private yzAuthService: YzAuthService,\n private cacheService: CacheService,\n private configService: YunzaiConfigService\n ) {\n this.bis = mergeBisConfig(this.configService);\n iconSrv.addIcon(...ICONS);\n }\n\n load(): Observable<void> {\n log('startup.service: ', 'load');\n const defaultLang = this.i18n.defaultLang;\n return this.i18n.loadLangData(defaultLang).pipe(\n mergeMap(langData => {\n log('startup.service: ', 'set i18n, defaultLang->', defaultLang, ' langData->', langData);\n this.i18n.use(defaultLang, langData);\n return of(null);\n }),\n mergeMap(() => {\n return this.yzAuthService.login();\n }),\n mergeMap(v => {\n // preloader finish\n this.systemInit();\n log('startup.service: preloader finish');\n const win = window as NzSafeAny;\n if (win && win.appBootstrap) {\n win.appBootstrap();\n }\n return of(v);\n })\n );\n }\n\n systemInit(): void {\n log('startup.service: system init');\n // user\n const user: User = this.cacheService.get('_yz_user', { mode: 'none' });\n // menu\n const ms = deepCopy(user.menu).filter((m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode) as Menu[];\n mapYzSideToYelonMenu(ms);\n const currentMenu = ms.pop()!;\n this.menuService.add([currentMenu]);\n\n // logo app\n this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });\n this.settingService.setUser({\n name: user.realname || 'no name',\n avatar: `${this.bis.baseUrl}/filecenter/file/${user.avatarId}` || '',\n email: user.email || 'no email'\n });\n\n // title\n this.titleService.default = currentMenu.text || 'default application name';\n this.titleService.setTitle(currentMenu.text || 'no title');\n\n // acl\n const abilities: string[] = [];\n generateAbility([currentMenu], abilities, '');\n this.aclService.attachRole(\n user?.roles\n .map((role: NzSafeAny) => {\n return role.roleValue;\n })\n .filter((a: NzSafeAny) => !!a) || []\n );\n this.aclService.attachAbility(abilities);\n\n // cache current\n this.cacheService.set('_yz_current', {\n text: currentMenu.text,\n intro: currentMenu.intro,\n icon: currentMenu.appIconUrl\n });\n }\n}\n\nexport function YzStartupServiceFactory(startupService: YzStartupService): () => Observable<void> {\n return () => startupService.load();\n}\n\n//@ts-ignore\nexport const YZ_APPINIT_PROVIDES = [\n YzStartupService,\n {\n provide: APP_INITIALIZER,\n useFactory: YzStartupServiceFactory,\n deps: [YzStartupService],\n multi: true\n }\n];\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PathToRegexpService {\n constructor() {}\n DEFAULT_DELIMITER = '/';\n\n PATH_REGEXP = new RegExp(\n ['(\\\\\\\\.)', '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'].join('|'),\n 'g'\n );\n\n parse(str: any, options: any) {\n const tokens = [];\n let key = 0;\n let index = 0;\n let path = '';\n const defaultDelimiter = (options && options.delimiter) || this.DEFAULT_DELIMITER;\n const whitelist = (options && options.whitelist) || undefined;\n let pathEscaped = false;\n let res;\n\n while ((res = this.PATH_REGEXP.exec(str)) !== null) {\n const m = res[0];\n const escaped = res[1];\n const offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue;\n }\n\n let prev = '';\n const name = res[2];\n const capture = res[3];\n const group = res[4];\n const modifier = res[5];\n\n if (!pathEscaped && path.length) {\n const k = path.length - 1;\n const c = path[k];\n const matches = whitelist ? whitelist.indexOf(c) > -1 : true;\n\n if (matches) {\n prev = c;\n path = path.slice(0, k);\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n\n const repeat = modifier === '+' || modifier === '*';\n const optional = modifier === '?' || modifier === '*';\n const pattern = capture || group;\n const delimiter = prev || defaultDelimiter;\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? this.escapeGroup(pattern)\n : `[^${this.escapeString(delimiter === defaultDelimiter ? delimiter : delimiter + defaultDelimiter)}]+?`\n });\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n\n return tokens;\n }\n compile(str: any, options: any) {\n return this.tokensToFunction(this.parse(str, options), options);\n }\n\n tokensToFunction(tokens: any, options: any) {\n const matches = new Array(tokens.length);\n\n for (let i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp(`^(?:${tokens[i].pattern})$`, this.flags(options));\n }\n }\n\n return function (data: any, options: any) {\n let path = '';\n const encode = (options && options.encode) || encodeURIComponent;\n const validate = options ? options.validate !== false : true;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n\n const value = data ? data[token.name] : undefined;\n let segment;\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError(`Expected \"${token.name}\" to not repeat, but got array`);\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue;\n }\n\n throw new TypeError(`Expected \"${token.name}\" to not be empty`);\n }\n\n for (let j = 0; j < value.length; j++) {\n segment = encode(value[j], token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(`Expected all \"${token.name}\" to match \"${token.pattern}\"`);\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue;\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(`Expected \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`);\n }\n\n path += token.prefix + segment;\n continue;\n }\n\n if (token.optional) {\n continue;\n }\n\n throw new TypeError(`Expected \"${token.name}\" to be ${token.repeat ? 'an array' : 'a string'}`);\n }\n\n return path;\n };\n }\n\n escapeString(str: any) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n }\n\n escapeGroup(group: any) {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n }\n\n flags(options: any) {\n return options && options.sensitive ? '' : 'i';\n }\n\n regexpToRegexp(path: any, keys: any) {\n if (!keys) {\n return path;\n }\n\n const groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (let i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n });\n }\n }\n\n return path;\n }\n\n arrayToRegexp(path: any, keys: any, options: any): RegExp {\n const parts = [];\n\n for (let i = 0; i < path.length; i++) {\n parts.push(this.pathToRegexp(path[i], keys, options).source);\n }\n\n return new RegExp(`(?:${parts.join('|')})`, this.flags(options));\n }\n\n stringToRegexp(path: any, keys: any, options: any) {\n return this.tokensToRegExp(this.parse(path, options), keys, options);\n }\n\n tokensToRegExp(tokens: any, keys: any, options: any) {\n options = options || {};\n\n const strict = options.strict;\n const start = options.start !== false;\n const end = options.end !== false;\n const delimiter = options.delimiter || this.DEFAULT_DELIMITER;\n const endsWith = []\n .concat(options.endsWith || [])\n .map(this.escapeString)\n .concat('$')\n .join('|');\n let route = start ? '^' : '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n route += this.escapeString(token);\n } else {\n const capture = token.repeat\n ? `(?:${token.pattern})(?:${this.escapeString(token.delimiter)}(?:${token.pattern}))*`\n : token.pattern;\n\n if (keys) {\n keys.push(token);\n }\n\n if (token.optional) {\n if (!token.prefix) {\n route += `(${capture})?`;\n } else {\n route += `(?:${this.escapeString(token.prefix)}(${capture}))?`;\n }\n } else {\n route += `${this.escapeString(token.prefix)}(${capture})`;\n }\n }\n }\n\n if (end) {\n if (!strict) {\n route += `(?:${this.escapeString(delimiter)})?`;\n }\n\n route += endsWith === '$' ? '$' : `(?=${endsWith})`;\n } else {\n const endToken = tokens[tokens.length - 1];\n const isEndDelimited =\n typeof endToken === 'string' ? endToken[endToken.length - 1] === delimiter : endToken === undefined;\n\n if (!strict) {\n route += `(?:${this.escapeString(delimiter)}(?=${endsWith}))?`;\n }\n if (!isEndDelimited) {\n route += `(?=${this.escapeString(delimiter)}|${endsWith})`;\n }\n }\n\n return new RegExp(route, this.flags(options));\n }\n\n pathToRegexp(path: any, keys: any, options: any) {\n if (path instanceof RegExp) {\n return this.regexpToRegexp(path, keys);\n }\n\n if (Array.isArray(path)) {\n return this.arrayToRegexp(/** @type {!Array} */ path, keys, options);\n }\n\n return this.stringToRegexp(/** @type {string} */ path, keys, options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanActivateChild,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { CacheService } from '@yelon/cache';\nimport { Menu, User } from '@yelon/theme';\nimport { deepCopy, log, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';\nimport { PathToRegexpService } from './path-to-regexp.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActGuard implements CanActivate, CanActivateChild {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: NzSafeAny[] = [];\n private links: string[] = [];\n\n constructor(\n private configService: YunzaiConfigService,\n private cacheService: CacheService,\n private pathToRegexp: PathToRegexpService,\n private router: Router\n ) {\n log('act: ');\n this.bis = mergeBisConfig(this.configService);\n log('act: config ', this.bis);\n const user: User = this.cacheService.get('_yz_user', { mode: 'none' });\n log('act: user ', user);\n this.menus = deepCopy(user.menu).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n log('act: menus ', this.menus);\n this.getAllLinks(this.menus, this.links);\n log('act: links ', this.links);\n }\n\n canActivate(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n log('act: can activate ', state);\n if (this.preHandle(state)) {\n return true;\n }\n log('act: can activate child prehandle success');\n let canactivate = false;\n this.links.forEach((link: string) => {\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n log(`act: ${link} test ${state.url.split('?')[0]}`);\n if (regexp.test(state.url.split('?')[0])) {\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n canActivateChild(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n log('act: can activate child ', state);\n if (this.preHandle(state)) {\n return true;\n }\n log('act: can activate child prehandle success');\n\n let canactivate = false;\n this.links.forEach((link: string) => {\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n if (regexp.test(state.url.split('?')[0])) {\n log(`act: ${link} test ${state.url.split('?')[0]}`);\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n preHandle(state: RouterStateSnapshot): boolean {\n return (\n state.url.includes('error') ||\n state.url.includes('exception') ||\n state.url.includes('displayIndex') ||\n state.url === '' ||\n state.url === null ||\n state.url === '/' ||\n state.url.includes('iframePage')\n );\n }\n\n getAllLinks(menu: Menu[], links: string[]): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push(sider.link);\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n","export * from './widgets';\nexport * from './layout.module';\nexport * from './yz.auth.service';\nexport * from './yz.basic.component';\nexport * from './yz.default.interceptor';\nexport * from './yz.i18n.service';\nexport * from './yz.startup.service';\nexport * from './bis.config';\nexport * from './stomp.config';\nexport * from './yz.stomp.service';\nexport * from './act.guard';\nexport * from './path-to-regexp.service';\n// export * from './contact/contact.component';\n// export * from './contact/contact.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {ContactComponent as ɵa} from './contact/contact.component';\nexport {ContactService as ɵb} from './contact/contact.service';\nexport {YzHeaderApplicationComponent as ɵc,YzHeaderClearStorageComponent as ɵh,YzHeaderFullScreenComponent as ɵg,YzHeaderI18NComponent as ɵi,YzHeaderNotifyComponent as ɵd,YzHeaderThemBtnComponent as ɵe,YzHeaderUserComponent as ɵf} from './widgets';"],"names":["zorroZhCN","dfZhCn","yelonZhCn","zorroZhTW","dfZhTw","yelonZhTw","zorroEnUS","dfEn","yelonEnUS","YunzaiConfigService","log","mergeAuthConfig"],"mappings":"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"}
|