rails_db 0.9.9 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee0ce0d6e3a70aa6c991f4dc375d28d219cb452a
4
- data.tar.gz: 3fb59fa306290006d2e462abd6d88f0d10c3909c
3
+ metadata.gz: 6b8edcd55cb5deaa338dde74868d85c838906507
4
+ data.tar.gz: 4f641001dc8e886869ed8644a6a7e9dff4575ae9
5
5
  SHA512:
6
- metadata.gz: 90db375ee0998789dbc68d35c20518f63861d432cc7f93f646040e9f9b65fb3df386642f5a1e19a0fc4b5327d36304df3f87bb1a331515e589cd30941177d221
7
- data.tar.gz: 5f5676c71b5c9b4439bd36b9e4edb5174348e1402c2bfc912cfc770113f662705bfa3510404e4c6a096ca068555ce5da966cfe931d492ac858e3a4196412d455
6
+ metadata.gz: 48b2dc79959b7f7682f43cf6577b784db747aa8df3ad45325ca0922c65105ddca9b532bf5aabc62be1f9bf17c69e6044a5cb26ff136850c3b1166f9129049ae0
7
+ data.tar.gz: 553f9b1c71c073a75c3dd4f7c773dfaae90cc7d9def1b6a8e7ef589e70610cbc979b9d0cae92d755a5a456b0b6fbb28c8fff3e177282a4e14392187ee2c24cbe
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_db (0.9.9)
4
+ rails_db (1.0)
5
5
  axlsx_rails
6
6
  codemirror-rails
7
7
  font-awesome-rails
@@ -1,9 +1,11 @@
1
1
  module RailsDb
2
2
  class TablesController < RailsDb::ApplicationController
3
+ LOAD_TABLE_ACTIONS = [:show, :data, :csv, :truncate, :destroy, :edit, :update, :xlsx, :search, :new, :create]
4
+
3
5
  if Rails::VERSION::MAJOR >= 4
4
- before_action :find_table, only: [:show, :data, :csv, :truncate, :destroy, :edit, :update, :xlsx, :search]
6
+ before_action :find_table, only: LOAD_TABLE_ACTIONS
5
7
  else
6
- before_filter :find_table
8
+ before_filter :find_table, only: LOAD_TABLE_ACTIONS
7
9
  end
8
10
 
9
11
  def index
@@ -13,14 +15,23 @@ module RailsDb
13
15
  def show
14
16
  end
15
17
 
18
+ def new
19
+ @record = model.new
20
+ end
21
+
22
+ def create
23
+ @record = model.new(record_attributes)
24
+ @record.save!
25
+ build_search
26
+ respond_to do |page|
27
+ page.html { redirect_to action: :data, table_id: params[:table_id] }
28
+ page.js {}
29
+ end
30
+ end
31
+
16
32
  def data
17
33
  session[:per_page] = per_page
18
- @model = @table.as_model
19
- @q = @model.ransack(params[:q])
20
- @sql = @q.result.page(params[:page]).per(per_page).to_sql
21
- @records = @q.result.page(params[:page]).per(per_page)
22
- @q.build_condition if @q.conditions.empty?
23
- @q.build_sort if @q.sorts.empty?
34
+ build_search
24
35
  respond_to do |page|
25
36
  page.html {}
26
37
  page.js {}
@@ -41,12 +52,7 @@ module RailsDb
41
52
  end
42
53
 
43
54
  def destroy
44
- @model = @table.as_model
45
- @q = @model.ransack(params[:q])
46
- @sql = @q.result.page(params[:page]).per(per_page).to_sql
47
- @records = @q.result.page(params[:page]).per(per_page)
48
- @q.build_condition if @q.conditions.empty?
49
- @q.build_sort if @q.sorts.empty?
55
+ build_search
50
56
  @table.delete(params[:pk_id])
51
57
  respond_to do |page|
52
58
  page.html { redirect_to action: :data, table_id: params[:table_id] }
@@ -73,6 +79,18 @@ module RailsDb
73
79
 
