sinatra-hexacta 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sinatra/extensions/antiquity.rb +34 -0
  3. data/lib/sinatra/extensions/date.rb +49 -0
  4. data/lib/sinatra/extensions/init.rb +4 -0
  5. data/lib/sinatra/extensions/notification.rb +41 -0
  6. data/lib/sinatra/handlers/errors.rb +10 -3
  7. data/lib/sinatra/handlers/init.rb +3 -1
  8. data/lib/sinatra/handlers/notifications.rb +17 -28
  9. data/lib/sinatra/handlers/params.rb +26 -0
  10. data/lib/sinatra/handlers/reports.rb +28 -1
  11. data/lib/sinatra/helpers/alerts.rb +27 -0
  12. data/lib/sinatra/helpers/cas.rb +92 -0
  13. data/lib/sinatra/helpers/charts.rb +20 -4
  14. data/lib/sinatra/helpers/init.rb +4 -0
  15. data/lib/sinatra/helpers/inputs.rb +2 -2
  16. data/lib/sinatra/helpers/libraries.rb +2 -2
  17. data/lib/sinatra/helpers/mailer.rb +74 -0
  18. data/lib/sinatra/helpers/reports.rb +27 -0
  19. data/lib/sinatra/helpers/schedule.rb +68 -0
  20. data/lib/sinatra/helpers/subscriptions.rb +1 -1
  21. data/lib/sinatra/hexacta.rb +13 -5
  22. data/lib/sinatra/public/css/app.min.1.css +130 -12
  23. data/lib/sinatra/public/js/app.js +49 -42
  24. data/lib/sinatra/public/vendors/chartist/chartist-plugin-legend.js +237 -0
  25. data/lib/sinatra/views/alerts/empty.slim +7 -0
  26. data/lib/sinatra/views/alerts/error.slim +7 -0
  27. data/lib/sinatra/views/alerts/info.slim +7 -0
  28. data/lib/sinatra/views/alerts/warning.slim +7 -0
  29. data/lib/sinatra/views/charts/bar.slim +56 -0
  30. data/lib/sinatra/views/charts/gauge.slim +30 -0
  31. data/lib/sinatra/views/charts/{simple_line.slim → line.slim} +7 -8
  32. data/lib/sinatra/views/charts/pie.slim +34 -0
  33. data/lib/sinatra/views/charts/stacked_bar.slim +36 -0
  34. data/lib/sinatra/views/inputs/multiple_select.slim +4 -0
  35. data/lib/sinatra/views/inputs/select.slim +3 -0
  36. data/lib/sinatra/views/libraries/include_js_after.slim +0 -24
  37. data/lib/sinatra/views/libraries/include_js_before.slim +1 -0
  38. data/lib/sinatra/views/notifications.slim +37 -31
  39. data/lib/sinatra/views/notifications/form.slim +4 -4
  40. data/lib/sinatra/views/notifications/new.slim +4 -4
  41. data/lib/sinatra/views/notifications/widget.slim +9 -5
  42. data/lib/sinatra/views/reports/pick_date.slim +14 -0
  43. data/lib/sinatra/views/reports/pick_dates.slim +16 -0
  44. data/lib/sinatra/views/reports/pick_month.slim +14 -0
  45. data/lib/sinatra/views/reports/pick_year.slim +14 -0
  46. metadata +26 -3
@@ -0,0 +1,30 @@
1
+ .ct-chart id="#{id}"
2
+
3
+ .table-responsive.chart-table
4
+ table.table.table-striped
5
+ tbody
6
+ tr
7
+ th Serie
8
+ -for label in labels
9
+ th #{label}
10
+ -for serie in series
11
+ tr
12
+ th #{names[series.index(serie)]}
13
+ -for element in serie
14
+ td #{element}
15
+
16
+
17
+ javascript:
18
+ var labels = #{{labels}};
19
+ var series = #{{series}};
20
+
21
+ new Chartist.Pie('.ct-chart', {
22
+ series: series
23
+ }, {
24
+ donut: true,
25
+ donutWidth: 60,
26
+ donutSolid: true,
27
+ startAngle: 270,
28
+ total: 200,
29
+ showLabel: true
30
+ });
@@ -1,4 +1,4 @@
1
- .ct-chart id="#{id}"
1
+ .ct-chart.line-chart id="#{id}"
2
2
 
