使用画图工具draw.io的嵌入模式实现uml图绘制功能的尝试(2)

使用画图工具draw.io的嵌入模式实现uml图绘制功能的尝试(1)
使用画图工具draw.io的嵌入模式实现uml图绘制功能的尝试(3)

JSON协议

在嵌入模式(或客户端模式)下,draw.io一般使用json来传递message(即在url参数中设置proto = json)。
P.S.主窗口向编辑器传输信息一般为’action’,编辑器向主窗口传输信息一般为’event’。

使用的json协议如下:

  • iframe中的编辑器准备好时,向主窗口发送{event: 'init'},并等待主窗口向iframe发送{action: 'load', xml: '...'}的加载消息用于初始化编辑器,此消息中的xml会在编辑器中显示出来,XML可以是任何受支持的图像XML格式的表示,如嵌入XML的pngsvg等。(若传递XML+PNG,也可以使用xmlpng参数)。具体的格式要求见:draw.io嵌入模式如何工作
  • 在init时可以在传递的消息中添加autosave: 1来启动自动保存。(e.g.: {action: 'load', autoload: 1, xml: '...'})。如果启用了autosave,编辑器将在{event: 'autosave'…}中发送当前XML。
  • 加载结束后,编辑器会返回一个{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: ...},返回传入消息和对话框中输入的值。
  • 发送{action: 'template'} ,弹出选择模板对话框,通常在不使用加载消息时使用。如果单击Create,则创建关系图;如果单击Cancel,则发送退出消息。可以添加可选参数callback: true,如果为true,编辑器返回 {event: 'template', xml: '...', blank: '...', name: ...},将当前模板和文件名传递回调用方进行验证。如果选择了空模板,blank值为true
  • 发送{action: 'draft', xml: '...', name: '...', editKey: '...', discardKey: '...', ignore: bool} 显示草稿对话框。用户点击edit或者discard,返回{event: 'draft', error/result: '...', message: ...} 传输传入消息和edit/discard的结果;如果出现错误,将返回错误而不是结果。如果ignore为真,则返回一个ignore选项,返回结果:‘ignore’。
  • 发送{action: 'status', message: '...', modified: bool}在状态栏中显示信息,modified可选,用于更新是否已修改的状态;messageKey可以用来指定消息的资源键,而不是消息。
  • 发送{action: 'spinner', message: '…, show: bool, enabled: bool}以显示带有消息的spinner,或者如果show设置为false,则隐藏当前spinner。
  • 发送{action: 'export', format: '...'}以返回{event: 'export', format: '...', message: ..., data: '...', xml: '...'}format支持的格式有html(旧的嵌入格式)、html2(新的嵌入格式)、svg(默认格式)、xmlsvg(嵌入XML的svg)、png和xmlpng(嵌入XML的png),data参数为给定格式的有效数据URI。png和xmlpng可以使用附加的spin(或spinKey)参数来启用spinner,并在生成映像时指定消息(或messageKey)。可选的xml参数可用于指定要导出的图的xml,以支持所有支持的格式。可选的embedImages: false可以禁用svg输出中的嵌入图像。
  • 如果接收到任何未知消息,系统将返回{error: 'unknownMessage'}

你可能感兴趣的:(draw.io)