model_info 0.0.4 → 0.0.5
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.
- checksums.yaml +4 -4
- data/README.rdoc +21 -2
- data/app/assets/stylesheets/model_info/sytle.css.scss +11 -0
- data/app/controllers/model_info/application_controller.rb +1 -1
- data/app/controllers/model_info/downloads_controller.rb +49 -0
- data/app/controllers/model_info/models_controller.rb +15 -11
- data/app/views/layouts/model_info/_models_header.html.erb +1 -1
- data/app/views/layouts/model_info/application.html.erb +3 -1
- data/app/views/model_info/associations/edit.html.erb +2 -2
- data/app/views/model_info/associations/index.html.erb +18 -13
- data/app/views/model_info/associations/new.html.erb +3 -3
- data/app/views/model_info/associations/show.html.erb +1 -1
- data/app/views/model_info/models/display.html.erb +14 -8
- data/app/views/model_info/models/edit.html.erb +3 -3
- data/app/views/model_info/models/new.html.erb +7 -5
- data/app/views/model_info/models/show.html.erb +1 -1
- data/config/routes.rb +4 -0
- data/lib/model_info/engine.rb +1 -0
- data/lib/model_info/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d047b94cd0cff94dea2de1cd32dd2b0d5cc577a
|
4
|
+
data.tar.gz: 14a4a6a7f2e23d0b9a79e68504a86b297b2ef135
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1deb3b38ff2452351865c5fd8c9db8fa635ef6b738fae405f0a26141be3afb577c4e2234b5aec03dfa421ad4f83ff108e2f081ea56edb4fa5acbe4c0c0e85106
|
7
|
+
data.tar.gz: ee31540d40380546c60b68511eab44185c3fe5cdd966e3d7ec623de470500151937206b4d0080da2a4c5e932e1ca0f7100e74ec395f04c9387cb5b29707f4366
|
data/README.rdoc
CHANGED
@@ -24,9 +24,28 @@ your_application_url */model_info/models*
|
|
24
24
|
|
25
25
|
== Working Status
|
26
26
|
|
27
|
-
|
27
|
+
The download option for PDF, EXCEL and DOCX would be provided in an initializer file to make it true or false and also I will provide site logo and title option in an initializer file.
|
28
28
|
|
29
|
-
|
29
|
+
Flash notification will be implemented with *pnotify* gem.
|
30
30
|
|
31
|
+
== Bugs
|
31
32
|
|
33
|
+
This engine breaks on polymorphic association.
|
34
|
+
|
35
|
+
I am not handling the exceptions so it will break if you will fill bad data or something a model validates upon.
|
36
|
+
|
37
|
+
If your are using *devise* or *active_admin* then you need to be aware of layout and making it redirect to the page you want if there is any url hit without user login
|
38
|
+
|
39
|
+
for example:
|
40
|
+
|
41
|
+
<tt>
|
42
|
+
layout :determine_layout
|
43
|
+
|
44
|
+
protected
|
45
|
+
def determine_layout
|
46
|
+
current_user.nil? ? "devise":"application"
|
47
|
+
end
|
48
|
+
</tt>
|
49
|
+
|
50
|
+
It will collide with my layout so avoid doing this or make your invalid request redirect to the right path.
|
32
51
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require_dependency "model_info/application_controller"
|
2
|
+
module ModelInfo
|
3
|
+
class DownloadsController < ApplicationController
|
4
|
+
before_filter :authenticate_request
|
5
|
+
|
6
|
+
def download_csv
|
7
|
+
csv_string = CSV.generate do |csv|
|
8
|
+
csv << params[:model_class].constantize.column_names
|
9
|
+
@model_data.each do |model|
|
10
|
+
values = model.attributes.values
|
11
|
+
csv.add_row values
|
12
|
+
end
|
13
|
+
end
|
14
|
+
send_data csv_string,
|
15
|
+
:type => 'text/csv; charset=iso-8859-1; header=present',
|
16
|
+
:disposition => "attachment; filename=#{params[:model_class]}-#{DateTime.now}.csv"
|
17
|
+
end
|
18
|
+
|
19
|
+
def download_json
|
20
|
+
send_data @model_data.to_json,
|
21
|
+
:type => 'text/json; charset=iso-8859-1; header=present',
|
22
|
+
:disposition => "attachment; filename=#{params[:model_class]}-#{DateTime.now}.json"
|
23
|
+
end
|
24
|
+
|
25
|
+
def download_xml
|
26
|
+
send_data @model_data.to_xml,
|
27
|
+
:type => 'text/xml; charset=iso-8859-1; header=present',
|
28
|
+
:disposiftion => "attachment; filename=#{params[:model_class]}-#{DateTime.now}.xml"
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def authenticate_request
|
34
|
+
if params[:associated_model]
|
35
|
+
fetch_associated_model_data
|
36
|
+
else
|
37
|
+
fetch_model_data
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def fetch_model_data
|
42
|
+
@model_data = params[:model_class].constantize.all
|
43
|
+
end
|
44
|
+
|
45
|
+
def fetch_associated_model_data
|
46
|
+
@model_data = params[:model_class].constantize.find(params[:model_object_id]).send(params[:associated_model])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -4,49 +4,53 @@ module ModelInfo
|
|
4
4
|
class ModelsController < ApplicationController
|
5
5
|
before_action :models_tab
|
6
6
|
before_action :fetch_model_name, only: [:create, :update]
|
7
|
-
|
7
|
+
|
8
8
|
def index
|
9
9
|
redirect_to model_display_url(model_class: @model_array.first)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def display
|
13
13
|
@model_class, @page = params[:model_class],params[:page]
|
14
14
|
@model_pagination = @model_class.constantize.page(@page).per(10)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def new
|
18
18
|
@model_class = params[:model_class].constantize
|
19
19
|
@model_data = @model_class.new
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def create
|
23
23
|
@model_class=params[:model_class].constantize
|
24
24
|
@model_class.create(permit_params)
|
25
|
-
|
25
|
+
if @model_class.last
|
26
|
+
redirect_to model_show_path(model_class: @model_class, model_object_id: @model_class.last.id)
|
27
|
+
else
|
28
|
+
redirect_to :back
|
29
|
+
end
|
26
30
|
end
|
27
|
-
|
31
|
+
|
28
32
|
def edit
|
29
33
|
@model_class=params[:model_class].constantize
|
30
34
|
@model_data=@model_class.find(params[:model_object_id])
|
31
35
|
end
|
32
|
-
|
36
|
+
|
33
37
|
def show
|
34
38
|
@model_class=params[:model_class].constantize
|
35
39
|
@model_data=@model_class.find(params[:model_object_id])
|
36
40
|
end
|
37
|
-
|
41
|
+
|
38
42
|
def update
|
39
43
|
params[:model_class].constantize.find(params[@model_name][:id]).update(permit_params)
|
40
44
|
redirect_to model_show_path(model_class: params[:model_class].constantize, model_object_id: params[@model_name][:id])
|
41
45
|
end
|
42
|
-
|
46
|
+
|
43
47
|
def destroy
|
44
48
|
params[:model_class].constantize.find(params[:model_object_id]).destroy
|
45
49
|
redirect_to :back
|
46
50
|
end
|
47
|
-
|
51
|
+
|
48
52
|
private
|
49
|
-
|
53
|
+
|
50
54
|
def permit_params
|
51
55
|
params.require(@model_name).permit!
|
52
56
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<ul class="nav nav-tabs">
|
2
2
|
<% for model_class in @model_array %>
|
3
|
-
<li><%= link_to model_class, model_display_url(:model_class => model_class) %></li>
|
3
|
+
<li id="<%= model_class %>"><%= link_to model_class, model_display_url(:model_class => model_class) %></li>
|
4
4
|
<% end %>
|
5
5
|
</ul>
|
@@ -1,11 +1,11 @@
|
|
1
|
-
<h3>Update Your
|
1
|
+
<h3>Update Your Associated Data of <%= params[:associated_model_class] %> </h3>
|
2
2
|
<div class="jumbotron">
|
3
3
|
<%= form_for @single_associated_data, url: association_update_path(associated_model: params[:associated_model],associated_model_class: params[:associated_model_class], data: params[:data]), method: :patch do |f| %>
|
4
4
|
<% (@single_associated_data.attribute_names - %w(id serialized_options created_at updated_at)).each do |associated_model_column| %>
|
5
5
|
<div class="form-group">
|
6
6
|
<%= f.label associated_model_column %>
|
7
7
|
<div class="form-group">
|
8
|
-
<%= f.text_field associated_model_column %>
|
8
|
+
<%= f.text_field associated_model_column, :class => 'form-control' %>
|
9
9
|
</div>
|
10
10
|
</div>
|
11
11
|
<% end %>
|
@@ -1,4 +1,11 @@
|
|
1
|
-
<
|
1
|
+
<div class="top_block col-md-12">
|
2
|
+
<h3 class="pull-left">Associated Data of <%= @model_class %> to <%= @associated_model %></h3>
|
3
|
+
<div class="pull-right">
|
4
|
+
<% unless @macro == "has_one" || @macro == "belongs_to" %>
|
5
|
+
<b><%= link_to "Create associative record", association_new_path(model_class: @model_class, model_object_id: @model_object_id, associated_model: @associated_model,model_object_id: @model_object_id,model_class: @model_class,associated_model_class: @associated_model_class), class: 'btn btn-success'%></b>
|
6
|
+
<% end %>
|
7
|
+
</div>
|
8
|
+
</div>
|
2
9
|
<table class="table table-hover">
|
3
10
|
<tr>
|
4
11
|
<% @associated_model_class.column_names.each do |k| %>
|
@@ -6,8 +13,8 @@
|
|
6
13
|
<% end %>
|
7
14
|
<th>Actions</th>
|
8
15
|
</tr>
|
9
|
-
<%if @macro == "has_one" || @macro== "belongs_to" %>
|
10
|
-
<%
|
16
|
+
<% if @macro == "has_one" || @macro== "belongs_to" %>
|
17
|
+
<% unless @associated_data.nil? %>
|
11
18
|
<tr>
|
12
19
|
<% @associated_model_class.column_names.each do |d|%>
|
13
20
|
<td>
|
@@ -20,7 +27,7 @@
|
|
20
27
|
<%= link_to 'delete', association_destroy_path(model_class: @model_class,model_object_id: @model_object_id,associated_model: @associated_model,associated_model_class: @associated_model_class,data: @associated_data.id), method: :delete , data: {confirm: "Are you sure?"}, class: 'btn btn-danger' %>
|
21
28
|
</td>
|
22
29
|
</tr>
|
23
|
-
<%end%>
|
30
|
+
<% end %>
|
24
31
|
<% else %>
|
25
32
|
<% @associated_model_pagination.each do |y| %>
|
26
33
|
<tr>
|
@@ -37,14 +44,12 @@
|
|
37
44
|
</tr>
|
38
45
|
<% end %>
|
39
46
|
</table>
|
40
|
-
<div
|
41
|
-
|
47
|
+
<div class="downloads">
|
48
|
+
Download Associated Data: <%= link_to 'CSV', download_csv_path(associated_model: @associated_model, model_class: @model_class, model_object_id: @model_object_id), format: :csv %>
|
49
|
+
<%= link_to 'JSON', download_json_path(associated_model: @associated_model, model_class: @model_class, model_object_id: @model_object_id), format: :json %>
|
50
|
+
<%= link_to 'XML', download_xml_path(associated_model: @associated_model, model_class: @model_class, model_object_id: @model_object_id), format: :xml %>
|
42
51
|
</div>
|
43
|
-
<
|
44
|
-
|
45
|
-
|
46
|
-
<%= page_entries_info @associated_model_pagination %>
|
47
|
-
</ul>
|
48
|
-
</nav>
|
49
|
-
|
52
|
+
<div class="clearfix"></div>
|
53
|
+
<%= paginate @associated_model_pagination %>
|
54
|
+
<%= page_entries_info @associated_model_pagination %>
|
50
55
|
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<h3>Add New Record</h3>
|
1
|
+
<h3>Add New Record in <%= params[:associated_model_class] %> </h3>
|
2
2
|
<div class="jumbotron">
|
3
3
|
<%= form_for @associated_data, url: association_create_path, method: :post do |f| %>
|
4
4
|
<% (@associated_data.class.column_names - %w(id created_at updated_at serialized_options)).each do |associated_model_column| %>
|
@@ -9,12 +9,12 @@
|
|
9
9
|
<%= hidden_field_tag :model_class, params[:model_class]%>
|
10
10
|
<%= hidden_field_tag :model_object_id, params[:model_object_id]%>
|
11
11
|
<div class="form-group">
|
12
|
-
<%= f.text_field associated_model_column %>
|
12
|
+
<%= f.text_field associated_model_column, :class => 'form-control'%>
|
13
13
|
</div>
|
14
14
|
</div>
|
15
15
|
<% end %>
|
16
16
|
<%= f.submit 'Save Changes', class:"btn btn-primary" %>
|
17
|
-
<% end %>
|
17
|
+
<% end %>
|
18
18
|
</div>
|
19
19
|
|
20
20
|
|
@@ -1,4 +1,9 @@
|
|
1
|
-
<
|
1
|
+
<div class="top_block col-md-12">
|
2
|
+
<h3 class="pull-left"><%= @model_class %></h3>
|
3
|
+
<div class="pull-right">
|
4
|
+
<b><%= link_to 'Add new Record', model_new_path(:model_class => @model_class), class: 'btn btn-success' %></b>
|
5
|
+
</div>
|
6
|
+
</div>
|
2
7
|
<table class="table table-hover">
|
3
8
|
<tr>
|
4
9
|
<% @model_class.constantize.column_names.each do |k| %>
|
@@ -14,10 +19,10 @@
|
|
14
19
|
<%= model_data.send(model_column_name.to_sym).class=='String' ? model_data.send(model_column_name.to_sym).truncate(14) : model_data.send(model_column_name.to_sym).to_s.truncate(14)%>
|
15
20
|
</td>
|
16
21
|
<% end %>
|
17
|
-
<td>
|
18
|
-
<%= link_to '
|
19
|
-
<%= link_to '
|
20
|
-
<%= link_to '
|
22
|
+
<td class="model_action">
|
23
|
+
<%= link_to 'View', model_show_path(model_class: @model_class, model_object_id: model_data.id, page: @page), class: 'btn btn-info' %>
|
24
|
+
<%= link_to 'Edit', model_edit_path(model_class: @model_class, model_object_id: model_data.id), class: 'btn btn-warning' %>
|
25
|
+
<%= link_to 'Delete', model_destroy_path(model_class: @model_class, model_object_id: model_data.id), method: :delete, data: {confirm: "Are you sure?"}, class: 'btn btn-danger' %>
|
21
26
|
</td>
|
22
27
|
<td>
|
23
28
|
<% relationship_hash ={}, a1=[], a2=[]%>
|
@@ -37,9 +42,10 @@
|
|
37
42
|
</tr>
|
38
43
|
<% end %>
|
39
44
|
</table>
|
40
|
-
|
41
|
-
|
42
|
-
|
45
|
+
Download: <%= link_to 'CSV', download_csv_path(model_class: @model_class), format: :csv %>
|
46
|
+
<%= link_to 'JSON', download_json_path(model_class: @model_class), format: :json %>
|
47
|
+
<%= link_to 'XML', download_xml_path(model_class: @model_class), format: :xml %>
|
48
|
+
|
43
49
|
<nav>
|
44
50
|
<ul class="pagination">
|
45
51
|
<li><%= paginate @model_pagination %></li>
|
@@ -1,14 +1,14 @@
|
|
1
|
-
<h3>Update Your
|
1
|
+
<h3>Update Your <%= @model_class.name %> Data</h3>
|
2
2
|
<div class="jumbotron">
|
3
3
|
<%= form_for @model_data, url: model_update_path(model_class: @model_class), method: :patch do |f| %>
|
4
4
|
<% (@model_class.column_names - %w(serialized_options created_at updated_at)).each do |resource_field| %>
|
5
5
|
<div class="form-group">
|
6
6
|
<%= f.label resource_field %>
|
7
7
|
<div class="form-group">
|
8
|
-
<%= f.text_field resource_field %>
|
8
|
+
<%= f.text_field resource_field, :class => 'form-control' %>
|
9
9
|
</div>
|
10
10
|
</div>
|
11
11
|
<% end %>
|
12
12
|
<%= f.submit 'Save Changes', class:"btn btn-primary" %>
|
13
|
-
<% end %>
|
13
|
+
<% end %>
|
14
14
|
</div>
|
@@ -1,17 +1,18 @@
|
|
1
|
-
<h3>Add New Record</h3>
|
1
|
+
<h3>Add New Record in <%= @model_class.name %> </h3>
|
2
|
+
|
2
3
|
<div class="jumbotron">
|
3
|
-
<%= form_for @model_data, url: model_create_path, method: :post do |f| %>
|
4
|
+
<%= form_for @model_data, url: model_create_path, method: :post , class: 'form' do |f| %>
|
4
5
|
<% (@model_data.class.column_names - %w(id serialized_options created_at updated_at)).each do |data_field| %>
|
5
6
|
<div class="form-group">
|
6
7
|
<%= f.label data_field %>
|
7
8
|
<%= hidden_field_tag :model_class, @model_class %>
|
8
9
|
<div class="form-group">
|
9
|
-
<%= f.text_field data_field %>
|
10
|
+
<%= f.text_field data_field, :class => 'form-control' %>
|
10
11
|
</div>
|
11
12
|
</div>
|
12
13
|
<% end %>
|
13
|
-
<%= f.submit '
|
14
|
-
<% end %>
|
14
|
+
<%= f.submit 'Create Record', class:"btn btn-primary" %>
|
15
|
+
<% end %>
|
15
16
|
</div>
|
16
17
|
|
17
18
|
|
@@ -19,3 +20,4 @@
|
|
19
20
|
|
20
21
|
|
21
22
|
|
23
|
+
|
data/config/routes.rb
CHANGED
@@ -16,4 +16,8 @@ ModelInfo::Engine.routes.draw do
|
|
16
16
|
get 'association_edit',to: 'associations#edit'
|
17
17
|
patch 'association_update',to: 'associations#update'
|
18
18
|
delete 'association_destroy',to: 'associations#destroy'
|
19
|
+
|
20
|
+
get 'download_csv', to: 'downloads#download_csv'
|
21
|
+
get 'download_json', to: 'downloads#download_json'
|
22
|
+
get 'download_xml', to: 'downloads#download_xml'
|
19
23
|
end
|
data/lib/model_info/engine.rb
CHANGED
data/lib/model_info/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: model_info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nitanshu verma
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bootstrap
|
@@ -58,8 +58,10 @@ files:
|
|
58
58
|
- app/assets/stylesheets/model_info/bootstrap.css
|
59
59
|
- app/assets/stylesheets/model_info/bootstrap.min.css
|
60
60
|
- app/assets/stylesheets/model_info/fetch_model_infos.css
|
61
|
+
- app/assets/stylesheets/model_info/sytle.css.scss
|
61
62
|
- app/controllers/model_info/application_controller.rb
|
62
63
|
- app/controllers/model_info/associations_controller.rb
|
64
|
+
- app/controllers/model_info/downloads_controller.rb
|
63
65
|
- app/controllers/model_info/models_controller.rb
|
64
66
|
- app/helpers/model_info/application_helper.rb
|
65
67
|
- app/helpers/model_info/associations_helper.rb
|