@seniorsistemas/exclusion-process-component 0.2.1-d6a79e93-16a1-4705-a52d-6a12a465c189 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,9 +3,9 @@ import { CommonModule } from '@angular/common';
3
3
  import { InjectionToken, Inject, Injectable, Output, Component, ViewEncapsulation, NgModule, ChangeDetectorRef, ViewChild } from '@angular/core';
4
4
  import { PanelModule } from 'primeng/panel';
5
5
  import { TableModule } from 'primeng/table';
6
- import { EnumColumnFieldType, EnumBadgeColors, SidebarModule, ButtonModule, TableModule as TableModule$1, LoadingStateModule, LocaleModule, EmptyStateModule, FieldType, FormField, LocaleService, ControlErrorsModule, InfoSignModule, DynamicFormModule, TokenListModule } from '@seniorsistemas/angular-components';
6
+ import { EnumBadgeColors, EnumColumnFieldType, SidebarModule, ButtonModule, TableModule as TableModule$1, LoadingStateModule, LocaleModule, EmptyStateModule, FieldType, FormField, LocaleService, ControlErrorsModule, InfoSignModule, DynamicFormModule, TokenListModule } from '@seniorsistemas/angular-components';
7
7
  import * as moment from 'moment';
8
- import { Router, ActivatedRoute, RouterModule } from '@angular/router';
8
+ import { ActivatedRoute, Router, RouterModule } from '@angular/router';
9
9
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
10
10
  import { throwError, Subject } from 'rxjs';
11
11
  import { catchError, map, takeUntil, finalize } from 'rxjs/operators';
@@ -166,18 +166,36 @@ LogicalDeleteService = __decorate([
166
166
  Injectable()
167
167
  ], LogicalDeleteService);
168
168
 