74
80
  private
75
81
 
82
+ def build_search
83
+ @q = model.ransack(params[:q])
84
+ @sql = @q.result.page(params[:page]).per(per_page).to_sql
85
+ @records = @q.result.page(params[:page]).per(per_page)
86
+ @q.build_condition if @q.conditions.empty?
87
+ @q.build_sort if @q.sorts.empty?
88
+ end
89
+
90
+ def model
91
+ @model ||= @table.as_model
92
+ end
93
+
76
94
  def record_attributes
77
95
  if Rails::VERSION::MAJOR >= 4
78
96
  params[:record].permit!
@@ -42,58 +42,6 @@ module RailsDb
42
42
  end
43
43
  end
44
44
 
45
- def paginate_table_entries(entries)
46
- params.delete(:id)
47
- return if entries.total_pages == 1
48
- prev_page_text = "#{fa_icon('arrow-left')} Previous".html_safe
49
- next_page_text = "Next #{fa_icon('arrow-right')}".html_safe
50
-
51
- html = '<div class="pagination">'
52
- if entries.previous_page
53
- html << link_to(prev_page_text, params.merge({ action: :data, page: entries.previous_page }), { remote: true, class: 'page' })
54
- end
55
- html << "#{page_links_for_pagination(entries)}"
56
- if entries.next_page
57
- html << link_to(next_page_text, params.merge({ action: :data, page: entries.next_page }), { remote: true, class: 'page' })
58
- end
59
- html << '</div>'
60
-
61
- sanitize(html)
62
- end
63
-
64
- private
65
-
66
- def page_links_for_pagination(entries)
67
- pages = pages_for_pagination(entries)
68
- links = []
69
-
70
- pages.each_with_index do |page,index|
71
- if page == entries.current_page
72
- links << content_tag(:b, page, { class: 'page current' })
73
- else
74
- links << link_to(page, params.merge({ action: :data, page: page}), { remote: true, class: 'page' })
75
- end
76
- links << ' ... ' if page != pages.last && (page + 1) != pages[index+1]
77
- end
78
-
79
- links.join(' ')
80
- end
81
-
82
- def pages_for_pagination(entries)
83
- last_page = entries.total_pages
84
- current_page = entries.current_page
85
-
86
- pages = if last_page > 10
87
- [1, 2, 3] +
88
- (current_page-2..current_page+2).to_a +
89
- (last_page-2..last_page).to_a
90
- else
91
- (1..last_page).to_a
92
- end
93
-
94
- pages.uniq.select { |p| p > 0 && p <= last_page }
95
- end
96
-
97
45
  def db_hint_options
98
46
  result = {}
99
47
  RailsDb::Database.accessible_tables.each do |table_name|
@@ -8,7 +8,7 @@
8
8
  <ul>
9
9
  <li>use command line tools `railsdb` and `runsql` to run app and sql for your apps.</li>
10
10
  <li>view content and schema of DB tables (including indexes)</li>
11
- <li>edit content</li>
11
+ <li>create, edit content</li>
12
12
  <li>sort content of DB tables</li>
13
13
  <li>filters support</li>
14
14
  <li>execute SQL queries</li>
@@ -1,5 +1,5 @@
1
1
  <div id="explain_modal" class="reveal-modal" data-reveal aria-labelledby="modalTitle" aria-hidden="true" role="dialog">
2
- <h2 id="modalTitle">Explain:</h2>
2
+ <h2 id="modalTitle">Explain SQL</h2>
3
3
  <p class="lead"><%= sql %></p>
4
4
  <pre>
5
5
  <% sql_query.explain.rows.each do |row| %>
@@ -1,6 +1,9 @@
1
1
  <% title "'#{@table.name}'"%>
2
2
 
3
- <h2>Table: <%= @table.name %></h2>
3
+ <h2 class='left'>Table: <%= @table.name %></h2>
4
+ <div class='right'>
5
+ <%= link_to '+ ADD', table_new_path(@table), remote: true, class: 'button small' %>
6
+ </div>
4
7
 
