使用畫圖工具draw.io的嵌入模式實作uml圖繪制功能的嘗試(1)
使用畫圖工具draw.io的嵌入模式實作uml圖繪制功能的嘗試(3)
JSON協定
在嵌入模式(或用戶端模式)下,draw.io一般使用json來傳遞message(即在url參數中設定
proto = json
)。
P.S.主視窗向編輯器傳輸資訊一般為’action’,編輯器向主視窗傳輸資訊一般為’event’。
使用的json協定如下:
- iframe中的編輯器準備好時,向主視窗發送
,并等待主視窗向iframe發送{event: 'init'}
的加載消息用于初始化編輯器,此消息中的{action: 'load', xml: '...'}
會在編輯器中顯示出來,XML可以是任何受支援的圖像XML格式的表示,如嵌入XML的xml
、png
等。(若傳遞XML+PNG,也可以使用svg
參數)。具體的格式要求見:draw.io嵌入模式如何工作xmlpng
- 在init時可以在傳遞的消息中添加
來啟動自動儲存。(e.g.:autosave: 1
)。如果啟用了autosave,編輯器将在{action: 'load', autoload: 1, xml: '...'}
中發送目前XML。{event: 'autosave'…}
- 加載結束後,編輯器會傳回一個
事件,内容為圖像的大小。{event: 'load'...}
- 點選save,會傳回
,{event: 'save', xml: '…'}
中為圖像的XML資訊。xml
- 點選saveAndExit,如果單擊save和exit,則上述save消息會多一個附加的
。exit: true
- 點選exit,會發送
。{event: 'exit', modified: boolean}
- 主視窗發送
在編輯器中彈出對話框時,通過改變消息中的參數可以改變對話框标題、資訊和按鈕。{action: 'dialog', title: '...', message: '...', button: '...', modified: bool}
- 發送
在編輯器中彈出提示框。使用者點選确認後,編輯器傳回{action: 'prompt', title: '...', okKey: '...', defaultValue: '...'}
,傳回傳入消息和對話框中輸入的值。{event: 'prompt', value: '...', message: ...}
- 發送
,彈出選擇模闆對話框,通常在不使用加載消息時使用。如果單擊Create,則建立關系圖;如果單擊Cancel,則發送退出消息。可以添加可選參數{action: 'template'}
,如果為true,編輯器傳回callback: true
,将目前模闆和檔案名傳遞回調用方進行驗證。如果選擇了空模闆,{event: 'template', xml: '...', blank: '...', name: ...}
值為blank
。true
- 發送
顯示草稿對話框。使用者點選edit或者discard,傳回{action: 'draft', xml: '...', name: '...', editKey: '...', discardKey: '...', ignore: bool}
傳輸傳入消息和edit/discard的結果;如果出現錯誤,将傳回錯誤而不是結果。如果{event: 'draft', error/result: '...', message: ...}
為真,則傳回一個ignore選項,傳回結果:‘ignore’。ignore
- 發送
在狀态欄中顯示資訊,{action: 'status', message: '...', modified: bool}
可選,用于更新是否已修改的狀态;modified
可以用來指定消息的資源鍵,而不是消息。messageKey
- 發送
以顯示帶有消息的spinner,或者如果{action: 'spinner', message: '…, show: bool, enabled: bool}
設定為false,則隐藏目前spinner。show
- 發送
以傳回{action: 'export', format: '...'}
。{event: 'export', format: '...', message: ..., data: '...', xml: '...'}
支援的格式有html(舊的嵌入格式)、html2(新的嵌入格式)、svg(預設格式)、xmlsvg(嵌入XML的svg)、png和xmlpng(嵌入XML的png),format
參數為給定格式的有效資料URI。png和xmlpng可以使用附加的spin(或spinKey)參數來啟用spinner,并在生成映像時指定消息(或messageKey)。可選的data
參數可用于指定要導出的圖的xml,以支援所有支援的格式。可選的xml
可以禁用svg輸出中的嵌入圖像。embedImages: false
- 如果接收到任何未知消息,系統将傳回
。{error: 'unknownMessage'}