Orgfield.min.js 10 KB

1
  1. MWF.xDesktop.requireApp("process.Xform","Personfield",null,false);MWF.require("MWF.widget.O2Identity",null,false);MWF.xDesktop.requireApp("Selector","package",null,false);MWF.xApplication.process.Xform.Orgfield=MWF.APPOrgfield=new Class({Extends:MWF.APPPersonfield,iconStyle:"orgfieldIcon",loadDescription:function(){var t=this._getBusinessData();if(!t||!t.length){if(this.json.description){var e=this.node.getFirst().getSize();var i=e.x-3;if(COMMON.Browser.safari)i=i-20;this.descriptionNode=new Element("div",{styles:this.form.css.descriptionNode,text:this.json.description}).inject(this.node);this.descriptionNode.setStyles({width:""+i+"px",height:""+e.y+"px","line-height":""+e.y+"px"});this.setDescriptionEvent()}}},setDescriptionEvent:function(){if(this.descriptionNode){this.descriptionNode.addEvents({mousedown:function(){this.descriptionNode.setStyle("display","none");this.clickSelect()}.bind(this)})}},_loadUserInterface:function(){this.field=true;this._loadNode();if(this.json.compute=="show"){this._setValue(this._computeValue())}else{this._loadValue()}},_loadNode:function(){if(this.readonly||this.json.isReadonly){this._loadNodeRead()}else{this._getOrgOptions();if(this.json.isInput){this._loadNodeInputEdit()}else{this._loadNodeEdit()}}},_getOrgOptions:function(){var t=typeOf(this.json.selectType)=="array"?this.json.selectType:[this.json.selectType];if(t.contains("unit")||t.contains("identity")){this.selectUnits=this.getSelectRange();if(this.json.range!=="all"){if(!selectUnits.length){this.form.notice(MWF.xApplication.process.Xform.LP.noSelectRange,"error",this.node);return false}}}else{this.selectUnits=[]}},_loadNodeRead:function(){this.node.empty();this.node.setStyle("overflow","hidden");var t=new Element("div").inject(this.node)},_searchConfirmPerson:function(t){var e=t.inforNode||new Element("div");if(t.data){var i="";var s=t.data.distinguishedName.substr(t.data.distinguishedName.length-1,1);switch(s.toLowerCase()){case"i":i=t.data.name+"("+t.data.unitName+")";break;case"p":i=t.data.name+(t.data.employee?"("+t.data.employee+")":"");break;case"u":i=t.data.levelName;break;case"g":i=t.data.name;break;default:i=t.data.name}e.set({styles:{"font-size":"14px",color:""},text:i})}else{e.set({styles:{"font-size":"14px",color:"#bd0000"},text:MWF.xApplication.process.Xform.LP.noOrgObject})}if(!t.inforNode){new mBox.Tooltip({content:e,setStyles:{content:{padding:15,lineHeight:20}},attach:t.node,transition:"flyin"});t.inforNode=e}},_searchOptions:function(t,e){var i=typeOf(this.json.selectType)=="array"?this.json.selectType:[this.json.selectType];var s={type:"",types:i,units:this.selectUnits,unitType:this.json.selectUnitType==="all"?"":this.json.selectUnitType};if(!this.comboxFilter)this.comboxFilter=new MWF.O2SelectorFilter(t,s);this.comboxFilter.filter(t,function(t){t.map(function(t){var e=Object.clone(t);t.value=e;var i=t.distinguishedName.substr(t.distinguishedName.length-1,1);switch(i.toLowerCase()){case"i":t.text=t.name+"("+t.unitName+")";break;case"p":t.text=t.name+(t.employee?"("+t.employee+")":"");break;case"u":t.text=t.name;break;case"g":t.text=t.name;break;default:t.text=t.name}});if(e)e(t)})},_loadNodeInputEdit:function(){var t=null;MWF.require("MWF.widget.Combox",function(){this.combox=t=new MWF.widget.Combox({count:this.json.count||0,splitShow:this.json.splitShow||", ",onCommitInput:function(t){this._searchConfirmPerson(t)}.bind(this),onChange:function(){this._setBusinessData(this.getInputData());this.fireEvent("change")}.bind(this),optionsMethod:this._searchOptions.bind(this)})}.bind(this),false);t.setStyles({background:"transparent",border:"0px"});t.set(this.json.properties);var e=new Element("div",{styles:{overflow:"hidden","margin-right":"20px"}}).inject(this.node,"after");t.inject(e);this.node.destroy();this.node=e;this.node.set({id:this.json.id,MWFType:this.json.type});if(this.json.showIcon!="no")this.iconNode=new Element("div",{styles:this.form.css[this.iconStyle],events:{click:this.clickSelect.bind(this)}}).inject(this.node,"before");this.combox.addEvent("change",function(){this.validationMode();if(this.validation())this._setBusinessData(this.getInputData("change"))}.bind(this))},_loadNodeEdit:function(){var t=this.input=new Element("div",{styles:{background:"transparent",border:"0px","min-height":"20px"}});t.set(this.json.properties);var e=new Element("div",{styles:{overflow:"hidden",position:"relative","min-height":"20px","margin-right":"20px"}}).inject(this.node,"after");t.inject(e);this.node.destroy();this.node=e;this.node.set({id:this.json.id,MWFType:this.json.type,readonly:true});if(!this.readonly){this.node.setStyle("cursor","pointer");this.node.addEvents({click:this.clickSelect.bind(this)});if(this.json.showIcon!="no")this.iconNode=new Element("div",{styles:{background:"url("+"/x_component_process_Xform/$Form/default/icon/selectorg.png) center center no-repeat",width:"18px",height:"18px",float:"right"}}).inject(this.node,"before");if(this.iconNode){this.iconNode.setStyle("cursor","pointer");this.iconNode.addEvents({click:this.clickSelect.bind(this)})}}},getValue:function(){var t=this._getBusinessData();if(typeOf(t)==="array"){if(t.length===0)t=this._computeValue()}else if(!t){t=this._computeValue()}return t||""},getData:function(t){if(this.json.compute=="save")this._setValue(this._computeValue());return this._getBusinessData()},getInputData:function(){if(this.json.isInput){if(this.combox)return this.combox.getData();return this._getBusinessData()}else{return this._getBusinessData()}},addData:function(t){if(!t)return false;t.each(function(t){var e=typeOf(t);if(e==="string"){var i;this.getOrgAction()[this.getValueMethod(t)](function(t){i=t.data}.bind(this),null,t,false);if(i)this.combox.addNewValue(this.getDataText(i),i)}if(e==="object"){this.combox.addNewValue(this.getDataText(t),t)}}.bind(this))},setData:function(t){this._setValue(t)},_computeValue:function(){var i=[];if(this.json.identityValue){this.json.identityValue.each(function(t){if(t)i.push(t)})}if(this.json.unitValue){this.json.unitValue.each(function(t){if(t)i.push(t)})}if(this.json.defaultValue&&this.json.defaultValue.code){var t=this.form.Macro.exec(this.json.defaultValue.code,this);if(typeOf(t)!=="array")t=t?[t]:[];t.each(function(t){if(t){if(typeOf(t)==="string"){var e;this.getOrgAction()[this.getValueMethod(t)](function(t){e=t.data}.bind(this),null,t,false);i.push(e)}else{i.push(t)}}}.bind(this))}if(this.json.count>0){return i.slice(0,this.json.count)}return i},_getBusinessData:function(){if(this.json.section=="yes"){var t=this._getBusinessSectionData()}else{var t=this.form.businessData.data[this.json.id]||""}if(typeOf(t)!="array"){if(t)return[t];return[]}else{return t}},creteShowNode:function(t,e){var i=t.text?t.text:t;if(!e)i=i+(this.json.splitStr||", ");var s=new Element("div",{styles:{float:"left","margin-right":"5px"},text:i});var n="";if(t.value){var o=t.value.distinguishedName.substr(t.value.distinguishedName.length-1,1);switch(o.toLowerCase()){case"i":n=t.value.name+"("+t.value.unitName+")";break;case"p":n=t.value.name+(t.value.employee?"("+t.value.employee+")":"");break;case"u":n=t.value.levelName;break;case"g":n=t.value.name;break;default:n=t.value.name}var a=new Element("div").set({styles:{"font-size":"14px",color:""},text:n});new mBox.Tooltip({content:a,setStyles:{content:{padding:15,lineHeight:20}},attach:s,transition:"flyin"})}return s},_setValue:function(t){if(t.length==1&&!t[0])t=[];var n=[];var o=[];var e=typeOf(t);if(e==="array"){t.each(function(t){var e=null;var i=typeOf(t);if(i==="string"){var s=this.json.isInput?function(){o.push(t)}:null;this.getOrgAction()[this.getValueMethod(t)](function(t){e=t.data}.bind(this),s,t,false)}if(i==="object")e=t;if(e){n.push(e);o.push({text:this.getDataText(e),value:e})}}.bind(this))}if(e==="string"){var i;var s=this.json.isInput?function(){o.push(t)}:null;this.getOrgAction()[this.getValueMethod(t)](function(t){i=t.data}.bind(this),s,t,false);if(i){n.push(i);o.push({text:this.getDataText(i),value:i})}}if(e==="object"){n.push(t);o.push({text:this.getDataText(t),value:t})}this._setBusinessData(t);if(this.json.isInput){if(this.combox){this.combox.addNewValues(o)}else{var a=this.node.getFirst();if(a){o.each(function(t,e){this.creteShowNode(t,e===o.length-1).inject(a)}.bind(this))}}}else{var h=this.node.getFirst();if(!h){h=this.node}h.empty();this.loadOrgWidget(n,h)}},loadOrgWidget:function(t,s){var n={style:"xform",canRemove:false,onRemove:this.removeItem};t.each(function(t){if(t.distinguishedName){var e=t.distinguishedName.substr(t.distinguishedName.length-1,1);switch(e.toLowerCase()){case"i":var i=new MWF.widget.O2Identity(t,s,n);break;case"p":var i=new MWF.widget.O2Person(t,s,n);break;case"u":var i=new MWF.widget.O2Unit(t,s,n);break;case"g":var i=new MWF.widget.O2Group(t,s,n);break;default:var i=new MWF.widget.O2Other(t,s,n)}i.field=this;if(layout.mobile){i.node.setStyles({float:"none"})}}}.bind(this))},removeItem:function(t,e){var i=this.field;var s=this.data.distinguishedName;var n=i._getBusinessData();var o;n.each(function(t,e){if(t.distinguishedName==s){o=e}});n.splice(o,1);i._setBusinessData(n);this.node.destroy();e.stopPropagation()},_loadValue:function(){this._setValue(this.getValue())},clickSelect:function(){this.validationMode();var t=this.json.count?this.json.count:0;var e=typeOf(this.json.selectType)=="array"?this.json.selectType:[this.json.selectType];var i=this.selectUnits;if(!e[0]){this.form.notice(MWF.xApplication.process.Xform.LP.noSelectType,"error",this.node);return false}var s={type:"",types:e,values:this.json.isInput?[]:this._getBusinessData(),count:t,units:i,unitType:this.json.selectUnitType==="all"?"":this.json.selectUnitType,onComplete:function(t,e){var i=[];t.each(function(t){i.push(MWF.org.parseOrgData(t.data))});if(this.json.isInput){this.addData(i)}else{this.setData(i)}this.validation()}.bind(this),onCancel:function(){this.validation()}.bind(this),onLoad:function(){if(this.descriptionNode)this.descriptionNode.setStyle("display","none")}.bind(this),onClose:function(){var t=this.getInputData();if(!t||!t.length)if(this.descriptionNode)this.descriptionNode.setStyle("display","block")}.bind(this)};var n=new MWF.O2Selector(this.form.app.content,s)},_loadStyles:function(){if(this.readonly||this.json.isReadonly){if(this.json.styles)this.node.setStyles(this.json.styles)}else{if(this.json.styles)this.node.setStyles(this.json.styles);if(this.json.inputStyles)if(this.node.getFirst())this.node.getFirst().setStyles(this.json.inputStyles);if(this.iconNode){var t=this.node.getSize();this.iconNode.setStyle("height",""+t.y+"px")}}}});