rails_db_admin 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_16x16.png +0 -0
  3. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_24x24.png +0 -0
  4. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_32x32.png +0 -0
  5. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_64x64.png +0 -0
  6. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_light_16x16.png +0 -0
  7. data/app/assets/images/splash/db_admin_splash.png +0 -0
  8. data/{public → app/assets}/images/splash/images/console-icon.png +0 -0
  9. data/{public → app/assets}/images/splash/images/data-model-icon.png +0 -0
  10. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/app.js +20 -0
  11. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/database_combo.js +1 -1
  12. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/module.js +227 -135
  13. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/queries_tree_menu.js +6 -6
  14. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js +383 -0
  15. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/readonly_table_data_grid.js +0 -0
  16. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/ParamWindow.js +426 -0
  17. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/ParamsManager.js +177 -0
  18. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/RolesPanel.js +95 -0
  19. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/SetDefaultWindow.js +244 -0
  20. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/Settings.js +155 -0
  21. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/TreePanel.js +391 -0
  22. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js +163 -0
  23. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/tables_tree_menu.js +5 -3
  24. data/app/assets/javascripts/erp_app/shared/MultiOption.js +151 -0
  25. data/app/assets/javascripts/erp_app/shared/ReportsParams.js +289 -0
  26. data/app/assets/javascripts/erp_app/shared/rails_db_admin_shared.js +13 -0
  27. data/{public/stylesheets/erp_app/desktop/applications/rails_db_admin/rails_db_admin.css → app/assets/stylesheets/erp_app/shared/rails_db_admin_shared.css} +5 -10
  28. data/app/controllers/rails_db_admin/erp_app/desktop/base_controller.rb +7 -6
  29. data/app/controllers/rails_db_admin/erp_app/desktop/queries_controller.rb +88 -74
  30. data/app/controllers/rails_db_admin/erp_app/desktop/reports_controller.rb +361 -30
  31. data/app/controllers/rails_db_admin/reports/base_controller.rb +105 -22
  32. data/app/mailers/report_mailer.rb +15 -0
  33. data/app/models/report.rb +227 -14
  34. data/app/views/rails_db_admin/reports/base/error_report.erb +27 -0
  35. data/app/views/report_mailer/email_report.html.erb +255 -0
  36. data/config/routes.rb +2 -1
  37. data/db/data_migrations/20110816005525_rails_db_admin_application.rb +6 -14
  38. data/db/data_migrations/20151015093724_add_report_role_type.rb +15 -0
  39. data/db/migrate/20121210160131_add_reports.rb +2 -0
  40. data/db/migrate/20150926061259_add_meta_data_to_reports.rb +9 -0
  41. data/lib/rails_db_admin.rb +4 -2
  42. data/lib/rails_db_admin/engine.rb +12 -4
  43. data/lib/rails_db_admin/erp_string_parser.rb +26 -0
  44. data/lib/rails_db_admin/extensions/railties/action_view/helpers/report_helper.rb +167 -10
  45. data/lib/rails_db_admin/extjs/json_data_builder.rb +36 -20
  46. data/lib/rails_db_admin/query_params.rb +14 -0
  47. data/lib/rails_db_admin/query_support.rb +56 -46
  48. data/lib/rails_db_admin/services/report_helper.rb +241 -0
  49. data/lib/rails_db_admin/version.rb +1 -1
  50. metadata +41 -30
  51. data/app/assets/javascripts/rails_db_admin/application.js +0 -9
  52. data/app/assets/stylesheets/rails_db_admin/application.css +0 -7
  53. data/app/views/rails_db_admin/reports/base/show_report.erb +0 -11
  54. data/db/migrate/20131112013053_add_rails_db_admin_missing_indexes.rb +0 -17
  55. data/lib/rails_db_admin/report_support.rb +0 -52
  56. data/public/images/splash/splash.png +0 -0
  57. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js +0 -223
  58. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/report_panel.js +0 -78
  59. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/reports_tree_panel.js +0 -237
  60. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js +0 -136
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3585669877d1680f37b6daf89d11effe18c6f4ed
4
- data.tar.gz: 17cecfddcfb176df82f5e8f2957f018b8189aa4c
3
+ metadata.gz: 819efd23c003fa483f7ab527c7506d53b6314f4f
4
+ data.tar.gz: 7108ee71fe7536b9b213edf141ea001b8705408f
5
5
  SHA512:
