rails_db_admin 2.1.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/rails_db_admin/erp_app/desktop/base_controller.rb +6 -4
  3. data/app/controllers/rails_db_admin/erp_app/desktop/queries_controller.rb +1 -1
  4. data/db/migrate/20131112013053_add_rails_db_admin_missing_indexes.rb +17 -0
  5. data/lib/rails_db_admin.rb +0 -1
  6. data/lib/rails_db_admin/engine.rb +1 -1
  7. data/lib/rails_db_admin/extjs/json_column_builder.rb +53 -43
  8. data/lib/rails_db_admin/table_support.rb +24 -15
  9. data/lib/rails_db_admin/version.rb +7 -3
  10. data/public/images/icons/rails_db_admin/rails_db_admin_16x16.png +0 -0
  11. data/public/images/icons/rails_db_admin/rails_db_admin_64x64.png +0 -0
  12. data/public/images/icons/rails_db_admin/rails_db_admin_light_16x16.png +0 -0
  13. data/public/images/splash/images/console-icon.png +0 -0
  14. data/public/images/splash/images/data-model-icon.png +0 -0
  15. data/public/images/splash/splash.png +0 -0
  16. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/database_combo.js +28 -25
  17. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/module.js +276 -215
  18. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/queries_tree_menu.js +3 -3
  19. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js +100 -97
  20. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/readonly_table_data_grid.js +22 -18
  21. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/report_panel.js +1 -1
  22. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/reports_tree_panel.js +2 -2
  23. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js +136 -0
  24. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/tables_tree_menu.js +25 -10
  25. data/public/stylesheets/erp_app/desktop/applications/rails_db_admin/rails_db_admin.css +4 -0
  26. metadata +44 -44
  27. data/app/helpers/rails_db_admin/application_helper.rb +0 -4
  28. data/public/images/icons/rails_db_admin/rails_db_admin_48x48.png +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3585669877d1680f37b6daf89d11effe18c6f4ed
4
+ data.tar.gz: 17cecfddcfb176df82f5e8f2957f018b8189aa4c
5
+ SHA512:
6
+ metadata.gz: fa9a5af45478f74855a41a557c6bf59fe4f54b064e480e18d56be5852db33a95d16d718eb4bbe2eed24d1ca8e7f56007165ddadc509b86b9be306dc9a61b478d
7
+ data.tar.gz: f19151aeec5d273e695e3cf61ce77d63b67510a268f4e3b7e55fa08e6366493d1a7b9286da095bc29e6467d7a3466b9153e58b8e8247454f3252fe65674fc408
@@ -26,20 +26,22 @@ module RailsDbAdmin
26
26
  tables << {:name => table, :display => table} unless table.blank?
27
27
  end
28
28
 
29
- tables = tables.select { |table| table[:name] =~ Regexp.new("^#{params[:name]}.", Regexp::IGNORECASE)}
29
+ tables = tables.select do |table|
30
+ (table[:name] =~ Regexp.new("^#{params[:name]}.", Regexp::IGNORECASE)) || table[:name] == params[:name]
31
+ end
30
32
  tables.sort! { |a, b| a[:name].downcase <=> b[:name].downcase }
31
33
 
32
34
  tables.each do |table|
33
35
  result_hash << {:isTable => true,
34
- :text => table[:display],
35
36
  :id => table[:display],
36
- :iconCls => 'icon-data',
37
+ :text => table[:display],
38
+ :iconCls => 'icon-db-table',
37
39
  :leaf => false}
38
40
  end
39
41
  else
40
42
  columns = @database_connection_class.connection.columns(params[:node])
41
43
  columns.each do |column|
42
- result_hash << {:text => "#{column.name} : #{column.type}", :iconCls => 'icon-gear', :leaf => true}
44
+ result_hash << {:text => "#{column.name} : #{column.type}", :iconCls => 'icon-db-column', :leaf => true}
43
45
  end
44
46
  end
45
47
 
@@ -37,7 +37,7 @@ module RailsDbAdmin
37
37
  queries = []
38
38
 
39
39
  queries = names.collect do |name|
40
- {:text => name, :id => name, :iconCls => 'icon-document', :leaf => true}
40
+ {:text => name, :id => name, :iconCls => 'icon-sql', :leaf => true}
41
41
  end unless names.empty?
42
42
 
43
43
  render :json => queries
@@ -0,0 +1,17 @@
1
+ class AddRailsDbAdminMissingIndexes < ActiveRecord::Migration
2
+ def up
3
+
4
+ if indexes(:reports).select {|index| index.name == 'reports_internal_identifier_idx'}.empty?
5
+ add_index :reports, :internal_identifier, :name => 'reports_internal_identifier_idx'
6
+ end
7
+
8
+ end
9
+
10
+ def down
11
+
12
+ unless indexes(:reports).select {|index| index.name == 'reports_internal_identifier_idx'}.empty?
13
+ remove_index :reports, :internal_identifier
14
+ end
15
+
16
+ end
17
+ end
@@ -1,6 +1,5 @@
1
1
  #compass libraries
