diff --git a/alcs-frontend/src/app/features/application/decision/decision-v2/decision-input/decision-conditions/decision-condition-order-dialog/decision-condition-order-dialog.component.ts b/alcs-frontend/src/app/features/application/decision/decision-v2/decision-input/decision-conditions/decision-condition-order-dialog/decision-condition-order-dialog.component.ts index e9d7d381d..b2810a0c0 100644 --- a/alcs-frontend/src/app/features/application/decision/decision-v2/decision-input/decision-conditions/decision-condition-order-dialog/decision-condition-order-dialog.component.ts +++ b/alcs-frontend/src/app/features/application/decision/decision-v2/decision-input/decision-conditions/decision-condition-order-dialog/decision-condition-order-dialog.component.ts @@ -77,7 +77,13 @@ export class DecisionConditionOrderDialogComponent implements OnInit { sendToBottom(record: ApplicationDecisionConditionDto) { const currentIndex = this.conditionsToOrder.findIndex((item) => item.uuid === record.uuid); - this.moveItem(currentIndex, this.conditionsToOrder.length - 1); + this.conditionsToOrder.sort((a,b) => a.order - b.order).forEach((item) => { + if (item.order > currentIndex) { + item.order--; + } + }); + this.conditionsToOrder[currentIndex].order = this.conditionsToOrder.length; + this.dataSource.data = this.conditionsToOrder.sort((a,b) => a.order - b.order); this.overlayRef?.detach(); this.selectedRecord = undefined; } @@ -101,8 +107,18 @@ export class DecisionConditionOrderDialogComponent implements OnInit { } private moveItem(currentIndex: number, targetIndex: number) { + this.conditionsToOrder.sort((a,b) => a.order - b.order).forEach((item) => { + if (currentIndex > targetIndex) { + if (item.order < currentIndex && item.order >= targetIndex) { + item.order++; + } + } else if (item.order > currentIndex) { + if (item.order <= targetIndex) { + item.order--; + } + } + }); this.conditionsToOrder[currentIndex].order = targetIndex; - this.conditionsToOrder[targetIndex].order = currentIndex; this.dataSource.data = this.conditionsToOrder.sort((a,b) => a.order - b.order); }