@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
102 lines • 12.8 kB
JavaScript
import { Injectable } from '@angular/core';
import { createMonitoringTicker, MonitorEngine, MonitoringController, } from '@iotize/tap/data';
import { Subject } from 'rxjs';
import { filter, map, share, switchMap } from 'rxjs/operators';
import { CurrentDeviceService } from '../../current-device.service';
import * as i0 from "@angular/core";
import * as i1 from "../../current-device.service";
/**
* Experimental data logger class
*
* @experimental
*/
export class IonicDataLogger {
get data() {
return this._data$.asObservable();
}
constructor(service) {
this.service = service;
/**
* Whole data stream
*/
this._data = [];
this._data$ = new Subject();
this._packetPerBundles = {};
this.options = {
period: 1000,
};
this.controller = new MonitoringController({
state: MonitorEngine.State.PAUSE,
dueTime: 0,
period: this.options.period,
refresh: false,
});
this.stream = createMonitoringTicker(this.controller)
.pipe(switchMap(async (_) => {
try {
return await this.service.tap.dataLog.dequeue();
}
catch (err) {
console.warn('Failed to read packet', err);
return undefined;
}
}), filter((value) => {
console.log('pass filter', value);
return value !== undefined;
}), map((entry) => {
// Fix as variables is not populated by default
// if (Object.keys(entry.data).length === 0) {
// entry.packet.variables = entry.packet.rawVariables;
// }
const output = entry;
output.decodedData = entry.data;
this.storePacket(output);
return output;
}))
.pipe(share());
}
getCacheForBundle(bundleId) {
return this._packetPerBundles[bundleId];
}
set period(v) {
// console.info(`Update period to ${v} ms`);
this.controller.setPeriod(v);
}
get events() {
return this.stream;
}
get running() {
return this.controller.state === MonitorEngine.State.START;
}
storePacket(packet) {
if (!(packet.meta.bundleId in this._packetPerBundles)) {
this._packetPerBundles[packet.meta.bundleId] = {
name: packet.meta.bundleName || `Bundle ${packet.meta.bundleId}`,
id: packet.meta.bundleId,
packets: [],
};
}
this._packetPerBundles[packet.meta.bundleId].packets.push(packet);
this._data.push(packet);
this._data$.next(this._data);
}
pause() {
this.controller.pause();
}
stop() {
this.controller.stop();
}
start() {
this.controller.start();
return this.events;
}
}
/** @nocollapse */ IonicDataLogger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IonicDataLogger, deps: [{ token: i1.CurrentDeviceService }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ IonicDataLogger.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IonicDataLogger, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IonicDataLogger, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.CurrentDeviceService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi9leHRlbnNpb25zL2RhdGFsb2dnZXIvZGF0YS1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixvQkFBb0IsR0FDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBa0JwRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFZMUIsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFRRCxZQUFvQixPQUE2QjtRQUE3QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQWZqRDs7V0FFRztRQUNLLFVBQUssR0FBaUMsRUFBRSxDQUFDO1FBQ3pDLFdBQU0sR0FBMEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUt0RSxzQkFBaUIsR0FBb0QsRUFBRSxDQUFDO1FBRWpFLFlBQU8sR0FBb0M7WUFDaEQsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO1FBR0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLG9CQUFvQixDQUFDO1lBQ3pDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDaEMsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQzNC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QUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O2dJQXRHVSxlQUFlO29JQUFmLGVBQWUsY0FGZCxNQUFNOzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTW9uaXRvcmluZ1RpY2tlcixcbiAgTW9uaXRvckVuZ2luZSxcbiAgTW9uaXRvcmluZ0NvbnRyb2xsZXIsXG59IGZyb20gJ0Bpb3RpemUvdGFwL2RhdGEnO1xuaW1wb3J0IHsgRGF0YUxvZ2dlciB9IGZyb20gJ0Bpb3RpemUvdGFwL2RhdGEtbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzaGFyZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3VycmVudERldmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXJyZW50LWRldmljZS5zZXJ2aWNlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBJb25pY0RhdGFMb2dnZXIge1xuICBleHBvcnQgaW50ZXJmYWNlIFBhY2tldEluZm88RGF0YVR5cGUgPSBhbnk+IGV4dGVuZHMgRGF0YUxvZ2dlci5SYXdQYWNrZXQge1xuICAgIG1ldGE6IERhdGFMb2dnZXIuUmF3UGFja2V0Lk1ldGEgJiB7IGJ1bmRsZU5hbWU/OiBzdHJpbmcgfTtcbiAgICBkZWNvZGVkRGF0YTogRGF0YVR5cGU7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENhY2hlUGFja2V0VHlwZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGFja2V0czogSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm88YW55PltdO1xuICB9XG4gIGV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VPcHRpb25zIHtcbiAgICBwZXJpb2Q6IG51bWJlcjtcbiAgfVxufVxuXG4vKipcbiAqIEV4cGVyaW1lbnRhbCBkYXRhIGxvZ2dlciBjbGFzc1xuICpcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElvbmljRGF0YUxvZ2dlciB7XG4gIGNvbnRyb2xsZXI6IE1vbml0b3JpbmdDb250cm9sbGVyO1xuXG4gIC8qKlxuICAgKiBQYWNrZXQgcGVyIHBhY2tldCBzdHJlYW1cbiAgICovXG4gIHN0cmVhbTogT2JzZXJ2YWJsZTxJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mbz47XG4gIC8qKlxuICAgKiBXaG9sZSBkYXRhIHN0cmVhbVxuICAgKi9cbiAgcHJpdmF0ZSBfZGF0YTogSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm9bXSA9IFtdO1xuICBwcml2YXRlIF9kYXRhJDogU3ViamVjdDxJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mb1tdPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBPYnNlcnZhYmxlPElvbmljRGF0YUxvZ2dlci5QYWNrZXRJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBfcGFja2V0UGVyQnVuZGxlczogUmVjb3JkPG51bWJlciwgSW9uaWNEYXRhTG9nZ2VyLkNhY2hlUGFja2V0VHlwZT4gPSB7fTtcblxuICBwdWJsaWMgb3B0aW9uczogSW9uaWNEYXRhTG9nZ2VyLkluc3RhbmNlT3B0aW9ucyA9IHtcbiAgICBwZXJpb2Q6IDEwMDAsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBDdXJyZW50RGV2aWNlU2VydmljZSkge1xuICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBNb25pdG9yaW5nQ29udHJvbGxlcih7XG4gICAgICBzdGF0ZTogTW9uaXRvckVuZ2luZS5TdGF0ZS5QQVVTRSxcbiAgICAgIGR1ZVRpbWU6IDAsXG4gICAgICBwZXJpb2Q6IHRoaXMub3B0aW9ucy5wZXJpb2QsXG4gICAgICByZWZyZXNoOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RyZWFtID0gY3JlYXRlTW9uaXRvcmluZ1RpY2tlcih0aGlzLmNvbnRyb2xsZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jIChfKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlcnZpY2UudGFwLmRhdGFMb2cuZGVxdWV1ZSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gcmVhZCBwYWNrZXQnLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXI8RGF0YUxvZ2dlci5SYXdQYWNrZXQgfCB1bmRlZmluZWQsIERhdGFMb2dnZXIuUmF3UGFja2V0PihcbiAgICAgICAgICAodmFsdWUpOiB2YWx1ZSBpcyBEYXRhTG9nZ2VyLlJhd1BhY2tldCA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncGFzcyBmaWx0ZXInLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgICksXG4gICAgICAgIG1hcDxEYXRhTG9nZ2VyLlJhd1BhY2tldCwgSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm8+KChlbnRyeSkgPT4ge1xuICAgICAgICAgIC8vIEZpeCBhcyB2YXJpYWJsZXMgaXMgbm90IHBvcHVsYXRlZCBieSBkZWZhdWx0XG4gICAgICAgICAgLy8gICBpZiAoT2JqZWN0LmtleXMoZW50cnkuZGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gICAgICAgZW50cnkucGFja2V0LnZhcmlhYmxlcyA9IGVudHJ5LnBhY2tldC5yYXdWYXJpYWJsZXM7XG4gICAgICAgICAgLy8gICB9XG4gICAgICAgICAgY29uc3Qgb3V0cHV0ID0gZW50cnkgYXMgSW9uaWNEYXRhTG9nZ2VyLlBhY2tldEluZm87XG4gICAgICAgICAgb3V0cHV0LmRlY29kZWREYXRhID0gZW50cnkuZGF0YTtcbiAgICAgICAgICB0aGlzLnN0b3JlUGFja2V0KG91dHB1dCk7XG4gICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgZ2V0Q2FjaGVGb3JCdW5kbGUoYnVuZGxlSWQ6IG51bWJlcik6IElvbmljRGF0YUxvZ2dlci5DYWNoZVBhY2tldFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9wYWNrZXRQZXJCdW5kbGVzW2J1bmRsZUlkXTtcbiAgfVxuXG4gIHNldCBwZXJpb2QodjogbnVtYmVyKSB7XG4gICAgLy8gY29uc29sZS5pbmZvKGBVcGRhdGUgcGVyaW9kIHRvICR7dn0gbXNgKTtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0UGVyaW9kKHYpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJlYW07XG4gIH1cblxuICBnZXQgcnVubmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnN0YXRlID09PSBNb25pdG9yRW5naW5lLlN0YXRlLlNUQVJUO1xuICB9XG5cbiAgc3RvcmVQYWNrZXQocGFja2V0OiBJb25pY0RhdGFMb2dnZXIuUGFja2V0SW5mbzxSZWNvcmQ8c3RyaW5nLCBhbnk+Pikge1xuICAgIGlmICghKHBhY2tldC5tZXRhLmJ1bmRsZUlkIGluIHRoaXMuX3BhY2tldFBlckJ1bmRsZXMpKSB7XG4gICAgICB0aGlzLl9wYWNrZXRQZXJCdW5kbGVzW3BhY2tldC5tZXRhLmJ1bmRsZUlkXSA9IHtcbiAgICAgICAgbmFtZTogcGFja2V0Lm1ldGEuYnVuZGxlTmFtZSB8fCBgQnVuZGxlICR7cGFja2V0Lm1ldGEuYnVuZGxlSWR9YCxcbiAgICAgICAgaWQ6IHBhY2tldC5tZXRhLmJ1bmRsZUlkLFxuICAgICAgICBwYWNrZXRzOiBbXSxcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuX3BhY2tldFBlckJ1bmRsZXNbcGFja2V0Lm1ldGEuYnVuZGxlSWRdLnBhY2tldHMucHVzaChwYWNrZXQpO1xuXG4gICAgdGhpcy5fZGF0YS5wdXNoKHBhY2tldCk7XG4gICAgdGhpcy5fZGF0YSQubmV4dCh0aGlzLl9kYXRhKTtcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIHRoaXMuY29udHJvbGxlci5wYXVzZSgpO1xuICB9XG5cbiAgc3RvcCgpIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc3RvcCgpO1xuICB9XG5cbiAgc3RhcnQoKSB7XG4gICAgdGhpcy5jb250cm9sbGVyLnN0YXJ0KCk7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzO1xuICB9XG59XG4iXX0=