@arsedizioni/ars-utils 18.2.247 → 18.2.250
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/clipper.common/common/messages.d.ts +1 -1
- package/clipper.common/common/services/clipper.service.d.ts +6 -0
- package/core/services/broadcastChannelHandler.d.ts +83 -0
- package/core/services/theme.service.d.ts +29 -4
- package/esm2022/clipper.common/common/messages.mjs +2 -2
- package/esm2022/clipper.common/common/services/clipper.service.mjs +11 -2
- package/esm2022/core/services/broadcastChannelHandler.mjs +80 -0
- package/esm2022/core/services/theme.service.mjs +58 -17
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +11 -2
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs +136 -16
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,38 +1,79 @@
|
|
|
1
1
|
import { computed, inject, Injectable, RendererFactory2, signal } from "@angular/core";
|
|
2
|
+
import { BroadcastChannelManager } from './broadcastChannelHandler';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export class ThemeService {
|
|
4
5
|
constructor() {
|
|
6
|
+
// messaggi broadcast
|
|
7
|
+
this.broadcastChannel = new BroadcastChannelManager('THEME-SERVICE');
|
|
8
|
+
this.broadcastMessage = '$theme-changed';
|
|
9
|
+
// per intercettare il cambio di tema a livello di sistema
|
|
10
|
+
this.prefersColorSchemeMediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');
|
|
5
11
|
this.renderFactory2 = inject(RendererFactory2);
|
|
6
12
|
this.renderer = this.renderFactory2.createRenderer(null, null);
|
|
13
|
+
/**
|
|
14
|
+
* Current theme
|
|
15
|
+
*/
|
|
7
16
|
this.theme = signal("light");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
|
|
17
|
+
/**
|
|
18
|
+
* The current theme is "System default"
|
|
19
|
+
*/
|
|
20
|
+
this.auto = computed(() => this.theme() === 'system');
|
|
21
|
+
/**
|
|
22
|
+
* Configuration schema about the icon, the text and the toggle() sequence
|
|
23
|
+
*/
|
|
24
|
+
this.themeInfo = {
|
|
25
|
+
['system']: { icon: 'auto_mode', name: 'Impostazione predefinita di sistema', next: 'light', tooltip: 'Passa a tema chiaro', },
|
|
26
|
+
['light']: { icon: 'light_mode', name: 'Tema chiaro', next: 'dark', tooltip: 'Passa a tema scuro', },
|
|
27
|
+
['dark']: { icon: 'dark_mode', name: 'Tema scuro', next: 'system', tooltip: 'Passa a tema predefinito di sistema', },
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Icon of the current theme (mat-icon code)
|
|
31
|
+
*/
|
|
32
|
+
this.themeIcon = computed(() => this.themeInfo[this.theme()].icon);
|
|
33
|
+
/**
|
|
34
|
+
* Current theme name
|
|
35
|
+
*/
|
|
36
|
+
this.themeName = computed(() => this.themeInfo[this.theme()].name);
|
|
37
|
+
/**
|
|
38
|
+
* Tooltip text on toggle
|
|
39
|
+
*/
|
|
40
|
+
this.toggleTooltip = computed(() => this.themeInfo[this.theme()].tooltip);
|
|
41
|
+
// reagisce al cambio di tema nel sistema
|
|
42
|
+
this.prefersColorSchemeMediaQueryList.onchange = (_) => this.auto() ? this.setTheme() : null;
|
|
43
|
+
// reagisce al messaggio broadcast (sincronizza i temi tra i popup dell'applicazione)
|
|
44
|
+
this.broadcastChannel.subscribe({
|
|
45
|
+
messageId: this.broadcastMessage,
|
|
46
|
+
action: (bag) => {
|
|
47
|
+
if (this.theme() !== bag.data) {
|
|
48
|
+
this.setTheme(bag.data);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
13
51
|
});
|
|
52
|
+
// inizializza il tema
|
|
14
53
|
this.setTheme(localStorage.getItem("preferred-theme") ?? null);
|
|
15
54
|
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
// chiude il canale di comunicazione broadcast
|
|
57
|
+
this.broadcastChannel.dispose();
|
|
58
|
+
}
|
|
16
59
|
/**
|
|
17
60
|
* Set the new theme
|
|
18
|
-
* @param theme
|
|
61
|
+
* @param theme the new theme
|
|
19
62
|
*/
|
|
20
|
-
setTheme(theme =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
else {
|
|
25
|
-
this.renderer.removeClass(document.body, this.theme());
|
|
26
|
-
this.theme.set(theme);
|
|
27
|
-
}
|
|
28
|
-
this.renderer.addClass(document.body, this.theme());
|
|
63
|
+
setTheme(theme = 'system') {
|
|
64
|
+
this.renderer.removeClass(document.body, 'light');
|
|
65
|
+
this.renderer.removeClass(document.body, 'dark');
|
|
66
|
+
this.theme.set(theme);
|
|
29
67
|
localStorage.setItem("preferred-theme", this.theme());
|
|
68
|
+
this.renderer.addClass(document.body, this.auto() ? (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light") : theme);
|
|
69
|
+
// lancia il messaggio broadcast
|
|
70
|
+
this.broadcastChannel.sendMessage(this.broadcastMessage, this.theme());
|
|
30
71
|
}
|
|
31
72
|
/**
|
|
32
73
|
* Toggle theme
|
|
33
74
|
*/
|
|
34
75
|
toggleTheme() {
|
|
35
|
-
this.setTheme(this.theme()
|
|
76
|
+
this.setTheme(this.themeInfo[this.theme()].next);
|
|
36
77
|
}
|
|
37
78
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
79
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ThemeService, providedIn: "root" }); }
|
|
@@ -43,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
|
|
|
43
84
|
providedIn: "root",
|
|
44
85
|
}]
|
|
45
86
|
}], ctorParameters: () => [] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jb3JlL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLGdCQUFnQixFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQThCLE1BQU0sMkJBQTJCLENBQUM7O0FBcUJoRyxNQUFNLE9BQU8sWUFBWTtJQTRDdkI7UUExQ0EscUJBQXFCO1FBQ0oscUJBQWdCLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRSxxQkFBZ0IsR0FBVyxnQkFBZ0IsQ0FBQztRQUU3RCwwREFBMEQ7UUFDekMscUNBQWdDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTlGLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVsRTs7V0FFRztRQUNjLFVBQUssR0FBRyxNQUFNLENBQVksT0FBTyxDQUFDLENBQUM7UUFDcEQ7O1dBRUc7UUFDYyxTQUFJLEdBQW9CLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7UUFFbkY7O1dBRUc7UUFDYyxjQUFTLEdBQXVDO1lBQy9ELENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsR0FBRztZQUM5SCxDQUFDLE9BQU8sQ0FBQyxF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Q0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7OEdBekZVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBSZW5kZXJlckZhY3RvcnkyLCBTaWduYWwsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJyb2FkY2FzdENoYW5uZWxNYW5hZ2VyLCBCcm9hZGNhc3RDaGFubmVsTWVzc2FnZUJhZyB9IGZyb20gJy4vYnJvYWRjYXN0Q2hhbm5lbEhhbmRsZXInO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBLaW5kIG9mIHRoZW1lczogc3lzdGVtIGRlZmF1bHQsIGxpZ2h0IG9yIGRhcmtcclxuICovXHJcbnR5cGUgdGhlbWVUeXBlID0gJ3N5c3RlbScgfCAnbGlnaHQnIHwgJ2RhcmsnO1xyXG5cclxuLyoqXHJcbiAqIEF2YWlsYWJsZSB0aGVtZXMnIHNjaGVtYVxyXG4gKi9cclxuaW50ZXJmYWNlIHRoZW1lSW5mb1JlY29yZCB7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBuZXh0OiB0aGVtZVR5cGU7XHJcbiAgdG9vbHRpcDogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaGVtZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvLyBtZXNzYWdnaSBicm9hZGNhc3RcclxuICBwcml2YXRlIHJlYWRvbmx5IGJyb2FkY2FzdENoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbE1hbmFnZXIoJ1RIRU1FLVNFUlZJQ0UnKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJyb2FkY2FzdE1lc3NhZ2U6IHN0cmluZyA9ICckdGhlbWUtY2hhbmdlZCc7XHJcblxyXG4gIC8vIHBlciBpbnRlcmNldHRhcmUgaWwgY2FtYmlvIGRpIHRlbWEgYSBsaXZlbGxvIGRpIHNpc3RlbWFcclxuICBwcml2YXRlIHJlYWRvbmx5IHByZWZlcnNDb2xvclNjaGVtZU1lZGlhUXVlcnlMaXN0ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTtcclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gdGhpcy5yZW5kZXJGYWN0b3J5Mi5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VycmVudCB0aGVtZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdGhlbWUgPSBzaWduYWw8dGhlbWVUeXBlPihcImxpZ2h0XCIpO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBjdXJyZW50IHRoZW1lIGlzIFwiU3lzdGVtIGRlZmF1bHRcIlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0bzogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50aGVtZSgpID09PSAnc3lzdGVtJyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYXRpb24gc2NoZW1hIGFib3V0IHRoZSBpY29uLCB0aGUgdGV4dCBhbmQgdGhlIHRvZ2dsZSgpIHNlcXVlbmNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZUluZm86IFJlY29yZDx0aGVtZVR5cGUsIHRoZW1lSW5mb1JlY29yZD4gPSB7XHJcbiAgICBbJ3N5c3RlbSddOiB7IGljb246ICdhdXRvX21vZGUnLCBuYW1lOiAnSW1wb3N0YXppb25lIHByZWRlZmluaXRhIGRpIHNpc3RlbWEnLCBuZXh0OiAnbGlnaHQnLCB0b29sdGlwOiAnUGFzc2EgYSB0ZW1hIGNoaWFybycsIH0sXHJcbiAgICBbJ2xpZ2h0J106IHsgaWNvbjogJ2xpZ2h0X21vZGUnLCBuYW1lOiAnVGVtYSBjaGlhcm8nLCBuZXh0OiAnZGFyaycsIHRvb2x0aXA6ICdQYXNzYSBhIHRlbWEgc2N1cm8nLCB9LFxyXG4gICAgWydkYXJrJ106IHsgaWNvbjogJ2RhcmtfbW9kZScsIG5hbWU6ICdUZW1hIHNjdXJvJywgbmV4dDogJ3N5c3RlbScsIHRvb2x0aXA6ICdQYXNzYSBhIHRlbWEgcHJlZGVmaW5pdG8gZGkgc2lzdGVtYScsIH0sXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWNvbiBvZiB0aGUgY3VycmVudCB0aGVtZSAobWF0LWljb24gY29kZSlcclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgdGhlbWVJY29uOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGhlbWVJbmZvW3RoaXMudGhlbWUoKV0uaWNvbik7XHJcbiAgLyoqXHJcbiAgICogQ3VycmVudCB0aGVtZSBuYW1lXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lTmFtZTogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRoZW1lSW5mb1t0aGlzLnRoZW1lKCldLm5hbWUpO1xyXG4gIC8qKlxyXG4gICAqIFRvb2x0aXAgdGV4dCBvbiB0b2dnbGUgXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHRvZ2dsZVRvb2x0aXA6IFNpZ25hbDxzdHJpbmc+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50aGVtZUluZm9bdGhpcy50aGVtZSgpXS50b29sdGlwKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgLy8gcmVhZ2lzY2UgYWwgY2FtYmlvIGRpIHRlbWEgbmVsIHNpc3RlbWFcclxuICAgIHRoaXMucHJlZmVyc0NvbG9yU2NoZW1lTWVkaWFRdWVyeUxpc3Qub25jaGFuZ2UgPSAoXzogTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4gdGhpcy5hdXRvKCkgPyB0aGlzLnNldFRoZW1lKCkgOiBudWxsO1xyXG5cclxuICAgIC8vIHJlYWdpc2NlIGFsIG1lc3NhZ2dpbyBicm9hZGNhc3QgKHNpbmNyb25penphIGkgdGVtaSB0cmEgaSBwb3B1cCBkZWxsJ2FwcGxpY2F6aW9uZSlcclxuICAgIHRoaXMuYnJvYWRjYXN0Q2hhbm5lbC5zdWJzY3JpYmU8dGhlbWVUeXBlPih7XHJcbiAgICAgIG1lc3NhZ2VJZDogdGhpcy5icm9hZGNhc3RNZXNzYWdlLFxyXG4gICAgICBhY3Rpb246IChiYWc6IEJyb2FkY2FzdENoYW5uZWxNZXNzYWdlQmFnPHRoZW1lVHlwZT4pID0+IHtcclxuICAgICAgICBpZiAodGhpcy50aGVtZSgpICE9PSBiYWcuZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRUaGVtZShiYWcuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBpbml6aWFsaXp6YSBpbCB0ZW1hXHJcbiAgICB0aGlzLnNldFRoZW1lKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJlZmVycmVkLXRoZW1lXCIpIGFzIHRoZW1lVHlwZSA/PyBudWxsKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gY2hpdWRlIGlsIGNhbmFsZSBkaSBjb211bmljYXppb25lIGJyb2FkY2FzdFxyXG4gICAgdGhpcy5icm9hZGNhc3RDaGFubmVsLmRpc3Bvc2UoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIG5ldyB0aGVtZVxyXG4gICAqIEBwYXJhbSB0aGVtZSB0aGUgbmV3IHRoZW1lXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRUaGVtZSh0aGVtZTogdGhlbWVUeXBlID0gJ3N5c3RlbScpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ2xpZ2h0Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdkYXJrJyk7XHJcblxyXG4gICAgdGhpcy50aGVtZS5zZXQodGhlbWUpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcmVmZXJyZWQtdGhlbWVcIiwgdGhpcy50aGVtZSgpKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5hdXRvKCkgPyAod2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIpLm1hdGNoZXMgPyBcImRhcmtcIiA6IFwibGlnaHRcIikgOiB0aGVtZSk7XHJcblxyXG4gICAgLy8gbGFuY2lhIGlsIG1lc3NhZ2dpbyBicm9hZGNhc3RcclxuICAgIHRoaXMuYnJvYWRjYXN0Q2hhbm5lbC5zZW5kTWVzc2FnZSh0aGlzLmJyb2FkY2FzdE1lc3NhZ2UsIHRoaXMudGhlbWUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlbWVcclxuICAgKi9cclxuICBwdWJsaWMgdG9nZ2xlVGhlbWUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFRoZW1lKHRoaXMudGhlbWVJbmZvW3RoaXMudGhlbWUoKV0ubmV4dCk7XHJcbiAgfVxyXG59Il19
|
|
@@ -30,7 +30,7 @@ const ClipperMessages = {
|
|
|
30
30
|
COMMAND_SEARCH_RESTORED: '$clipper-command-search-restored',
|
|
31
31
|
COMMAND_SEARCH_EXECUTED: '$clipper-command-search-executed',
|
|
32
32
|
COMMAND_HISTORY_OPEN: '$clipper-history-open',
|
|
33
|
-
|
|
33
|
+
COMMAND_DASHBOARD_UPDATED: '$clipper-dashboard-updated',
|
|
34
34
|
// Interop
|
|
35
35
|
INTEROP_RS_NEW_LAW: '$clipper-interop-rs-new-law',
|
|
36
36
|
INTEROP_RS_NEW_ACTIVITY: '$clipper-interop-rs-new-activity',
|
|
@@ -2247,10 +2247,19 @@ class ClipperService {
|
|
|
2247
2247
|
this.dashboard.expiringDeadlines = r.value.expiringDeadlines;
|
|
2248
2248
|
this.dashboard.isTrial = r.value.isTrial;
|
|
2249
2249
|
this.dashboard.items.set(r.value.items);
|
|
2250
|
-
this.broadcastService.sendMessage(ClipperMessages.
|
|
2250
|
+
this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);
|
|
2251
2251
|
}
|
|
2252
2252
|
});
|
|
2253
2253
|
}
|
|
2254
|
+
/**
|
|
2255
|
+
* Update unread items
|
|
2256
|
+
* @param module : the module
|
|
2257
|
+
* @param increment : the increment (can be negative)
|
|
2258
|
+
*/
|
|
2259
|
+
updateUnreadItems(module, increment) {
|
|
2260
|
+
this.dashboard.updateUnreadItems(module, increment);
|
|
2261
|
+
this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);
|
|
2262
|
+
}
|
|
2254
2263
|
///
|
|
2255
2264
|
// LINKS
|
|
2256
2265
|
///
|