diff --git a/app/scripts/controllers/eventForm.js b/app/scripts/controllers/eventForm.js index 7a96b21d9..97a01a6fb 100644 --- a/app/scripts/controllers/eventForm.js +++ b/app/scripts/controllers/eventForm.js @@ -208,13 +208,14 @@ angular }); }; - var makePositionArray = function () { - var tempPositionArray = []; + // Generate a map of blockIds to their page and index within the page + var makeBlockPositionMap = function () { + var tempPositionArray = {}; $scope.conference.registrationPages.forEach(function (page, pageIndex) { page.blocks.forEach(function (block, blockIndex) { tempPositionArray[block.id] = { - page: pageIndex, - block: blockIndex, + pageIndex, + blockIndex, }; }); }); @@ -222,14 +223,14 @@ angular }; $scope.copyBlock = function (blockId) { - var tempPositionArray = makePositionArray(); - var origPageIndex = tempPositionArray[blockId].page; + var previousBlockPositions = makeBlockPositionMap(); + var origPageIndex = previousBlockPositions[blockId].pageIndex; var newBlock = angular.copy( $scope.conference.registrationPages[origPageIndex].blocks[ - tempPositionArray[blockId].block + previousBlockPositions[blockId].blockIndex ], ); - var newPosition = tempPositionArray[blockId].block + 1; + var newPosition = previousBlockPositions[blockId].blockIndex + 1; newBlock.id = uuid(); newBlock.profileType = null; newBlock.position = newPosition; @@ -328,20 +329,20 @@ angular return; } + var previousBlockPositions = makeBlockPositionMap(); if (growl) { - var t = makePositionArray(); var block = - $scope.conference.registrationPages[t[blockId].page].blocks[ - t[blockId].block - ]; + $scope.conference.registrationPages[ + previousBlockPositions[blockId].pageIndex + ].blocks[previousBlockPositions[blockId].blockIndex]; var message = '"' + block.title + '" has been deleted.'; GrowlService.growl($scope, 'conference', $scope.conference, message); } - var tempPositionArray = makePositionArray(); _.remove( - $scope.conference.registrationPages[tempPositionArray[blockId].page] - .blocks, + $scope.conference.registrationPages[ + previousBlockPositions[blockId].pageIndex + ].blocks, { id: blockId }, ); };