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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/bookish.rb +80 -0
  3. metadata +43 -0
@@ -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
@@ -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: []