users.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. Ext.ns('fpWeb');
  2. fpWeb.ShowPage = function () {
  3. var myproxy = new Ext.data.HttpProxy ( {
  4. api : {
  5. read: "combined.cgi/Provider/Users/Read/",
  6. update: "combined.cgi/Provider/Users/Update/",
  7. create: "combined.cgi/Provider/Users/Insert/",
  8. destroy: "combined.cgi/Provider/Users/Delete/"
  9. }
  10. });
  11. var myreader = new Ext.data.JsonReader ({
  12. root: "rows",
  13. successProperty : 'success',
  14. idProperty: "U_ID",
  15. messageProperty: 'message', // Must be specified here
  16. fields: ["U_ID","U_LOGIN","U_NAME","U_EMAIL", "U_PASSWORD"]
  17. });
  18. var mywriter = new Ext.data.JsonWriter({
  19. encode: true,
  20. writeAllFields: true,
  21. idProperty: "U_ID"
  22. });
  23. var data = new Ext.data.Store({
  24. proxy: myproxy,
  25. reader: myreader,
  26. writer: mywriter,
  27. autoSave: false,
  28. idProperty: "U_ID",
  29. });
  30. // Listen to errors.
  31. data.addListener('exception', function(proxy, type, action, options, res) {
  32. if (type === 'remote') {
  33. Ext.Msg.show({
  34. title: 'REMOTE EXCEPTION',
  35. msg: res.message,
  36. icon: Ext.MessageBox.ERROR,
  37. buttons: Ext.Msg.OK
  38. });
  39. }
  40. });
  41. data.load({ params:{start: 0, limit: 30}});
  42. var grid = new Ext.grid.EditorGridPanel({
  43. renderTo: Ext.getBody(),
  44. frame: true,
  45. title: "Known users",
  46. height: 600,
  47. width: 800,
  48. store: data,
  49. columns: [
  50. {header: 'ID', dataIndex: "U_ID", sortable: true, hidden: true},
  51. {header: 'Login', dataIndex: "U_LOGIN", sortable: true, editor: new Ext.form.TextField({allowBlank: false})},
  52. {header: 'Name', dataIndex: "U_NAME", sortable: true, editor: new Ext.form.TextField({allowBlank: false}), width : 200},
  53. {header: 'Email', dataIndex: "U_EMAIL", sortable: true, editor: new Ext.form.TextField({allowBlank: false}), width : 200},
  54. {header: 'Password', dataIndex: "U_PASSWORD", sortable: true, editor: new Ext.form.TextField()},
  55. ],
  56. bbar: new Ext.PagingToolbar({
  57. pageSize: 30,
  58. store: data,
  59. displayInfo: true
  60. }),
  61. tbar : [{
  62. text: 'Add',
  63. iconCls: 'icon-add',
  64. handler: function(btn, ev) {
  65. var u = new grid.store.recordType();
  66. grid.stopEditing();
  67. grid.store.insert(0, u);
  68. grid.startEditing(0, 1);
  69. },
  70. scope: grid
  71. }, '-', {
  72. text: 'Delete',
  73. iconCls: 'icon-delete',
  74. handler: function(btn, ev) {
  75. var index = grid.getSelectionModel().getSelectedCell();
  76. if (!index) {
  77. return false;
  78. }
  79. var rec = grid.store.getAt(index[0]);
  80. grid.store.remove(rec);
  81. },
  82. scope: grid
  83. }, '-', {
  84. text: 'Save',
  85. iconCls: 'icon-save',
  86. handler: function(btn, ev) {
  87. grid.store.save();
  88. },
  89. scope: grid
  90. },'->', {
  91. text: 'Log out',
  92. iconCls: 'logout',
  93. handler: function () {
  94. SessionManagement.Logout(function (provider,response) {
  95. if (response.result=='Bye') {
  96. window.location='combined.html';
  97. }
  98. });
  99. }
  100. }
  101. ]
  102. // F.ContentToStream(M);
  103. });
  104. grid.show();
  105. }
  106. Ext.onReady(fpWeb.ShowPage);