sinatra-hexacta 1.0.3 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7b030f298091b86eff87999817b7e167b7f23f70a1cb96cc82571785ab4fecd
4
- data.tar.gz: 89f21adaf020ba14de57ef7b890ae23013bf827e96dd2cf5d6e7cc793d8d42ad
3
+ metadata.gz: df6a0ef3c8ba7cdd6d652d08a0c930519dca2aec379bd3275d24fb99f839129e
4
+ data.tar.gz: c47bab0989ad1a159a308cdc3c229c121293e6d483b14dce97efe0ced18474aa
5
5
  SHA512:
6
- metadata.gz: '04543278f129084cd3c67cc5e7aa83ae5c2ee6ef7e9e5cf730927637629b8151384d0fbdc9800e5bf5ccc8748ea3d8ec88fe762289a782c59162ea2b2fc3fc0c'
7
- data.tar.gz: 39ffb8a63ecd557b5700c8b7d8feac27ba97d884e979087fe33e2333bd44990381e2a003c3c2f72e15374d180b8f4f2d06006aa647a13660360250ffbc1d5968
6
+ metadata.gz: fafe733141d4516b0f0b360097ad195b638fced57dce48fd5fefe1fd0b968ef54afeae4720744827e60ae3742d8ed1870063eb30e9c71c9ee4072ffd9f246353
7
+ data.tar.gz: d19d3fb7fdc997ad5a4fddefcb1680e4b07e9bc7270b1373617b6688a8ca45ebffd68e706f78bd96ba2acaeff1def4e3488466da11bd53c55dd4b8d0ca3458a1
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+ module Sinatra
3
+ module ConstantHandler
4
+ extend Hexacta
5
+
6
+ def enable_constants
7
+ p "Enabling constants..."
8
+
9
+ before '/constant*' do
10
+ error(403) if authenticated(User).permissions.empty? && authenticated(User).recruiter.nil?
11
+ end
12
+
13
+ get '/constants' do
14
+ params[:format] = 'group' if params[:format].nil?
15
+ query = Constant.where(:kind => Constant.descendants.collect { |constant_class| constant_class.to_s })
16
+ slim :"#{Hexacta::GEM_FILE_DIR}/constants/#{params[:format]}", locals: { :constants => query.order(:kind,:value).all, :total => query.count, :filters => params, :query => query }
17
+ end
18
+
19
+ post '/constant' do
20
+ attributes = params.select { |attribute| Constant.columns.include?(attribute.to_sym) }
21
+ if params[:values].nil?
22
+ constant = Constant.create(attributes)
23
+ else
24
+ for value in params[:values].split(',')
25
+ attributes[:value] = value
26
+ constant = Constant.find_or_create(attributes)
27
+ end
28
+ end
29
+ redirect back
30
+ end
31
+
32
+ post '/constants/:id' do |id|
33
+ constant = Constant.find(:id => id.to_i)
34
+ constant.update_fields(params, Constant.columns, :missing=>:skip)
35
+ constant.save #This is import to force before save
36
+ redirect back
37
+ end
38
+
39
+ delete '/constants/:id' do |id|
40
+ constant = Constant.find(:id => id.to_i)
41
+ constant.destroy.to_hash.to_json
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+
48
+ register ConstantHandler
49
+ end
@@ -4,3 +4,4 @@ require_relative 'notifications'
4
4
  require_relative 'params'
5
5
  require_relative 'reports'
6
6
  require_relative 'processes'
