MWF.xApplication.Execution = MWF.xApplication.Execution || {};
MWF.xDesktop.requireApp("Template", "MPopupForm", null, false);
MWF.xDesktop.requireApp("Template", "MForm", null, false);
MWF.xDesktop.requireApp("Execution", "WorkForm", null, false);
MWF.xApplication.Execution.StatForm = new Class({
Extends: MPopupForm,
Implements: [Options, Events],
options: {
//"centerWorkId" : "fc44be47-7271-469f-8f04-deebdb71d3e6",
"style": "default",
"width": "90%",
"height": "90%",
"hasTop": true,
"hasIcon": false,
"hasBottom": true,
"title": "",
"draggable": false,
"closeAction": true,
"isNew": false,
"isEdited": true
},
initialize: function (explorer, actions, data, options) {
this.setOptions(options);
this.explorer = explorer;
this.app = explorer.app;
this.lp = this.app.lp.statForm;
this.actions = this.app.restActions;
this.path = "/x_component_Execution/$StatForm/";
this.cssPath = this.path + this.options.style + "/css.wcss";
this._loadCss();
this.options.title = this.lp.title;
this.data = data || {};
this.actions = actions;
},
load: function () {
this.centerWorkId = this.options.centerWorkId;
this.centerWorkData = {};
this.getCenterWork(this.centerWorkId);
if (this.options.isNew) {
this.create();
} else if (this.options.isEdited) {
this.edit();
} else {
this.open();
}
this.resizeWindow();
this.app.addEvent("resize", function(){
this.resizeWindow();
}.bind(this));
},
resizeWindow: function(){
var size = this.formNode.getSize();
var rW = this.formTopContentNode.getWidth();
this.formTopTextNode.setStyles({"width":(size.x-rW-200)+"px"});
},
//*****************common function**************************************
getCenterWork: function(centerWorkId){
this.actions.getMainTask(centerWorkId,function(json){
this.centerWorkData = json.data;
}.bind(this),function(xhr,text,error){
this.showErrorMsg(xhr,text,error)
}.bind(this),false)
},
//*****************common function**************************************
createTopNode: function () {
if (!this.formTopNode) {
this.formTopNode = new Element("div.formTopNode", {
"styles": this.css.formTopNode
}).inject(this.formNode);
this.formTopIconNode = new Element("div", {
"styles": this.css.formTopIconNode
}).inject(this.formTopNode);
this.formTopTextNode = new Element("div.formTopTextNode", {
"styles": this.css.formTopTextNode,
"text": this.centerWorkData.title ? this.centerWorkData.title: this.options.title
}).inject(this.formTopNode);
if (this.options.closeAction) {
this.formTopCloseActionNode = new Element("div.formTopCloseActionNode", {"styles": this.css.formTopCloseActionNode}).inject(this.formTopNode);
this.formTopCloseActionNode.addEvent("click", function () {
this.close()
}.bind(this))
}
this.formTopContentNode = new Element("div.formTopContentNode", {
"styles": this.css.formTopContentNode
}).inject(this.formTopNode);
this._createTopContent();
}
},
_createTopContent: function () {
if(this.centerWorkData.title){
var html = ""+this.lp.topTitle.drafter+":" +
" "+this.centerWorkData.creatorName.split("@")[0]+""+
" "+this.lp.topTitle.department+":"+
" "+this.centerWorkData.creatorUnitName.split("@")[0]+""+
" "+this.lp.topTitle.createTime+":"+
" "+this.centerWorkData.createTime.split(" ")[0]+"";
this.formTopContentNode.set("html", html);
}
},
_createTableContent: function (data) {
this.createWeeklyList();
//this.createStatView();
},
createWeeklyList: function(){
this.weeklyContentDiv = new Element("div.weeklyContentDiv", {
"styles": this.css.weeklyContentDiv
}).inject(this.formTableArea);
var weeklyTitleDiv = new Element("div.weeklyTitleDiv", {
"styles": this.css.weeklyTitleDiv,
"text": this.lp.weeklyTitle
}).inject(this.weeklyContentDiv);
this.weeklyListDiv = new Element("div.weeklyListDiv", {
"styles": this.css.weeklyListDiv
}).inject(this.weeklyContentDiv);
this.loadWeeklyList();
},
loadWeeklyList: function(){
var filterData = {
"centerId":this.centerWorkData.id,
"order":"DESC"
};
this.actions.getStatDateList(filterData,function(json){
if(json.type == "success"){
this.weeklyData = json.data
}
}.bind(this),
function(xhr,text,error){
this.showErrorMsg(xhr,text,error)
}.bind(this),false
);
if(!this.weeklyData || this.weeklyData.length==0){
var weeklyListLi = new Element("li.weeklyListLi",{
"styles":this.css.weeklyListLi,
"text": "未生成汇报统计"
}).inject(this.weeklyListDiv);
return false;
}
this.weeklyData.each(function(d,i){
var weeklyListLi = new Element("li.weeklyListLi",{
"styles":this.css.weeklyListLi,
"text": d.datetime,
"title": d.reportCycle
}).inject(this.weeklyListDiv);
weeklyListLi.addEvents({
"click":function(){
this.weeklyListDiv.getElements("li").setStyles({"background-color":"","color":""});
weeklyListLi.setStyles({"background-color":"#3c76c1","color":"#ffffff"});
this.displayDateStat(d);
this.currentWeeklyLi = weeklyListLi;
this.currentWeeklyData = d;
}.bind(this),
"mouseover":function(){
weeklyListLi.setStyles({"border":"1px solid #3c76c1"})
}.bind(this),
"mouseout":function(){
weeklyListLi.setStyles({"border":""})
}.bind(this)
});
if(i==0){
this.currentWeeklyLi = weeklyListLi;
}
}.bind(this));
//var sendData = {}
//sendData.centerId = this.centerWorkId
//sendData.reportCycle = "每周统计"
//this.actions.getStatListForCenterWork(sendData,function(json){
// if(json.data){
// this.weeklyData = json.data;
// }
//}.bind(this),function(xhr,text,error) {
// this.showErrorMsg(xhr,text,error)
//}.bind(this),false)
//if(!this.weeklyData) return false;
//this.weeklyData.each(function(d,index){
// //alert(JSON.stringify(d))
// if(d.week){
// var statDate = d.statisticTime.split(" ")[0]
// var weeklyListLi = new Element("li.weeklyListLi",{
// "styles":this.css.weeklyListLi,
// "text": statDate
// }).inject(this.weeklyListDiv);
// weeklyListLi.addEvents({
// "click":function(){
// this.weeklyListDiv.getElements("li").setStyles({"background-color":"","color":""})
// weeklyListLi.setStyles({"background-color":"#3c76c1","color":"#ffffff"})
// this.createStatView(d.id);
// this.currentWeeklyLi = weeklyListLi
// this.currentWeeklyData = d;
// }.bind(this),
// "mouseover":function(){
// weeklyListLi.setStyles({"border":"1px solid #3c76c1"})
// }.bind(this),
// "mouseout":function(){
// weeklyListLi.setStyles({"border":""})
// }.bind(this)
// })
// if(index==0){
// this.currentWeeklyLi = weeklyListLi;
// }
// }
//}.bind(this))
if(this.currentWeeklyLi) this.currentWeeklyLi.click()
},
createStatView : function(d){
if(this.statViewDiv) this.statViewDiv.destroy();
this.statViewDiv = new Element("div.statViewDiv", {
"styles": this.css.statViewDiv
}).inject(this.formTableArea);
var statViewTitleDiv = new Element("div.statViewTitleDiv", {
"styles": this.css.statViewTitleDiv,
"text": this.lp.statViewTitle
}).inject(this.statViewDiv);
this.statViewListDiv = new Element("div.statViewListDiv", {
"styles": this.css.statViewListDiv
}).inject(this.statViewDiv);
this.loadStatView(d)
},
displayDateStat: function(d,id){
if(this.statViewListDiv) this.statViewListDiv.empty();
if(d){
var filterData = {
"statisticTimeFlag": d.datetime,
"centerId":this.centerWorkData.id
};
if(this.statViewListDiv) this.statViewListDiv.set("text","loading...");
this.actions.getStatDate(filterData,function(json){
if(json.type == "success"){
this.dateStatData = json.data;
this.displayDateStatTable()
}
}.bind(this),
function(xhr,text,error){
this.showErrorMsg(xhr,text,error)
}.bind(this),true
)
}
},
displayDateStatTable:function(){
if(this.dateStatData){
if(this.statViewListDiv) this.statViewListDiv.destroy();
this.statViewListDiv = new Element("div.statViewListDiv", {
"styles": this.css.statViewListDiv
}).inject(this.formTableArea);
//var y = this.formTableArea.getSize().y - this.weeklyContentDiv.getSize().y
//alert(y)
//this.statViewListDiv.setStyles({"height":(y-50)+"px"})
this.statTable = new Element("table.statTable",{
"styles":this.css.statTable
}).inject(this.statViewListDiv);
//this.statTable.set("border","1")
this.statHeadTr = new Element("tr.statHeadTr",{
"styles":this.css.statHeadTr
}).inject(this.statTable);
for(var o in this.lp.statTable){
var statHeadTd = new Element("td.statHeadTd",{
"styles": this.css.statHeadTd,
"text":this.lp.statTable[o]
}).inject(this.statHeadTr);
}
this.dateStatData.each(function(d,i){
if(d.contents && d.contents.length>0){
d.contents.each(function(dd,ii){
var baseTr = new Element("tr.baseTr").inject(this.statTable);
for(var o in this.lp.statTable){
//if(o!="order"){
var val = "";
if(o=="opinions") {
if(dd[o]){
dd[o].each(function(ddd){
val = val + ddd.processorName.split("@")[0] + ":\n"+ ddd.opinion +"\n"
})
}
}else if(o == "responsibilityUnitName"){
val = dd[o];
val = val.split("@")[0];
}else{
if(dd[o])val = dd[o]
}
var baseTd = new Element("td.dateStatBaseTd",{
"styles": this.css.dateStatBaseTd,
"html": val.length>50?val.substring(0,50)+"...":val,
"title":val
}).inject(baseTr);
if(o=="serialNumber"){
baseTd.setStyles({"width":"35px","text-align":"center"})
}
if(o=="responsibilityUnitName"){
baseTd.setStyles({"width":"87px"});
val = val.split("@")[0]
}
if(o=="workDetail"){
}
}
}.bind(this))
}
}.bind(this))
}
},
loadStatView: function(d){
this.statTable = new Element("table.statTable",{
"styles":this.css.statTable
}).inject(this.statViewListDiv);
//this.statTable.set("border","1")
this.statHeadTr = new Element("tr.statHeadTr",{
"styles":this.css.statHeadTr
}).inject(this.statTable);
for(var o in this.lp.statTable){
var statHeadTd = new Element("td.statHeadTd",{
"styles": this.css.statHeadTd,
"text":this.lp.statTable[o]
}).inject(this.statHeadTr);
}
if(!parentWorkId) parentWorkId = "(0)";
this.actions.getStatByWorkId(id,parentWorkId,function(json){
json.data.each(function(d,index){
var statBodyTr = new Element("tr.statBodyTr",{
"styles": this.css.statBodyTr
}).inject(this.statTable);
var statBodyTd = new Element("td.statBodyTd",{
"styles": this.css.statBodyTd,
"text":(index+1),
"id": d.workId
}).inject(statBodyTr);
statBodyTd.setStyles({"width":"35px","text-align":"center"});
for(var o in this.lp.statTable){
if(o!="order"){
var val = "";
if(o=="opinions") {
if(d[o]){
d[o].each(function(dd){
val = val + dd.processorName.split("@")[0] + ":
"+ dd.opinion +"
"
})
}
}else{
val = d[o]
}
statBodyTd = new Element("td.statBodyTd",{
"styles": this.css.statBodyTd,
"html": val.length>50?val.substring(0,50)+"...":val,
"title":val
}).inject(statBodyTr);
if(o=="organizationName"){
statBodyTd.setStyles({"width":"87px"})
}
if(o=="workDetail"){
//statBodyTd.setStyles({"cursor":"pointer","color":"#3d77c1","text-decoration":"underline"})
statBodyTd.addEvents({
"click":function(){
this.loadSubStat(id, d.workId,statBodyTr);
//this.actions.getStatByWorkId(id, d.workId,function(json){
//
//}.bind(this),function(xhr,text,error){
// this.showErrorMsg(xhr,text,error)
//}.bind(this),false)
}.bind(this)
})
}
}
}
}.bind(this))
}.bind(this),function(xhr,text,error){
this.showErrorMsg(xhr,text,error)
}.bind(this),false)
},
loadSubStat:function(id,parentWorkId,position){
var curPosition = position.getElementById(parentWorkId).get("text");
this.actions.getStatByWorkId(id,parentWorkId,function(json){
this.subStatData = json.data;
json.data.each(function(d,index){
if(document.getElementById(d.workId)) {
return false;
}
var statBodyTr = new Element("tr.statBodyTr",{
"styles": this.css.statBodyTr
}).inject(position,"after");
var statBodyTd = new Element("td.statBodyTd",{
"styles": this.css.statBodyTd,
"text":curPosition + "."+(this.subStatData.length-index),
"id": d.workId
}).inject(statBodyTr);
for(var o in this.lp.statTable){
if(o!="order"){
var val = "";
if(o=="opinions") {
if(d[o]){
d[o].each(function(dd){
val = val + dd.processorName.split("@")[0] + ":
"+ dd.opinion +"
"
})
}
}else{
val = d[o]
}
statBodyTd = new Element("td.statBodyTd",{
"styles": this.css.statBodyTd,
"html": val.length>50?val.substring(1,50)+"...":val,
"title":val
}).inject(statBodyTr);
if(o=="workDetail"){
//statBodyTd.setStyles({"cursor":"pointer","color":"#3d77c1","text-decoration":"underline"})
statBodyTd.addEvents({
"click":function(){
this.loadSubStat(id, d.workId);
}.bind(this)
})
}
}
}
}.bind(this))
}.bind(this),function(xhr,text,error){
this.showErrorMsg(xhr,text,error)
}.bind(this),false
)
},
_createBottomContent: function () {
if(this.formBottomNode) this.formBottomNode.empty();
this.closeActionNode = new Element("div.closeActionNode", {
"styles": this.css.formActionNode,
"text": this.lp.actions.close
}).inject(this.formBottomNode);
this.closeActionNode.addEvents({
click:function(){
this.close()
}.bind(this)
});
this.exportActionNode = new Element("div.exportActionNode", {
"styles": this.css.formActionNode,
"text": this.lp.actions.export
}).inject(this.formBottomNode);
this.exportActionNode.addEvents({
click:function(){
var sendData = {};
sendData.centerId = this.centerWorkId;
sendData.statisticTimeFlag = this.currentWeeklyData.datetime;
sendData.reportCycle = this.currentWeeklyData.reportCycle;
this.actions.exportByCenterWork(sendData,function(json){
if(json.data && json.data.id){
var address = this.actions.action.address;
var url = address + "/jaxrs/export/statisticreportcontent/"+json.data.id+"/stream"
window.open(url)
}
}.bind(this),
function(xhr,text,error){
this.showErrorMsg(xhr,text,error)
}.bind(this),false)
}.bind(this)
})
},
showErrorMsg: function(xhr,text,error){
var errorText = error;
if (xhr) errorMessage = xhr.responseText;
var e = JSON.parse(errorMessage);
if (e.message) {
this.app.notice(e.message, "error");
} else {
this.app.notice(errorText, "error");
}
}
});