|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const incrementSpriteData = (copiedSprite, index) => { | 
|---|
|  |  |  | const incrementAmount = incrementMode === 'descending' ? -(index + 1) : index + 1; | 
|---|
|  |  |  | switch (deviceType) { | 
|---|
|  |  |  | case DEVICE_TYPE.SHELF: | 
|---|
|  |  |  | if (incrementValue === 'row') { | 
|---|
|  |  |  | copiedSprite.data.row = sprite.data.row + incrementAmount; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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}`; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | if (incrementValue === 'no') { | 
|---|
|  |  |  | copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, incrementAmount); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (let i = 0; i < copyCount; i++) { | 
|---|
|  |  |  | const copiedSprite = Tool.copySprite(sprite); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | adjustPosition(copiedSprite, copyDirect, gap, i); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // auto-increment-value | 
|---|
|  |  |  | if (data.autoIncrement && deviceType) { | 
|---|
|  |  |  | 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 (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 (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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case DEVICE_TYPE.AGV: | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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')); | 
|---|
|  |  |  | 
|---|
|  |  |  | sx={{ width: '50%' }} | 
|---|
|  |  |  | fullWidth | 
|---|
|  |  |  | inputProps={{ | 
|---|
|  |  |  | min: 0, | 
|---|
|  |  |  | // min: 0, | 
|---|
|  |  |  | step: 1, | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | onChange={(e) => { | 
|---|