alimetry-report 0.0.1 → 1.1.0

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/README.md CHANGED
@@ -6,9 +6,14 @@ Selector: `lib-report`
6
6
 
7
7
  ### Config Object
8
8
 
9
+ ```js
9
10
  {
10
- owners: User[],
11
- deviceDataModelId
11
+ owners: string[], // user ids
12
+ deviceDataModelId: string
12
13
  }
14
+ ```
15
+
16
+ ### Dependencies
17
+
18
+ `alimetry-shared` library as a peer dependency
13
19
 
14
- [NOTE:] the widget relies on the user object containing the `userId` field.
@@ -3,7 +3,7 @@ import { map, of } from 'rxjs';
3
3
  import { switchMap } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common/http";
6
- import * as i2 from "shared";
6
+ import * as i2 from "alimetry-shared";
7
7
  import * as i3 from "@angular/common";
8
8
  export class ReportComponent {
9
9
  constructor(http, shared) {
@@ -12,7 +12,7 @@ export class ReportComponent {
12
12
  this.status = 'loading';
13
13
  }
14
14
  getReportUrl() {
15
- return this.shared.getDeviceData(this.config.deviceDataModelId, this.config.owners[0].userId, ['PdfReport']).pipe(map(res => res?.data?.['PdfReport']?.link || null));
15
+ return this.shared.getDeviceData(this.config.deviceDataModelId, this.config.owners[0], ['PdfReport']).pipe(map(res => res?.data?.['PdfReport']?.link || null));
16
16
  }
17
17
  getReportDataUrl(link) {
18
18
  return this.http.get(link, { responseType: 'blob' }).pipe(map(res => {
@@ -41,7 +41,7 @@ export class ReportComponent {
41
41
  });
42
42
  }
43
43
  ngOnInit() {
44
- if (!this.config?.owners?.[0]?.userId) {
44
+ if (!this.config?.owners?.[0]) {
45
45
  this.status = 'nouser';
46
46
  }
47
47
  }
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
105
105
  type: ViewChild,
106
106
  args: ['renderFrame', { static: false }]
107
107
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydC9zcmMvbGliL3JlcG9ydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQStCakMsTUFBTSxPQUFPLGVBQWU7SUFVMUIsWUFBb0IsSUFBZ0IsRUFBVSxNQUFxQjtRQUEvQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUZuRSxXQUFNLEdBQXlELFNBQVMsQ0FBQztJQUVGLENBQUM7SUFFaEUsWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQzVCLENBQUMsV0FBVyxDQUFDLENBQ2QsQ0FBQyxJQUFJLENBQ0osR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUM3RCxPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBRXJDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDMUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNqRSxDQUFDLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFdBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUE7WUFDMUIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxtQ0FBbUMsRUFBRTtvQkFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7aUJBQ3ZCO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2lCQUN2QjtZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pELENBQUM7OzZHQTlEVSxlQUFlO2lHQUFmLGVBQWUsNExBMUJROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQmpDOzRGQUtVLGVBQWU7a0JBM0IzQixTQUFTOytCQUNFLFlBQVksWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJqQzs2SEFNUSxNQUFNO3NCQUFkLEtBQUs7Z0JBR04sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBtYXAsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWcsIFNoYXJlZFNlcnZpY2UgfSBmcm9tICdzaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcmVwb3J0JywgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXR1c1wiICpuZ0lmPVwic3RhdHVzID09PSAnZW1wdHknXCI+XG4gICAgICAgIFRoaXMgdXNlciBkb2Vzbid0IGhhdmUgYSByZXBvcnQuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIiAqbmdJZj1cInN0YXR1cyA9PT0gJ25vdXNlcidcIj5cbiAgICAgICAgVGhlcmUgaXMgbm8gdXNlciBzcGVjaWZpZWQgYXMgdGhlIGRhdGEgb3duZXIuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIiAqbmdJZj1cInN0YXR1cyA9PT0gJ2xvYWRpbmcnXCI+XG4gICAgICAgIExvYWRpbmcgcmVwb3J0IGZvciB1c2VyLi4uXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIiAqbmdJZj1cInN0YXR1cyA9PT0gJ2Vycm9yJ1wiPlxuICAgICAgICBBbiBlcnJvciBvY2N1cmVkIHdoaWxlIHRyeWluZyB0byBnZXQgdGhlIHJlcG9ydC5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFzcGVjdC1yYXRpby1jb250YWluZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7ICdkaXNwbGF5Jzogc3RhdHVzID09PSAnc3VjY2VzcycgPyAnYmxvY2snIDogJ25vbmUnIH1cIlxuICAgICAgPlxuICAgICAgICA8aWZyYW1lICNyZW5kZXJGcmFtZSB0aXRsZT1cIlBERiBSZXBvcnRcIj48L2lmcmFtZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFtcbiAgICBcIi4vcmVwb3J0LmNvbXBvbmVudC5jc3NcIlxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IENvbmZpZztcblxuICBAVmlld0NoaWxkKCdyZW5kZXJGcmFtZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICByZW5kZXJGcmFtZTogRWxlbWVudFJlZjxIVE1MSUZyYW1lRWxlbWVudD4gfCB1bmRlZmluZWQ7XG5cbiAgcmVwb3J0RGF0YVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgc3RhdHVzOiAnZXJyb3InIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2VtcHR5JyB8ICdub3VzZXInID0gJ2xvYWRpbmcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZFNlcnZpY2UpIHsgfVxuXG4gIHByaXZhdGUgZ2V0UmVwb3J0VXJsKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlZC5nZXREZXZpY2VEYXRhKFxuICAgICAgdGhpcy5jb25maWcuZGV2aWNlRGF0YU1vZGVsSWQsXG4gICAgICB0aGlzLmNvbmZpZy5vd25lcnNbMF0udXNlcklkLFxuICAgICAgWydQZGZSZXBvcnQnXVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzPy5kYXRhPy5bJ1BkZlJlcG9ydCddPy5saW5rIHx8IG51bGwpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwb3J0RGF0YVVybChsaW5rOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGxpbmssIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICBjb25zdCBwZGZCbG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKHBkZkJsb2IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gJ25vdXNlcicpIHJldHVybjtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5nZXRSZXBvcnRVcmwoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpbmsgPT4gbGluayA/IHRoaXMuZ2V0UmVwb3J0RGF0YVVybChsaW5rKSA6IG9mKG51bGwpKSxcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAodXJsKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdXJsID8gXCJzdWNjZXNzXCIgOiBcImVtcHR5XCI7XG4gICAgICAgIHRoaXMucmVuZGVyRnJhbWUhLm5hdGl2ZUVsZW1lbnQuc3JjID0gdXJsO1xuICAgICAgICB0aGlzLnJlcG9ydERhdGFVcmwgPSB1cmxcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyLmVycm9yID09IFwiSXRlbU5vdEZvdW5kRXhjZXB0aW9uOiBub25lLWZvdW5kXCIpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFwiZW1wdHlcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBcImVycm9yXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5vd25lcnM/LlswXT8udXNlcklkKSB7XG4gICAgICB0aGlzLnN0YXR1cyA9ICdub3VzZXInO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJlcG9ydERhdGFVcmwpIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5yZXBvcnREYXRhVXJsKTtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydC9zcmMvbGliL3JlcG9ydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQStCakMsTUFBTSxPQUFPLGVBQWU7SUFVMUIsWUFBb0IsSUFBZ0IsRUFBVSxNQUFxQjtRQUEvQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUZuRSxXQUFNLEdBQXlELFNBQVMsQ0FBQztJQUVGLENBQUM7SUFFaEUsWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDckIsQ0FBQyxXQUFXLENBQUMsQ0FDZCxDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUNuRCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQVk7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNSLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE9BQU8sR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUFFLE9BQU87UUFFckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMxQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ2pFLENBQUMsU0FBUyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsV0FBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQTtZQUMxQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLG1DQUFtQyxFQUFFO29CQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztpQkFDdkI7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGFBQWE7WUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6RCxDQUFDOzs2R0E5RFUsZUFBZTtpR0FBZixlQUFlLDRMQTFCUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJqQzs0RkFLVSxlQUFlO2tCQTNCM0IsU0FBUzsrQkFDRSxZQUFZLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCakM7NkhBTVEsTUFBTTtzQkFBZCxLQUFLO2dCQUdOLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWFwLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnLCBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnYWxpbWV0cnktc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXJlcG9ydCcsIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIiAqbmdJZj1cInN0YXR1cyA9PT0gJ2VtcHR5J1wiPlxuICAgICAgICBUaGlzIHVzZXIgZG9lc24ndCBoYXZlIGEgcmVwb3J0LlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgKm5nSWY9XCJzdGF0dXMgPT09ICdub3VzZXInXCI+XG4gICAgICAgIFRoZXJlIGlzIG5vIHVzZXIgc3BlY2lmaWVkIGFzIHRoZSBkYXRhIG93bmVyLlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgKm5nSWY9XCJzdGF0dXMgPT09ICdsb2FkaW5nJ1wiPlxuICAgICAgICBMb2FkaW5nIHJlcG9ydCBmb3IgdXNlci4uLlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgKm5nSWY9XCJzdGF0dXMgPT09ICdlcnJvcidcIj5cbiAgICAgICAgQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSB0cnlpbmcgdG8gZ2V0IHRoZSByZXBvcnQuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhc3BlY3QtcmF0aW8tY29udGFpbmVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieyAnZGlzcGxheSc6IHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnID8gJ2Jsb2NrJyA6ICdub25lJyB9XCJcbiAgICAgID5cbiAgICAgICAgPGlmcmFtZSAjcmVuZGVyRnJhbWUgdGl0bGU9XCJQREYgUmVwb3J0XCI+PC9pZnJhbWU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbXG4gICAgXCIuL3JlcG9ydC5jb21wb25lbnQuY3NzXCJcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWchOiBDb25maWc7XG5cbiAgQFZpZXdDaGlsZCgncmVuZGVyRnJhbWUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcmVuZGVyRnJhbWU6IEVsZW1lbnRSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIHJlcG9ydERhdGFVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN0YXR1czogJ2Vycm9yJyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlbXB0eScgfCAnbm91c2VyJyA9ICdsb2FkaW5nJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc2hhcmVkOiBTaGFyZWRTZXJ2aWNlKSB7IH1cblxuICBwcml2YXRlIGdldFJlcG9ydFVybCgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZWQuZ2V0RGV2aWNlRGF0YShcbiAgICAgIHRoaXMuY29uZmlnLmRldmljZURhdGFNb2RlbElkLFxuICAgICAgdGhpcy5jb25maWcub3duZXJzWzBdLFxuICAgICAgWydQZGZSZXBvcnQnXVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzPy5kYXRhPy5bJ1BkZlJlcG9ydCddPy5saW5rIHx8IG51bGwpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVwb3J0RGF0YVVybChsaW5rOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGxpbmssIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICBjb25zdCBwZGZCbG9iID0gbmV3IEJsb2IoW3Jlc10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKHBkZkJsb2IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gJ25vdXNlcicpIHJldHVybjtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5nZXRSZXBvcnRVcmwoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGxpbmsgPT4gbGluayA/IHRoaXMuZ2V0UmVwb3J0RGF0YVVybChsaW5rKSA6IG9mKG51bGwpKSxcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAodXJsKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gdXJsID8gXCJzdWNjZXNzXCIgOiBcImVtcHR5XCI7XG4gICAgICAgIHRoaXMucmVuZGVyRnJhbWUhLm5hdGl2ZUVsZW1lbnQuc3JjID0gdXJsO1xuICAgICAgICB0aGlzLnJlcG9ydERhdGFVcmwgPSB1cmxcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyLmVycm9yID09IFwiSXRlbU5vdEZvdW5kRXhjZXB0aW9uOiBub25lLWZvdW5kXCIpIHtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFwiZW1wdHlcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBcImVycm9yXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5vd25lcnM/LlswXSkge1xuICAgICAgdGhpcy5zdGF0dXMgPSAnbm91c2VyJztcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yZXBvcnREYXRhVXJsKSBVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMucmVwb3J0RGF0YVVybCk7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, Input, ViewChild, NgModule } from '@angular/core';
3
3
  import { map, switchMap, of } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
- import * as i2 from 'shared';
5
+ import * as i2 from 'alimetry-shared';
6
6
  import * as i3 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
@@ -25,7 +25,7 @@ class ReportComponent {
25
25
  this.status = 'loading';
26
26
  }
27
27
  getReportUrl() {
28
- return this.shared.getDeviceData(this.config.deviceDataModelId, this.config.owners[0].userId, ['PdfReport']).pipe(map(res => { var _a, _b; return ((_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a['PdfReport']) === null || _b === void 0 ? void 0 : _b.link) || null; }));
28
+ return this.shared.getDeviceData(this.config.deviceDataModelId, this.config.owners[0], ['PdfReport']).pipe(map(res => { var _a, _b; return ((_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a['PdfReport']) === null || _b === void 0 ? void 0 : _b.link) || null; }));
29
29
  }
30
30
  getReportDataUrl(link) {
31
31
  return this.http.get(link, { responseType: 'blob' }).pipe(map(res => {
@@ -54,8 +54,8 @@ class ReportComponent {
54
54
  });
55
55
  }
56
56
  ngOnInit() {
57
- var _a, _b, _c;
58
- if (!((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.owners) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.userId)) {
57
+ var _a, _b;
58
+ if (!((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.owners) === null || _b === void 0 ? void 0 : _b[0])) {
59
59
  this.status = 'nouser';
60
60
  }
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"alimetry-report.mjs","sources":["../../../projects/report/src/lib/report.service.ts","../../../projects/report/src/lib/report.component.ts","../../../projects/report/src/lib/report.module.ts","../../../projects/report/src/public-api.ts","../../../projects/report/src/alimetry-report.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReportService {\n\n constructor() { }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, of, Subscription } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { Config, SharedService } from 'shared';\n\n@Component({\n selector: 'lib-report', template: `\n <div class=\"wrapper\">\n <div class=\"status\" *ngIf=\"status === 'empty'\">\n This user doesn't have a report.\n </div>\n <div class=\"status\" *ngIf=\"status === 'nouser'\">\n There is no user specified as the data owner.\n </div>\n <div class=\"status\" *ngIf=\"status === 'loading'\">\n Loading report for user...\n </div>\n <div class=\"status\" *ngIf=\"status === 'error'\">\n An error occured while trying to get the report.\n </div>\n <div\n class=\"aspect-ratio-container\"\n [ngStyle]=\"{ 'display': status === 'success' ? 'block' : 'none' }\"\n >\n <iframe #renderFrame title=\"PDF Report\"></iframe>\n </div>\n </div>\n `,\n styleUrls: [\n \"./report.component.css\"\n ]\n})\nexport class ReportComponent implements OnDestroy {\n @Input() config!: Config;\n\n @ViewChild('renderFrame', { static: false })\n renderFrame: ElementRef<HTMLIFrameElement> | undefined;\n\n reportDataUrl: string | undefined;\n subscription: Subscription;\n status: 'error' | 'loading' | 'success' | 'empty' | 'nouser' = 'loading';\n\n constructor(private http: HttpClient, private shared: SharedService) { }\n\n private getReportUrl(): Observable<string | null> {\n return this.shared.getDeviceData(\n this.config.deviceDataModelId,\n this.config.owners[0].userId,\n ['PdfReport']\n ).pipe(\n map(res => res?.data?.['PdfReport']?.link || null)\n );\n }\n\n private getReportDataUrl(link: string): Observable<string> {\n return this.http.get(link, { responseType: 'blob' }).pipe(\n map(res => {\n const pdfBlob = new Blob([res], { type: 'application/pdf' });\n return URL.createObjectURL(pdfBlob);\n })\n );\n }\n\n ngAfterViewInit() {\n if (this.status === 'nouser') return;\n\n this.subscription = this.getReportUrl().pipe(\n switchMap(link => link ? this.getReportDataUrl(link) : of(null)),\n ).subscribe({\n next: (url) => {\n this.status = url ? \"success\" : \"empty\";\n this.renderFrame!.nativeElement.src = url;\n this.reportDataUrl = url\n },\n error: (err) => {\n if (err.error == \"ItemNotFoundException: none-found\") {\n this.status = \"empty\";\n } else {\n console.error(err);\n this.status = \"error\";\n }\n },\n });\n }\n\n ngOnInit() {\n if (!this.config?.owners?.[0]?.userId) {\n this.status = 'nouser';\n }\n }\n\n ngOnDestroy() {\n if (this.reportDataUrl) URL.revokeObjectURL(this.reportDataUrl);\n if (this.subscription) this.subscription.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReportComponent } from './report.component';\n\n\n\n@NgModule({\n declarations: [\n ReportComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ReportComponent\n ]\n})\nexport class ReportModule { }\n","/*\n * Public API Surface of report\n */\n\nexport * from './lib/report.service';\nexport * from './lib/report.component';\nexport * from './lib/report.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alimetry-report.mjs","sources":["../../../projects/report/src/lib/report.service.ts","../../../projects/report/src/lib/report.component.ts","../../../projects/report/src/lib/report.module.ts","../../../projects/report/src/public-api.ts","../../../projects/report/src/alimetry-report.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReportService {\n\n constructor() { }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, of, Subscription } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { Config, SharedService } from 'alimetry-shared';\n\n@Component({\n selector: 'lib-report', template: `\n <div class=\"wrapper\">\n <div class=\"status\" *ngIf=\"status === 'empty'\">\n This user doesn't have a report.\n </div>\n <div class=\"status\" *ngIf=\"status === 'nouser'\">\n There is no user specified as the data owner.\n </div>\n <div class=\"status\" *ngIf=\"status === 'loading'\">\n Loading report for user...\n </div>\n <div class=\"status\" *ngIf=\"status === 'error'\">\n An error occured while trying to get the report.\n </div>\n <div\n class=\"aspect-ratio-container\"\n [ngStyle]=\"{ 'display': status === 'success' ? 'block' : 'none' }\"\n >\n <iframe #renderFrame title=\"PDF Report\"></iframe>\n </div>\n </div>\n `,\n styleUrls: [\n \"./report.component.css\"\n ]\n})\nexport class ReportComponent implements OnDestroy {\n @Input() config!: Config;\n\n @ViewChild('renderFrame', { static: false })\n renderFrame: ElementRef<HTMLIFrameElement> | undefined;\n\n reportDataUrl: string | undefined;\n subscription: Subscription;\n status: 'error' | 'loading' | 'success' | 'empty' | 'nouser' = 'loading';\n\n constructor(private http: HttpClient, private shared: SharedService) { }\n\n private getReportUrl(): Observable<string | null> {\n return this.shared.getDeviceData(\n this.config.deviceDataModelId,\n this.config.owners[0],\n ['PdfReport']\n ).pipe(\n map(res => res?.data?.['PdfReport']?.link || null)\n );\n }\n\n private getReportDataUrl(link: string): Observable<string> {\n return this.http.get(link, { responseType: 'blob' }).pipe(\n map(res => {\n const pdfBlob = new Blob([res], { type: 'application/pdf' });\n return URL.createObjectURL(pdfBlob);\n })\n );\n }\n\n ngAfterViewInit() {\n if (this.status === 'nouser') return;\n\n this.subscription = this.getReportUrl().pipe(\n switchMap(link => link ? this.getReportDataUrl(link) : of(null)),\n ).subscribe({\n next: (url) => {\n this.status = url ? \"success\" : \"empty\";\n this.renderFrame!.nativeElement.src = url;\n this.reportDataUrl = url\n },\n error: (err) => {\n if (err.error == \"ItemNotFoundException: none-found\") {\n this.status = \"empty\";\n } else {\n console.error(err);\n this.status = \"error\";\n }\n },\n });\n }\n\n ngOnInit() {\n if (!this.config?.owners?.[0]) {\n this.status = 'nouser';\n }\n }\n\n ngOnDestroy() {\n if (this.reportDataUrl) URL.revokeObjectURL(this.reportDataUrl);\n if (this.subscription) this.subscription.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReportComponent } from './report.component';\n\n\n\n@NgModule({\n declarations: [\n ReportComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ReportComponent\n ]\n})\nexport class ReportModule { }\n","/*\n * Public API Surface of report\n */\n\nexport * from './lib/report.service';\nexport * from './lib/report.component';\nexport * from './lib/report.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, Input, ViewChild, NgModule } from '@angular/core';
3
3
  import { map, switchMap, of } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
- import * as i2 from 'shared';
5
+ import * as i2 from 'alimetry-shared';
6
6
  import * as i3 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
 
@@ -25,7 +25,7 @@ class ReportComponent {
25
25
  this.status = 'loading';
26
26
  }
27
27
  getReportUrl() {
28
- return this.shared.getDeviceData(this.config.deviceDataModelId, this.config.owners[0].userId, ['PdfReport']).pipe(map(res => res?.data?.['PdfReport']?.link || null));
28
+ return this.shared.getDeviceData(this.config.deviceDataModelId, this.config.owners[0], ['PdfReport']).pipe(map(res => res?.data?.['PdfReport']?.link || null));
29
29
  }
30
30
  getReportDataUrl(link) {
31
31
  return this.http.get(link, { responseType: 'blob' }).pipe(map(res => {
@@ -54,7 +54,7 @@ class ReportComponent {
54
54
  });
55
55
  }
56
56
  ngOnInit() {
57
- if (!this.config?.owners?.[0]?.userId) {
57
+ if (!this.config?.owners?.[0]) {
58
58
  this.status = 'nouser';
59
59
  }
60
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"alimetry-report.mjs","sources":["../../../projects/report/src/lib/report.service.ts","../../../projects/report/src/lib/report.component.ts","../../../projects/report/src/lib/report.module.ts","../../../projects/report/src/public-api.ts","../../../projects/report/src/alimetry-report.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReportService {\n\n constructor() { }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, of, Subscription } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { Config, SharedService } from 'shared';\n\n@Component({\n selector: 'lib-report', template: `\n <div class=\"wrapper\">\n <div class=\"status\" *ngIf=\"status === 'empty'\">\n This user doesn't have a report.\n </div>\n <div class=\"status\" *ngIf=\"status === 'nouser'\">\n There is no user specified as the data owner.\n </div>\n <div class=\"status\" *ngIf=\"status === 'loading'\">\n Loading report for user...\n </div>\n <div class=\"status\" *ngIf=\"status === 'error'\">\n An error occured while trying to get the report.\n </div>\n <div\n class=\"aspect-ratio-container\"\n [ngStyle]=\"{ 'display': status === 'success' ? 'block' : 'none' }\"\n >\n <iframe #renderFrame title=\"PDF Report\"></iframe>\n </div>\n </div>\n `,\n styleUrls: [\n \"./report.component.css\"\n ]\n})\nexport class ReportComponent implements OnDestroy {\n @Input() config!: Config;\n\n @ViewChild('renderFrame', { static: false })\n renderFrame: ElementRef<HTMLIFrameElement> | undefined;\n\n reportDataUrl: string | undefined;\n subscription: Subscription;\n status: 'error' | 'loading' | 'success' | 'empty' | 'nouser' = 'loading';\n\n constructor(private http: HttpClient, private shared: SharedService) { }\n\n private getReportUrl(): Observable<string | null> {\n return this.shared.getDeviceData(\n this.config.deviceDataModelId,\n this.config.owners[0].userId,\n ['PdfReport']\n ).pipe(\n map(res => res?.data?.['PdfReport']?.link || null)\n );\n }\n\n private getReportDataUrl(link: string): Observable<string> {\n return this.http.get(link, { responseType: 'blob' }).pipe(\n map(res => {\n const pdfBlob = new Blob([res], { type: 'application/pdf' });\n return URL.createObjectURL(pdfBlob);\n })\n );\n }\n\n ngAfterViewInit() {\n if (this.status === 'nouser') return;\n\n this.subscription = this.getReportUrl().pipe(\n switchMap(link => link ? this.getReportDataUrl(link) : of(null)),\n ).subscribe({\n next: (url) => {\n this.status = url ? \"success\" : \"empty\";\n this.renderFrame!.nativeElement.src = url;\n this.reportDataUrl = url\n },\n error: (err) => {\n if (err.error == \"ItemNotFoundException: none-found\") {\n this.status = \"empty\";\n } else {\n console.error(err);\n this.status = \"error\";\n }\n },\n });\n }\n\n ngOnInit() {\n if (!this.config?.owners?.[0]?.userId) {\n this.status = 'nouser';\n }\n }\n\n ngOnDestroy() {\n if (this.reportDataUrl) URL.revokeObjectURL(this.reportDataUrl);\n if (this.subscription) this.subscription.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReportComponent } from './report.component';\n\n\n\n@NgModule({\n declarations: [\n ReportComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ReportComponent\n ]\n})\nexport class ReportModule { }\n","/*\n * Public API Surface of report\n */\n\nexport * from './lib/report.service';\nexport * from './lib/report.component';\nexport * from './lib/report.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAKa,aAAa,CAAA;AAExB,IAAA,WAAA,GAAA,GAAiB;;2GAFN,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC+BY,eAAe,CAAA;IAU1B,WAAoB,CAAA,IAAgB,EAAU,MAAqB,EAAA;QAA/C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAFnE,IAAM,CAAA,MAAA,GAAyD,SAAS,CAAC;KAED;IAEhE,YAAY,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAC9B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAC5B,CAAC,WAAW,CAAC,CACd,CAAC,IAAI,CACJ,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CACnD,CAAC;KACH;AAEO,IAAA,gBAAgB,CAAC,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC7D,YAAA,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACrC,CAAC,CACH,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;AAErC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAC1C,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CACjE,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,OAAO,CAAC;gBACxC,IAAI,CAAC,WAAY,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;AAC1C,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAA;aACzB;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,GAAG,CAAC,KAAK,IAAI,mCAAmC,EAAE;AACpD,oBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,oBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AACvB,iBAAA;aACF;AACF,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACxB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACxD;;6GA9DU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EA1BQ,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBjC,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAKU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3B3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAY,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBjC,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,CAAA;6HAMQ,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCrBhC,YAAY,CAAA;;0GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EATrB,YAAA,EAAA,CAAA,eAAe,CAGf,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YANrB,YAAY,CAAA,EAAA,CAAA,CAAA;4FAMH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACF,iBAAA,CAAA;;;AChBD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"alimetry-report.mjs","sources":["../../../projects/report/src/lib/report.service.ts","../../../projects/report/src/lib/report.component.ts","../../../projects/report/src/lib/report.module.ts","../../../projects/report/src/public-api.ts","../../../projects/report/src/alimetry-report.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReportService {\n\n constructor() { }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { map, of, Subscription } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { Config, SharedService } from 'alimetry-shared';\n\n@Component({\n selector: 'lib-report', template: `\n <div class=\"wrapper\">\n <div class=\"status\" *ngIf=\"status === 'empty'\">\n This user doesn't have a report.\n </div>\n <div class=\"status\" *ngIf=\"status === 'nouser'\">\n There is no user specified as the data owner.\n </div>\n <div class=\"status\" *ngIf=\"status === 'loading'\">\n Loading report for user...\n </div>\n <div class=\"status\" *ngIf=\"status === 'error'\">\n An error occured while trying to get the report.\n </div>\n <div\n class=\"aspect-ratio-container\"\n [ngStyle]=\"{ 'display': status === 'success' ? 'block' : 'none' }\"\n >\n <iframe #renderFrame title=\"PDF Report\"></iframe>\n </div>\n </div>\n `,\n styleUrls: [\n \"./report.component.css\"\n ]\n})\nexport class ReportComponent implements OnDestroy {\n @Input() config!: Config;\n\n @ViewChild('renderFrame', { static: false })\n renderFrame: ElementRef<HTMLIFrameElement> | undefined;\n\n reportDataUrl: string | undefined;\n subscription: Subscription;\n status: 'error' | 'loading' | 'success' | 'empty' | 'nouser' = 'loading';\n\n constructor(private http: HttpClient, private shared: SharedService) { }\n\n private getReportUrl(): Observable<string | null> {\n return this.shared.getDeviceData(\n this.config.deviceDataModelId,\n this.config.owners[0],\n ['PdfReport']\n ).pipe(\n map(res => res?.data?.['PdfReport']?.link || null)\n );\n }\n\n private getReportDataUrl(link: string): Observable<string> {\n return this.http.get(link, { responseType: 'blob' }).pipe(\n map(res => {\n const pdfBlob = new Blob([res], { type: 'application/pdf' });\n return URL.createObjectURL(pdfBlob);\n })\n );\n }\n\n ngAfterViewInit() {\n if (this.status === 'nouser') return;\n\n this.subscription = this.getReportUrl().pipe(\n switchMap(link => link ? this.getReportDataUrl(link) : of(null)),\n ).subscribe({\n next: (url) => {\n this.status = url ? \"success\" : \"empty\";\n this.renderFrame!.nativeElement.src = url;\n this.reportDataUrl = url\n },\n error: (err) => {\n if (err.error == \"ItemNotFoundException: none-found\") {\n this.status = \"empty\";\n } else {\n console.error(err);\n this.status = \"error\";\n }\n },\n });\n }\n\n ngOnInit() {\n if (!this.config?.owners?.[0]) {\n this.status = 'nouser';\n }\n }\n\n ngOnDestroy() {\n if (this.reportDataUrl) URL.revokeObjectURL(this.reportDataUrl);\n if (this.subscription) this.subscription.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReportComponent } from './report.component';\n\n\n\n@NgModule({\n declarations: [\n ReportComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ReportComponent\n ]\n})\nexport class ReportModule { }\n","/*\n * Public API Surface of report\n */\n\nexport * from './lib/report.service';\nexport * from './lib/report.component';\nexport * from './lib/report.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAKa,aAAa,CAAA;AAExB,IAAA,WAAA,GAAA,GAAiB;;2GAFN,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC+BY,eAAe,CAAA;IAU1B,WAAoB,CAAA,IAAgB,EAAU,MAAqB,EAAA;QAA/C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAFnE,IAAM,CAAA,MAAA,GAAyD,SAAS,CAAC;KAED;IAEhE,YAAY,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAC9B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,CAAC,WAAW,CAAC,CACd,CAAC,IAAI,CACJ,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CACnD,CAAC;KACH;AAEO,IAAA,gBAAgB,CAAC,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC7D,YAAA,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACrC,CAAC,CACH,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;AAErC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAC1C,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CACjE,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,OAAO,CAAC;gBACxC,IAAI,CAAC,WAAY,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;AAC1C,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAA;aACzB;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,GAAG,CAAC,KAAK,IAAI,mCAAmC,EAAE;AACpD,oBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,oBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AACvB,iBAAA;aACF;AACF,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACxB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACxD;;6GA9DU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EA1BQ,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBjC,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAKU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3B3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAY,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBjC,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,CAAA;6HAMQ,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MCrBhC,YAAY,CAAA;;0GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EATrB,YAAA,EAAA,CAAA,eAAe,CAGf,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YANrB,YAAY,CAAA,EAAA,CAAA,CAAA;4FAMH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACF,iBAAA,CAAA;;;AChBD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -2,7 +2,7 @@ import { ElementRef } from '@angular/core';
2
2
  import { HttpClient } from '@angular/common/http';
3
3
  import { Subscription } from 'rxjs';
4
4
  import { OnDestroy } from '@angular/core';
5
- import { Config, SharedService } from 'shared';
5
+ import { Config, SharedService } from 'alimetry-shared';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class ReportComponent implements OnDestroy {
8
8
  private http;
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "alimetry-report",
3
- "version": "0.0.1",
3
+ "version": "1.1.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.0",
6
- "@angular/core": "^15.2.0"
6
+ "@angular/core": "^15.2.0",
7
+ "alimetry-shared": "^1.0.0"
7
8
  },
8
9
  "dependencies": {
9
10
  "tslib": "^2.3.0"