Main.min.js 15 KB

1
  1. MWF.xApplication.MinderEditor=MWF.xApplication.MinderEditor||{};MWF.xDesktop.requireApp("MinderEditor","Tools",null,false);MWF.xDesktop.requireApp("MinderEditor","RuntimeInCommon",null,false);MWF.xDesktop.requireApp("MinderEditor","WidgetInCommon",null,false);MWF.xDesktop.requireApp("MinderEditor","Commands",null,false);MWF.xDesktop.requireApp("MinderEditor","LeftToolbar",null,false);MWF.xApplication.MinderEditor.options={multitask:true,executable:true};MWF.xApplication.MinderEditor.Main=new Class({Extends:MWF.xApplication.Common.Main,Implements:[Options,Events],options:{isEdited:false,style:"default",name:"MinderEditor",icon:"icon.png",width:"1200",height:"700",isResize:false,isMax:true,title:MWF.xApplication.MinderEditor.LP.title,align:"center",folderId:"root",minderName:"",menuAction:"",id:"",defaultTheme:"fresh-blue",defaultTemplate:"default",isSetDataWhenExpand:false,leftToolbarEnable:true,notePreviewerEnable:true,tools:{top:["menu","|","save","|","undoredo","|","append","|","arrange","|","edit_remove","|","hyperLink","image","priority","progress","|","style","help"],left:["zoom","camera","resetlayout","move","expandLevel","selectAll","preview","template","theme","search"],right:["font","resource","note"]},disableTools:[],template:[],theme:[],dataMode:"restful"},onQueryLoad:function(){this.lp=MWF.xApplication.MinderEditor.LP},loadApplication:function(t){this.autoSaveInter=3*60*1e3;this.userName=layout.desktop.session.user.distinguishedName||layout.desktop.session.user.name;this.restActions=MWF.Actions.get("x_mind_assemble_control");if(this.status){this.options.isEdited=this.status.isEdited||false;this.options.isNew=this.status.isNew||false;this.options.dataMode=this.status.dataMode}if(this.options.isEdited){MWF.xDesktop.requireApp("MinderEditor","RuntimeInEditMode",null,false);MWF.xDesktop.requireApp("MinderEditor","WidgetInEditMode",null,false);MWF.xDesktop.requireApp("MinderEditor","ToolbarInEditMode",null,false);MWF.xDesktop.requireApp("MinderEditor","PopMenu",null,false)}else{MWF.xDesktop.requireApp("MinderEditor","RuntimeInReadMode",null,false)}this.createNode();this.getData(function(){var t=this.data.name||this.options.title||"新建脑图";t=t.length>30?t.substr(0,30):t;this.setTitle(t);this.loadApplicationContent()}.bind(this));if(this.options.noticeText)this.notice(this.options.noticeText,"info")},getData:function(e){var t;if(this.options.dataMode=="outer"||this.status&&this.status.dataMode=="outer"){if(this.status&&this.status.data){this.data=this.status.data}}else{if(this.status&&this.status.id){t=this.status.id}else if(this.options.id){t=this.options.id}else if(this.data&&this.data.id){t=this.data.id}}if(t){this.restActions.getMind(t,function(t){this.data=t.data;this.data.content=JSON.parse(this.data.content);if(e)e()}.bind(this))}else if(this.data){if(this.data.content){if(typeOf(this.data.content)=="string"){this.data.content=JSON.parse(this.data.content)}}else{this.data.content={data:{}}}if(e)e()}else{this.data={content:{data:{}}};if(e)e()}},createNode:function(){this.content.setStyle("overflow","hidden");this.node=new Element("div.node",{styles:{width:"100%",height:"100%",overflow:"hidden"}}).inject(this.content);this._createNode()},_createNode:function(){if(this.options.isEdited){this.topToolbarNode=new Element("div.topToolbar").inject(this.node);this.topToolbarNode.setStyles(this.css.topToolbar)}this.contentNode=new Element("div.contentNode").inject(this.node);this.contentNode.classList.add("km-editor");if(this.options.isEdited){this.rightToolbarNode=new Element("div.rightToolbar").inject(this.node);this.rightToolbarNode.setStyles(this.css.rightToolbar)}this.Content_Offset_Top=this.contentNode.getCoordinates(this.node).top;this.resizeContentFun=this.resizeContent.bind(this);this.addEvent("resize",this.resizeContentFun);this.resizeContent()},loadApplicationContent:function(){this.loadResource(function(){this.loadKityMinder(this.data.content);this.debug=new MWF.xApplication.MinderEditor.Debug(true);this.key=new MWF.xApplication.MinderEditor.Key;this.fsm=new MWF.xApplication.MinderEditor.FSM("normal");this.receiver=new MWF.xApplication.MinderEditor.Receiver(this);if(this.options.isEdited){this.popmenu=new MWF.xApplication.MinderEditor.PopMenu(this.content,this,this.minder,this);this.input=new MWF.xApplication.MinderEditor.Input(this);if(this.minder.supportClipboardEvent&&!kity.Browser.gecko){this.MimeType=new MWF.xApplication.MinderEditor.ClipboardMimeType;this.clipboard=new MWF.xApplication.MinderEditor.Clipboard(this)}this.history=new MWF.xApplication.MinderEditor.History(this.minder);this.commands=new MWF.xApplication.MinderEditor.Commands(this);this.commands.load();this.topToolbar=new MWF.xApplication.MinderEditor.TopToolbar(this,this.topToolbarNode);this.topToolbar.load();this.rightToolbar=new MWF.xApplication.MinderEditor.RightToolbar(this,this.rightToolbarNode);this.rightToolbar.load();this.drag=new MWF.xApplication.MinderEditor.Drag(this);MWF.xApplication.MinderEditor.JumpingInEditMode(this);if(this.status&&this.status.autoSave){this.startAutoSave()}}else{this.commands=new MWF.xApplication.MinderEditor.Commands(this);this.commands.load();this.drag=new MWF.xApplication.MinderEditor.Drag(this);MWF.xApplication.MinderEditor.JumpingInReadMode(this)}if(this.options.notePreviewerEnable)new MWF.xApplication.MinderEditor.NotePrviewer(this)}.bind(this))},openMainMenu:function(t){var e=this.topToolbar.getCommandNode("menu");e.click();this.commands.mainMenu.show(t)},loadResource:function(t){var e="/x_desktop/res/framework/kityminder/";COMMON.AjaxModule.loadCss("/x_component_MinderEditor/$Main/default/kityminder.editor.css",function(){COMMON.AjaxModule.loadCss(e+"core/src/kityminder.css",function(){COMMON.AjaxModule.load("kity",function(){COMMON.AjaxModule.load("kityminder",function(){if(t)t()}.bind(this))}.bind(this))}.bind(this))}.bind(this))},loadExtentResource:function(e){var t="/x_desktop/res/framework/kityminder/";COMMON.AjaxModule.load("/x_desktop/res/framework/jquery/jquery-2.2.4.min.js",function(){COMMON.AjaxModule.load(t+"core/dist/kityminder.core.extend.js",function(){var t=jQuery.noConflict();if(e)e()}.bind(this))}.bind(this))},loadKityMinder:function(t){var i=this;this.isMovingCenter=true;var o=this.minder=new kityminder.Minder;o.renderTo(this.contentNode);t.theme=t.theme||this.options.defaultTheme;t.template=t.template||this.options.defaultTemplate;this.deepestLevel=0;o.on("contentchange",function(){this.updateTime=new Date}.bind(this));o.on("import",function(t){if(!i.alreadyBind){var e=o.getAllNode();e.forEach(function(t){i._loadMinderNode(t)});i.alreadyBind=true;if(i.options.leftToolbarEnable)i.loadLeftToolbar();i.fireEvent("postLoadMinder",i)}});o.on("execCommand",function(t){if(t.commandName==="template"){i.moveToCenter()}});o.on("layoutallfinish",function(){if(i.templateChanged||i.isMovingCenter){i.moveToCenter();i.templateChanged=false;i.isMovingCenter=false}});o.importJson(t)},_loadMinderNode:function(t){var e=t.getLevel();this.deepestLevel=e>this.deepestLevel?e:this.deepestLevel;this.fireEvent("postLoadMinderNode",t)},addMinderNodeEvents:function(i,o){var t=i.getRenderContainer().node;for(var e in o){t.addEventListener(e,function(t){var e=i.getRenderBox("screen");o[this](t,i,e)}.bind(e))}},addMinderNoteIconEvents:function(i,o){var t=i.getRenderer("NoteIconRenderer");if(t&&t.getRenderShape()){var e=t.getRenderShape();for(var n in o){e.addEventListener(n,function(t){var e=i.getRenderBox("screen");o[this](t,i,e)}.bind(n))}}},onExpandMinderNode:function(i,o){var t=i.getRenderer("ExpanderRenderer").getRenderShape();if(t){t.addEventListener("mousedown",function(t){var e=i.getRenderBox("screen");if(o)o(t,i,e)}.bind(i))}},replaceMinderNodeWithData:function(e,t){var i=this.minder;while(e.getChildren().length){var o=e.getChildren()[0];i.removeNode(o)}i.importNode(e,t);i.refresh();setTimeout(function(){var t=e.getChildren();if(t.length){t.forEach(function(t){this._loadMinderNode(t)}.bind(this))}}.bind(this),100)},resizeContent:function(){var t=this.content.getSize();this.contentNode.setStyles({height:t.y-this.Content_Offset_Top+"px"});if(this.rightToolbar){this.rightToolbar.setTooltipsSize()}if(this.minder){this.moveToCenter()}},loadLeftToolbar:function(){this.leftToolbar=new MWF.xApplication.MinderEditor.LeftToolbar(this.node,this,this.minder,this);this.leftToolbar.load()},moveToCenter:function(){this._moveToCenter()},_moveToCenter:function(){if(this.options.align!="center")return;var t=this.minder.getRenderContainer().getRenderBox("screen");var e=this.contentNode.getCoordinates();var i=this.minder.getRoot();var o=i.getRenderContainer().getRenderBox("screen");var n=o.top-t.top;var s=o.left-t.left;var r=i.getChildren().length;var a=this.minder.queryCommandValue("template");var d,h,l=false;if(t.width>e.width){if(a=="fish-bone"||r<2){d=50}else{l=true}}else{d=parseInt((e.width-t.width)/2+s+50)}if(t.height>e.height){if(n>e.height){if(a=="fish-bone"){h=e.height-o.height}else if(r<2){h=parseInt(e.width/2)}else{l=true}}else{h=n+50}}else{h=parseInt((e.height-t.height)/2)+n}if(l){this.minder.execCommand("camera",this.minder.getRoot(),600)}else{var p=this.minder.getViewDragger();p.moveTo(new kity.Point(d,h),300)}},recordStatus:function(){var t={id:this.data?this.data.id:"",autoSave:this.autoSave,isEdited:this.options.isEdited,isNew:this.options.isNew,dataMode:this.options.dataMode};if(this.options.dataMode=="outer"){t.data=this.data}if(this.rightToolbar){t.styleActive=this.rightToolbar.styleActive;t.noteActive=this.rightToolbar.noteActive;t.resourceActive=this.rightToolbar.resourceActive}return t},startAutoSave:function(){this.notice("开启自动保存");this.autoSave=true;this.autosaveInterval=setInterval(function(){if(this.updateTime){if(!this.saveTime||this.saveTime<this.updateTime){this.save("自动保存成功");this.saveTime=this.updateTime.clone()}}}.bind(this),this.autoSaveInter)},stopAutoSave:function(){this.notice("关闭自动保存");this.autoSave=false;if(this.autosaveInterval){clearInterval(this.autosaveInterval)}},saveAs:function(t,e){var i=this.minder.exportJson();var o=JSON.stringify(i);var n=this.minder.getRoot().getText();var s={content:o,name:e||n,folderId:t||this.options.folderId,description:""};this.restActions.saveMind(s,function(t){var i=t.data.id;this.restActions.getMind(i,function(t){var e=new MWF.xApplication.MinderEditor.Converter(this,this.minder,this);e.toPng(180,130,function(t){var e=new FormData;e.append("file",t,"untitled.png");e.append("site",i);this.restActions.uploadMindIcon(i,180,function(){this.notice("另存成功")}.bind(this),null,e,t,false)}.bind(this))}.bind(this))}.bind(this))},setNewName:function(t){this.save("重命名成功",t,null)},save:function(o,n,t){var s=this.minder.exportJson();var e=JSON.stringify(s);var i=this.minder.getRoot().getText();if(this.data&&this.data.id){this.data.content=e;if(n){this.data.name=n}if(t){this.data.folderId=t}}else{this.data={content:e,name:n||i,folderId:t||this.options.folderId,description:""}}this.restActions.saveMind(this.data,function(t){var i=this.options.id=t.data.id;this.restActions.getMind(i,function(t){this.data=t.data;this.data.content=s;var e=new MWF.xApplication.MinderEditor.Converter(this,this.minder,this);e.toPng(180,130,function(t){var e=new FormData;e.append("file",t,"untitled.png");e.append("site",i);this.restActions.uploadMindIcon(i,180,function(){if(n)this.setTitle(n);this.notice(o||"保存成功")}.bind(this),null,e,t,false)}.bind(this))}.bind(this))}.bind(this))},openSaveAsDialog:function(){var t=new MWF.xApplication.MinderEditor.SaveAsForm(this,{newname:this.data?this.data.name:""},{},{app:this});t.edit()},openRenameDialog:function(){var t=new MWF.xApplication.MinderEditor.NewNameForm(this,{newname:this.data?this.data.name:""},{},{app:this});t.edit()},openShareDialog:function(){MWF.xDesktop.requireApp("Minder","Common",null,false);var t=new MWF.xApplication.Minder.ShareForm({app:this},{},{},{app:this});t.checkedItemData=[this.data];t.edit()},openExportDialog:function(){var t=new MWF.xApplication.MinderEditor.ExportForm({app:this},this.data,{},{app:this});t.edit()},openNewMinderDialog:function(){MWF.xDesktop.requireApp("Minder","Common",null,false);var t=new MWF.xApplication.Minder.NewNameForm({app:this},{},{},{app:this});t.edit()},loadCodeMirror:function(t){if(window.CodeMirror){if(t)t();return}var e=COMMON.contentPath+"/res/framework/codemirror";var i=COMMON.contentPath+"/res/framework/marked";var o={codemirror:e+"/lib/codemirror.js",codemirror_xml:e+"/mode/xml/xml.js",codemirror_javascript:e+"/mode/javascript/javascript.js",codemirror_css:e+"/mode/css/css.js",codemirror_htmlmixed:e+"/mode/htmlmixed/htmlmixed.js",codemirror_markdown:e+"/mode/markdown/markdown.js",codemirror_overlay:e+"/addon/mode/overlay.js",codemirror_gfm:e+"/mode/gfm/gfm.js",codemirror_marked:i+"/lib/marked.js"};var n=[];for(var s in o){if(!COMMON.AjaxModule[s]){COMMON.AjaxModule[s]=o[s]}n.push(s)}COMMON.AjaxModule.loadCss(e+"/lib/codemirror.css",function(){COMMON.AjaxModule.load(n,function(){marked.setOptions({gfm:true,tables:true,breaks:true,pedantic:false,sanitize:true,smartLists:true,smartypants:false});if(t)t()}.bind(this))}.bind(this))}});MWF.xApplication.MinderEditor.Converter=new Class({initialize:function(t,e){this.editor=t;this.minder=e},toPng:function(t,e,s){var r;this.toCanvas(t,e,function(t){var e=t.toDataURL("image/png");var i=e.split(",")[1];if(!i){r=null;return}i=window.atob(i);var o=new Uint8Array(i.length);for(var n=0;n<i.length;n++){o[n]=i.charCodeAt(n)}r=new Blob([o],{type:"image/png"});if(s)s(r)}.bind(this))},toCanvas:function(M,v,g){this.loadCanvgResource(function(){var t=this.editor.contentNode.get("html");var e=this.getSvgCoordinates();var i=Math.abs(e.left),o=Math.abs(e.top);var n=e.x,s=e.y;var r;if(M&&v){if(M>e.x&&v>e.y){if(M>e.x){i+=(M-e.x)/2;n=M}if(v>e.y){o+=(v-e.y)/2;s=v}}var a,d,h,l,p;if(M<e.x){a=M/e.x}if(v<e.y){d=v/e.y}if(a||d){n=M;s=v;a=a||1;d=d||1;if(a>=d){p=d;h=(M-p*e.x)/2;l=0}else{p=a;h=0;l=(v-p*e.y)/2}r=p+" 0 0 "+p+" "+h+" "+l}}var c=/<svg.*?>(.*?)<\/svg>/gi;t='<svg width="'+n+'" height="'+s+'">'+c.exec(t)[1]+"</svg>";var f=t.split("</defs>");var u=t.split('<g id="minder_connect_group');t=f[0]+"</defs>"+'<g transform="'+(r?"matrix("+r+")":"translate(0.5 0.5)")+'">'+'<g transform="translate('+i+" "+o+')" text-rendering="'+(r?"geometricPrecision":"optimize-speed")+'">'+'<g id="minder_connect_group'+u[1];var m=new Element("canvas",{width:n,height:s,styles:{width:n+"px",height:s+"px"}}).inject(this.editor.node);canvg(m,t,{log:true,renderCallback:function(t){if(g)g(m)}})}.bind(this))},loadCanvgResource:function(t){var e="/x_desktop/res/framework/canvg/";COMMON.AjaxModule.load(e+"canvg.js",function(){if(t)t()}.bind(this))},getSvgCoordinates:function(){var i={top:0,left:0,right:0,bottom:0};var o={top:0,left:0,right:0,bottom:0};var n={top:0,left:0,right:0,bottom:0};var s={top:0,left:0,right:0,bottom:0};this.minder.getRoot().traverse(function(t){var e=t.getLayoutBox();if(e.top<i.top){i=e}if(e.left<o.left){o=e}if(e.right>n.right){n=e}if(e.bottom>s.bottom){s=e}}.bind(this));return{top:i.top,right:n.right,bottom:s.bottom,left:o.left,width:n.right-o.left+1,height:s.bottom-i.top+1,x:n.right-o.left+1,y:s.bottom-i.top+1}}});