ornamentum
Version:
Angular Toolkit
92 lines • 7.78 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Subject } from 'rxjs';
import { webSocket } from 'rxjs/webSocket';
/**
* Dropdown websocket data fetch service.
* @template T
*/
export class DropdownWebsocketDataFetchService {
constructor() { }
/**
* Initialize websocket connection.
* @param {?=} config Websocket configuration object reference.
* @return {?}
*/
init(config) {
this.socket = webSocket(config);
this.subject = new Subject();
}
/**
* Get socket stream reference.
* @return {?}
*/
get socketStream() {
return this.socket;
}
/**
* Websocket data bind event handler.
* Must call init prior to calling this function.
* @param {?=} mapper Response data mapper callback. map source stream format to data table expected stream or apply additional formatting.
* @return {?} Dropdown bind event handler.
*/
onDataBind(mapper) {
if (!this.socket) {
throw Error('Initialize socket data source before data bind.');
}
this.socketSubscription = this.socket.subscribe(this.subject);
return (/**
* @param {?=} params
* @return {?}
*/
(params) => {
if (params) {
this.socket.next((/** @type {?} */ ({
type: 'data-fetch',
filter: params.filter,
offset: params.offset,
limit: params.limit
})));
if (mapper) {
return mapper(this.subject);
}
return this.subject;
}
});
}
/**
* Dispose websocket connection.
* @return {?}
*/
dispose() {
if (this.socket) {
this.socket.complete();
}
if (this.socketSubscription) {
this.socketSubscription.unsubscribe();
}
if (this.subject) {
this.subject.unsubscribe();
}
}
}
if (false) {
/**
* @type {?}
* @private
*/
DropdownWebsocketDataFetchService.prototype.socket;
/**
* @type {?}
* @private
*/
DropdownWebsocketDataFetchService.prototype.subject;
/**
* @type {?}
* @private
*/
DropdownWebsocketDataFetchService.prototype.socketSubscription;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24td2Vic29ja2V0LWRhdGEtZmV0Y2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL29ybmFtZW50dW0vIiwic291cmNlcyI6WyJkcm9wZG93bi1yZXNvdXJjZS9zZXJ2aWNlcy9kcm9wZG93bi13ZWJzb2NrZXQtZGF0YS1mZXRjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQWdCLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUE0QyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVNyRixNQUFNLE9BQU8saUNBQWlDO0lBSzVDLGdCQUFlLENBQUM7Ozs7OztJQU1ULElBQUksQ0FBQyxNQUF1RDtRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBTSxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBS0QsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOzs7Ozs7O0lBUU0sVUFBVSxDQUFDLE1BQTJFO1FBQzNGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDaEU7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlEOzs7O1FBQU8sQ0FBQyxNQUE4QixFQUFzQyxFQUFFO1lBQzVFLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFBO29CQUNmLElBQUksRUFBRSxZQUFZO29CQUNsQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07b0JBQ3JCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtvQkFDckIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2lCQUNwQixFQUFPLENBQUMsQ0FBQztnQkFFVixJQUFJLE1BQU0sRUFBRTtvQkFDVixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzdCO2dCQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQjtRQUNILENBQUMsRUFBQztJQUNKLENBQUM7Ozs7O0lBS00sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEI7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7Q0FDRjs7Ozs7O0lBckVDLG1EQUF5RDs7Ozs7SUFDekQsb0RBQWlEOzs7OztJQUNqRCwrREFBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb24sIFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHdlYlNvY2tldCwgV2ViU29ja2V0U3ViamVjdCwgV2ViU29ja2V0U3ViamVjdENvbmZpZyB9IGZyb20gJ3J4anMvd2ViU29ja2V0JztcblxuaW1wb3J0IHsgRHJvcGRvd25EYXRhQmluZENhbGxiYWNrIH0gZnJvbSAnLi4vLi4vZHJvcGRvd24vbW9kZWxzL2Ryb3Bkb3duLWRhdGEtYmluZC1jYWxsYmFjay5tb2RlbCc7XG5pbXBvcnQgeyBEcm9wZG93blF1ZXJ5UmVzdWx0IH0gZnJvbSAnLi4vLi4vZHJvcGRvd24vbW9kZWxzL2Ryb3Bkb3duLXF1ZXJ5LXJlc3VsdC5tb2RlbCc7XG5pbXBvcnQgeyBEcm9wZG93blJlcXVlc3RQYXJhbXMgfSBmcm9tICcuLi8uLi9kcm9wZG93bi9tb2RlbHMvZHJvcGRvd24tcmVxdWVzdC1wYXJhbXMubW9kZWwnO1xuXG4vKipcbiAqIERyb3Bkb3duIHdlYnNvY2tldCBkYXRhIGZldGNoIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEcm9wZG93bldlYnNvY2tldERhdGFGZXRjaFNlcnZpY2U8VD4ge1xuICBwcml2YXRlIHNvY2tldDogV2ViU29ja2V0U3ViamVjdDxEcm9wZG93blF1ZXJ5UmVzdWx0PFQ+PjtcbiAgcHJpdmF0ZSBzdWJqZWN0OiBTdWJqZWN0PERyb3Bkb3duUXVlcnlSZXN1bHQ8VD4+O1xuICBwcml2YXRlIHNvY2tldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIGNvbmZpZyBXZWJzb2NrZXQgY29uZmlndXJhdGlvbiBvYmplY3QgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIGluaXQoY29uZmlnPzogV2ViU29ja2V0U3ViamVjdENvbmZpZzxEcm9wZG93blF1ZXJ5UmVzdWx0PFQ+Pik6IHZvaWQge1xuICAgIHRoaXMuc29ja2V0ID0gd2ViU29ja2V0PGFueT4oY29uZmlnKTtcbiAgICB0aGlzLnN1YmplY3QgPSBuZXcgU3ViamVjdDxEcm9wZG93blF1ZXJ5UmVzdWx0PFQ+PigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzb2NrZXQgc3RyZWFtIHJlZmVyZW5jZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc29ja2V0U3RyZWFtKCk6IFdlYlNvY2tldFN1YmplY3Q8RHJvcGRvd25RdWVyeVJlc3VsdDxUPj4ge1xuICAgIHJldHVybiB0aGlzLnNvY2tldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZWJzb2NrZXQgZGF0YSBiaW5kIGV2ZW50IGhhbmRsZXIuXG4gICAqIE11c3QgY2FsbCBpbml0IHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAgICogQHBhcmFtIG1hcHBlciBSZXNwb25zZSBkYXRhIG1hcHBlciBjYWxsYmFjay4gbWFwIHNvdXJjZSBzdHJlYW0gZm9ybWF0IHRvIGRhdGEgdGFibGUgZXhwZWN0ZWQgc3RyZWFtIG9yIGFwcGx5IGFkZGl0aW9uYWwgZm9ybWF0dGluZy5cbiAgICogQHJldHVybiBEcm9wZG93biBiaW5kIGV2ZW50IGhhbmRsZXIuXG4gICAqL1xuICBwdWJsaWMgb25EYXRhQmluZChtYXBwZXI/OiA8UT4ocmVzcG9uc2U6IE9ic2VydmFibGU8UT4pID0+IE9ic2VydmFibGU8RHJvcGRvd25RdWVyeVJlc3VsdDxUPj4pOiBEcm9wZG93bkRhdGFCaW5kQ2FsbGJhY2s8VD4ge1xuICAgIGlmICghdGhpcy5zb2NrZXQpIHtcbiAgICAgIHRocm93IEVycm9yKCdJbml0aWFsaXplIHNvY2tldCBkYXRhIHNvdXJjZSBiZWZvcmUgZGF0YSBiaW5kLicpO1xuICAgIH1cblxuICAgIHRoaXMuc29ja2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zb2NrZXQuc3Vic2NyaWJlKHRoaXMuc3ViamVjdCk7XG5cbiAgICByZXR1cm4gKHBhcmFtcz86IERyb3Bkb3duUmVxdWVzdFBhcmFtcyk6IE9ic2VydmFibGU8RHJvcGRvd25RdWVyeVJlc3VsdDxUPj4gPT4ge1xuICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICB0aGlzLnNvY2tldC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnZGF0YS1mZXRjaCcsXG4gICAgICAgICAgZmlsdGVyOiBwYXJhbXMuZmlsdGVyLFxuICAgICAgICAgIG9mZnNldDogcGFyYW1zLm9mZnNldCxcbiAgICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0XG4gICAgICAgIH0gYXMgYW55KTtcblxuICAgICAgICBpZiAobWFwcGVyKSB7XG4gICAgICAgICAgcmV0dXJuIG1hcHBlcih0aGlzLnN1YmplY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2Ugd2Vic29ja2V0IGNvbm5lY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb2NrZXQpIHtcbiAgICAgIHRoaXMuc29ja2V0LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc29ja2V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNvY2tldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YmplY3QpIHtcbiAgICAgIHRoaXMuc3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19