/source/Plug-in/ext/editable-column-tree.js

http://prosporous.googlecode.com/ · JavaScript · 209 lines · 208 code · 1 blank · 0 comment · 20 complexity · 397838af9091c97d6ef8b6212a08e853 MD5 · raw file

  1. Ext.onReady(function()
  2. {
  3. var root = new Ext.tree.AsyncTreeNode({
  4. id:'0',
  5. text:'?'});
  6. var store = new Ext.data.SimpleStore(
  7. {fields:['report'],
  8. data:[['Pasry'],['Pasents']]
  9. });
  10. var combo_config =
  11. {
  12. id: 'chart_combo_list',
  13. store: store,
  14. displayField: 'report',
  15. xtype: 'combo',
  16. mode: 'local',
  17. triggerAction: 'all',
  18. width: 100,
  19. emptyText: 'Please select report type..',
  20. selectOnFocus: true
  21. };
  22. var tree = new Ext.tree.ColumnTree(
  23. {
  24. id: 'tree',
  25. region:'center',
  26. rootVisible: false,
  27. autoScroll: true,
  28. expandable: false,
  29. enableDD: true,
  30. title:false,
  31. tbar:
  32. [
  33. {
  34. text: '??',
  35. tooltip: '??',
  36. listeners:
  37. {
  38. 'click': function()
  39. {
  40. var json = tree.toJsonString(null, function(key, val)
  41. {
  42. return (key == 'leaf' || key == 'id' || key == 'task' || key == 'user');
  43. },
  44. {
  45. menu_item: 'task',
  46. menu_url: 'user'
  47. });
  48. alert(json);
  49. },
  50. scope: this
  51. }
  52. },'-',
  53. {
  54. text: '?????',
  55. tooltip: '?????',
  56. listeners:
  57. {
  58. 'click': function()
  59. {
  60. var selectedItem = tree.getSelectionModel().getSelectedNode();
  61. if (! selectedItem)
  62. {
  63. selectedItem = tree.getRootNode();
  64. }
  65. handleCreate = function (btn, text, cBoxes)
  66. {
  67. if (btn == 'ok' && text)
  68. {
  69. var newNode = new Ext.tree.TreeNode(
  70. {
  71. menu_item: text,
  72. menu_url: '',
  73. leaf: false,
  74. expandable: true,
  75. uiProvider: Ext.tree.ColumnNodeUI
  76. });
  77. if (selectedItem.isLeaf())
  78. {
  79. selectedItem.parentNode.insertBefore(newNode, selectedItem.nextSibling);
  80. }
  81. else
  82. {
  83. selectedItem.insertBefore(newNode, selectedItem.firstChild);
  84. }
  85. }
  86. }
  87. Ext.MessageBox.show(
  88. {
  89. title: '???????',
  90. msg: '?????:',
  91. buttons: Ext.MessageBox.OKCANCEL,
  92. prompt: true,
  93. fn: handleCreate
  94. });
  95. }
  96. }
  97. },'-',
  98. {
  99. text: '????',
  100. tooltip: '????',
  101. listeners:
  102. {
  103. 'click': function()
  104. {
  105. var selectedItem = tree.getSelectionModel().getSelectedNode();
  106. if (!selectedItem)
  107. {
  108. Ext.Msg.alert('??', '??????');
  109. return false;
  110. }
  111. handleCreate = function (btn, text, cBoxes)
  112. {
  113. if (btn == 'ok' && text)
  114. {
  115. var newNode = new Ext.tree.TreeNode(
  116. {
  117. menu_item: text,
  118. menu_url: '',
  119. leaf: true,
  120. allowChildren: false,
  121. uiProvider: Ext.tree.ColumnNodeUI
  122. });
  123. if (selectedItem.isLeaf())
  124. {
  125. selectedItem.parentNode.insertBefore(newNode, selectedItem.nextSibling);
  126. }
  127. else
  128. {
  129. selectedItem.insertBefore(newNode, selectedItem.firstChild);
  130. }
  131. }
  132. }
  133. Ext.MessageBox.show(
  134. {
  135. title: '??????',
  136. msg: '????:',
  137. buttons: Ext.MessageBox.OKCANCEL,
  138. prompt: true,
  139. fn: handleCreate
  140. });
  141. }
  142. }
  143. },'-',
  144. {
  145. text: '??????',
  146. tooltip: '??????',
  147. listeners:
  148. {
  149. 'click': function()
  150. {
  151. var selectedItem = tree.getSelectionModel().getSelectedNode();
  152. if (!selectedItem)
  153. {
  154. Ext.Msg.alert('??', '???????');
  155. return false;
  156. }
  157. handleDelete = function (btn)
  158. {
  159. if (btn == 'ok')
  160. {
  161. selectedItem.remove();
  162. }
  163. }
  164. Ext.MessageBox.show(
  165. {
  166. title: '???',
  167. msg: '????',
  168. buttons: Ext.MessageBox.OKCANCEL,
  169. fn: handleDelete
  170. });
  171. }
  172. }
  173. },'-'
  174. ],
  175. columns:
  176. [
  177. {
  178. header: '????',
  179. width: 200,
  180. dataIndex: 'task'
  181. },
  182. {
  183. header: '???',
  184. width: 150,
  185. dataIndex: 'duration'
  186. },
  187. {
  188. header: '??',
  189. width: 120,
  190. dataIndex: 'user'
  191. },is_show
  192. ],
  193. loader: new Ext.tree.TreeLoader({
  194. dataUrl:'web_config.php?require=tree',
  195. uiProviders:{
  196. 'col': Ext.tree.ColumnNodeUI
  197. }
  198. }),
  199. root: root
  200. });
  201. tree.expandAll();
  202. var viewport = new Ext.Viewport({
  203. layout:'border',
  204. items : [
  205. tree
  206. ]
  207. });
  208. });