@@ -701,14 +701,39 @@ function hideProgressToast() {
701701// VM 타입용 전송 결과 표시 (새로 추가)
702702function showTransferResultsForVM ( results ) {
703703 // VM 타입에서는 첫 번째 파일의 결과만 사용 (VM은 1개이므로)
704- if ( results . length > 0 && results [ 0 ] . result ) {
704+ if ( results . length > 0 ) {
705705 const firstResult = results [ 0 ] ;
706- const result = firstResult . result ;
707- const successCount = result . filter ( r => r . err === null ) . length ;
708- const totalCount = result . length ;
706+
707+ // API 응답 구조에 맞게 데이터 추출
708+ let resultArray = [ ] ;
709+ let fileName = 'Unknown File' ;
710+
711+ // 다양한 가능한 구조 확인
712+ if ( firstResult . responseData && firstResult . responseData . results ) {
713+ resultArray = Array . isArray ( firstResult . responseData . results ) ? firstResult . responseData . results : [ ] ;
714+ fileName = firstResult . fileName || 'Unknown File' ;
715+ } else if ( firstResult . result && firstResult . result . results ) {
716+ resultArray = Array . isArray ( firstResult . result . results ) ? firstResult . result . results : [ ] ;
717+ fileName = firstResult . fileName || 'Unknown File' ;
718+ } else if ( firstResult . result && Array . isArray ( firstResult . result ) ) {
719+ resultArray = firstResult . result ;
720+ fileName = firstResult . fileName || 'Unknown File' ;
721+ } else if ( Array . isArray ( firstResult ) ) {
722+ resultArray = firstResult ;
723+ fileName = 'Unknown File' ;
724+ } else {
725+ // 직접 데이터가 있는지 확인
726+ if ( firstResult . vmId || firstResult . vmIp ) {
727+ resultArray = [ firstResult ] ;
728+ fileName = firstResult . fileName || 'Unknown File' ;
729+ }
730+ }
731+
732+ const successCount = resultArray . filter ( r => ! r . error || r . error === '' ) . length ;
733+ const totalCount = resultArray . length ;
709734
710735 // VM 타입용 모달 표시
711- showTransferResultModal ( firstResult . fileName , result , successCount , totalCount ) ;
736+ showTransferResultModal ( fileName , resultArray , successCount , totalCount ) ;
712737 } else if ( results . length > 0 && results [ 0 ] . error ) {
713738 // 에러가 있는 경우
714739 const firstResult = results [ 0 ] ;
@@ -776,7 +801,8 @@ function showTransferResultModal(fileName, result, successCount, totalCount) {
776801 <div class="card border-info">
777802 <div class="card-body text-center">
778803 <h6 class="card-title">Target Path</h6>
779- <code>${ result [ 0 ] ?. command ?. [ '0' ] ?. split ( ' to ' ) [ 1 ] || 'N/A' } </code>
804+ <code>${ ( Array . isArray ( result ) && result . length > 0 && result [ 0 ] ?. command ?. [ '0' ] ) ?
805+ result [ 0 ] . command [ '0' ] . split ( ' to ' ) [ 1 ] || 'N/A' : 'N/A' } </code>
780806 </div>
781807 </div>
782808 </div>
@@ -794,31 +820,33 @@ function showTransferResultModal(fileName, result, successCount, totalCount) {
794820 </tr>
795821 </thead>
796822 <tbody>
797- ${ result . map ( r => `
798- <tr class="${ r . err === null ? 'table-success' : 'table-danger' } ">
799- <td><code>${ r . vmId } </code></td>
800- <td><code>${ r . vmIp } </code></td>
823+ ${ ( Array . isArray ( result ) ? result : [ ] ) . map ( r => {
824+ const isSuccess = ! r . error || r . error === '' ;
825+ return `
826+ <tr class="${ isSuccess ? 'table-success' : 'table-danger' } ">
827+ <td><code>${ r . vmId || 'N/A' } </code></td>
828+ <td><code>${ r . vmIp || 'N/A' } </code></td>
801829 <td>
802- ${ r . err === null ?
830+ ${ isSuccess ?
803831 '<span class="badge bg-success">Success</span>' :
804832 '<span class="badge bg-danger">Failed</span>'
805833 }
806834 </td>
807835 <td>
808- ${ r . err === null ?
836+ ${ isSuccess ?
809837 `<small class="text-success">${ r . stdout ?. [ '0' ] || 'Transfer Complete' } </small>` :
810- `<small class="text-danger">${ r . err } </small>`
838+ `<small class="text-danger">${ r . error || 'Unknown Error' } </small>`
811839 }
812840 </td>
813841 </tr>
814- ` ) . join ( '' ) }
842+ ` ;
843+ } ) . join ( '' ) }
815844 </tbody>
816845 </table>
817846 </div>
818847 </div>
819848 <div class="modal-footer">
820849 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
821- <button type="button" class="btn btn-primary" onclick="copyTransferResult()">Copy Result</button>
822850 </div>
823851 </div>
824852 </div>
@@ -909,8 +937,19 @@ function showTransferResultsModal(results, successFiles, totalFiles) {
909937 </tr>
910938 ` ;
911939 } else {
912- const successCount = r . result . filter ( vm => vm . err === null ) . length ;
913- const totalCount = r . result . length ;
940+ let resultArray = [ ] ;
941+
942+ // API 응답 구조에 맞게 데이터 추출
943+ if ( r . result && r . result . results ) {
944+ resultArray = Array . isArray ( r . result . results ) ? r . result . results : [ ] ;
945+ } else if ( r . result && Array . isArray ( r . result ) ) {
946+ resultArray = r . result ;
947+ } else if ( r . responseData && r . responseData . results ) {
948+ resultArray = Array . isArray ( r . responseData . results ) ? r . responseData . results : [ ] ;
949+ }
950+
951+ const successCount = resultArray . filter ( vm => ! vm . error || vm . error === '' ) . length ;
952+ const totalCount = resultArray . length ;
914953 return `
915954 <tr>
916955 <td>${ r . fileName } </td>
@@ -952,7 +991,7 @@ function copyTransferResult() {
952991Transfer Complete: ${ successCount } /${ totalCount } VM
953992
954993Details:
955- ${ result . map ( r => `
994+ ${ ( Array . isArray ( result ) ? result : [ ] ) . map ( r => `
956995VM ID: ${ r . vmId }
957996VM IP: ${ r . vmIp }
958997Status: ${ r . err === null ? 'Success' : 'Failed' }
0 commit comments