3
3
  .table-responsive.chart-table
4
4
  table.table.table-striped
@@ -26,11 +26,10 @@ javascript:
26
26
  right: 40
27
27
  },
28
28
  height: '300px',
29
- showLabel: true
29
+ plugins: [
30
+ Chartist.plugins.legend({
31
+ legendNames: #{{names}}
32
+ })
33
+ ]
30
34
  }
31
- );
32
-
33
- css:
34
- .chart-table table {
35
- font-size: 11px;
36
- }
35
+ );
@@ -0,0 +1,34 @@
1
+ .ct-chart.pie id="#{id}"
2
+
3
+ .table-responsive.chart-table
4
+ table.table.table-striped
5
+ tbody
6
+ tr
7
+ -for label in labels
8
+ th #{label}
9
+ tr
10
+ -for element in serie
11
+ td #{element}
12
+
13
+ javascript:
14
+ var labels = #{{labels}};
15
+ var serie = #{{serie}};
16
+
17
+ new Chartist.Pie("##{id}", {
18
+ labels: labels,
19
+ series: serie
20
+ }, {
21
+ fullWidth: true,
22
+ showLabel: false,
23
+ height: '300px',
24
+ plugins: [
25
+ Chartist.plugins.legend()
26
+ ]
27
+ }
28
+ );
29
+
30
+ css:
31
+ .pie .ct-legend.ct-legend-inside {
32
+ position: absolute;
33
+ top: 60px;
34
+ }
@@ -0,0 +1,36 @@
1
+ .ct-chart id="#{id}"
2
+
3
+ .table-responsive.chart-table
4
+ table.table.table-striped
5
+ tbody
6
+ tr
7
+ th Serie
8
+ -for label in labels
9
+ th #{label}
10
+ -for serie in series
11
+ tr
12
+ th #{names[series.index(serie)]}
13
+ -for element in serie
14
+ td #{element}
15
+
16
+ javascript:
17
+ var labels = #{{labels}};
18
+ var series = #{{series}};
19
+
20
+ new Chartist.Bar("##{id}", {
21
+ labels: labels,
22
+ series: series
23
+ }, {
24
+ stackBars: true,
25
+ axisY: {
26
+ labelInterpolationFnc: function(value) {
27
+ return value;
28
+ }
29
+ }
30
+ }).on('draw', function(data) {
31
+ if(data.type === 'bar') {
32
+ data.element.attr({
33
+ style: 'stroke-width: 30px'
34
+ });
35
+ }
36
+ });
@@ -4,8 +4,12 @@
4
4
  - id = "#{name}_#{rand(1000)}"
5
5
  - unless defined? placeholder
6
6
  - placeholder = "Selecciona..."
7
+
7
8
  - unless defined? selected_elements
8
9
  - selected_elements = []
10
+ - if selected_elements.nil?
11
+ - selected_elements = []
12
+ - selected_elements = selected_elements.collect { |element| element.to_s }
9
13
 
10
14
  -if required
11
15
  .form-group.has-success
@@ -4,6 +4,9 @@
4
4
  - id = "#{name}_#{rand(1000)}"
5
5
  - unless defined? placeholder
6
6
  - placeholder = "Selecciona..."
7
+ - unless defined? chosen
8
+ - chosen = nil
9
+
7
10
 
8
11
  -if required
9
12
  .form-group.has-success
@@ -27,27 +27,3 @@ script src="/sinatra-hexacta/vendors/bootstrap-validator/validator.js"
27
27
 
28
28
  /check
29
29
  /script src="/vendors/sparklines/jquery.sparkline.min.js"
30
-
31
- javascript:
32
- $(function() { //shorthand document.ready function
33
- $('form').on('submit', function(e) { //use on if jQuery 1.7+
34
- $(this).find(':input[required]').each(function() {
35
- if ($(this).val() == "" || $(this).val() == null) {
36
- $(this).parent().removeClass("success");
37
- $(this).parent().addClass("error");
38
- } else {
39
- $(this).parent().removeClass("error");
40
- $(this).parent().addClass("success");
41
- }
42
- })
43
- });
44
- $('.chosen').on('change', function(change, deselected) { //selected OR deselected
45
- if ($(this).val() == "" || $(this).val() == null) {
46
- $(this).parent().removeClass("success");
47
- $(this).parent().addClass("error");
48
- } else {
49
- $(this).parent().removeClass("error");
50
- $(this).parent().addClass("success");
51
- }
52
- });
53
- });
@@ -3,5 +3,6 @@ script src="/sinatra-hexacta/vendors/bootstrap/bootstrap.min.js"
3
3
  script src="/sinatra-hexacta/vendors/typeahead.js/handlebars.js"
