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.
- checksums.yaml +4 -4
- data/lib/sinatra/extensions/antiquity.rb +34 -0
- data/lib/sinatra/extensions/date.rb +49 -0
- data/lib/sinatra/extensions/init.rb +4 -0
- data/lib/sinatra/extensions/notification.rb +41 -0
- data/lib/sinatra/handlers/errors.rb +10 -3
- data/lib/sinatra/handlers/init.rb +3 -1
- data/lib/sinatra/handlers/notifications.rb +17 -28
- data/lib/sinatra/handlers/params.rb +26 -0
- data/lib/sinatra/handlers/reports.rb +28 -1
- data/lib/sinatra/helpers/alerts.rb +27 -0
- data/lib/sinatra/helpers/cas.rb +92 -0
- data/lib/sinatra/helpers/charts.rb +20 -4
- data/lib/sinatra/helpers/init.rb +4 -0
- data/lib/sinatra/helpers/inputs.rb +2 -2
- data/lib/sinatra/helpers/libraries.rb +2 -2
- data/lib/sinatra/helpers/mailer.rb +74 -0
- data/lib/sinatra/helpers/reports.rb +27 -0
- data/lib/sinatra/helpers/schedule.rb +68 -0
- data/lib/sinatra/helpers/subscriptions.rb +1 -1
- data/lib/sinatra/hexacta.rb +13 -5
- data/lib/sinatra/public/css/app.min.1.css +130 -12
- data/lib/sinatra/public/js/app.js +49 -42
- data/lib/sinatra/public/vendors/chartist/chartist-plugin-legend.js +237 -0
- data/lib/sinatra/views/alerts/empty.slim +7 -0
- data/lib/sinatra/views/alerts/error.slim +7 -0
- data/lib/sinatra/views/alerts/info.slim +7 -0
- data/lib/sinatra/views/alerts/warning.slim +7 -0
- data/lib/sinatra/views/charts/bar.slim +56 -0
- data/lib/sinatra/views/charts/gauge.slim +30 -0
- data/lib/sinatra/views/charts/{simple_line.slim → line.slim} +7 -8
- data/lib/sinatra/views/charts/pie.slim +34 -0
- data/lib/sinatra/views/charts/stacked_bar.slim +36 -0
- data/lib/sinatra/views/inputs/multiple_select.slim +4 -0
- data/lib/sinatra/views/inputs/select.slim +3 -0
- data/lib/sinatra/views/libraries/include_js_after.slim +0 -24
- data/lib/sinatra/views/libraries/include_js_before.slim +1 -0
- data/lib/sinatra/views/notifications.slim +37 -31
- data/lib/sinatra/views/notifications/form.slim +4 -4
- data/lib/sinatra/views/notifications/new.slim +4 -4
- data/lib/sinatra/views/notifications/widget.slim +9 -5
- data/lib/sinatra/views/reports/pick_date.slim +14 -0
- data/lib/sinatra/views/reports/pick_dates.slim +16 -0
- data/lib/sinatra/views/reports/pick_month.slim +14 -0
- data/lib/sinatra/views/reports/pick_year.slim +14 -0
- 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
|
-
|
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
|
@@ -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[
|
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
|
-
.
|
8
|
-
.
|
9
|
-
|
10
|
-
.
|
11
|
-
.
|
12
|
-
.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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[
|
2
|
-
-pages = (total.to_f / filters[
|
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
|
-
==
|
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
|
-
==
|
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"
|
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
|
-
==
|
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
|
-
==
|
14
|
+
== input({ :type => "text", :name => "title", :value => "", :title => "Título", :required => true })
|
15
15
|
.row
|
16
16
|
.col-xs-12
|
17
|
-
==
|
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)).
|
2
|
-
-notifications = Notification.for(authenticated(User)).
|
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
|
-
|
5
|
-
|
6
|
-
|
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
|
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
|
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/
|
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
|