// this.taskData 任务对象
MWF.xApplication.TeamWork = MWF.xApplication.TeamWork || {};
MWF.xApplication.TeamWork.Task = new Class({
Extends: MPopupForm,
Implements: [Options, Events],
options: {
"style": "default",
"width": 1200,
"height": "90%",
"top": null,
"left": null,
"bottom" : null,
"right" : null,
"minWidth" : 300,
"minHeight" : 220,
"isLimitSize": true,
"ifFade": false,
"hasTop": false,
"hasTopIcon" : false,
"hasTopContent" : false,
"hasIcon": false,
"hasBottom": false,
"hasMask" : true,
"closeByClickMask" : false,
"hasScroll" : false,
"scrollType" : "",
"title": "",
"draggable": false,
"resizeable" : false,
"maxAction" : false,
"closeAction": false,
"relativeToApp" : true,
"sizeRelateTo" : "app", //desktop
"resultSeparator" : ","
},
initialize: function (explorer, data, options, para) {
this.setOptions(options);
if(this.options.type && this.options.type=="window"){
// this.options.width = "100%";
// this.options.height = "100%";
this.explorer = explorer;
this.app = explorer;
this.container = this.app.content;
this.openType = "window"
}else{
this.explorer = explorer;
this.app = this.explorer.app;
this.container = this.app.content;
this.openType = "dialog"
}
this.projectObj = this.explorer;
if(para){
if(para.projectObj) this.projectObj = para.projectObj
}
// this.explorer = explorer;
//
// this.app = this.explorer.app;
// this.container = this.app.content;
this.rootActions = this.app.rootActions;
this.actions = this.rootActions.TaskAction;
this.data = data || {};
this.css = {};
this.cssPath = "../x_component_TeamWork/$Task/"+this.options.style+"/css.wcss";
this.load();
this.lp = this.app.lp.task;
// this.lp = MWF.xApplication.TeamWork.LP.task;
},
close: function (data) {
//愤愤愤愤
this.fireEvent("queryClose");
this._close();
//if( this.form ){
// this.form.destroy();
//}
if(this.setFormNodeSizeFun && this.app && this.app.removeEvent ){
this.app.removeEvent("resize",this.setFormNodeSizeFun);
}
if( this.formMaskNode )this.formMaskNode.destroy();
if( this.formAreaNode )this.formAreaNode.destroy();
this.fireEvent("postClose",[data]);
delete this;
},
openTask:function(data){
//this.data.taskId = data.id;
//alert("id="+this.data.taskId)
// this.formAreaNode.setStyles({"opacity":"1"});
// var fx = new Fx.Tween(this.formAreaNode,{duration:400});
// fx.start(["opacity"] ,"1", "0");
var ef = new Fx.Morph(this.formAreaNode, {
duration: 200,
transition: Fx.Transitions.Sine.easeOut,
onStart:function(){},
onComplete:function(){
this._createTableContent();
}.bind(this)
});
ef.start({
'opacity': [1, 0]
});
//this.formAreaNode.setStyles({"opacity":0});
//this._createTableContent();
},
_createTableContent: function () {
//data { taskId:xxx }
var _self = this;
this.getTaskData(function(){
this.control = {};
this.control.isEdit = this.taskData.control.edit;
this.control.isDelete = this.taskData.control.delete;
this.control.isFounder = this.taskData.control.founder;
this.control.isCreate = true;
//this.control.comment = this.projectData.comment; 目前没启用
this.control.comment = true;
if(this.openType == "window"){
this.app.setTitle(this.taskData.name);
}
this.formTableArea.empty();
this.topLayout = new Element("div.topLayout",{styles:this.css.topLayout}).inject(this.formTableArea);
//this.topImage = new Element("div.topImage",{styles:this.css.topImage}).inject(this.topLayout);
this.topContent = new Element("div.topContent",{styles:this.css.topContent,text:this.taskData.name}).inject(this.topLayout);
if(this.isNew){
this.topContent.set("text",this.lp.newTask)
}
this.topContent.addEvents({
click:function(e){
//layout.openApplication(e,"TeamWork.Task",null,{"taskId":this.data.taskId})
}.bind(this)
})
this.topIconContainer = new Element("div.topIconContainer",{styles:this.css.topIconContainer}).inject(this.topLayout);
//更多
//权限
if(!this.projectData.deleted && !this.projectData.completed){
this.topIconMore = new Element("div.topIconMore",{styles:this.css.topIconMore,title:this.lp.more}).inject(this.topIconContainer);
this.topIconMore.addEvents({
click:function(){
var tm = new MWF.xApplication.TeamWork.Task.TaskMore(this.container, this.topIconMore, this.app, {data:this.taskData}, {
css:this.css, lp:this.lp, axis : "y",
position : { //node 固定的位置
x : "auto",
y : "middle"
},
nodeStyles : {
"min-width":"200px",
"padding":"2px",
"border-radius":"5px",
"box-shadow":"0px 0px 4px 0px #999999",
"z-index" : "201"
},
onPostLoad:function(){
tm.node.setStyles({"opacity":"0","top":(tm.node.getStyle("top").toInt()+4)+"px"});
var fx = new Fx.Tween(tm.node,{duration:400});
fx.start(["opacity"] ,"0", "1");
},
onClose:function(rd){
if(!rd) return;
if(rd.act == "remove"){
this.close(rd);
if(this.data.projectObj){ //reload project
this.data.projectObj.createTaskGroup()
}
}
}.bind(this)
},null,this);
tm.load();
}.bind(this),
mouseover:function(){
this.setStyles({"background-image":"url(../x_component_TeamWork/$Task/default/icon/icon_more_click.png)"});
},
mouseout:function(){
this.setStyles(_self.css.topIconMore)
}
});
}
//关闭
this.topIconClose = new Element("div.topIconClose",{styles:this.css.topIconClose,title:this.lp.close}).inject(this.topIconContainer);
this.topIconClose.addEvents({
click:function(){
this.close();
if(this.openType=="window"){
this.app.close();
}
}.bind(this),
mouseover:function(){
this.setStyles({"background-image":"url(../x_component_TeamWork/$Task/default/icon/icon_off_click.png)"});
},
mouseout:function(){
this.setStyles(_self.css.topIconClose)
}
});
this.contentLayout = new Element("div.contentLayout",{styles:this.css.contentLayout}).inject(this.formTableArea);
this.createContentLayout();
this.createDetailLayout();
this.formAreaNode.setStyles({"opacity":1})
}.bind(this));
},
createContentLayout:function(){
var _self = this;
this.taskInforContainer = new Element("div.taskInforContainer",{styles:this.css.taskInforContainer}).inject(this.contentLayout);
this.taskActionBar = new Element("div.taskActionBar",{styles:this.css.taskActionBar}).inject(this.taskInforContainer);
if(this.taskData.parent!="0"){
this.taskActionParentContent = new Element("div.taskActionParentContent").inject(this.taskActionBar);
this.taskActionParentIcon = new Element("div.taskActionParentIcon",{styles:this.css.taskActionParentIcon}).inject(this.taskActionParentContent);
this.taskActionParentText = new Element("div.taskActionParentText",{styles:this.css.taskActionParentText,text:this.lp.taskBelongText+":"}).inject(this.taskActionParentContent);
this.taskActionParentValue = new Element("div.taskActionParentValue",{styles:this.css.taskActionParentValue}).inject(this.taskActionParentContent);
this.actions.get(this.taskData.parent,function(json){
this.taskActionParentValue.set("text",json.data.name);
this.taskActionParentValue.addEvents({
click:function(){
this.data.taskId = json.data.id;
this.openTask()
}.bind(this)
});
}.bind(this))
}
// this.taskActionSave = new Element("div.taskActionSave",{styles:this.css.taskActionSave,text:this.lp.save}).inject(this.taskActionBar);
// this.taskActionSave.addEvents({
// click:function(){
// this.saveTaskData();
// }.bind(this),
// mouseover:function(){
// this.setStyles({
// "color":"#ffffff",
// "background-color":"#4A90E2",
// "border":"1px solid #4A90E2"
// })
// },
// mouseout:function(){
// this.setStyles(_self.css.taskActionSave)
// }
// });
this.taskInforLayout = new Element("div.taskInforLayout",{styles:this.css.taskInforLayout}).inject(this.taskInforContainer);
this.taskInforContent = new Element("div.taskInforContent",{styles:this.css.taskInforContent}).inject(this.taskInforLayout);
this.app.setScrollBar(this.taskInforContent);
//名称
this.taskNameContainer = Element("div.taskNameContainer",{styles:this.css.taskNameContainer}).inject(this.taskInforContent);
//状态
this.taskStatusContainer = Element("div.taskStatusContainer",{styles:this.css.taskStatusContainer}).inject(this.taskInforContent);
this.taskStatusIcon = Element("div.taskStatusIcon",{styles:this.css.taskStatusIcon}).inject(this.taskStatusContainer);
this.taskStatusText = Element("div.taskStatusText",{styles:this.css.taskStatusText,text:this.lp.taskStatus}).inject(this.taskStatusContainer);
this.taskStatusValue = Element("div.taskStatusValue",{styles:this.css.taskStatusValue}).inject(this.taskStatusContainer);
//责任人
this.taskDutyContainer = Element("div.taskDutyContainer",{styles:this.css.taskDutyContainer}).inject(this.taskInforContent);
this.taskDutyIcon = Element("div.taskDutyIcon",{styles:this.css.taskDutyIcon}).inject(this.taskDutyContainer);
this.taskDutyText = Element("div.taskDutyText",{styles:this.css.taskDutyText,text:this.lp.taskDuty}).inject(this.taskDutyContainer);
this.taskDutyValue = Element("div.taskDutyValue",{styles:this.css.taskDutyValue}).inject(this.taskDutyContainer);
//时间
this.taskTimeContainer = Element("div.taskTimeContainer",{styles:this.css.taskTimeContainer}).inject(this.taskInforContent);
this.taskTimeIcon = Element("div.taskTimeIcon",{styles:this.css.taskTimeIcon}).inject(this.taskTimeContainer);
this.taskTimeText = Element("div.taskTimeText",{styles:this.css.taskTimeText,text:this.lp.taskTime}).inject(this.taskTimeContainer);
this.taskTimeValue = Element("div.taskTimeValue",{styles:this.css.taskTimeValue}).inject(this.taskTimeContainer);
//备注
this.taskRemarkContainer = Element("div.taskRemarkContainer",{styles:this.css.taskRemarkContainer}).inject(this.taskInforContent);
this.taskRemarkIcon = Element("div.taskRemarkIcon",{styles:this.css.taskRemarkIcon}).inject(this.taskRemarkContainer);
this.taskRemarkText = Element("div.taskRemarkText",{styles:this.css.taskRemarkText,text:this.lp.taskRemark}).inject(this.taskRemarkContainer);
this.taskRemarkValue = Element("div.taskRemarkValue",{styles:this.css.taskRemarkValue}).inject(this.taskRemarkContainer);
//优先级
this.taskPriorityContainer = Element("div.taskPriorityContainer",{styles:this.css.taskPriorityContainer}).inject(this.taskInforContent);
this.taskPriorityIcon = Element("div.taskPriorityIcon",{styles:this.css.taskPriorityIcon}).inject(this.taskPriorityContainer);
this.taskPriorityText = Element("div.taskPriorityText",{styles:this.css.taskPriorityText,text:this.lp.taskPriority}).inject(this.taskPriorityContainer);
this.taskPriorityValue = Element("div.taskPriorityValue",{styles:this.css.taskPriorityValue}).inject(this.taskPriorityContainer);
//扩展字段
if(this.taskData.extFieldConfigs && this.taskData.extFieldConfigs.length>0){
this.taskExtFieldContainer = new Element("div.taskExtFieldContainer",{styles:this.css.taskExtFieldContainer}).inject(this.taskInforContent);
this.loadTaskExtField();
}
//标签
this.taskTagContainer = Element("div.taskTagContainer",{styles:this.css.taskTagContainer}).inject(this.taskInforContent);
this.taskTagIcon = Element("div.taskTagIcon",{styles:this.css.taskTagIcon}).inject(this.taskTagContainer);
this.taskTagText = Element("div.taskTagText",{styles:this.css.taskTagText,text:this.lp.taskTag}).inject(this.taskTagContainer);
this.taskTagValue = Element("div.taskTagValue",{styles:this.css.taskTagValue}).inject(this.taskTagContainer);
//附件 -- 换成其他样式
// this.taskAttachmentContainer = Element("div.taskAttachmentContainer",{styles:this.css.taskAttachmentContainer}).inject(this.taskInforContent);
// this.taskAttachmentIcon = Element("div.taskAttachmentIcon",{styles:this.css.taskAttachmentIcon}).inject(this.taskAttachmentContainer);
// this.taskAttachmentText = Element("div.taskAttachmentText",{styles:this.css.taskAttachmentText,text:this.lp.taskAttachment}).inject(this.taskAttachmentContainer);
// this.taskAttachmentValue = Element("div.taskAtchatBarEmojitachmentValue",{styles:this.css.taskAttachmentValue}).inject(this.taskAttachmentContainer);
//附件
this.taskAttachmentListContainer = new Element("div.taskAttachmentListContainer",{styles:this.css.taskAttachmentListContainer}).inject(this.taskInforContent);
this.loadTaskAttachmentListContainer();
this.setTaskData();
//this.setAuth();
//子任务
this.subTaskContainer = new Element("div.subTaskContainer",{styles:this.css.subTaskContainer}).inject(this.taskInforContent);
this.loadSubTaskContainer();
//占位
new Element("div",{styles:{"width":"100%","height":"100px"}}).inject(this.taskInforContent)
},
loadTaskExtField:function(){
this.taskData.extFieldConfigs.each(function(data){
this.loadTaskExtFieldItem(data);
}.bind(this))
},
loadTaskExtFieldItem:function(data){
var taskExtFieldItem = new Element("div.taskExtFieldItem",{styles:this.css.taskExtFieldItem}).inject(this.taskExtFieldContainer);
var taskExtFieldIcon = new Element("div.taskExtFieldIcon",{styles:this.css.taskExtFieldIcon}).inject(taskExtFieldItem);
var taskExtFieldText = new Element("div.taskExtFieldText",{styles:this.css.taskExtFieldText}).inject(taskExtFieldItem);
new Element("p",{styles:{
"justify-content": "center",
"align-items":"center"
},text:data.displayName}).inject(taskExtFieldText);
if(data.displayType.toUpperCase() == "TEXT"){
}
},
createDetailLayout:function(){
this.taskDetailLayout = new Element("div.taskDetailLayout",{styles:this.css.taskDetailLayout}).inject(this.contentLayout);
this.taskParticipateContainer = new Element("div.taskParticipateContainer",{styles:this.css.taskParticipateContainer}).inject(this.taskDetailLayout);
this.createParticipateContainer();
this.taskDynamicContainer = new Element("div.taskDynamicContainer",{styles:this.css.taskDynamicContainer}).inject(this.taskDetailLayout);
this.createDynamicContainer();
this.taskChatContainer = new Element("div.taskChatContainer",{styles:this.css.taskChatContainer}).inject(this.taskDetailLayout);
this.createChatContainer();
},
createParticipateContainer:function(){
this.taskParticipateContainer.empty();
this.participateTitle = new Element("div.participateTitle",{styles:this.css.participateTitle}).inject(this.taskParticipateContainer);
this.participateTitleText = new Element("div.participateTitleText",{styles:this.css.participateTitleText}).inject(this.participateTitle);
if(this.control.isEdit){
this.participateTitleIcon = new Element("div.participateTitleIcon",{styles:this.css.participateTitleIcon,title:this.lp.taskReaderAdd}).inject(this.participateTitle);
this.participateTitleIcon.addEvents({
click:function(){
this.selectPerson(this.participateTitleIcon,null,["identity","unit"],0,
function(json){
if(json.length>0){
this.taskData.participantList = this.taskData.participantList.concat(json);
//this.actions.updateParticipantList(this.taskData.id,{participantList:this.taskData.participantList},function(json){
this.actions.updateParticipant(this.taskData.id,{participantList:this.taskData.participantList},function(json){
if(json.data.dynamics){
json.data.dynamics.each(function(dd){
this.loadDynamicItem(dd,"bottom")
}.bind(this))
}
this.dynamicContent.scrollTo(0,this.dynamicContent.getScrollSize().y);
this.createParticipateContainer();
}.bind(this))
}
}.bind(this)
);
}.bind(this)
});
}
this.participateValue = new Element("div.participateValue",{styles:this.css.participateValue}).inject(this.taskParticipateContainer);
this.setScrollBar(this.participateValue);
if(this.taskData.participantList){
count = this.taskData.participantList.length;
this.participateTitleText.set("text",this.lp.taskReader + " . " + count);
this.taskData.participantList.each(function(d){
var flag = true;
if(this.taskData.executor){
if(d === this.taskData.executor) flag = false
}
this.loadparticipantPerson(this.participateValue,d,flag);
}.bind(this));
}
},
createDynamicContainer:function(){
var _self = this;
this.taskDynamicContainer.empty();
this.dynamicBar = new Element("div.dynamicBar",{styles:this.css.dynamicBar}).inject(this.taskDynamicContainer);
this.dynamicBar.addEvents({
mouseover:function(){
this.dynamicText.setStyle("color","#4a90e2");
this.dynamicIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_dw_click.png)")
}.bind(this),
mouseout:function(){
this.dynamicText.setStyle("color","#666666");
this.dynamicIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_dw.png)")
}.bind(this),
click:function(){
var pc = new MWF.xApplication.TeamWork.Task.DynamicType(this.container, this.dynamicBar, this.app, {data:this.taskData}, {
css:this.css, lp:this.lp, axis : "y",
position : { //node 固定的位置
x : "right",
y : "middle"
},
nodeStyles : {
"min-width":"150px",
"padding":"2px",
"border-radius":"5px",
"box-shadow":"0px 0px 4px 0px #999999",
"z-index" : "201"
},
onPostLoad:function(){
pc.node.setStyles({"opacity":"0","top":(pc.node.getStyle("top").toInt()-6)+"px","left":(pc.node.getStyle("left").toInt()+10)+"px"});
var fx = new Fx.Tween(pc.node,{duration:400});
fx.start(["opacity"] ,"0", "1");
},
onClose:function(rd){
if(!rd) return;
if(rd.value == "all"){
filter = {};
this.dynamicText.set("text",this.lp.dynamicAll)
}else if(rd.value == "chat"){
filter = {objectType:"CHAT"};
this.dynamicText.set("text",this.lp.dynamicChat)
}else if(rd.value == "attachment"){
this.dynamicText.set("text",this.lp.dynamicAttachment)
filter = {objectType:"ATTACHMENT"};
}
this.dynamicContent.empty();
this.dyncurCount = 0;
this.createDynamicContent(null,filter,function(){
this.dynamicContent.scrollTo(0,this.dynamicContent.getScrollSize().y);
this.getDynamicStatus = false;
}.bind(this))
}.bind(this)
});
pc.load();
}.bind(this),
});
this.dynamicText = new Element("div.dynamicText",{styles:this.css.dynamicText,text:this.lp.dynamicAll}).inject(this.dynamicBar);
this.dynamicIcon = new Element("div.dynamicIcon",{styles:this.css.dynamicIcon}).inject(this.dynamicBar);
this.dynamicContent = new Element("div.dynamicContent",{styles:this.css.dynamicContent}).inject(this.taskDynamicContainer);
var filter = {};
var _y = this.dynamicContent.getScrollSize().y;
this.dynamicContent.addEvents({
scroll:function(){
if(this.getScrollTop()==0){
//alert("top")
//加载下一页
if(_self.getDynamicStatus) return;
if(_self.dyncurCount>=_self.dyntotal) return;
_self.createDynamicContent(_self.curDynamicId,filter,function(){
_self.dynamicContent.scrollTo(0,_y);
_self.getDynamicStatus = false;
});
}
}
});
this.createDynamicContent(null,filter,function(){
this.dynamicContent.scrollTo(0,this.dynamicContent.getScrollSize().y);
this.getDynamicStatus = false;
}.bind(this));
},
createDynamicContent:function(id,data,callback){
this.getDynamicStatus = true;
var _self = this, id = id || "(0)", count = 15, taskId = this.taskData.id;
this.curDynamicId = id;
//this.dyntotal = 0;
this.dyncurCount = this.dyncurCount || 0;
this.tmpdynamicLoading = new Element("div").inject(this.dynamicContent,"top");
this.app.setLoading(this.tmpdynamicLoading);
this.rootActions.DynamicAction.listNextWithTask(id,count,taskId,data||{},function(json){
//this.actions.taskDynamicListNext(id,count,taskId,data||{},function(json){
if(this.tmpdynamicLoading)this.tmpdynamicLoading.destroy();
//this.getDynamicStatus = false;
if(json.type == "success"){
this.dyntotal = json.count;
json.data.each(function(d,i){
this.curDynamicId = d.id;
this.loadDynamicItem(d);
}.bind(this));
if(callback)callback(json)
}
}.bind(this))
},
loadDynamicItem:function(data,where){
this.dyncurCount = this.dyncurCount + 1;
var dynamicItem = new Element("div.dynamicItem",{styles:this.css.dynamicItem}).inject(this.dynamicContent,where||"top");
var dynamicItemIcon = new Element("div.dynamicItemIcon",{styles:this.css.dynamicItemIcon}).inject(dynamicItem);
var optType = data.optType.toUpperCase();
var objectType = data.objectType.toUpperCase();
if(objectType == "CHAT"){
//if(optType.toUpperCase() == "PUBLISH"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_chat.png)")
//}
}else if(objectType == "ATTACHMENT"){
if(optType == "DELETE"){ //UPLOAD、DOWNLOAD、DELETE
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_remove.png)")
}else{
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_attachment.png)")
}
}else if(objectType == "TASK"){
//UPDATE_NAME、UPDATE_EXECUTOR、UPDATE_STATUS、UPDATE_TIME、UPDATE_PROGRESS、ADD_TAGS、REMOVE_TAGS、
//ADD_MANAGER、REMOVE_MANAGER、ADD_PARTICIPANTS、REMOVE_PARTICIPANTS、CREATE、DELETE
if(optType=="SPLIT"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_subtask.png)")
}else if(optType=="DELETE_SUBTASK"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_remove.png)")
}else if(optType=="UPDATE_EXECUTOR"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_duty.png)")
}else if(optType=="UPDATE_NAME"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_title.png)")
}else if(optType=="UPDATE_WORKSTATUS"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_status.png)")
}else if(optType=="UPDATE_WORKDATE"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_time.png)")
}else if(optType=="UPDATE_DESCRIPTION"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_remark.png)")
}else if(optType=="ADD_PARTICIPANTS" || optType == "REMOVE_PARTICIPANTS"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_participant.png)")
}else if(optType=="CREATE"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_jia.png)")
}else{
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_edit.png)")
}
}else if(objectType=="TASK_TAG"){
if(optType=="REMOVE"){
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_remove.png)")
}else{
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/dy_tag.png)")
}
}
var dynamicItemText = new Element("div.dynamicItemText",{styles:this.css.dynamicItemText}).inject(dynamicItem);
if(objectType == "CHAT"){
new Element("div.dynamicItemUser",{styles:this.css.dynamicItemUser,text:data.operator.split("@")[0]}).inject(dynamicItemText);
var chattext = data.description.split("\n").join("
");
//转换表情
for(var item in this.app.lp.emoji){
var val = this.app.lp.emoji[item]; //alert(val)
chattext = chattext.split("["+val+"]").join('');
}
new Element("div.dynamicItemUserChat",{styles:{"margin-top":"5px"},html:chattext}).inject(dynamicItemText);
}else{
dynamicItemText.set("text",data.description);
}
var dynamicItemTime = new Element("div.dynamicItemTime",{styles:this.css.dynamicItemTime}).inject(dynamicItem);
dynamicItemTime.set("text",this.compareWithNow(data.createTime).text);
//最后加一层清除浮动
new Element("div.dynamicItemTime",{styles:{"clear":"both"}}).inject(dynamicItem);
},
createChatContainer:function(){
this.taskChatContainer.empty();
var node = this.taskChatContainer;
this.chatContent = new Element("div.chatContent",{styles:this.css.chatContent}).inject(node);
this.chatTextarea = new Element("textarea.chatTextarea",{styles:this.css.chatTextarea,placeholder:this.lp.chatPlaceholder}).inject(this.chatContent);
if(this.control.comment){
this.chatTextarea.addEvents({
keypress:function(e){
var keycode = (e.event.keyCode ? e.event.keyCode : e.event.which);
if (e.event.ctrlKey && (keycode == 13 || keycode == 10)) {
this.chatBarSend.click();
}
}.bind(this)
});
}else{
this.chatTextarea.erase("placeholder");
}
this.chatBarContent = new Element("div.chatBarContent",{styles:this.css.chatBarContent}).inject(node);
this.chatBarTool = new Element("div.chatBarTool",{styles:this.css.chatBarTool}).inject(this.chatBarContent);
this.chatBarEmoji = new Element("div.chatBarEmoji",{styles:this.css.chatBarEmoji,title:this.lp.chatInsertEmoji}).inject(this.chatBarTool);
this.chatBarEmoji.addEvents({
mouseover:function(){this.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_emoji_click.png)")},
mouseout:function(){this.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_emoji.png)")},
click:function(){
MWF.xDesktop.requireApp("TeamWork", "Emoji", function(){
var pc = new MWF.xApplication.TeamWork.Emoji(this,this.container, this.chatBarEmoji, this.app, {}, {
css:this.css, lp:this.lp, axis : "y",
position : { //node 固定的位置
x : "right",
y : "middle"
},
nodeStyles : {
"min-width":"200px",
"max-width":"350px",
"height":"150px",
"padding":"2px",
"border-radius":"5px",
"box-shadow":"0px 0px 4px 0px #999999",
"z-index" : "201"
},
onPostLoad:function(){
pc.node.setStyles({"opacity":"0","top":(pc.node.getStyle("top").toInt())+"px"});
var fx = new Fx.Tween(pc.node,{duration:400});
fx.start(["opacity"] ,"0", "1");
},
onClose:function(rd){
if(!rd) return;
if(rd.value && rd.value !=""){
this.chatTextarea.set("value",this.chatTextarea.get("value")+"["+rd.value+"]");
this.chatTextarea.focus();
}
}.bind(this)
});
pc.load();
}.bind(this))
}.bind(this)
});
this.chatBarSend = new Element("div.chatBarSend",{styles:this.css.chatBarSend,text:this.lp.chatSend}).inject(this.chatBarContent);
if(this.control.comment) {
this.chatBarSend.addEvents({
click:function(){
if(this.chatTextarea.get("value").trim()=="") return;
var data = {
taskId : this.taskData.id,
content : this.chatTextarea.get("value").trim()
};
//this.actions.chatCreate(data,function(json){
this.rootActions.ChatAction.create(data,function(json){
if(json.data.id){
this.rootActions.ChatAction.get(json.data.id,function(json){
var person = json.data.sender;
var content = json.data.content;
var dynamicItem = new Element("div.dynamicItem",{styles:this.css.dynamicItem}).inject(this.dynamicContent);
var dynamicItemIcon = new Element("div.dynamicItemIcon",{styles:this.css.dynamicItemIcon}).inject(dynamicItem);
dynamicItemIcon.setStyle("background-image","url(../x_component_TeamWork/$Task/default/icon/icon_chat.png)")
var dynamicItemText = new Element("div.dynamicItemText",{styles:this.css.dynamicItemText}).inject(dynamicItem);
new Element("div.dynamicItemUser",{styles:this.css.dynamicItemUser,text:person.split("@")[0]}).inject(dynamicItemText);
var chattext = content.split("\n").join("
");
for(var item in this.app.lp.emoji){
var val = this.app.lp.emoji[item];
chattext = chattext.split("["+val+"]").join('');
}
new Element("div.dynamicItemUserChat",{styles:{"margin-top":"5px"},html:chattext}).inject(dynamicItemText);
var dynamicItemTime = new Element("div.dynamicItemTime",{styles:this.css.dynamicItemTime}).inject(dynamicItem);
dynamicItemTime.set("text","刚刚");
new Element("div.dynamicItemTime",{styles:{"clear":"both"}}).inject(dynamicItem);
this.dynamicContent.scrollTo(0,this.dynamicContent.getScrollSize().y);
}.bind(this))
}
this.createChatContainer()
}.bind(this))
}.bind(this)
})
}else{
this.chatBarSend.setStyles({"cursor":"not-allowed"});
}
},
addDynamicItem:function(){
},
getTaskData:function(callback){
if(this.data.taskId){
//this.actions.taskGet(this.data.taskId,function(json){
this.actions.get(this.data.taskId,function(json){
if(json.data) {
this.taskData = json.data;
this.getProject(this.taskData.project,function(){
if(callback)callback()
}.bind(this))
}
}.bind(this))
}
},
setTaskData:function(){
var _self = this;
//名称
if(this.taskNameContainer){
this.loadNameValue();
}
//状态
if(this.taskStatusValue){
this.loadStatusValue()
}
//负责人
if(this.taskDutyValue){
this.loadDutyValue()
}
//时间
if(this.taskTimeContainer){
this.loadTimeValue()
}
//备注
if(this.taskRemarkContainer){
this.loadRemarkValue()
}
//优先级
if(this.taskPriorityValue){
this.loadPriorityValue()
}
//标签
if(this.taskTagValue){
this.loadTagValue()
}
//附件
if(this.taskAttachmentValue){
this.loadAttachment(this.taskAttachmentValue)
}
},
saveTaskData:function(callback) {
if(this.editor){
this.taskData.description = encodeURI(this.editor.getData());
}
this.actions.save(this.taskData,function(json){
if(this.editor) delete this.editor;
//alert(JSON.stringify(json));
this.reload();
//刷新project区域内的task,可能有更新,删除等 干脆直接载入区域
var data = {
"act":"save",
"taskId":json.data.id
};
this.reloadOutContent(data);
}.bind(this))
},
reloadOutContent:function(json){
if(json.act == "save"){
//保存操作,刷新task即可
var taskNode = this.explorer.container.getElementById(json.taskId);
if(!taskNode) return;
this.actions.get(json.taskId,function(d){
this.explorer.loadTaskNode(taskNode,d.data)
}.bind(this));
}
},
updateSingleProperty:function(data,callback){
//this.actions.updateSingleProperty(data.taskId,data,function(json){
this.actions.updateSingleProperty(data.taskId,data,function(json){
if(json.data.dynamics){
json.data.dynamics.each(function(dd){
this.loadDynamicItem(dd,"bottom");
}.bind(this))
}
this.dynamicContent.scrollTo(0,this.dynamicContent.getScrollSize().y);
if(callback)callback(json.data)
}.bind(this))
},
loadNameValue:function(){ //名称
var _self = this;
this.taskNameContainer.set("text",this.taskData.name);
if(this.control.isEdit){ //权限修改
var node = this.taskNameContainer;
var nameEdit = false;
var overStatus = null;
node.addEvents({
mouseenter:function(){
overStatus = window.setTimeout(function(){
var opt={ axis: "y", position : { x : "auto", y : "top"} };
//_self.app.showTips(node,{_html:"