7
+ require_relative 'constants'
@@ -0,0 +1,59 @@
1
+ .block-header
2
+ h2
3
+ | Constantes
4
+
5
+ -grouped_constants = constants.group_by { |constant| constant.kind }
6
+ -for kind in grouped_constants.keys
7
+ .card.m-b-5
8
+ .card-header style="padding: 20px;"
9
+ .media
10
+ .media-body.m-t-0
11
+ .row
12
+ .col-md-3
13
+ h2
14
+ small.m-0 Tipo de constante
15
+ h5.m-0 #{grouped_constants[kind].first.name}
16
+ small.m-0 #{grouped_constants[kind].count} valores
17
+ .col-md-9
18
+ -for constant in grouped_constants[kind]
19
+ a.btn.btn-link.bgm-lightgray.m-5.c-gray onclick="editConstant(#{constant.id},'#{constant.kind}','#{constant.value}')"
20
+ .di-block.v-middle #{constant.value}
21
+
22
+ .footer-text
23
+ a.text.btn.bgm-white.c-gray data-toggle="modal" data-target="#new-constant" Nueva constante
24
+
25
+ a.btn.btn-float.bgm-blue.m-btn.waves-effect.waves-circle.waves-float data-toggle="modal" data-target="#new-constant"
26
+ i.zmdi.zmdi-plus
27
+
28
+ == slim :'sinatra-hexacta/constants/new'
29
+
30
+
31
+ .modal.fade id="edit-constant" tabindex="-1" role="dialog" aria-labelledby="editConstant"
32
+ .modal-dialog
33
+ form.modal-content method="POST" data-toggle="validator"
34
+ .modal-content
35
+ .modal-header
36
+ h4.modal-title Editar constante
37
+ .modal-body
38
+ .row
39
+ .col-sm-12
40
+ == select_input({ :id => 'edit_kind', :name => "kind", :elements => [{ :value => nil, :text => 'Elige tipo de constante' }] + (Constant.descendants).collect { |constant_class| { :value => constant_class, :text => constant_class.new.name } }.uniq, :placeholder => "Tipo de constante", :chosen => nil, :required => true })
41
+ .col-sm-12
42
+ == input({ :id => 'edit_value', :name => "value", :title => "Valor", :type => 'text', :value => nil, :required => true })
43
+ .modal-footer
44
+ a.btn.waves-effect.bgm-red#delete.pull-left.c-white Borrar
45
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
46
+ button.btn.btn-link.waves-effect type="submit" Actualizar
47
+
48
+
49
+ javascript:
50
+ function editConstant(constant_id,kind,value) {
51
+ $('#edit-constant .action').attr('action', '/constants/' + constant_id);
52
+
53
+ $('#edit-constant #edit_kind').val(kind);
54
+ $('#edit-constant #edit_value').val(value);
55
+
56
+ $('#edit-constant #edit_kind').trigger("chosen:updated");
57
+ $('#edit-constant #delete').attr("onclick","rm_object('constants','"+ constant_id +"')");
58
+ $('#edit-constant').modal('show');
59
+ }
@@ -0,0 +1,35 @@
1
+ .modal.fade id="new-constant" tabindex="-1" role="dialog" aria-labelledby="newConstant"
2
+ .modal-dialog.modal-lg
3
+ .row
4
+ .col-xs-4
5
+ form.modal-content action="/constant" method="POST" data-toggle="validator"
6
+ .modal-content
7
+ .modal-header
8
+ h4.modal-title Nueva constante
9
+ .modal-body
10
+ .row
11
+ .col-sm-12
12
+ == select_input({ :name => "kind", :elements => [{ :value => nil, :text => 'Elige tipo de constante' }] + (Constant.descendants).collect { |constant_class| { :value => constant_class, :text => constant_class.new.name } }.uniq, :placeholder => "Tipo de constante", :selected_elements => nil, :required => true })
13
+ .col-sm-12
14
+ == input({:name => "value", :title => "Valor", :type => 'text', :value => '', :required => true })
15
+ .modal-footer
16
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
17
+ button.btn.btn-link.waves-effect type="submit" Crear
18
+
19
+ .col-xs-8
20
+ form.modal-content action="/constant" method="POST" data-toggle="validator"
21
+ .modal-content
22
+ .modal-header
23
+ h4.modal-title Nuevas constantes
24
+ .modal-body
25
+ .row
26
+ .col-sm-12
27
+ == select_input({ :name => "kind", :elements => [{ :value => nil, :text => 'Elige tipo de constante' }] + (Constant.descendants).collect { |constant_class| { :value => constant_class, :text => constant_class.new.name } }.uniq, :placeholder => "Tipo de constante", :selected_elements => nil, :required => true })
28
+ .col-sm-12
29
+ == input({:name => "values", :title => "Valores separados por coma", :type => 'text', :value => '', :required => true })
30
+ .modal-footer
31
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
32
+ button.btn.btn-link.waves-effect type="submit" Crear
33
+ br
34
+ .modal-content
35
+ == slim info_alert({ :title => 'Creación masiva', :message => "Separa por coma los valores para crear multiples constantes de una sola vez."})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-hexacta
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Zanger
@@ -83,6 +83,7 @@ files:
83
83
  - lib/sinatra/extensions/menu.rb
84
84
  - lib/sinatra/extensions/notification.rb
85
85
  - lib/sinatra/extensions/processmanager.rb
86
+ - lib/sinatra/handlers/constants.rb
86
87
  - lib/sinatra/handlers/errors.rb
87
88
  - lib/sinatra/handlers/init.rb
88
89
  - lib/sinatra/handlers/notifications.rb
@@ -185,6 +186,8 @@ files:
185
186
  - lib/sinatra/views/charts/line.slim
186
187
  - lib/sinatra/views/charts/pie.slim
187
188
  - lib/sinatra/views/charts/stacked_bar.slim
189
+ - lib/sinatra/views/constants/group.slim
190
+ - lib/sinatra/views/constants/new.slim
188
191
  - lib/sinatra/views/errors/403.slim
189
192
  - lib/sinatra/views/errors/404.slim
190
193
  - lib/sinatra/views/errors/500.slim