package.js 6.1 KB

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