2
2
  require 'erp_app'
3
- require 'erp_forms'
4
3
 
5
4
  require "rails_db_admin/extensions/railties/action_view/base"
6
5
  require "rails_db_admin/version"
@@ -5,7 +5,7 @@ module RailsDbAdmin
5
5
  config.rails_db_admin = RailsDbAdmin::Config
6
6
 
7
7
  initializer "rails_db_admin.merge_public" do |app|
8
- app.middleware.insert_before Rack::Lock, ::ActionDispatch::Static, "#{root}/public"
8
+ app.middleware.insert_before Rack::Runtime, ::ActionDispatch::Static, "#{root}/public"
9
9
  end
10
10
 
11
11
  ErpBaseErpSvcs.register_as_compass_ae_engine(config, self)
@@ -13,9 +13,9 @@ module RailsDbAdmin
13
13
  end
14
14
  if add_fake_id
15
15
  grid_columns << {:header => "fake_id",
16
- :type => "number",
17
- :dataIndex => "fake_id",
18
- :hidden => true}
16
+ :type => "number",
17
+ :dataIndex => "fake_id",
18
+ :hidden => true}
19
19
  end
20
20
  grid_columns
21
21
  end
@@ -34,10 +34,10 @@ module RailsDbAdmin
34
34
 
35
35
  def self.build_readonly_column(column_name)
36
36
  {
37
- :header => column_name,
38
- :type => 'string',
39
- :dataIndex => column_name,
40
- :width => 150
37
+ :header => column_name,
38
+ :type => 'string',
39
+ :dataIndex => column_name,
40
+ :width => 150
41
41
  }
42
42
  end
43
43
 
@@ -46,21 +46,21 @@ module RailsDbAdmin
46
46
 
47
47
  def self.build_boolean_column(column_name)
48
48
  {
49
- :header => column_name,
50
- :type => 'boolean',
51
- :dataIndex => column_name,
52
- :width => 150,
53
- :editor => {:xtype => 'booleancolumneditor'},
54
- :renderer => NonEscapeJsonString.new("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.renderBooleanColumn")
49
+ :header => column_name,
50
+ :type => 'boolean',
51
+ :dataIndex => column_name,
52
+ :width => 150,
53
+ :editor => {:xtype => 'booleancolumneditor'},
54
+ :renderer => NonEscapeJsonString.new("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.renderBooleanColumn")
55
55
  }
56
56
  end
57
57
 
58
58
  def self.build_date_column(column_name)
59
59
  hash = {
60
- :header => column_name,
61
- :type => 'date',
62
- :dataIndex => column_name,
63
- :width => 150,
60
+ :header => column_name,
61
+ :type => 'date',
62
+ :dataIndex => column_name,
63
+ :width => 150,
64
64
  }
65
65
  hash[:editor] = {:xtype => 'textfield'} if (column_name != "created_at" && column_name != "updated_at")
66
66
 
@@ -69,10 +69,10 @@ module RailsDbAdmin
69
69
 
70
70
  def self.build_datetime_column(column_name)
71
71
  hash = {
72
- :header => column_name,
73
- :type => 'date',
74
- :dataIndex => column_name,
75
- :width => 150,
72
+ :header => column_name,
73
+ :type => 'date',
74
+ :dataIndex => column_name,
75
+ :width => 150,
76
76
  }
77
77
  hash[:editor] = {:xtype => 'textfield'} if (column_name != "created_at" && column_name != "updated_at")
78
78
 
@@ -81,30 +81,30 @@ module RailsDbAdmin
81
81
 
82
82
  def self.build_string_column(column_name)
83
83
  {
84
- :header => column_name,
85
- :type => 'string',
86
- :dataIndex => column_name,
87
- :width => 150,
88
- :editor => {:xtype => 'textfield'}
84
+ :header => column_name,
85
+ :type => 'string',
86
+ :dataIndex => column_name,
87
+ :width => 150,
88
+ :editor => {:xtype => 'textfield'}
89
89
  }
90
90
  end
91
91
 
92
92
  def self.build_text_column(column_name)
93
93
  {
94
- :header => column_name,
95
- :type => 'string',
96
- :dataIndex => column_name,
97
- :width => 150,
98
- :editor => {:xtype => 'textarea'}
94
+ :header => column_name,
95
+ :type => 'string',
96
+ :dataIndex => column_name,
97
+ :width => 150,
98
+ :editor => {:xtype => 'textarea'}
99
99
  }
100
100
  end
101
101
 
102
102
  def self.build_integer_column(column_name)
103
103
  hash = {
104
- :header => column_name,
105
- :type => 'number',
106
- :dataIndex => column_name,
107
- :width => 150,
104
+ :header => column_name,
105
+ :type => 'number',
106
+ :dataIndex => column_name,
107
+ :width => 150,
108
108
  }
109
109
  hash[:editor] = {:xtype => 'textfield'} if column_name != "id"
110
110
 
@@ -113,10 +113,10 @@ module RailsDbAdmin
113
113
 
114
114
  def self.build_decimal_column(column_name)
