ngx-histaff-alpha 4.8.9 → 4.9.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.
@@ -20687,29 +20687,21 @@ class AtShiftPatternEditComponent extends BaseEditComponent {
20687
20687
  controlType: EnumFormBaseContolType.TEXTBOX,
20688
20688
  disabled: true,
20689
20689
  type: 'number',
20690
- },
20691
- ],
20692
- [
20693
- {
20694
- flexSize: 6,
20695
- label: "UI_ENTITY_FIELD_CAPTION_AT_SHIFT_PATTERN_ROUND_COUNT",
20696
- field: 'roundCount',
20697
- value: 1,
20698
- controlType: EnumFormBaseContolType.TEXTBOX,
20699
- type: 'number',
20700
20690
  validators: [
20701
20691
  {
20702
20692
  name: 'required',
20703
20693
  validator: Validators.required,
20704
- errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED,
20694
+ errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED
20705
20695
  },
20706
20696
  {
20707
20697
  name: 'min',
20708
- validator: Validators.min(1),
20709
- errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN,
20698
+ validator: Validators.min(2),
20699
+ errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN
20710
20700
  }
20711
20701
  ]
20712
20702
  },
20703
+ ],
20704
+ [
20713
20705
  {
20714
20706
  flexSize: 6,
20715
20707
  label: "UI_ENTITY_FIELD_CAPTION_AT_SHIFT_PATTERN_CODE",
@@ -20789,30 +20781,15 @@ class AtShiftPatternEditComponent extends BaseEditComponent {
20789
20781
  onFormCreated(e) {
20790
20782
  this.form = e;
20791
20783
  const rotationDaysField = e.get('rotationDays');
20792
- const roundCountField = e.get('roundCount');
20793
20784
  const patternTypeField = e.get('patternType');
20794
- const roundCountElement = this.coreFormService.getFormBaseControlByName(this.sections, 'roundCount');
20795
20785
  patternTypeField?.valueChanges.pipe(distinctUntilChanged()).subscribe(x => {
20796
20786
  if (x === 'WEEK') {
20797
20787
  rotationDaysField?.patchValue(7);
20798
20788
  rotationDaysField?.disable();
20799
- roundCountField?.patchValue(1);
20800
- roundCountField?.enable();
20801
- if (!!roundCountElement)
20802
- roundCountElement.hidden = false;
20803
20789
  }
20804
20790
  else {
20805
20791
  rotationDaysField?.patchValue(3);
20806
20792
  rotationDaysField?.enable();
20807
- roundCountField?.patchValue(1);
20808
- roundCountField?.disable();
20809
- if (!!roundCountElement)
20810
- roundCountElement.hidden = true;
20811
- }
20812
- });
20813
- roundCountField?.valueChanges.pipe(distinctUntilChanged()).subscribe(x => {
20814
- if (patternTypeField?.value === 'WEEK') {
20815
- rotationDaysField?.patchValue(x * 7);
20816
20793
  }
20817
20794
  });
20818
20795
  }
@@ -20861,10 +20838,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
20861
20838
  }] } });
20862
20839
 
