| 1 |
- MWF.xApplication.process=MWF.xApplication.process||{};MWF.xApplication.process.Application=MWF.xApplication.process.Application||{};MWF.require("MWF.widget.Mask",null,false);MWF.xDesktop.requireApp("process.Application","ViewExplorer",null,false);MWF.xApplication.process.Application.StatExplorer=new Class({Extends:MWF.xApplication.process.Application.ViewExplorer,Implements:[Options,Events],initialize:function(t,e,s){this.setOptions(s);this.setTooltip();this.path="/x_component_process_Application/$WorkExplorer/";this.cssPath="/x_component_process_Application/$WorkExplorer/"+this.options.style+"/css.wcss";this._loadCss();this.actions=e;this.node=$(t);this.items=[]},loadContentNode:function(){this.filterNode.setStyles(this.css.statListNode);this.elementContentNode=new Element("div",{styles:this.css.elementContentNode}).inject(this.node);this.elementContentListNode=new Element("div",{styles:this.css.elementContentListNode}).inject(this.elementContentNode);this.createWorkListHead();this.setContentSize();this.setContentSizeFun=this.setContentSize.bind(this);this.app.addEvent("resize",this.setContentSizeFun)},setContentSize:function(){var t=this.node.getSize();var e=this.elementContentNode.getStyle("padding-top").toFloat();var s=this.elementContentNode.getStyle("padding-bottom").toFloat();var i=this.filterNode.getSize();var a=t.y-e-s-i.y;this.elementContentNode.setStyle("height",""+a+"px");this.pageCount=(a/40).toInt()+5},showMask:function(){if(!this.mask){this.mask=new MWF.widget.Mask({style:"desktop"});this.mask.loadNode(this.node)}},hideMask:function(){if(this.mask){this.mask.hide();this.mask=null}},loadViewList:function(){this.actions.listStat(this.app.options.id,function(t){if(t.data.length){t.data.each(function(t){this.loadViewListNode(t)}.bind(this));this.hideMask();if(this.currentView){this.currentView.click()}else{this.items[0].click()}}else{this.filterNode.destroy();var e=new Element("div",{styles:this.css.noElementNode,text:this.app.lp.noStat}).inject(this.elementContentListNode);this.hideMask()}}.bind(this))},_getLnkPar:function(t){return{icon:this.path+this.options.style+"/statIcon/lnk.png",title:t.name,par:'process.Application#{"navi": 3, "id": "'+this.app.options.id+'", "viewName": "'+t.name+'", "hideMenu": true}'}},loadViewData:function(t){this.showMask();this.items.each(function(t){t.setStyles(this.css.filterViewNode)}.bind(this));t.setStyles(this.css.filterViewNode_current);this.elementContentListNode.empty();if(this.stat){this.stat.destroy();this.stat=null}var e=t.retrieve("view");this.actions.loadStat(e.id,this.app.options.id,null,function(t){if(t.data.calculate.isGroup){this.stat=new MWF.xApplication.process.Application.StatExplorer.GroupStat(this,t.data)}else{this.stat=new MWF.xApplication.process.Application.StatExplorer.Stat(this,t.data)}this.hideMask()}.bind(this))},destroy:function(){if(this.stat){this.stat.destroy()}this.node.destroy();MWF.release(this)}});MWF.xApplication.process.Application.StatExplorer.Stat=new Class({initialize:function(t,e){this.explorer=t;this.data=e;this.css=this.explorer.css;this.lp=this.explorer.app.lp;this.node=this.explorer.elementContentListNode;this.load()},load:function(){this.chartAreaNode=new Element("div",{styles:this.css.statChartAreaNode}).inject(this.node);this.tableAreaNode=new Element("div",{styles:this.css.statTableAreaNode}).inject(this.node);this.loadData();this.createTable();this.createChart()},loadData:function(){var t={};this.data.selectEntryList.each(function(e){t[e.column]=e}.bind(this))},createChart:function(){this.chartNode=new Element("div",{styles:this.css.statChartNode}).inject(this.chartAreaNode);this.loadChart();this.resizeChartFun=this.resizeChart.bind(this);this.explorer.app.addEvent("resizeCompleted",this.resizeChartFun);this.explorer.app.addEvent("postMaxSize",this.resizeChartFun);this.explorer.app.addEvent("postRestoreSize",this.resizeChartFun)},resizeChart:function(){if(this.bar)this.bar.destroy();this.bar=null;this.chartNode.empty();this.loadChart()},loadChart:function(){MWF.require("MWF.widget.chart.Bar",function(){this.bar=new MWF.widget.chart.Bar(this.chartNode,this.data.calculateGrid,"displayName",{delay:0,style:"monthly"});this.bar.addBar("value");this.bar.addEvents({mouseover:function(t,e,s,i){e.filter(function(t,e){return e==i}).attr("display","block");var a=t.filter(function(t,e){return e==i});var l=a.attr("fill");a.node().store("color",l);a.attr("fill","brown")}.bind(this),mouseout:function(t,e,s,i){e.filter(function(t,e){return e==i}).attr("display","none");var a=t.filter(function(t,e){return e==i});var l=a.node().retrieve("color");a.attr("fill",l)}.bind(this)});this.bar.load()}.bind(this))},createTable:function(){this.createTableHead();this.createTableData()},createTableHead:function(){this.table=new Element("table",{styles:this.css.statTableNode,width:"100%",border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.node);this.headTr=new Element("tr").inject(this.table);this.data.calculate.calculateEntryList.each(function(t){var e=new Element("th",{styles:this.css.statHeadTh,text:t.displayName}).inject(this.headTr)}.bind(this))},createTableData:function(){if(this.data.calculateGrid.length){var t=new Element("tr").inject(this.table);this.data.calculateGrid.each(function(e){var s=new Element("td",{styles:this.css.statContentTdNode}).inject(t);s.set("text",e.value)}.bind(this))}},destroy:function(){if(this.bar)this.bar.destroy();if(this.resizeChartFun){this.explorer.app.removeEvent("resizeCompleted",this.resizeChartFun);this.explorer.app.removeEvent("postMaxSize",this.resizeChartFun);this.explorer.app.removeEvent("postRestoreSize",this.resizeChartFun)}MWF.release(this)}});MWF.xApplication.process.Application.StatExplorer.GroupStat=new Class({Extends:MWF.xApplication.process.Application.StatExplorer.Stat,loadData:function(){var t={};var e=null;this.data.selectEntryList.each(function(s){t[s.column]=s;if(s.column===this.data.groupEntry.column){e=s}}.bind(this));this.data.calculateGrid.each(function(s){if(e){s.group=e.code?MWF.Macro.exec(e.code,{value:s.group,data:this.data}):s.group}s.list.each(function(e){e.value=t[e.column].code?MWF.Macro.exec(t[e.column].code,{value:e.value,data:this.data}):e.value}.bind(this))}.bind(this))},createChart:function(){this.chartFlagNode=new Element("div",{styles:this.css.statChartFlagAreaNode}).inject(this.chartAreaNode);this.chartNode=new Element("div",{styles:this.css.statChartNode}).inject(this.chartAreaNode);this.loadChart();this.resizeChartFun=this.resizeChart.bind(this);this.explorer.app.addEvent("resizeCompleted",this.resizeChartFun);this.explorer.app.addEvent("postMaxSize",this.resizeChartFun);this.explorer.app.addEvent("postRestoreSize",this.resizeChartFun)},resizeChart:function(){if(this.bar)this.bar.destroy();this.bar=null;this.chartFlagNode.empty();this.chartNode.empty();this.loadChart()},loadChart:function(){if(!this.selectedData)this.selectedData=this.data.calculateGrid;if(!this.selectedData.length)this.selectedData=this.data.calculateGrid;MWF.require("MWF.widget.chart.Bar",function(){this.flag=[];this.bar=new MWF.widget.chart.Bar(this.chartNode,this.selectedData,"group",{delay:0,style:"monthly"});if(this.selectedData.length){this.selectedData[0].list.each(function(t,e){this.flag.push({name:t.displayName,color:this.bar.colors[e]});this.bar.addBar(function(t){return t.list[e].value})}.bind(this))}this.bar.addEvents({mouseover:function(t,e,s,i){e.filter(function(t,e){return e==i}).attr("display","block");var a=t.filter(function(t,e){return e==i});var l=a.attr("fill");a.node().store("color",l);a.attr("fill","brown")}.bind(this),mouseout:function(t,e,s,i){e.filter(function(t,e){return e==i}).attr("display","none");var a=t.filter(function(t,e){return e==i});var l=a.node().retrieve("color");a.attr("fill",l)}.bind(this)});this.bar.load();this.loadFlags()}.bind(this))},loadFlags:function(){this.flag.each(function(t,e){this.loadFlag(t,e)}.bind(this))},loadFlag:function(t,e){var s=new Element("div",{styles:this.css.ststChartFlagNode}).inject(this.chartFlagNode);var i=new Element("div",{styles:this.css.ststChartFlagColorNode}).inject(s);i.setStyle("background-color",t.color);var a=new Element("div",{styles:this.css.ststChartFlagNameNode}).inject(s);a.set("text",t.name);a.set("title",t.name);s.store("idx",e);s.store("barColor",t.color);var l=this;s.addEvents({mouseover:function(){this.getFirst().setStyles(l.css.ststChartFlagColorNode_over);var t=this.retrieve("idx");l.highlightBar(t)},mouseout:function(){this.getFirst().setStyles(l.css.ststChartFlagColorNode);var t=this.retrieve("idx");var e=this.retrieve("barColor");l.unHighlightBar(t,e)}})},createDefs:function(t,e){var s=t.append(e.tag);Object.each(e.attrs,function(t,e){s.attr(e,t)});if(e.subs){e.subs.each(function(t){this.createDefs(s,t)}.bind(this))}},createHighlightDefs:function(t){var e=this.bar.svg.append("defs");var s=this.bar.css["rect_over_defs"];this.createDefs(e,s);e.select(function(){return this.getFirst()}).attr("id",t);e.attr("id","defs_"+t)},unHighlightBar:function(t,e){var s="rect_over_defs"+t;var i=d3.select("#defs_"+s);i.remove();var a=this.bar.rectCluster[t];a.attr(this.bar.css["rect_over_defs"].urlAttr,null);var l=this.bar.textCluster[t];l.attr("display","none");l.attr("font-weight","normal")},highlightBar:function(t){this.bar.rectCluster[t].remove();var e=this.recreateBars(t);var s="rect_over_defs"+t;this.createHighlightDefs(s);e.attr(this.bar.css["rect_over_defs"].urlAttr,"url(#"+s+")");var i=this.bar.textCluster[t];i.attr("display","block");i.attr("font-weight","bold")},recreateBars:function(t){var e=this.data.calculateGrid.map(function(e,s){return{name:e["group"],data:e.list[t].value}}.bind(this));this.bar.rectClass=Math.round(Math.random()*100);var s=this.bar.xScale.bandwidth()/this.bar.barsData.length;var i=this.bar.group.selectAll(".MWFBar_"+this.bar.rectClass+"_"+t).data(e).enter().append("rect").attr("class",".MWFBar_"+this.bar.rectClass+"_"+t).attr("x",function(e){return this.xScale(e.name)+t*s}.bind(this.bar)).attr("width",s).attr("height",function(t){return this.size.y-this.yScale(t.data)}.bind(this.bar)).attr("y",function(t){return this.yScale(t.data)}.bind(this.bar)).attr("fill",this.bar.colors[t]);this.bar.rectCluster[t]=i;this.bar.setEvents();return i},createTableHead:function(){this.selectedCols=[];this.selectedRows=[];this.table=new Element("table",{styles:this.css.statTableNode,width:"100%",border:"0",cellPadding:"0",cellSpacing:"0"}).inject(this.node);_self=this;this.headTr=this.table.insertRow();this.selectAllTd=this.headTr.insertCell().setStyles(this.css.statAllSelectTd).set("title",this.explorer.app.lp.selecteAll);this.selectAllTd.addEvent("click",function(){_self.selectAll(this)});this.selectEntryTd=this.headTr.insertCell().setStyles(this.css.statAllColSelectTd).set("title",this.explorer.app.lp.selecteAllCol);this.selectEntryTd.addEvent("click",function(){_self.selectAllCol(this)});this.data.calculate.calculateEntryList.each(function(t){selectTd=this.headTr.insertCell().setStyles(this.css.statColSelectTd);selectTd.addEvent("click",function(){_self.selectCol(this)})}.bind(this));this.titleTr=this.table.insertRow();this.selectGroupTd=this.titleTr.insertCell().setStyles(this.css.statAllRowSelectTd).set("title",this.explorer.app.lp.selecteAllRow);this.categoryTitleTd=new Element("th",{styles:this.css.statHeadTh,text:this.data.calculate.title||this.explorer.app.lp.category}).inject(this.titleTr);this.categoryTitleTd.setStyle("width","160px");this.data.calculate.calculateEntryList.each(function(t){var e=new Element("th",{styles:this.css.statHeadTh,text:t.displayName}).inject(this.titleTr)}.bind(this))},createTableData:function(){if(this.data.calculateGrid.length){var t=this;var e=null;for(var s=0;s<this.data.selectEntryList.length;s++){if(this.data.selectEntryList[s].column===this.data.groupEntry.column){e=this.data.selectEntryList[s];break}}this.data.calculateGrid.each(function(s){var i=this.table.insertRow();var a=i.insertCell().setStyles(this.css.statRowSelectTd);a.addEvent("click",function(){t.selectRow(this)});var l=s.group;if(e){l=e.code?MWF.Macro.exec(e.code,{value:s.group,data:this.data}):s.group}var r=new Element("th",{styles:this.css.statHeadTh,text:l}).inject(i);s.list.each(function(t){var e=new Element("td",{styles:this.css.statContentTdNode}).inject(i);e.set("text",t.value);this.setDragEvent(e)}.bind(this))}.bind(this))}},setDragEvent:function(t){new Drag(t,{onStart:function(t,e){this.cellDragStart(t,e)}.bind(this),onDrag:function(t,e){this.cellDrag(t,e)}.bind(this),onComplete:function(t,e){this.completeDrag(t,e)}.bind(this)});var e=this;t.addEvent("click",function(){var s=t.cellIndex-2;var i=t.getParent("tr").rowIndex-2;if(e.checkIsSelected(s,i)){}else{debugger;if(e.selectedCols.length||e.selectedRows.length){e.selectAll()}}})},cellDragStart:function(t,e){var s=t.getPosition();var i=t.getSize();t.store("start",{x:s.x,y:s.y});t.store("start2",{x:s.x+i.x,y:s.y+i.y})},getSelectedCells:function(t,e,s){var i=s.page.x-e.x;var a=s.page.y-e.y;var l=t.getSize();var r=(i/l.x).toInt();var n=(a/l.y).toInt();return{cols:r,rows:n}},cellDrag:function(t,e){this.selectedRows=[];this.selectedCols=[];this.selectedData=[];var s=t.retrieve("start");var i=t.retrieve("start2");var a=this.getSelectedCells(t,s,e);var l=this.getSelectedCells(t,i,e);var r=Math.abs(a.cols)>Math.abs(l.cols)?a.cols:l.cols;var n=Math.abs(a.rows)>Math.abs(l.rows)?a.rows:l.rows;var h=t.cellIndex-2;var o=t.getParent("tr").rowIndex-2;if(!h||h<0)h=0;if(!o||o<0)o=0;var c=h+r;var d=o+n;if(d>o){for(var u=o;u<=d;u++)this.selectedRows.push(u)}else{for(var u=d;u<=o;u++)this.selectedRows.push(u)}if(c>h){for(var u=h;u<=c;u++)this.selectedCols.push(u)}else{for(var u=c;u<=h;u++)this.selectedCols.push(u)}this.checkSelectedCells()},completeDrag:function(t,e){var s=this.table.getElements("tr");var i=s[0].getElements("td");this.selectedCols.each(function(t){i[t+2].setStyles(this.css.statTableSelectedTd)}.bind(this));this.selectedRows.each(function(t){s[t+2].getElement("td").setStyles(this.css.statTableSelectedTd)}.bind(this));this.reloadChart()},selectCol:function(t){var e=t.cellIndex;var s=e-2;if(this.selectedCols.indexOf(s)!=-1){t.setStyles(this.css.statTableSelectTd);this.selectedCols.erase(s)}else{t.setStyles(this.css.statTableSelectedTd);this.selectedCols.push(s)}this.checkSelectedCells();this.reloadChart()},selectRow:function(t){var e=t.getParent("tr");var s=e.rowIndex;var i=s-2;if(this.selectedRows.indexOf(i)!=-1){t.setStyles(this.css.statTableSelectTd);this.selectedRows.erase(i)}else{t.setStyles(this.css.statTableSelectedTd);this.selectedRows.push(i)}this.checkSelectedCells();this.reloadChart()},selectAllCol:function(){if(this.selectedCols.length){this.selectedCols=[];var t=this.table.getElements("tr");var e=t[0].getElements("td");for(var s=2;s<e.length;s++){e[s].setStyles(this.css.statTableSelectTd)}}else{var i=this.table.getElements("tr");var a=i[0].getElements("td");for(var l=2;l<a.length;l++){this.selectedCols.push(l-2);a[l].setStyles(this.css.statTableSelectedTd)}}this.checkSelectedCells();this.reloadChart()},selectAll:function(){if(this.selectedRows.length||this.selectedCols.length){this.selectedRows=[];this.selectedCols=[];var t=this.table.getElements("tr");var e=t[0].getElements("td");for(var s=2;s<e.length;s++){e[s].setStyles(this.css.statTableSelectTd)}for(var i=2;i<t.length;i++){t[i].getElement("td").setStyles(this.css.statTableSelectTd)}}else{var a=this.table.getElements("tr");var l=a[0].getElements("td");for(var r=2;r<l.length;r++){this.selectedCols.push(r-2);l[r].setStyles(this.css.statTableSelectedTd)}for(var n=2;n<a.length;n++){this.selectedRows.push(n-2);a[n].getElement("td").setStyles(this.css.statTableSelectedTd)}}this.checkSelectedCells();this.reloadChart()},checkIsSelected:function(t,e){if(!this.selectedCols.length&&!this.selectedRows.length)return false;var s=!this.selectedCols.length||this.selectedCols.indexOf(t)!=-1;var i=!this.selectedRows.length||this.selectedRows.indexOf(e)!=-1;return s&&i},checkSelectedCells:function(){this.selectedData=[];var t=this.table.getElements("tr");for(var e=2;e<t.length;e++){var s={group:this.data.calculateGrid[e-2].group,list:[]};var i=t[e].getElements("td");for(var a=1;a<i.length;a++){if(this.checkIsSelected(a-1,e-2)){i[a].setStyles(this.css.statContentTdNode_selected);s.list.push({column:this.data.calculateGrid[e-2].list[a-1].column,displayName:this.data.calculateGrid[e-2].list[a-1].displayName,value:this.data.calculateGrid[e-2].list[a-1].value})}else{i[a].setStyles(this.css.statContentTdNode)}}if(s.list.length)this.selectedData.push(s)}},reloadChart:function(){if(this.bar)this.bar.destroy();this.bar=null;this.chartFlagNode.empty();this.chartNode.empty();this.loadChart()}});MWF.xApplication.process.Application.StatExplorer.GroupStat.Select=new Class({});
|