169
+ const EXCLUSION_PROCESS_STATUS_BADGE = [
170
+ {
171
+ enumValue: EnumExclusionProcessStatus.ERROR,
172
+ color: EnumBadgeColors.RED
173
+ },
174
+ {
175
+ enumValue: EnumExclusionProcessStatus.PENDING,
176
+ color: EnumBadgeColors.YELLOW
177
+ },
178
+ {
179
+ enumValue: EnumExclusionProcessStatus.PROCESSING,
180
+ color: EnumBadgeColors.BLUE
181
+ },
182
+ {
183
+ enumValue: EnumExclusionProcessStatus.SUCCESS,
184
+ color: EnumBadgeColors.GREEN
185
+ }
186
+ ];
169
187
  let ExclusionDetailsComponent = class ExclusionDetailsComponent {
170
- constructor(router, route, translate, logicalDeleteService, projectConfigs) {
171
- this.router = router;
188
+ constructor(route, translate, logicalDeleteService, projectConfigs) {
172
189
  this.route = route;
173
190
  this.translate = translate;
174
191
  this.logicalDeleteService = logicalDeleteService;
175
192
  this.projectConfigs = projectConfigs;
176
- this._entityName = "";
193
+ this.expandedRows = {};
177
194
  this._isVisible = false;
178
195
  this._isLoading = false;
179
- this._processSummaryData = [];
180
- this._processSummaryColumns = [];
196
+ this._processGroupData = [];
197
+ this._processGroupColumns = [];
198
+ this._processStepColumns = [];
181
199
  this.ngUnsubscribe = new Subject();
182
200
  }
183
201
  get isVisible() {
@@ -186,11 +204,14 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
186
204
  get isLoading() {
187
205
  return this._isLoading;
188
206
  }
189
- get processSummaryData() {
190
- return this._processSummaryData;
207
+ get processGroupData() {
208
+ return this._processGroupData;
191
209
  }
192
- get processSummaryColumns() {
193
- return this._processSummaryColumns;
210
+ get processGroupColumns() {
211
+ return this._processGroupColumns;
212
+ }
213
+ get processStepColumns() {
214
+ return this._processStepColumns;
194
215
  }
195
216
  ngOnInit() {
196
217
  this.route.data
@@ -198,7 +219,8 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
198
219
  .subscribe((data) => {
199
220
  this.locale = data.localeConfig;
200
221
  });
201
- this._processSummaryColumns = this.getSummaryColumns();
222
+ this._processGroupColumns = this.getGroupColumns();
223
+ this._processStepColumns = this.getStepColumns();
202
224
  }
203
225
  ngOnDestroy() {
204
226
  this.ngUnsubscribe.next();
@@ -207,9 +229,8 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
207
229
  }
208
230
  showDetails(details) {
209
231
  this._exclusionDetails = details;
210
- this._entityName = details.entityName;
211
232
  this._isVisible = true;
212
- this._processSummaryData = [];
233
+ this._processGroupData = [];
213
234
  this.processDetails = null;
214
235
  this.entityDescription = details.entityDescription;
215
236
  this.loadProcessDetails(details);
@@ -221,18 +242,9 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
221
242
  closeDetails() {
222
243
  this._isVisible = false;
223
244
  this._exclusionDetails = null;
224
- this._processSummaryData = [];
245
+ this._processGroupData = [];
225
246
  this.disconnectWebSocket();
226
247
  }
227
- openExclusions() {
228
- this.closeDetails();
229
- this.router.navigate([this._entityName, "exclusions-list"], {
230
- queryParams: {
231
- entityName: this._entityName,
232
- entityDescription: this.entityDescription
233
- }
234
- });
235
- }
236
248
  getRecordDescription() {
237
249
  var _a;
238
250
  if (!((_a = this.processDetails) === null || _a === void 0 ? void 0 : _a.description)) {
@@ -282,15 +294,15 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
282
294
  getEmptyStateDescription() {
283
295
  return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_description`);
284
296
  }
285
- getSummaryColumns() {
297
+ getGroupColumns() {
286
298
  return [
287
299
  {
288
300
  field: "description",
289
301
  attributes: ["description"],
290
- header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`),
302
+ header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_group`),
291
303
  type: EnumColumnFieldType.STRING,
292
304
  style: {
293
- width: "300px"
305
+ width: "340px"
294
306
  }
295
307
  },
296
308
  {
@@ -303,24 +315,32 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
303
315
  width: "100px"
304
316
  },
305
317
  tooltip: this.getColumnStatusTooltip,
306
- badgeConfigs: [
307
- {
308
- enumValue: EnumExclusionProcessStatus.ERROR,
309
- color: EnumBadgeColors.RED
310
- },
311
- {
312
- enumValue: EnumExclusionProcessStatus.PENDING,
313
- color: EnumBadgeColors.YELLOW
314
- },
315
- {
316
- enumValue: EnumExclusionProcessStatus.PROCESSING,
317
- color: EnumBadgeColors.BLUE
318
- },
319
- {
320
- enumValue: EnumExclusionProcessStatus.SUCCESS,
321
- color: EnumBadgeColors.GREEN
322
- }
323
- ]
318
+ badgeConfigs: EXCLUSION_PROCESS_STATUS_BADGE
319
+ }
320
+ ];
321
+ }
322
+ getStepColumns() {
323
+ return [
324
+ {
325
+ field: "description",
326
+ attributes: ["description"],
327
+ header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_step`),
328
+ type: EnumColumnFieldType.STRING,
329
+ style: {
330
+ width: "340px"
331
+ }
332
+ },
333
+ {
334
+ field: "status",
335
+ attributes: ["status"],
336
+ header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),
337
+ type: EnumColumnFieldType.ENUM,
338
+ enumPrefix: `${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_`,
339
+ style: {
340
+ width: "100px"
341
+ },
342
+ tooltip: this.getColumnStatusTooltip,
343
+ badgeConfigs: EXCLUSION_PROCESS_STATUS_BADGE
324
344
  }
325
345
  ];
326
346
  }
@@ -343,7 +363,14 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
343
363
  return;
344
364
  }
345
365
  this.processDetails = process;
346
- this.loadProcessSummary(process);
366
+ this._processGroupData = this.sortGroupsByStartDate(process.groups)
367
+ .map(p => (Object.assign(Object.assign({}, p), { steps: this.sortStepsByStartDate(p.steps) })));
368
+ this.expandedRows = {};
369
+ this._processGroupData
370
+ .filter(p => p.status !== EnumExclusionProcessStatus.SUCCESS)
371
+ .forEach(p => {
372
+ this.expandedRows[p.id] = true;
373
+ });
347
374
  });