5
8
  <div class='clear'></div>
6
9
 
@@ -68,7 +71,7 @@
68
71
  <% end %>
69
72
  <% @model.column_names.each do |column| %>
70
73
  <th class="column_<%= column %>" style="<%= display_style_column(@table.name, column)%>">
71
- <%= sort_link(@q, column) %>
74
+ <%= sort_link @q, column, controller: :tables, action: :data %>
72
75
  </th>
73
76
  <% end %>
74
77
  </tr>
@@ -92,7 +95,7 @@
92
95
  <th colspan="2">Actions</th>
93
96
  <% end %>
94
97
  <% @model.column_names.each do |column| %>
95
- <th> <%= sort_link(@q, column) %> </th>
98
+ <th> <%= sort_link @q, column, controller: :tables, action: :data %> </th>
96
99
  <% end %>
97
100
  </tr>
98
101
  </tfoot>
@@ -102,6 +105,7 @@
102
105
 
103
106
  <p>
104
107
  <span class="radius success label">Total: <%= pluralize @records.total_count, 'record' %></span>
108
+ <span class="radius secondary label"><a href="#" data-reveal-id="sql_modal" id='sql_modal_link'>SQL</a></span>
105
109
  </p>
106
110
 
107
111
  <% if @records.total_count > 10 %>
@@ -112,8 +116,10 @@
112
116
  </div>
113
117
 
114
118
  <div class='left per_page_pagination'>
115
- <%= paginate @records, remote: true %>
119
+ <%= paginate @records, remote: true, params: { controller: :tables, action: :data } %>
116
120
  </div>
117
121
  <% end %>
118
122
 
119
- <div class='clear'></div>
123
+ <div class='clear'></div>
124
+
125
+ <%= render 'sql', sql: @sql %>
@@ -6,7 +6,7 @@
6
6
  <div class='scrollable_form'>
7
7
  <% @record.class.columns.each do |column| %>
8
8
  <% name = column.name %>
9
- <% next if name == 'id' %>
9
+ <% next if name == @table.primary_key %>
10
10
 
11
11
  <% if ['datetime', 'date', 'time'].include?(column.sql_type) %>
12
12
  <div class='form-inline'>
@@ -0,0 +1,25 @@
1
+ <a class="close-reveal-modal" aria-label="Close">&#215;</a>
2
+
3
+ <h2 id="modalTitle">New</h2>
4
+
5
+ <%= simple_form_for @record, as: 'record', url: table_create_path(@table, pk_id: @record[@table.primary_key]), remote: true, method: :post, html: {class: 'vertical_form'} do |form| %>
6
+ <div class='scrollable_form'>
7
+ <% @record.class.columns.each do |column| %>
8
+ <% name = column.name %>
9
+ <% next if [@table.primary_key, 'created_at', 'updated_at'].include?(column.name) %>
10
+
11
+ <% if ['datetime', 'date', 'time'].include?(column.sql_type) %>
12
+ <div class='form-inline'>
13
+ <%= form.input name, label: name, input_html: {class: 'date_or_time'} %>
14
+ </div>
15
+
16
+ <% else %>
17
+ <%= form.input name, label: name %>
18
+ <% end %>
19
+ <% end %>
20
+ </div>
21
+ <%= form.submit 'SAVE', class: 'button small' %>
22
+ <a class='close' onclick="$('#system_modal').foundation('reveal', 'close');$">Close</a>
23
+ <% end %>
24
+
25
+ <span class="radius warning label">NOTE: Update will happen without any validations.</span>
@@ -0,0 +1,7 @@
1
+ <div id="sql_modal" class="reveal-modal" data-reveal aria-labelledby="modalTitle" aria-hidden="true" role="dialog">
2
+ <h2 id="modalTitle">SQL</h2>
3
+ <pre>
4
+ <%= sql %>
5
+ </pre>
6
+ <a class="close-reveal-modal" aria-label="Close">&#215;</a>
7
+ </div>
@@ -0,0 +1,9 @@
1
+ $('#main_content').html("<%= j(render 'data') %>");
2
+
3
+ $('#system_modal').foundation('reveal', 'close');
4
+
5
+ stickyFooter();
6
+
7
+ $(document).foundation('reflow');
8
+
9
+ $(document).scrollTop(0);
@@ -0,0 +1,7 @@
1
+ $('#system_modal').html("<%= j(render 'new') %>");
2
+
3
+ $('#system_modal').foundation('reveal', 'open');
4
+
5
+ stickyFooter();
6
+
7
+ $(document).foundation('reflow');
@@ -9,6 +9,8 @@ RailsDb::Engine.routes.draw do
9
9
  get 'edit' # to handle opens in new window (GET)
