package.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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": "Select Person",
  10. "groups": [],
  11. "roles": [],
  12. "units": [],
  13. "unitType": "",
  14. "values": [],
  15. "exclude" : []
  16. },
  17. initialize: function(container, options){
  18. //MWF.xDesktop.requireApp("Selector", "Actions.RestActions", null, false);
  19. this.setOptions(options);
  20. this.container = container;
  21. var type = this.options.type.capitalize();
  22. if (type){
  23. if ((type.toLowerCase()==="unit") && (this.options.unitType)){
  24. MWF.xDesktop.requireApp("Selector", "UnitWithType", function(){
  25. this.selector = new MWF.xApplication.Selector.UnitWithType(this.container, options);
  26. this.selector.load();
  27. }.bind(this));
  28. }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length)){
  29. MWF.xDesktop.requireApp("Selector", "IdentityWidthDuty", function(){
  30. this.selector = new MWF.xApplication.Selector.IdentityWidthDuty(this.container, options);
  31. this.selector.load();
  32. }.bind(this));
  33. }else{
  34. MWF.xDesktop.requireApp("Selector", type, function(){
  35. this.selector = new MWF.xApplication.Selector[type](this.container, options);
  36. this.selector.load();
  37. }.bind(this));
  38. }
  39. }else{
  40. MWF.xDesktop.requireApp("Selector", "MultipleSelector", function() {
  41. this.selector = new MWF.xApplication.Selector.MultipleSelector(this.container, this.options );
  42. this.selector.load();
  43. }.bind(this));
  44. }
  45. }
  46. });
  47. MWF.O2SelectorFilter = new Class({
  48. Implements: [Options],
  49. options: {
  50. "count": 0,
  51. "type": "person",
  52. "title": "Select Person",
  53. "groups": [],
  54. "roles": [],
  55. "units": [],
  56. "unitType": "",
  57. "values": []
  58. },
  59. initialize: function(value, options){
  60. //MWF.xDesktop.requireApp("Selector", "Actions.RestActions", null, false);
  61. this.setOptions(options);
  62. this.value = value;
  63. var type = this.options.type.capitalize();
  64. if (type){
  65. if ((type.toLowerCase()==="unit") && (this.options.unitType)){
  66. MWF.xDesktop.requireApp("Selector", "UnitWithType", function(){
  67. this.selector = new MWF.xApplication.Selector.UnitWithType.Filter(this.container, options);
  68. this.selector.load();
  69. }.bind(this));
  70. }else if ((type.toLowerCase()==="identity") && ((this.options.dutys) && this.options.dutys.length)){
  71. MWF.xDesktop.requireApp("Selector", "IdentityWidthDuty", function(){
  72. this.selectFilter = new MWF.xApplication.Selector.IdentityWidthDuty.Filter(this.value, options);
  73. }.bind(this), false);
  74. }else{
  75. MWF.xDesktop.requireApp("Selector", type, function(){
  76. this.selectFilter = new MWF.xApplication.Selector[type].Filter(this.value, options);
  77. }.bind(this), false);
  78. }
  79. }else{
  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. }
  84. },
  85. filter: function(value, callback){
  86. return this.selectFilter.filter(value, callback);
  87. }
  88. });
  89. (function(){
  90. var _createEl = function(data, node){
  91. var dname = data.distinguishedName;
  92. if (typeOf(data)==="string"){
  93. data = {"id": data};
  94. dname = data.id;
  95. }
  96. var len = dname.length;
  97. var flag = dname.substring(len-1,len);
  98. switch (flag){
  99. case "U":
  100. new o2.widget.O2Unit(data, node, {"style": "xform"});
  101. break;
  102. case "I":
  103. new o2.widget.O2Identity(data, node, {"style": "xform"});
  104. break;
  105. case "G":
  106. new o2.widget.O2Group(data, node, {"style": "xform"});
  107. break;
  108. case "P":
  109. new o2.widget.O2Person(data, node, {"style": "xform"});
  110. break;
  111. case "R":
  112. new o2.widget.O2Role(data, node, {"style": "xform"});
  113. break;
  114. }
  115. };
  116. Element.prototype.setSelectPerson = function(container, options){
  117. if (options.types) options.type = "";
  118. options.onComplete = function(items){
  119. debugger;
  120. o2.require("o2.widget.O2Identity", function(){
  121. options.values = [];
  122. this.empty();
  123. items.each(function(item){
  124. options.values.push(item.data);
  125. _createEl(item.data, this);
  126. if (options.selectItem) options.selectItem(item);
  127. }.bind(this));
  128. this.store("data-value", options.values);
  129. }.bind(this));
  130. }.bind(this);
  131. if (options.values){
  132. options.values.each(function(v){
  133. this.store("data-value", options.values);
  134. _createEl(v, this);
  135. }.bind(this));
  136. }
  137. this.addEvent("click", function(){
  138. var i = this.getZIndex();
  139. options.zIndex = i+1;
  140. new MWF.O2Selector(container, options);
  141. }.bind(this));
  142. };
  143. })();