20863
20840
  class AtShiftPatternDetailComponent extends BaseComponent {
20864
- constructor(mls, workShiftDndService) {
20841
+ constructor(mls, workShiftDndService, alertService) {
20865
20842
  super(mls);
20866
20843
  this.mls = mls;
20867
20844
  this.workShiftDndService = workShiftDndService;
20845
+ this.alertService = alertService;
20868
20846
  this.data$ = new BehaviorSubject(undefined);
20869
20847
  this.atShiftPatternService = inject(AtShiftPatternService);
20870
20848
  this.shiftCollectionHeight$ = new BehaviorSubject(800);
@@ -20879,46 +20857,38 @@ class AtShiftPatternDetailComponent extends BaseComponent {
20879
20857
  if (!this.data$.value)
20880
20858
  return;
20881
20859
  const currentData = this.data$.value;
20882
- let currentColumn = currentData.shiftRounds[0];
20883
- const theFirstPart = currentColumn.filter(x => x.dayNumber <= dayNumber);
20884
- const theSecondPart = currentColumn.filter(x => x.dayNumber > dayNumber);
20860
+ let cellObj = currentData.shiftDetails;
20861
+ const theFirstPart = cellObj.filter(x => x.dayNumber <= dayNumber);
20862
+ const theSecondPart = cellObj.filter(x => x.dayNumber > dayNumber);
20885
20863
  theFirstPart.push({
20886
20864
  patternId: currentData.id,
20887
20865
  dayNumber: dayNumber + 1,
20888
20866
  shifts: []
20889
20867
  });
20890
20868
  theSecondPart.map(x => x.dayNumber += 1);
20891
- currentColumn = [...theFirstPart, ...theSecondPart];
20892
- currentData.shiftRounds[0] = currentColumn;
20869
+ cellObj = [...theFirstPart, ...theSecondPart];
20870
+ currentData.shiftDetails = cellObj;
20893
20871
  this.data$.next(currentData);
20894
20872
  }
20895
- onWeekInsert(e, currentColumnIndex) {
20873
+ onDayRemove(e, dayNumber) {
20896
20874
  if (!this.data$.value)
20897
20875
  return;
20898
20876
  const currentData = this.data$.value;
20899
- let weeks = currentData.shiftRounds;
20900
- const theFirstPart = weeks.filter((_, index) => index <= currentColumnIndex);
20901
- const theSecondPart = weeks.filter((_, index) => index > currentColumnIndex);
20902
- const newWeek = [];
20903
- for (let i = 1; i <= 7; i++) {
20904
- newWeek.push({
20905
- patternId: currentData.id,
20906
- dayNumber: (currentColumnIndex + 1) * 7 + i,
20907
- shifts: []
20908
- });
20877
+ let cellObj = currentData.shiftDetails;
20878
+ if (cellObj.length <= 2) {
20879
+ this.alertService.error(this.mls.trans('AT_WORKSIGN_PATTERN_MUST_HAVE_AT_LEAST_2_DAYS_IN_DETAIL'), alertOptions);
20880
+ return;
20909
20881
  }
20910
- theFirstPart.push(newWeek);
20911
- theSecondPart.forEach(x => {
20912
- x.forEach(s => s.dayNumber += 7);
20913
- });
20914
- weeks = [...theFirstPart, ...theSecondPart];
20915
- currentData.shiftRounds = weeks;
20882
+ const theFirstPart = cellObj.filter(x => x.dayNumber <= dayNumber);
20883
+ const theSecondPart = cellObj.filter(x => x.dayNumber > dayNumber);
20884
+ theFirstPart.pop();
20885
+ theSecondPart.map(x => x.dayNumber -= 1);
20886
+ cellObj = [...theFirstPart, ...theSecondPart];
20887
+ currentData.shiftDetails = cellObj;
20916
20888
  this.data$.next(currentData);
20917
20889
  }
20918
- onWeekDelete(e, currentColumnIndex) {
20919
- }
20920
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: AtShiftPatternDetailComponent, deps: [{ token: MultiLanguageService }, { token: WorkShiftDndService }], target: i0.ɵɵFactoryTarget.Component }); }
20921
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: AtShiftPatternDetailComponent, isStandalone: true, selector: "core-at-shift-pattern-detail", inputs: { data$: "data$" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-at-shift-pattern-detail-container\">\r\n\r\n @if (workShiftDndService.shiftCollectionOpen$ | async) {\r\n <core-shift-collection [height]=\"(shiftCollectionHeight$ | async) || 800\"></core-shift-collection>\r\n }\r\n\r\n <div class=\"repeatable fs13\">\r\n\r\n @if (!!(data$ | async)) {\r\n\r\n @for (round of (data$ | async)!.shiftRounds; track round) {\r\n <div class=\"cell-collection\">\r\n @if ((data$ | async)?.patternType === 'WEEK') {\r\n <div class=\"week-header\">\r\n <div>\r\n {{ ('WEEK' | translate: lang) + ' ' + ($index + 1) }}\r\n </div>\r\n\r\n <div class=\"week-tools\">\r\n <div class=\"week-tool-icon-wrapper\" [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_WEEK'\"\r\n [position]=\"'above'\" (click)=\"onWeekInsert($event, $index)\">\r\n <i class=\"feather-corner-up-right\"></i>\r\n </div>\r\n <div class=\"week-tool-icon-wrapper\" [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_WEEK'\"\r\n [position]=\"'above'\" (click)=\"onWeekDelete($event, $index)\">\r\n <i class=\"feather-trash\"></i>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n @for (cell of round; track cell.dayNumber) {\r\n <div class=\"cell-wrapper\">\r\n <div class=\"day-caption\">\r\n @if ((data$ | async)?.patternType === 'WEEK') {\r\n {{ mls.covertOneBasedDayNumberToDayOfWeekCode(cell.dayNumber) | translate: lang }}\r\n } @else {\r\n {{ ('DAY' | translate: lang ) + \" \" + cell.dayNumber }}\r\n }\r\n </div>\r\n <core-shift-cell [ngModel]=\"cell.shifts\"></core-shift-cell>\r\n @if ((data$ | async)?.patternType === 'DAYS') {\r\n <div class=\"d-flex d-flex-end day-insert-icon-wrapper-div\" [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_DAY'\">\r\n <div class=\"week-tools\">\r\n <div class=\"week-tool-icon-wrapper\" (click)=\"onDayInsert($event, cell.dayNumber)\">\r\n <i class=\"feather-corner-right-down\"></i>\r\n </div>\r\n <div class=\"day-insert-icon-wrapper\" (click)=\"onDayInsert($event, cell.dayNumber)\">\r\n <i class=\"week-tool-icon-wrapper\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n }\r\n\r\n </div>\r\n</div>", styles: [".core-at-shift-pattern-detail-container .fs13{font-size:13px}.core-at-shift-pattern-detail-container .core-shift-collection-container{top:110px}.core-at-shift-pattern-detail-container .shift-collection{display:block}.core-at-shift-pattern-detail-container .repeatable{display:flex;align-items:flex-start;justify-content:flex-start}.core-at-shift-pattern-detail-container .repeatable .cell-collection:not(:last-child){margin-right:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection{display:block}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-header{height:40px;display:flex;align-items:center;justify-content:space-between}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools{display:flex;align-items:center;justify-content:flex-end}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools .week-tool-icon-wrapper{width:24px;height:24px;color:#d3d3d3;background-color:#fff;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools .week-tool-icon-wrapper i{width:16px;height:16px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools .week-tool-icon-wrapper:not(:last-child){margin-right:8px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper{background-color:#fff;width:262px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper .day-caption{padding:15px 0 0 15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-insert-icon-wrapper-div{height:24px;padding-right:15px;padding-bottom:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-insert-icon-wrapper{width:24px;height:24px;color:#d3d3d3;border:1px lightgray solid;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-insert-icon-wrapper i{width:16px;height:16px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreShiftCollectionComponent, selector: "core-shift-collection", inputs: ["height", "relativeMode"] }, { kind: "component", type: CoreShiftCellComponent, selector: "core-shift-cell", inputs: ["$hideStarterPlusSign", "$hideStickersWhileDragover", "$backgroundColor"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
20890
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: AtShiftPatternDetailComponent, deps: [{ token: MultiLanguageService }, { token: WorkShiftDndService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
20891
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: AtShiftPatternDetailComponent, isStandalone: true, selector: "core-at-shift-pattern-detail", inputs: { data$: "data$" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-at-shift-pattern-detail-container\">\r\n\r\n @if (workShiftDndService.shiftCollectionOpen$ | async) {\r\n <core-shift-collection [height]=\"(shiftCollectionHeight$ | async) || 800\"></core-shift-collection>\r\n }\r\n\r\n <div class=\"repeatable fs13\">\r\n\r\n @if (!!(data$ | async)) {\r\n\r\n <div class=\"cell-collection\">\r\n @for (cell of (data$ | async)?.shiftDetails; track cell.dayNumber) {\r\n <div class=\"cell-wrapper\">\r\n <div class=\"day-caption\">\r\n @if ((data$ | async)?.patternType === 'WEEK') {\r\n {{ mls.covertOneBasedDayNumberToDayOfWeekCode(cell.dayNumber) | translate: lang }}\r\n } @else {\r\n {{ ('DAY' | translate: lang ) + \" \" + cell.dayNumber }}\r\n }\r\n </div>\r\n <core-shift-cell [ngModel]=\"cell.shifts\"></core-shift-cell>\r\n @if ((data$ | async)?.patternType === 'DAYS') {\r\n <div class=\"d-flex d-flex-end day-tool-icon-wrapper-div\">\r\n <div class=\"day-tool-icon-wrapper\" (click)=\"onDayInsert($event, cell.dayNumber)\"\r\n [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_DAY' | translate: lang\">\r\n <i class=\"feather-corner-right-down\"></i>\r\n </div>\r\n <div class=\"day-tool-icon-wrapper\" (click)=\"onDayRemove($event, cell.dayNumber)\"\r\n [appTooltip]=\"'AT_SHIFT_PATTERN_REMOVE_DAY' | translate: lang\">\r\n <i class=\"feather-trash\"></i>\r\n </div>\r\n <div class=\"day-tools\">\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>", styles: [".core-at-shift-pattern-detail-container .fs13{font-size:13px}.core-at-shift-pattern-detail-container .core-shift-collection-container{top:110px}.core-at-shift-pattern-detail-container .shift-collection{display:block}.core-at-shift-pattern-detail-container .repeatable{display:flex;align-items:flex-start;justify-content:flex-start}.core-at-shift-pattern-detail-container .repeatable .cell-collection:not(:last-child){margin-right:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection{display:block}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper{background-color:#fff;width:262px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper .day-caption{padding:15px 0 0 15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper-div{display:flex;align-items:center;justify-content:flex-end;height:24px;padding-right:15px;padding-bottom:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper{width:24px;height:24px;color:#d3d3d3;border:1px lightgray solid;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper:not(:last-child){margin-right:8px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper i{width:16px;height:16px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreShiftCollectionComponent, selector: "core-shift-collection", inputs: ["height", "relativeMode"] }, { kind: "component", type: CoreShiftCellComponent, selector: "core-shift-cell", inputs: ["$hideStarterPlusSign", "$hideStickersWhileDragover", "$backgroundColor"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }] }); }
20922
20892
  }
20923
20893
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: AtShiftPatternDetailComponent, decorators: [{
20924
20894
  type: Component,
@@ -20930,8 +20900,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
20930
20900
  CoreShiftCollectionComponent,
20931
20901
  CoreShiftCellComponent,
20932
20902
  TooltipDirective,
20933
- ], template: "<div class=\"core-at-shift-pattern-detail-container\">\r\n\r\n @if (workShiftDndService.shiftCollectionOpen$ | async) {\r\n <core-shift-collection [height]=\"(shiftCollectionHeight$ | async) || 800\"></core-shift-collection>\r\n }\r\n\r\n <div class=\"repeatable fs13\">\r\n\r\n @if (!!(data$ | async)) {\r\n\r\n @for (round of (data$ | async)!.shiftRounds; track round) {\r\n <div class=\"cell-collection\">\r\n @if ((data$ | async)?.patternType === 'WEEK') {\r\n <div class=\"week-header\">\r\n <div>\r\n {{ ('WEEK' | translate: lang) + ' ' + ($index + 1) }}\r\n </div>\r\n\r\n <div class=\"week-tools\">\r\n <div class=\"week-tool-icon-wrapper\" [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_WEEK'\"\r\n [position]=\"'above'\" (click)=\"onWeekInsert($event, $index)\">\r\n <i class=\"feather-corner-up-right\"></i>\r\n </div>\r\n <div class=\"week-tool-icon-wrapper\" [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_WEEK'\"\r\n [position]=\"'above'\" (click)=\"onWeekDelete($event, $index)\">\r\n <i class=\"feather-trash\"></i>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n @for (cell of round; track cell.dayNumber) {\r\n <div class=\"cell-wrapper\">\r\n <div class=\"day-caption\">\r\n @if ((data$ | async)?.patternType === 'WEEK') {\r\n {{ mls.covertOneBasedDayNumberToDayOfWeekCode(cell.dayNumber) | translate: lang }}\r\n } @else {\r\n {{ ('DAY' | translate: lang ) + \" \" + cell.dayNumber }}\r\n }\r\n </div>\r\n <core-shift-cell [ngModel]=\"cell.shifts\"></core-shift-cell>\r\n @if ((data$ | async)?.patternType === 'DAYS') {\r\n <div class=\"d-flex d-flex-end day-insert-icon-wrapper-div\" [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_DAY'\">\r\n <div class=\"week-tools\">\r\n <div class=\"week-tool-icon-wrapper\" (click)=\"onDayInsert($event, cell.dayNumber)\">\r\n <i class=\"feather-corner-right-down\"></i>\r\n </div>\r\n <div class=\"day-insert-icon-wrapper\" (click)=\"onDayInsert($event, cell.dayNumber)\">\r\n <i class=\"week-tool-icon-wrapper\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n }\r\n\r\n </div>\r\n</div>", styles: [".core-at-shift-pattern-detail-container .fs13{font-size:13px}.core-at-shift-pattern-detail-container .core-shift-collection-container{top:110px}.core-at-shift-pattern-detail-container .shift-collection{display:block}.core-at-shift-pattern-detail-container .repeatable{display:flex;align-items:flex-start;justify-content:flex-start}.core-at-shift-pattern-detail-container .repeatable .cell-collection:not(:last-child){margin-right:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection{display:block}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-header{height:40px;display:flex;align-items:center;justify-content:space-between}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools{display:flex;align-items:center;justify-content:flex-end}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools .week-tool-icon-wrapper{width:24px;height:24px;color:#d3d3d3;background-color:#fff;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools .week-tool-icon-wrapper i{width:16px;height:16px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .week-tools .week-tool-icon-wrapper:not(:last-child){margin-right:8px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper{background-color:#fff;width:262px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper .day-caption{padding:15px 0 0 15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-insert-icon-wrapper-div{height:24px;padding-right:15px;padding-bottom:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-insert-icon-wrapper{width:24px;height:24px;color:#d3d3d3;border:1px lightgray solid;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-insert-icon-wrapper i{width:16px;height:16px}\n"] }]
20934
- }], ctorParameters: () => [{ type: MultiLanguageService }, { type: WorkShiftDndService }], propDecorators: { data$: [{
20903
+ ], template: "<div class=\"core-at-shift-pattern-detail-container\">\r\n\r\n @if (workShiftDndService.shiftCollectionOpen$ | async) {\r\n <core-shift-collection [height]=\"(shiftCollectionHeight$ | async) || 800\"></core-shift-collection>\r\n }\r\n\r\n <div class=\"repeatable fs13\">\r\n\r\n @if (!!(data$ | async)) {\r\n\r\n <div class=\"cell-collection\">\r\n @for (cell of (data$ | async)?.shiftDetails; track cell.dayNumber) {\r\n <div class=\"cell-wrapper\">\r\n <div class=\"day-caption\">\r\n @if ((data$ | async)?.patternType === 'WEEK') {\r\n {{ mls.covertOneBasedDayNumberToDayOfWeekCode(cell.dayNumber) | translate: lang }}\r\n } @else {\r\n {{ ('DAY' | translate: lang ) + \" \" + cell.dayNumber }}\r\n }\r\n </div>\r\n <core-shift-cell [ngModel]=\"cell.shifts\"></core-shift-cell>\r\n @if ((data$ | async)?.patternType === 'DAYS') {\r\n <div class=\"d-flex d-flex-end day-tool-icon-wrapper-div\">\r\n <div class=\"day-tool-icon-wrapper\" (click)=\"onDayInsert($event, cell.dayNumber)\"\r\n [appTooltip]=\"'AT_SHIFT_PATTERN_INSERT_DAY' | translate: lang\">\r\n <i class=\"feather-corner-right-down\"></i>\r\n </div>\r\n <div class=\"day-tool-icon-wrapper\" (click)=\"onDayRemove($event, cell.dayNumber)\"\r\n [appTooltip]=\"'AT_SHIFT_PATTERN_REMOVE_DAY' | translate: lang\">\r\n <i class=\"feather-trash\"></i>\r\n </div>\r\n <div class=\"day-tools\">\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>", styles: [".core-at-shift-pattern-detail-container .fs13{font-size:13px}.core-at-shift-pattern-detail-container .core-shift-collection-container{top:110px}.core-at-shift-pattern-detail-container .shift-collection{display:block}.core-at-shift-pattern-detail-container .repeatable{display:flex;align-items:flex-start;justify-content:flex-start}.core-at-shift-pattern-detail-container .repeatable .cell-collection:not(:last-child){margin-right:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection{display:block}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper{background-color:#fff;width:262px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .cell-wrapper .day-caption{padding:15px 0 0 15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper-div{display:flex;align-items:center;justify-content:flex-end;height:24px;padding-right:15px;padding-bottom:15px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper{width:24px;height:24px;color:#d3d3d3;border:1px lightgray solid;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper:not(:last-child){margin-right:8px}.core-at-shift-pattern-detail-container .repeatable .cell-collection .day-tool-icon-wrapper i{width:16px;height:16px}\n"] }]
20904
+ }], ctorParameters: () => [{ type: MultiLanguageService }, { type: WorkShiftDndService }, { type: AlertService }], propDecorators: { data$: [{
20935
20905
  type: Input
20936
20906
  }] } });
