package.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. MWF.xApplication.Selector = MWF.xApplication.Selector || {};
  2. MWF.xDesktop.requireApp("Selector", "lp."+MWF.language, null, false);
  3. //MWF.xDesktop.requireApp("Selector", "Actions.RestActions", null, false);
  4. MWF.O2Selector = new Class({
  5. Implements: [Options],
  6. options: {
  7. "count": 0,
  8. "type": "person",
  9. "title": MWF.xApplication.Selector.LP.multiSelectTitle,
  10. "groups": [],
  11. "roles": [],
  12. "units": [],
  13. "unitType": "",
  14. "values": [],
  15. "exclude" : [],
  16. "categoryType": "unit",
  17. "dutyUnitLevelBy" : "duty"
  18. },
  19. initialize: function(container, options){
  20. //MWF.xDesktop.requireApp("Selector", "Actions.RestActions", null, false);
  21. this.loading = true;
  22. this.setOptions(options);
  23. this.container = container;
  24. if( this.options.types && typeOf(this.options.types) === "array" && this.options.types.length > 0 ){
  25. MWF.xDesktop.requireApp("Selector", "MultipleSelector", function() {
  26. this.selector = new MWF.xApplication.Selector.MultipleSelector(this.container, this.options );
  27. this.selector.load();
  28. this.loading = false;
  29. }.bind(this));
  30. }else{
  31. var type = typeOf(this.options.type) === "string" ? this.options.type.capitalize() : this.options.type;
  32. if (type){
  33. if ((type.toLowerCase()==="unit") && (this.options.unitType)){
  34. MWF.xDesktop.requireApp("Selector", "UnitWithType", function(){
  35. this.selector = new MWF.xApplication.Selector.UnitWithType(this.container, options);
  36. this.selector.load();
  37. this.loading = false;
  38. }.bind(this));
  39. }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length) && this.options.categoryType.toLowerCase()==="duty"){
  40. MWF.xDesktop.requireApp("Selector", "IdentityWidthDuty", function(){
  41. this.selector = new MWF.xApplication.Selector.IdentityWidthDuty(this.container, options);
  42. this.selector.load();
  43. this.loading = false;
  44. }.bind(this));
  45. }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length) ){ //&& this.options.categoryType.toLowerCase()==="unit"
  46. MWF.xDesktop.requireApp("Selector", "IdentityWidthDutyCategoryByUnit", function(){
  47. this.selector = new MWF.xApplication.Selector.IdentityWidthDutyCategoryByUnit(this.container, options);
  48. this.selector.load();
  49. this.loading = false;
  50. }.bind(this));
  51. }else{
  52. MWF.xDesktop.requireApp("Selector", type, function(){
  53. this.selector = new MWF.xApplication.Selector[type](this.container, options);
  54. this.selector.load();
  55. this.loading = false;
  56. }.bind(this));
  57. }
  58. }
  59. }
  60. }
  61. });
  62. MWF.O2SelectorFilter = new Class({
  63. Implements: [Options],
  64. options: {
  65. "count": 0,
  66. "type": "person",
  67. "title": "Select Person",
  68. "groups": [],
  69. "roles": [],
  70. "units": [],
  71. "unitType": "",
  72. "values": []
  73. },
  74. initialize: function(value, options){
  75. //MWF.xDesktop.requireApp("Selector", "Actions.RestActions", null, false);
  76. this.setOptions(options);
  77. this.value = value;
  78. //var type = this.options.type.capitalize();
  79. if( this.options.types && typeOf(this.options.types) === "array" && this.options.types.length > 0 ){
  80. MWF.xDesktop.requireApp("Selector", "MultipleSelector", function() {
  81. this.selectFilter = new MWF.xApplication.Selector.MultipleSelector.Filter(this.container, this.options );
  82. }.bind(this), false);
  83. }else{
  84. var type = typeOf(this.options.type) === "string" ? this.options.type.capitalize() : this.options.type;
  85. if (type){
  86. if ((type.toLowerCase()==="unit") && (this.options.unitType)){
  87. MWF.xDesktop.requireApp("Selector", "UnitWithType", function(){
  88. this.selector = new MWF.xApplication.Selector.UnitWithType.Filter(this.container, options);
  89. this.selector.load();
  90. }.bind(this));
  91. }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length) && this.options.categoryType.toLowerCase()==="duty"){
  92. MWF.xDesktop.requireApp("Selector", "IdentityWidthDuty", function(){
  93. this.selectFilter = new MWF.xApplication.Selector.IdentityWidthDuty.Filter(this.value, options);
  94. }.bind(this), false);
  95. }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length) ){ //&& this.options.categoryType.toLowerCase()==="unit"
  96. MWF.xDesktop.requireApp("Selector", "IdentityWidthDutyCategoryByUnit", function(){
  97. this.selectFilter = new MWF.xApplication.Selector.IdentityWidthDutyCategoryByUnit.Filter(this.value, options);
  98. }.bind(this));
  99. }else{
  100. MWF.xDesktop.requireApp("Selector", type, function(){
  101. this.selectFilter = new MWF.xApplication.Selector[type].Filter(this.value, options);
  102. }.bind(this), false);
  103. }
  104. }
  105. }
  106. //if (type){
  107. // if ((type.toLowerCase()==="unit") && (this.options.unitType)){
  108. // MWF.xDesktop.requireApp("Selector", "UnitWithType", function(){
  109. // this.selector = new MWF.xApplication.Selector.UnitWithType.Filter(this.container, options);
  110. // this.selector.load();
  111. // }.bind(this));
  112. // }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length)){
  113. // MWF.xDesktop.requireApp("Selector", "IdentityWidthDuty", function(){
  114. // this.selectFilter = new MWF.xApplication.Selector.IdentityWidthDuty.Filter(this.value, options);
  115. // }.bind(this), false);
  116. // }else{
  117. // MWF.xDesktop.requireApp("Selector", type, function(){
  118. // this.selectFilter = new MWF.xApplication.Selector[type].Filter(this.value, options);
  119. // }.bind(this), false);
  120. // }
  121. //}else{
  122. // MWF.xDesktop.requireApp("Selector", "MultipleSelector", function() {
  123. // this.selectFilter = new MWF.xApplication.Selector.MultipleSelector.Filter(this.container, this.options );
  124. // }.bind(this), false);
  125. //}
  126. },
  127. filter: function(value, callback){
  128. return this.selectFilter.filter(value, callback);
  129. }
  130. });
  131. (function(){
  132. var _createEl = function(data, node){
  133. var dname;
  134. if (typeOf(data)==="string"){
  135. data = {"id": data};
  136. dname = data.id;
  137. }else{
  138. dname = data.distinguishedName || data.name || data.id
  139. }
  140. var len = dname.length;
  141. var flag = dname.substring(len-1,len);
  142. switch (flag){
  143. case "U":
  144. new o2.widget.O2Unit(data, node, {"style": "xform"});
  145. break;
  146. case "I":
  147. new o2.widget.O2Identity(data, node, {"style": "xform"});
  148. break;
  149. case "G":
  150. new o2.widget.O2Group(data, node, {"style": "xform"});
  151. break;
  152. case "P":
  153. new o2.widget.O2Person(data, node, {"style": "xform"});
  154. break;
  155. case "R":
  156. new o2.widget.O2Role(data, node, {"style": "xform"});
  157. break;
  158. }
  159. };
  160. //Element.implement({
  161. // setSelectPerson : function(container, options){
  162. // if (options.types) options.type = "";
  163. // options.onComplete = function(items){
  164. //
  165. // debugger;
  166. //
  167. // o2.require("o2.widget.O2Identity", function(){
  168. // options.values = [];
  169. // this.empty();
  170. // items.each(function(item){
  171. // options.values.push(item.data);
  172. // _createEl(item.data, this);
  173. // if (options.selectItem) options.selectItem(item);
  174. // }.bind(this));
  175. // this.store("data-value", options.values);
  176. // }.bind(this));
  177. // }.bind(this);
  178. //
  179. // if (options.values){
  180. // options.values.each(function(v){
  181. // this.store("data-value", options.values);
  182. // _createEl(v, this);
  183. // }.bind(this));
  184. // }
  185. // this.addEvent("click", function(){
  186. // var i = this.getZIndex();
  187. // options.zIndex = i+1;
  188. // new MWF.O2Selector(container, options);
  189. // }.bind(this));
  190. // }
  191. //});
  192. Element.prototype.setSelectPerson = function(container, options){
  193. if (options.types) options.type = "";
  194. options.onComplete = function(items){
  195. o2.require("o2.widget.O2Identity", function(){
  196. options.values = [];
  197. this.empty();
  198. items.each(function(item){
  199. options.values.push(item.data);
  200. _createEl(item.data, this);
  201. if (options.selectItem) options.selectItem(item);
  202. }.bind(this));
  203. this.store("data-value", options.values);
  204. }.bind(this));
  205. }.bind(this);
  206. if (options.values){
  207. options.values.each(function(v){
  208. this.store("data-value", options.values);
  209. _createEl(v, this);
  210. }.bind(this));
  211. }
  212. this.addEvent("click", function(){
  213. var i = this.getZIndex();
  214. options.zIndex = i+1;
  215. new MWF.O2Selector(container, options);
  216. //var selector = new MWF.O2Selector(container, options);
  217. //this.store("data-selector", selector)
  218. }.bind(this));
  219. };
  220. })();