348
375
  }
349
376
  sortByDate(startDate, finishDate) {
@@ -361,20 +388,6 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
361
388
  sortStepsByStartDate(steps) {
362
389
  return steps.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));
363
390
  }
364
- loadProcessSummary(process) {
365
- const stepLogs = [];
366
- this.sortGroupsByStartDate(process.groups)
367
- .forEach(group => {
368
- const steps = this.sortStepsByStartDate(group.steps)
369
- .map(step => ({
370
- description: step.description,
371
- status: step.status,
372
- errorMessage: step.errorMessage
373
- }));
374
- stepLogs.push(...steps);
375
- });
376
- this._processSummaryData = stepLogs;
377
- }
378
391
  disconnectWebSocket() {
379
392
  if (this._exclusionProcessStatusChangedSubscribe) {
380
393
  this._exclusionProcessStatusChangedSubscribe.unsubscribe();
@@ -424,7 +437,6 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
424
437
  }
425
438
  };
426
439
  ExclusionDetailsComponent.ctorParameters = () => [
427
- { type: Router },
428
440
  { type: ActivatedRoute },
429
441
  { type: TranslateService },
430
442
  { type: LogicalDeleteService },
@@ -438,20 +450,26 @@ __decorate([
438
450
  ], ExclusionDetailsComponent.prototype, "isLoading", null);
439
451
  __decorate([
440
452
  Output()
441
- ], ExclusionDetailsComponent.prototype, "processSummaryData", null);
453
+ ], ExclusionDetailsComponent.prototype, "processGroupData", null);
442
454
  __decorate([
443
455
  Output()
444
- ], ExclusionDetailsComponent.prototype, "processSummaryColumns", null);
456
+ ], ExclusionDetailsComponent.prototype, "processGroupColumns", null);
457
+ __decorate([
458
+ Output()
459
+ ], ExclusionDetailsComponent.prototype, "processStepColumns", null);
445
460
  __decorate([
446
461
  Output()
447
462
  ], ExclusionDetailsComponent.prototype, "processDetails", void 0);
448
463
  __decorate([
449
464
  Output()
450
465
  ], ExclusionDetailsComponent.prototype, "entityDescription", void 0);