20937
20907
 
@@ -20985,13 +20955,6 @@ class AtShiftPatternComponent extends BaseComponent {
20985
20955
  align: 'right',
20986
20956
  width: 80
20987
20957
  },
20988
- {
20989
- caption: 'UI_ENTITY_FIELD_CAPTION_AT_SHIFT_PATTERN_ROUND_COUNT',
20990
- field: 'roundCount',
20991
- type: 'number',
20992
- align: 'right',
20993
- width: 80
20994
- },
20995
20958
  ];
20996
20959
  this.editRoute = {
20997
20960
  auxiliary: 'popupAux'
@@ -21001,11 +20964,16 @@ class AtShiftPatternComponent extends BaseComponent {
21001
20964
  onCorePageHeaderButtonClick(e) {
21002
20965
  console.log("onCorePageHeaderButtonClick", e);
21003
20966
  switch (e.code) {
21004
- case 'HEADER_CREATE':
20967
+ case EnumCoreButtonVNSCode.HEADER_CREATE:
21005
20968
  this.editCaptionCode = 'ADD_NEW_SHIFT_PATTERN';
21006
20969
  this.atShiftPatternService.showEdit$.next(true);
21007
20970
  this.atShiftPatternService.activePattern$.next(undefined);
21008
20971
  break;
20972
+ case EnumCoreButtonVNSCode.HEADER_EDIT:
20973
+ this.editCaptionCode = 'EDIT_SHIFT_PATTERN';
20974
+ this.atShiftPatternService.showEdit$.next(true);
20975
+ this.atShiftPatternService.activePattern$.next(undefined);
20976
+ break;
21009
20977
  default:
21010
20978
  break;
21011
20979
  }
@@ -21023,7 +20991,7 @@ class AtShiftPatternComponent extends BaseComponent {
21023
20991
  }));
21024
20992
  }
