| | |
| | | if (!sprite || !data || Object.keys(data).length === 0) { |
| | | return; |
| | | } |
| | | setLastCopiedSprites([]); |
| | | for (let i = 0; i < data.copyCount; i++) { |
| | | const copiedSprite = Tool.copySprite(sprite); |
| | | // copy |
| | | switch (data.copyDirect) { |
| | | |
| | | const { copyCount, copyDirect, gap, autoIncrement, incrementMode, incrementValue } = data; |
| | | const copiedSprites = []; |
| | | |
| | | const adjustPosition = (sprite, direction, gap, index) => { |
| | | const factor = index + 1; |
| | | switch (direction) { |
| | | case 'left': |
| | | copiedSprite.position.x -= (i + 1) * (data.gap + copiedSprite.width); |
| | | sprite.position.x -= factor * (gap + sprite.width); |
| | | break; |
| | | case 'right': |
| | | copiedSprite.position.x += (i + 1) * (data.gap + copiedSprite.width); |
| | | sprite.position.x += factor * (gap + sprite.width); |
| | | break; |
| | | case 'up': |
| | | copiedSprite.position.y -= (i + 1) * (data.gap + copiedSprite.height); |
| | | sprite.position.y -= factor * (gap + sprite.height); |
| | | break; |
| | | case 'down': |
| | | copiedSprite.position.y += (i + 1) * (data.gap + copiedSprite.height); |
| | | sprite.position.y += factor * (gap + sprite.height); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | // auto-increment-value |
| | | if (data.autoIncrement && deviceType) { |
| | | }; |
| | | |
| | | const incrementSpriteData = (copiedSprite, index) => { |
| | | const incrementAmount = incrementMode === 'descending' ? -(index + 1) : index + 1; |
| | | |
| | | switch (deviceType) { |
| | | case DEVICE_TYPE.SHELF: |
| | | if (data.incrementValue === 'row') { |
| | | if (data.incrementMode === 'descending') { |
| | | copiedSprite.data.row = sprite.data.row - i - 1; |
| | | } else { |
| | | copiedSprite.data.row = sprite.data.row + i + 1; |
| | | if (incrementValue === 'row') { |
| | | copiedSprite.data.row = sprite.data.row + incrementAmount; |
| | | } |
| | | } |
| | | if (data.incrementValue === 'bay') { |
| | | if (data.incrementMode === 'descending') { |
| | | copiedSprite.data.bay = sprite.data.bay - i - 1; |
| | | } else { |
| | | copiedSprite.data.bay = sprite.data.bay + i + 1; |
| | | } |
| | | if (incrementValue === 'bay') { |
| | | copiedSprite.data.bay = sprite.data.bay + incrementAmount; |
| | | } |
| | | if (copiedSprite.data.row && copiedSprite.data.bay) { |
| | | copiedSprite.data.no = copiedSprite.data.row + '-' + copiedSprite.data.bay; |
| | | copiedSprite.data.no = `${copiedSprite.data.row}-${copiedSprite.data.bay}`; |
| | | } |
| | | break; |
| | | case DEVICE_TYPE.STATION: |
| | | if (data.incrementValue === 'no') { |
| | | if (data.incrementMode === 'descending') { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1); |
| | | } else { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1); |
| | | } |
| | | } |
| | | break; |
| | | case DEVICE_TYPE.CHARGE: |
| | | if (data.incrementValue === 'no') { |
| | | if (data.incrementMode === 'descending') { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1); |
| | | } else { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1); |
| | | } |
| | | } |
| | | break; |
| | | case DEVICE_TYPE.DIRECTION: |
| | | if (data.incrementValue === 'no') { |
| | | if (data.incrementMode === 'descending') { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1); |
| | | } else { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1); |
| | | } |
| | | } |
| | | break; |
| | | case DEVICE_TYPE.POINT: |
| | | if (data.incrementValue === 'no') { |
| | | if (data.incrementMode === 'descending') { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1); |
| | | } else { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1); |
| | | } |
| | | if (incrementValue === 'no') { |
| | | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, incrementAmount); |
| | | } |
| | | break; |
| | | case DEVICE_TYPE.AGV: |
| | |
| | | default: |
| | | break; |
| | | } |
| | | }; |
| | | |
| | | for (let i = 0; i < copyCount; i++) { |
| | | const copiedSprite = Tool.copySprite(sprite); |
| | | |
| | | adjustPosition(copiedSprite, copyDirect, gap, i); |
| | | |
| | | // auto-increment-value |
| | | if (autoIncrement && deviceType) { |
| | | |
| | | incrementSpriteData(copiedSprite, i); |
| | | } |
| | | |
| | | Tool.getMapContainer().addChild(copiedSprite); |
| | | Tool.beSettings(copiedSprite, setSpriteSettings); |
| | | setLastCopiedSprites(prevArr => [...prevArr, copiedSprite]); |
| | | copiedSprites.push(copiedSprite); |
| | | } |
| | | |
| | | setLastCopiedSprites(copiedSprites); |
| | | onCancel(); |
| | | handleOnCopy?.(data); |
| | | notify.info(translate('common.response.success')); |