@dflat-core/web 1.7.2082 → 1.7.2083

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.
@@ -4127,6 +4127,14 @@ var ConfirmOptions;
4127
4127
  })(ConfirmOptions || (ConfirmOptions = {}));
4128
4128
  var LogService = class LogService {
4129
4129
  constructor() {}
4130
+ toLocalDateTime(value) {
4131
+ const match = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.(\d{3})$/.exec((value ?? "").trim());
4132
+ if (!match) return value;
4133
+ const [, y, mo, d, h, mi, s, ms] = match.map(Number);
4134
+ const date = new Date(Date.UTC(y, mo - 1, d, h, mi, s, ms));
4135
+ const pad = (n, size = 2) => n.toString().padStart(size, "0");
4136
+ return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${pad(date.getMilliseconds(), 3)}`;
4137
+ }
4130
4138
  splitData(item, logs, logComponent = null) {
4131
4139
  let logSplit = [
4132
4140
  " ",
@@ -4139,7 +4147,7 @@ var LogService = class LogService {
4139
4147
  class: ""
4140
4148
  };
4141
4149
  if (item.indexOf(" INFO ") > -1 || item.indexOf(" DATA ") > -1 || item.indexOf(" ERROR ") > -1 || item.indexOf(" WARNING ") > -1) {
4142
- logSplit[0] = item.split(" ")[0];
4150
+ logSplit[0] = this.toLocalDateTime(item.split(" ")[0]);
4143
4151
  logSplit[1] = item.split(" ")[1];
4144
4152
  logSplit[2] = item.split(" ")[2];
4145
4153
  if (item.indexOf("[") > -1) logSplit[3] = item.split(" ")[3];
@@ -9336,6 +9344,7 @@ i0.ɵɵngDeclareClassMetadata({
9336
9344
  var LogsComponent = class LogsComponent {
9337
9345
  constructor(app) {
9338
9346
  this.app = app;
9347
+ this.renderedScrollHeight = 0;
9339
9348
  this.onDownloadLogs = new EventEmitter();
9340
9349
  this.onDisplayLogs = new EventEmitter();
9341
9350
  this.hasLogs = false;
@@ -9361,6 +9370,12 @@ var LogsComponent = class LogsComponent {
9361
9370
  clearLogs() {
9362
9371
  this.logs.splice(0, this.logs.length);
9363
9372
  }
9373
+ ngAfterViewChecked() {
9374
+ const scrollHeight = this.logContainer?.nativeElement?.scrollHeight ?? 0;
9375
+ if (scrollHeight === this.renderedScrollHeight) return;
9376
+ this.renderedScrollHeight = scrollHeight;
9377
+ this.scrollToBottom();
9378
+ }
9364
9379
  scrollToBottom() {
9365
9380
  try {
9366
9381
  this.logContainer.nativeElement.scrollTop = this.logContainer.nativeElement.scrollHeight + 10;
@@ -9420,7 +9435,7 @@ var LogsComponent = class LogsComponent {
9420
9435
  }],
9421
9436
  ngImport: i0,
9422
9437
  template: "\r\n\r\n<alg-actions [proxy]=\"this\" [actions]=\"this.actions\" [showFilterButton]=\"false\" [showSearchButton]=\"false\" [showSearchBar]=\"true\">\r\n </alg-actions>\r\n<div class=\"logs-textarea\" #logContainer>\r\n \r\n\r\n <ng-container *ngIf=\"logs.length == 0\">\r\n <span class=\"log-info\">En attente des logs...</span>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <table>\r\n <tr *ngFor=\"let log of this.getlogs();\" [ngClass]=\"log.class\">\r\n <td class = \"td1\">{{log.content[0]}}</td>\r\n <td class = \"td2\">{{log.content[1]}}</td>\r\n <td *ngIf=\"log.content[2].indexOf('[') > -1\"\r\n style=\"cursor:pointer;\"\r\n (click)=\"cliquerSurCase(log.content[2])\" \r\n class = \"td3 td3over\">{{log.content[2]}}\r\n </td>\r\n <td *ngIf=\"log.content[2].indexOf('[') === -1\"\r\n style=\"cursor:text;\"\r\n (click)=\"cliquerSurCase(log.content[2])\" \r\n class = \"td3\">{{log.content[2]}}\r\n </td>\r\n <td class = \"td4\">{{log.content[3]}}</td>\r\n <td class = \"td5\">{{log.content[4]}}</td>\r\n </tr>\r\n </table>\r\n </ng-container>\r\n </div>\r\n",
9423
- styles: [".hw100{height:100%;width:100%;display:flex}.hw100.flex-col{flex-direction:column}.hw100.flex-row{flex-direction:row}.logs{margin:10px 10px 10px 20px}.log-error{color:#c63}.log-data{color:#81c27d}.log-warning{color:#d7ba7d}.log-info{color:#efefef}.logs-textarea{background-color:#1e1e1e;color:#fff;height:calc(100% - 35px);overflow:auto;padding:5px;flex-grow:1;font-family:Consolas,Courier New,monospace;font-size:12px}tr{table-layout:auto}.td1{padding-right:5px;min-width:158px;vertical-align:top}.td2,.td3{padding-left:5px;vertical-align:top}.td4{white-space:pre-wrap;padding-left:5px;vertical-align:top}.td5{display:true}.td3over:hover{text-decoration:underline}.search{-webkit-text-size-adjust:100%;text-size-adjust:100%;visibility:visible!important;box-sizing:border-box;font-family:inherit;margin:5px;display:block;width:100%;font-weight:400;line-height:1.5;color:#444;background-color:#fff;background-clip:padding-box;border-width:1px;border-style:solid;border-color:#cbc8d0;border-image:initial;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-size:10pt;padding:10px 6px;height:26px;min-height:26px;border-radius:5px;width:295px}\n"],
9438
+ styles: [".hw100{height:100%;width:100%;display:flex}.hw100.flex-col{flex-direction:column}.hw100.flex-row{flex-direction:row}.logs{margin:10px 10px 10px 20px}.log-error{color:#c63}.log-data{color:#81c27d}.log-warning{color:#d7ba7d}.log-info{color:#efefef}:host{display:flex;flex-direction:column;height:100%}.logs-textarea{background-color:#1e1e1e;color:#fff;overflow:auto;padding:5px;flex:1 1 auto;min-height:0;font-family:Consolas,Courier New,monospace;font-size:12px}tr{table-layout:auto}.td1{padding-right:5px;min-width:158px;vertical-align:top}.td2,.td3{padding-left:5px;vertical-align:top}.td4{white-space:pre-wrap;padding-left:5px;vertical-align:top}.td5{display:true}.td3over:hover{text-decoration:underline}.search{-webkit-text-size-adjust:100%;text-size-adjust:100%;visibility:visible!important;box-sizing:border-box;font-family:inherit;margin:5px;display:block;width:100%;font-weight:400;line-height:1.5;color:#444;background-color:#fff;background-clip:padding-box;border-width:1px;border-style:solid;border-color:#cbc8d0;border-image:initial;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-size:10pt;padding:10px 6px;height:26px;min-height:26px;border-radius:5px;width:295px}\n"],
9424
9439
  dependencies: [
9425
9440
  {
9426
9441
  kind: "directive",
@@ -9490,7 +9505,7 @@ i0.ɵɵngDeclareClassMetadata({
9490
9505
  changeDetection: ChangeDetectionStrategy.Eager,
9491
9506
  standalone: false,
9492
9507
  template: "\r\n\r\n<alg-actions [proxy]=\"this\" [actions]=\"this.actions\" [showFilterButton]=\"false\" [showSearchButton]=\"false\" [showSearchBar]=\"true\">\r\n </alg-actions>\r\n<div class=\"logs-textarea\" #logContainer>\r\n \r\n\r\n <ng-container *ngIf=\"logs.length == 0\">\r\n <span class=\"log-info\">En attente des logs...</span>\r\n </ng-container>\r\n\r\n <ng-container>\r\n <table>\r\n <tr *ngFor=\"let log of this.getlogs();\" [ngClass]=\"log.class\">\r\n <td class = \"td1\">{{log.content[0]}}</td>\r\n <td class = \"td2\">{{log.content[1]}}</td>\r\n <td *ngIf=\"log.content[2].indexOf('[') > -1\"\r\n style=\"cursor:pointer;\"\r\n (click)=\"cliquerSurCase(log.content[2])\" \r\n class = \"td3 td3over\">{{log.content[2]}}\r\n </td>\r\n <td *ngIf=\"log.content[2].indexOf('[') === -1\"\r\n style=\"cursor:text;\"\r\n (click)=\"cliquerSurCase(log.content[2])\" \r\n class = \"td3\">{{log.content[2]}}\r\n </td>\r\n <td class = \"td4\">{{log.content[3]}}</td>\r\n <td class = \"td5\">{{log.content[4]}}</td>\r\n </tr>\r\n </table>\r\n </ng-container>\r\n </div>\r\n",
9493
- styles: [".hw100{height:100%;width:100%;display:flex}.hw100.flex-col{flex-direction:column}.hw100.flex-row{flex-direction:row}.logs{margin:10px 10px 10px 20px}.log-error{color:#c63}.log-data{color:#81c27d}.log-warning{color:#d7ba7d}.log-info{color:#efefef}.logs-textarea{background-color:#1e1e1e;color:#fff;height:calc(100% - 35px);overflow:auto;padding:5px;flex-grow:1;font-family:Consolas,Courier New,monospace;font-size:12px}tr{table-layout:auto}.td1{padding-right:5px;min-width:158px;vertical-align:top}.td2,.td3{padding-left:5px;vertical-align:top}.td4{white-space:pre-wrap;padding-left:5px;vertical-align:top}.td5{display:true}.td3over:hover{text-decoration:underline}.search{-webkit-text-size-adjust:100%;text-size-adjust:100%;visibility:visible!important;box-sizing:border-box;font-family:inherit;margin:5px;display:block;width:100%;font-weight:400;line-height:1.5;color:#444;background-color:#fff;background-clip:padding-box;border-width:1px;border-style:solid;border-color:#cbc8d0;border-image:initial;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-size:10pt;padding:10px 6px;height:26px;min-height:26px;border-radius:5px;width:295px}\n"]
9508
+ styles: [".hw100{height:100%;width:100%;display:flex}.hw100.flex-col{flex-direction:column}.hw100.flex-row{flex-direction:row}.logs{margin:10px 10px 10px 20px}.log-error{color:#c63}.log-data{color:#81c27d}.log-warning{color:#d7ba7d}.log-info{color:#efefef}:host{display:flex;flex-direction:column;height:100%}.logs-textarea{background-color:#1e1e1e;color:#fff;overflow:auto;padding:5px;flex:1 1 auto;min-height:0;font-family:Consolas,Courier New,monospace;font-size:12px}tr{table-layout:auto}.td1{padding-right:5px;min-width:158px;vertical-align:top}.td2,.td3{padding-left:5px;vertical-align:top}.td4{white-space:pre-wrap;padding-left:5px;vertical-align:top}.td5{display:true}.td3over:hover{text-decoration:underline}.search{-webkit-text-size-adjust:100%;text-size-adjust:100%;visibility:visible!important;box-sizing:border-box;font-family:inherit;margin:5px;display:block;width:100%;font-weight:400;line-height:1.5;color:#444;background-color:#fff;background-clip:padding-box;border-width:1px;border-style:solid;border-color:#cbc8d0;border-image:initial;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-size:10pt;padding:10px 6px;height:26px;min-height:26px;border-radius:5px;width:295px}\n"]
9494
9509
  }]
9495
9510
  }],
9496
9511
  ctorParameters: () => [{ type: ApplicationService }],
@@ -15547,7 +15562,7 @@ var ExtendedActionComponent = class ExtendedActionComponent {
15547
15562
  }],
15548
15563
  ngImport: i0,
15549
15564
  template: "<div class=\"extended-action-container\">\r\n <ng-container *ngIf=\"!this.displayLogTab;\">\r\n <div class=\"form-container\">\r\n <form [formGroup]=\"this.wrapper.form\" id=\"filterForm\">\r\n <div *ngFor=\"let field of this.Fields\">\r\n <alg-field \r\n [field]=\"field\" \r\n [form]=\"this.wrapper.form\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n > \r\n </alg-field>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.displayLogTab;\">\r\n <div class=\"log-container\" [class.visible]=\"this.displayLogTab\">\r\n <msw-logs #logsComponent [logs]=\"logs\" (onDownloadLogs)=\"downloadLogs()\"\r\n (onDisplayLogs)=\"displayLogs()\">\r\n </msw-logs>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
15550
- styles: [".extended-action-container{height:600px}.extended-action-container .form-container{padding:20px}.extended-action-container .log-container{height:600px;visibility:collapse}.extended-action-container .log-container.visible{visibility:visible}\n"],
15565
+ styles: [".extended-action-container{height:600px;max-height:70vh}.extended-action-container .form-container{padding:20px}.extended-action-container .log-container{height:100%;display:flex;flex-direction:column;visibility:collapse}.extended-action-container .log-container.visible{visibility:visible}.extended-action-container .log-container msw-logs{flex:1 1 auto;min-height:0}\n"],
15551
15566
  dependencies: [
15552
15567
  {
15553
15568
  kind: "directive",
@@ -15629,7 +15644,7 @@ i0.ɵɵngDeclareClassMetadata({
15629
15644
  changeDetection: ChangeDetectionStrategy.Eager,
15630
15645
  standalone: false,
15631
15646
  template: "<div class=\"extended-action-container\">\r\n <ng-container *ngIf=\"!this.displayLogTab;\">\r\n <div class=\"form-container\">\r\n <form [formGroup]=\"this.wrapper.form\" id=\"filterForm\">\r\n <div *ngFor=\"let field of this.Fields\">\r\n <alg-field \r\n [field]=\"field\" \r\n [form]=\"this.wrapper.form\"\r\n (propertyChanged)=\"onPropertyChanged($event)\"\r\n > \r\n </alg-field>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"this.displayLogTab;\">\r\n <div class=\"log-container\" [class.visible]=\"this.displayLogTab\">\r\n <msw-logs #logsComponent [logs]=\"logs\" (onDownloadLogs)=\"downloadLogs()\"\r\n (onDisplayLogs)=\"displayLogs()\">\r\n </msw-logs>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
15632
- styles: [".extended-action-container{height:600px}.extended-action-container .form-container{padding:20px}.extended-action-container .log-container{height:600px;visibility:collapse}.extended-action-container .log-container.visible{visibility:visible}\n"]
15647
+ styles: [".extended-action-container{height:600px;max-height:70vh}.extended-action-container .form-container{padding:20px}.extended-action-container .log-container{height:100%;display:flex;flex-direction:column;visibility:collapse}.extended-action-container .log-container.visible{visibility:visible}.extended-action-container .log-container msw-logs{flex:1 1 auto;min-height:0}\n"]
15633
15648
  }]
15634
15649
  }],
15635
15650
  ctorParameters: () => [{ type: PropertyChangeBus }, { type: ValidationService }],