115
115
  hash = {
116
- :header => column_name,
117
- :type => 'float',
118
- :dataIndex => column_name,
119
- :width => 150,
116
+ :header => column_name,
117
+ :type => 'float',
118
+ :dataIndex => column_name,
119
+ :width => 150,
120
120
  }
121
121
  hash[:editor] = {:xtype => 'textfield'} if column_name != "id"
122
122
 
@@ -125,15 +125,25 @@ module RailsDbAdmin
125
125
 
126
126
  def self.build_float_column(column_name)
127
127
  hash = {
128
- :header => column_name,
129
- :type => 'float',
130
- :dataIndex => column_name,
131
- :width => 150,
128
+ :header => column_name,
129
+ :type => 'float',
130
+ :dataIndex => column_name,
131
+ :width => 150,
132
132
  }
133
133
  hash[:editor] = {:xtype => 'textfield'} if column_name != "id"
134
134
 
135
135
  hash
136
136
  end
137
+
138
+ def self.build_hstore_column(column_name)
139
+ {
140
+ :header => column_name,
141
+ :type => 'string',
142
+ :dataIndex => column_name,
143
+ :width => 150
144
+ }
145
+ end
146
+
137
147
  end
138
148
  end
139
149
  end
@@ -2,7 +2,7 @@ module RailsDbAdmin
2
2
  class TableSupport
3
3
 
4
4
  def initialize(database_connection_class)
5
- @connection = database_connection_class.connection
5
+ @connection = database_connection_class.connection
6
6
  end
7
7
 
8
8
  def columns(table)
@@ -25,7 +25,7 @@ module RailsDbAdmin
25
25
  data[0].delete('fake_id')
26
26
  data[1].delete('fake_id')
27
27
  data.map! do |item|
28
- item.each do |k,v|
28
+ item.each do |k, v|
29
29
  item[k] = v.to_s
30
30
  end
31
31
  item
@@ -72,27 +72,27 @@ module RailsDbAdmin
72
72
  end
73
73
 
74
74
  def primary_key(table)
75
- [@connection.primary_key(table),nil]
75
+ [@connection.primary_key(table), nil]
76
76
  end
77
77
 
78
78
  def primary_key?(table)
79
79
  @connection.supports_primary_key? && !@connection.primary_key(table).nil?
80
80
  end
81
81
 
82
-
83
- def table_contains_column(table, column_name)
84
-
85
- column_names = columns(table).map{|column| column.name.to_sym}
86
-
87
- column_names.include?(column_name)
88
- end
89
-
82
+
83
+ def table_contains_column(table, column_name)
84
+
85
+ column_names = columns(table).map { |column| column.name.to_sym }
86
+
87
+ column_names.include?(column_name)
88
+ end
89
+
90
90
  def clean_nulls!(table, data)
91
91
  if data.class == Array
92
- data.each {|x| clean_nulls!(table, x)}
92
+ data.each { |x| clean_nulls!(table, x) }
93
93
  end
94
94
 
95
- data.collect do |k,v|
95
+ data.collect do |k, v|
96
96
  if v == "" || v == 0
97
97
  column = columns(table).collect do |x|
98
98
  if (x.name == k)
@@ -117,7 +117,16 @@ module RailsDbAdmin
117
117
  # records << record
118
118
 
119
119
  # simplifying the above with to_hash.symbolize_keys
120
- records << row.to_hash.symbolize_keys
120
+ row_data = row.to_hash.symbolize_keys
121
+
122
+ # any hashes need to be converted to json strings
123
+ row_data.each do |k, v|
124
+ if v.is_a?(Hash)
125
+ row_data[k] = v.to_json
126
+ end
127
+ end
128
+
129
+ records << row_data
121
130
  end
122
131
 
123
132
  records.reverse
@@ -128,7 +137,7 @@ module RailsDbAdmin
128
137
  #calls
129
138
  def self.arel_attr data, arel_table
130
139
  cln_hsh = {}
131
- data.each do |k,v|
140
+ data.each do |k, v|
132
141
  cln_hsh[arel_table[k.to_sym]] = v
133
142
  end
134
143
  cln_hsh
@@ -1,9 +1,13 @@
1
1
  module RailsDbAdmin
2
2
  module VERSION #:nodoc:
3
- MAJOR = 2
4
- MINOR = 1
5
- TINY = 2
3
+ MAJOR = 3
4
+ MINOR = 0
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
8
8
  end
9
+
10
+ def self.version
11
+ RailsDbAdmin::VERSION::STRING
12
+ end
9
13
  end
