ngx-dynamic-dashboard
Version:
an dashboard lib for angular 10
45 lines (44 loc) • 5.28 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
/**
The grid is primarily controlled by MenuService Events. You can change the behavior by
changing the MenuComponent and have it call methods within the Grid component via Output Events
within the Menu component or by using the @ViewChild approach.
In the current code, the MenuService is shared by the GridComponent and MenuComponent.
The MenuComponent relays events from the various components that make up the MenuComponent.
The GridComponent listens for those events via an Observable. The GridComponent will also
raise/emit an event that will be picked up by the MenuComponent via the MenuService through an Observable as well.
*/
export class MenuEventService {
constructor() {
this.menuSubject = new Subject();
this.gridSubject = new Subject();
this.subscribers = [];
}
raiseMenuEvent(event) {
this.menuSubject.next(event);
}
listenForMenuEvents() {
return this.menuSubject.asObservable();
}
raiseGridEvent(event) {
this.menuSubject.next(event);
}
listenForGridEvents() {
return this.gridSubject.asObservable();
}
addSubscriber(subscriber) {
this.subscribers.push(subscriber);
}
unSubscribeAll() {
this.subscribers.forEach(subscription => {
subscription.unsubscribe();
});
this.subscribers.length = 0;
}
}
MenuEventService.decorators = [
{ type: Injectable }
];
MenuEventService.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9iZW5saS93b3Jrc3BhY2VzL25neC1keW5hbWljLWRhc2hib2FyZC1mcmFtZXdvcmsvcHJvamVjdHMvbmd4LWR5bmFtaWMtZGFzaGJvYXJkL3NyYy8iLCJzb3VyY2VzIjpbImRhc2hib2FyZC9tZW51L21lbnUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHekM7Ozs7Ozs7OztHQVNHO0FBR0gsTUFBTSxPQUFPLGdCQUFnQjtJQU16QjtRQUpRLGdCQUFXLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDckQsZ0JBQVcsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUNyRCxnQkFBVyxHQUEyQixFQUFFLENBQUM7SUFHakQsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFlO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO1FBRVYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDcEMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWhDLENBQUM7OztZQXZDSixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0lFdmVudH0gZnJvbSAnLi9JRXZlbnQnO1xuXG4vKipcbiBUaGUgZ3JpZCBpcyBwcmltYXJpbHkgY29udHJvbGxlZCBieSBNZW51U2VydmljZSBFdmVudHMuIFlvdSBjYW4gY2hhbmdlIHRoZSBiZWhhdmlvciBieVxuIGNoYW5naW5nIHRoZSBNZW51Q29tcG9uZW50IGFuZCBoYXZlIGl0IGNhbGwgbWV0aG9kcyB3aXRoaW4gdGhlIEdyaWQgY29tcG9uZW50IHZpYSBPdXRwdXQgRXZlbnRzXG4gd2l0aGluIHRoZSBNZW51IGNvbXBvbmVudCBvciBieSB1c2luZyB0aGUgQFZpZXdDaGlsZCBhcHByb2FjaC5cblxuIEluIHRoZSBjdXJyZW50IGNvZGUsIHRoZSBNZW51U2VydmljZSBpcyBzaGFyZWQgYnkgdGhlIEdyaWRDb21wb25lbnQgYW5kIE1lbnVDb21wb25lbnQuXG4gVGhlIE1lbnVDb21wb25lbnQgcmVsYXlzIGV2ZW50cyBmcm9tIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZSBNZW51Q29tcG9uZW50LlxuIFRoZSBHcmlkQ29tcG9uZW50IGxpc3RlbnMgZm9yIHRob3NlIGV2ZW50cyB2aWEgYW4gT2JzZXJ2YWJsZS4gVGhlIEdyaWRDb21wb25lbnQgd2lsbCBhbHNvXG4gcmFpc2UvZW1pdCBhbiBldmVudCB0aGF0IHdpbGwgYmUgcGlja2VkIHVwIGJ5IHRoZSBNZW51Q29tcG9uZW50IHZpYSB0aGUgTWVudVNlcnZpY2UgdGhyb3VnaCBhbiBPYnNlcnZhYmxlIGFzIHdlbGwuXG4gKi9cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVFdmVudFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBtZW51U3ViamVjdDogU3ViamVjdDxJRXZlbnQ+ID0gbmV3IFN1YmplY3Q8SUV2ZW50PigpO1xuICAgIHByaXZhdGUgZ3JpZFN1YmplY3Q6IFN1YmplY3Q8SUV2ZW50PiA9IG5ldyBTdWJqZWN0PElFdmVudD4oKTtcbiAgICBwcml2YXRlIHN1YnNjcmliZXJzOiBBcnJheTxTdWJqZWN0PHN0cmluZz4+ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICByYWlzZU1lbnVFdmVudChldmVudDogSUV2ZW50KSB7XG4gICAgICAgIHRoaXMubWVudVN1YmplY3QubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgbGlzdGVuRm9yTWVudUV2ZW50cygpOiBPYnNlcnZhYmxlPElFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cblxuICAgIHJhaXNlR3JpZEV2ZW50KGV2ZW50OiBJRXZlbnQpIHtcbiAgICAgICAgdGhpcy5tZW51U3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsaXN0ZW5Gb3JHcmlkRXZlbnRzKCk6IE9ic2VydmFibGU8SUV2ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGFkZFN1YnNjcmliZXIoc3Vic2NyaWJlcjogYW55KSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcbiAgICB9XG5cbiAgICB1blN1YnNjcmliZUFsbCgpIHtcblxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLmxlbmd0aCA9IDA7XG5cbiAgICB9XG59XG4iXX0=