multiselect-demo.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. Ext.Loader.setConfig({enabled: true});
  2. Ext.Loader.setPath('Ext.ux', '../ux');
  3. Ext.require([
  4. 'Ext.form.Panel',
  5. 'Ext.ux.form.MultiSelect',
  6. 'Ext.ux.form.ItemSelector',
  7. 'Ext.tip.QuickTipManager',
  8. 'Ext.ux.ajax.JsonSimlet',
  9. 'Ext.ux.ajax.SimManager'
  10. ]);
  11. Ext.onReady(function(){
  12. Ext.tip.QuickTipManager.init();
  13. function createDockedItems(fieldId) {
  14. return [{
  15. xtype: 'toolbar',
  16. dock: 'top',
  17. items: {
  18. text: 'Options',
  19. menu: [{
  20. text: 'Get value',
  21. handler: function(){
  22. var value = Ext.getCmp(fieldId).getValue();
  23. Ext.Msg.alert('Value is a split array', value.join(', '));
  24. }
  25. }, {
  26. text: 'Set value (2,3)',
  27. handler: function(){
  28. Ext.getCmp(fieldId).setValue(['2', '3']);
  29. }
  30. },{
  31. text: 'Toggle enabled',
  32. checked: true,
  33. checkHandler: function(item, checked){
  34. Ext.getCmp(fieldId).setDisabled(!checked);
  35. }
  36. },{
  37. text: 'Toggle delimiter',
  38. checked: true,
  39. checkHandler: function(item, checked) {
  40. var field = Ext.getCmp(fieldId);
  41. if (checked) {
  42. field.delimiter = ',';
  43. Ext.Msg.alert('Delimiter Changed', 'The delimiter is now set to <b>","</b>. Click Save to ' +
  44. 'see that values are now submitted as a single parameter separated by the delimiter.');
  45. } else {
  46. field.delimiter = null;
  47. Ext.Msg.alert('Delimiter Changed', 'The delimiter is now set to <b>null</b>. Click Save to ' +
  48. 'see that values are now submitted as separate parameters.');
  49. }
  50. }
  51. }]
  52. }
  53. }, {
  54. xtype: 'toolbar',
  55. dock: 'bottom',
  56. ui: 'footer',
  57. defaults: {
  58. minWidth: 75
  59. },
  60. items: ['->', {
  61. text: 'Clear',
  62. handler: function(){
  63. var field = Ext.getCmp(fieldId);
  64. if (!field.disabled) {
  65. field.clearValue();
  66. }
  67. }
  68. }, {
  69. text: 'Reset',
  70. handler: function() {
  71. Ext.getCmp(fieldId).up('form').getForm().reset();
  72. }
  73. }, {
  74. text: 'Save',
  75. handler: function(){
  76. var form = Ext.getCmp(fieldId).up('form').getForm();
  77. form.getValues(true);
  78. if (form.isValid()){
  79. Ext.Msg.alert('Submitted Values', 'The following will be sent to the server: <br />'+
  80. form.getValues(true));
  81. }
  82. }
  83. }]
  84. }];
  85. }
  86. Ext.ux.ajax.SimManager.init({
  87. delay: 300,
  88. defaultSimlet: null
  89. }).register({
  90. 'Numbers': {
  91. data: [[123,'One Hundred Twenty Three'],
  92. ['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4', 'Four'], ['5', 'Five'],
  93. ['6', 'Six'], ['7', 'Seven'], ['8', 'Eight'], ['9', 'Nine']],
  94. stype: 'json'
  95. }
  96. });
  97. /*
  98. * Ext.ux.form.MultiSelect Example Code
  99. */
  100. var msForm = Ext.widget('form', {
  101. title: 'MultiSelect Test',
  102. width: 400,
  103. bodyPadding: 10,
  104. renderTo: 'multiselect',
  105. items:[{
  106. anchor: '100%',
  107. xtype: 'multiselect',
  108. msgTarget: 'side',
  109. fieldLabel: 'Multiselect',
  110. name: 'multiselect',
  111. id: 'multiselect-field',
  112. allowBlank: false,
  113. store: {
  114. fields: [ 'number', 'numberName' ],
  115. proxy: {
  116. type: 'ajax',
  117. url: 'Numbers',
  118. reader: 'array'
  119. },
  120. autoLoad: true
  121. },
  122. valueField: 'number',
  123. displayField: 'numberName',
  124. value: ['3', '4', '6'],
  125. ddReorder: true
  126. }],
  127. dockedItems: createDockedItems('multiselect-field')
  128. });
  129. var ds = Ext.create('Ext.data.ArrayStore', {
  130. fields: ['value','text'],
  131. proxy: {
  132. type: 'ajax',
  133. url: 'Numbers',
  134. reader: 'array'
  135. },
  136. autoLoad: true,
  137. sortInfo: {
  138. field: 'value',
  139. direction: 'ASC'
  140. }
  141. });
  142. /*
  143. * Ext.ux.form.ItemSelector Example Code
  144. */
  145. var isForm = Ext.widget('form', {
  146. title: 'ItemSelector Test',
  147. width: 700,
  148. bodyPadding: 10,
  149. height: 300,
  150. renderTo: 'itemselector',
  151. layout: 'fit',
  152. items:[{
  153. xtype: 'itemselector',
  154. name: 'itemselector',
  155. id: 'itemselector-field',
  156. anchor: '100%',
  157. fieldLabel: 'ItemSelector',
  158. imagePath: '../ux/images/',
  159. store: ds,
  160. displayField: 'text',
  161. valueField: 'value',
  162. value: ['3', '4', '6'],
  163. allowBlank: false,
  164. msgTarget: 'side',
  165. fromTitle: 'Available',
  166. toTitle: 'Selected'
  167. }],
  168. dockedItems: createDockedItems('itemselector-field')
  169. });
  170. });