Binary file
@@ -1,27 +1,26 @@
1
- Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.DatabaseComboBox",{
2
- extend:"Ext.form.field.ComboBox",
3
- alias:'widget.railsdbadmin_databasecombo',
4
- initComponent: function() {
1
+ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.DatabaseComboBox", {
2
+ extend: "Ext.form.field.ComboBox",
3
+ alias: 'widget.railsdbadmin_databasecombo',
4
+ initComponent: function () {
5
5
 
6
- var databaseJsonStore = new Ext.data.Store({
7
- timeout:60000,
6
+ var databaseJsonStore = Ext.create('Ext.data.Store', {
7
+ timeout: 60000,
8
8
  proxy: {
9
9
  type: 'ajax',
10
- url :'/rails_db_admin/erp_app/desktop/base/databases',
10
+ url: '/rails_db_admin/erp_app/desktop/base/databases',
11
11
  reader: {
12
12
  type: 'json',
13
13
  root: 'databases'
14
14
  }
15
15
  },
16
- fields: [{
17
- name:'value'
18
- },{
19
- name:'display'
20
- }]
16
+ fields: [
17
+ 'value',
18
+ 'display'
19
+ ]
21
20
  });
22
21
 
23
22
  var me = this;
24
- databaseJsonStore.on('load', function(store) {
23
+ databaseJsonStore.on('load', function (store) {
25
24
  me.setValue(store.first().get('value'));
26
25
  });
27
26
 
@@ -29,25 +28,29 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.DatabaseComboBox",{
29
28
  this.callParent(arguments);
30
29
  },
31
30
 
32
- constructor : function(config) {
31
+ constructor: function (config) {
33
32
  config = Ext.apply({
34
- id:'databaseCombo',
35
- valueField:'value',
36
- displayField:'display',
37
- triggerAction:'all',
38
- editable:false,
39
- forceSelection:true,
33
+ id: 'databaseCombo',
34
+ fieldStyle: {
35
+ borderRadius: '0px !important'
36
+ },
37
+ valueField: 'value',
38
+ displayField: 'display',
39
+ triggerAction: 'all',
40
+ editable: false,
41
+ forceSelection: true,
40
42
  queryMode: 'local',
41
- listeners:{
42
- 'select':function(combo, record, index){
43
- // switch databases
44
- combo.initialConfig.module.connectToDatatbase();
43
+ listeners: {
44
+ 'select': function (combo, record, index) {
45
+ // switch databases
46
+ combo.initialConfig.module.connectToDatatbase();
45
47
  },
46
- render:function(combo){
48
+ render: function (combo) {
47
49
  combo.getStore().load();
48
50
  }
49
51
  }
50
52
  }, config);
53
+
51
54
  this.callParent([config]);
52
55
  }
53
56
  });
@@ -1,102 +1,113 @@
1
1
  Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
2
- extend:"Ext.ux.desktop.Module",
3
- id:'rails_db_admin-win',
2
+ extend: "Ext.ux.desktop.Module",
3
+ id: 'rails_db_admin-win',
4
4
 
5
- queriesTreePanel:function () {
6
- return this.accordion.down('.railsdbadmin_queriestreemenu');
5
+ getWindow: function () {
6
+ return this.app.getDesktop().getWindow('rails_db_admin');
7
7
  },
8
8
 
9
- setWindowStatus:function (status) {
10
- this.window.setStatus(status);
9
+ queriesTreePanel: function () {
10
+ return this.accordion.down('.railsdbadmin_queriestreemenu');
11
11
  },
12
12
 
13
- clearWindowStatus:function () {
14
- this.window.clearStatus();
13
+ setWindowStatus: function (status) {
14
+ this.getWindow().setStatus(status);
15
15
  },
16
16
 
17
- getTableData:function (table) {
18
- var self = this;
17
+ clearWindowStatus: function () {
18
+ this.getWindow().clearStatus();
19
+ },
19
20
 
20
- var grid = Ext.create('Compass.ErpApp.Shared.DynamicEditableGridLoaderPanel', {
21
- title:table,
22
- setupUrl:'/rails_db_admin/erp_app/desktop/base/setup_table_grid/' + table,
23
- dataUrl:'/rails_db_admin/erp_app/desktop/base/table_data/' + table,
24
- editable:true,
25
- page:true,
26
- pageSize:25,
27
- displayMsg:'Displaying {0} - {1} of {2}',
28
- emptyMsg:'Empty',
29
- loadErrorMessage:'Tables Without Ids Can Not Be Edited',
30
- closable:true,
31
- params:{
32
- database:self.getDatabase()
33
- },
34
- grid_listeners:{
35
- validateedit:{
36
- fn:function (editor, e) {
37
- this.store.proxy.setOldModel(e.record);
38
- }
39
- }
40
- },
41
- proxy:{
42
- type:'rest',
43
- url:'/rails_db_admin/erp_app/desktop/base/table_data/' + table,
44
- //private var to store the previous model in an
45
- //update operation
46
- oldModel:null,
47
- setOldModel:function (old_model) {
48
- this.oldModel = old_model.copy();
49
- },
50
- update:function (operation, callback, scope) {
51
- operation.records.push(this.oldModel);
52
- Ext.data.proxy.Rest.superclass.update.call(this, operation, callback, scope);
53
- },
54
- reader:{
55
- type:'json',
56
- successProperty:'success',
57
- root:'data',
58
- messageProperty:'message'
21
+ getTableData: function (table) {
22
+ var self = this,
23
+ id = 'ext-' + table + '-data';
24
+
25
+ var grid = self.container.down('#' + id);
26
+
27
+ if (Ext.isEmpty(grid)) {
28
+ grid = Ext.create('Compass.ErpApp.Shared.DynamicEditableGridLoaderPanel', {
29
+ id: id,
30
+ title: table,
31
+ setupUrl: '/rails_db_admin/erp_app/desktop/base/setup_table_grid/' + table,
32
+ dataUrl: '/rails_db_admin/erp_app/desktop/base/table_data/' + table,
33
+ editable: true,
34
+ page: true,
35
+ pageSize: 25,
36
+ displayMsg: 'Displaying {0} - {1} of {2}',
37
+ emptyMsg: 'Empty',
38
+ loadErrorMessage: 'Tables Without Ids Can Not Be Edited',
39
+ closable: true,
40
+ params: {
41
+ database: self.getDatabase()
59
42
  },
60
- writer:{
61
- type:'json',
62
- writeAllFields:true,
63
- root:'data'
43
+ grid_listeners: {
44
+ validateedit: {
45
+ fn: function (editor, e) {
46
+ this.store.proxy.setOldModel(e.record);
47
+ }
48
+ }
64
49
  },
65
- listeners:{
66
- exception:function (proxy, response, operation) {
67
- var msg;
68
- if (operation.getError() === undefined) {
69
- var responseObject = Ext.JSON.decode(response.responseText);
70
- msg = responseObject.exception;
71
- } else {
72
- msg = operation.getError();
50
+ proxy: {
51
+ type: 'rest',
52
+ 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
+ reader: {
64
+ type: 'json',
65
+ successProperty: 'success',
66
+ root: 'data',
67
+ messageProperty: 'message'
68
+ },
69
+ writer: {
70
+ type: 'json',
71
+ writeAllFields: true,
72
+ root: 'data'
73
+ },
74
+ listeners: {
75
+ exception: function (proxy, response, operation) {
76
+ var msg;
77
+ if (operation.getError() === undefined) {
78
+ var responseObject = Ext.JSON.decode(response.responseText);
79
+ msg = responseObject.exception;
80
+ } else {
81
+ msg = operation.getError();
82
+ }
83
+ Ext.MessageBox.show({
84
+ title: 'REMOTE EXCEPTION',
85
+ msg: msg,
86
+ icon: Ext.MessageBox.ERROR,
87
+ buttons: Ext.Msg.OK
88
+ });
73
89
  }
74
- Ext.MessageBox.show({
75
- title:'REMOTE EXCEPTION',
76
- msg:msg,
77
- icon:Ext.MessageBox.ERROR,
78
- buttons:Ext.Msg.OK
79
- });
80
90
  }
81
91
  }
82
- }
83
- });
92
+ });
84
93
 
85
- this.container.add(grid);
86
- this.container.setActiveTab(this.container.items.length - 1);
94
+ self.container.add(grid);
95
+ }
96
+
97
+ self.container.setActiveTab(grid);
87
98
  },
88
99
 
89
- selectTopFifty:function (table) {
100
+ selectTopFifty: function (table) {
90
101
  this.setWindowStatus('Selecting Top 50 from ' + table + '...');
91
102
  var self = this;
92
103
 
93
104
  Ext.Ajax.request({
94
- url:'/rails_db_admin/erp_app/desktop/queries/select_top_fifty/' + table,
95
- timeout:60000,
96
- params:{
97
- database:self.getDatabase()
105
+ url: '/rails_db_admin/erp_app/desktop/queries/select_top_fifty/' + table,
106
+ timeout: 60000,
107
+ params: {
108
+ database: self.getDatabase()
98
109
  },
99
- success:function (responseObject) {
110
+ success: function (responseObject) {
100
111
  self.clearWindowStatus();
101
112
  var response = Ext.decode(responseObject.responseText);
102
113
  var sql = response.sql;
@@ -105,17 +116,21 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
105
116
  var data = response.data;
106
117
 
107
118
  var readOnlyDataGrid = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.ReadOnlyTableDataGrid', {
108
- region:'center',
109
- columns:columns,
110
- fields:fields,
111
- data:data
119
+ region: 'south',
120
+ split: true,
121
+ columns: columns,
122
+ fields: fields,
123
+ data: data,
124
+ collapseDirection: 'bottom',
125
+ height: '50%',
126
+ collapsible: true
112
127
  });
113
128
 
114
129
  var queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
115
- module:self,
116
- closable:true,
117
- sqlQuery:sql,
118
- southRegion:readOnlyDataGrid
130
+ module: self,
131
+ closable: true,
132
+ sqlQuery: sql,
133
+ southRegion: readOnlyDataGrid
119
134
  });
120
135
 
121
136
  self.container.add(queryPanel);
@@ -124,51 +139,60 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
124
139
  //queryPanel.gridContainer.add(readOnlyDataGrid);
125
140
  //queryPanel.gridContainer.getLayout().setActiveItem(0);
126
141
  },
127
- failure:function () {
142
+ failure: function () {
128
143
  self.clearWindowStatus();
129
144
  Ext.Msg.alert('Status', 'Error loading grid');
130
145
  }
131
146
  });
132
147
  },
133
148
 
134
- addNewQueryTab:function () {
149
+
150
+ addConsolePanel: function () {
151
+ this.container.add({
152
+ xtype: 'compass_ae_console_panel',
153
+ module: this
154
+ });
155
+ this.container.setActiveTab(this.container.items.length - 1);
156
+
157
+ },
158
+
159
+ addNewQueryTab: function () {
135
160
  this.container.add({
136
- xtype:'railsdbadmin_querypanel',
137
- module:this
161
+ xtype: 'railsdbadmin_querypanel',
162
+ module: this
138
163
  });
139
164
  this.container.setActiveTab(this.container.items.length - 1);
140
165
  },
141
166
 
142
- connectToDatatbase:function () {
167
+ connectToDatatbase: function () {
143
168
  var database = this.getDatabase();
144
169
  var tablestreePanelStore = this.accordion.down('.railsdbadmin_tablestreemenu').store;
145
170
  var queriesTreePanelStore = this.accordion.down('.railsdbadmin_queriestreemenu').store;
146
171
 
147
172
  tablestreePanelStore.setProxy({
148
- type:'ajax',
149
- url:'/rails_db_admin/erp_app/desktop/base/tables',
150
- extraParams:{
151
- database:database
173
+ type: 'ajax',
174
+ url: '/rails_db_admin/erp_app/desktop/base/tables',
175
+ extraParams: {
176
+ database: database
152
177
  }
153
178
  });
154
179
  tablestreePanelStore.load();
155
180
 
156
181
  queriesTreePanelStore.setProxy({
157
- type:'ajax',
158
- url:'/rails_db_admin/erp_app/desktop/queries/saved_queries_tree',
159
- extraParams:{
160
- database:database
182
+ type: 'ajax',
183
+ url: '/rails_db_admin/erp_app/desktop/queries/saved_queries_tree',
184
+ extraParams: {
185
+ database: database
161
186
  }
162
187
  });
163
188
  queriesTreePanelStore.load();
164
189
  },
165
190
 
166
- getDatabase:function () {
167
- var database = Ext.getCmp('databaseCombo').getValue();
168
- return database;
191
+ getDatabase: function () {
192
+ return Ext.getCmp('databaseCombo').getValue();
169
193
  },
170
194
 
171
- deleteQuery:function (queryName) {
195
+ deleteQuery: function (queryName) {
172
196
  var self = this;
173
197
  Ext.MessageBox.confirm('Confirm', 'Are you sure you want to delete this query?', function (btn) {
174
198
  if (btn === 'no') {
@@ -178,22 +202,22 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
178
202
  self.setWindowStatus('Deleting ' + queryName + '...');
179
203
  var database = self.getDatabase();
180
204
  Ext.Ajax.request({
181
- url:'/rails_db_admin/erp_app/desktop/queries/delete_query/',
182
- params:{
183
- database:database,
184
- query_name:queryName
205
+ url: '/rails_db_admin/erp_app/desktop/queries/delete_query/',
206
+ params: {
207
+ database: database,
208
+ query_name: queryName
185
209
  },
186
- success:function (responseObject) {
210
+ success: function (responseObject) {
187
211
  self.clearWindowStatus();
188
212
  var response = Ext.decode(responseObject.responseText);
189
213
  if (response.success) {
190
214
  Ext.Msg.alert('Error', 'Query deleted');
191
215
  var queriesTreePanelStore = self.accordion.down('.railsdbadmin_queriestreemenu').store;
192
216
  queriesTreePanelStore.setProxy({
193
- type:'ajax',
194
- url:'/rails_db_admin/erp_app/desktop/queries/saved_queries_tree',
195
- extraParams:{
196
- database:database
217
+ type: 'ajax',
218
+ url: '/rails_db_admin/erp_app/desktop/queries/saved_queries_tree',
219
+ extraParams: {
220
+ database: database
197
221
  }
198
222
  });
199
223
  queriesTreePanelStore.load();
@@ -203,7 +227,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
203
227
  }
204
228
 
205
229
  },
206
- failure:function () {
230
+ failure: function () {
207
231
  self.clearWindowStatus();
208
232
  Ext.Msg.alert('Status', 'Error deleting query');
209
233
  }
@@ -212,17 +236,17 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
212
236
  });
213
237
  },
214
238
 
215
- displayAndExecuteQuery:function (queryName) {
239
+ displayAndExecuteQuery: function (queryName) {
216
240
  this.setWindowStatus('Executing ' + queryName + '...');
217
241
  var self = this;
218
242
  var database = this.getDatabase();
219
243
  Ext.Ajax.request({
220
- url:'/rails_db_admin/erp_app/desktop/queries/open_and_execute_query/',
221
- params:{
222
- database:database,
223
- query_name:queryName
244
+ url: '/rails_db_admin/erp_app/desktop/queries/open_and_execute_query/',
245
+ params: {
246
+ database: database,
247
+ query_name: queryName
224
248
  },
225
- success:function (responseObject) {
249
+ success: function (responseObject) {
226
250
  var response = Ext.decode(responseObject.responseText);
227
251
  var query = response.query;
228
252
 
@@ -235,17 +259,20 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
235
259
  var data = response.data;
236
260
 
237
261
  var readOnlyDataGrid = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.ReadOnlyTableDataGrid', {
238
- region:'center',
239
- columns:columns,
240
- fields:fields,
241
- data:data
262
+ region: 'south',
263
+ columns: columns,
264
+ fields: fields,
265
+ data: data,
266
+ collapseDirection: 'bottom',
267
+ height: '50%',
268
+ collapsible: true
242
269
  });
243
270
 
244
- var queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
245
- module:self,
246
- sqlQuery:query,
247
- southRegion:readOnlyDataGrid,
248
- closable:true
271
+ queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
272
+ module: self,
273
+ sqlQuery: query,
274
+ southRegion: readOnlyDataGrid,
275
+ closable: true
249
276
  });
250
277
 
251
278
  self.container.add(queryPanel);
@@ -254,9 +281,9 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
254
281
  else {
255
282
  Ext.Msg.alert('Error', response.exception);
256
283
  queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
257
- module:self,
258
- closable:true,
259
- sqlQuery:query
284
+ module: self,
285
+ closable: true,
286
+ sqlQuery: query
260
287
  });
261
288
 
262
289
  self.container.add(queryPanel);
@@ -264,7 +291,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
264
291
  }
265
292
 
266
293
  },
267
- failure:function () {
294
+ failure: function () {
268
295
  self.clearWindowStatus();
269
296
  Ext.Msg.alert('Status', 'Error loading query');
270
297
  }
@@ -273,44 +300,45 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
273
300
 
274
301
  //************ Reporting ************************************************
275
302
 
276
- editReport : function(reportObj){
303
+ editReport: function (reportObj) {
277
304
  var me = this;
278
305
 
279
306
  me.container.add({
280
- title:reportObj.title,
281
- xtype:'railsdbadmin_reportpanel',
282
- module:me,
283
- query:reportObj.query,
284
- reportId:reportObj.id,
285
- template:reportObj.template,
286
- internalIdentifier:reportObj.internalIdentifier,
287
- closable:true
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
288
315
  });
289
316
  me.container.setActiveTab(me.container.items.length - 1);
290
317
  },
291
318
 
292
319
  //***********************************************************************
293
320
 
294
- init:function () {
321
+ init: function () {
295
322
  this.launcher = {
296
- text:'RailsDbAdmin',
297
- iconCls:'icon-rails_db_admin',
298
- handler:this.createWindow,
299
- scope:this
323
+ text: 'Database Tools',
324
+ iconCls: 'icon-rails_db_admin',
325
+ handler: this.createWindow,
326
+ scope: this
327
+
300
328
  };
301
329
  },
302
330
 
303
- displayQuery:function (queryName) {
331
+ displayQuery: function (queryName) {
304
332
  this.setWindowStatus('Retrieving ' + queryName + '...');
305
333
  var self = this;
306
334
  var database = this.getDatabase();
307
335
  Ext.Ajax.request({
308
- url:'/rails_db_admin/erp_app/desktop/queries/open_query/',
309
- params:{
310
- database:database,
311
- query_name:queryName
336
+ url: '/rails_db_admin/erp_app/desktop/queries/open_query/',
337
+ params: {
338
+ database: database,
339
+ query_name: queryName
312
340
  },
313
- success:function (responseObject) {
341
+ success: function (responseObject) {
314
342
  var response = Ext.decode(responseObject.responseText);
315
343
  var query = response.query;
316
344
 
@@ -320,9 +348,9 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
320
348
  self.clearWindowStatus();
321
349
 
322
350
  queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
323
- module:self,
324
- closable:true,
325
- sqlQuery:query
351
+ module: self,
352
+ closable: true,
353
+ sqlQuery: query
326
354
  });
327
355
 
328
356
  self.container.add(queryPanel);
@@ -331,9 +359,9 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
331
359
  else {
332
360
  Ext.Msg.alert('Error', response.exception);
333
361
  queryPanel = Ext.create('Compass.ErpApp.Desktop.Applications.RailsDbAdmin.QueryPanel', {
334
- module:self,
335
- closable:true,
336
- sqlQuery:query
362
+ module: self,
363
+ closable: true,
364
+ sqlQuery: query
337
365
  });
338
366
 
339
367
  self.container.add(queryPanel);
@@ -341,100 +369,133 @@ Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin", {
341
369
  }
342
370
 
343
371
  },
344
- failure:function () {
372
+ failure: function () {
345
373
  self.clearWindowStatus();
346
374
  Ext.Msg.alert('Status', 'Error loading query');
347
375
  }
348
376
  });
349
377
  },
350
378
 
351
- createWindow:function () {
379
+
380
+ openIframeInTab: function (title, url) {
381
+ var self = this;
382
+
383
+ var item = Ext.create('Ext.panel.Panel', {
384
+ iframeId: 'tutorials_iframe',
385
+ closable: true,
386
+ layout: 'fit',
387
+ title: title,
388
+ html: '<iframe id="themes_iframe" height="100%" width="100%" frameBorder="0" src="' + url + '"></iframe>'
389
+ });
390
+
391
+ self.container.add(item);
392
+ self.container.setActiveTab(item);
393
+ },
394
+
395
+ createWindow: function () {
396
+
352
397
  var self = this;
353
398
  var desktop = this.app.getDesktop();
354
399
  var win = desktop.getWindow('rails_db_admin');
355
400
  if (!win) {
356
401
  this.container = Ext.create('Ext.tab.Panel', {
357
- region:'center',
358
- margins:'0 0 0 0',
359
- border:false,
360
- minsize:300
402
+ itemId: 'centerRegion',
403
+ region: 'center',
404
+ margins: '0 0 0 0',
405
+ border: false,
406
+ minsize: 300
361
407
  });
362
408
 
363
409
  this.accordion = Ext.create('Ext.panel.Panel', {
364
- region:'west',
365
- margins:'0 0 0 0',
366
- cmargins:'0 0 0 0',
367
- width:300,
368
- collapsible:true,
369
- layout:'accordion',
370
- items:[
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
+ ],
425
+ ui: 'rounded-panel',
426
+ region: 'west',
427
+ margins: '0 0 0 0',
428
+ cmargins: '0 0 0 0',
429
+ width: 300,
430
+ collapsible: true,
431
+ header: false,
432
+ split: true,
433
+ layout: 'accordion',
434
+ items: [
435
+ {
436
+ xtype: 'railsdbadmin_tablestreemenu',
437
+ module: this
438
+ },
439
+ {
440
+ xtype: 'railsdbadmin_queriestreemenu',
441
+ module: this
442
+ },
371
443
  {
372
- xtype:'railsdbadmin_tablestreemenu',
373
- module:this
374
- }, {
375
- xtype:'railsdbadmin_queriestreemenu',
376
- module:this
377
- }, {
378
- xtype:'railsdbadmin_reportstreepanel',
379
- module:this
444
+ xtype: 'railsdbadmin_reportstreepanel',
445
+ module: this
380
446
  }
381
447
  ]
382
448
  });
383
449
 
384
450
  win = desktop.createWindow({
385
- id:'rails_db_admin',
386
- title:'RailsDBAdmin',
387
- autoDestroy:true,
388
- width:1200,
389
- height:550,
390
- iconCls:'icon-rails_db_admin',
391
- shim:false,
392
- animCollapse:false,
393
- constrainHeader:true,
394
- layout:'border',
395
- tbar:{
396
- items:[
397
- {
398
- text:'Database:'
399
- },
400
- {
401
- xtype:'railsdbadmin_databasecombo',
402
- module:self
403
- }
404
- ]
405
- },
406
- items:[this.accordion, this.container]
451
+ id: 'rails_db_admin',
452
+ title: 'RailsDBAdmin',
453
+ width: 1200,
454
+ height: 550,
455
+ maximized: true,
456
+ iconCls: 'icon-rails_db_admin-light',
457
+ shim: false,
458
+ animCollapse: false,
459
+ constrainHeader: true,
460
+ layout: 'border',
461
+ items: [this.accordion, this.container]
407
462
  });
408
463
 
409
- this.window = win;
464
+ win.addListener('render', function (win) {
465
+ win.down('#centerRegion').add({
466
+ xtype: 'railsdbadmin_splash_screen',
467
+ module: self,
468
+ closable: true
469
+ });
470
+
471
+ win.down('#centerRegion').setActiveTab(win.down('#centerRegion').items.length - 1);
472
+ });
410
473
  }
411
474
  win.show();
412
475
  }
413
476
  });
414
477
 
415
478
  Ext.define("Compass.ErpApp.Desktop.Applications.RailsDbAdmin.BooleanEditor", {
416
- extend:"Ext.form.ComboBox",
417
- alias:'widget.booleancolumneditor',
418
- initComponent:function () {
419
- var trueFalseStore = Ext.create('Ext.data.ArrayStore', {
420
- fields:['display', 'value'],
421
- data:[
479
+ extend: "Ext.form.ComboBox",
480
+ alias: 'widget.booleancolumneditor',
481
+ initComponent: function () {
482
+ this.store = Ext.create('Ext.data.ArrayStore', {
483
+ fields: ['display', 'value'],
484
+ data: [
422
485
  ['False', '0'],
423
486
  ['True', '1']
424
487
  ]
425
488
  });
426
489
 
427
- this.store = trueFalseStore;
428
-
429
490
  this.callParent(arguments);
430
491
  },
431
- constructor:function (config) {
492
+ constructor: function (config) {
432
493
  config = Ext.apply({
433
- valueField:'value',
434
- displayField:'display',
435
- triggerAction:'all',
436
- forceSelection:true,
437
- mode:'local'
494
+ valueField: 'value',
495
+ displayField: 'display',
496
+ triggerAction: 'all',
497
+ forceSelection: true,
498
+ mode: 'local'
438
499
  }, config);
439
500
 
440
501
  this.callParent([config]);