466
+ __decorate([
467
+ Output()
468
+ ], ExclusionDetailsComponent.prototype, "expandedRows", void 0);
451
469
  ExclusionDetailsComponent = __decorate([
452
470
  Component({
453
471
  selector: "s-exclusion-details",
454
- template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"processSummaryData && !processSummaryData.length\"\n [title]=\"getEmptyStateTitle()\"\n [description]=\"getEmptyStateDescription()\">\n [showPrimaryAction]=\"false\"\n </s-empty-state>\n\n <p-table\n [value]=\"processSummaryData\"\n [columns]=\"processSummaryColumns\"\n dataKey=\"id\"\n [lazy]=\"false\"\n [scrollable]=\"false\"\n [paginator]=\"false\"\n *ngIf=\"processSummaryData && processSummaryData.length\">\n\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\"\n [style.width]=\"col.width\"\n />\n </colgroup>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n </p-table>\n </p-panel>\n </s-loading-state>\n\n <s-footer>\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <s-button [label]=\"getShowExclusionsButtonLabel()\" (onClick)=\"openExclusions()\"></s-button>\n <s-button [label]=\"getCloseButtonLabel()\" priority=\"link\" (onClick)=\"closeDetails()\"></s-button>\n </div>\n </div>\n </s-footer>\n</s-sidebar>\n",
472
+ template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"processGroupData && !processGroupData.length\"\n [title]=\"getEmptyStateTitle()\"\n [description]=\"getEmptyStateDescription()\">\n [showPrimaryAction]=\"false\"\n </s-empty-state>\n\n <p-table\n [value]=\"processGroupData\"\n [columns]=\"processGroupColumns\"\n dataKey=\"id\"\n [lazy]=\"false\"\n [scrollable]=\"false\"\n [paginator]=\"false\"\n *ngIf=\"processGroupData && processGroupData.length\"\n [expandedRowKeys]=\"expandedRows\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"expend-column\" style=\"width: 40px;\"></th>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-expanded=\"expanded\">\n <tr sNavigation [sRowToggler]=\"rowData\">\n <td style=\"width: 40px;\" tabindex=\"0\">\n <em class=\"fa fa-{{ expanded ? 'minus' : 'plus' }}\"></em>\n </td>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData let-columns=\"columns\">\n <tr class=\"sds-expanded-row\">\n <td [attr.colspan]=\"columns.length + 1\">\n <p-table \n [value]=\"rowData.steps\"\n [columns]=\"processStepColumns\"\n dataKey=\"id\"\n [paginator]=\"false\"\n [responsive]=\"true\"\n [scrollable]=\"false\"\n [lazy]=\"false\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n </p-table>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-panel>\n </s-loading-state>\n\n <s-footer>\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <s-button [label]=\"getCloseButtonLabel()\" priority=\"link\" (onClick)=\"closeDetails()\"></s-button>\n </div>\n </div>\n </s-footer>\n</s-sidebar>\n",
455
473
  encapsulation: ViewEncapsulation.None,
456
474
  styles: [".s-exclusion-details-record-details-panel{margin-bottom:10px}.s-exclusion-details-record-details-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}.s-exclusion-details-record-details-recordinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex:1;flex:1}.s-exclusion-details-record-details-dateinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex-align:end;align-items:flex-end;font-size:12px}.s-exclusion-details-record-details-type{color:#999}.s-exclusion-details-record-icon{font-size:22pt;color:#7e8d95}.s-exclusion-details-record-icon-background{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:16px;background-color:#c1cad1;border-radius:50%;height:60px;width:60px}"]
457
475
  })
@@ -582,7 +600,8 @@ var ExclusionsListComponent_1;
582
600
  const HTTP_CODE_SERVER_ERROR_START = 500;
583
601
  const HTTP_CODE_SERVER_ERROR_END = 600;
584
602
  let ExclusionsListComponent = ExclusionsListComponent_1 = class ExclusionsListComponent {
585
- constructor(route, translate, formBuilder, changeDetectorRef, logicalDeleteService, filterService, projectConfigs, cdr) {
603
+ constructor(router, route, translate, formBuilder, changeDetectorRef, logicalDeleteService, filterService, projectConfigs, cdr) {
604
+ this.router = router;
586
605
  this.route = route;
587
606
  this.translate = translate;
588
607
  this.formBuilder = formBuilder;
@@ -627,6 +646,13 @@ let ExclusionsListComponent = ExclusionsListComponent_1 = class ExclusionsListCo
627
646
  }
628
647
  }
629
648
  ngOnDestroy() {
649
+ var _a;
650
+ const params = Object.assign({}, (_a = this.route.snapshot) === null || _a === void 0 ? void 0 : _a.queryParams);
651
+ if (params) {
652
+ delete params.entityName;
653
+ delete params.entityDescription;
654
+ this.router.navigate([], { queryParams: params });
655
+ }
630
656
  this.ngUnsubscribe.next();
631
657
  this.ngUnsubscribe.complete();
632
658
  }
@@ -634,8 +660,8 @@ let ExclusionsListComponent = ExclusionsListComponent_1 = class ExclusionsListCo
634
660
  return this.formBuilder.group({
635
661
  description: [undefined, Validators.compose([])],
636
662
  status: [undefined, Validators.compose([])],
637
- startDate: [{ value: undefined, disabled: false }, Validators.compose([])],
638
- endDate: [{ value: undefined, disabled: false }, Validators.compose([])]
663
+ startDate: [{ value: null, disabled: false }, Validators.compose([])],
664
+ endDate: [{ value: null, disabled: false }, Validators.compose([])]
639
665
  });
640
666
  }
641
667
  getGridColumns() {
@@ -896,6 +922,7 @@ let ExclusionsListComponent = ExclusionsListComponent_1 = class ExclusionsListCo
896
922
  };
897
923
  ExclusionsListComponent.DATE_FORMAT = "YYYY-MM-DD";
898
924
  ExclusionsListComponent.ctorParameters = () => [
925
+ { type: Router },
899
926
  { type: ActivatedRoute },
900
927
  { type: TranslateService },
901
928
  { type: FormBuilder },