@huntsman-cancer-institute/reporting-framework 17.3.4 → 17.5.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.
|
@@ -42,7 +42,7 @@ export class ReportDatepickerComponent {
|
|
|
42
42
|
<div class="d-flex" style="width: 100%;">
|
|
43
43
|
<input matInput [matDatepicker]="picker" class="form-control" style="cursor: pointer;" [placeholder]="placeholder" [ngModel]="value" (ngModelChange)="onChange($event)"
|
|
44
44
|
(click)="picker.open()" (blur)="onBlur()" [min]="minDate" [max]="maxDate"
|
|
45
|
-
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}"
|
|
45
|
+
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}" attr.aria-label="hci-ng-report-date-picker-{{placeholder}}">
|
|
46
46
|
<span class="input-group-text" id="clearIcon" (click)="clear()"><i class="fas fa-times"></i></span>
|
|
47
47
|
<button class="btn btn-outline-secondary" type="button" (click)="picker.open()" style="height:32px; width:32px;"><i class="fas fa-calendar-alt"></i></button>
|
|
48
48
|
<mat-datepicker #picker ></mat-datepicker>
|
|
@@ -55,7 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
55
55
|
<div class="d-flex" style="width: 100%;">
|
|
56
56
|
<input matInput [matDatepicker]="picker" class="form-control" style="cursor: pointer;" [placeholder]="placeholder" [ngModel]="value" (ngModelChange)="onChange($event)"
|
|
57
57
|
(click)="picker.open()" (blur)="onBlur()" [min]="minDate" [max]="maxDate"
|
|
58
|
-
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}"
|
|
58
|
+
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}" attr.aria-label="hci-ng-report-date-picker-{{placeholder}}">
|
|
59
59
|
<span class="input-group-text" id="clearIcon" (click)="clear()"><i class="fas fa-times"></i></span>
|
|
60
60
|
<button class="btn btn-outline-secondary" type="button" (click)="picker.open()" style="height:32px; width:32px;"><i class="fas fa-calendar-alt"></i></button>
|
|
61
61
|
<mat-datepicker #picker ></mat-datepicker>
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
76
76
|
}], valueChange: [{
|
|
77
77
|
type: Output
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0aW5nLWZyYW1ld29yay9zcmMvZGF0ZXBpY2tlci9yZXBvcnQtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBMkJ2RCxNQUFNLE9BQU8seUJBQXlCO0lBekJ0QztRQThCVyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXhCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQStCNUM7SUE3QkMsUUFBUTtRQUNOLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIscURBQXFEO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBQ0QsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUFRO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzs4R0FyQ1UseUJBQXlCO2tHQUF6Qix5QkFBeUIseU1BSnpCO1lBQ1QsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUM7U0FDOUMsMEJBckJTOzs7Ozs7Ozs7R0FTVDs7MkZBY1UseUJBQXlCO2tCQXpCckMsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkI7Ozs7Ozs7OztHQVNULGFBVVU7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUM7cUJBQzlDOzhCQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01BVF9EQVRFX0xPQ0FMRX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJlcG9ydC1kYXRlcGlja2VyXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbbmdNb2RlbF09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFttaW5dPVwibWluRGF0ZVwiIFttYXhdPVwibWF4RGF0ZVwiXHJcbiAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOmludmFsaWQgPyAncmVkJyA6ICcjZmZmJ31cIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctcmVwb3J0LWRhdGUtcGlja2VyLXt7cGxhY2Vob2xkZXJ9fVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImNsZWFySWNvblwiIChjbGljayk9XCJjbGVhcigpXCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+PC9zcGFuPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiIHN0eWxlPVwiaGVpZ2h0OjMycHg7IHdpZHRoOjMycHg7XCI+PGkgY2xhc3M9XCJmYXMgZmEtY2FsZW5kYXItYWx0XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlciA+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgI2NsZWFySWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuICAgICNjbGVhckljb246SG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzMsIDgwLCA4Nyk7XHJcbiAgICAgIGNvbG9yOiByZ2IoMjMzLCAyMzYsIDIzOSlcclxuICAgIH1cclxuICBgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiBcImVuLUdCXCJ9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0RGF0ZXBpY2tlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdmFsdWU6IERhdGU7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGU7XHJcbiAgQElucHV0KCkgaW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIC8vIHNldCB0aGUgbWluRGF0ZSB0byAyMCB5ZWFycyBpbiB0aGUgcGFzdCBieSBkZWZhdWx0XHJcbiAgICBpZiAoIXRoaXMubWluRGF0ZSkge1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSh0b2RheS5nZXRGdWxsWWVhcigpIC0gMjAsIHRvZGF5LmdldE1vbnRoKCksIHRvZGF5LmdldERhdGUoKSk7XHJcbiAgICB9XHJcbiAgICAvLyBzZXQgbWF4IGRhdGUgdG8gMjAgeWVhcnMgaW4gZnV0dXJlIGJ5IGRlZmF1bHRcclxuICAgIGlmICghdGhpcy5tYXhEYXRlKSB7XHJcbiAgICAgIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAyMCwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKG5ld1ZhbHVlKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvLyBDbGVhciBpbnB1dCBmaWVsZCBpZiBlbnRlcmVkIGRhdGEgaXMgaW52YWxpZCAoTWF0IGxpYnJhcnkgc2V0cyB2YWx1ZSB0byBudWxsIGlmIGludmFsaWQgYnV0IGRvZXNuJ3QgY2xlYXIgaW5wdXQpXHJcbiAgb25CbHVyKCkge1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -16,7 +16,7 @@ export class FormatComponent {
|
|
|
16
16
|
[id]="format.name"
|
|
17
17
|
[checked]="selectedValue === format.name ? true : false"
|
|
18
18
|
(click)="selectFormat(radio.value)"
|
|
19
|
-
name="format">
|
|
19
|
+
name="format" attr.aria-label="hci-ng-format-{{selectedValue}}">
|
|
20
20
|
<label>{{format.caption}}</label>
|
|
21
21
|
</div>
|
|
22
22
|
`, isInline: true, styles: [".radio-pair{display:flex;align-items:center;padding-right:5px}\n"] }); }
|
|
@@ -30,7 +30,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
30
30
|
[id]="format.name"
|
|
31
31
|
[checked]="selectedValue === format.name ? true : false"
|
|
32
32
|
(click)="selectFormat(radio.value)"
|
|
33
|
-
name="format">
|
|
33
|
+
name="format" attr.aria-label="hci-ng-format-{{selectedValue}}">
|
|
34
34
|
<label>{{format.caption}}</label>
|
|
35
35
|
</div>
|
|
36
36
|
`, styles: [".radio-pair{display:flex;align-items:center;padding-right:5px}\n"] }]
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
39
39
|
}], selectedValueChange: [{
|
|
40
40
|
type: Output
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydGluZy1mcmFtZXdvcmsvc3JjL2Zvcm1hdC9mb3JtYXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBeUJyRSxNQUFNLE9BQU8sZUFBZTtJQXJCNUI7UUF3QmMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQVM5RDtJQUxHLFlBQVksQ0FBQyxDQUFTO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FWUSxlQUFlO2tHQUFmLGVBQWUsdUpBbkJkOzs7Ozs7Ozs7O0tBVVQ7OzJGQVNRLGVBQWU7a0JBckIzQixTQUFTOytCQUNJLFlBQVksWUFDWjs7Ozs7Ozs7OztLQVVUOzhCQVdRLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtYXR9IGZyb20gXCIuLi9tb2RlbC9mb3JtYXQubW9kZWxcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImhjaS1mb3JtYXRcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLXBhaXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiICNyYWRpb1xyXG4gICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1hdC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJmb3JtYXQubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFZhbHVlID09PSBmb3JtYXQubmFtZSA/
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydGluZy1mcmFtZXdvcmsvc3JjL2Zvcm1hdC9mb3JtYXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBeUJyRSxNQUFNLE9BQU8sZUFBZTtJQXJCNUI7UUF3QmMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQVM5RDtJQUxHLFlBQVksQ0FBQyxDQUFTO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FWUSxlQUFlO2tHQUFmLGVBQWUsdUpBbkJkOzs7Ozs7Ozs7O0tBVVQ7OzJGQVNRLGVBQWU7a0JBckIzQixTQUFTOytCQUNJLFlBQVksWUFDWjs7Ozs7Ozs7OztLQVVUOzhCQVdRLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtYXR9IGZyb20gXCIuLi9tb2RlbC9mb3JtYXQubW9kZWxcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImhjaS1mb3JtYXRcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLXBhaXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiICNyYWRpb1xyXG4gICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1hdC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJmb3JtYXQubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFZhbHVlID09PSBmb3JtYXQubmFtZSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Rm9ybWF0KHJhZGlvLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICBuYW1lPVwiZm9ybWF0XCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWZvcm1hdC17e3NlbGVjdGVkVmFsdWV9fVwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+e3tmb3JtYXQuY2FwdGlvbn19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBzdHlsZXM6IFtgXHJcbiAgICAgICAgLnJhZGlvLXBhaXJ7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcclxuICAgICAgICB9XHJcbiAgICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybWF0Q29tcG9uZW50IHtcclxuXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIGZvcm1hdDogRm9ybWF0O1xyXG5cclxuICAgIHNlbGVjdEZvcm1hdChzOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBzO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KHMpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -91,7 +91,7 @@ class ReportDatepickerComponent {
|
|
|
91
91
|
<div class="d-flex" style="width: 100%;">
|
|
92
92
|
<input matInput [matDatepicker]="picker" class="form-control" style="cursor: pointer;" [placeholder]="placeholder" [ngModel]="value" (ngModelChange)="onChange($event)"
|
|
93
93
|
(click)="picker.open()" (blur)="onBlur()" [min]="minDate" [max]="maxDate"
|
|
94
|
-
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}"
|
|
94
|
+
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}" attr.aria-label="hci-ng-report-date-picker-{{placeholder}}">
|
|
95
95
|
<span class="input-group-text" id="clearIcon" (click)="clear()"><i class="fas fa-times"></i></span>
|
|
96
96
|
<button class="btn btn-outline-secondary" type="button" (click)="picker.open()" style="height:32px; width:32px;"><i class="fas fa-calendar-alt"></i></button>
|
|
97
97
|
<mat-datepicker #picker ></mat-datepicker>
|
|
@@ -104,7 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
104
104
|
<div class="d-flex" style="width: 100%;">
|
|
105
105
|
<input matInput [matDatepicker]="picker" class="form-control" style="cursor: pointer;" [placeholder]="placeholder" [ngModel]="value" (ngModelChange)="onChange($event)"
|
|
106
106
|
(click)="picker.open()" (blur)="onBlur()" [min]="minDate" [max]="maxDate"
|
|
107
|
-
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}"
|
|
107
|
+
[ngStyle]="{'background-color':invalid ? 'red' : '#fff'}" attr.aria-label="hci-ng-report-date-picker-{{placeholder}}">
|
|
108
108
|
<span class="input-group-text" id="clearIcon" (click)="clear()"><i class="fas fa-times"></i></span>
|
|
109
109
|
<button class="btn btn-outline-secondary" type="button" (click)="picker.open()" style="height:32px; width:32px;"><i class="fas fa-calendar-alt"></i></button>
|
|
110
110
|
<mat-datepicker #picker ></mat-datepicker>
|
|
@@ -413,7 +413,7 @@ class FormatComponent {
|
|
|
413
413
|
[id]="format.name"
|
|
414
414
|
[checked]="selectedValue === format.name ? true : false"
|
|
415
415
|
(click)="selectFormat(radio.value)"
|
|
416
|
-
name="format">
|
|
416
|
+
name="format" attr.aria-label="hci-ng-format-{{selectedValue}}">
|
|
417
417
|
<label>{{format.caption}}</label>
|
|
418
418
|
</div>
|
|
419
419
|
`, isInline: true, styles: [".radio-pair{display:flex;align-items:center;padding-right:5px}\n"] }); }
|
|
@@ -427,7 +427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
427
427
|
[id]="format.name"
|
|
428
428
|
[checked]="selectedValue === format.name ? true : false"
|
|
429
429
|
(click)="selectFormat(radio.value)"
|
|
430
|
-
name="format">
|
|
430
|
+
name="format" attr.aria-label="hci-ng-format-{{selectedValue}}">
|
|
431
431
|
<label>{{format.caption}}</label>
|
|
432
432
|
</div>
|
|
433
433
|
`, styles: [".radio-pair{display:flex;align-items:center;padding-right:5px}\n"] }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huntsman-cancer-institute-reporting-framework.mjs","sources":["../../../projects/reporting-framework/src/model/report.model.ts","../../../projects/reporting-framework/src/model/param.model.ts","../../../projects/reporting-framework/src/datepicker/report-datepicker.component.ts","../../../projects/reporting-framework/src/parameter/parameter.component.ts","../../../projects/reporting-framework/src/model/option.model.ts","../../../projects/reporting-framework/src/model/report-tab.model.ts","../../../projects/reporting-framework/src/model/format.model.ts","../../../projects/reporting-framework/src/format/format.component.ts","../../../projects/reporting-framework/src/spinner/spinner-dialog.component.ts","../../../projects/reporting-framework/src/spinner/dialogs.service.ts","../../../projects/reporting-framework/src/resizable-divider/resizable-section-divider.component.ts","../../../projects/reporting-framework/src/reporting-framework.component.ts","../../../projects/reporting-framework/src/report.module.ts","../../../projects/reporting-framework/src/huntsman-cancer-institute-reporting-framework.ts"],"sourcesContent":["import {Param} from \"./param.model\";\r\nimport {Format} from \"./format.model\";\r\n\r\nexport class Report {\r\n\r\n public name: string;\r\n public title: string;\r\n public description: string;\r\n public className: string;\r\n public fileName: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n public help: string;\r\n\r\n public params: Param[] = [];\r\n public formats: Format[] = [];\r\n}\r\n","import {Option} from \"./option.model\";\r\n\r\nexport class Param {\r\n\r\n public caption: string;\r\n public name: string;\r\n public type: string;\r\n public className: string;\r\n public valueXPath: string;\r\n public displayXPath: string;\r\n public activeOnly: boolean = true;\r\n public displayOrder: number;\r\n public sortField: string;\r\n public sortNumeric: boolean = false;\r\n public filterField: string = \"\";\r\n\r\n public options: Option[] = [];\r\n\r\n public selectedValue: any;\r\n public selectedValueList: any[] = []; //for multi-select\r\n public dictAPILeadIn: string;\r\n\r\n public calculateDictionaryURL(): string {\r\n let out: string = \"\";\r\n\r\n if(this.activeOnly) {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/active-entries\";\r\n }else {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/entries\";\r\n }\r\n\r\n if(this.filterField) {\r\n out = out + \"?\" + this.filterField;\r\n }\r\n\r\n return out;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {MAT_DATE_LOCALE} from \"@angular/material/core\";\r\n\r\n@Component({\r\n selector: \"report-datepicker\",\r\n template: `\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <input matInput [matDatepicker]=\"picker\" class=\"form-control\" style=\"cursor: pointer;\" [placeholder]=\"placeholder\" [ngModel]=\"value\" (ngModelChange)=\"onChange($event)\"\r\n (click)=\"picker.open()\" (blur)=\"onBlur()\" [min]=\"minDate\" [max]=\"maxDate\"\r\n [ngStyle]=\"{'background-color':invalid ? 'red' : '#fff'}\" >\r\n <span class=\"input-group-text\" id=\"clearIcon\" (click)=\"clear()\"><i class=\"fas fa-times\"></i></span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"picker.open()\" style=\"height:32px; width:32px;\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n <mat-datepicker #picker ></mat-datepicker>\r\n </div>\r\n `,\r\n styles: [`\r\n #clearIcon {\r\n cursor: pointer;\r\n }\r\n #clearIcon:Hover {\r\n background-color: rgb(73, 80, 87);\r\n color: rgb(233, 236, 239)\r\n }\r\n `],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: \"en-GB\"}\r\n ]\r\n})\r\nexport class ReportDatepickerComponent {\r\n @Input() value: Date;\r\n @Input() placeholder: string;\r\n @Input() minDate: Date;\r\n @Input() maxDate: Date;\r\n @Input() invalid: boolean = false;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n let today = new Date();\r\n // set the minDate to 20 years in the past by default\r\n if (!this.minDate) {\r\n this.minDate = new Date(today.getFullYear() - 20, today.getMonth(), today.getDate());\r\n }\r\n // set max date to 20 years in future by default\r\n if (!this.maxDate) {\r\n this.maxDate = new Date(today.getFullYear() + 20, today.getMonth(), today.getDate());\r\n }\r\n }\r\n\r\n onChange(newValue) {\r\n this.value = newValue;\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n clear() {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n\r\n // Clear input field if entered data is invalid (Mat library sets value to null if invalid but doesn't clear input)\r\n onBlur() {\r\n if (!this.value) {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n }\r\n}\r\n\r\n","import {Component} from \"@angular/core\";\r\nimport {Param} from \"../model/param.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-parameter\",\r\n template: `\r\n\r\n <!--Text Input-->\r\n <ng-container *ngIf=\"param.type === 'input'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <input type=\"text\" class=\"form-control input-field\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Date-->\r\n <ng-container *ngIf=\"param.type === 'date'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <report-datepicker class=\"date-input\"\r\n placeholder=\"\"\r\n id=\"{{param.name}}\"\r\n [(value)]=\"param.selectedValue\"\r\n >\r\n </report-datepicker>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'select' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'select' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [entries] = \"entries\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [entries] = \"entries\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Radio buttons-->\r\n <ng-container *ngIf=\"param.type === 'radio'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <div class=\"radio-pair\" *ngFor=\"let o of param.options\">\r\n <input type=\"radio\"\r\n style=\"margin-right: 3px;\"\r\n [value]=\"o.value\"\r\n [id]=\"param.name + '-' + o.value\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [name]=\"param.name\">\r\n <label for=\"{{param.name + '-' + o.value}}\">{{o.display}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n `,\r\n styles: [`\r\n\r\n .data-label{\r\n width: 270px;\r\n margin-right: 30px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n }\r\n\r\n .date-input{\r\n width: 45%;\r\n }\r\n\r\n .report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .multi-report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n margin-right: 15px;\r\n }\r\n\r\n .input-field{\r\n width: 45%\r\n }\r\n `]\r\n})\r\nexport class ParameterComponent {\r\n\r\n param: Param;\r\n entries: any[];\r\n\r\n setParam(p: Param) {\r\n this.param = p;\r\n\r\n if(this.param.type === \"radio\") { //if radio, auto select first option\r\n let o = this.param.options[0];\r\n this.param.selectedValue = o.value;\r\n }\r\n }\r\n\r\n}\r\n","\r\nexport class Option {\r\n\r\n public value: string;\r\n public display: string;\r\n public displayOrder: number;\r\n\r\n}\r\n","\r\nexport class ReportTab {\r\n\r\n public name: string;\r\n public title: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n\r\n}\r\n","\r\nexport class Format {\r\n\r\n public name: string;\r\n public caption: string;\r\n public displayOrder: number;\r\n\r\n public selected: string;\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {Format} from \"../model/format.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-format\",\r\n template: `\r\n <div class=\"radio-pair\">\r\n <input type=\"radio\" #radio\r\n [value]=\"format.name\"\r\n [id]=\"format.name\"\r\n [checked]=\"selectedValue === format.name ? true : false\"\r\n (click)=\"selectFormat(radio.value)\"\r\n name=\"format\">\r\n <label>{{format.caption}}</label>\r\n </div>\r\n `,\r\n styles: [`\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n }\r\n `]\r\n})\r\nexport class FormatComponent {\r\n\r\n @Input() selectedValue: string;\r\n @Output() selectedValueChange = new EventEmitter<string>();\r\n\r\n format: Format;\r\n\r\n selectFormat(s: string) {\r\n this.selectedValue = s;\r\n this.selectedValueChange.emit(s);\r\n }\r\n\r\n}\r\n","import {Component, Inject, Input} from \"@angular/core\";\r\nimport {MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef} from \"@angular/material/legacy-dialog\";\r\n\r\n@Component({\r\n selector: \"spinner-dialog\",\r\n template: `\r\n <div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div mat-dialog-actions class=\"not-rendered\">\r\n </div>\r\n `,\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .full-height { height: 100%; }\r\n .full-width { width: 100%; }\r\n\r\n .vertical-center { vertical-align: middle; }\r\n\r\n .padded {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n }\r\n\r\n .not-rendered {\r\n padding: 0;\r\n margin: 0;\r\n\r\n min-height: 0;\r\n max-height: 0;\r\n height: 0;\r\n }\r\n\r\n `]\r\n})\r\nexport class SpinnerDialogComponent {\r\n @Input(\"strokeWidth\") strokeWidth: number = 3;\r\n @Input(\"diameter\") diameter: number = 30;\r\n\r\n @Input(\"message\") message: string = \"Loading...\";\r\n\r\n constructor(private dialogRef: MatDialogRef<SpinnerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data) {\r\n if (this.data) {\r\n if (!!this.data.message) {\r\n this.message = this.data.message;\r\n }\r\n if (!!this.data.diameter) {\r\n this.diameter = this.data.diameter;\r\n }\r\n if (!!this.data.strokeWidth) {\r\n this.strokeWidth = this.data.strokeWidth;\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","import {Injectable, TemplateRef} from \"@angular/core\";\r\nimport { MatLegacyDialogRef as MatDialogRef, MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig } from \"@angular/material/legacy-dialog\";\r\n\r\nimport { SpinnerDialogComponent } from \"./spinner-dialog.component\";\r\n\r\nexport enum DialogType {\r\n ERROR = \"Error\",\r\n WARNING = \"Warning\",\r\n ALERT = \"Alert\",\r\n SUCCESS = \"Succeed\",\r\n FAILED = \"Failed\",\r\n CONFIRM = \"Confirm\",\r\n INFO = \"Info\",\r\n VALIDATION = \"Validation Error\",\r\n}\r\n\r\n@Injectable()\r\nexport class DialogsService {\r\n\r\n private _spinnerDialogIsOpen: boolean = false;\r\n private spinnerWorkItemCount: number = 0;\r\n private checkingSpinnerWorkItems: boolean = false;\r\n\r\n public spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n public get spinnerDialogIsOpen(): boolean {\r\n return this._spinnerDialogIsOpen;\r\n }\r\n\r\n constructor(private dialog: MatDialog) {\r\n }\r\n\r\n public startDefaultSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n return this.startSpinnerDialog(\"Please wait...\", 3, 30);\r\n }\r\n\r\n public startSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n let configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message: message,\r\n strokeWidth: strokeWidth,\r\n diameter: diameter\r\n };\r\n configuration.width = \"13em\";\r\n configuration.disableClose = true;\r\n\r\n let dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n // Let there be an alternative, global way to stop all active spinner dialogs.\r\n public stopAllSpinnerDialogs(): void {\r\n this.spinnerWorkItemCount = 0;\r\n for (let dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\r\n public addSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount++;\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n public removeSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount--;\r\n if (this.spinnerWorkItemCount < 0) {\r\n this.spinnerWorkItemCount = 0;\r\n }\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n private checkSpinnerWorkItems(): void {\r\n this.checkingSpinnerWorkItems = false;\r\n if (this.spinnerWorkItemCount) {\r\n if (!this._spinnerDialogIsOpen) {\r\n this.startDefaultSpinnerDialog();\r\n }\r\n } else if (this._spinnerDialogIsOpen) {\r\n this.stopAllSpinnerDialogs();\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, OnDestroy, ViewChild} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"resizable-section-divider\",\r\n template: `\r\n <div *ngIf=\"isVerticalLayout\" style=\"height: 100%; width: 100%;\" #verticalContainer>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[topSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"height: 20px; width: 100%;\">\r\n <div class=\"rad-grabber-vertical\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fas fa-grip-lines\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(sectionSize - grabberOffset)\">\r\n <ng-content select=\"[bottomSection]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isVerticalLayout\" class=\"d-flex\" style=\"height: 100%; width: 100%;\" #horizontalContainer>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[leftSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"width: 10px; height: 100%;\">\r\n <div class=\"rad-grabber\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fas fa-grip-lines-vertical\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"sectionSize - grabberOffset\">\r\n <ng-content select=\"[rightSection]\"></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .rad-grabber {\r\n cursor: ew-resize;\r\n }\r\n\r\n .rad-grabber-vertical {\r\n cursor: ns-resize;\r\n }\r\n `]\r\n})\r\nexport class ResizableSectionDividerComponent implements AfterViewInit, OnDestroy {\r\n // Starting width or height % for the right / bottom containers respectively\r\n @Input() initialPercentage: number = 50;\r\n @Input() isVerticalLayout: boolean = false;\r\n @Input() maxPercentage: number = 90;\r\n @Input() minPercentage: number = 10;\r\n\r\n @ViewChild(\"verticalContainer\", {static: false}) verticalContainer: ElementRef;\r\n @ViewChild(\"horizontalContainer\", {static: false}) horizontalContainer: ElementRef;\r\n\r\n public sectionSize: number;\r\n public dragging: boolean = false;\r\n public grabberOffset = 0;\r\n\r\n private verticalTouchFunction: any;\r\n private horizontalTouchFunction: any;\r\n private elementObserver: any;\r\n\r\n ngOnInit() {\r\n this.sectionSize = this.initialPercentage;\r\n\r\n this.verticalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.touches[0].pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeightt) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n this.horizontalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.touches[0].pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n }\r\n ngAfterViewInit() {\r\n // Handle initializing grabber size for when elements are initialized as hidden\r\n this.elementObserver = new IntersectionObserver((entries, observable) => {\r\n entries.forEach(entry => {\r\n if(entry.isIntersecting) {\r\n // subtract half the grabber height/width % from each section\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n }\r\n observable.disconnect();\r\n }\r\n });\r\n });\r\n\r\n if(this.isVerticalLayout) {\r\n this.elementObserver.observe(this.verticalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.verticalTouchFunction, { passive: false });\r\n } else {\r\n this.elementObserver.observe(this.horizontalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.horizontalTouchFunction, { passive: false });\r\n }\r\n }\r\n\r\n @HostListener(\"document:mousemove\", [\"$event\"])\r\n mouseMove(event: MouseEvent) {\r\n if (this.dragging) {\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeight) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n @HostListener(\"document:mouseup\", [\"$event\"])\r\n @HostListener(\"document:touchend\", [\"$event\"])\r\n mouseUp(event: MouseEvent) {\r\n if (this.dragging) {\r\n this.dragging = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.isVerticalLayout) {\r\n window.removeEventListener(\"touchmove\", this.verticalTouchFunction);\r\n } else {\r\n window.removeEventListener(\"touchmove\", this.horizontalTouchFunction);\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component, ComponentFactory,\r\n ComponentFactoryResolver, ComponentRef,\r\n Input, OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {HttpClient, HttpParams} from \"@angular/common/http\";\r\nimport {Report} from \"./model/report.model\";\r\nimport {Param} from \"./model/param.model\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {Option} from \"./model/option.model\";\r\nimport {ReportTab} from \"./model/report-tab.model\";\r\nimport {Format} from \"./model/format.model\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport * as moment from \"moment\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {ModalDismissReasons, NgbModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport { GridApi } from \"ag-grid-community\";\r\n\r\n@Component({\r\n selector: \"hci-reporting-framework\",\r\n template: `\r\n <div style=\"height: 100vh\">\r\n <resizable-section-divider class=\"flex-grow-1\" [isVerticalLayout]=\"true\">\r\n <div topSection class=\"d-flex flex-column\" style=\"height: 100%; width: 100%; overflow: auto;\">\r\n <!--can wrap just the grid with the tabs-->\r\n <mat-tab-group *ngIf=\"tabList.length > 0\"\r\n class=\"flex-grow-1\">\r\n <mat-tab *ngFor=\"let tab of tabList\"\r\n label=\"{{tab.title}}\"\r\n class=\"flex-grow-1\">\r\n <ng-template matTabContent>\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!--ngb-tabset *ngIf=\"tabList.length > 0\"\r\n destroyOnHide=\"false\"\r\n type=\"tabs\"\r\n class=\"flex-grow-1\"\r\n #reportTabSet=\"ngbTabset\"\r\n >\r\n <ngb-tab *ngFor=\"let tab of tabList\"\r\n id=\"{{tab.name}}\" title=\"{{tab.title}}\"\r\n style=\"border: 5px solid;\" >\r\n <ng-template ngbTabContent >\r\n\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </ngb-tab>\r\n\r\n </ngb-tabset-->\r\n\r\n <ag-grid-angular *ngIf=\"tabList.length <= 0\"\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onMainGridReady($event)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"fullGridList\">\r\n </ag-grid-angular>\r\n </div>\r\n <div bottomSection class=\"d-flex flex-column\" style=\"height: 80%; width: 100%; overflow: auto;\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label style=\"margin-left: 25px; font-weight: bold\">{{selectedReport.title}}</label>\r\n <button class=\"btn\" *ngIf=\"selectedReport.help && selectedReport.help != ''\"\r\n (click)=\"openHelp(content)\">\r\n <i class=\"far fa-question-circle\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <template #paramContainer></template>\r\n <div style=\"display: block;\">\r\n <div class=\"row center-row\">\r\n <template #formatContainer></template>\r\n <button *ngIf=\"selectedReport.name\"\r\n class=\"btn btn-success\"\r\n type=\"button\"\r\n (click)=\"onRunReport()\"\r\n >Run Report</button>\r\n </div>\r\n </div>\r\n </div>\r\n </resizable-section-divider>\r\n </div>\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"help-model-title\">Report Help</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" >\r\n <div class=\"container\" [innerHTML]=\"selectedReport.help\">\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"modal.dismiss('Ok click')\">OK</button>\r\n </div>\r\n </ng-template>\r\n\r\n `,\r\n styles: [`\r\n :host ::ng-deep .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label{\r\n background-color: #98c7e0;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label-active{\r\n background-color: #def4ff;\r\n }\r\n\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n `]\r\n})\r\nexport class ReportingFrameworkComponent implements OnInit, OnDestroy {\r\n\r\n @Input() manageReportUrl: string; // /artadmin/legacy/api/hci.artadmin.controller.ManageReports\r\n @Input() commandPrefix: string; // /artadmin/legacy/api/jsp\r\n @Input() dictAPILeadIn: string; // /artadmin/api/dictionaries\r\n @Input() reportsByType: string; //optional. usually \"global\" or \"patient\"\r\n\r\n @ViewChild(\"paramContainer\", {read: ViewContainerRef, static: false}) paramContainer: ViewContainerRef;\r\n @ViewChild(\"formatContainer\", {read: ViewContainerRef, static: false}) formatContainer: ViewContainerRef;\r\n\r\n fullGridList: any[] = [];\r\n tabbedGridList: any = {};\r\n\r\n\r\n gridOptions = {\r\n rowStyle: {\r\n \"font-family\": \"Prompt, sans-serif\"\r\n },\r\n rowHeight: 20,\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n }; //enableCellTextSelection should be combined with ensureDomOrder\r\n frameworkComponents: any;\r\n\r\n mainGridApi: GridApi;\r\n tabbedGridApiList: any = {}; //a map of GridAPIs to tab names\r\n\r\n reportList: Report[] = [];\r\n tabList: ReportTab[] = [];\r\n tabTypeNameLookup: any = {}; //a kind of dict that maps the tab or type to the tab-name\r\n\r\n selectedReport: Report = new Report();\r\n selectedFormat: string;\r\n displayedParamComponentRefs: ComponentRef<any>[] = [];\r\n displayedFormatComponentRefs: ComponentRef<any>[] = [];\r\n\r\n constructor(private http: HttpClient,\r\n private resolver: ComponentFactoryResolver,\r\n private datePipe: DatePipe,\r\n private dialogsService: DialogsService,\r\n private modalService: NgbModal) {}\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.manageReportUrl != null) {\r\n\r\n this.http.get(this.manageReportUrl,\r\n {\r\n params: new HttpParams().set(\"action\", \"loadWithParams\")\r\n }\r\n ).subscribe(\r\n (resp) => {\r\n console.log(resp);\r\n var templist = [];\r\n var tempTabbedGridList = {};\r\n\r\n var tablist = resp[\"reportTabs\"];\r\n for (let row of tablist) {\r\n var tab: ReportTab = new ReportTab();\r\n tab.name = row.name;\r\n tab.title = row.title;\r\n tab.type = row.type;\r\n tab.tab = row.tab;\r\n tab.datakey = row.datakey;\r\n\r\n if (!this.reportsByType) {\r\n this.tabList.push(tab);\r\n if (tab.tab) {\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n if (tab.type) {\r\n this.tabTypeNameLookup[tab.type] = tab.name;\r\n }\r\n }else {\r\n if (this.reportsByType == tab.type) {\r\n this.tabList.push(tab);\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n }\r\n\r\n var tabGridList: any[] = [];\r\n this.tabbedGridList[tab.name] = tabGridList;\r\n tempTabbedGridList[tab.name] = [];\r\n }\r\n\r\n\r\n var list = resp[\"reportList\"];\r\n // console.log(list);\r\n for (let row of list) {\r\n var report: Report = new Report();\r\n report.name = row.name;\r\n report.title = row.title;\r\n report.description = row.description;\r\n report.className = row.className;\r\n report.fileName = row.fileName;\r\n report.type = row.type;\r\n report.tab = row.tab;\r\n report.datakey = row.datakey;\r\n report.help = row.help;\r\n\r\n const object = {\r\n name: report.name,\r\n title: report.title,\r\n description: report.description\r\n };\r\n\r\n\r\n var tabname;\r\n if (report.tab) {\r\n tabname = this.tabTypeNameLookup[report.tab];\r\n } else if (!this.reportsByType && report.type) {\r\n tabname = this.tabTypeNameLookup[report.type];\r\n }\r\n\r\n if (tabname) {\r\n var gridlist: any[] = tempTabbedGridList[tabname];\r\n\r\n if(this.reportsByType) {\r\n if (report.type === this.reportsByType ) {\r\n gridlist.push(object);\r\n }\r\n }else {\r\n gridlist.push(object);\r\n }\r\n }\r\n\r\n let params = row.params;\r\n if (params) {\r\n\r\n for (let p of params) {\r\n // console.log(p);\r\n var newParam: Param = new Param();\r\n newParam.dictAPILeadIn = this.dictAPILeadIn;\r\n\r\n newParam.caption = p.caption;\r\n newParam.name = p.name;\r\n newParam.type = p.type;\r\n newParam.className = p.className;\r\n newParam.valueXPath = p.valueXPath;\r\n newParam.displayXPath = p.displayXPath;\r\n newParam.displayOrder = p.displayOrder;\r\n newParam.activeOnly = p.activeOnly;\r\n newParam.sortField = p.sortField;\r\n newParam.sortNumeric = p.sortNumeric;\r\n newParam.filterField = p.filterField;\r\n\r\n if (newParam.valueXPath) {\r\n newParam.valueXPath = newParam.valueXPath.replace(\"@\", \"\");\r\n }\r\n if (newParam.displayXPath) {\r\n newParam.displayXPath = newParam.displayXPath.replace(\"@\", \"\");\r\n }\r\n if (newParam.sortField) {\r\n newParam.sortField = newParam.sortField.replace(\"@\", \"\");\r\n }\r\n\r\n let options = p.options;\r\n if (options) {\r\n\r\n for (let o of options) {\r\n var newOption: Option = new Option();\r\n newOption.value = o.value;\r\n newOption.display = o.display;\r\n newOption.displayOrder = o.displayOrder;\r\n\r\n newParam.options.push(newOption);\r\n }\r\n }\r\n\r\n report.params.push(newParam);\r\n }\r\n }\r\n\r\n let formats = row.formats;\r\n if (formats) {\r\n\r\n for (let f of formats) {\r\n var newFormat: Format = new Format();\r\n newFormat.name = f.name;\r\n newFormat.caption = f.caption;\r\n newFormat.displayOrder = f.displayOrder;\r\n\r\n report.formats.push(newFormat);\r\n }\r\n }\r\n\r\n\r\n this.reportList.push(report);\r\n\r\n if (this.reportsByType) {\r\n if(report.type === this.reportsByType) {\r\n templist.push(object);\r\n }\r\n } else {\r\n templist.push(object);\r\n }\r\n }\r\n\r\n this.fullGridList = templist.slice();\r\n console.log(\"gridlist: \");\r\n console.log(this.fullGridList);\r\n\r\n for(let tab of this.tabList){\r\n this.tabbedGridList[tab.name] = tempTabbedGridList[tab.name].slice();\r\n }\r\n\r\n }\r\n );\r\n }\r\n }\r\n\r\n public columnDef() : any[] {\r\n return [\r\n\r\n {\r\n field: \"title\",\r\n headerName: \"Title\",\r\n width: 300,\r\n sortable: true,\r\n resizable: true,\r\n editable: false},\r\n {\r\n field: \"description\",\r\n headerName: \"Description\",\r\n sortable: true,\r\n resizable: true,\r\n editable: false}\r\n ];\r\n\r\n }\r\n\r\n onMainGridReady(params : any) {\r\n\r\n this.mainGridApi = params.api;\r\n this.mainGridApi.setColumnDefs(this.columnDef());\r\n this.mainGridApi.setRowData(this.fullGridList);\r\n this.mainGridApi.sizeColumnsToFit();\r\n }\r\n\r\n onTabbedGridReady(params : any, tabname: string) {\r\n\r\n this.tabbedGridApiList[tabname] = params.api;\r\n this.tabbedGridApiList[tabname].setColumnDefs(this.columnDef());\r\n this.tabbedGridApiList[tabname].setRowData(this.tabbedGridList[tabname]);\r\n this.tabbedGridApiList[tabname].sizeColumnsToFit();\r\n }\r\n\r\n setSelectedRow(event) {\r\n\r\n //console.log(event);\r\n if(event.node.selected) {\r\n let reportName = event.node.data.name;\r\n console.log(event.node.data.name);\r\n\r\n var matchedReport: Report;\r\n for (let r of this.reportList) {\r\n if (r.name == reportName) {\r\n matchedReport = r;\r\n }\r\n }\r\n\r\n if (matchedReport != null) {\r\n this.selectedReport = matchedReport;\r\n } else {\r\n this.selectedReport = new Report();\r\n }\r\n\r\n this.createParamComponents();\r\n }\r\n }\r\n\r\n createParamComponents() {\r\n if(this.paramContainer) {\r\n this.paramContainer.clear();\r\n }\r\n if(this.formatContainer) {\r\n this.formatContainer.clear();\r\n }\r\n\r\n //destroy previous components and clear the displayedRef lists..?\r\n this.destroyComponentRefs();\r\n this.displayedParamComponentRefs = [];\r\n this.displayedFormatComponentRefs = [];\r\n\r\n for(let p of this.selectedReport.params){\r\n\r\n const factory: ComponentFactory<ParameterComponent> = this.resolver.resolveComponentFactory(ParameterComponent);\r\n var componentRef: ComponentRef<ParameterComponent> = this.paramContainer.createComponent(factory);\r\n this.displayedParamComponentRefs.push(componentRef);\r\n\r\n componentRef.instance.setParam(p);\r\n\r\n if(p.options.length > 0) {\r\n var entries: any[] = [];\r\n for(let o of p.options){\r\n var e = {id: o.value, display: o.display};\r\n entries.push(e);\r\n }\r\n componentRef.instance.entries = entries;\r\n }\r\n\r\n }\r\n\r\n var first: boolean = true;\r\n for(let f of this.selectedReport.formats){\r\n\r\n const factory2: ComponentFactory<FormatComponent> = this.resolver.resolveComponentFactory(FormatComponent);\r\n var componentRef2: ComponentRef<FormatComponent> = this.formatContainer.createComponent(factory2);\r\n this.displayedFormatComponentRefs.push(componentRef2);\r\n\r\n componentRef2.instance.format = f;\r\n componentRef2.instance.selectedValueChange.subscribe(\r\n (s) => {\r\n this.selectedFormat = s;\r\n }\r\n );\r\n if(first) {//select the first format in the grouping\r\n componentRef2.instance.selectedValue = f.name;\r\n this.selectedFormat = f.name;\r\n first = false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n openHelp(content) {\r\n\r\n this.modalService.open(content, {ariaLabelledBy: \"help-modal-title\"})\r\n .result.then((result) => {\r\n // this.closeResult = `Closed with: ${result}`;\r\n console.log(result);\r\n\r\n }, (reason) => {\r\n var closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n console.log(closeResult);\r\n\r\n });\r\n\r\n }\r\n\r\n private getDismissReason(reason: any): string {\r\n if (reason === ModalDismissReasons.ESC) {\r\n return \"by pressing ESC\";\r\n } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {\r\n return \"by clicking on a backdrop\";\r\n } else {\r\n return `with: ${reason}`;\r\n }\r\n }\r\n\r\n onRunReport() {\r\n\r\n if(this.selectedReport) {\r\n\r\n this.dialogsService.startDefaultSpinnerDialog();\r\n\r\n console.log(\"format:\" + this.selectedFormat);\r\n if(!this.selectedFormat) {\r\n this.selectedFormat = \"html\";\r\n }\r\n\r\n let runParams = new HttpParams();\r\n runParams = runParams.append(\"format\", this.selectedFormat);\r\n runParams = runParams.append(\"action\", \"show\");\r\n runParams = runParams.append(\"reportName\", this.selectedReport.name);\r\n\r\n runParams = this.getRunParameters(runParams);\r\n\r\n console.log(runParams);\r\n\r\n this.http.get(this.commandPrefix + this.selectedReport.className,\r\n {\r\n params: runParams,\r\n observe: \"response\",\r\n responseType: \"blob\"\r\n }\r\n ).subscribe(\r\n (res) => {\r\n console.log(res);\r\n\r\n var filename;\r\n if(this.selectedFormat != \"html\") {\r\n filename = res.headers.get(\"content-disposition\").split(\";\")[1].split(\"=\")[1].replace(/\\\"/g, \"\");\r\n }\r\n var blob = new Blob([res.body], {type: res.body.type} ); //, {type: \"application/vnd.ms-excel\"}\r\n var fileURL = window.URL.createObjectURL(blob);\r\n console.log(fileURL);\r\n\r\n const a: HTMLAnchorElement = document.createElement(\"a\") as HTMLAnchorElement;\r\n a.href = fileURL;\r\n if(this.selectedFormat == \"html\") {\r\n a.target = \"_blank\";\r\n }else {\r\n a.download = filename;\r\n }\r\n window.document.body.appendChild(a);\r\n a.click();\r\n window.document.body.removeChild(a);\r\n URL.revokeObjectURL(fileURL);\r\n\r\n this.dialogsService.stopAllSpinnerDialogs();\r\n }\r\n );\r\n }\r\n }\r\n\r\n getRunParameters(runParams: HttpParams): HttpParams {\r\n var newParams = runParams;\r\n\r\n for(let o of this.displayedParamComponentRefs){\r\n var param = o.instance.param;\r\n\r\n if(param.type == \"multiselect\") {\r\n var resList = \"\";\r\n for(let v of param.selectedValueList){\r\n if(resList != \"\") {\r\n resList += \",\";\r\n }\r\n resList += v;\r\n }\r\n newParams = newParams.append(param.name, resList);\r\n }else {\r\n var value;\r\n if(param.selectedValue) { //so we don't get \"undefined\" sent back\r\n if(param.type == \"date\") {\r\n value = this.getDateString(param.selectedValue);\r\n }else {\r\n value = param.selectedValue;\r\n }\r\n }else {\r\n value = \"\";\r\n }\r\n newParams = newParams.append(param.name, value);\r\n }\r\n }\r\n return newParams;\r\n }\r\n\r\n getDateString(date: any): string {\r\n\r\n if (date instanceof Date) {\r\n if (!isNaN(date.getTime())) {\r\n return this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n } else {\r\n return \"\";\r\n }\r\n }else if(moment.isMoment(date) ) {\r\n if(date != null) {\r\n return date.format(\"M/D/YYYY\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"string\") {\r\n return date;\r\n }else {\r\n return \"\";\r\n }\r\n }\r\n\r\n destroyComponentRefs() {\r\n for(let o of this.displayedParamComponentRefs){\r\n o.destroy();\r\n }\r\n for(let o of this.displayedFormatComponentRefs){\r\n o.destroy();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyComponentRefs();\r\n }\r\n\r\n /*\r\n styles: [`\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n\r\n .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n.tab-pane{\r\n height: 100%;\r\n}\r\n`]*/\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule, DatePipe} from \"@angular/common\";\r\n\r\nimport {ReportingFrameworkComponent} from \"./reporting-framework.component\";\r\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {ReportDatepickerComponent} from \"./datepicker/report-datepicker.component\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {SpinnerDialogComponent} from \"./spinner/spinner-dialog.component\";\r\nimport {AgGridModule} from \"ag-grid-angular\";\r\nimport {MatLegacyProgressSpinnerModule as MatProgressSpinnerModule} from \"@angular/material/legacy-progress-spinner\";\r\nimport { MatLegacyDialogModule as MatDialogModule } from \"@angular/material/legacy-dialog\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport {ResizableSectionDividerComponent} from \"./resizable-divider/resizable-section-divider.component\";\r\nimport {MatLegacyTabsModule as MatTabsModule} from \"@angular/material/legacy-tabs\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule,\r\n SelectModule,\r\n AgGridModule,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DialogsService\r\n ],\r\n declarations: [\r\n ReportingFrameworkComponent,\r\n ReportDatepickerComponent,\r\n ParameterComponent,\r\n FormatComponent,\r\n SpinnerDialogComponent,\r\n ResizableSectionDividerComponent\r\n ],\r\n exports: [\r\n ReportingFrameworkComponent\r\n ]\r\n})\r\nexport class ReportModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4.ReportDatepickerComponent","MAT_DIALOG_DATA","i1","i2","MatDialogConfig","i3.DialogsService","i7.ResizableSectionDividerComponent","MatDialogModule","MatProgressSpinnerModule","MatTabsModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"huntsman-cancer-institute-reporting-framework.mjs","sources":["../../../projects/reporting-framework/src/model/report.model.ts","../../../projects/reporting-framework/src/model/param.model.ts","../../../projects/reporting-framework/src/datepicker/report-datepicker.component.ts","../../../projects/reporting-framework/src/parameter/parameter.component.ts","../../../projects/reporting-framework/src/model/option.model.ts","../../../projects/reporting-framework/src/model/report-tab.model.ts","../../../projects/reporting-framework/src/model/format.model.ts","../../../projects/reporting-framework/src/format/format.component.ts","../../../projects/reporting-framework/src/spinner/spinner-dialog.component.ts","../../../projects/reporting-framework/src/spinner/dialogs.service.ts","../../../projects/reporting-framework/src/resizable-divider/resizable-section-divider.component.ts","../../../projects/reporting-framework/src/reporting-framework.component.ts","../../../projects/reporting-framework/src/report.module.ts","../../../projects/reporting-framework/src/huntsman-cancer-institute-reporting-framework.ts"],"sourcesContent":["import {Param} from \"./param.model\";\r\nimport {Format} from \"./format.model\";\r\n\r\nexport class Report {\r\n\r\n public name: string;\r\n public title: string;\r\n public description: string;\r\n public className: string;\r\n public fileName: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n public help: string;\r\n\r\n public params: Param[] = [];\r\n public formats: Format[] = [];\r\n}\r\n","import {Option} from \"./option.model\";\r\n\r\nexport class Param {\r\n\r\n public caption: string;\r\n public name: string;\r\n public type: string;\r\n public className: string;\r\n public valueXPath: string;\r\n public displayXPath: string;\r\n public activeOnly: boolean = true;\r\n public displayOrder: number;\r\n public sortField: string;\r\n public sortNumeric: boolean = false;\r\n public filterField: string = \"\";\r\n\r\n public options: Option[] = [];\r\n\r\n public selectedValue: any;\r\n public selectedValueList: any[] = []; //for multi-select\r\n public dictAPILeadIn: string;\r\n\r\n public calculateDictionaryURL(): string {\r\n let out: string = \"\";\r\n\r\n if(this.activeOnly) {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/active-entries\";\r\n }else {\r\n out = this.dictAPILeadIn + \"/\" + this.className + \"/entries\";\r\n }\r\n\r\n if(this.filterField) {\r\n out = out + \"?\" + this.filterField;\r\n }\r\n\r\n return out;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {MAT_DATE_LOCALE} from \"@angular/material/core\";\r\n\r\n@Component({\r\n selector: \"report-datepicker\",\r\n template: `\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <input matInput [matDatepicker]=\"picker\" class=\"form-control\" style=\"cursor: pointer;\" [placeholder]=\"placeholder\" [ngModel]=\"value\" (ngModelChange)=\"onChange($event)\"\r\n (click)=\"picker.open()\" (blur)=\"onBlur()\" [min]=\"minDate\" [max]=\"maxDate\"\r\n [ngStyle]=\"{'background-color':invalid ? 'red' : '#fff'}\" attr.aria-label=\"hci-ng-report-date-picker-{{placeholder}}\">\r\n <span class=\"input-group-text\" id=\"clearIcon\" (click)=\"clear()\"><i class=\"fas fa-times\"></i></span>\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"picker.open()\" style=\"height:32px; width:32px;\"><i class=\"fas fa-calendar-alt\"></i></button>\r\n <mat-datepicker #picker ></mat-datepicker>\r\n </div>\r\n `,\r\n styles: [`\r\n #clearIcon {\r\n cursor: pointer;\r\n }\r\n #clearIcon:Hover {\r\n background-color: rgb(73, 80, 87);\r\n color: rgb(233, 236, 239)\r\n }\r\n `],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: \"en-GB\"}\r\n ]\r\n})\r\nexport class ReportDatepickerComponent {\r\n @Input() value: Date;\r\n @Input() placeholder: string;\r\n @Input() minDate: Date;\r\n @Input() maxDate: Date;\r\n @Input() invalid: boolean = false;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n ngOnInit() {\r\n let today = new Date();\r\n // set the minDate to 20 years in the past by default\r\n if (!this.minDate) {\r\n this.minDate = new Date(today.getFullYear() - 20, today.getMonth(), today.getDate());\r\n }\r\n // set max date to 20 years in future by default\r\n if (!this.maxDate) {\r\n this.maxDate = new Date(today.getFullYear() + 20, today.getMonth(), today.getDate());\r\n }\r\n }\r\n\r\n onChange(newValue) {\r\n this.value = newValue;\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n clear() {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n\r\n // Clear input field if entered data is invalid (Mat library sets value to null if invalid but doesn't clear input)\r\n onBlur() {\r\n if (!this.value) {\r\n this.value = undefined;\r\n this.valueChange.emit();\r\n }\r\n }\r\n}\r\n","import {Component} from \"@angular/core\";\r\nimport {Param} from \"../model/param.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-parameter\",\r\n template: `\r\n\r\n <!--Text Input-->\r\n <ng-container *ngIf=\"param.type === 'input'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <input type=\"text\" class=\"form-control input-field\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n >\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Date-->\r\n <ng-container *ngIf=\"param.type === 'date'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <report-datepicker class=\"date-input\"\r\n placeholder=\"\"\r\n id=\"{{param.name}}\"\r\n [(value)]=\"param.selectedValue\"\r\n >\r\n </report-datepicker>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'select' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'select' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-native-select class=\"report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [entries] = \"entries\"\r\n ></hci-native-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with dictionary-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && param.className && param.className != ''\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [idKey]=\"param.valueXPath\"\r\n [displayKey]=\"param.displayXPath\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n [url]=\"param.calculateDictionaryURL()\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Multi-select with manual options-->\r\n <ng-container *ngIf=\"param.type === 'multiselect' && (!param.className || param.className === '')\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <hci-md-multi-select class=\"multi-report-select\"\r\n [id]=\"param.name\"\r\n [name]=\"param.name\"\r\n [entries] = \"entries\"\r\n [sortKey]=\"param.sortField\"\r\n [sortNumeric]=\"param.sortNumeric\"\r\n [(ngModel)]=\"param.selectedValueList\"\r\n >\r\n </hci-md-multi-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!--Radio buttons-->\r\n <ng-container *ngIf=\"param.type === 'radio'\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label class=\"data-label\">{{param.caption}}:</label>\r\n <div class=\"radio-pair\" *ngFor=\"let o of param.options\">\r\n <input type=\"radio\"\r\n style=\"margin-right: 3px;\"\r\n [value]=\"o.value\"\r\n [id]=\"param.name + '-' + o.value\"\r\n [(ngModel)]=\"param.selectedValue\"\r\n [name]=\"param.name\">\r\n <label for=\"{{param.name + '-' + o.value}}\">{{o.display}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n `,\r\n styles: [`\r\n\r\n .data-label{\r\n width: 270px;\r\n margin-right: 30px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n }\r\n\r\n .date-input{\r\n width: 45%;\r\n }\r\n\r\n .report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .multi-report-select{\r\n flex-grow: unset !important;\r\n width: 45%;\r\n }\r\n\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n margin-right: 15px;\r\n }\r\n\r\n .input-field{\r\n width: 45%\r\n }\r\n `]\r\n})\r\nexport class ParameterComponent {\r\n\r\n param: Param;\r\n entries: any[];\r\n\r\n setParam(p: Param) {\r\n this.param = p;\r\n\r\n if(this.param.type === \"radio\") { //if radio, auto select first option\r\n let o = this.param.options[0];\r\n this.param.selectedValue = o.value;\r\n }\r\n }\r\n\r\n}\r\n","\r\nexport class Option {\r\n\r\n public value: string;\r\n public display: string;\r\n public displayOrder: number;\r\n\r\n}\r\n","\r\nexport class ReportTab {\r\n\r\n public name: string;\r\n public title: string;\r\n public type: string;\r\n public tab: string;\r\n public datakey: string;\r\n\r\n}\r\n","\r\nexport class Format {\r\n\r\n public name: string;\r\n public caption: string;\r\n public displayOrder: number;\r\n\r\n public selected: string;\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {Format} from \"../model/format.model\";\r\n\r\n\r\n@Component({\r\n selector: \"hci-format\",\r\n template: `\r\n <div class=\"radio-pair\">\r\n <input type=\"radio\" #radio\r\n [value]=\"format.name\"\r\n [id]=\"format.name\"\r\n [checked]=\"selectedValue === format.name ? true : false\"\r\n (click)=\"selectFormat(radio.value)\"\r\n name=\"format\" attr.aria-label=\"hci-ng-format-{{selectedValue}}\">\r\n <label>{{format.caption}}</label>\r\n </div>\r\n `,\r\n styles: [`\r\n .radio-pair{\r\n display: flex;\r\n align-items: center;\r\n padding-right: 5px;\r\n }\r\n `]\r\n})\r\nexport class FormatComponent {\r\n\r\n @Input() selectedValue: string;\r\n @Output() selectedValueChange = new EventEmitter<string>();\r\n\r\n format: Format;\r\n\r\n selectFormat(s: string) {\r\n this.selectedValue = s;\r\n this.selectedValueChange.emit(s);\r\n }\r\n\r\n}\r\n","import {Component, Inject, Input} from \"@angular/core\";\r\nimport {MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef} from \"@angular/material/legacy-dialog\";\r\n\r\n@Component({\r\n selector: \"spinner-dialog\",\r\n template: `\r\n <div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div mat-dialog-actions class=\"not-rendered\">\r\n </div>\r\n `,\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .full-height { height: 100%; }\r\n .full-width { width: 100%; }\r\n\r\n .vertical-center { vertical-align: middle; }\r\n\r\n .padded {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n }\r\n\r\n .not-rendered {\r\n padding: 0;\r\n margin: 0;\r\n\r\n min-height: 0;\r\n max-height: 0;\r\n height: 0;\r\n }\r\n\r\n `]\r\n})\r\nexport class SpinnerDialogComponent {\r\n @Input(\"strokeWidth\") strokeWidth: number = 3;\r\n @Input(\"diameter\") diameter: number = 30;\r\n\r\n @Input(\"message\") message: string = \"Loading...\";\r\n\r\n constructor(private dialogRef: MatDialogRef<SpinnerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data) {\r\n if (this.data) {\r\n if (!!this.data.message) {\r\n this.message = this.data.message;\r\n }\r\n if (!!this.data.diameter) {\r\n this.diameter = this.data.diameter;\r\n }\r\n if (!!this.data.strokeWidth) {\r\n this.strokeWidth = this.data.strokeWidth;\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","import {Injectable, TemplateRef} from \"@angular/core\";\r\nimport { MatLegacyDialogRef as MatDialogRef, MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig } from \"@angular/material/legacy-dialog\";\r\n\r\nimport { SpinnerDialogComponent } from \"./spinner-dialog.component\";\r\n\r\nexport enum DialogType {\r\n ERROR = \"Error\",\r\n WARNING = \"Warning\",\r\n ALERT = \"Alert\",\r\n SUCCESS = \"Succeed\",\r\n FAILED = \"Failed\",\r\n CONFIRM = \"Confirm\",\r\n INFO = \"Info\",\r\n VALIDATION = \"Validation Error\",\r\n}\r\n\r\n@Injectable()\r\nexport class DialogsService {\r\n\r\n private _spinnerDialogIsOpen: boolean = false;\r\n private spinnerWorkItemCount: number = 0;\r\n private checkingSpinnerWorkItems: boolean = false;\r\n\r\n public spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n public get spinnerDialogIsOpen(): boolean {\r\n return this._spinnerDialogIsOpen;\r\n }\r\n\r\n constructor(private dialog: MatDialog) {\r\n }\r\n\r\n public startDefaultSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n return this.startSpinnerDialog(\"Please wait...\", 3, 30);\r\n }\r\n\r\n public startSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n let configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message: message,\r\n strokeWidth: strokeWidth,\r\n diameter: diameter\r\n };\r\n configuration.width = \"13em\";\r\n configuration.disableClose = true;\r\n\r\n let dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n // Let there be an alternative, global way to stop all active spinner dialogs.\r\n public stopAllSpinnerDialogs(): void {\r\n this.spinnerWorkItemCount = 0;\r\n for (let dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\r\n public addSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount++;\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n public removeSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount--;\r\n if (this.spinnerWorkItemCount < 0) {\r\n this.spinnerWorkItemCount = 0;\r\n }\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n private checkSpinnerWorkItems(): void {\r\n this.checkingSpinnerWorkItems = false;\r\n if (this.spinnerWorkItemCount) {\r\n if (!this._spinnerDialogIsOpen) {\r\n this.startDefaultSpinnerDialog();\r\n }\r\n } else if (this._spinnerDialogIsOpen) {\r\n this.stopAllSpinnerDialogs();\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, HostListener, Input, OnDestroy, ViewChild} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"resizable-section-divider\",\r\n template: `\r\n <div *ngIf=\"isVerticalLayout\" style=\"height: 100%; width: 100%;\" #verticalContainer>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[topSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"height: 20px; width: 100%;\">\r\n <div class=\"rad-grabber-vertical\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fas fa-grip-lines\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"width: 100%;\" [style.min-height.%]=\"minPercentage\" [style.max-height.%]=\"maxPercentage\" [style.height.%]=\"(sectionSize - grabberOffset)\">\r\n <ng-content select=\"[bottomSection]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!isVerticalLayout\" class=\"d-flex\" style=\"height: 100%; width: 100%;\" #horizontalContainer>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"(100 - sectionSize - grabberOffset)\">\r\n <ng-content select=\"[leftSection]\"></ng-content>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"width: 10px; height: 100%;\">\r\n <div class=\"rad-grabber\" (mousedown)=\"dragging = true;\" (touchstart)=\"dragging = true;\">\r\n <i class=\"fas fa-grip-lines-vertical\"></i>\r\n </div>\r\n </div>\r\n <div class=\"p-1\" style=\"height: 100%;\" [style.min-width.%]=\"minPercentage\" [style.max-width.%]=\"maxPercentage\" [style.width.%]=\"sectionSize - grabberOffset\">\r\n <ng-content select=\"[rightSection]\"></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .rad-grabber {\r\n cursor: ew-resize;\r\n }\r\n\r\n .rad-grabber-vertical {\r\n cursor: ns-resize;\r\n }\r\n `]\r\n})\r\nexport class ResizableSectionDividerComponent implements AfterViewInit, OnDestroy {\r\n // Starting width or height % for the right / bottom containers respectively\r\n @Input() initialPercentage: number = 50;\r\n @Input() isVerticalLayout: boolean = false;\r\n @Input() maxPercentage: number = 90;\r\n @Input() minPercentage: number = 10;\r\n\r\n @ViewChild(\"verticalContainer\", {static: false}) verticalContainer: ElementRef;\r\n @ViewChild(\"horizontalContainer\", {static: false}) horizontalContainer: ElementRef;\r\n\r\n public sectionSize: number;\r\n public dragging: boolean = false;\r\n public grabberOffset = 0;\r\n\r\n private verticalTouchFunction: any;\r\n private horizontalTouchFunction: any;\r\n private elementObserver: any;\r\n\r\n ngOnInit() {\r\n this.sectionSize = this.initialPercentage;\r\n\r\n this.verticalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.touches[0].pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeightt) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n this.horizontalTouchFunction = (event) => {\r\n if (this.dragging) {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.touches[0].pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n };\r\n }\r\n ngAfterViewInit() {\r\n // Handle initializing grabber size for when elements are initialized as hidden\r\n this.elementObserver = new IntersectionObserver((entries, observable) => {\r\n entries.forEach(entry => {\r\n if(entry.isIntersecting) {\r\n // subtract half the grabber height/width % from each section\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n }\r\n observable.disconnect();\r\n }\r\n });\r\n });\r\n\r\n if(this.isVerticalLayout) {\r\n this.elementObserver.observe(this.verticalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.verticalTouchFunction, { passive: false });\r\n } else {\r\n this.elementObserver.observe(this.horizontalContainer.nativeElement);\r\n window.addEventListener(\"touchmove\", this.horizontalTouchFunction, { passive: false });\r\n }\r\n }\r\n\r\n @HostListener(\"document:mousemove\", [\"$event\"])\r\n mouseMove(event: MouseEvent) {\r\n if (this.dragging) {\r\n if(this.isVerticalLayout) {\r\n this.grabberOffset = ((( 20 / this.verticalContainer.nativeElement.offsetHeight) * 100 ) / 2);\r\n this.sectionSize = ((this.verticalContainer.nativeElement.offsetHeight - (event.pageY - this.verticalContainer.nativeElement.getBoundingClientRect().top))\r\n / (this.verticalContainer.nativeElement.offsetHeight) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.grabberOffset = ((( 10 / this.horizontalContainer.nativeElement.offsetWidth) * 100 ) / 2);\r\n this.sectionSize = ((this.horizontalContainer.nativeElement.offsetWidth - event.pageX - this.horizontalContainer.nativeElement.getBoundingClientRect().left)\r\n / (this.horizontalContainer.nativeElement.offsetWidth) * 100);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n @HostListener(\"document:mouseup\", [\"$event\"])\r\n @HostListener(\"document:touchend\", [\"$event\"])\r\n mouseUp(event: MouseEvent) {\r\n if (this.dragging) {\r\n this.dragging = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.isVerticalLayout) {\r\n window.removeEventListener(\"touchmove\", this.verticalTouchFunction);\r\n } else {\r\n window.removeEventListener(\"touchmove\", this.horizontalTouchFunction);\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component, ComponentFactory,\r\n ComponentFactoryResolver, ComponentRef,\r\n Input, OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {HttpClient, HttpParams} from \"@angular/common/http\";\r\nimport {Report} from \"./model/report.model\";\r\nimport {Param} from \"./model/param.model\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {Option} from \"./model/option.model\";\r\nimport {ReportTab} from \"./model/report-tab.model\";\r\nimport {Format} from \"./model/format.model\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport * as moment from \"moment\";\r\nimport {DatePipe} from \"@angular/common\";\r\nimport {ModalDismissReasons, NgbModal} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport { GridApi } from \"ag-grid-community\";\r\n\r\n@Component({\r\n selector: \"hci-reporting-framework\",\r\n template: `\r\n <div style=\"height: 100vh\">\r\n <resizable-section-divider class=\"flex-grow-1\" [isVerticalLayout]=\"true\">\r\n <div topSection class=\"d-flex flex-column\" style=\"height: 100%; width: 100%; overflow: auto;\">\r\n <!--can wrap just the grid with the tabs-->\r\n <mat-tab-group *ngIf=\"tabList.length > 0\"\r\n class=\"flex-grow-1\">\r\n <mat-tab *ngFor=\"let tab of tabList\"\r\n label=\"{{tab.title}}\"\r\n class=\"flex-grow-1\">\r\n <ng-template matTabContent>\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <!--ngb-tabset *ngIf=\"tabList.length > 0\"\r\n destroyOnHide=\"false\"\r\n type=\"tabs\"\r\n class=\"flex-grow-1\"\r\n #reportTabSet=\"ngbTabset\"\r\n >\r\n <ngb-tab *ngFor=\"let tab of tabList\"\r\n id=\"{{tab.name}}\" title=\"{{tab.title}}\"\r\n style=\"border: 5px solid;\" >\r\n <ng-template ngbTabContent >\r\n\r\n <ag-grid-angular\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onTabbedGridReady($event, tab.name)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"tabbedGridList[tab.name]\">\r\n </ag-grid-angular>\r\n </ng-template>\r\n </ngb-tab>\r\n\r\n </ngb-tabset-->\r\n\r\n <ag-grid-angular *ngIf=\"tabList.length <= 0\"\r\n class=\"ag-theme-balham full-width flex-grow-1\"\r\n style=\"min-height: 200px; height: 100%;\"\r\n (gridReady)=\"this.onMainGridReady($event)\"\r\n [gridOptions]=\"this.gridOptions\"\r\n [rowSelection]=\"'single'\"\r\n (rowSelected)=\"setSelectedRow($event)\"\r\n [frameworkComponents]=\"frameworkComponents\"\r\n [rowData]=\"fullGridList\">\r\n </ag-grid-angular>\r\n </div>\r\n <div bottomSection class=\"d-flex flex-column\" style=\"height: 80%; width: 100%; overflow: auto;\">\r\n <div style=\"display: block;\">\r\n <div class=\"row\">\r\n <label style=\"margin-left: 25px; font-weight: bold\">{{selectedReport.title}}</label>\r\n <button class=\"btn\" *ngIf=\"selectedReport.help && selectedReport.help != ''\"\r\n (click)=\"openHelp(content)\">\r\n <i class=\"far fa-question-circle\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <template #paramContainer></template>\r\n <div style=\"display: block;\">\r\n <div class=\"row center-row\">\r\n <template #formatContainer></template>\r\n <button *ngIf=\"selectedReport.name\"\r\n class=\"btn btn-success\"\r\n type=\"button\"\r\n (click)=\"onRunReport()\"\r\n >Run Report</button>\r\n </div>\r\n </div>\r\n </div>\r\n </resizable-section-divider>\r\n </div>\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"help-model-title\">Report Help</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modal.dismiss('Cross click')\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" >\r\n <div class=\"container\" [innerHTML]=\"selectedReport.help\">\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"modal.dismiss('Ok click')\">OK</button>\r\n </div>\r\n </ng-template>\r\n\r\n `,\r\n styles: [`\r\n :host ::ng-deep .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label{\r\n background-color: #98c7e0;\r\n }\r\n\r\n :host ::ng-deep .mat-tab-label-active{\r\n background-color: #def4ff;\r\n }\r\n\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n `]\r\n})\r\nexport class ReportingFrameworkComponent implements OnInit, OnDestroy {\r\n\r\n @Input() manageReportUrl: string; // /artadmin/legacy/api/hci.artadmin.controller.ManageReports\r\n @Input() commandPrefix: string; // /artadmin/legacy/api/jsp\r\n @Input() dictAPILeadIn: string; // /artadmin/api/dictionaries\r\n @Input() reportsByType: string; //optional. usually \"global\" or \"patient\"\r\n\r\n @ViewChild(\"paramContainer\", {read: ViewContainerRef, static: false}) paramContainer: ViewContainerRef;\r\n @ViewChild(\"formatContainer\", {read: ViewContainerRef, static: false}) formatContainer: ViewContainerRef;\r\n\r\n fullGridList: any[] = [];\r\n tabbedGridList: any = {};\r\n\r\n\r\n gridOptions = {\r\n rowStyle: {\r\n \"font-family\": \"Prompt, sans-serif\"\r\n },\r\n rowHeight: 20,\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n }; //enableCellTextSelection should be combined with ensureDomOrder\r\n frameworkComponents: any;\r\n\r\n mainGridApi: GridApi;\r\n tabbedGridApiList: any = {}; //a map of GridAPIs to tab names\r\n\r\n reportList: Report[] = [];\r\n tabList: ReportTab[] = [];\r\n tabTypeNameLookup: any = {}; //a kind of dict that maps the tab or type to the tab-name\r\n\r\n selectedReport: Report = new Report();\r\n selectedFormat: string;\r\n displayedParamComponentRefs: ComponentRef<any>[] = [];\r\n displayedFormatComponentRefs: ComponentRef<any>[] = [];\r\n\r\n constructor(private http: HttpClient,\r\n private resolver: ComponentFactoryResolver,\r\n private datePipe: DatePipe,\r\n private dialogsService: DialogsService,\r\n private modalService: NgbModal) {}\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.manageReportUrl != null) {\r\n\r\n this.http.get(this.manageReportUrl,\r\n {\r\n params: new HttpParams().set(\"action\", \"loadWithParams\")\r\n }\r\n ).subscribe(\r\n (resp) => {\r\n console.log(resp);\r\n var templist = [];\r\n var tempTabbedGridList = {};\r\n\r\n var tablist = resp[\"reportTabs\"];\r\n for (let row of tablist) {\r\n var tab: ReportTab = new ReportTab();\r\n tab.name = row.name;\r\n tab.title = row.title;\r\n tab.type = row.type;\r\n tab.tab = row.tab;\r\n tab.datakey = row.datakey;\r\n\r\n if (!this.reportsByType) {\r\n this.tabList.push(tab);\r\n if (tab.tab) {\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n if (tab.type) {\r\n this.tabTypeNameLookup[tab.type] = tab.name;\r\n }\r\n }else {\r\n if (this.reportsByType == tab.type) {\r\n this.tabList.push(tab);\r\n this.tabTypeNameLookup[tab.tab] = tab.name;\r\n }\r\n }\r\n\r\n var tabGridList: any[] = [];\r\n this.tabbedGridList[tab.name] = tabGridList;\r\n tempTabbedGridList[tab.name] = [];\r\n }\r\n\r\n\r\n var list = resp[\"reportList\"];\r\n // console.log(list);\r\n for (let row of list) {\r\n var report: Report = new Report();\r\n report.name = row.name;\r\n report.title = row.title;\r\n report.description = row.description;\r\n report.className = row.className;\r\n report.fileName = row.fileName;\r\n report.type = row.type;\r\n report.tab = row.tab;\r\n report.datakey = row.datakey;\r\n report.help = row.help;\r\n\r\n const object = {\r\n name: report.name,\r\n title: report.title,\r\n description: report.description\r\n };\r\n\r\n\r\n var tabname;\r\n if (report.tab) {\r\n tabname = this.tabTypeNameLookup[report.tab];\r\n } else if (!this.reportsByType && report.type) {\r\n tabname = this.tabTypeNameLookup[report.type];\r\n }\r\n\r\n if (tabname) {\r\n var gridlist: any[] = tempTabbedGridList[tabname];\r\n\r\n if(this.reportsByType) {\r\n if (report.type === this.reportsByType ) {\r\n gridlist.push(object);\r\n }\r\n }else {\r\n gridlist.push(object);\r\n }\r\n }\r\n\r\n let params = row.params;\r\n if (params) {\r\n\r\n for (let p of params) {\r\n // console.log(p);\r\n var newParam: Param = new Param();\r\n newParam.dictAPILeadIn = this.dictAPILeadIn;\r\n\r\n newParam.caption = p.caption;\r\n newParam.name = p.name;\r\n newParam.type = p.type;\r\n newParam.className = p.className;\r\n newParam.valueXPath = p.valueXPath;\r\n newParam.displayXPath = p.displayXPath;\r\n newParam.displayOrder = p.displayOrder;\r\n newParam.activeOnly = p.activeOnly;\r\n newParam.sortField = p.sortField;\r\n newParam.sortNumeric = p.sortNumeric;\r\n newParam.filterField = p.filterField;\r\n\r\n if (newParam.valueXPath) {\r\n newParam.valueXPath = newParam.valueXPath.replace(\"@\", \"\");\r\n }\r\n if (newParam.displayXPath) {\r\n newParam.displayXPath = newParam.displayXPath.replace(\"@\", \"\");\r\n }\r\n if (newParam.sortField) {\r\n newParam.sortField = newParam.sortField.replace(\"@\", \"\");\r\n }\r\n\r\n let options = p.options;\r\n if (options) {\r\n\r\n for (let o of options) {\r\n var newOption: Option = new Option();\r\n newOption.value = o.value;\r\n newOption.display = o.display;\r\n newOption.displayOrder = o.displayOrder;\r\n\r\n newParam.options.push(newOption);\r\n }\r\n }\r\n\r\n report.params.push(newParam);\r\n }\r\n }\r\n\r\n let formats = row.formats;\r\n if (formats) {\r\n\r\n for (let f of formats) {\r\n var newFormat: Format = new Format();\r\n newFormat.name = f.name;\r\n newFormat.caption = f.caption;\r\n newFormat.displayOrder = f.displayOrder;\r\n\r\n report.formats.push(newFormat);\r\n }\r\n }\r\n\r\n\r\n this.reportList.push(report);\r\n\r\n if (this.reportsByType) {\r\n if(report.type === this.reportsByType) {\r\n templist.push(object);\r\n }\r\n } else {\r\n templist.push(object);\r\n }\r\n }\r\n\r\n this.fullGridList = templist.slice();\r\n console.log(\"gridlist: \");\r\n console.log(this.fullGridList);\r\n\r\n for(let tab of this.tabList){\r\n this.tabbedGridList[tab.name] = tempTabbedGridList[tab.name].slice();\r\n }\r\n\r\n }\r\n );\r\n }\r\n }\r\n\r\n public columnDef() : any[] {\r\n return [\r\n\r\n {\r\n field: \"title\",\r\n headerName: \"Title\",\r\n width: 300,\r\n sortable: true,\r\n resizable: true,\r\n editable: false},\r\n {\r\n field: \"description\",\r\n headerName: \"Description\",\r\n sortable: true,\r\n resizable: true,\r\n editable: false}\r\n ];\r\n\r\n }\r\n\r\n onMainGridReady(params : any) {\r\n\r\n this.mainGridApi = params.api;\r\n this.mainGridApi.setColumnDefs(this.columnDef());\r\n this.mainGridApi.setRowData(this.fullGridList);\r\n this.mainGridApi.sizeColumnsToFit();\r\n }\r\n\r\n onTabbedGridReady(params : any, tabname: string) {\r\n\r\n this.tabbedGridApiList[tabname] = params.api;\r\n this.tabbedGridApiList[tabname].setColumnDefs(this.columnDef());\r\n this.tabbedGridApiList[tabname].setRowData(this.tabbedGridList[tabname]);\r\n this.tabbedGridApiList[tabname].sizeColumnsToFit();\r\n }\r\n\r\n setSelectedRow(event) {\r\n\r\n //console.log(event);\r\n if(event.node.selected) {\r\n let reportName = event.node.data.name;\r\n console.log(event.node.data.name);\r\n\r\n var matchedReport: Report;\r\n for (let r of this.reportList) {\r\n if (r.name == reportName) {\r\n matchedReport = r;\r\n }\r\n }\r\n\r\n if (matchedReport != null) {\r\n this.selectedReport = matchedReport;\r\n } else {\r\n this.selectedReport = new Report();\r\n }\r\n\r\n this.createParamComponents();\r\n }\r\n }\r\n\r\n createParamComponents() {\r\n if(this.paramContainer) {\r\n this.paramContainer.clear();\r\n }\r\n if(this.formatContainer) {\r\n this.formatContainer.clear();\r\n }\r\n\r\n //destroy previous components and clear the displayedRef lists..?\r\n this.destroyComponentRefs();\r\n this.displayedParamComponentRefs = [];\r\n this.displayedFormatComponentRefs = [];\r\n\r\n for(let p of this.selectedReport.params){\r\n\r\n const factory: ComponentFactory<ParameterComponent> = this.resolver.resolveComponentFactory(ParameterComponent);\r\n var componentRef: ComponentRef<ParameterComponent> = this.paramContainer.createComponent(factory);\r\n this.displayedParamComponentRefs.push(componentRef);\r\n\r\n componentRef.instance.setParam(p);\r\n\r\n if(p.options.length > 0) {\r\n var entries: any[] = [];\r\n for(let o of p.options){\r\n var e = {id: o.value, display: o.display};\r\n entries.push(e);\r\n }\r\n componentRef.instance.entries = entries;\r\n }\r\n\r\n }\r\n\r\n var first: boolean = true;\r\n for(let f of this.selectedReport.formats){\r\n\r\n const factory2: ComponentFactory<FormatComponent> = this.resolver.resolveComponentFactory(FormatComponent);\r\n var componentRef2: ComponentRef<FormatComponent> = this.formatContainer.createComponent(factory2);\r\n this.displayedFormatComponentRefs.push(componentRef2);\r\n\r\n componentRef2.instance.format = f;\r\n componentRef2.instance.selectedValueChange.subscribe(\r\n (s) => {\r\n this.selectedFormat = s;\r\n }\r\n );\r\n if(first) {//select the first format in the grouping\r\n componentRef2.instance.selectedValue = f.name;\r\n this.selectedFormat = f.name;\r\n first = false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n openHelp(content) {\r\n\r\n this.modalService.open(content, {ariaLabelledBy: \"help-modal-title\"})\r\n .result.then((result) => {\r\n // this.closeResult = `Closed with: ${result}`;\r\n console.log(result);\r\n\r\n }, (reason) => {\r\n var closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n console.log(closeResult);\r\n\r\n });\r\n\r\n }\r\n\r\n private getDismissReason(reason: any): string {\r\n if (reason === ModalDismissReasons.ESC) {\r\n return \"by pressing ESC\";\r\n } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {\r\n return \"by clicking on a backdrop\";\r\n } else {\r\n return `with: ${reason}`;\r\n }\r\n }\r\n\r\n onRunReport() {\r\n\r\n if(this.selectedReport) {\r\n\r\n this.dialogsService.startDefaultSpinnerDialog();\r\n\r\n console.log(\"format:\" + this.selectedFormat);\r\n if(!this.selectedFormat) {\r\n this.selectedFormat = \"html\";\r\n }\r\n\r\n let runParams = new HttpParams();\r\n runParams = runParams.append(\"format\", this.selectedFormat);\r\n runParams = runParams.append(\"action\", \"show\");\r\n runParams = runParams.append(\"reportName\", this.selectedReport.name);\r\n\r\n runParams = this.getRunParameters(runParams);\r\n\r\n console.log(runParams);\r\n\r\n this.http.get(this.commandPrefix + this.selectedReport.className,\r\n {\r\n params: runParams,\r\n observe: \"response\",\r\n responseType: \"blob\"\r\n }\r\n ).subscribe(\r\n (res) => {\r\n console.log(res);\r\n\r\n var filename;\r\n if(this.selectedFormat != \"html\") {\r\n filename = res.headers.get(\"content-disposition\").split(\";\")[1].split(\"=\")[1].replace(/\\\"/g, \"\");\r\n }\r\n var blob = new Blob([res.body], {type: res.body.type} ); //, {type: \"application/vnd.ms-excel\"}\r\n var fileURL = window.URL.createObjectURL(blob);\r\n console.log(fileURL);\r\n\r\n const a: HTMLAnchorElement = document.createElement(\"a\") as HTMLAnchorElement;\r\n a.href = fileURL;\r\n if(this.selectedFormat == \"html\") {\r\n a.target = \"_blank\";\r\n }else {\r\n a.download = filename;\r\n }\r\n window.document.body.appendChild(a);\r\n a.click();\r\n window.document.body.removeChild(a);\r\n URL.revokeObjectURL(fileURL);\r\n\r\n this.dialogsService.stopAllSpinnerDialogs();\r\n }\r\n );\r\n }\r\n }\r\n\r\n getRunParameters(runParams: HttpParams): HttpParams {\r\n var newParams = runParams;\r\n\r\n for(let o of this.displayedParamComponentRefs){\r\n var param = o.instance.param;\r\n\r\n if(param.type == \"multiselect\") {\r\n var resList = \"\";\r\n for(let v of param.selectedValueList){\r\n if(resList != \"\") {\r\n resList += \",\";\r\n }\r\n resList += v;\r\n }\r\n newParams = newParams.append(param.name, resList);\r\n }else {\r\n var value;\r\n if(param.selectedValue) { //so we don't get \"undefined\" sent back\r\n if(param.type == \"date\") {\r\n value = this.getDateString(param.selectedValue);\r\n }else {\r\n value = param.selectedValue;\r\n }\r\n }else {\r\n value = \"\";\r\n }\r\n newParams = newParams.append(param.name, value);\r\n }\r\n }\r\n return newParams;\r\n }\r\n\r\n getDateString(date: any): string {\r\n\r\n if (date instanceof Date) {\r\n if (!isNaN(date.getTime())) {\r\n return this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n } else {\r\n return \"\";\r\n }\r\n }else if(moment.isMoment(date) ) {\r\n if(date != null) {\r\n return date.format(\"M/D/YYYY\");\r\n }else {\r\n return \"\";\r\n }\r\n }else if(typeof date == \"string\") {\r\n return date;\r\n }else {\r\n return \"\";\r\n }\r\n }\r\n\r\n destroyComponentRefs() {\r\n for(let o of this.displayedParamComponentRefs){\r\n o.destroy();\r\n }\r\n for(let o of this.displayedFormatComponentRefs){\r\n o.destroy();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyComponentRefs();\r\n }\r\n\r\n /*\r\n styles: [`\r\n .report-details{\r\n height: 100%;\r\n width: 100%;\r\n position: absolute\r\n }\r\n\r\n .center-row{\r\n margin-top: 10px;\r\n margin-left: 60vw;\r\n }\r\n\r\n .mat-tab-body-wrapper{\r\n flex-grow: 1;\r\n }\r\n\r\n.tab-pane{\r\n height: 100%;\r\n}\r\n`]*/\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule, DatePipe} from \"@angular/common\";\r\n\r\nimport {ReportingFrameworkComponent} from \"./reporting-framework.component\";\r\nimport {MatDatepickerModule} from \"@angular/material/datepicker\";\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {ReportDatepickerComponent} from \"./datepicker/report-datepicker.component\";\r\nimport {FormatComponent} from \"./format/format.component\";\r\nimport {ParameterComponent} from \"./parameter/parameter.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {SpinnerDialogComponent} from \"./spinner/spinner-dialog.component\";\r\nimport {AgGridModule} from \"ag-grid-angular\";\r\nimport {MatLegacyProgressSpinnerModule as MatProgressSpinnerModule} from \"@angular/material/legacy-progress-spinner\";\r\nimport { MatLegacyDialogModule as MatDialogModule } from \"@angular/material/legacy-dialog\";\r\nimport {DialogsService} from \"./spinner/dialogs.service\";\r\nimport {ResizableSectionDividerComponent} from \"./resizable-divider/resizable-section-divider.component\";\r\nimport {MatLegacyTabsModule as MatTabsModule} from \"@angular/material/legacy-tabs\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatProgressSpinnerModule,\r\n MatTabsModule,\r\n SelectModule,\r\n AgGridModule,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DialogsService\r\n ],\r\n declarations: [\r\n ReportingFrameworkComponent,\r\n ReportDatepickerComponent,\r\n ParameterComponent,\r\n FormatComponent,\r\n SpinnerDialogComponent,\r\n ResizableSectionDividerComponent\r\n ],\r\n exports: [\r\n ReportingFrameworkComponent\r\n ]\r\n})\r\nexport class ReportModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4.ReportDatepickerComponent","MAT_DIALOG_DATA","i1","i2","MatDialogConfig","i3.DialogsService","i7.ResizableSectionDividerComponent","MatDialogModule","MatProgressSpinnerModule","MatTabsModule"],"mappings":"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"}
|