21025
20993
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: AtShiftPatternComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21026
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: AtShiftPatternComponent, isStandalone: true, selector: "core-at-shift-pattern", usesInheritance: true, ngImport: i0, template: "<div class=\"core-at-shift-pattern-container\">\r\n\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <div class=\"d-flex d-flex-around content-wrapper\">\r\n\r\n\r\n\r\n <div class=\"list-block\">\r\n\r\n\r\n <core-page-list [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [hideHeader]=\"true\" [title]=\"title\" [autoResizeWithWindow]=\"true\"\r\n [selfResolveCorePageHeaderButtonClick]=\"true\" [checkboxExplicity]=\"true\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (onInstanceCreated)=\"onInstanceCreated($event)\" (rowClick)=\"rowClick($event)\"></core-page-list>\r\n\r\n </div>\r\n\r\n @if (!(atShiftPatternService.showEdit$ | async) && !(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"anim-block\">\r\n <div class=\"anim-container\">\r\n <core-sunny-rotating></core-sunny-rotating>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if ((atShiftPatternService.showEdit$ | async) && !(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"edit-block\">\r\n <core-at-shift-pattern-edit [captionCode]=\"editCaptionCode\"></core-at-shift-pattern-edit>\r\n </div>\r\n }\r\n @if (!!(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"detail-block\">\r\n <div class=\"details-wrapper\">\r\n <div class=\"details-title\">\r\n \u2728 {{ (atShiftPatternService.activePattern$ | async)?.code }}\r\n </div>\r\n <core-at-shift-pattern-detail\r\n [data$]=\"atShiftPatternService.activePattern$\"></core-at-shift-pattern-detail>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n\r\n @if (!!loading) {\r\n <app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n }\r\n\r\n</div>", styles: [".core-at-shift-pattern-container .anim-container{height:calc(100vh - 60px);display:flex;align-items:flex-start;justify-content:flex-end}.core-at-shift-pattern-container .details-wrapper{background-color:bisque;padding:0 15px 15px;width:100%;overflow-x:scroll}.core-at-shift-pattern-container .details-wrapper .details-title{height:40px;display:flex;align-items:center;justify-content:flex-start;font-weight:700}.core-at-shift-pattern-container .content-wrapper{align-items:flex-start}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "enableFilterKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "statusOptions$", "showOrgParam", "showOrgParamDropdown", "hideGeneralSearch", "hideDatePeriodComparison", "hideStatusInclusion", "filterOperators$", "camelCaseDtoStatusIdField", "gridStatusColumn", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "useTheseColumns", "hideOrgTree", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerFilter$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$", "disableDialogInformationLines", "changeTracking", "primaryKey", "changedItems$", "tabMode", "paramRows", "disableFilterHub", "autoColumnFitAvailableSpace", "ignoredDefaultActions", "checkboxExplicity"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady", "listChange"] }, { kind: "component", type: AtShiftPatternEditComponent, selector: "core-at-shift-pattern-edit", inputs: ["captionCode"] }, { kind: "component", type: AtShiftPatternDetailComponent, selector: "core-at-shift-pattern-detail", inputs: ["data$"] }, { kind: "component", type: SunnyRotatingComponent, selector: "core-sunny-rotating" }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }] }); }
20994
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: AtShiftPatternComponent, isStandalone: true, selector: "core-at-shift-pattern", usesInheritance: true, ngImport: i0, template: "<div class=\"core-at-shift-pattern-container\">\r\n\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <div class=\"d-flex d-flex-around content-wrapper\">\r\n\r\n\r\n\r\n <div class=\"list-block\">\r\n\r\n\r\n <core-page-list [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [hideHeader]=\"true\" [title]=\"title\" [autoResizeWithWindow]=\"true\"\r\n [selfResolveCorePageHeaderButtonClick]=\"true\" [checkboxExplicity]=\"true\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (onInstanceCreated)=\"onInstanceCreated($event)\" (rowClick)=\"rowClick($event)\"></core-page-list>\r\n\r\n </div>\r\n\r\n @if (!(atShiftPatternService.showEdit$ | async) && !(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"anim-block\">\r\n <div class=\"anim-container\">\r\n <core-sunny-rotating></core-sunny-rotating>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (atShiftPatternService.showEdit$ | async) {\r\n <div class=\"edit-block\">\r\n <core-at-shift-pattern-edit [captionCode]=\"editCaptionCode\"></core-at-shift-pattern-edit>\r\n </div>\r\n }\r\n @if (!!(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"detail-block\">\r\n <div class=\"details-wrapper\">\r\n <div class=\"details-title\">\r\n \u2728 {{ (atShiftPatternService.activePattern$ | async)?.code }}\r\n </div>\r\n <core-at-shift-pattern-detail\r\n [data$]=\"atShiftPatternService.activePattern$\"></core-at-shift-pattern-detail>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n\r\n @if (!!loading) {\r\n <app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n }\r\n\r\n</div>", styles: [".core-at-shift-pattern-container .anim-container{height:calc(100vh - 60px);display:flex;align-items:flex-start;justify-content:flex-end}.core-at-shift-pattern-container .details-wrapper{background-color:bisque;padding:0 15px 15px;width:100%;overflow-x:scroll}.core-at-shift-pattern-container .details-wrapper .details-title{height:40px;display:flex;align-items:center;justify-content:flex-start;font-weight:700}.core-at-shift-pattern-container .content-wrapper{align-items:flex-start}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "enableFilterKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "statusOptions$", "showOrgParam", "showOrgParamDropdown", "hideGeneralSearch", "hideDatePeriodComparison", "hideStatusInclusion", "filterOperators$", "camelCaseDtoStatusIdField", "gridStatusColumn", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "useTheseColumns", "hideOrgTree", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerFilter$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$", "disableDialogInformationLines", "changeTracking", "primaryKey", "changedItems$", "tabMode", "paramRows", "disableFilterHub", "autoColumnFitAvailableSpace", "ignoredDefaultActions", "checkboxExplicity"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady", "listChange"] }, { kind: "component", type: AtShiftPatternEditComponent, selector: "core-at-shift-pattern-edit", inputs: ["captionCode"] }, { kind: "component", type: AtShiftPatternDetailComponent, selector: "core-at-shift-pattern-detail", inputs: ["data$"] }, { kind: "component", type: SunnyRotatingComponent, selector: "core-sunny-rotating" }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }] }); }
21027
20995
  }
