ngx-gem-spaas
Version:
This library contains services, components, images and styles to provide a unified look and way-of-working throughout GEM SPaaS.
64 lines • 9.67 kB
JavaScript
import { Component, HostListener, Input } from '@angular/core';
import { BaseComponent } from "ngx-gem-spaas";
import { takeUntil } from "rxjs/operators";
import { HubConnectionState } from "@microsoft/signalr";
import * as i0 from "@angular/core";
import * as i1 from "../_services/signalr.service";
import * as i2 from "@angular/material/tooltip";
/**
* This component creates the connection to the SignalR hub and
* shows a state indicator in the bottom left corner of your app.
* */
export class SignalrStateComponent extends BaseComponent {
constructor(signalrService) {
super();
this.signalrService = signalrService;
this.fromBottomPx = 14;
this.signalrActive = false;
this.getSignalrState();
}
onFocus() {
// ALSO CHECK IF TAB IS VISIBLE
if (document.visibilityState !== 'hidden') {
this.signalrConnect();
}
}
ngOnInit() {
this.signalrConnect();
}
ngOnDestroy() {
this.signalrService.stopConnection();
super.ngOnDestroy();
}
// ********************************************************************************************************
// LOADING DATA
// ********************************************************************************************************
// AUTOBAHN
signalrConnect() {
if (this.signalrService.signalrHubConnection?.state !== HubConnectionState.Connected) {
this.signalrService.startConnection();
}
else {
this.signalrActive = true;
}
}
getSignalrState() {
this.signalrService.onNewState()
.pipe(takeUntil(this.onDestroy$))
.subscribe((state) => {
this.signalrActive = state?.state === HubConnectionState.Connected;
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignalrStateComponent, deps: [{ token: i1.SignalrService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SignalrStateComponent, selector: "spaas-signalr", inputs: { fromBottomPx: "fromBottomPx" }, host: { listeners: { "window:focus": "onFocus($event)" } }, usesInheritance: true, ngImport: i0, template: "<div [class.nok]=\"!signalrActive\"\r\n [class.ok]=\"signalrActive\"\r\n [style.bottom.px]=\"fromBottomPx\"\r\n class=\"ws-state\"\r\n matTooltip=\"{{signalrActive ? 'live update OK' : 'live update NOK'}}\">\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SignalrStateComponent, decorators: [{
type: Component,
args: [{ selector: 'spaas-signalr', template: "<div [class.nok]=\"!signalrActive\"\r\n [class.ok]=\"signalrActive\"\r\n [style.bottom.px]=\"fromBottomPx\"\r\n class=\"ws-state\"\r\n matTooltip=\"{{signalrActive ? 'live update OK' : 'live update NOK'}}\">\r\n</div>\r\n" }]
}], ctorParameters: () => [{ type: i1.SignalrService }], propDecorators: { fromBottomPx: [{
type: Input
}], onFocus: [{
type: HostListener,
args: ['window:focus', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2VtLXNwYWFzL3NpZ25hbHIvc3JjL3NpZ25hbHItc3RhdGUvc2lnbmFsci1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2VtLXNwYWFzL3NpZ25hbHIvc3JjL3NpZ25hbHItc3RhdGUvc2lnbmFsci1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7O0FBUXREOzs7S0FHSztBQUNMLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBTXRELFlBQ1UsY0FBOEI7UUFFdEMsS0FBSyxFQUFFLENBQUM7UUFGQSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFML0IsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFM0Isa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFNcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFeUMsT0FBTztRQUMvQywrQkFBK0I7UUFDL0IsSUFBSSxRQUFRLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVELDJHQUEyRztJQUMzRyxlQUFlO0lBQ2YsMkdBQTJHO0lBRTNHLFdBQVc7SUFDWCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyRixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFO2FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxFQUFFLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWhEVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixrTENoQmxDLCtPQU1BOzs0RkRVYSxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsZUFBZTttRkFXaEIsWUFBWTtzQkFBcEIsS0FBSztnQkFXb0MsT0FBTztzQkFBaEQsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1NpZ25hbHJTZXJ2aWNlfSBmcm9tIFwiLi4vX3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZVwiO1xyXG5pbXBvcnQge0Jhc2VDb21wb25lbnR9IGZyb20gXCJuZ3gtZ2VtLXNwYWFzXCI7XHJcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtIdWJDb25uZWN0aW9uU3RhdGV9IGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhYXMtc2lnbmFscicsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbmFsci1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduYWxyLXN0YXRlLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBjcmVhdGVzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBTaWduYWxSIGh1YiBhbmRcclxuICogc2hvd3MgYSBzdGF0ZSBpbmRpY2F0b3IgaW4gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB5b3VyIGFwcC5cclxuICogKi9cclxuZXhwb3J0IGNsYXNzIFNpZ25hbHJTdGF0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGZyb21Cb3R0b21QeCA9IDE0O1xyXG5cclxuICBzaWduYWxyQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzaWduYWxyU2VydmljZTogU2lnbmFsclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5nZXRTaWduYWxyU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpmb2N1cycsIFsnJGV2ZW50J10pIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICAvLyBBTFNPIENIRUNLIElGIFRBQiBJUyBWSVNJQkxFXHJcbiAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlICE9PSAnaGlkZGVuJykge1xyXG4gICAgICB0aGlzLnNpZ25hbHJDb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2lnbmFsckNvbm5lY3QoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zaWduYWxyU2VydmljZS5zdG9wQ29ubmVjdGlvbigpO1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKVxyXG4gIH1cclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBMT0FESU5HIERBVEFcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAvLyBBVVRPQkFITlxyXG4gIHNpZ25hbHJDb25uZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2lnbmFsclNlcnZpY2Uuc2lnbmFsckh1YkNvbm5lY3Rpb24/LnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XHJcbiAgICAgIHRoaXMuc2lnbmFsclNlcnZpY2Uuc3RhcnRDb25uZWN0aW9uKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNpZ25hbHJBY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTaWduYWxyU3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpZ25hbHJTZXJ2aWNlLm9uTmV3U3RhdGUoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcclxuICAgICAgICB0aGlzLnNpZ25hbHJBY3RpdmUgPSBzdGF0ZT8uc3RhdGUgPT09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0ZWQ7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBDSEFOR0lORyBEQVRBXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBVSVxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIC8vIEVWRU5UIExJU1RFTkVSU1xyXG5cclxuICAvLyBNSVNDRUxMQU5FT1VTXHJcblxyXG59XHJcbiIsIjxkaXYgW2NsYXNzLm5va109XCIhc2lnbmFsckFjdGl2ZVwiXHJcbiAgICAgW2NsYXNzLm9rXT1cInNpZ25hbHJBY3RpdmVcIlxyXG4gICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiZnJvbUJvdHRvbVB4XCJcclxuICAgICBjbGFzcz1cIndzLXN0YXRlXCJcclxuICAgICBtYXRUb29sdGlwPVwie3tzaWduYWxyQWN0aXZlID8gJ2xpdmUgdXBkYXRlIE9LJyA6ICdsaXZlIHVwZGF0ZSBOT0snfX1cIj5cclxuPC9kaXY+XHJcbiJdfQ==