package.js 11 KB

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