| 1 |
- MWF.xApplication.Org.List=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",action:false,canEdit:true,data:{name:"",attributeList:[""]},attr:[],saveAction:"savePersonAttribute",deleteAction:"removePersonAttribute",deleteItemTitle:MWF.xApplication.Org.LP.deleteAttributeTitle,deleteItemText:MWF.xApplication.Org.LP.deleteAttribute},_loadPath:function(){this.path="/x_component_Org/$List/";this.cssPath="/x_component_Org/$List/"+this.options.style+"/css.wcss"},initialize:function(t,e,i){this.setOptions(i);this._loadPath();this._loadCss();this.content=e;this.contentNode=$(t);this.items=[];this.selectedItems=[]},load:function(t){this.headers=t;var e="<table cellspacing='0' cellpadding='5' border='0' width='80%' align='center' style='line-height:normal; clear: both;'>";e+="<tr><th style='width:20px'></th>";t.each(function(t){e+="<th style='"+t.style+"'>"+t.text+"</th>"}.bind(this));e+="</table>";this.contentNode.set("html",e);this.loadAction();this.table=new HtmlTable(this.contentNode.getFirst("table"));this.contentNode.getElements("th").setStyles(this.css.listTitle)},loadAction:function(){this.actionAreaNode=new Element("div",{styles:this.css.actionAreaNode}).inject(this.contentNode,"top");if(this.options.action){this.actionNode=new Element("div",{styles:this.css.actionNode}).inject(this.actionAreaNode);this.deleteAction=new Element("div",{styles:this.css.deleteActionNode_disabled,text:this.content.explorer.app.lp.delete}).inject(this.actionNode);this.addAction=new Element("div",{styles:this.css.addActionNode,text:this.content.explorer.app.lp.add}).inject(this.actionNode);this.addAction.addEvent("click",function(){this.addItem()}.bind(this));this.deleteAction.addEvent("click",function(t){this.deleteItem(t)}.bind(this))}},addItem:function(){var t=Object.clone(this.options.data);var e=new MWF.xApplication.Org.List.Item(t,this.options.attr,this);this.items.push(e);e.edit(e.tr.tds[1])},deleteItem:function(t){if(this.selectedItems.length){this.fireEvent("queryDelete");var e=this;debugger;this.content.explorer.app.confirm("infor",t,this.options.deleteItemTitle,this.options.deleteItemText,350,120,function(){this.close();var t=0;var i=function(){if(t===e.selectedItems.length){var i=true;e.fireEvent("delete",i);if(i){while(e.selectedItems.length){var s=e.selectedItems[0];s.destroy()}}e.fireEvent("postDelete",t)}};e.selectedItems.each(function(e){e["delete"](function(){t++;i()})}.bind(this))},function(){this.close()})}},push:function(t){var e=this.items.push(new MWF.xApplication.Org.List.Item(t,this.options.attr,this));return this.items[e-1]},setAction:function(){if(this.selectedItems.length){this.deleteAction.setStyles(this.css.deleteActionNode)}else{this.deleteAction.setStyles(this.css.deleteActionNode_disabled)}},clear:function(){this.items=[];this.selectedItems=[];var t=this.contentNode.getFirst("table");while(t.rows.length>1){t.rows[t.rows.length-1].destroy()}}});MWF.xApplication.Org.List.Item=new Class({initialize:function(t,e,i){this.data=t;this.attr=e;this.list=i;this.css=this.list.css;this.load()},reload:function(t){this.data=t;this.tr.tds.each(function(t,e){if(e===0)this.selectTd=t;if(e>0){var i=this.attr[e-1];if(typeOf(i)==="object"){if(i.get){t.set("html",i.get.apply(this.data))}else{t.set("text","")}}else if(typeOf(i)==="string"){if(i==="icon"){t.set("html","<div></div>")}else{t.set("text",this.data[i])}}else{t.set("text","")}if(i.events){if(i.events["init"])i.events["init"].apply({item:this,data:this.data,td:t,item:this})}}t.setStyles(this.css.contentTdNode);t.set("title",t.get("text"))}.bind(this))},load:function(){var t=[""];this.attr.each(function(e){if(typeOf(e)==="object"){if(e.get){t.push(e.get.apply(this.data))}else{t.push("")}}else if(typeOf(e)==="string"){if(e==="icon"){t.push("<div>cc</div>")}else{t.push(this.data[e])}}else{t.push("")}}.bind(this));this.tr=this.list.table.push(t,{styles:this.css.contentTrNode});this.tr.tr.store("data",this.data);var e=this;this.tr.tds.each(function(t,i){t.setStyles(this.css.contentTdNode);t.set("title",t.get("text"));if(i===0)this.selectTd=t;if(i>0){if(this.list.options.action||this.list.options.canEdit){t.store("attr",this.attr[i-1]);t.addEvent("click",function(){e.edit(this)})}var s=this.attr[i-1];if(s.events){t.removeEvents("click");Object.each(s.events,function(e,i){if(key.toLowerCase!=="init")t.addEvent(i,e.bind({data:this.data,td:t,item:this}))}.bind(this));if(s.events["init"])s.events["init"].apply({item:this,data:this.data,td:t,item:this})}}}.bind(this));if(this.list.options.action){this.selectTd.setStyles(this.css.selectTdNode);this.selectTd.addEvent("click",function(){if(!this.isSelected){this.selected()}else{this.unSelected()}}.bind(this))}else{this.selectTd.setStyles(this.css.blankTdNode)}},edit:function(t){var e=t.retrieve("attr");var i=t.get("text");t.empty();var s=new Element("input",{styles:this.css.inputNode,value:i}).inject(t);t.removeEvents("click");var n=this;s.focus();s.addEvents({blur:function(){var s=this.get("value");if(s){if(typeOf(e)==="object"){if(e.set){e.set.apply(n.data,[s])}}else if(typeOf(e)==="string"){n.data[e]=s}}n.editCompleted(t,s,i)}})},editCompleted:function(t,e,i){t.empty();if(!e&&!i){if(t.cellIndex===1){this.destroy()}}else if(!e){if(t.cellIndex===1){t.set("text",i)}else{t.set("text",e);if(e!==i)this.save(t)}}else{t.set("text",e);if(e!==i)this.save(t)}var s=this;if(this.list.options.canEdit){t.addEvent("click",function(){s.edit(this)})}},delete:function(t){this.list.content.explorer.actions[this.list.options.deleteAction](this.data.id,function(){if(t)t()}.bind(this))},destroy:function(){debugger;this.list.items.erase(this);if(this.isSelected)this.unSelected();this.list.setAction();this.tr.tr.destroy();MWF.release(this)},save:function(t){this.list.content.explorer.actions[this.list.options.saveAction](this.data,function(t){this.list.fireEvent("postSave",[this,t.data.id]);this.data.id=t.data.id}.bind(this),function(e,i,s){t.set("text","");this.edit(t);this.list.content.explorer.app.notice(JSON.decode(e.responseText).message.trim()||"request json error","error")}.bind(this))},selected:function(){this.selectTd.setStyles(this.css.selectTdNode_selected);this.tr.tr.setStyles(this.css.contentTrNode_selected);this.list.selectedItems.push(this);this.isSelected=true;this.list.setAction()},unSelected:function(){this.selectTd.setStyles(this.css.selectTdNode);this.tr.tr.setStyles(this.css.contentTrNode);this.list.selectedItems.erase(this);this.isSelected=false;this.list.setAction()}});
|