bookish 0.0.2
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 +7 -0
- data/lib/bookish.rb +80 -0
- metadata +43 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: da0efe69e1737506135d3a0373f6c864820f5e6f
|
4
|
+
data.tar.gz: d210168b0c94fac6b49101a2d1e8d9b141de95d2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a7532b795df86ef4776e0a4184aa7a37cf769bda3c39a7a8583247e0481b7d4d807e55fe49c464cadee4cbb883bd5303720ec6ecb4cb8609446bda014776c33c
|
7
|
+
data.tar.gz: e369d1fa9d7dc28ac23564ca6c3d87b28a61b9e16151f41e50810e0024ee1558cd96a743a84e6503fc5ab1b46fa9ce0c0cadd1600f50ce1088b21ec0e4033fb3
|
data/lib/bookish.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
class Bookish
|
2
|
+
|
3
|
+
# Delegar metodos al contexto del controlador
|
4
|
+
delegate :request, :params, to: :@view
|
5
|
+
|
6
|
+
# Inicializacion del contexto
|
7
|
+
# parametros:
|
8
|
+
# contexto de vista, clase del modelo
|
9
|
+
def initialize(view_context,resource)
|
10
|
+
# Cargar el serializador correspondiente
|
11
|
+
@serializer = "#{resource.name}Serializer".classify.constantize
|
12
|
+
# Contexto de la vista (accion)
|
13
|
+
@view = view_context
|
14
|
+
# Modelo
|
15
|
+
@resource = resource
|
16
|
+
# Campos filtrados desde el serializador
|
17
|
+
@fields = @serializer.new(resource.new).attributes.map { |e| e[0].to_s }
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
# Responder objeto json que leen las jqueryTables
|
22
|
+
def as_json(options = {})
|
23
|
+
{
|
24
|
+
sEcho: params[:sEcho].to_i,
|
25
|
+
iTotalRecords: @resource.count,
|
26
|
+
iTotalDisplayRecords: @resource.count,
|
27
|
+
aaData: data
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
# Serializar registros
|
33
|
+
def data
|
34
|
+
# mas optimo:
|
35
|
+
# records.map { |e| @serializer.new(e) }
|
36
|
+
# necesario para que funcione por ahora
|
37
|
+
records.map { |e| @serializer.new(e).as_json.to_a.map { |i| i[1] } }
|
38
|
+
end
|
39
|
+
|
40
|
+
# Devolver todos los registros o los filtrados
|
41
|
+
def records
|
42
|
+
@records ||= fetch_data
|
43
|
+
end
|
44
|
+
|
45
|
+
#Proceso para obtener los registro en base a los filtros
|
46
|
+
def fetch_data
|
47
|
+
if not sort_column.include?(":")
|
48
|
+
records = @resource.order("#{sort_column} #{sort_direction}")
|
49
|
+
else
|
50
|
+
records = @resource.order("#{User.name.downcase.pluralize}.id #{sort_direction}")
|
51
|
+
end
|
52
|
+
records = records.page(page).per(per_page)
|
53
|
+
records = records.where(search: "%#{params[:sSearch]}%") if params[:sSearch].present?
|
54
|
+
records
|
55
|
+
end
|
56
|
+
|
57
|
+
# = = = = = = Metodos que manejan la paginacion y la ordenacion = = = = = = #
|
58
|
+
|
59
|
+
#Parametro para identifiar en base a que columna se va a ordenar la informacion
|
60
|
+
def sort_column
|
61
|
+
# Campos filtrados desde el serializador
|
62
|
+
@fields[params[:iSortCol_0].to_i]
|
63
|
+
end
|
64
|
+
|
65
|
+
#Parametro para identificar el orden asc o desc
|
66
|
+
def sort_direction
|
67
|
+
params[:sSortDir_0] == "desc" ? "desc" : "asc"
|
68
|
+
end
|
69
|
+
|
70
|
+
#Parametro para identificar la pagina que se debera mostrar
|
71
|
+
def page
|
72
|
+
params[:iDisplayStart].to_i/per_page + 1
|
73
|
+
end
|
74
|
+
|
75
|
+
#Parametro para identificar cuantos registros por pagina se deberan mostrar
|
76
|
+
def per_page
|
77
|
+
params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
metadata
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bookish
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Shirokami
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: JqueryTables y helper para proporcionar las respuestas mediante serializacion
|
14
|
+
email: shirokami649@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/bookish.rb
|
20
|
+
homepage:
|
21
|
+
licenses: []
|
22
|
+
metadata: {}
|
23
|
+
post_install_message:
|
24
|
+
rdoc_options: []
|
25
|
+
require_paths:
|
26
|
+
- lib
|
27
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0'
|
32
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
requirements: []
|
38
|
+
rubyforge_project:
|
39
|
+
rubygems_version: 2.5.1
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: ''
|
43
|
+
test_files: []
|