21028
20996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: AtShiftPatternComponent, decorators: [{
21029
20997
  type: Component,
@@ -21035,7 +21003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
21035
21003
  AtShiftPatternDetailComponent,
21036
21004
  SunnyRotatingComponent,
21037
21005
  FullscreenModalLoaderComponent
21038
- ], template: "<div class=\"core-at-shift-pattern-container\">\r\n\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <div class=\"d-flex d-flex-around content-wrapper\">\r\n\r\n\r\n\r\n <div class=\"list-block\">\r\n\r\n\r\n <core-page-list [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [hideHeader]=\"true\" [title]=\"title\" [autoResizeWithWindow]=\"true\"\r\n [selfResolveCorePageHeaderButtonClick]=\"true\" [checkboxExplicity]=\"true\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (onInstanceCreated)=\"onInstanceCreated($event)\" (rowClick)=\"rowClick($event)\"></core-page-list>\r\n\r\n </div>\r\n\r\n @if (!(atShiftPatternService.showEdit$ | async) && !(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"anim-block\">\r\n <div class=\"anim-container\">\r\n <core-sunny-rotating></core-sunny-rotating>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if ((atShiftPatternService.showEdit$ | async) && !(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"edit-block\">\r\n <core-at-shift-pattern-edit [captionCode]=\"editCaptionCode\"></core-at-shift-pattern-edit>\r\n </div>\r\n }\r\n @if (!!(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"detail-block\">\r\n <div class=\"details-wrapper\">\r\n <div class=\"details-title\">\r\n \u2728 {{ (atShiftPatternService.activePattern$ | async)?.code }}\r\n </div>\r\n <core-at-shift-pattern-detail\r\n [data$]=\"atShiftPatternService.activePattern$\"></core-at-shift-pattern-detail>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n\r\n @if (!!loading) {\r\n <app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n }\r\n\r\n</div>", styles: [".core-at-shift-pattern-container .anim-container{height:calc(100vh - 60px);display:flex;align-items:flex-start;justify-content:flex-end}.core-at-shift-pattern-container .details-wrapper{background-color:bisque;padding:0 15px 15px;width:100%;overflow-x:scroll}.core-at-shift-pattern-container .details-wrapper .details-title{height:40px;display:flex;align-items:center;justify-content:flex-start;font-weight:700}.core-at-shift-pattern-container .content-wrapper{align-items:flex-start}\n"] }]
21006
+ ], template: "<div class=\"core-at-shift-pattern-container\">\r\n\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <div class=\"d-flex d-flex-around content-wrapper\">\r\n\r\n\r\n\r\n <div class=\"list-block\">\r\n\r\n\r\n <core-page-list [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [hideHeader]=\"true\" [title]=\"title\" [autoResizeWithWindow]=\"true\"\r\n [selfResolveCorePageHeaderButtonClick]=\"true\" [checkboxExplicity]=\"true\"\r\n (corePageHeaderButtonClick)=\"onCorePageHeaderButtonClick($event)\"\r\n (onInstanceCreated)=\"onInstanceCreated($event)\" (rowClick)=\"rowClick($event)\"></core-page-list>\r\n\r\n </div>\r\n\r\n @if (!(atShiftPatternService.showEdit$ | async) && !(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"anim-block\">\r\n <div class=\"anim-container\">\r\n <core-sunny-rotating></core-sunny-rotating>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (atShiftPatternService.showEdit$ | async) {\r\n <div class=\"edit-block\">\r\n <core-at-shift-pattern-edit [captionCode]=\"editCaptionCode\"></core-at-shift-pattern-edit>\r\n </div>\r\n }\r\n @if (!!(atShiftPatternService.activePattern$ | async)) {\r\n <div class=\"detail-block\">\r\n <div class=\"details-wrapper\">\r\n <div class=\"details-title\">\r\n \u2728 {{ (atShiftPatternService.activePattern$ | async)?.code }}\r\n </div>\r\n <core-at-shift-pattern-detail\r\n [data$]=\"atShiftPatternService.activePattern$\"></core-at-shift-pattern-detail>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n\r\n @if (!!loading) {\r\n <app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n }\r\n\r\n</div>", styles: [".core-at-shift-pattern-container .anim-container{height:calc(100vh - 60px);display:flex;align-items:flex-start;justify-content:flex-end}.core-at-shift-pattern-container .details-wrapper{background-color:bisque;padding:0 15px 15px;width:100%;overflow-x:scroll}.core-at-shift-pattern-container .details-wrapper .details-title{height:40px;display:flex;align-items:center;justify-content:flex-start;font-weight:700}.core-at-shift-pattern-container .content-wrapper{align-items:flex-start}\n"] }]
21039
21007
  }] });
21040
21008
 
21041
21009
  class CoreOrgParamComponent extends CoreFormControlBaseComponent {