[]
        
(Showing Draft Content)

동시 작업 편집 상태

여러 사용자가 동일한 워크시트를 동시에 편집할 경우, 한 사용자의 변경 사항이 다른 사용자의 작업(예: 행 삭제, 열 정렬)으로 인해 덮어써지거나 숨겨지는 등의 충돌이 발생할 수 있습니다.

spread-sheets-collaboration-addon 패키지에서 제공하는 동시 작업 편집 상태(Collaboration Editing Status) 기능은 이러한 예기치 않은 결과를 방지하기 위해 실시간 편집 상태를 추적합니다. 충돌 작업(예: 행 추가, 열 숨기기)이 현재 사용자의 편집 상태에 영향을 미치면, 편집 상태를 업데이트하고 UI가 올바르게 표시되도록 보장합니다.

이 기능은 내장 기능으로, 별도의 인터페이스 메서드를 사용할 필요가 없습니다.

상태 유형

  • Deleted: 편집 중인 셀이 이미 삭제된 상태

  • 셀 참조(Hidden), 예: A1(Hidden): 편집 중인 셀이 포함된 행 또는 열이 숨김 상태

  • 셀 참조, 예: A1: 편집 중인 셀이 다른 충돌 작업의 영향을 받은 상태

충돌 작업

동시 작업 편집 상태 기능은 다음과 같은 충돌 작업을 처리할 수 있습니다.

  • 행 또는 열 추가/삭제

  • 행/열 숨기기(필터 포함)

  • 정렬(필터 포함)

  • 행 높이/열 너비 조정(편집기 위치와 셀 위치가 달라질 수 있음)

편집 결과

편집이 완료되면,

  • Deleted 상태: 편집기의 값은 셀에 기록되지 않습니다.

  • 기타 상태: 편집기의 값은 툴팁에 표시된 셀에 기록됩니다.

행/열 추가 또는 삭제

현재 편집 중인 셀이 다른 사용자의 행/열 삭제 또는 추가로 인해 영향을 받아 위치가 변경되면, 동시 작업 편집 상태 기능은 이를 시각적으로 표시합니다. 셀이 Deleted로 표시되거나, 업데이트된 셀 참조(예: G1, H55)가 표시됩니다.

아래 그림에서 사용자 SpreadJS2가 B8 셀을 편집 중일 때, 사용자 SpreadJS1이 B 열을 삭제합니다. 그 결과 SpreadJS2의 B8 셀에 Deleted 표시가 나타나며, 편집 완료 후 입력 내용은 셀에 기록되지 않습니다.

delete.fa807a.gif

다른 시나리오에서는 사용자 SpreadJS2가 B8 셀을 편집 중이고, 사용자 SpreadJS1이 8행 위에 새 행을 추가합니다. 이 경우 SpreadJS2의 B8 셀에 B9 표시가 나타나며, 편집 완료 후 입력 내용은 B9 셀에 기록됩니다.

add.115cca.gif

행/열 숨기기

현재 편집 중인 셀이 다른 사용자의 행/열 숨기기 작업의 영향을 받으면, 동시 작업 편집 상태 기능은 해당 셀을 셀 참조(Hidden), 예: A1(Hidden) 형태로 표시합니다.

사용자 SpreadJS2가 B8 셀을 편집 중일 때 사용자 SpreadJS1이 8행을 숨기면, SpreadJS2는 편집 중인 셀에 B9 (Hidden) 표시를 보게 됩니다.

hide.c108ce.gif

이후 숨김 해제 작업을 수행하면, SpreadJS2가 편집한 내용은 B8 셀에 기록되는 것을 확인할 수 있습니다.

unhide.c60403.gif

정렬

현재 편집 중인 셀이 다른 사용자의 정렬 작업으로 인해 위치가 변경되면, 동시 작업 편집 상태 기능은 이를 셀 참조(예: G1, H55)로 표시합니다.

사용자 SpreadJS2가 B8 셀을 편집 중일 때 사용자 SpreadJS1이 B 열을 오름차순(A–Z)으로 정렬하면, SpreadJS2는 편집 중인 셀에 B10 표시를 보게 되며, 최종 입력 값은 B10 셀에 기록됩니다.

sort.36ae45.gif

행 높이/열 너비 조정

뷰포트 내에서 행 높이나 열 너비를 조정하면 셀 위치와 편집기 위치가 달라질 수 있습니다.

현재 편집 중인 셀이 다른 사용자의 조정 작업의 영향을 받으면, 동시 작업 편집 상태 기능은 이를 셀 참조(예: G1, H55)로 표시합니다.

사용자 SpreadJS2가 B8 셀을 편집 중일 때 사용자 SpreadJS1이 5행의 높이를 조정하면, SpreadJS2의 B8 셀에 B8 표시가 나타나며, 편집 완료 후 입력 내용은 B8 셀에 기록됩니다.

resize.ad9282.gif

상태 복원

Deleted 상태

셀이 삭제된 후 다시 추가되더라도, Deleted 상태는 복원되지 않습니다. 이는 새로 추가된 셀이 이전에 삭제된 셀과 내용, 서식 등의 측면에서 동일한지 여부를 시스템이 판단할 수 없기 때문입니다.

undo-delete.744f6b.gif

편집 중이던 셀이 삭제된 후 다시 추가되더라도, 해당 셀의 내용은 편집 이전 상태로 유지됩니다.

기타 상태

상태 변경을 유발한 작업이 되돌리기(Undo)되면, 해당 상태도 함께 복원됩니다.

예를 들어 SpreadJS2가 셀을 편집 중일 때 SpreadJS1이 해당 셀이 포함된 행을 숨기면, SpreadJS2에서 셀 상태는 “hidden”으로 변경됩니다.

hide.a9a66e.gif

이후 SpreadJS1이 숨기기 작업을 실행 취소하면, SpreadJS2에서 셀의 숨김 상태는 제거되고 툴팁도 그에 맞게 업데이트됩니다.

undo-hide.25e5d6.gif