From 5b1dd4b9cc95581be39f28cf291f650f0393af8a Mon Sep 17 00:00:00 2001 From: sahil143 Date: Mon, 23 Jul 2018 15:10:47 +0530 Subject: [PATCH] fix(board): initialize column on updateSuccess if not created --- .../planner-board/planner-board.component.ts | 3 ++- src/app/effects/work-item.effects.ts | 19 +++++++++++++------ src/app/reducers/column-workitem.reducer.ts | 10 ++++++++-- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/app/components_ngrx/planner-board/planner-board.component.ts b/src/app/components_ngrx/planner-board/planner-board.component.ts index 719bc72a7..16576f4ee 100644 --- a/src/app/components_ngrx/planner-board/planner-board.component.ts +++ b/src/app/components_ngrx/planner-board/planner-board.component.ts @@ -129,7 +129,7 @@ export class PlannerBoardComponent implements AfterViewChecked, OnInit, OnDestro onDrop(args) { const [el, target, source, sibling] = args; - let direction: string; + let direction: string | null; let destinationWorkItemID: string; if (sibling === null && el.previousElementSibling !== null) { direction = 'below'; @@ -139,6 +139,7 @@ export class PlannerBoardComponent implements AfterViewChecked, OnInit, OnDestro destinationWorkItemID = sibling.children[0].getAttribute('data-id'); } else if (sibling === null && el.previousElementSibling === null) { // no reorder action dispatch only update action will dispatch + direction = null; } this.workItemQuery.getWorkItemWithId(el.children[0].getAttribute('data-id')).take(1).subscribe((workItem: WorkItemUI) => { console.log('#### -1', target.getAttribute('data-id'), source.getAttribute('data-id')); diff --git a/src/app/effects/work-item.effects.ts b/src/app/effects/work-item.effects.ts index b47ca0347..007b145d8 100644 --- a/src/app/effects/work-item.effects.ts +++ b/src/app/effects/work-item.effects.ts @@ -349,20 +349,27 @@ export class WorkItemEffects { let reorderPayload = wp.payload.reorder; reorderPayload.workitem.version = workitem.attributes['version']; const workItem = this.workItemMapper.toServiceModel(reorderPayload.workitem); - return this.workItemService.reOrderWorkItem(workItem, reorderPayload.destinationWorkitemID, reorderPayload.direction) - .map(w => { - console.log('#### - 4'); - return this.resolveWorkItems([w], wp.state)[0]; - }); + return reorderPayload.direction ? + this.workItemService.reOrderWorkItem(workItem, reorderPayload.destinationWorkitemID, reorderPayload.direction) : + Observable.of(workitem); + }) + .map(w => { + console.log('#### - 4'); + let wi = this.resolveWorkItems([w], wp.state)[0]; + console.log('#### - 4.1'); + return wi; + }) .switchMap((w: WorkItemUI) => { + console.log('#### - 5', w); return [ new WorkItemActions.UpdateSuccess(w), new ColumnWorkItemActions.UpdateSuccess({ workItemId: w.id, prevColumnId: wp.payload.prevColumnId, newColumnIds: w.columnIds - })]; + }) + ]; }) .catch((e) => { try { diff --git a/src/app/reducers/column-workitem.reducer.ts b/src/app/reducers/column-workitem.reducer.ts index b877a62f4..da4293e0a 100644 --- a/src/app/reducers/column-workitem.reducer.ts +++ b/src/app/reducers/column-workitem.reducer.ts @@ -25,10 +25,16 @@ export const ColumnWorkItemReducer: ActionReducer = (state } case ColumnWorkItemActions.UPDATE_SUCCESS: { const cwState = {...state}; + console.log('#### -- 1', cwState); cwState[action.payload.prevColumnId].delete(action.payload.workItemId); - action.payload.newColumnIds.forEach(id => { - cwState[id].add(action.payload.workItemId); + action.payload.newColumnIds.forEach(col => { + if (cwState.hasOwnProperty(col)) { + cwState[col].add(action.payload.workItemId); + } else { + cwState[col] = new Set([action.payload.workItemId]); + } }); + console.log('#### -- 2', cwState); return cwState; } default: {