10
10
  put 'update' # to handle opens in new window (GET)
11
11
  get 'xlsx'
12
+ get 'new'
13
+ post 'create'
12
14
  end
13
15
 
14
16
  get '/sql' => 'sql#index', as: :sql
@@ -1,3 +1,3 @@
1
1
  module RailsDb
2
- VERSION = "0.9.9"
2
+ VERSION = "1.0"
3
3
  end
@@ -69,6 +69,14 @@ class DashboardControllerTest < ActionDispatch::IntegrationTest
69
69
  assert_equal 200, status
70
70
  edit_user.reload
71
71
  assert_equal 'JOHN', edit_user.name
72
+
73
+ xhr :get, '/rails/db/tables/users/new'
74
+ assert_equal 200, status
75
+
76
+ assert_equal 1, User.count
77
+ xhr :post, '/rails/db/tables/users/create', {record: { name: 'XXX' }}
78
+ assert_equal 200, status
79
+ assert_equal 2, User.count
72
80
  end
73
81
 
74
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Kasyanchuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-29 00:00:00.000000000 Z
11
+ date: 2015-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -311,14 +311,18 @@ files:
311
311
  - app/views/rails_db/tables/_condition_fields.html.erb
312
312
  - app/views/rails_db/tables/_data.html.erb
313
313
  - app/views/rails_db/tables/_edit.html.erb
314
+ - app/views/rails_db/tables/_new.html.erb
314
315
  - app/views/rails_db/tables/_row.html.erb
315
316
  - app/views/rails_db/tables/_search.html.erb
316
317
  - app/views/rails_db/tables/_show.html.erb
318
+ - app/views/rails_db/tables/_sql.html.erb
319
+ - app/views/rails_db/tables/create.js.erb
317
320
  - app/views/rails_db/tables/data.html.erb
318
321
  - app/views/rails_db/tables/data.js.erb
319
322
  - app/views/rails_db/tables/destroy.js.erb
320
323
  - app/views/rails_db/tables/edit.js.erb
321
324
  - app/views/rails_db/tables/index.html.erb
325
+ - app/views/rails_db/tables/new.js.erb
322
326
  - app/views/rails_db/tables/show.html.erb
323
327
  - app/views/rails_db/tables/show.js.erb
324
328
  - app/views/rails_db/tables/table.xls.axlsx
@@ -443,7 +447,6 @@ files:
443
447
  - test/dummy/test/models/legacy_account_test.rb
444
448
  - test/dummy/test/models/project_test.rb
445
449
  - test/dummy/test/models/user_test.rb
446
- - test/dummy/tmp/pids/server.pid
447
450
  - test/rails_db_data_table_helper_test.rb
448
451
  - test/rails_db_test.rb
449
452
  - test/sql_import_test.rb
@@ -611,7 +614,6 @@ test_files:
611
614
  - test/dummy/test/models/legacy_account_test.rb
612
615
  - test/dummy/test/models/project_test.rb
613
616
  - test/dummy/test/models/user_test.rb
614
- - test/dummy/tmp/pids/server.pid
615
617
  - test/rails_db_data_table_helper_test.rb
616
618
  - test/rails_db_test.rb
617
619
  - test/sql_import_test.rb
@@ -1 +0,0 @@
1
- 91954