IdentityWidthDuty.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. MWF.xApplication.Selector = MWF.xApplication.Selector || {};
  2. MWF.xDesktop.requireApp("Selector", "Identity", null, false);
  3. MWF.xApplication.Selector.IdentityWidthDuty = new Class({
  4. Extends: MWF.xApplication.Selector.Identity,
  5. options: {
  6. "style": "default",
  7. "count": 0,
  8. "title": MWF.xApplication.Selector.LP.selectIdentity,
  9. "dutys": [],
  10. "units": [],
  11. "values": [],
  12. "zIndex": 1000,
  13. "expand": false,
  14. "expandSubEnable": true,
  15. "exclude" : []
  16. },
  17. loadSelectItems: function(addToNext){
  18. if (this.options.dutys.length){
  19. this.options.dutys.each(function(duty){
  20. var data = {"name": duty, "id":duty};
  21. var category = this._newItemCategory("ItemCategory",data, this, this.itemAreaNode);
  22. //category.loadSub();
  23. //category.clickItem();
  24. // this.action.getUnitduty(function(dutyData){
  25. // var category = this._newItemCategory("ItemCategory", dutyData.data, this, this.itemAreaNode);
  26. // }.bind(this), null, duty);
  27. }.bind(this));
  28. }
  29. },
  30. search: function(){
  31. var key = this.searchInput.get("value");
  32. if (key){
  33. this.initSearchArea(true);
  34. this.searchInItems(key);
  35. }else{
  36. this.initSearchArea(false);
  37. }
  38. },
  39. listPersonByPinyin: function(node){
  40. this.searchInput.focus();
  41. var pinyin = this.searchInput.get("value");
  42. pinyin = pinyin+node.get("text");
  43. this.searchInput.set("value", pinyin);
  44. this.search();
  45. },
  46. checkLoadSelectItems: function(){
  47. if (!this.options.units.length){
  48. this.loadSelectItems();
  49. }else{
  50. this.loadSelectItems();
  51. }
  52. },
  53. _scrollEvent: function(y){
  54. return true;
  55. },
  56. _getChildrenItemIds: function(){
  57. return null;
  58. },
  59. _newItemCategory: function(type, data, selector, item, level){
  60. return new MWF.xApplication.Selector.IdentityWidthDuty[type](data, selector, item, level)
  61. },
  62. _listItemByKey: function(callback, failure, key){
  63. if (this.options.units.length) key = {"key": key, "unitList": this.options.units};
  64. this.orgAction.listIdentityByKey(function(json){
  65. if (callback) callback.apply(this, [json]);
  66. }.bind(this), failure, key);
  67. },
  68. _getItem: function(callback, failure, id, async){
  69. this.orgAction.getIdentity(function(json){
  70. if (callback) callback.apply(this, [json]);
  71. }.bind(this), failure, ((typeOf(id)==="string") ? id : id.distinguishedName), async);
  72. },
  73. _newItemSelected: function(data, selector, item){
  74. return new MWF.xApplication.Selector.IdentityWidthDuty.ItemSelected(data, selector, item)
  75. },
  76. _listItemByPinyin: function(callback, failure, key){
  77. if (this.options.units.length) key = {"key": key, "unitList": this.options.units};
  78. this.orgAction.listIdentityByPinyin(function(json){
  79. if (callback) callback.apply(this, [json]);
  80. }.bind(this), failure, key);
  81. },
  82. _newItem: function(data, selector, container, level){
  83. return new MWF.xApplication.Selector.IdentityWidthDuty.Item(data, selector, container, level);
  84. },
  85. _newItemSearch: function(data, selector, container, level){
  86. return new MWF.xApplication.Selector.IdentityWidthDuty.SearchItem(data, selector, container, level);
  87. }
  88. //_listItemNext: function(last, count, callback){
  89. // this.action.listRoleNext(last, count, function(json){
  90. // if (callback) callback.apply(this, [json]);
  91. // }.bind(this));
  92. //}
  93. });
  94. MWF.xApplication.Selector.IdentityWidthDuty.Item = new Class({
  95. Extends: MWF.xApplication.Selector.Identity.Item,
  96. _getShowName: function(){
  97. return this.data.name;
  98. },
  99. _getTtiteText: function(){
  100. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  101. },
  102. _setIcon: function(){
  103. this.iconNode.setStyle("background-image", "url("+"/x_component_Selector/$Selector/default/icon/personicon.png)");
  104. }
  105. });
  106. MWF.xApplication.Selector.IdentityWidthDuty.SearchItem = new Class({
  107. Extends: MWF.xApplication.Selector.Identity.Item,
  108. _getShowName: function(){
  109. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  110. }
  111. });
  112. MWF.xApplication.Selector.IdentityWidthDuty.ItemSelected = new Class({
  113. Extends: MWF.xApplication.Selector.Identity.ItemSelected,
  114. _getShowName: function(){
  115. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  116. },
  117. _getTtiteText: function(){
  118. return this.data.name+((this.data.unitLevelName) ? "("+this.data.unitLevelName+")" : "");
  119. },
  120. _setIcon: function(){
  121. this.iconNode.setStyle("background-image", "url("+"/x_component_Selector/$Selector/default/icon/personicon.png)");
  122. }
  123. });
  124. MWF.xApplication.Selector.IdentityWidthDuty.ItemCategory = new Class({
  125. Extends: MWF.xApplication.Selector.Identity.ItemCategory,
  126. createNode: function(){
  127. this.node = new Element("div", {
  128. "styles": this.selector.css.selectorItemCategory_department
  129. }).inject(this.container);
  130. },
  131. _getShowName: function(){
  132. return this.data.name;
  133. },
  134. _setIcon: function(){
  135. this.iconNode.setStyle("background-image", "url("+"/x_component_Selector/$Selector/default/icon/companyicon.png)");
  136. },
  137. clickItem: function(){
  138. if (this._hasChild()){
  139. var firstLoaded = !this.loaded;
  140. this.loadSub(function(){
  141. if( firstLoaded ){
  142. this.children.setStyles({"display": "block", "height": "auto"});
  143. this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
  144. }else{
  145. var display = this.children.getStyle("display");
  146. if (display === "none"){
  147. this.children.setStyles({"display": "block", "height": "auto"});
  148. this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
  149. }else{
  150. this.children.setStyles({"display": "none", "height": "0px"});
  151. this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_collapse);
  152. }
  153. }
  154. }.bind(this));
  155. }
  156. },
  157. loadSub: function(callback){
  158. if (!this.loaded){
  159. if (this.selector.options.units.length){
  160. var action = MWF.Actions.get("x_organization_assemble_express");
  161. var data = {"name":this.data.name, "unit":""};
  162. var count = this.selector.options.units.length;
  163. var i = 0;
  164. if (this.selector.options.expandSubEnable) {
  165. this.selector.options.units.each(function(u){
  166. var unitName = ""
  167. if (typeOf(u)==="string"){
  168. unitName = u;
  169. }else{
  170. unitName = u.distinguishedName || u.unique || u.id || u.levelName
  171. }
  172. if (unitName){
  173. var unitNames;
  174. action.listUnitNameSubNested({"unitList": [unitName]}, function(json){
  175. unitNames = json.data.unitList;
  176. }.bind(this), null, false);
  177. unitNames.push(unitName);
  178. if (unitNames && unitNames.length){
  179. data.unitList = unitNames;
  180. action.getDuty(data, function(json){
  181. json.data.each(function(idSubData){
  182. if( !this.selector.isExcluded( idSubData ) ) {
  183. var item = this.selector._newItem(idSubData, this.selector, this.children, this.level + 1);
  184. this.selector.items.push(item);
  185. }
  186. }.bind(this));
  187. }.bind(this), null, false);
  188. }
  189. }
  190. i++;
  191. if (i>=count){
  192. if (!this.loaded) {
  193. this.loaded = true;
  194. if (callback) callback();
  195. }
  196. }
  197. }.bind(this));
  198. }else{
  199. this.selector.options.units.each(function(u){
  200. if (typeOf(u)==="string"){
  201. data.unit = u;
  202. }else{
  203. data.unit = u.distinguishedName || u.unique || u.id || u.levelName
  204. }
  205. action.getDuty(data, function(json){
  206. json.data.each(function(idSubData){
  207. if( !this.selector.isExcluded( idSubData ) ) {
  208. var item = this.selector._newItem(idSubData, this.selector, this.children, this.level + 1);
  209. this.selector.items.push(item);
  210. }
  211. }.bind(this));
  212. i++;
  213. if (i>=count){
  214. if (!this.loaded) {
  215. this.loaded = true;
  216. if (callback) callback();
  217. }
  218. }
  219. }.bind(this));
  220. }.bind(this));
  221. }
  222. //if (callback) callback();
  223. }else{
  224. this.selector.orgAction.listIdentityWithDuty(function(json){
  225. json.data.each(function(idSubData){
  226. if( !this.selector.isExcluded( idSubData ) ) {
  227. var item = this.selector._newItem(idSubData, this.selector, this.children, this.level + 1);
  228. this.selector.items.push(item);
  229. }
  230. }.bind(this));
  231. this.loaded = true;
  232. if (callback) callback();
  233. }.bind(this), null, this.data.name);
  234. }
  235. }else{
  236. if (callback) callback( );
  237. }
  238. },
  239. _hasChild: function(){
  240. return true;
  241. }
  242. });
  243. MWF.xApplication.Selector.IdentityWidthDuty.Filter = new Class({
  244. Implements: [Options, Events],
  245. options: {
  246. "style": "default",
  247. "units": [],
  248. "dutys": []
  249. },
  250. initialize: function(value, options){
  251. this.setOptions(options);
  252. this.value = value;
  253. this.orgAction = MWF.Actions.get("x_organization_assemble_control");
  254. },
  255. getList: function(callback){
  256. if (false && this.list){
  257. if (callback) callback();
  258. }else{
  259. this.list = [];
  260. MWF.require("MWF.widget.PinYin", function(){
  261. this.options.dutys.each(function(duty){
  262. if (this.options.units.length){
  263. var action = MWF.Actions.get("x_organization_assemble_express");
  264. var data = {"name":duty, "unit":""};
  265. this.options.units.each(function(u){
  266. if (typeOf(u)==="string"){
  267. data.unit = u;
  268. }else{
  269. data.unit = u.distinguishedName || u.unique || u.id || u.levelName
  270. }
  271. action.getDuty(data, function(json){
  272. json.data.each(function(d){
  273. d.pinyin = d.name.toPY().toLowerCase();
  274. d.firstPY = d.name.toPYFirst().toLowerCase();
  275. this.list.push(d);
  276. }.bind(this));
  277. }.bind(this), null, false);
  278. }.bind(this));
  279. }else{
  280. this.orgAction.listIdentityWithDuty(function(json){
  281. json.data.each(function(d){
  282. d.pinyin = d.name.toPY().toLowerCase();
  283. d.firstPY = d.name.toPYFirst().toLowerCase();
  284. this.list.push(d);
  285. }.bind(this));
  286. }.bind(this), null, duty, false);
  287. }
  288. }.bind(this));
  289. if (callback) callback();
  290. }.bind(this));
  291. }
  292. },
  293. filter: function(value, callback){
  294. this.value = value;
  295. this.getList(function(){
  296. var data = this.list.filter(function(d){
  297. var text = d.name+"#"+d.pinyin+"#"+d.firstPY;
  298. return (text.indexOf(this.value)!=-1);
  299. }.bind(this));
  300. if (callback) callback(data);
  301. }.bind(this));
  302. }
  303. });