dynamic.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. Ext.require([
  2. //'Ext.form.*',
  3. //'Ext.layout.container.Column',
  4. //'Ext.tab.Panel'
  5. '*'
  6. ]);
  7. Ext.onReady(function() {
  8. Ext.QuickTips.init();
  9. var bd = Ext.getBody();
  10. /*
  11. * ================ Simple form =======================
  12. */
  13. bd.createChild({tag: 'h2', html: 'Form 1 - Very Simple'});
  14. var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';
  15. var simple = Ext.widget({
  16. xtype: 'form',
  17. layout: 'form',
  18. collapsible: true,
  19. id: 'simpleForm',
  20. url: 'save-form.php',
  21. frame: true,
  22. title: 'Simple Form',
  23. bodyPadding: '5 5 0',
  24. width: 350,
  25. fieldDefaults: {
  26. msgTarget: 'side',
  27. labelWidth: 75
  28. },
  29. defaultType: 'textfield',
  30. items: [{
  31. fieldLabel: 'First Name',
  32. afterLabelTextTpl: required,
  33. name: 'first',
  34. allowBlank: false
  35. },{
  36. fieldLabel: 'Last Name',
  37. afterLabelTextTpl: required,
  38. name: 'last',
  39. allowBlank: false
  40. },{
  41. fieldLabel: 'Company',
  42. name: 'company'
  43. }, {
  44. fieldLabel: 'Email',
  45. afterLabelTextTpl: required,
  46. name: 'email',
  47. allowBlank: false,
  48. vtype:'email'
  49. }, {
  50. fieldLabel: 'DOB',
  51. name: 'dob',
  52. xtype: 'datefield'
  53. }, {
  54. fieldLabel: 'Age',
  55. name: 'age',
  56. xtype: 'numberfield',
  57. minValue: 0,
  58. maxValue: 100
  59. }, {
  60. xtype: 'timefield',
  61. fieldLabel: 'Time',
  62. name: 'time',
  63. minValue: '8:00am',
  64. maxValue: '6:00pm'
  65. }],
  66. buttons: [{
  67. text: 'Save',
  68. handler: function() {
  69. this.up('form').getForm().isValid();
  70. }
  71. },{
  72. text: 'Cancel',
  73. handler: function() {
  74. this.up('form').getForm().reset();
  75. }
  76. }]
  77. });
  78. simple.render(document.body);
  79. /*
  80. * ================ Form 2 =======================
  81. */
  82. bd.createChild({tag: 'h2', html: 'Form 2 - Adding fieldsets'});
  83. var fsf = Ext.widget({
  84. xtype: 'form',
  85. id: 'fieldSetForm',
  86. collapsible: true,
  87. url: 'save-form.php',
  88. frame: true,
  89. title: 'Simple Form with FieldSets',
  90. bodyPadding: '5 5 0',
  91. width: 350,
  92. fieldDefaults: {
  93. msgTarget: 'side',
  94. labelWidth: 75
  95. },
  96. defaults: {
  97. anchor: '100%'
  98. },
  99. items: [{
  100. xtype:'fieldset',
  101. checkboxToggle:true,
  102. title: 'User Information',
  103. defaultType: 'textfield',
  104. collapsed: true,
  105. layout: 'anchor',
  106. defaults: {
  107. anchor: '100%'
  108. },
  109. items :[{
  110. fieldLabel: 'First Name',
  111. afterLabelTextTpl: required,
  112. name: 'first',
  113. allowBlank:false
  114. },{
  115. fieldLabel: 'Last Name',
  116. afterLabelTextTpl: required,
  117. name: 'last'
  118. },{
  119. fieldLabel: 'Company',
  120. name: 'company'
  121. }, {
  122. fieldLabel: 'Email',
  123. afterLabelTextTpl: required,
  124. name: 'email',
  125. vtype:'email'
  126. }]
  127. },{
  128. xtype:'fieldset',
  129. title: 'Phone Number',
  130. collapsible: true,
  131. defaultType: 'textfield',
  132. layout: 'anchor',
  133. defaults: {
  134. anchor: '100%'
  135. },
  136. items :[{
  137. fieldLabel: 'Home',
  138. name: 'home',
  139. value: '(888) 555-1212'
  140. },{
  141. fieldLabel: 'Business',
  142. name: 'business'
  143. },{
  144. fieldLabel: 'Mobile',
  145. name: 'mobile'
  146. },{
  147. fieldLabel: 'Fax',
  148. name: 'fax'
  149. }]
  150. }],
  151. buttons: [{
  152. text: 'Save'
  153. },{
  154. text: 'Cancel'
  155. }]
  156. });
  157. fsf.render(document.body);
  158. /*
  159. * ================ Form 3 =======================
  160. */
  161. bd.createChild({tag: 'h2', html: 'Form 3 - A little more complex'});
  162. var top = Ext.widget({
  163. xtype: 'form',
  164. id: 'multiColumnForm',
  165. collapsible: true,
  166. frame: true,
  167. title: 'Multi Column, Nested Layouts and Anchoring',
  168. bodyPadding: '5 5 0',
  169. width: 600,
  170. fieldDefaults: {
  171. labelAlign: 'top',
  172. msgTarget: 'side'
  173. },
  174. items: [{
  175. xtype: 'container',
  176. anchor: '100%',
  177. layout: 'hbox',
  178. items:[{
  179. xtype: 'container',
  180. flex: 1,
  181. layout: 'anchor',
  182. items: [{
  183. xtype:'textfield',
  184. fieldLabel: 'First Name',
  185. afterLabelTextTpl: required,
  186. allowBlank: false,
  187. name: 'first',
  188. anchor:'95%',
  189. value: 'Don'
  190. }, {
  191. xtype:'textfield',
  192. fieldLabel: 'Company',
  193. name: 'company',
  194. anchor:'95%'
  195. }]
  196. },{
  197. xtype: 'container',
  198. flex: 1,
  199. layout: 'anchor',
  200. items: [{
  201. xtype:'textfield',
  202. fieldLabel: 'Last Name',
  203. afterLabelTextTpl: required,
  204. allowBlank: false,
  205. name: 'last',
  206. anchor:'100%',
  207. value: 'Griffin'
  208. },{
  209. xtype:'textfield',
  210. fieldLabel: 'Email',
  211. afterLabelTextTpl: required,
  212. allowBlank: false,
  213. name: 'email',
  214. vtype:'email',
  215. anchor:'100%'
  216. }]
  217. }]
  218. }, {
  219. xtype: 'htmleditor',
  220. name: 'bio',
  221. fieldLabel: 'Biography',
  222. height: 200,
  223. anchor: '100%'
  224. }],
  225. buttons: [{
  226. text: 'Save',
  227. handler: function() {
  228. this.up('form').getForm().isValid();
  229. }
  230. },{
  231. text: 'Cancel',
  232. handler: function() {
  233. this.up('form').getForm().reset();
  234. }
  235. }]
  236. });
  237. top.render(document.body);
  238. /*
  239. * ================ Form 4 =======================
  240. */
  241. bd.createChild({tag: 'h2', html: 'Form 4 - Forms can be a TabPanel...'});
  242. var tabs = Ext.widget({
  243. xtype: 'form',
  244. id: 'tabForm',
  245. width: 350,
  246. border: false,
  247. bodyBorder: false,
  248. fieldDefaults: {
  249. labelWidth: 75,
  250. msgTarget: 'side'
  251. },
  252. items: {
  253. xtype:'tabpanel',
  254. activeTab: 0,
  255. defaults:{
  256. bodyPadding: 10,
  257. layout: 'anchor'
  258. },
  259. items:[{
  260. title:'Personal Details',
  261. defaultType: 'textfield',
  262. defaults: {
  263. anchor: '100%'
  264. },
  265. items: [{
  266. fieldLabel: 'First Name',
  267. name: 'first',
  268. afterLabelTextTpl: required,
  269. allowBlank: false,
  270. value: 'Ed'
  271. },{
  272. fieldLabel: 'Last Name',
  273. afterLabelTextTpl: required,
  274. allowBlank: false,
  275. name: 'last',
  276. value: 'Spencer'
  277. },{
  278. fieldLabel: 'Company',
  279. name: 'company',
  280. value: 'Ext JS'
  281. }, {
  282. fieldLabel: 'Email',
  283. afterLabelTextTpl: required,
  284. allowBlank: false,
  285. name: 'email',
  286. vtype:'email'
  287. }]
  288. },{
  289. title: 'Phone Numbers',
  290. defaultType: 'textfield',
  291. defaults: {
  292. anchor: '100%'
  293. },
  294. items: [{
  295. fieldLabel: 'Home',
  296. name: 'home',
  297. value: '(888) 555-1212'
  298. },{
  299. fieldLabel: 'Business',
  300. name: 'business'
  301. },{
  302. fieldLabel: 'Mobile',
  303. name: 'mobile'
  304. },{
  305. fieldLabel: 'Fax',
  306. name: 'fax'
  307. }]
  308. }]
  309. },
  310. buttons: [{
  311. text: 'Save',
  312. handler: function() {
  313. this.up('form').getForm().isValid();
  314. }
  315. },{
  316. text: 'Cancel',
  317. handler: function() {
  318. this.up('form').getForm().reset();
  319. }
  320. }]
  321. });
  322. tabs.render(document.body);
  323. /*
  324. * ================ Form 5 =======================
  325. */
  326. bd.createChild({tag: 'h2', html: 'Form 5 - ... and forms can contain TabPanel(s)'});
  327. var tab2 = Ext.widget({
  328. title: 'Inner Tabs',
  329. xtype: 'form',
  330. id: 'innerTabsForm',
  331. collapsible: true,
  332. bodyPadding: 5,
  333. width: 600,
  334. fieldDefaults: {
  335. labelAlign: 'top',
  336. msgTarget: 'side'
  337. },
  338. defaults: {
  339. anchor: '100%'
  340. },
  341. items: [{
  342. xtype: 'container',
  343. layout:'hbox',
  344. items:[{
  345. xtype: 'container',
  346. flex: 1,
  347. border:false,
  348. layout: 'anchor',
  349. defaultType: 'textfield',
  350. items: [{
  351. fieldLabel: 'First Name',
  352. afterLabelTextTpl: required,
  353. allowBlank: false,
  354. name: 'first',
  355. anchor:'95%'
  356. }, {
  357. fieldLabel: 'Company',
  358. name: 'company',
  359. anchor:'95%'
  360. }]
  361. },{
  362. xtype: 'container',
  363. flex: 1,
  364. layout: 'anchor',
  365. defaultType: 'textfield',
  366. items: [{
  367. fieldLabel: 'Last Name',
  368. afterLabelTextTpl: required,
  369. allowBlank: false,
  370. name: 'last',
  371. anchor:'95%'
  372. },{
  373. fieldLabel: 'Email',
  374. afterLabelTextTpl: required,
  375. allowBlank: false,
  376. name: 'email',
  377. vtype:'email',
  378. anchor:'95%'
  379. }]
  380. }]
  381. },{
  382. xtype:'tabpanel',
  383. plain:true,
  384. activeTab: 0,
  385. height:235,
  386. defaults:{
  387. bodyPadding: 10
  388. },
  389. items:[{
  390. title:'Personal Details',
  391. defaults: {
  392. width: 230
  393. },
  394. defaultType: 'textfield',
  395. items: [{
  396. fieldLabel: 'First Name',
  397. name: 'first',
  398. value: 'Jamie'
  399. },{
  400. fieldLabel: 'Last Name',
  401. name: 'last',
  402. value: 'Avins'
  403. },{
  404. fieldLabel: 'Company',
  405. name: 'company',
  406. value: 'Ext JS'
  407. }, {
  408. fieldLabel: 'Email',
  409. name: 'email',
  410. vtype:'email'
  411. }]
  412. },{
  413. title:'Phone Numbers',
  414. defaults: {
  415. width: 230
  416. },
  417. defaultType: 'textfield',
  418. items: [{
  419. fieldLabel: 'Home',
  420. name: 'home',
  421. value: '(888) 555-1212'
  422. },{
  423. fieldLabel: 'Business',
  424. name: 'business'
  425. },{
  426. fieldLabel: 'Mobile',
  427. name: 'mobile'
  428. },{
  429. fieldLabel: 'Fax',
  430. name: 'fax'
  431. }]
  432. },{
  433. cls: 'x-plain',
  434. title: 'Biography',
  435. layout: 'fit',
  436. items: {
  437. xtype: 'htmleditor',
  438. name: 'bio2',
  439. fieldLabel: 'Biography'
  440. }
  441. }]
  442. }],
  443. buttons: [{
  444. text: 'Save',
  445. handler: function() {
  446. this.up('form').getForm().isValid();
  447. }
  448. },{
  449. text: 'Cancel',
  450. handler: function() {
  451. this.up('form').getForm().reset();
  452. }
  453. }]
  454. });
  455. tab2.render(document.body);
  456. });