Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

목차


EVENT_TYPE

Collaboration 플러그인에서 사용할 수 있는 이벤트 타입입니다.

on(), off() 메소드를 활용해 이벤트에 대한 리스너를 설정하거나 제거할 수 있습니다.

이벤트 타입설명
ON_SYNC
  • 실시간 협업이 연결되었을 때 발생합니다.
  • 리스너의 parameter로 전달되는 값:
NameTypeDescription
eventObject
{
    setForceUpdate: (update: boolean) => void
}
  • setForceUpdate(update): 실시간 협업 모델을 현재 에디터에 작성된 모델로 강제로 업데이트할지 여부를 설정합니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;
var EVENT_TYPE = collaboration.EVENT_TYPE;

collaboration.on(EVENT_TYPE.ON_SYNC, function (event) {
    event.setForceUpdate(true);
});
USER_CHANGED
  • 접속 중인 사용자 수가 변경되었을 때 발생합니다.
  • 리스너의 parameter로 전달되는 값:
NameTypeDescription
usersObject[]

접속 중인 사용자 목록 배열입니다.

[
    { id: {number}, name: {string}, color: {string}, data: {Object}, position: {Position}, modified: {number}, self: {boolean} }, 
    ....
]
  • id: 사용자의 Client Id
  • name: 사용자의 이름
  • color: 사용자 색 
  • data: 사용자 데이터
  • position: 사용자의 커서 위치 정보 
  • modified: 마지막으로 업데이트된 시간 timestamp
  • self: 사용자가 나 인지 여부
addednumber[]추가된 사용자의 Client Id 배열입니다.
removednumber[]제거된 사용자의 Client Id 배열입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;
var EVENT_TYPE = collaboration.EVENT_TYPE;

collaboration.on(EVENT_TYPE.USER_CHANGED, function (users, added, removed) {});
USER_INFO_CHANGED
  • 접속 중인 사용자의 이름, 색, 커서 위치 정보가 변경되거나 사용자 수가 변경되었을 때 발생합니다. 
  • 리스너의 parameter로 전달되는 값:
NameTypeDescription
usersObject[]

접속 중인 사용자 목록 배열입니다.

[
    { id: {number}, name: {string}, color: {string}, data{Object}, position: {Position}, modified: {number}, self: {boolean} }, 
    ....
]
  • id: 사용자의 Client Id
  • name: 사용자의 이름
  • color: 사용자 색 
  • data: 사용자 데이터
  • position: 사용자의 커서 위치 정보 
  • modified: 마지막으로 업데이트된 시간 timestamp
  • self: 사용자가 나 인지 여부
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;
var EVENT_TYPE = collaboration.EVENT_TYPE;

collaboration.on(EVENT_TYPE.USER_INFO_CHANGED, function (users) {});


on(eventType, listener)

Collaboration 플러그인에서 발생하는 이벤트에 대한 리스너를 설정합니다.

parameters:

NameTypeDescription
eventTypestring이벤트 타입입니다.
listenerfunction이벤트 리스너입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;
var EVENT_TYPE = collaboration.EVENT_TYPE;
var eventListener = function () {};

collaboration.on(EVENT_TYPE.USER_CHANGED, eventListener);


off(eventType, listener)

Collaboration 플러그인에서 발생하는 이벤트에 대한 리스너를 제거합니다.

parameters:

NameTypeDescription
eventTypestring이벤트 타입입니다.
listenerfunction이벤트 리스너입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;
var EVENT_TYPE = collaboration.EVENT_TYPE;
var eventListener = function () {};

collaboration.off(EVENT_TYPE.USER_CHANGED, eventListener);


setUserName(name)

사용자의 이름을 설정합니다.

parameters:

NameTypeDescription
namestring설정할 사용자의 이름입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.setUserName('사용자이름');


setUserColor(color)

사용자의 색상을 설정합니다.

parameters:

NameTypeDescription
namestring설정할 사용자의 색입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.setUserName('#39b6b8');


setUserData(data)

사용자의 데이터를 기록합니다.

parameters:

NameTypeDescription
nameObject필요한 사용자 정보를 저장합니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.setUserData({ userId: 'userId', connected: Date.now() });


getClientId()

현재 사용자의 Client Id를 반환합니다.

returns:

TypeDescription
number현재 사용자의 Client Id 입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

var id = collaboration.getClientId();


init()

실시간 협업을 초기화 합니다.

플러그인 config에 docId를 설정했다면, 설정된 docId를 기준으로 실시간 협업이 시작되고, 설정된 docId가 없다면 초기화 되지 않습니다.

example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.init();


changeDocument(docId)

docId 에 해당하는 문서로 실시간 협업이 시작됩니다.

parameters:

NameTypeDescription
docIdstring실시간 협업을 시작할 문서의 Id입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.changeDocument('newDocumentId');


destroy()

현재 사용자의 실시간 협업을 종료합니다. 

example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.destroy();



setInit(fn)

실시간 협업이 초기화 되는 시점에 실행될 함수를 설정합니다.

parameters:

NameTypeDescription
fnfunction실시간 협업이 초기화 되는 시점에 실행될 함수입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.setInit(function () {
    console.log('실시간 협업 연결됨');
});



getHistory()

업데이트 기록을 반환합니다.

returns:

TypeDescription
Object
example
{
    original: {string},
    versions: [
        { data: {string}, modified: {number}, user: { id: {number}, name: {string} } },
        ...
    ]
}
  • original: 업데이트 기록이 시작된 에디터 모델의 JSON String 입니다.
  • versions: 업데이트 기록입니다. 최대 100개 까지 유지됩니다.
    • data: 변경이 된 이후의 에디터 모델 JSON String 입니다.
    • modified: 변경이 일어난 클라이언트 시간 timestamp 입니다.
    • user: 변경을 한 사용자의 id, name 정보 입니다.
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

var history = collaboration.getHistory();



updateHistoryOriginal(modelJSON)

업데이트 기록의 원본 모델을 업데이트합니다.

parameter로 modelJSON을 넘기지 않은 경우 에디터의 현재 모델로 업데이트 합니다. 업데이트 기록 데이터의 versions 가 초기화 됩니다.

parameters:

NameTypeDescription
[modelJSON]Object에디터 Body Model JSON
example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

collaboration.updateHistoryOriginal(); // parameter를 넘기지 않은 경우 에디터의 현재 모델로 업데이트



applyChanges()

에디터 모델에서 변경된 사항들을 실시간 협업 모델에 적용합니다.

액션이 아닌 경로로 에디터 편집을 한 경우 실시간 협업 모델에 동기화 되지 않는데, 이런 경우 applyChanges() 를 실행하면 에디터에 변경된 사항들을 실시간 협업 모델에 반영하게 됩니다.

액션이 아닌 경로로 편집이 일어나는 상황:


example
var editor = new SynapEditor(id, synapEditorConfig);
var collaboration = editor.plugins.collaboration;

editor.insertHTML('SynapEditor');   // 변경된 내용이 다른 사용자들에게 동기화 되지 않음 (내 화면에서만 변경이 되어있는 상태)
collaboration.applyChanges();       // 변경된 내용이 다른 사용자들에게 동기화 됨

editor.getAPIModelById('myParagraph').replace('SynapSoft');   // 변경된 내용이 다른 사용자들에게 동기화 되지 않음 (내 화면에서만 변경이 되어있는 상태)
collaboration.applyChanges();       // 변경된 내용이 다른 사용자들에게 동기화 됨





  • No labels