6
- metadata.gz: fa9a5af45478f74855a41a557c6bf59fe4f54b064e480e18d56be5852db33a95d16d718eb4bbe2eed24d1ca8e7f56007165ddadc509b86b9be306dc9a61b478d
7
- data.tar.gz: f19151aeec5d273e695e3cf61ce77d63b67510a268f4e3b7e55fa08e6366493d1a7b9286da095bc29e6467d7a3466b9153e58b8e8247454f3252fe65674fc408
6
+ metadata.gz: 61af3dd640ca9127245f8ed2a8af9a5c54ee64245cd0d0236d8b65b08065023ef9dc1762c8c4589b8d366bd1c190bf5e9684e280d33fd0b74a0067a265e34a09
7
+ data.tar.gz: 107e4ee3addec7311d455fd4e01167964c4358cb2231c7c04d292cd436f491d72c8497a302d60ddb5649f3416beabe6428bbb264a8854ec52e91e97a797632ac
@@ -0,0 +1,20 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require ./module
14
+ //= require ./database_combo
15
+ //= require ./queries_tree_menu
16
+ //= require ./query_panel
17
+ //= require ./readonly_table_data_grid
18
+ //= require ./splash_screen
19
+ //= require ./tables_tree_menu
20
+ //= require_tree ./reports
@@ -43,7 +43,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.DatabaseComboBox",
43
43
  listeners: {
44
44
  'select': function (combo, record, index) {
45
45
  // switch databases
46
- combo.initialConfig.module.connectToDatatbase();
46
+ combo.initialConfig.module.connectToDatabase();
47
47
  },
48
48
  render: function (combo) {
49
49
  combo.getStore().load();
@@ -2,23 +2,23 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
2
2
  extend: "Ext.ux.desktop.Module",
3
3
  id: 'rails_db_admin-win',
4
4
 
5
- getWindow: function () {
5
+ getWindow: function() {
6
6
  return this.app.getDesktop().getWindow('rails_db_admin');
7
7
  },
8
8
 
9
- queriesTreePanel: function () {
9
+ queriesTreePanel: function() {
10
10
  return this.accordion.down('.railsdbadmin_queriestreemenu');
11
11
  },
12
12
 
13
- setWindowStatus: function (status) {
13
+ setWindowStatus: function(status) {
14
14
  this.getWindow().setStatus(status);
15
15
  },
16
16
 
17
- clearWindowStatus: function () {
17
+ clearWindowStatus: function() {
18
18
  this.getWindow().clearStatus();
19
19
  },
20
20
 
21
- getTableData: function (table) {
21
+ getTableData: function(table) {
22
22
  var self = this,
23
23
  id = 'ext-' + table + '-data';
24
24
 
@@ -31,6 +31,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
31
31
  setupUrl: '/rails_db_admin/erp_app/desktop/base/setup_table_grid/' + table,
32
32
  dataUrl: '/rails_db_admin/erp_app/desktop/base/table_data/' + table,
33
33
  editable: true,
34
+ searchable: true,
34
35
  page: true,
35
36
  pageSize: 25,
36
37
  displayMsg: 'Displaying {0} - {1} of {2}',
@@ -42,7 +43,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
42
43
  },
43
44
  grid_listeners: {
44
45
  validateedit: {
45
- fn: function (editor, e) {
46
+ fn: function(editor, e) {
46
47
  this.store.proxy.setOldModel(e.record);
47
48
  }
48
49
  }
@@ -50,16 +51,6 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
50
51
  proxy: {
51
52
  type: 'rest',
52
53
  url: '/rails_db_admin/erp_app/desktop/base/table_data/' + table,
53
- //private var to store the previous model in an
54
- //update operation
55
- oldModel: null,
56
- setOldModel: function (old_model) {
57
- this.oldModel = old_model.copy();
58
- },
59
- update: function (operation, callback, scope) {
60
- operation.records.push(this.oldModel);
61
- Ext.data.proxy.Rest.superclass.update.call(this, operation, callback, scope);
62
- },
63
54
  reader: {
64
55
  type: 'json',
65
56
  successProperty: 'success',
@@ -72,7 +63,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
72
63
  root: 'data'
73
64
  },
74
65
  listeners: {
75
- exception: function (proxy, response, operation) {
66
+ exception: function(proxy, response, operation) {
76
67
  var msg;
77
68
  if (operation.getError() === undefined) {
78
69
  var responseObject = Ext.JSON.decode(response.responseText);
@@ -97,7 +88,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
97
88
  self.container.setActiveTab(grid);
98
89
  },
99
90
 
100
- selectTopFifty: function (table) {
91
+ selectTopFifty: function(table) {
101
92
  this.setWindowStatus('Selecting Top 50 from ' + table + '...');
102
93
  var self = this;
103
94
 
@@ -107,7 +98,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
107
98
  params: {
108
99
  database: self.getDatabase()
109
100
  },
110
- success: function (responseObject) {
101
+ success: function(responseObject) {
111
102
  self.clearWindowStatus();
112
103
  var response = Ext.decode(responseObject.responseText);
113
104
  var sql = response.sql;
@@ -139,15 +130,14 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
139
130
  //queryPanel.gridContainer.add(readOnlyDataGrid);
140
131
  //queryPanel.gridContainer.getLayout().setActiveItem(0);
141
132
  },
142
- failure: function () {
133
+ failure: function() {
143
134
  self.clearWindowStatus();
144
135
  Ext.Msg.alert('Status', 'Error loading grid');
145
136
  }
146
137
  });
147
138
  },
148
139
 
149
-
150
- addConsolePanel: function () {
140
+ addConsolePanel: function() {
151
141
  this.container.add({
152
142
  xtype: 'compass_ae_console_panel',
153
143
  module: this
@@ -156,15 +146,16 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
156
146
 
157
147
  },
158
148
 
159
- addNewQueryTab: function () {
149
+ addNewQueryTab: function() {
160
150
  this.container.add({
161
151
  xtype: 'railsdbadmin_querypanel',
152
+ isNewQuery: true,
162
153
  module: this
163
154
  });
164
155
  this.container.setActiveTab(this.container.items.length - 1);
165
156
  },
166
157
 
167
- connectToDatatbase: function () {
158
+ connectToDatabase: function() {
168
159
  var database = this.getDatabase();
169
160
  var tablestreePanelStore = this.accordion.down('.railsdbadmin_tablestreemenu').store;
170
161
  var queriesTreePanelStore = this.accordion.down('.railsdbadmin_queriestreemenu').store;
@@ -188,17 +179,16 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
188
179
  queriesTreePanelStore.load();
189
180
  },
190
181
 
191
- getDatabase: function () {
182
+ getDatabase: function() {
192
183
  return Ext.getCmp('databaseCombo').getValue();
193
184
  },
194
185
 
195
- deleteQuery: function (queryName) {
186
+ deleteQuery: function(queryName) {
196
187
  var self = this;
197
- Ext.MessageBox.confirm('Confirm', 'Are you sure you want to delete this query?', function (btn) {
188
+ Ext.MessageBox.confirm('Confirm', 'Are you sure you want to delete this query?', function(btn) {
198
189
  if (btn === 'no') {
199
190
  return false;
200
- }
201
- else if (btn === 'yes') {
191
+ } else if (btn === 'yes') {
202
192
  self.setWindowStatus('Deleting ' + queryName + '...');
203
193
  var database = self.getDatabase();
204
194
  Ext.Ajax.request({
@@ -207,11 +197,18 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
207
197
  database: database,
208
198
  query_name: queryName
209
199
  },
210
- success: function (responseObject) {
200
+ success: function(responseObject) {
211
201
  self.clearWindowStatus();
202
+ var centerRegion = Ext.getCmp('rails_db_admin').down('#centerRegion'),
203
+ itemId = Compass.ErpApp.Utility.Encryption.MD5(queryName),
204
+ item = centerRegion.down('#' + itemId);
205
+
206
+ if (!Compass.ErpApp.Utility.isBlank(item)) {
207
+ centerRegion.remove(item);
208
+ }
209
+
212
210
  var response = Ext.decode(responseObject.responseText);
213
211
  if (response.success) {
214
- Ext.Msg.alert('Error', 'Query deleted');
215
212
  var queriesTreePanelStore = self.accordion.down('.railsdbadmin_queriestreemenu').store;
216
213
  queriesTreePanelStore.setProxy({
217
214
  type: 'ajax',
@@ -221,13 +218,12 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
221
218
  }
222
219
  });
223
220
  queriesTreePanelStore.load();
224
- }
225
- else {
221
+ } else {
226
222
  Ext.Msg.alert('Error', response.exception);
227
223
  }
228
224
 
229
225
  },
230
- failure: function () {
226
+ failure: function() {
231
227
  self.clearWindowStatus();
232
228
  Ext.Msg.alert('Status', 'Error deleting query');
233
229
  }
@@ -236,49 +232,74 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
236
232
  });
237
233
  },
238
234
 
239
- displayAndExecuteQuery: function (queryName) {
235
+ displayAndExecuteQuery: function(queryName) {
240
236
  this.setWindowStatus('Executing ' + queryName + '...');
241
- var self = this;
242
- var database = this.getDatabase();
237
+ var self = this,
238
+ database = this.getDatabase(),
239
+ itemId = Compass.ErpApp.Utility.Encryption.MD5(queryName);
240
+
243
241
  Ext.Ajax.request({
244
242
  url: '/rails_db_admin/erp_app/desktop/queries/open_and_execute_query/',
245
243
  params: {
246
244
  database: database,
247
245
  query_name: queryName
248
246
  },
249
- success: function (responseObject) {
250
- var response = Ext.decode(responseObject.responseText);
251
- var query = response.query;
252
-
253
- var queryPanel = null;
247
+ success: function(responseObject) {
248
+ var response = Ext.decode(responseObject.responseText),
249
+ query = response.query,
250
+ queryPanel = null;
254
251
 
255
252
  if (response.success) {
256
253
  self.clearWindowStatus();
257
254
  var columns = response.columns;
258
255
  var fields = response.fields;
259
256
  var data = response.data;
257
+ var centerRegion = Ext.getCmp('rails_db_admin').down('#centerRegion');
258
+ var item = centerRegion.down('#' + itemId);
259
+
260
+ if (Compass.ErpApp.Utility.isBlank(item)) {
261
+ var readOnlyDataGrid = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.ReadOnlyTableDataGrid', {
262
+ region: 'south',
263
+ columns: columns,
264
+ fields: fields,
265
+ data: data,
266
+ collapseDirection: 'bottom',
267
+ height: '50%',
268
+ collapsible: true
269
+ });
270
+ item = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
271
+ module: self,
272
+ title: queryName,
273
+ itemId: itemId,
274
+ sqlQuery: query,
275
+ southRegion: readOnlyDataGrid,
276
+ closable: true
277
+ });
278
+ self.container.add(item);
279
+ } else {
280
+ if (!Ext.isEmpty(item.down('railsdbadmin_readonlytabledatagrid'))) {
281
+ var jsonStore = new Ext.data.JsonStore({
282
+ fields: fields,
283
+ data: data
284
+ });
260
285
 
261
- var readOnlyDataGrid = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.ReadOnlyTableDataGrid', {
262
- region: 'south',
263
- columns: columns,
264
- fields: fields,
265
- data: data,
266
- collapseDirection: 'bottom',
267
- height: '50%',
268
- collapsible: true
269
- });
270
-
271
- queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
272
- module: self,
273
- sqlQuery: query,
274
- southRegion: readOnlyDataGrid,
275
- closable: true
276
- });
286
+ item.down('railsdbadmin_readonlytabledatagrid').reconfigure(jsonStore, columns);
287
+ } else {
288
+ var readOnlyDataGrid = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.ReadOnlyTableDataGrid', {
289
+ layout: 'fit',
290
+ columns: columns,
291
+ fields: fields,
292
+ data: data
293
+ });
277
294
 
278
- self.container.add(queryPanel);
279
- self.container.setActiveTab(queryPanel.id);
280
- }
281
- else {
295
+ var cardPanel = item.down('#resultCardPanel');
296
+ cardPanel.removeAll(true);
297
+ cardPanel.add(readOnlyDataGrid);
298
+ cardPanel.getLayout().setActiveItem(readOnlyDataGrid);
299
+ }
300
+ }
301
+ self.container.setActiveTab(item);
302
+ } else {
282
303
  Ext.Msg.alert('Error', response.exception);
283
304
  queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
284
305
  module: self,
@@ -291,7 +312,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
291
312
  }
292
313
 
293
314
  },
294
- failure: function () {
315
+ failure: function() {
295
316
  self.clearWindowStatus();
296
317
  Ext.Msg.alert('Status', 'Error loading query');
297
318
  }
@@ -300,35 +321,70 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
300
321
 
301
322
  //************ Reporting ************************************************
302
323
 
303
- editReport: function (reportObj) {
324
+ editQuery: function(report, query) {
325
+ var self = this;
326
+ var centerRegion = Ext.getCmp('rails_db_admin').down('#centerRegion');
327
+ var itemId = report.get('internalIdentifier') + '-query';
328
+ var item = centerRegion.getComponent(itemId);
329
+
330
+ if (Compass.ErpApp.Utility.isBlank(item)) {
331
+ item = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
332
+ module: self,
333
+ itemId: itemId,
334
+ isReportQuery: true,
335
+ hideSave: true,
336
+ title: 'Query' + ' (' + report.get('text') + ')',
337
+ sqlQuery: query,
338
+ report: report,
339
+ closable: true
340
+ });
341
+ centerRegion.add(item);
342
+ }
343
+
344
+ centerRegion.setActiveTab(item);
345
+ },
346
+
347
+ showImage: function(node, reportId) {
348
+ var self = this;
349
+ var centerRegion = self.container;
350
+ var itemId = Compass.ErpApp.Utility.Encryption.MD5(node.data.id);
351
+ var item = centerRegion.getComponent(itemId);
352
+ var imgSrc = '/download/' + node.data.text + '?path=' + node.data.parentId;
353
+ var title = node.data.text + ' (' + node.parentNode.data.reportName + ')'
354
+ if (Compass.ErpApp.Utility.isBlank(item)) {
355
+ item = Ext.create('Ext.panel.Panel', {
356
+ closable: true,
357
+ itemId: itemId,
358
+ title: title,
359
+ layout: 'fit',
360
+ html: '<img src="' + imgSrc + '" />'
361
+ });
362
+ self.container.add(item);
363
+ }
364
+ self.container.setActiveTab(item);
365
+ },
366
+
367
+ loadReport: function(report) {
304
368
  var me = this;
305
369
 
306
- me.container.add({
307
- title: reportObj.title,
308
- xtype: 'railsdbadmin_reportpanel',
309
- module: me,
310
- query: reportObj.query,
311
- reportId: reportObj.id,
312
- template: reportObj.template,
313
- internalIdentifier: reportObj.internalIdentifier,
314
- closable: true
315
- });
316
- me.container.setActiveTab(me.container.items.length - 1);
370
+ me.eastRegion.show();
371
+ me.eastRegion.down('railsdbadminreportssettings').setReportSettings(report);
372
+ me.eastRegion.down('railsdbadminreportsparamsmanager').setReportData(report);
373
+ me.eastRegion.down('railsdbadminreportsrolespanel').setReportRoles(report);
317
374
  },
318
375
 
319
376
  //***********************************************************************
320
377
 
321
- init: function () {
378
+ init: function() {
322
379
  this.launcher = {
323
380
  text: 'Database Tools',
324
381
  iconCls: 'icon-rails_db_admin',
325
382
  handler: this.createWindow,
326
383
  scope: this
327
-
328
384
  };
329
385
  },
330
386
 
331
- displayQuery: function (queryName) {
387
+ displayQuery: function(queryName) {
332
388
  this.setWindowStatus('Retrieving ' + queryName + '...');
333
389
  var self = this;
334
390
  var database = this.getDatabase();
@@ -338,25 +394,29 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
338
394
  database: database,
339
395
  query_name: queryName
340
396
  },
341
- success: function (responseObject) {
397
+ success: function(responseObject) {
342
398
  var response = Ext.decode(responseObject.responseText);
343
399
  var query = response.query;
344
-
345
400
  var queryPanel = null;
346
401
 
347
402
  if (response.success) {
348
- self.clearWindowStatus();
403
+ var centerRegion = Ext.getCmp('rails_db_admin').down('#centerRegion');
404
+ var itemId = Compass.ErpApp.Utility.Encryption.MD5(queryName);
405
+ var item = centerRegion.down('#' + itemId);
349
406
 
350
- queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
351
- module: self,
352
- closable: true,
353
- sqlQuery: query
354
- });
355
-
356
- self.container.add(queryPanel);
357
- self.container.setActiveTab(self.container.items.length - 1);
358
- }
359
- else {
407
+ self.clearWindowStatus();
408
+ if (Compass.ErpApp.Utility.isBlank(item)) {
409
+ var item = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
410
+ module: self,
411
+ closable: true,
412
+ sqlQuery: query,
413
+ title: queryName,
414
+ itemId: itemId
415
+ });
416
+ centerRegion.add(item);
417
+ }
418
+ centerRegion.setActiveTab(item);
419
+ } else {
360
420
  Ext.Msg.alert('Error', response.exception);
361
421
  queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
362
422
  module: self,
@@ -369,19 +429,19 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
369
429
  }
370
430
 
371
431
  },
372
- failure: function () {
432
+ failure: function() {
373
433
  self.clearWindowStatus();
374
434
  Ext.Msg.alert('Status', 'Error loading query');
375
435
  }
376
436
  });
377
437
  },
378
438
 
379
-
380
- openIframeInTab: function (title, url) {
439
+ openIframeInTab: function(title, url) {
381
440
  var self = this;
382
441
 
383
442
  var item = Ext.create('Ext.panel.Panel', {
384
443
  iframeId: 'tutorials_iframe',
444
+ itemId: 'preview_report',
385
445
  closable: true,
386
446
  layout: 'fit',
387
447
  title: title,
@@ -392,36 +452,46 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
392
452
  self.container.setActiveTab(item);
393
453
  },
394
454
 
395
- createWindow: function () {
396
-
397
- var self = this;
455
+ createWindow: function() {
456
+ var me = this;
398
457
  var desktop = this.app.getDesktop();
399
458
  var win = desktop.getWindow('rails_db_admin');
459
+
400
460
  if (!win) {
401
461
  this.container = Ext.create('Ext.tab.Panel', {
402
462
  itemId: 'centerRegion',
403
463
  region: 'center',
404
464
  margins: '0 0 0 0',
405
465
  border: false,
406
- minsize: 300
466
+ minsize: 300,
467
+ listeners: {
468
+ beforetabchange: function(tabPanel, newPanel, oldPanel, eOpts) {
469
+ var isActivatingReportPanel =
470
+ oldPanel &&
471
+ newPanel.isXType('railsdbadmin_querypanel') &&
472
+ newPanel.isReportQuery;
473
+
474
+ // the panel to be activated is the report panel show the query params panel in the east region else hide the east region
475
+ if (isActivatingReportPanel) {
476
+ me.loadReport(newPanel.report);
477
+ } else {
478
+ me.eastRegion.hide();
479
+ }
480
+ }
481
+ }
407
482
  });
408
483
 
409
484
  this.accordion = Ext.create('Ext.panel.Panel', {
410
- dockedItems: [
411
- {
412
- xtype: 'toolbar',
413
- dock: 'top',
414
- items: [
415
- {
416
- text: 'Database:'
417
- },
418
- {
419
- xtype: 'railsdbadmin_databasecombo',
420
- module: self
421
- }
422
- ]
423
- }
424
- ],
485
+ dockedItems: [{
486
+ xtype: 'toolbar',
487
+ dock: 'top',
488
+ items: [{
489
+ text: 'Database:'
490
+ }, {
491
+ xtype: 'railsdbadmin_databasecombo',
492
+ module: this
493
+ }]
494
+ }],
425
495
  ui: 'rounded-panel',
426
496
  region: 'west',
427
497
  margins: '0 0 0 0',
@@ -431,22 +501,40 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
431
501
  header: false,
432
502
  split: true,
433
503
  layout: 'accordion',
434
- items: [
435
- {
436
- xtype: 'railsdbadmin_tablestreemenu',
437
- module: this
438
- },
439
- {
440
- xtype: 'railsdbadmin_queriestreemenu',
441
- module: this
442
- },
443
- {
444
- xtype: 'railsdbadmin_reportstreepanel',
445
- module: this
446
- }
447
- ]
504
+ items: [{
505
+ xtype: 'railsdbadmin_tablestreemenu',
506
+ module: this
507
+ }, {
508
+ xtype: 'railsdbadmin_queriestreemenu',
509
+ module: this
510
+ }, {
511
+ xtype: 'railsdbadmin_reportstreepanel',
512
+ module: this
513
+ }]
448
514
  });
449
515
 
516
+ this.eastRegion = Ext.create('Ext.panel.Panel', {
517
+ ui: 'rounded-panel',
518
+ region: 'east',
519
+ id: 'reports_accordian_panel',
520
+ margins: '0 0 0 0',
521
+ cmargins: '0 0 0 0',
522
+ width: 300,
523
+ collapsible: true,
524
+ header: false,
525
+ split: true,
526
+ layout: 'accordion',
527
+ hidden: true,
528
+ items: [{
529
+ xtype: 'railsdbadminreportssettings'
530
+ }, {
531
+ xtype: 'railsdbadminreportsparamsmanager'
532
+ }, {
533
+ xtype: 'railsdbadminreportsrolespanel'
534
+ }]
535
+ });
536
+
537
+
450
538
  win = desktop.createWindow({
451
539
  id: 'rails_db_admin',
452
540
  title: 'RailsDBAdmin',
@@ -458,10 +546,14 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
458
546
  animCollapse: false,
459
547
  constrainHeader: true,
460
548
  layout: 'border',
461
- items: [this.accordion, this.container]
549
+ items: [
550
+ this.accordion,
551
+ this.container,
552
+ this.eastRegion
553
+ ]
462
554
  });
463
555
 
464
- win.addListener('render', function (win) {
556
+ win.addListener('render', function(win) {
465
557
  win.down('#centerRegion').add({
466
558
  xtype: 'railsdbadmin_splash_screen',
467
559
  module: self,
@@ -478,18 +570,18 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
478
570
  Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.BooleanEditor", {
479
571
  extend: "Ext.form.ComboBox",
480
572
  alias: 'widget.booleancolumneditor',
481
- initComponent: function () {
573
+ initComponent: function() {
482
574
  this.store = Ext.create('Ext.data.ArrayStore', {
483
575
  fields: ['display', 'value'],
484
576
  data: [
485
- ['False', '0'],
486
- ['True', '1']
577
+ ['False', false],
578
+ ['True', true]
487
579
  ]
488
580
  });
489
581
 
490
582
  this.callParent(arguments);
491
583
  },
492
- constructor: function (config) {
584
+ constructor: function(config) {
493
585
  config = Ext.apply({
494
586
  valueField: 'value',
495
587
  displayField: 'display',
@@ -502,6 +594,6 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.BooleanEditor", {
502
594
  }
503
595
  });
504
596
 
505
- Compass.ErpApp.Desktop.Applications.RailsDbAdmin.renderBooleanColumn = function (v) {
597
+ Compass.ErpApp.Desktop.Applications.RailsDbAdmin.renderBooleanColumn = function(v) {
506
598
  return (v == 1) ? "True" : "False";
507
- };
599
+ };