4
4
  script src="/sinatra-hexacta/vendors/typeahead.js/typeahead.bundle.min.js"
5
5
  script src="/sinatra-hexacta/vendors/chartist/chartist.min.js"
6
+ script src="/sinatra-hexacta/vendors/chartist/chartist-plugin-legend.js"
6
7
 
7
8
  script src="/sinatra-hexacta/js/app.js?ver=#{settings.version}" type='text/javascript'
@@ -1,39 +1,45 @@
1
- -pages = (total.to_f / filters["limit"].to_f).ceil
1
+ -pages = (total.to_f / filters[:limit].to_f).ceil
2
2
  .block-header
3
3
  h2
4
4
  | Notificaciones
5
5
  .pull-right #{total} notificaciones en #{pages} páginas
6
6
 
7
- .row
8
- .col-xs-3
9
- == slim "sinatra-hexacta/notifications/form".to_sym, locals: { :notifications => notifications, :total => total, :filters => filters, :query => query }
10
- .col-xs-9
11
- .card
12
- .listview
13
- .lv-body
14
- -for notification in notifications
15
- .lv-item style="padding:10px 15px;border-bottom:1px solid #eee;#{notification.pending?? 'background-color: #ECF9FF;' : ''}"
16
- .media
17
- .pull-left.text-center.p-r-15
18
- img.lv-img-sm alt="" src="#{Configuration::USER_PHOTO_URL}#{notification.creator.hxt_id}" title="#{notification.creator.full_name}"
19
- input type="checkbox" name="notifications[]" value="#{notification.id}" style="position: absolute;left: 5px;bottom: 5px;"
20
- .media-body
21
- small.lv-small
22
- -if notification.label == 'error'
23
- .btn.btn-link.bgm-red.btn-xs style="font-size:6pt" #{notification.label}
24
- -else
25
- .btn.btn-link.bgm-blue.btn-xs style="font-size:6pt" #{notification.label}
26
- .di-block.m-l-5 #{notification.creation_date.display}
27
- .lv-title #{notification.title}
28
- small.lv-small style="white-space: normal;" #{notification.message.truncate(300)}
29
- .pull-right
30
- ul.lv-actions.actions
31
- li
32
- a role="button" title="Borrar" onclick="rm_object('notifications','#{notification.id}')"
33
- i.zmdi.zmdi-delete
34
- li
35
- a role="button" onclick="#{notification.pending?? "read_notify(#{notification.id},'#{notification.link}');this.onclick=''" : ''}" href="#{notification.pending?? '#' : notification.link}"
36
- i.zmdi.zmdi-open-in-new
7
+ -if notifications.empty?
8
+ == empty_alert({ :title => "No tienes notificaciones", :message => "Cuando recibas notificaciones podrás verlas en esta pantalla."})
9
+ -else
10
+ .row
11
+ .col-xs-3
12
+ == slim "sinatra-hexacta/notifications/form".to_sym, locals: { :notifications => notifications, :total => total, :filters => filters, :query => query }
13
+ .col-xs-9
14
+ .m-b-5
15
+ a.btn.bgm-blue.m-r-5 role="button" onclick="$('input[type=checkbox]').prop('checked', false);$('input[type=checkbox]').click();"Seleccionar todos
16
+ a.btn.btn-default.m-r-5 role="button" onclick="$('input[type=checkbox]').prop('checked', true);$('input[type=checkbox]').click();" Deseleccionar todos
17
+ .card
18
+ .listview
19
+ .lv-body
20
+ -for notification in notifications
21
+ .lv-item style="padding:10px 15px;border-bottom:1px solid #eee;#{notification.pending?? 'background-color: #ECF9FF;' : ''}"
22
+ .media
23
+ .pull-left.text-center.p-r-15
24
+ img.lv-img-sm alt="" src="#{Configuration::USER_PHOTO_URL}#{notification.creator.hxt_id}" title="#{notification.creator.full_name}"
25
+ input type="checkbox" name="notifications[]" value="#{notification.id}" style="position: absolute;left: 5px;bottom: 5px;"
26
+ .media-body
27
+ small.lv-small
28
+ -if notification.label == 'error'
29
+ .btn.btn-link.bgm-red.btn-xs style="font-size:6pt" #{notification.label}
30
+ -else
31
+ .btn.btn-link.bgm-blue.btn-xs style="font-size:6pt" #{notification.label}
32
+ .di-block.m-l-5 #{notification.creation_date.display}
33
+ .lv-title #{notification.title}
34
+ small.lv-small style="white-space: normal;" #{notification.message.truncate(300)}
35
+ .pull-right
36
+ ul.lv-actions.actions
37
+ li
38
+ a role="button" title="Borrar" onclick="rm_object('notifications','#{notification.id}')"
39
+ i.zmdi.zmdi-delete
40
+ li
41
+ a role="button" onclick="#{notification.pending?? "read_notify(#{notification.id},'#{notification.link}');this.onclick=''" : ''}" href="#{notification.pending?? '#' : notification.link}"
42
+ i.zmdi.zmdi-open-in-new
37
43
 
38
44
 
39
45
  -total_pending = Notification.pending.for(authenticated(User)).exclude_message.count
@@ -1,14 +1,14 @@
1
- -offset = filters["offset"].nil? ? 0 : filters["offset"].to_i
2
- -pages = (total.to_f / filters["limit"].to_f).ceil
1
+ -offset = filters[:offset].nil? ? 0 : filters[:offset].to_i
2
+ -pages = (total.to_f / filters[:limit].to_f).ceil
3
3
  -position = offset % 5
4
4
 
5
5
  .card#form.no-print.m-b-10
6
6
  .card-body.card-padding
7
7
  .row
8
8
  .col-sm-12
9
- == slim :'forms/multiple_select', locals: { :name => "user_id", :elements => notifications.collect { |notification| { :value => notification.creator.id, :text => notification.creator.full_name } }.uniq, :placeholder => "Empleados", :filters => filters }
9
+ == multiple_select_input({ :name => "user_id", :elements => notifications.collect { |notification| { :value => notification.creator.id, :text => notification.creator.full_name } }.uniq, :placeholder => "Empleados", :selected_elements => filters[:user_id] })
10
10
  .col-md-12
11
- == slim :'forms/multiple_select', locals: { :name => "label", :elements => Notification.labels.collect { |notification| { :value => notification.label, :text => notification.label.upcase } }, :placeholder => "Etiquetas", :filters => filters }
11
+ == multiple_select_input({ :name => "label", :elements => Notification.labels.collect { |notification| { :value => notification.label, :text => notification.label.upcase } }, :placeholder => "Etiquetas", :selected_elements => filters[:label] })
12
12
  .pm-body.clearfix
13
13
  ul.tab-nav.tn-justified role="tablist"
14
14
  li.waves-effect.active role="presentation"
@@ -1,6 +1,6 @@
1
1
  .modal.fade id="new-notification" tabindex="-1" role="dialog" aria-labelledby="newNotification"
2
2
  .modal-dialog
3
- form.modal-content action="/notification" method="POST" onsubmit="submit.disabled = true; return true;"
3
+ form.modal-content action="/notification" method="POST"
4
4
  .modal-content
5
5
  .modal-header
6
6
  h4.modal-title Enviar mensaje directo a
@@ -8,13 +8,13 @@
8
8
  input.hidden name="label" value="message"
9
9
  .row
10
10
  .col-sm-12
11
- == slim :'forms/multiple_select', locals: { :name => "user_ids", :elements => User.active.all.collect { |user| { :value => user.id, :text => user.full_name } }, :placeholder => "Empleados", :filters => {} }
11
+ == multiple_select_input({ :name => "user_ids", :elements => User.active.all.collect { |user| { :value => user.id, :text => user.full_name } }, :placeholder => "Empleados", :required => true })
12
12
  .row
13
13
  .col-xs-12
14
- == slim :'forms/input', locals: { :id => "", :type => "text", :name => "title", :value => "", :title => "Título", :required => true }
14
+ == input({ :type => "text", :name => "title", :value => "", :title => "Título", :required => true })
15
15
  .row
16
16
  .col-xs-12
17
- == slim :'forms/textarea', locals: { :name => "message", :value => nil, :title => "Comentarios", :length => 10000, :rows => 6 }
17
+ == textarea_input({ :name => "message", :value => nil, :title => "Comentarios", :length => 10000, :rows => 6, :required => true })
18
18
 
19
19
  .modal-footer
20
20
  button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
@@ -1,9 +1,13 @@
1
- -total = Notification.pending.for(authenticated(User)).exclude_message.count
2
- -notifications = Notification.for(authenticated(User)).exclude_message.order(:read_date,Sequel.desc(:id)).limit(5).all
1
+ -total = Notification.pending.for(authenticated(User)).count
2
+ -notifications = Notification.pending.for(authenticated(User)).order(Sequel.desc(:id)).limit(20).all
3
+
3
4
  li.dropdown.hidden-xs
4
- a.notifications-menu data-toggle="dropdown" href=""
5
- i.tm-icon.zmdi.zmdi-notifications
6
- -unless total == 0
5
+ -if total == 0
6
+ a href="/notifications" title="No tienes notificaciones pendientes"
7
+ i.tm-icon.zmdi.zmdi-notifications-none
8
+ -else
9
+ a.notifications-menu data-toggle="dropdown" href=""
10
+ i.tm-icon.zmdi.zmdi-notifications
7
11
  i.notification-count.tmn-counts.animated.bounceIn #{total}
8
12
  .dropdown-menu.dropdown-menu-lg.pull-right
9
13
  .listview
@@ -0,0 +1,14 @@
1
+ .modal.fade id="#{report}_date" tabindex="-1" role="dialog" aria-labelledby="pickDate"
2
+ .modal-dialog.modal-sm
3
+ form.modal-content action="#{url}" method="GET"
4
+ .modal-content
5
+ .modal-header
6
+ h4.modal-title Selecciona una fecha...
7
+ .modal-body
8
+ .row
9
+ .col-xs-12
10
+ == date_input({ :name => "date", :value => Date.today.short_display, :title => "Fecha de referencia", :required => true })
11
+
12
+ .modal-footer
13
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
14
+ button.btn.btn-link.waves-effect#submit Descargar reporte
@@ -0,0 +1,16 @@
1
+ .modal.fade id="#{report}_dates" tabindex="-1" role="dialog" aria-labelledby="pickDate"
2
+ .modal-dialog.modal-sm
3
+ form.modal-content action="#{url}" method="GET"
4
+ .modal-content
5
+ .modal-header
6
+ h4.modal-title Selecciona una fecha...
7
+ .modal-body
8
+ .row
9
+ .col-xs-6
10
+ == date_input({ :name => "from", :value => Date.today.short_display, :title => "Desde", :required => true })
11
+ .col-xs-6
12
+ == date_input({ :name => "to", :value => (Date.today + 30).short_display, :title => "Hasta", :required => true })
13
+
14
+ .modal-footer
15
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
16
+ button.btn.btn-link.waves-effect#submit Descargar reporte
@@ -0,0 +1,14 @@
1
+ .modal.fade id="#{report}_month" tabindex="-1" role="dialog" aria-labelledby="pickDate"
2
+ .modal-dialog.modal-sm
3
+ form.modal-content action="#{url}" method="GET"
4
+ .modal-content
5
+ .modal-header
6
+ h4.modal-title Selecciona un mes...
7
+ .modal-body
8
+ .row
9
+ .col-xs-12
10
+ == month_input({ :name => "date", :value => Date.today.short_display, :title => "Mes de referencia", :required => true })
11
+
12
+ .modal-footer
13
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
14
+ button.btn.btn-link.waves-effect#submit Descargar reporte
@@ -0,0 +1,14 @@
1
+ .modal.fade id="#{report}_year" tabindex="-1" role="dialog" aria-labelledby="pickDate"
2
+ .modal-dialog.modal-sm
3
+ form.modal-content action="#{url}" method="GET"
4
+ .modal-content
5
+ .modal-header
6
+ h4.modal-title Selecciona un año...
7
+ .modal-body
8
+ .row
9
+ .col-xs-12
10
+ == year_input({ :name => "date", :value => Date.today.year, :title => "Año de referencia", :required => true })
11
+
12
+ .modal-footer
13
+ button.btn.btn-link.waves-effect data-dismiss="modal" type="button" Cerrar
14
+ button.btn.btn-link.waves-effect#submit Descargar reporte
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: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Zanger
@@ -10,20 +10,30 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-05-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A simple hello world gem
13
+ description: A gem to support general functionality accross all apps
14
14
  email: mzanger@hexacta.com
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/sinatra/extensions/antiquity.rb
20
+ - lib/sinatra/extensions/date.rb
21
+ - lib/sinatra/extensions/init.rb
22
+ - lib/sinatra/extensions/notification.rb
19
23
  - lib/sinatra/handlers/errors.rb
20
24
  - lib/sinatra/handlers/init.rb
21
25
  - lib/sinatra/handlers/notifications.rb
26
+ - lib/sinatra/handlers/params.rb
22
27
  - lib/sinatra/handlers/reports.rb
28
+ - lib/sinatra/helpers/alerts.rb
29
+ - lib/sinatra/helpers/cas.rb
23
30
  - lib/sinatra/helpers/charts.rb
24
31
  - lib/sinatra/helpers/init.rb
25
32
  - lib/sinatra/helpers/inputs.rb
26
33
  - lib/sinatra/helpers/libraries.rb
34
+ - lib/sinatra/helpers/mailer.rb
35
+ - lib/sinatra/helpers/reports.rb
36
+ - lib/sinatra/helpers/schedule.rb
27
37
  - lib/sinatra/helpers/subscriptions.rb
28
38
  - lib/sinatra/hexacta.rb
29
39
  - lib/sinatra/public/css/app.min.1.css
@@ -60,6 +70,7 @@ files:
60
70
  - lib/sinatra/public/vendors/animate.css/animate.min.css
61
71
  - lib/sinatra/public/vendors/bootstrap-validator/validator.js
62
72
  - lib/sinatra/public/vendors/bootstrap/bootstrap.min.js
73
+ - lib/sinatra/public/vendors/chartist/chartist-plugin-legend.js
63
74
  - lib/sinatra/public/vendors/chartist/chartist.min.css
64
75
  - lib/sinatra/public/vendors/chartist/chartist.min.js
65
76
  - lib/sinatra/public/vendors/chosen/chosen-sprite.png
@@ -87,7 +98,15 @@ files:
87
98
  - lib/sinatra/public/vendors/typeahead.js/typeahead.bundle.min.js
88
99
  - lib/sinatra/public/vendors/waves/waves.min.css
89
100
  - lib/sinatra/public/vendors/waves/waves.min.js
90
- - lib/sinatra/views/charts/simple_line.slim
101
+ - lib/sinatra/views/alerts/empty.slim
102
+ - lib/sinatra/views/alerts/error.slim
103
+ - lib/sinatra/views/alerts/info.slim
104
+ - lib/sinatra/views/alerts/warning.slim
105
+ - lib/sinatra/views/charts/bar.slim
106
+ - lib/sinatra/views/charts/gauge.slim
107
+ - lib/sinatra/views/charts/line.slim
108
+ - lib/sinatra/views/charts/pie.slim
109
+ - lib/sinatra/views/charts/stacked_bar.slim
91
110
  - lib/sinatra/views/errors/403.slim
92
111
  - lib/sinatra/views/errors/404.slim
93
112
  - lib/sinatra/views/errors/500.slim
@@ -110,6 +129,10 @@ files:
110
129
  - lib/sinatra/views/notifications/new.slim
111
130
  - lib/sinatra/views/notifications/view.slim
112
131
  - lib/sinatra/views/notifications/widget.slim
132
+ - lib/sinatra/views/reports/pick_date.slim
133
+ - lib/sinatra/views/reports/pick_dates.slim
134
+ - lib/sinatra/views/reports/pick_month.slim
135
+ - lib/sinatra/views/reports/pick_year.slim
113
136
  homepage: https://rubygems.org/gems/sinatra-hexacta
114
137
  licenses:
115
138
  - MIT