Main.min.js 19 KB

1
  1. MWF.xApplication.IM.options.multitask=false;MWF.require("MWF.widget.Tree",null,false);MWF.xDesktop.requireApp("IM","Actions.RestActions",null,false);MWF.xApplication.IM.Main=new Class({Extends:MWF.xApplication.Common.Main,Implements:[Options,Events],options:{style:"default",name:"IM",icon:"icon.png",title:MWF.xApplication.IM.LP.title},onQueryLoad:function(){this.lp=MWF.xApplication.IM.LP;this.left=null;this.top=null;this.height=null;this.userAction=MWF.Actions.get("x_organization_assemble_control");this.socketAction=MWF.Actions.get("x_collaboration_assemble_websocket")},loadWindow:function(t){this.fireAppEvent("queryLoadWindow");this.window=new MWF.xDesktop.WindowTransparent(this);this.fireAppEvent("loadWindow");this.window.show();this.content=this.window.content;if(t)this.setCurrent();this.fireAppEvent("postLoadWindow");this.fireAppEvent("queryLoadApplication");this.loadApplication(function(){this.fireAppEvent("postLoadApplication")}.bind(this))},loadApplication:function(t){this.node=new Element("div#IM",{styles:this.css.panelNode}).inject(this.content);this.titleNode=new Element("div",{styles:this.css.titleNode}).inject(this.node);this.userInforNode=new Element("div",{styles:this.css.userInforNode}).inject(this.node);this.userSearchNode=new Element("div",{styles:this.css.userSearchNode}).inject(this.node);this.userListNode=new Element("div",{styles:this.css.userListNode}).inject(this.node);this.userMenuNode=new Element("div",{styles:this.css.userMenuNode}).inject(this.node);this.createTitle();this.createUserInfor();this.createSearch();this.createUserList();this.setResizeEvent();this.checkPersonOnline();this.addEvent("queryClose",function(){if(this.checkPersonOnlineTimerID)window.clearInterval(this.checkPersonOnlineTimerID)}.bind(this))},checkPersonOnline:function(){this.checkPersonOnlineTimerID=window.setInterval(function(){if(this.onlineList)this.checkOnline(this.onlineList.personList);if(this.searchList)this.checkOnline(this.searchList.personList);if(this.chatList)this.checkOnline(this.chatList.personList)}.bind(this),2e4)},checkOnline:function(t){Object.each(t,function(t,e){this.socketAction.personOnline(t.data.distinguishedName,function(e){if(e.data.onlineStatus=="online"){t.online()}else{t.offline()}}.bind(this))}.bind(this))},setNodePosition:function(){if(this.top)this.node.setStyle("top",""+this.top+"px");if(this.left)this.node.setStyle("left",""+this.top+"px");if(this.height)this.node.setStyle("height",""+this.top+"px")},setResizeEvent:function(){this.setNodePositionAndSizeFun=this.setNodePositionAndSize.bind(this);this.setNodePositionAndSizeFun();this.addEvent("current",this.setNodePositionAndSizeFun);this.desktop.addEvent("resize",this.setNodePositionAndSizeFun);this.addEvent("postClose",function(){if(this.desktop)this.desktop.removeEvent("resize",this.setNodePositionAndSizeFun)}.bind(this))},setNodePositionAndSize:function(){this.setNodePosition();var t=this.desktop.desktopNode.getSize();var e=this.desktop.desktopNode.getPosition();var i=this.node.getSize();if(!this.left||this.left>t.x-i.x-10||this.left<0){var s=t.x-i.x-10;if(s<0)s=0;this.node.setStyle("left",""+s+"px")}if(!this.top||this.top<e.y+10){var n=e.y+10;this.node.setStyle("top",""+n+"px")}if(!this.height||this.height>t.y-24){var o=t.y-24;this.node.setStyle("height",""+o+"px")}this.setNodeSize()},setNodeSize:function(){var t=this.node.getSize();var e=this.titleNode.getSize();var i=this.userInforNode.getSize();var s=this.userSearchNode.getSize();var n=this.userMenuNode.getSize();var o=t.y-(e.y+i.y+s.y+n.y);this.userListNode.setStyle("height",""+o+"px");var h=this.userListTitleNode.getSize();o=o-h.y;this.userListScrollNode.setStyle("height",""+o+"px")},createTitle:function(){this.closeAction=new Element("div",{styles:this.css.closeActionNode}).inject(this.titleNode);this.closeAction.addEvent("click",function(t){this.close();t.stopPropagation()}.bind(this));var t=new Drag.Move(this.node,{handle:this.titleNode,container:this.desktop.desktopNode,onDrop:function(){var t=this.node.getPosition();this.left=t.x;this.top=t.y}.bind(this)})},createUserInfor:function(){this.userIconAreaNode=new Element("div",{styles:this.css.userIconAreaNode}).inject(this.userInforNode);this.userIconNode=new Element("img",{styles:this.css.userIconNode}).inject(this.userIconAreaNode);this.userTextInforNode=new Element("div",{styles:this.css.userTextInforNode}).inject(this.userInforNode);this.userNameInforNode=new Element("div",{styles:this.css.userNameInforNode}).inject(this.userTextInforNode);this.userNameTextInforNode=new Element("div",{styles:this.css.userNameTextInforNode}).inject(this.userNameInforNode);this.userDutyTextInforNode=new Element("div",{styles:this.css.userDutyTextInforNode}).inject(this.userNameInforNode);this.userSignInforNode=new Element("div",{styles:this.css.userSignInforNode}).inject(this.userTextInforNode);this.userAction.getPerson(layout.desktop.session.user.id,function(t){if(!t.data)t.data={name:layout.desktop.session.user.name,distinguishedName:layout.desktop.session.user.distinguishedName,woIdentityList:[]};this.owner=t.data;this.userIconNode.set("src",this.userAction.getPersonIcon(t.data.id));this.userNameTextInforNode.set("text",t.data.name);var e=[];if(t.data.woIdentityList){t.data.woIdentityList.each(function(t){e.push(t.unitName)}.bind(this))}var i=e.join(", ");this.userDutyTextInforNode.set("text",i);this.userSignInforNode.set("text",t.data.signature||MWF.LP.desktop.nosign)}.bind(this))},createSearch:function(){this.searchInput=new Element("input",{styles:this.css.searchInput,type:"text",value:MWF.LP.desktop.searchUser}).inject(this.userSearchNode);this.searchInput.addEvents({focus:function(){if(this.searchInput.get("value")==MWF.LP.desktop.searchUser)this.searchInput.set("value","")}.bind(this),blur:function(){if(!this.searchInput.get("value"))this.searchInput.set("value",MWF.LP.desktop.searchUser)}.bind(this),keydown:function(t){if(t.code==13)this.doSearch()}.bind(this)})},doSearch:function(){var t=this.searchInput.get("value");if(t){this.userListSearchTab.click();this.userAction.listPersonByKey(function(t){if(this.searchList)this.searchList.empty();t.data.each(function(t){if(t.distinguishedName!==layout.desktop.session.user.distinguishedName){this.socketAction.personOnline(t.distinguishedName,function(e){if(e.data.onlineStatus==="online"){this.searchList.appendIdentityTreeNode(t,this.searchList.onlineTree)}else{this.searchList.appendIdentityTreeNode(t,this.searchList.offlineTree)}}.bind(this))}}.bind(this))}.bind(this),null,t)}},createUserList:function(){this.userListTitleNode=new Element("div",{styles:this.css.userListTitleNode}).inject(this.userListNode);this.userListChatTab=new Element("div",{styles:this.css.userListChatTab}).inject(this.userListTitleNode);this.userListOnlineTab=new Element("div",{styles:this.css.userListOnlineTab}).inject(this.userListTitleNode);this.userListSearchTab=new Element("div",{styles:this.css.userListSearchTab}).inject(this.userListTitleNode);this.userListChatTab.addEvents({mouseover:function(){if(this.currentList!=this.userListChatTab)this.userListChatTab.setStyles(this.css.userListChatTab_over)}.bind(this),mouseout:function(){if(this.currentList!=this.userListChatTab)this.userListChatTab.setStyles(this.css.userListChatTab)}.bind(this),click:function(){this.loadChatList()}.bind(this)});this.userListOnlineTab.addEvents({mouseover:function(){if(this.currentList!=this.userListOnlineTab)this.userListOnlineTab.setStyles(this.css.userListOnlineTab_over)}.bind(this),mouseout:function(){if(this.currentList!=this.userListOnlineTab)this.userListOnlineTab.setStyles(this.css.userListOnlineTab)}.bind(this),click:function(){this.loadOnlineList()}.bind(this)});this.userListSearchTab.addEvents({mouseover:function(){if(this.currentList!=this.userListSearchTab)this.userListSearchTab.setStyles(this.css.userListSearchTab_over)}.bind(this),mouseout:function(){if(this.currentList!=this.userListSearchTab)this.userListSearchTab.setStyles(this.css.userListSearchTab)}.bind(this),click:function(){this.loadSearchList()}.bind(this)});this.currentList=this.userListOnlineTab;this.userListScrollNode=new Element("div",{styles:this.css.userListScrollNode}).inject(this.userListNode);this.userListChatAreaNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListScrollNode);this.userListChatAreaOnlineNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListChatAreaNode);this.userListChatAreaOfflineNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListChatAreaNode);this.userListOnlineAreaNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListScrollNode);this.userListOnlineAreaTreeNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListOnlineAreaNode);this.userListSearchAreaNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListScrollNode);this.userListSearchAreaOnlineNode=new Element("div#online",{styles:this.css.userListAreaNode}).inject(this.userListSearchAreaNode);this.userListSearchAreaOfflineNode=new Element("div#offline",{styles:this.css.userListAreaNode}).inject(this.userListSearchAreaNode);MWF.require("MWF.widget.ScrollBar",function(){new MWF.widget.ScrollBar(this.userListScrollNode,{style:"xDesktop_Message",where:"before",indent:false,distance:50,friction:6,axis:{x:false,y:true}})}.bind(this));this.loadOnlineList()},loadChatList:function(){this.userListOnlineAreaNode.setStyle("display","none");this.userListChatAreaNode.setStyle("display","block");this.userListSearchAreaNode.setStyle("display","none");this.userListChatAreaOnlineNode.setStyle("display","block");this.userListChatAreaOfflineNode.setStyle("display","block");this.userListOnlineTab.setStyles(this.css.userListOnlineTab);this.userListChatTab.setStyles(this.css.userListChatTab_current);this.userListSearchTab.setStyles(this.css.userListSearchTab);this.currentList=this.userListChatTab;if(!this.chatList){this.chatList=new MWF.xApplication.IM.ChatList(this)}},loadOnlineList:function(){this.userListOnlineAreaNode.setStyle("display","block");this.userListChatAreaNode.setStyle("display","none");this.userListSearchAreaNode.setStyle("display","none");this.userListOnlineAreaTreeNode.setStyle("display","block");this.userListOnlineTab.setStyles(this.css.userListOnlineTab_current);this.userListChatTab.setStyles(this.css.userListChatTab);this.userListSearchTab.setStyles(this.css.userListSearchTab);this.currentList=this.userListOnlineTab;if(!this.onlineList){this.onlineList=new MWF.xApplication.IM.OnlineList(this)}},loadSearchList:function(){this.userListOnlineAreaNode.setStyle("display","none");this.userListChatAreaNode.setStyle("display","none");this.userListSearchAreaNode.setStyle("display","block");this.userListSearchAreaOnlineNode.setStyle("display","block");this.userListSearchAreaOfflineNode.setStyle("display","block");this.userListOnlineTab.setStyles(this.css.userListOnlineTab);this.userListChatTab.setStyles(this.css.userListChatTab);this.userListSearchTab.setStyles(this.css.userListSearchTab_current);this.currentList=this.userListSearchTab;if(!this.searchList){this.searchList=new MWF.xApplication.IM.SearchList(this)}},checkUnread:function(t){var e=null;if(this.onlineList){e=this.onlineList.personList[t];if(e)e.checkUnread()}e=null;if(this.searchList){e=this.searchList.personList[t];if(e)e.checkUnread()}e=null;if(this.chatList){e=this.chatList.personList[t];if(e)e.checkUnread()}}});MWF.xApplication.IM.OnlineList=new Class({initialize:function(t){this.app=t;this.userAction=this.app.userAction;this.socketAction=this.app.socketAction;this.css=this.app.css;this.container=this.app.userListOnlineAreaNode;this.personList={};this.load()},load:function(){this.tree=new MWF.widget.Tree(this.container,{style:"chat"});this.tree.addEvent("queryExpand",function(t){this.expandItem(t)}.bind(this));this.tree.load();this.userAction.listTopUnit(function(t){t.data.each(function(t){var e=this.appendUnitItem(t,this.tree);e.expandOrCollapse()}.bind(this))}.bind(this))},appendUnitItem:function(t,e){debugger;var i={expand:false,title:t.name,text:t.name,action:function(t){t.expandOrCollapse()}.bind(this),icon:"companyicon.png",style:"company"};var s=e.appendChild(i);s.data=t;if(t.subDirectUnitCount||t.subDirectIdentityCount)this.appendLoaddingItem(s);return s},appendIdentityItem:function(t,e){this.appendIdentityTreeNode(t.woPerson,e)},appendIdentityTreeNode:function(t,e){var i=new MWF.xApplication.IM.Person(t,e,this);this.personList[t.distinguishedName]=i},expandItem:function(t){var e=t.firstChild;if(e&&e.options.text==="loadding..."){e.destroy();if(t.data.subDirectUnitCount){this.userAction.listSubUnitDirect(t.data.id,function(e){e.data.each(function(e){this.appendUnitItem(e,t)}.bind(this))}.bind(this))}if(t.data.subDirectIdentityCount){debugger;this.userAction.getUnit(t.data.id,function(e){e.data.woSubDirectIdentityList.each(function(e){this.appendIdentityItem(e,t)}.bind(this))}.bind(this))}}},appendLoaddingItem:function(t){t.appendChild({expand:false,title:"loadding...",text:"loadding...",icon:""})}});MWF.xApplication.IM.ChatList=new Class({Extends:MWF.xApplication.IM.OnlineList,load:function(){this.onlineTree=new MWF.widget.Tree(this.app.userListChatAreaOnlineNode,{style:"chat"});this.onlineTree.load();this.offlineTree=new MWF.widget.Tree(this.app.userListChatAreaOfflineNode,{style:"chat"});this.offlineTree.load();this.socketAction.listChat(function(t){t.data.each(function(t){var e=t.from===this.app.owner.distinguishedName?t.person:t.from;if(e!==this.app.owner.distinguishedName){this.userAction.getPerson(e,function(t){this.socketAction.personOnline(t.data.distinguishedName,function(e){if(e.data.onlineStatus==="online"){this.appendIdentityTreeNode(t.data,this.onlineTree)}else{this.appendIdentityTreeNode(t.data,this.offlineTree)}}.bind(this))}.bind(this))}}.bind(this))}.bind(this))}});MWF.xApplication.IM.SearchList=new Class({Extends:MWF.xApplication.IM.OnlineList,load:function(){this.onlineTree=new MWF.widget.Tree(this.app.userListSearchAreaOnlineNode,{style:"chat"});this.onlineTree.load();this.offlineTree=new MWF.widget.Tree(this.app.userListSearchAreaOfflineNode,{style:"chat"});this.offlineTree.load()},empty:function(){this.onlineTree.empty();this.offlineTree.empty();this.personList=null;this.personList={}}});MWF.xApplication.IM.Person=new Class({initialize:function(t,e,i){this.list=i;this.app=this.list.app;this.css=this.app.css;this.parent=e;this.data=t;if(!this.data.hasOwnProperty("onlineStatus")){this.app.socketAction.personOnline(this.data.distinguishedName,function(t){this.data.onlineStatus=t.data.onlineStatus;this.load()}.bind(this))}else{this.load()}},load:function(){this.treeItem=this.parent.appendChild(this.getTreenodeObj());this.setOnlineFlag();this.createPersonInforNode();this.setEvent();this.checkUnread();window.setTimeout(this.checkOnline.bind(this),1e4)},setEvent:function(){var t=this;this.treeItem.itemNode.addEvents({mouseover:function(){this.setStyles(t.css.chatUserNode_over)},mouseout:function(){this.setStyles(t.css.chatUserNode)},dblclick:function(e){t.openChat(e)},click:function(e){t.openChat(e)}});this.treeItem.textNode.getElement("img").addEvents({mouseover:function(){t.showPersonInfor(this)},mouseout:function(){t.hidePersonInfor(this)}})},getImg:function(t,e){var i=this.app.userAction.getPersonIcon(this.data.id);return{status:"success",src:i}},getTreenodeObj:function(t){this.img=this.getImg();var e="<div style='height: 56px; width: 56px; float: left'>"+"<img style='width:48px; height: 48px; margin:4px;' src='"+this.img.src+"' />"+"</div>"+"<div style='height: 56px; margin-left: 56px;'>"+"<div style='height: 30px; line-height: 36px; color: #666666'>"+this.data.name+"</div>"+"<div style='height: 26px; line-height: 22px; color: #999999'>"+(this.data.signature||this.app.lp.nosign)+"</div></div>";return{expand:false,title:this.data.name,text:e,action:"",icon:"",style:"person"}},createPersonInforNode:function(){this.app.userAction.getPerson(this.data.id,function(t){var e=[];t.data.woIdentityList.each(function(t){t.woUnitDutyList.each(function(t){e.push(t.woUnit.name+"["+t.name+"]")}.bind(this))}.bind(this));this.personInforNode=new Element("div",{styles:this.css.personInforNode});var i='<table width="100%" cellpadding="3px" border="0">';i+="<tr><td>"+MWF.LP.desktop.person.personEmployee+"</td><td>"+this.data.employee+"</td></tr>";i+="<tr><td>"+MWF.LP.desktop.person.personMobile+"</td><td>"+this.data.mobile+"</td></tr>";i+="<tr><td>"+MWF.LP.desktop.person.personMail+"</td><td>"+this.data.mail+"</td></tr>";i+="<tr><td>"+MWF.LP.desktop.person.personQQ+"</td><td>"+this.data.qq+"</td></tr>";i+="<tr><td>"+MWF.LP.desktop.person.personWeixin+"</td><td>"+this.data.weixin+"</td></tr>";if(e.length)i+="<tr><td>"+MWF.LP.desktop.person.duty+"</td><td>"+e.join(", ")+"</td></tr>";i+="</table>";this.personInforNode.set("html",i)}.bind(this))},showPersonInfor:function(t){this.personInforNode.inject(this.app.content);this.personInforNode.setStyle("display","block");var e=this.personInforNode.getSize();var i=t.getPosition(this.app.content);var s=this.treeItem.tree.container.getPosition(this.app.content);var n=i.y;var o=s.x-e.x-5;this.personInforNode.setStyles({top:""+n+"px",left:""+o+"px"})},hidePersonInfor:function(){this.personInforNode.setStyle("display","none")},checkUnread:function(){if(layout.desktop.widgets["IMIMWidget"]){var t=layout.desktop.widgets["IMIMWidget"].unShowMessage;var e=this.data.distinguishedName+this.app.owner.distinguishedName;if(t[e]){var i=t[e].length;if(i){this.setUnread(i)}else{this.clearUnread()}}else{this.clearUnread()}}},setUnread:function(t){if(!this.unreadNode){this.unreadNode=new Element("div",{styles:this.css.userListUnreadNode}).inject(this.treeItem.textNode)}this.unreadNode.set("text",t)},clearUnread:function(){if(this.unreadNode){this.unreadNode.destroy();this.unreadNode=null;delete this.unreadNode}},openChat:function(t){if(this.data.distinguishedName!==this.app.owner.distinguishedName){var e=layout.desktop.apps["Chat"];if(e){var i=this.data.distinguishedName+layout.desktop.session.user.distinguishedName;var s=e.dialogues[i];if(!s)s=e.addDialogue(this.app.owner,[this.data]);s.setCurrent()}var n=this;layout.desktop.openApplication(t,"Chat",{onPostLoad:function(){s=this.addDialogue(n.app.owner,[n.data])}})}},checkOnline:function(){if(this.app){this.app.socketAction.personOnline(this.data.distinguishedName,function(t){if(t.data.onlineStatus==="online"){this.online()}else{this.offline()}window.setTimeout(this.checkOnline.bind(this),1e4)}.bind(this))}},online:function(){if(this.data.onlineStatus!=="online"){if(this.img.status==="success")this.data.onlineStatus="online";if(this.onlineTree){this.parent=this.onlineTree;this.treeItem.destroy();this.treeItem=this.parent.appendChild(this.getTreenodeObj())}this.setOnlineFlag()}},offline:function(){if(this.data.onlineStatus!=="offline"){this.data.onlineStatus="offline";if(this.img.status==="success")this.data.onlineStatus="offline";if(this.offlineTree){this.parent=this.offlineTree;this.treeItem.destroy();this.treeItem=this.parent.appendChild(this.getTreenodeObj())}this.setOnlineFlag()}},setOnlineFlag:function(){if(!this.onlineFlagNode){this.onlineFlagNode=new Element("div").inject(this.treeItem.textNode)}this.onlineFlagNode.setStyles(this.css["onlineFlagNode_"+this.data.onlineStatus])}});