@huntsman-cancer-institute/crud 17.0.4 → 17.0.6
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.
|
@@ -209,13 +209,13 @@ export class CrudComponent {
|
|
|
209
209
|
</div>
|
|
210
210
|
<button *ngIf="saveable && !crudForm.form.dirty"
|
|
211
211
|
(click)="save()"
|
|
212
|
-
class="btn btn-icon
|
|
212
|
+
class="btn btn-icon ms-1"
|
|
213
213
|
[disabled]="true">
|
|
214
214
|
<i class="far fa-circle fa-lg"></i>
|
|
215
215
|
</button>
|
|
216
216
|
<button *ngIf="saveable && crudForm.form.dirty && crudForm.form.valid && !warning"
|
|
217
217
|
(click)="save()"
|
|
218
|
-
class="btn btn-icon btn-green
|
|
218
|
+
class="btn btn-icon btn-green ms-1">
|
|
219
219
|
<span *ngIf="!busy">
|
|
220
220
|
<i class="fas fa-check fa-lg"></i>
|
|
221
221
|
</span>
|
|
@@ -228,12 +228,12 @@ export class CrudComponent {
|
|
|
228
228
|
triggers="mouseenter:mouseleave"
|
|
229
229
|
popoverClass="warn"
|
|
230
230
|
(click)="save()"
|
|
231
|
-
class="btn btn-icon btn-red
|
|
231
|
+
class="btn btn-icon btn-red ms-1">
|
|
232
232
|
<i class="fas fa-exclamation-circle fa-lg"></i>
|
|
233
233
|
</button>
|
|
234
234
|
<button *ngIf="saveable && crudForm.form.dirty && !crudForm.form.valid && !warning"
|
|
235
235
|
[disabled]="true">
|
|
236
|
-
class="btn btn-icon btn-red
|
|
236
|
+
class="btn btn-icon btn-red ms-1">
|
|
237
237
|
<i class="fas fa-times fa-lg"></i>
|
|
238
238
|
</button>
|
|
239
239
|
</form>
|
|
@@ -290,13 +290,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
290
290
|
</div>
|
|
291
291
|
<button *ngIf="saveable && !crudForm.form.dirty"
|
|
292
292
|
(click)="save()"
|
|
293
|
-
class="btn btn-icon
|
|
293
|
+
class="btn btn-icon ms-1"
|
|
294
294
|
[disabled]="true">
|
|
295
295
|
<i class="far fa-circle fa-lg"></i>
|
|
296
296
|
</button>
|
|
297
297
|
<button *ngIf="saveable && crudForm.form.dirty && crudForm.form.valid && !warning"
|
|
298
298
|
(click)="save()"
|
|
299
|
-
class="btn btn-icon btn-green
|
|
299
|
+
class="btn btn-icon btn-green ms-1">
|
|
300
300
|
<span *ngIf="!busy">
|
|
301
301
|
<i class="fas fa-check fa-lg"></i>
|
|
302
302
|
</span>
|
|
@@ -309,12 +309,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
309
309
|
triggers="mouseenter:mouseleave"
|
|
310
310
|
popoverClass="warn"
|
|
311
311
|
(click)="save()"
|
|
312
|
-
class="btn btn-icon btn-red
|
|
312
|
+
class="btn btn-icon btn-red ms-1">
|
|
313
313
|
<i class="fas fa-exclamation-circle fa-lg"></i>
|
|
314
314
|
</button>
|
|
315
315
|
<button *ngIf="saveable && crudForm.form.dirty && !crudForm.form.valid && !warning"
|
|
316
316
|
[disabled]="true">
|
|
317
|
-
class="btn btn-icon btn-red
|
|
317
|
+
class="btn btn-icon btn-red ms-1">
|
|
318
318
|
<i class="fas fa-times fa-lg"></i>
|
|
319
319
|
</button>
|
|
320
320
|
</form>
|
|
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
341
341
|
type: ViewChild,
|
|
342
342
|
args: ["crudForm", { static: true }]
|
|
343
343
|
}] } });
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcnVkL3NyYy9jb21wb25lbnRzL2NydWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQzFFLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFFckQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFnSEgsTUFBTSxPQUFPLGFBQWE7SUFzQnhCLFlBQW9CLFdBQXdCLEVBQ3hCLGlCQUFvQztRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckJsQyxjQUFTLEdBQVcsb0JBQW9CLENBQUM7UUFFdEQsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWpCLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRXJDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFNeEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVksS0FBSyxDQUFDO0lBTXFDLENBQUM7SUFFNUQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDbkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFakIsS0FBSyxJQUFJLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO2dCQUUzQixLQUFLLElBQUksWUFBWSxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQzNDLEtBQUssSUFBSSxhQUFhLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUMxQyxJQUFJLFlBQVksS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ3pDLElBQUksS0FBSyxHQUFRO2dDQUNmLElBQUksRUFBRSxTQUFTO2dDQUNmLFFBQVEsRUFBRSxhQUFhO2dDQUN2QixNQUFNLEVBQUUsU0FBUzs2QkFDbEIsQ0FBQzs0QkFFRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQ0FDaEIsS0FBSyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0NBQ25DLElBQUksWUFBWSxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3Q0FDdEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO29DQUNuQyxDQUFDO2dDQUNILENBQUM7NEJBQ0gsQ0FBQzs0QkFFRCxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUN2QixNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFFRCxLQUFLLElBQUksYUFBYSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztvQkFDOUIsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBRXpCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLEtBQUssSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsS0FBSyxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixLQUFLLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDN0IsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFFekIsSUFBSSxDQUFDLGNBQWMsRUFBRTthQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQzthQUNGLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7OEdBdEtVLGFBQWE7a0dBQWIsYUFBYSw2WEE3R2Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkVUOzsyRkFnQ1UsYUFBYTtrQkEvR3pCLFNBQVM7K0JBQ0UsVUFBVSxZQUNWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZFVDtnSEFrQ3FCLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFFWCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDVyxhQUFhO3NCQUE3QixLQUFLO3VCQUFDLFFBQVE7Z0JBQ04sR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRWlDLElBQUk7c0JBQTFDLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBpc0Rldk1vZGUsXHJcbiAgVmlld0NoaWxkLCBPbkRlc3Ryb3lcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nRm9ybX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbmFsaXplfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7Q3J1ZFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgZ2VuZXJpYyBjb21wb25lbnQgdGhhdCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIGNydWQgYXBpLiAgVGhlIGNvbXBvbmVudCBidWlsZHMgaXRzZWxmIGJhc2VkIG9uIHRoZVxyXG4gKiBtZXRhZGF0YS4gIFRoaXMgY29tcG9uZW50IGNvdWxkIGJlIGluZGVwZW5kZW50IHNvIGl0IGhhcyBpdHMgb3duIGZvcm0gYW5kIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBjcnVkIGFwaSBvbiBpdHMgb3duLlxyXG4gKlxyXG4gKiBcImlkXCI6IGZhbHNlLFxyXG4gKiBcImZpZWxkXCI6IFwiaWROYW1lVHlwZVwiLFxyXG4gKiBcInR5cGVcIjogXCJMb25nXCIsXHJcbiAqIFwibm90TnVsbFwiOiB0cnVlLFxyXG4gKiBcIm1pblwiOiBudWxsLFxyXG4gKiBcIm1heFwiOiBudWxsLFxyXG4gKiBcImRpY3Rpb25hcnlDbGFzc05hbWVcIjogXCJoY2kucmkuY29yZS5zdWJqZWN0Lm1vZGVsLk5hbWVUeXBlXCIsXHJcbiAqIFwicGhpXCI6IGZhbHNlXHJcbiAqXHJcbiAqIEBzaW5jZSAxMC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jcnVkXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxmb3JtICNjcnVkRm9ybT1cIm5nRm9ybVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LW5vd3JhcCBmbGV4LXJvdyBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtbm93cmFwIGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPGhjaS1idXN5IFtidXN5XT1cIltidXN5XVwiIFtzaG93SWNvbl09XCJmYWxzZVwiPjwvaGNpLWJ1c3k+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRBcnJheSBvZiBmaWVsZHNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ub3dyYXAgbWItMVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZEFycmF5XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiZmllbGQubWV0YWRhdGEudHlwZSA9PT0gJ1N0cmluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttaW5MZW5ndGhdPVwiZmllbGQubWV0YWRhdGEubWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJmaWVsZC5tZXRhZGF0YS5tYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQubWV0YWRhdGEubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3J1ZC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImZpZWxkLnN0eWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5waGldPVwiZmllbGQubWV0YWRhdGEucGhpXCIgLz5cclxuICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhZmllbGQubWV0YWRhdGEuZGljdGlvbmFyeUNsYXNzTmFtZSAmJiAoZmllbGQubWV0YWRhdGEudHlwZSA9PT0gJ0ludGVnZXInIHx8IGZpZWxkLm1ldGFkYXRhLnR5cGUgPT09ICdMb25nJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW21pbkxlbmd0aF09XCJmaWVsZC5tZXRhZGF0YS5taW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImZpZWxkLm1ldGFkYXRhLm1heFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5tZXRhZGF0YS5ub3ROdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcnVkLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZmllbGQuc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBoaV09XCJmaWVsZC5tZXRhZGF0YS5waGlcIiAvPlxyXG4gICAgICAgICAgICAgIDxoY2ktbmF0aXZlLXNlbGVjdCAqbmdJZj1cImZpZWxkLm1ldGFkYXRhLmRpY3Rpb25hcnlDbGFzc05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxdPVwiZmllbGQubWV0YWRhdGEuZGljdGlvbmFyeUNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5tZXRhZGF0YS5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3J1ZC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImZpZWxkLnN0eWxlc1wiPlxyXG4gICAgICAgICAgICAgIDwvaGNpLW5hdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgIWNydWRGb3JtLmZvcm0uZGlydHlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIG1sLTFcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2lyY2xlIGZhLWxnXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNhdmVhYmxlICYmIGNydWRGb3JtLmZvcm0uZGlydHkgJiYgY3J1ZEZvcm0uZm9ybS52YWxpZCAmJiAhd2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWdyZWVuIG1sLTFcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXN5XCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVjayBmYS1sZ1wiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJidXN5XCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLWxnIGZhLXNwaW5cIj48L2k+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNhdmVhYmxlICYmIHdhcm5pbmdcIlxyXG4gICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cIndhcm5pbmdcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tcmVkIG1sLTFcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leGNsYW1hdGlvbi1jaXJjbGUgZmEtbGdcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgY3J1ZEZvcm0uZm9ybS5kaXJ0eSAmJiAhY3J1ZEZvcm0uZm9ybS52YWxpZCAmJiAhd2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tcmVkIG1sLTFcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lcyBmYS1sZ1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Zvcm0+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgXHJcbiAgICAuY3J1ZC1pbnB1dCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAuY3J1ZC1pbnB1dDpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmNydWQtaW5wdXQ6bGFzdC1jaGlsZCB7XHJcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcclxuICAgIH1cclxuXHJcbiAgICAubmctaW52YWxpZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxMDAsIDEwMCwgMC4yNSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5waGkge1xyXG4gICAgICBib3gtc2hhZG93OiAjY2M3NzAwIDFweCAxcHggMXB4IGluc2V0O1xyXG4gICAgICBib3JkZXItY29sb3I6IG9yYW5nZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgOjpuZy1kZWVwIC5oY2ktZHJvcGRvd24ge1xyXG4gICAgICBtaW4td2lkdGg6IDIwJTtcclxuICAgIH1cclxuICBcclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3J1ZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpIGNsYXNzTGlzdDogc3RyaW5nID0gXCJkLWZsZXggZmxleC1ub3dyYXBcIjtcclxuXHJcbiAgQElucHV0KCkgc2F2ZWFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZztcclxuICBASW5wdXQoXCJmaWVsZHNcIikgZGlzcGxheUZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBpZHM6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIHN0eWxlczogYW55W107XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJjcnVkRm9ybVwiLCB7c3RhdGljOiB0cnVlfSkgZm9ybTogTmdGb3JtO1xyXG5cclxuICBpZDogc3RyaW5nO1xyXG4gIG1ldGFkYXRhOiBhbnkgPSB7fTtcclxuICBmaWVsZHM6IGFueVtdO1xyXG4gIGJ1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3YXJuaW5nOiBzdHJpbmc7XHJcblxyXG4gIG1ldGFkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1ldGFkYXRhU3Vic2NyaXB0aW9uID0gdGhpcy5jcnVkU2VydmljZS5nZXRNZXRhZGF0YSh0aGlzLmNsYXNzTmFtZSkuc3Vic2NyaWJlKChtZXRhZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGRzID0gW107XHJcblxyXG4gICAgICBmb3IgKGxldCBkaXNwbGF5RmllbGRBcnJheSBvZiB0aGlzLmRpc3BsYXlGaWVsZHMpIHtcclxuICAgICAgICBsZXQgZmllbGRBcnJheTogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgZGlzcGxheUZpZWxkIG9mIGRpc3BsYXlGaWVsZEFycmF5KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBtZXRhZGF0YUZpZWxkIG9mIG1ldGFkYXRhLmZpZWxkcykge1xyXG4gICAgICAgICAgICBpZiAoZGlzcGxheUZpZWxkID09PSBtZXRhZGF0YUZpZWxkLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGZpZWxkOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBtZXRhZGF0YTogbWV0YWRhdGFGaWVsZCxcclxuICAgICAgICAgICAgICAgIHN0eWxlczogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBmaWVsZFN0eWxlIG9mIHRoaXMuc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5RmllbGQgPT09IGZpZWxkU3R5bGUuZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5zdHlsZXMgPSBmaWVsZFN0eWxlLnN0eWxlcztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZmllbGRBcnJheS5wdXNoKGZpZWxkKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZHMucHVzaChmaWVsZEFycmF5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQgbWV0YWRhdGFGaWVsZCBvZiBtZXRhZGF0YS5maWVsZHMpIHtcclxuICAgICAgICBpZiAobWV0YWRhdGFGaWVsZC5pZCkge1xyXG4gICAgICAgICAgdGhpcy5pZCA9IG1ldGFkYXRhRmllbGQuZmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubWV0YWRhdGEgPSBtZXRhZGF0YTtcclxuXHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXRhZGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVzaCB0aGUgZGF0YSBmcm9tIHRoZSBib3VuZCBpbnB1dHMgdG8gdGhlIGRhdGEgcmVwcmVzZW50aW5nIHRoaXMgY3J1ZCBjbGFzcy5cclxuICAgKi9cclxuICBjcmVhdGVEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaWRzKSB7XHJcbiAgICAgIGZvciAobGV0IGlkIG9mIHRoaXMuaWRzKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhW2lkLmtleV0gPSBpZC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGZpZWxkQXJyYXkgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRBcnJheSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtmaWVsZC5tZXRhZGF0YS5maWVsZF0gPSBmaWVsZC5kYXRhO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiBkYXRhIGV4aXN0cywgc2V0IGl0IGFuZCByZWZyZXNoIHRoZSBib3VuZCBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKi9cclxuICBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJDcnVkQ29tcG9uZW50LnNldERhdGE6IFwiICsgdGhpcy5jbGFzc05hbWUpO1xyXG4gICAgICBjb25zb2xlLmRlYnVnKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhID0ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQdXNoZXMgdGhlIGRhdGEgdG8gdGhlIGZpZWxkcyBmb3IgYmluZGluZyB0byB0aGUgZm9ybSBpbnB1dHMuXHJcbiAgICovXHJcbiAgcmVmcmVzaERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGZvciAobGV0IGZpZWxkQXJyYXkgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZEFycmF5KSB7XHJcbiAgICAgICAgICBmaWVsZC5kYXRhID0gdGhpcy5kYXRhW2ZpZWxkLm1ldGFkYXRhLmZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhIHNhdmUgcmVxdWVzdCBhbmQgcmVmcmVzaGVzIHRoZSBkYXRhIHVwb24gYSBzdWNjZXNzZnVsIGNhbGwuXHJcbiAgICovXHJcbiAgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLndhcm5pbmcgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5nZXRTYXZlUmVxdWVzdCgpXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmJ1c3kgPSBmYWxzZTtcclxuICAgICAgfSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IE9iamVjdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YShkYXRhKTtcclxuICAgICAgICB0aGlzLmZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLndhcm5pbmcgPSBlcnJvcjtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiQ3J1ZENvbXBvbmVudC5zYXZlOiBcIiArIHRoaXMuY2xhc3NOYW1lICsgXCI6IFwiICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhbiBvYnNlcnZhYmxlIGZyb20gdGhlIGNydWQgcG9zdCBvciBwdXQuICBUaGlzIGlzIHVzZWQgc3VjaCB0aGF0IHRoZSBjcnVkIGNvbnRhaW5lciBjYW4gbWFuYWdlIHRoZSByZXF1ZXN0XHJcbiAgICogZm9yIHRoaXMgY29tcG9uZW50LlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T2JqZWN0Pn1cclxuICAgKi9cclxuICBnZXRTYXZlUmVxdWVzdCgpOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgdGhpcy5jcmVhdGVEYXRhKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVt0aGlzLmlkXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcnVkU2VydmljZS5wdXQodGhpcy5jbGFzc05hbWUsIHRoaXMuZGF0YVt0aGlzLmlkXSwgdGhpcy5kYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNydWRTZXJ2aWNlLnBvc3QodGhpcy5jbGFzc05hbWUsIHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcnVkL3NyYy9jb21wb25lbnRzL2NydWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQzFFLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFFckQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFnSEgsTUFBTSxPQUFPLGFBQWE7SUFzQnhCLFlBQW9CLFdBQXdCLEVBQ3hCLGlCQUFvQztRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckJsQyxjQUFTLEdBQVcsb0JBQW9CLENBQUM7UUFFdEQsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWpCLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRXJDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFNeEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVksS0FBSyxDQUFDO0lBTXFDLENBQUM7SUFFNUQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDbkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFakIsS0FBSyxJQUFJLGlCQUFpQixJQUFJ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TSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBpc0Rldk1vZGUsXHJcbiAgVmlld0NoaWxkLCBPbkRlc3Ryb3lcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nRm9ybX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbmFsaXplfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7Q3J1ZFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgZ2VuZXJpYyBjb21wb25lbnQgdGhhdCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIGNydWQgYXBpLiAgVGhlIGNvbXBvbmVudCBidWlsZHMgaXRzZWxmIGJhc2VkIG9uIHRoZVxyXG4gKiBtZXRhZGF0YS4gIFRoaXMgY29tcG9uZW50IGNvdWxkIGJlIGluZGVwZW5kZW50IHNvIGl0IGhhcyBpdHMgb3duIGZvcm0gYW5kIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBjcnVkIGFwaSBvbiBpdHMgb3duLlxyXG4gKlxyXG4gKiBcImlkXCI6IGZhbHNlLFxyXG4gKiBcImZpZWxkXCI6IFwiaWROYW1lVHlwZVwiLFxyXG4gKiBcInR5cGVcIjogXCJMb25nXCIsXHJcbiAqIFwibm90TnVsbFwiOiB0cnVlLFxyXG4gKiBcIm1pblwiOiBudWxsLFxyXG4gKiBcIm1heFwiOiBudWxsLFxyXG4gKiBcImRpY3Rpb25hcnlDbGFzc05hbWVcIjogXCJoY2kucmkuY29yZS5zdWJqZWN0Lm1vZGVsLk5hbWVUeXBlXCIsXHJcbiAqIFwicGhpXCI6IGZhbHNlXHJcbiAqXHJcbiAqIEBzaW5jZSAxMC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jcnVkXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxmb3JtICNjcnVkRm9ybT1cIm5nRm9ybVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LW5vd3JhcCBmbGV4LXJvdyBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtbm93cmFwIGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPGhjaS1idXN5IFtidXN5XT1cIltidXN5XVwiIFtzaG93SWNvbl09XCJmYWxzZVwiPjwvaGNpLWJ1c3k+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRBcnJheSBvZiBmaWVsZHNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ub3dyYXAgbWItMVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZEFycmF5XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiZmllbGQubWV0YWRhdGEudHlwZSA9PT0gJ1N0cmluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttaW5MZW5ndGhdPVwiZmllbGQubWV0YWRhdGEubWluXCJcclxuICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJmaWVsZC5tZXRhZGF0YS5tYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQubWV0YWRhdGEubm90TnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3J1ZC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImZpZWxkLnN0eWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5waGldPVwiZmllbGQubWV0YWRhdGEucGhpXCIgLz5cclxuICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhZmllbGQubWV0YWRhdGEuZGljdGlvbmFyeUNsYXNzTmFtZSAmJiAoZmllbGQubWV0YWRhdGEudHlwZSA9PT0gJ0ludGVnZXInIHx8IGZpZWxkLm1ldGFkYXRhLnR5cGUgPT09ICdMb25nJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW21pbkxlbmd0aF09XCJmaWVsZC5tZXRhZGF0YS5taW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cImZpZWxkLm1ldGFkYXRhLm1heFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5tZXRhZGF0YS5ub3ROdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcnVkLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZmllbGQuc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBoaV09XCJmaWVsZC5tZXRhZGF0YS5waGlcIiAvPlxyXG4gICAgICAgICAgICAgIDxoY2ktbmF0aXZlLXNlbGVjdCAqbmdJZj1cImZpZWxkLm1ldGFkYXRhLmRpY3Rpb25hcnlDbGFzc05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxdPVwiZmllbGQubWV0YWRhdGEuZGljdGlvbmFyeUNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5tZXRhZGF0YS5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3J1ZC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImZpZWxkLnN0eWxlc1wiPlxyXG4gICAgICAgICAgICAgIDwvaGNpLW5hdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgIWNydWRGb3JtLmZvcm0uZGlydHlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIG1zLTFcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2lyY2xlIGZhLWxnXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNhdmVhYmxlICYmIGNydWRGb3JtLmZvcm0uZGlydHkgJiYgY3J1ZEZvcm0uZm9ybS52YWxpZCAmJiAhd2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWdyZWVuIG1zLTFcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXN5XCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVjayBmYS1sZ1wiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJidXN5XCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLWxnIGZhLXNwaW5cIj48L2k+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNhdmVhYmxlICYmIHdhcm5pbmdcIlxyXG4gICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cIndhcm5pbmdcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tcmVkIG1zLTFcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leGNsYW1hdGlvbi1jaXJjbGUgZmEtbGdcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgY3J1ZEZvcm0uZm9ybS5kaXJ0eSAmJiAhY3J1ZEZvcm0uZm9ybS52YWxpZCAmJiAhd2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tcmVkIG1zLTFcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lcyBmYS1sZ1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Zvcm0+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgXHJcbiAgICAuY3J1ZC1pbnB1dCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAuY3J1ZC1pbnB1dDpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmNydWQtaW5wdXQ6bGFzdC1jaGlsZCB7XHJcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcclxuICAgIH1cclxuXHJcbiAgICAubmctaW52YWxpZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxMDAsIDEwMCwgMC4yNSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5waGkge1xyXG4gICAgICBib3gtc2hhZG93OiAjY2M3NzAwIDFweCAxcHggMXB4IGluc2V0O1xyXG4gICAgICBib3JkZXItY29sb3I6IG9yYW5nZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgOjpuZy1kZWVwIC5oY2ktZHJvcGRvd24ge1xyXG4gICAgICBtaW4td2lkdGg6IDIwJTtcclxuICAgIH1cclxuICBcclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3J1ZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpIGNsYXNzTGlzdDogc3RyaW5nID0gXCJkLWZsZXggZmxleC1ub3dyYXBcIjtcclxuXHJcbiAgQElucHV0KCkgc2F2ZWFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZztcclxuICBASW5wdXQoXCJmaWVsZHNcIikgZGlzcGxheUZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBpZHM6IGFueVtdO1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIHN0eWxlczogYW55W107XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJjcnVkRm9ybVwiLCB7c3RhdGljOiB0cnVlfSkgZm9ybTogTmdGb3JtO1xyXG5cclxuICBpZDogc3RyaW5nO1xyXG4gIG1ldGFkYXRhOiBhbnkgPSB7fTtcclxuICBmaWVsZHM6IGFueVtdO1xyXG4gIGJ1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3YXJuaW5nOiBzdHJpbmc7XHJcblxyXG4gIG1ldGFkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1ldGFkYXRhU3Vic2NyaXB0aW9uID0gdGhpcy5jcnVkU2VydmljZS5nZXRNZXRhZGF0YSh0aGlzLmNsYXNzTmFtZSkuc3Vic2NyaWJlKChtZXRhZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGRzID0gW107XHJcblxyXG4gICAgICBmb3IgKGxldCBkaXNwbGF5RmllbGRBcnJheSBvZiB0aGlzLmRpc3BsYXlGaWVsZHMpIHtcclxuICAgICAgICBsZXQgZmllbGRBcnJheTogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgZGlzcGxheUZpZWxkIG9mIGRpc3BsYXlGaWVsZEFycmF5KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBtZXRhZGF0YUZpZWxkIG9mIG1ldGFkYXRhLmZpZWxkcykge1xyXG4gICAgICAgICAgICBpZiAoZGlzcGxheUZpZWxkID09PSBtZXRhZGF0YUZpZWxkLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGZpZWxkOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBtZXRhZGF0YTogbWV0YWRhdGFGaWVsZCxcclxuICAgICAgICAgICAgICAgIHN0eWxlczogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBmaWVsZFN0eWxlIG9mIHRoaXMuc3R5bGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5RmllbGQgPT09IGZpZWxkU3R5bGUuZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5zdHlsZXMgPSBmaWVsZFN0eWxlLnN0eWxlcztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZmllbGRBcnJheS5wdXNoKGZpZWxkKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZHMucHVzaChmaWVsZEFycmF5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChsZXQgbWV0YWRhdGFGaWVsZCBvZiBtZXRhZGF0YS5maWVsZHMpIHtcclxuICAgICAgICBpZiAobWV0YWRhdGFGaWVsZC5pZCkge1xyXG4gICAgICAgICAgdGhpcy5pZCA9IG1ldGFkYXRhRmllbGQuZmllbGQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubWV0YWRhdGEgPSBtZXRhZGF0YTtcclxuXHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXRhZGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVzaCB0aGUgZGF0YSBmcm9tIHRoZSBib3VuZCBpbnB1dHMgdG8gdGhlIGRhdGEgcmVwcmVzZW50aW5nIHRoaXMgY3J1ZCBjbGFzcy5cclxuICAgKi9cclxuICBjcmVhdGVEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaWRzKSB7XHJcbiAgICAgIGZvciAobGV0IGlkIG9mIHRoaXMuaWRzKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhW2lkLmtleV0gPSBpZC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGZpZWxkQXJyYXkgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRBcnJheSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtmaWVsZC5tZXRhZGF0YS5maWVsZF0gPSBmaWVsZC5kYXRhO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiBkYXRhIGV4aXN0cywgc2V0IGl0IGFuZCByZWZyZXNoIHRoZSBib3VuZCBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKi9cclxuICBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJDcnVkQ29tcG9uZW50LnNldERhdGE6IFwiICsgdGhpcy5jbGFzc05hbWUpO1xyXG4gICAgICBjb25zb2xlLmRlYnVnKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhID0ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQdXNoZXMgdGhlIGRhdGEgdG8gdGhlIGZpZWxkcyBmb3IgYmluZGluZyB0byB0aGUgZm9ybSBpbnB1dHMuXHJcbiAgICovXHJcbiAgcmVmcmVzaERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGZvciAobGV0IGZpZWxkQXJyYXkgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZEFycmF5KSB7XHJcbiAgICAgICAgICBmaWVsZC5kYXRhID0gdGhpcy5kYXRhW2ZpZWxkLm1ldGFkYXRhLmZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhIHNhdmUgcmVxdWVzdCBhbmQgcmVmcmVzaGVzIHRoZSBkYXRhIHVwb24gYSBzdWNjZXNzZnVsIGNhbGwuXHJcbiAgICovXHJcbiAgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLndhcm5pbmcgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5nZXRTYXZlUmVxdWVzdCgpXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICB0aGlzLmJ1c3kgPSBmYWxzZTtcclxuICAgICAgfSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IE9iamVjdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YShkYXRhKTtcclxuICAgICAgICB0aGlzLmZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLndhcm5pbmcgPSBlcnJvcjtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiQ3J1ZENvbXBvbmVudC5zYXZlOiBcIiArIHRoaXMuY2xhc3NOYW1lICsgXCI6IFwiICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhbiBvYnNlcnZhYmxlIGZyb20gdGhlIGNydWQgcG9zdCBvciBwdXQuICBUaGlzIGlzIHVzZWQgc3VjaCB0aGF0IHRoZSBjcnVkIGNvbnRhaW5lciBjYW4gbWFuYWdlIHRoZSByZXF1ZXN0XHJcbiAgICogZm9yIHRoaXMgY29tcG9uZW50LlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T2JqZWN0Pn1cclxuICAgKi9cclxuICBnZXRTYXZlUmVxdWVzdCgpOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgdGhpcy5jcmVhdGVEYXRhKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVt0aGlzLmlkXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcnVkU2VydmljZS5wdXQodGhpcy5jbGFzc05hbWUsIHRoaXMuZGF0YVt0aGlzLmlkXSwgdGhpcy5kYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNydWRTZXJ2aWNlLnBvc3QodGhpcy5jbGFzc05hbWUsIHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -450,13 +450,13 @@ class CrudComponent {
|
|
|
450
450
|
</div>
|
|
451
451
|
<button *ngIf="saveable && !crudForm.form.dirty"
|
|
452
452
|
(click)="save()"
|
|
453
|
-
class="btn btn-icon
|
|
453
|
+
class="btn btn-icon ms-1"
|
|
454
454
|
[disabled]="true">
|
|
455
455
|
<i class="far fa-circle fa-lg"></i>
|
|
456
456
|
</button>
|
|
457
457
|
<button *ngIf="saveable && crudForm.form.dirty && crudForm.form.valid && !warning"
|
|
458
458
|
(click)="save()"
|
|
459
|
-
class="btn btn-icon btn-green
|
|
459
|
+
class="btn btn-icon btn-green ms-1">
|
|
460
460
|
<span *ngIf="!busy">
|
|
461
461
|
<i class="fas fa-check fa-lg"></i>
|
|
462
462
|
</span>
|
|
@@ -469,12 +469,12 @@ class CrudComponent {
|
|
|
469
469
|
triggers="mouseenter:mouseleave"
|
|
470
470
|
popoverClass="warn"
|
|
471
471
|
(click)="save()"
|
|
472
|
-
class="btn btn-icon btn-red
|
|
472
|
+
class="btn btn-icon btn-red ms-1">
|
|
473
473
|
<i class="fas fa-exclamation-circle fa-lg"></i>
|
|
474
474
|
</button>
|
|
475
475
|
<button *ngIf="saveable && crudForm.form.dirty && !crudForm.form.valid && !warning"
|
|
476
476
|
[disabled]="true">
|
|
477
|
-
class="btn btn-icon btn-red
|
|
477
|
+
class="btn btn-icon btn-red ms-1">
|
|
478
478
|
<i class="fas fa-times fa-lg"></i>
|
|
479
479
|
</button>
|
|
480
480
|
</form>
|
|
@@ -531,13 +531,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
531
531
|
</div>
|
|
532
532
|
<button *ngIf="saveable && !crudForm.form.dirty"
|
|
533
533
|
(click)="save()"
|
|
534
|
-
class="btn btn-icon
|
|
534
|
+
class="btn btn-icon ms-1"
|
|
535
535
|
[disabled]="true">
|
|
536
536
|
<i class="far fa-circle fa-lg"></i>
|
|
537
537
|
</button>
|
|
538
538
|
<button *ngIf="saveable && crudForm.form.dirty && crudForm.form.valid && !warning"
|
|
539
539
|
(click)="save()"
|
|
540
|
-
class="btn btn-icon btn-green
|
|
540
|
+
class="btn btn-icon btn-green ms-1">
|
|
541
541
|
<span *ngIf="!busy">
|
|
542
542
|
<i class="fas fa-check fa-lg"></i>
|
|
543
543
|
</span>
|
|
@@ -550,12 +550,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
550
550
|
triggers="mouseenter:mouseleave"
|
|
551
551
|
popoverClass="warn"
|
|
552
552
|
(click)="save()"
|
|
553
|
-
class="btn btn-icon btn-red
|
|
553
|
+
class="btn btn-icon btn-red ms-1">
|
|
554
554
|
<i class="fas fa-exclamation-circle fa-lg"></i>
|
|
555
555
|
</button>
|
|
556
556
|
<button *ngIf="saveable && crudForm.form.dirty && !crudForm.form.valid && !warning"
|
|
557
557
|
[disabled]="true">
|
|
558
|
-
class="btn btn-icon btn-red
|
|
558
|
+
class="btn btn-icon btn-red ms-1">
|
|
559
559
|
<i class="fas fa-times fa-lg"></i>
|
|
560
560
|
</button>
|
|
561
561
|
</form>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huntsman-cancer-institute-crud.mjs","sources":["../../../projects/crud/src/services/crud.service.ts","../../../projects/crud/src/components/crud.component.ts","../../../projects/crud/src/pipes/field-viewable.pipe.ts","../../../projects/crud/src/components/crud-container.component.ts","../../../projects/crud/src/crud.module.ts","../../../projects/crud/src/huntsman-cancer-institute-crud.ts"],"sourcesContent":["import {Inject, Injectable, InjectionToken} from \"@angular/core\";\r\nimport {HttpClient, HttpParams, HttpResponse} from \"@angular/common/http\";\r\n\r\nimport {BehaviorSubject, Observable, of} from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {HciDataDto, HciGridDto, HciPostWrapperDto} from \"@huntsman-cancer-institute/hci-ng-grid-dto\";\r\n\r\nexport let CRUD_ENDPOINT = new InjectionToken<string>(\"crudEndpoint\");\r\n\r\n/**\r\n * This service manages communication with the crud api.\r\n * The typical api endpoint would be \"/app-name/api/crud\".\r\n *\r\n * TODO: A call that would return the response as well as the data.\r\n */\r\n@Injectable()\r\nexport class CrudService {\r\n\r\n metadataMap: Map<string, Object> = new Map<string, Object>();\r\n\r\n constructor(private http: HttpClient, @Inject(CRUD_ENDPOINT) private crudEndpoint: string) {}\r\n\r\n public getMetadata(className: string): Observable<Object> {\r\n if (this.metadataMap.get(className)) {\r\n return of(this.metadataMap.get(className));\r\n }\r\n\r\n let o: Observable<Object> = this.http.get<Object>(this.crudEndpoint + className + \"/metadata\");\r\n o.subscribe((metadata: any) => {\r\n this.metadataMap.set(className, metadata);\r\n });\r\n return o;\r\n }\r\n\r\n /**\r\n * Makes the http request and returns an observable for it.\r\n *\r\n * @param {string} className\r\n * @param {HciPostWrapperDto} dto\r\n * @param {string} query\r\n * @returns {Observable<HciDataDto>}\r\n */\r\n public getAll(className: string, dto: HciPostWrapperDto = undefined, query: string = undefined): Observable<HciDataDto> {\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n return this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params});\r\n } else {\r\n return this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params});\r\n }\r\n }\r\n\r\n /**\r\n * Return a loading subject and require a callback to deal with setting data when the response comes back.\r\n *\r\n * @param {string} className The name of the entity or DTO.\r\n * @param {HciPostWrapperDto} dto Default to undefined.\r\n * @param {string} query Default to undefined.\r\n * @param {(data: HciDataDto) => any} onResponse Only required function.\r\n * @param {(error) => any} onError Optional\r\n * @param {() => any} onFinalize Optional\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getAllLoading(className: string,\r\n dto: HciPostWrapperDto = undefined,\r\n query: string = undefined,\r\n onResponse: (data: HciDataDto) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n } else {\r\n this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n }\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Get a single instance of an entity based on the id.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public get(className: string, id: number): Observable<Object> {\r\n return this.http.get<Object>(this.crudEndpoint + className + \"/\" + id);\r\n }\r\n\r\n /**\r\n * Return the loading subject for the request. Callback required to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getLoading(className: string,\r\n id: number,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.get<Object>(this.crudEndpoint + className + \"/\" + id).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Post a new entity. One without an id. Return that entity.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public post(className: string, data: any): Observable<Object> {\r\n return this.http.post<Object>(this.crudEndpoint + className, data);\r\n }\r\n\r\n /**\r\n * Return a loading subject. Post a new entity without an id. Use the callback to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public postLoading(className: string,\r\n data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.post<Object>(this.crudEndpoint + className, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Put an existing entity with an id. Return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public put(className: string, id: number, data: any): Observable<Object> {\r\n return this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data);\r\n }\r\n\r\n /**\r\n * Return the loading subject. Put an existing entity with an id. In the callback return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public putLoading(className: string,\r\n id: number, data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Delete the entity by its id, return the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public delete(className: string, id: number): Observable<HttpResponse<any>> {\r\n return this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" });\r\n }\r\n\r\n /**\r\n * Return the loading subject. Delete the entity by id, use the callback to get the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public deleteLoading(className: string,\r\n id: number,\r\n onResponse: (response: HttpResponse<any>) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" }).subscribe((response: HttpResponse<any>) => {\r\n loading.next(false);\r\n onResponse(response);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component, HostBinding, Input, isDevMode,\r\n ViewChild, OnDestroy\r\n} from \"@angular/core\";\r\nimport {NgForm} from \"@angular/forms\";\r\n\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. This component could be independent so it has its own form and can interact with the crud api on its own.\r\n *\r\n * \"id\": false,\r\n * \"field\": \"idNameType\",\r\n * \"type\": \"Long\",\r\n * \"notNull\": true,\r\n * \"min\": null,\r\n * \"max\": null,\r\n * \"dictionaryClassName\": \"hci.ri.core.subject.model.NameType\",\r\n * \"phi\": false\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud\",\r\n template: `\r\n <form #crudForm=\"ngForm\"\r\n class=\"d-flex flex-nowrap flex-row flex-grow-1\">\r\n <div class=\"d-flex flex-nowrap flex-column flex-grow-1\">\r\n <hci-busy [busy]=\"[busy]\" [showIcon]=\"false\"></hci-busy>\r\n <ng-container *ngFor=\"let fieldArray of fields\">\r\n <div class=\"d-flex flex-nowrap mb-1\">\r\n <ng-container *ngFor=\"let field of fieldArray\">\r\n <input *ngIf=\"field.metadata.type === 'String'\"\r\n [(ngModel)]=\"field.data\"\r\n type=\"text\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <input *ngIf=\"!field.metadata.dictionaryClassName && (field.metadata.type === 'Integer' || field.metadata.type === 'Long')\"\r\n [(ngModel)]=\"field.data\"\r\n type=\"number\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <hci-native-select *ngIf=\"field.metadata.dictionaryClassName\"\r\n [(ngModel)]=\"field.data\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [url]=\"field.metadata.dictionaryClassName\"\r\n [required]=\"field.metadata.required\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\">\r\n </hci-native-select>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <button *ngIf=\"saveable && !crudForm.form.dirty\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon ml-1\"\r\n [disabled]=\"true\">\r\n <i class=\"far fa-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && crudForm.form.valid && !warning\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-green ml-1\">\r\n <span *ngIf=\"!busy\">\r\n <i class=\"fas fa-check fa-lg\"></i>\r\n </span>\r\n <span *ngIf=\"busy\">\r\n <i class=\"fas fa-spinner fa-lg fa-spin\"></i>\r\n </span>\r\n </button>\r\n <button *ngIf=\"saveable && warning\"\r\n [ngbPopover]=\"warning\"\r\n triggers=\"mouseenter:mouseleave\"\r\n popoverClass=\"warn\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-red ml-1\">\r\n <i class=\"fas fa-exclamation-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && !crudForm.form.valid && !warning\"\r\n [disabled]=\"true\">\r\n class=\"btn btn-icon btn-red ml-1\">\r\n <i class=\"fas fa-times fa-lg\"></i>\r\n </button>\r\n </form>\r\n `,\r\n styles: [`\r\n \r\n .crud-input {\r\n width: 100%;\r\n }\r\n \r\n .crud-input:first-child {\r\n border-top-left-radius: 0.25rem;\r\n border-bottom-left-radius: 0.25rem;\r\n }\r\n\r\n .crud-input:last-child {\r\n border-top-right-radius: 0.25rem;\r\n border-bottom-right-radius: 0.25rem;\r\n }\r\n\r\n .ng-invalid {\r\n background-color: rgba(255, 100, 100, 0.25);\r\n }\r\n \r\n .phi {\r\n box-shadow: #cc7700 1px 1px 1px inset;\r\n border-color: orange;\r\n }\r\n \r\n ::ng-deep .hci-dropdown {\r\n min-width: 20%;\r\n }\r\n \r\n `]\r\n})\r\nexport class CrudComponent implements AfterViewInit, OnDestroy {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-nowrap\";\r\n\r\n @Input() saveable: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() className: string;\r\n @Input(\"fields\") displayFields: string[] = [];\r\n @Input() ids: any[];\r\n @Input() data: any = {};\r\n @Input() styles: any[];\r\n\r\n @ViewChild(\"crudForm\", {static: true}) form: NgForm;\r\n\r\n id: string;\r\n metadata: any = {};\r\n fields: any[];\r\n busy: boolean = false;\r\n warning: string;\r\n\r\n metadataSubscription: Subscription;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.metadataSubscription = this.crudService.getMetadata(this.className).subscribe((metadata: any) => {\r\n this.fields = [];\r\n\r\n for (let displayFieldArray of this.displayFields) {\r\n let fieldArray: any[] = [];\r\n\r\n for (let displayField of displayFieldArray) {\r\n for (let metadataField of metadata.fields) {\r\n if (displayField === metadataField.field) {\r\n let field: any = {\r\n data: undefined,\r\n metadata: metadataField,\r\n styles: undefined\r\n };\r\n\r\n if (this.styles) {\r\n for (let fieldStyle of this.styles) {\r\n if (displayField === fieldStyle.field) {\r\n field.styles = fieldStyle.styles;\r\n }\r\n }\r\n }\r\n\r\n fieldArray.push(field);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.fields.push(fieldArray);\r\n }\r\n\r\n for (let metadataField of metadata.fields) {\r\n if (metadataField.id) {\r\n this.id = metadataField.field;\r\n break;\r\n }\r\n }\r\n\r\n this.metadata = metadata;\r\n\r\n this.refreshData();\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.metadataSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Push the data from the bound inputs to the data representing this crud class.\r\n */\r\n createData(): void {\r\n if (!this.data) {\r\n this.data = {};\r\n }\r\n\r\n if (this.ids) {\r\n for (let id of this.ids) {\r\n this.data[id.key] = id.value;\r\n }\r\n }\r\n\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n this.data[field.metadata.field] = field.data;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * If data exists, set it and refresh the bound data.\r\n *\r\n * @param data\r\n */\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudComponent.setData: \" + this.className);\r\n console.debug(data);\r\n }\r\n\r\n if (data !== undefined) {\r\n this.data = data;\r\n this.refreshData();\r\n } else {\r\n this.data = {};\r\n }\r\n }\r\n\r\n /**\r\n * Pushes the data to the fields for binding to the form inputs.\r\n */\r\n refreshData(): void {\r\n if (this.data && this.fields) {\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n field.data = this.data[field.metadata.field];\r\n }\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a save request and refreshes the data upon a successful call.\r\n */\r\n save(): void {\r\n this.busy = true;\r\n this.warning = undefined;\r\n\r\n this.getSaveRequest()\r\n .pipe(finalize(() => {\r\n this.busy = false;\r\n }))\r\n .subscribe((data: Object) => {\r\n this.setData(data);\r\n this.form.form.markAsPristine();\r\n },\r\n (error) => {\r\n this.warning = error;\r\n console.error(\"CrudComponent.save: \" + this.className + \": \" + error);\r\n });\r\n }\r\n\r\n /**\r\n * Return an observable from the crud post or put. This is used such that the crud container can manage the request\r\n * for this component.\r\n *\r\n * @returns {Observable<Object>}\r\n */\r\n getSaveRequest(): Observable<Object> {\r\n this.createData();\r\n\r\n if (this.data[this.id]) {\r\n return this.crudService.put(this.className, this.data[this.id], this.data);\r\n } else {\r\n return this.crudService.post(this.className, this.data);\r\n }\r\n }\r\n}\r\n","import {Pipe} from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"fieldViewable\",\r\n pure: true\r\n})\r\nexport class FieldViewablePipe {\r\n\r\n transform(list: any[]): any {\r\n return list.filter((item: any) => {\r\n return item.viewable;\r\n });\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, HostBinding, Input, isDevMode, QueryList, ViewChildren} from \"@angular/core\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\nimport {CrudComponent} from \"./crud.component\";\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {forkJoin} from \"rxjs/Observable/forkJoin\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. It ties together multiple crud components. For example, Subject or StudySubject may have names, phone\r\n * numbers, or addresses associated with it. Each one corresponding to its own CRUD rest endpoint.\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud-container\",\r\n template: `\r\n <ng-container *ngFor=\"let crudGroup of crudGroups\" class=\"crud-group\">\r\n <div *ngIf=\"crudGroup.mode === 'singular'\"\r\n class=\"d-flex crud-group p-2\">\r\n <h4 style=\"flex: 0 0 15%;\">{{crudGroup.display}}</h4>\r\n <hci-crud [className]=\"crudGroup.className\"\r\n [fields]=\"crudGroup.displayFields\"\r\n [styles]=\"crudGroup.styles\"\r\n [ids]=\"ids\"\r\n [data]=\"crudGroup.data\"\r\n [saveable]=\"saveable\"\r\n style=\"flex: 1 1 85%;\"></hci-crud>\r\n </div>\r\n </ng-container>\r\n `,\r\n styles: [`\r\n \r\n .crud-group {\r\n background-color: #cfecfc;\r\n margin-bottom: 1rem;\r\n border-radius: 0.5rem;\r\n border: #3d7a99 1px solid;\r\n }\r\n \r\n `]\r\n})\r\nexport class CrudContainerComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-column\";\r\n\r\n @Input() data: any;\r\n @Input() saveable: boolean = true;\r\n @Input() crudGroups: any[];\r\n @Input() ids: any[];\r\n\r\n @ViewChildren(CrudComponent) crudComponents: QueryList<CrudComponent>;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudContainerComponent.setData\");\r\n console.debug(data);\r\n }\r\n\r\n this.data = data;\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n for (let crudGroup of this.crudGroups) {\r\n if (crudGroup.className === crud.className && crudGroup.dataField) {\r\n crud.setData(this.data[crudGroup.dataField]);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n save(): void {\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n crud.save();\r\n });\r\n }\r\n\r\n saveJoin(): Observable<any> {\r\n let requests: Observable<any>[] = [];\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n requests.push(crud.getSaveRequest());\r\n });\r\n\r\n return forkJoin(requests);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\n\r\nimport {CRUD_ENDPOINT, CrudService} from \"./services/crud.service\";\r\nimport {CrudComponent} from \"./components/crud.component\";\r\nimport {FieldViewablePipe} from \"./pipes/field-viewable.pipe\";\r\nimport {CrudContainerComponent} from \"./components/crud-container.component\";\r\n\r\n/**\r\n * The module providing the crud service.\r\n *\r\n * @since 9.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n SelectModule,\r\n MiscModule\r\n ],\r\n declarations: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ],\r\n exports: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ]\r\n})\r\nexport class CrudModule {\r\n static forRoot(config: any): ModuleWithProviders<CrudModule> {\r\n return {\r\n providers: [\r\n {provide: CRUD_ENDPOINT, useValue: config.crudEndpoint},\r\n CrudService\r\n ],\r\n ngModule: CrudModule\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CrudService","i3.CrudComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"huntsman-cancer-institute-crud.mjs","sources":["../../../projects/crud/src/services/crud.service.ts","../../../projects/crud/src/components/crud.component.ts","../../../projects/crud/src/pipes/field-viewable.pipe.ts","../../../projects/crud/src/components/crud-container.component.ts","../../../projects/crud/src/crud.module.ts","../../../projects/crud/src/huntsman-cancer-institute-crud.ts"],"sourcesContent":["import {Inject, Injectable, InjectionToken} from \"@angular/core\";\r\nimport {HttpClient, HttpParams, HttpResponse} from \"@angular/common/http\";\r\n\r\nimport {BehaviorSubject, Observable, of} from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {HciDataDto, HciGridDto, HciPostWrapperDto} from \"@huntsman-cancer-institute/hci-ng-grid-dto\";\r\n\r\nexport let CRUD_ENDPOINT = new InjectionToken<string>(\"crudEndpoint\");\r\n\r\n/**\r\n * This service manages communication with the crud api.\r\n * The typical api endpoint would be \"/app-name/api/crud\".\r\n *\r\n * TODO: A call that would return the response as well as the data.\r\n */\r\n@Injectable()\r\nexport class CrudService {\r\n\r\n metadataMap: Map<string, Object> = new Map<string, Object>();\r\n\r\n constructor(private http: HttpClient, @Inject(CRUD_ENDPOINT) private crudEndpoint: string) {}\r\n\r\n public getMetadata(className: string): Observable<Object> {\r\n if (this.metadataMap.get(className)) {\r\n return of(this.metadataMap.get(className));\r\n }\r\n\r\n let o: Observable<Object> = this.http.get<Object>(this.crudEndpoint + className + \"/metadata\");\r\n o.subscribe((metadata: any) => {\r\n this.metadataMap.set(className, metadata);\r\n });\r\n return o;\r\n }\r\n\r\n /**\r\n * Makes the http request and returns an observable for it.\r\n *\r\n * @param {string} className\r\n * @param {HciPostWrapperDto} dto\r\n * @param {string} query\r\n * @returns {Observable<HciDataDto>}\r\n */\r\n public getAll(className: string, dto: HciPostWrapperDto = undefined, query: string = undefined): Observable<HciDataDto> {\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n return this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params});\r\n } else {\r\n return this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params});\r\n }\r\n }\r\n\r\n /**\r\n * Return a loading subject and require a callback to deal with setting data when the response comes back.\r\n *\r\n * @param {string} className The name of the entity or DTO.\r\n * @param {HciPostWrapperDto} dto Default to undefined.\r\n * @param {string} query Default to undefined.\r\n * @param {(data: HciDataDto) => any} onResponse Only required function.\r\n * @param {(error) => any} onError Optional\r\n * @param {() => any} onFinalize Optional\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getAllLoading(className: string,\r\n dto: HciPostWrapperDto = undefined,\r\n query: string = undefined,\r\n onResponse: (data: HciDataDto) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n } else {\r\n this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n }\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Get a single instance of an entity based on the id.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public get(className: string, id: number): Observable<Object> {\r\n return this.http.get<Object>(this.crudEndpoint + className + \"/\" + id);\r\n }\r\n\r\n /**\r\n * Return the loading subject for the request. Callback required to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getLoading(className: string,\r\n id: number,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.get<Object>(this.crudEndpoint + className + \"/\" + id).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Post a new entity. One without an id. Return that entity.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public post(className: string, data: any): Observable<Object> {\r\n return this.http.post<Object>(this.crudEndpoint + className, data);\r\n }\r\n\r\n /**\r\n * Return a loading subject. Post a new entity without an id. Use the callback to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public postLoading(className: string,\r\n data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.post<Object>(this.crudEndpoint + className, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Put an existing entity with an id. Return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public put(className: string, id: number, data: any): Observable<Object> {\r\n return this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data);\r\n }\r\n\r\n /**\r\n * Return the loading subject. Put an existing entity with an id. In the callback return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public putLoading(className: string,\r\n id: number, data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Delete the entity by its id, return the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public delete(className: string, id: number): Observable<HttpResponse<any>> {\r\n return this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" });\r\n }\r\n\r\n /**\r\n * Return the loading subject. Delete the entity by id, use the callback to get the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public deleteLoading(className: string,\r\n id: number,\r\n onResponse: (response: HttpResponse<any>) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" }).subscribe((response: HttpResponse<any>) => {\r\n loading.next(false);\r\n onResponse(response);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component, HostBinding, Input, isDevMode,\r\n ViewChild, OnDestroy\r\n} from \"@angular/core\";\r\nimport {NgForm} from \"@angular/forms\";\r\n\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. This component could be independent so it has its own form and can interact with the crud api on its own.\r\n *\r\n * \"id\": false,\r\n * \"field\": \"idNameType\",\r\n * \"type\": \"Long\",\r\n * \"notNull\": true,\r\n * \"min\": null,\r\n * \"max\": null,\r\n * \"dictionaryClassName\": \"hci.ri.core.subject.model.NameType\",\r\n * \"phi\": false\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud\",\r\n template: `\r\n <form #crudForm=\"ngForm\"\r\n class=\"d-flex flex-nowrap flex-row flex-grow-1\">\r\n <div class=\"d-flex flex-nowrap flex-column flex-grow-1\">\r\n <hci-busy [busy]=\"[busy]\" [showIcon]=\"false\"></hci-busy>\r\n <ng-container *ngFor=\"let fieldArray of fields\">\r\n <div class=\"d-flex flex-nowrap mb-1\">\r\n <ng-container *ngFor=\"let field of fieldArray\">\r\n <input *ngIf=\"field.metadata.type === 'String'\"\r\n [(ngModel)]=\"field.data\"\r\n type=\"text\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <input *ngIf=\"!field.metadata.dictionaryClassName && (field.metadata.type === 'Integer' || field.metadata.type === 'Long')\"\r\n [(ngModel)]=\"field.data\"\r\n type=\"number\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <hci-native-select *ngIf=\"field.metadata.dictionaryClassName\"\r\n [(ngModel)]=\"field.data\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [url]=\"field.metadata.dictionaryClassName\"\r\n [required]=\"field.metadata.required\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\">\r\n </hci-native-select>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <button *ngIf=\"saveable && !crudForm.form.dirty\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon ms-1\"\r\n [disabled]=\"true\">\r\n <i class=\"far fa-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && crudForm.form.valid && !warning\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-green ms-1\">\r\n <span *ngIf=\"!busy\">\r\n <i class=\"fas fa-check fa-lg\"></i>\r\n </span>\r\n <span *ngIf=\"busy\">\r\n <i class=\"fas fa-spinner fa-lg fa-spin\"></i>\r\n </span>\r\n </button>\r\n <button *ngIf=\"saveable && warning\"\r\n [ngbPopover]=\"warning\"\r\n triggers=\"mouseenter:mouseleave\"\r\n popoverClass=\"warn\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-red ms-1\">\r\n <i class=\"fas fa-exclamation-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && !crudForm.form.valid && !warning\"\r\n [disabled]=\"true\">\r\n class=\"btn btn-icon btn-red ms-1\">\r\n <i class=\"fas fa-times fa-lg\"></i>\r\n </button>\r\n </form>\r\n `,\r\n styles: [`\r\n \r\n .crud-input {\r\n width: 100%;\r\n }\r\n \r\n .crud-input:first-child {\r\n border-top-left-radius: 0.25rem;\r\n border-bottom-left-radius: 0.25rem;\r\n }\r\n\r\n .crud-input:last-child {\r\n border-top-right-radius: 0.25rem;\r\n border-bottom-right-radius: 0.25rem;\r\n }\r\n\r\n .ng-invalid {\r\n background-color: rgba(255, 100, 100, 0.25);\r\n }\r\n \r\n .phi {\r\n box-shadow: #cc7700 1px 1px 1px inset;\r\n border-color: orange;\r\n }\r\n \r\n ::ng-deep .hci-dropdown {\r\n min-width: 20%;\r\n }\r\n \r\n `]\r\n})\r\nexport class CrudComponent implements AfterViewInit, OnDestroy {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-nowrap\";\r\n\r\n @Input() saveable: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() className: string;\r\n @Input(\"fields\") displayFields: string[] = [];\r\n @Input() ids: any[];\r\n @Input() data: any = {};\r\n @Input() styles: any[];\r\n\r\n @ViewChild(\"crudForm\", {static: true}) form: NgForm;\r\n\r\n id: string;\r\n metadata: any = {};\r\n fields: any[];\r\n busy: boolean = false;\r\n warning: string;\r\n\r\n metadataSubscription: Subscription;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.metadataSubscription = this.crudService.getMetadata(this.className).subscribe((metadata: any) => {\r\n this.fields = [];\r\n\r\n for (let displayFieldArray of this.displayFields) {\r\n let fieldArray: any[] = [];\r\n\r\n for (let displayField of displayFieldArray) {\r\n for (let metadataField of metadata.fields) {\r\n if (displayField === metadataField.field) {\r\n let field: any = {\r\n data: undefined,\r\n metadata: metadataField,\r\n styles: undefined\r\n };\r\n\r\n if (this.styles) {\r\n for (let fieldStyle of this.styles) {\r\n if (displayField === fieldStyle.field) {\r\n field.styles = fieldStyle.styles;\r\n }\r\n }\r\n }\r\n\r\n fieldArray.push(field);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.fields.push(fieldArray);\r\n }\r\n\r\n for (let metadataField of metadata.fields) {\r\n if (metadataField.id) {\r\n this.id = metadataField.field;\r\n break;\r\n }\r\n }\r\n\r\n this.metadata = metadata;\r\n\r\n this.refreshData();\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.metadataSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Push the data from the bound inputs to the data representing this crud class.\r\n */\r\n createData(): void {\r\n if (!this.data) {\r\n this.data = {};\r\n }\r\n\r\n if (this.ids) {\r\n for (let id of this.ids) {\r\n this.data[id.key] = id.value;\r\n }\r\n }\r\n\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n this.data[field.metadata.field] = field.data;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * If data exists, set it and refresh the bound data.\r\n *\r\n * @param data\r\n */\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudComponent.setData: \" + this.className);\r\n console.debug(data);\r\n }\r\n\r\n if (data !== undefined) {\r\n this.data = data;\r\n this.refreshData();\r\n } else {\r\n this.data = {};\r\n }\r\n }\r\n\r\n /**\r\n * Pushes the data to the fields for binding to the form inputs.\r\n */\r\n refreshData(): void {\r\n if (this.data && this.fields) {\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n field.data = this.data[field.metadata.field];\r\n }\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a save request and refreshes the data upon a successful call.\r\n */\r\n save(): void {\r\n this.busy = true;\r\n this.warning = undefined;\r\n\r\n this.getSaveRequest()\r\n .pipe(finalize(() => {\r\n this.busy = false;\r\n }))\r\n .subscribe((data: Object) => {\r\n this.setData(data);\r\n this.form.form.markAsPristine();\r\n },\r\n (error) => {\r\n this.warning = error;\r\n console.error(\"CrudComponent.save: \" + this.className + \": \" + error);\r\n });\r\n }\r\n\r\n /**\r\n * Return an observable from the crud post or put. This is used such that the crud container can manage the request\r\n * for this component.\r\n *\r\n * @returns {Observable<Object>}\r\n */\r\n getSaveRequest(): Observable<Object> {\r\n this.createData();\r\n\r\n if (this.data[this.id]) {\r\n return this.crudService.put(this.className, this.data[this.id], this.data);\r\n } else {\r\n return this.crudService.post(this.className, this.data);\r\n }\r\n }\r\n}\r\n","import {Pipe} from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"fieldViewable\",\r\n pure: true\r\n})\r\nexport class FieldViewablePipe {\r\n\r\n transform(list: any[]): any {\r\n return list.filter((item: any) => {\r\n return item.viewable;\r\n });\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, HostBinding, Input, isDevMode, QueryList, ViewChildren} from \"@angular/core\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\nimport {CrudComponent} from \"./crud.component\";\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {forkJoin} from \"rxjs/Observable/forkJoin\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. It ties together multiple crud components. For example, Subject or StudySubject may have names, phone\r\n * numbers, or addresses associated with it. Each one corresponding to its own CRUD rest endpoint.\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud-container\",\r\n template: `\r\n <ng-container *ngFor=\"let crudGroup of crudGroups\" class=\"crud-group\">\r\n <div *ngIf=\"crudGroup.mode === 'singular'\"\r\n class=\"d-flex crud-group p-2\">\r\n <h4 style=\"flex: 0 0 15%;\">{{crudGroup.display}}</h4>\r\n <hci-crud [className]=\"crudGroup.className\"\r\n [fields]=\"crudGroup.displayFields\"\r\n [styles]=\"crudGroup.styles\"\r\n [ids]=\"ids\"\r\n [data]=\"crudGroup.data\"\r\n [saveable]=\"saveable\"\r\n style=\"flex: 1 1 85%;\"></hci-crud>\r\n </div>\r\n </ng-container>\r\n `,\r\n styles: [`\r\n \r\n .crud-group {\r\n background-color: #cfecfc;\r\n margin-bottom: 1rem;\r\n border-radius: 0.5rem;\r\n border: #3d7a99 1px solid;\r\n }\r\n \r\n `]\r\n})\r\nexport class CrudContainerComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-column\";\r\n\r\n @Input() data: any;\r\n @Input() saveable: boolean = true;\r\n @Input() crudGroups: any[];\r\n @Input() ids: any[];\r\n\r\n @ViewChildren(CrudComponent) crudComponents: QueryList<CrudComponent>;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudContainerComponent.setData\");\r\n console.debug(data);\r\n }\r\n\r\n this.data = data;\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n for (let crudGroup of this.crudGroups) {\r\n if (crudGroup.className === crud.className && crudGroup.dataField) {\r\n crud.setData(this.data[crudGroup.dataField]);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n save(): void {\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n crud.save();\r\n });\r\n }\r\n\r\n saveJoin(): Observable<any> {\r\n let requests: Observable<any>[] = [];\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n requests.push(crud.getSaveRequest());\r\n });\r\n\r\n return forkJoin(requests);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\n\r\nimport {CRUD_ENDPOINT, CrudService} from \"./services/crud.service\";\r\nimport {CrudComponent} from \"./components/crud.component\";\r\nimport {FieldViewablePipe} from \"./pipes/field-viewable.pipe\";\r\nimport {CrudContainerComponent} from \"./components/crud-container.component\";\r\n\r\n/**\r\n * The module providing the crud service.\r\n *\r\n * @since 9.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n SelectModule,\r\n MiscModule\r\n ],\r\n declarations: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ],\r\n exports: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ]\r\n})\r\nexport class CrudModule {\r\n static forRoot(config: any): ModuleWithProviders<CrudModule> {\r\n return {\r\n providers: [\r\n {provide: CRUD_ENDPOINT, useValue: config.crudEndpoint},\r\n CrudService\r\n ],\r\n ngModule: CrudModule\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CrudService","i3.CrudComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huntsman-cancer-institute/crud",
|
|
3
|
-
"version": "17.0.
|
|
3
|
+
"version": "17.0.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git@gitlab.com:huntsman-cancer-institute/risr/ng/hci-ng-lib.git"
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"@angular/core": "^17.x"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@huntsman-cancer-institute/dictionary-service": "17.0.
|
|
18
|
-
"@huntsman-cancer-institute/input": "17.0.
|
|
19
|
-
"@huntsman-cancer-institute/hci-ng-grid-dto": "17.0.
|
|
20
|
-
"@huntsman-cancer-institute/misc": "17.0.
|
|
17
|
+
"@huntsman-cancer-institute/dictionary-service": "17.0.6",
|
|
18
|
+
"@huntsman-cancer-institute/input": "17.0.6",
|
|
19
|
+
"@huntsman-cancer-institute/hci-ng-grid-dto": "17.0.6",
|
|
20
|
+
"@huntsman-cancer-institute/misc": "17.0.6",
|
|
21
21
|
"tslib": "^2.3.0"
|
|
22
22
|
},
|
|
23
23
|
"module": "fesm2022/huntsman-cancer-institute-crud.mjs",
|