tranzito_utils 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -13
- data/app/assets/builds/tranzito_utils-compiled.css +11102 -0
- data/app/assets/stylesheets/tranzito_utils/_admin_header.scss +73 -0
- data/app/assets/stylesheets/tranzito_utils/_alerts.scss +42 -0
- data/app/assets/stylesheets/tranzito_utils/_pagination.scss +36 -0
- data/app/assets/stylesheets/tranzito_utils/_table_extensions.scss +175 -0
- data/app/assets/stylesheets/tranzito_utils/_utils.scss +83 -0
- data/app/assets/stylesheets/tranzito_utils/_variables.scss +2 -0
- data/app/assets/stylesheets/tranzito_utils.scss +13 -0
- data/lib/tranzito_utils/concerns/set_period.rb +8 -0
- data/lib/tranzito_utils/gem.rb +3 -0
- data/lib/tranzito_utils/helpers/helpers.rb +75 -0
- data/lib/tranzito_utils/version.rb +1 -1
- data/lib/tranzito_utils.rb +3 -1
- metadata +25 -2
@@ -0,0 +1,73 @@
|
|
1
|
+
.admin-header {
|
2
|
+
@extend .clearfix;
|
3
|
+
margin-bottom: 1rem;
|
4
|
+
padding-bottom: 1.5rem;
|
5
|
+
border-bottom: 1px solid #bdbdbd;
|
6
|
+
|
7
|
+
.btn {
|
8
|
+
@extend .header-sublink;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1 {
|
12
|
+
font-size: 2rem;
|
13
|
+
@include media-breakpoint-up(md) {
|
14
|
+
.btn {
|
15
|
+
line-height: 2; // align floating buttons with the h1 tag
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
h1,
|
20
|
+
h2,
|
21
|
+
h3 {
|
22
|
+
@include media-breakpoint-down(sm) {
|
23
|
+
font-size: 1.5rem;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
ul {
|
27
|
+
@extend .nav;
|
28
|
+
@extend .nav-pills;
|
29
|
+
@extend .justify-content-end;
|
30
|
+
|
31
|
+
// On small screens, make nav links align left
|
32
|
+
@include media-breakpoint-down(sm) {
|
33
|
+
justify-content: normal !important;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
.nav-item {
|
37
|
+
@extend .small;
|
38
|
+
margin-left: 0.25rem;
|
39
|
+
a,
|
40
|
+
.button_to .btn {
|
41
|
+
padding: 0.25rem 0.5rem;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
.subtitle {
|
45
|
+
@extend .mt-4;
|
46
|
+
@extend .col-12;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
.header-link {
|
51
|
+
color: $text-color;
|
52
|
+
text-decoration: underline;
|
53
|
+
}
|
54
|
+
|
55
|
+
// Because we want it to break on small screens
|
56
|
+
.header-sublink {
|
57
|
+
@extend .float-md-right !optional;
|
58
|
+
}
|
59
|
+
|
60
|
+
// Because otherwise they overflow the right side of the screen
|
61
|
+
.right-dropdown-overflown {
|
62
|
+
.dropdown-menu.show {
|
63
|
+
left: -75% !important;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
.right-dropdown-overflown-lg {
|
68
|
+
@include media-breakpoint-up(lg) {
|
69
|
+
.dropdown-menu.show {
|
70
|
+
left: -75%;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// Bootstrap alerts for flash message types
|
2
|
+
.alert-error {
|
3
|
+
@extend .alert-danger;
|
4
|
+
}
|
5
|
+
.alert-alert {
|
6
|
+
@extend .alert-warning;
|
7
|
+
}
|
8
|
+
.alert-notice {
|
9
|
+
@extend .alert-info;
|
10
|
+
}
|
11
|
+
|
12
|
+
.flash-alert-container {
|
13
|
+
position: fixed;
|
14
|
+
z-index: 1049; // Modal z-index minus 1
|
15
|
+
width: 90%;
|
16
|
+
max-width: 500px;
|
17
|
+
top: 48px;
|
18
|
+
right: 48px;
|
19
|
+
.alert {
|
20
|
+
box-shadow: 1px 1px 2px rgba(black, 0.1);
|
21
|
+
margin-bottom: 0;
|
22
|
+
margin-top: 10px;
|
23
|
+
&:first-of-type {
|
24
|
+
margin-top: 0;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
// When extra small, 48px over is too far!
|
28
|
+
@include media-breakpoint-down(xs) {
|
29
|
+
right: 3%;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
.valet-interface .flash-alert-container {
|
34
|
+
position: relative;
|
35
|
+
z-index: 1;
|
36
|
+
width: 100%;
|
37
|
+
top: 0;
|
38
|
+
left: 0;
|
39
|
+
.alert {
|
40
|
+
margin-bottom: 0.5rem;
|
41
|
+
}
|
42
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
.pagination-flex {
|
2
|
+
display: flex;
|
3
|
+
flex-wrap: wrap;
|
4
|
+
opacity: 0.65; // Make it a little less prominent, it isn't the most important thing on the page
|
5
|
+
.pagination {
|
6
|
+
margin: 0.5rem 0.5rem 0 0;
|
7
|
+
}
|
8
|
+
&.pagination-sm a.page-link {
|
9
|
+
padding: 0.25rem 0.5rem;
|
10
|
+
font-size: 0.875rem;
|
11
|
+
}
|
12
|
+
.pagination-number,
|
13
|
+
.per-page {
|
14
|
+
display: flex;
|
15
|
+
flex-basis: 0;
|
16
|
+
flex-grow: 1;
|
17
|
+
margin-top: 0.5rem;
|
18
|
+
}
|
19
|
+
.per-page {
|
20
|
+
min-width: 9rem;
|
21
|
+
max-width: 9rem;
|
22
|
+
}
|
23
|
+
.pagination-number {
|
24
|
+
margin-left: 0.5rem;
|
25
|
+
}
|
26
|
+
|
27
|
+
.per-page-select {
|
28
|
+
margin-top: 0.5rem; // Align with the pagination part
|
29
|
+
width: 8rem;
|
30
|
+
display: inline-block;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
.pagination-number {
|
35
|
+
margin: 1rem 0 0;
|
36
|
+
}
|
@@ -0,0 +1,175 @@
|
|
1
|
+
// Some tables have skip-user as an option. Because of caching, we always want the same columns
|
2
|
+
// So include the user and hide it the class is enabled
|
3
|
+
.skip-user .user-cell,
|
4
|
+
.skip-parking-location .parking-location-cell {
|
5
|
+
display: none;
|
6
|
+
}
|
7
|
+
|
8
|
+
// ^ is bikehub unique styles, the following is shared with Bike Index
|
9
|
+
|
10
|
+
// Full screen table stuff
|
11
|
+
@mixin full-screen-table-overflown {
|
12
|
+
// Enable scrolling and make it edge to edge
|
13
|
+
// separate class so it can be applied via js if applicable
|
14
|
+
overflow-x: scroll;
|
15
|
+
margin-left: -15px;
|
16
|
+
margin-right: -15px;
|
17
|
+
}
|
18
|
+
|
19
|
+
.full-screen-table-overflown {
|
20
|
+
@include full-screen-table-overflown;
|
21
|
+
}
|
22
|
+
|
23
|
+
.full-screen-table {
|
24
|
+
@include media-breakpoint-down(sm) {
|
25
|
+
@include full-screen-table-overflown;
|
26
|
+
}
|
27
|
+
|
28
|
+
td ul {
|
29
|
+
padding: 0 0 0 1.5rem;
|
30
|
+
margin: 0.5rem 0 0.5rem;
|
31
|
+
}
|
32
|
+
|
33
|
+
// Dropdown headers
|
34
|
+
.dropdown-toggle {
|
35
|
+
font-weight: normal;
|
36
|
+
&:active,
|
37
|
+
&.active {
|
38
|
+
font-weight: bold;
|
39
|
+
text-decoration: underline;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
.table-list {
|
45
|
+
@extend .table;
|
46
|
+
@extend .table-striped;
|
47
|
+
@extend .table-bordered;
|
48
|
+
@extend .table-sm;
|
49
|
+
tr td {
|
50
|
+
line-height: 1.5;
|
51
|
+
&:first-child {
|
52
|
+
font-size: 75%;
|
53
|
+
font-style: italic;
|
54
|
+
text-align: right;
|
55
|
+
padding: 9px 4px 4px;
|
56
|
+
line-height: 1.25;
|
57
|
+
}
|
58
|
+
&:first-child.full-width-data {
|
59
|
+
font-size: 100%;
|
60
|
+
font-style: normal;
|
61
|
+
text-align: left;
|
62
|
+
}
|
63
|
+
// use last, rather than first, to enable full width single rows
|
64
|
+
&:last-child {
|
65
|
+
width: 85%; // This is effectively min-width for tables
|
66
|
+
}
|
67
|
+
}
|
68
|
+
tr.active-row {
|
69
|
+
background-color: #ebf5fb !important;
|
70
|
+
a {
|
71
|
+
text-decoration: underline;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
&.wide-definition tr td {
|
75
|
+
&:last-child {
|
76
|
+
width: 70%;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
.inline-images img {
|
80
|
+
display: inline-block;
|
81
|
+
width: 31%;
|
82
|
+
max-width: 150px;
|
83
|
+
margin-right: 3%;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
table thead.sortable {
|
88
|
+
th {
|
89
|
+
font-weight: normal;
|
90
|
+
a.sortable-link {
|
91
|
+
display: block;
|
92
|
+
position: relative;
|
93
|
+
// To give a spot for the sortable direction
|
94
|
+
&.active {
|
95
|
+
padding-right: 1.5rem;
|
96
|
+
}
|
97
|
+
span.sortable-direction {
|
98
|
+
display: block;
|
99
|
+
position: absolute;
|
100
|
+
right: 0;
|
101
|
+
top: 0;
|
102
|
+
}
|
103
|
+
&.active {
|
104
|
+
font-weight: strong;
|
105
|
+
text-decoration: underline;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
.code-small {
|
111
|
+
pre {
|
112
|
+
margin-bottom: 0;
|
113
|
+
padding: 0;
|
114
|
+
border: none;
|
115
|
+
}
|
116
|
+
code {
|
117
|
+
position: relative;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
// Random special formatting bits
|
122
|
+
table {
|
123
|
+
.table-cell-check {
|
124
|
+
font-family: Courier;
|
125
|
+
text-align: center;
|
126
|
+
font-weight: bold;
|
127
|
+
}
|
128
|
+
|
129
|
+
code {
|
130
|
+
word-break: break-all;
|
131
|
+
}
|
132
|
+
|
133
|
+
.data-cell {
|
134
|
+
pre {
|
135
|
+
padding: 0.25rem 0.5rem;
|
136
|
+
margin: 0 0 0.5rem;
|
137
|
+
}
|
138
|
+
&.only-data {
|
139
|
+
padding: 0;
|
140
|
+
@extend .code-small;
|
141
|
+
pre {
|
142
|
+
background: none;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
&.small {
|
146
|
+
padding: 0;
|
147
|
+
pre {
|
148
|
+
border: none;
|
149
|
+
font-size: 80%;
|
150
|
+
margin: 0;
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
.less-strong-hold {
|
156
|
+
position: relative;
|
157
|
+
min-height: 1.25em;
|
158
|
+
}
|
159
|
+
|
160
|
+
.less-strong-right {
|
161
|
+
position: absolute;
|
162
|
+
right: -0.3em;
|
163
|
+
line-height: 1;
|
164
|
+
bottom: -0.2em;
|
165
|
+
font-size: 0.8em;
|
166
|
+
@extend .less-strong;
|
167
|
+
}
|
168
|
+
|
169
|
+
.photo-cell {
|
170
|
+
text-align: center;
|
171
|
+
img {
|
172
|
+
max-width: 150px;
|
173
|
+
}
|
174
|
+
}
|
175
|
+
}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
// Handy helper classes
|
2
|
+
.less-strong {
|
3
|
+
opacity: 0.65;
|
4
|
+
// Couldn't get & + input to work, so manually specifying the applicable element classes
|
5
|
+
a:hover,
|
6
|
+
& + a:hover,
|
7
|
+
.btn:hover,
|
8
|
+
&.btn:hover,
|
9
|
+
.btn:focus,
|
10
|
+
&.btn:focus,
|
11
|
+
.form-control:hover,
|
12
|
+
&.form-control:hover,
|
13
|
+
.form-control:focus,
|
14
|
+
&.form-control:focus {
|
15
|
+
opacity: 1;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
.less-less-strong {
|
20
|
+
@extend .less-strong;
|
21
|
+
opacity: 0.3;
|
22
|
+
}
|
23
|
+
|
24
|
+
.gray-link {
|
25
|
+
a,
|
26
|
+
& {
|
27
|
+
color: $gray-600 !important;
|
28
|
+
opacity: 0.65;
|
29
|
+
text-decoration: underline;
|
30
|
+
}
|
31
|
+
&:hover,
|
32
|
+
&:active,
|
33
|
+
&.active {
|
34
|
+
opacity: 0.9;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
label,
|
39
|
+
input[type="checkbox"],
|
40
|
+
input[type="radio"] {
|
41
|
+
cursor: pointer;
|
42
|
+
}
|
43
|
+
|
44
|
+
.em {
|
45
|
+
font-style: italic;
|
46
|
+
}
|
47
|
+
|
48
|
+
.hidden-sm-down {
|
49
|
+
@include media-breakpoint-down(sm) {
|
50
|
+
display: none;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
.hidden-xs-down {
|
55
|
+
@include media-breakpoint-down(xs) {
|
56
|
+
display: none;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
.convertedTime {
|
61
|
+
white-space: nowrap;
|
62
|
+
}
|
63
|
+
|
64
|
+
.text-underline {
|
65
|
+
text-decoration: underline;
|
66
|
+
}
|
67
|
+
|
68
|
+
.uuid-display {
|
69
|
+
white-space: nowrap;
|
70
|
+
}
|
71
|
+
|
72
|
+
.overflow-scroll {
|
73
|
+
overflow: scroll;
|
74
|
+
}
|
75
|
+
|
76
|
+
.text-color-link {
|
77
|
+
color: $text-color;
|
78
|
+
text-decoration: underline;
|
79
|
+
}
|
80
|
+
|
81
|
+
.center {
|
82
|
+
text-align: center;
|
83
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
@import 'bootstrap/scss/bootstrap';
|
2
|
+
|
3
|
+
// Variables
|
4
|
+
@import "tranzito_utils/variables";
|
5
|
+
|
6
|
+
// Utilities
|
7
|
+
@import "tranzito_utils/utils";
|
8
|
+
@import "tranzito_utils/pagination";
|
9
|
+
@import "tranzito_utils/table_extensions";
|
10
|
+
|
11
|
+
// Sections
|
12
|
+
@import "tranzito_utils/admin_header";
|
13
|
+
@import "tranzito_utils/alerts";
|
@@ -5,6 +5,14 @@ module TranzitoUtils
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
PERIOD_TYPES = %w[hour day month year week all next_week next_month].freeze
|
7
7
|
|
8
|
+
included do
|
9
|
+
helper_method :controller_namespace
|
10
|
+
end
|
11
|
+
|
12
|
+
def controller_namespace
|
13
|
+
@controller_namespace ||= self.class.module_parent.name != "Object" ? self.class.module_parent.name.downcase : nil
|
14
|
+
end
|
15
|
+
|
8
16
|
# For setting periods, particularly for graphing
|
9
17
|
def set_period
|
10
18
|
set_timezone
|
data/lib/tranzito_utils/gem.rb
CHANGED
@@ -3,6 +3,9 @@ module TranzitoUtils
|
|
3
3
|
initializer "tranzito_utils.config", before: :load_config_initializers do |app|
|
4
4
|
# Setting the default timezone for timeparser service from host application configuration
|
5
5
|
TranzitoUtils::DEFAULT[:time_zone] = ActiveSupport::TimeZone[Rails.application.config.time_zone]
|
6
|
+
|
7
|
+
# Setting the default application display name
|
8
|
+
TranzitoUtils::DEFAULT[:application_display_name] = Rails.application.class.module_parent.to_s
|
6
9
|
end
|
7
10
|
end
|
8
11
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TranzitoUtils
|
4
|
+
module Helpers
|
5
|
+
include TranzitoUtils::SortableHelper
|
6
|
+
include TranzitoUtils::GraphingHelper
|
7
|
+
|
8
|
+
def in_admin?
|
9
|
+
controller_namespace == "admin"
|
10
|
+
end
|
11
|
+
|
12
|
+
def page_title
|
13
|
+
return @page_title if defined?(@page_title)
|
14
|
+
prefix = (in_admin? ? "🧰" : TranzitoUtils::DEFAULT[:application_display_name])
|
15
|
+
return "#{prefix} #{@prefixed_page_title}" if @prefixed_page_title.present?
|
16
|
+
[
|
17
|
+
prefix,
|
18
|
+
default_action_name_title,
|
19
|
+
controller_title_for_action
|
20
|
+
].compact.join(" ")
|
21
|
+
end
|
22
|
+
|
23
|
+
def active_link(link_text, link_path, html_options = {})
|
24
|
+
match_controller = html_options.delete(:match_controller)
|
25
|
+
html_options[:class] ||= ""
|
26
|
+
html_options[:class] += " active" if current_page_active?(link_path, match_controller)
|
27
|
+
link_to(raw(link_text), link_path, html_options).html_safe
|
28
|
+
end
|
29
|
+
|
30
|
+
def current_page_active?(link_path, match_controller = false)
|
31
|
+
link_path = Rails.application.routes.recognize_path(link_path)
|
32
|
+
active_path = Rails.application.routes.recognize_path(request.url)
|
33
|
+
matches_controller = active_path[:controller] == link_path[:controller]
|
34
|
+
return true if match_controller && matches_controller
|
35
|
+
current_page?(link_path) || matches_controller && active_path[:action] == link_path[:action]
|
36
|
+
rescue # This mainly fails in testing - but why not rescue always
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
40
|
+
def current_user_time_preference_script
|
41
|
+
time_preference = current_user&.time_preference || User.time_preferences.first
|
42
|
+
scrpt = ""
|
43
|
+
if %w[single_format_local single_format_event].include?(time_preference)
|
44
|
+
scrpt += "window.timeParserSingleFormat=true;"
|
45
|
+
end
|
46
|
+
if %w[single_format_event variable_format_event].include?(time_preference)
|
47
|
+
scrpt += 'window.localTimezone="America/Los_Angeles";'
|
48
|
+
end
|
49
|
+
scrpt
|
50
|
+
end
|
51
|
+
|
52
|
+
def pretty_print_json(data)
|
53
|
+
require "coderay"
|
54
|
+
CodeRay.scan(JSON.pretty_generate(data), :json).div.html_safe
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def default_action_name_title
|
60
|
+
if action_name == "show"
|
61
|
+
# Take up less space for admin
|
62
|
+
return in_admin? ? nil : "Display"
|
63
|
+
end
|
64
|
+
action_name == "index" ? nil : action_name.titleize
|
65
|
+
end
|
66
|
+
|
67
|
+
def controller_title_for_action
|
68
|
+
return @controller_display_name if defined?(@controller_display_name)
|
69
|
+
# No need to include parking
|
70
|
+
c_name = controller_name.gsub("parking_location", "location")
|
71
|
+
return c_name.titleize if %(index).include?(action_name)
|
72
|
+
c_name.singularize.titleize
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/tranzito_utils.rb
CHANGED
@@ -8,7 +8,8 @@ module TranzitoUtils
|
|
8
8
|
earliest_year: 1900,
|
9
9
|
latest_year: (Time.current.year + 100),
|
10
10
|
additional_search_keys: [],
|
11
|
-
time_zone: ""
|
11
|
+
time_zone: "",
|
12
|
+
application_display_name: ""
|
12
13
|
}
|
13
14
|
end
|
14
15
|
|
@@ -16,6 +17,7 @@ require "tranzito_utils/concerns/set_period"
|
|
16
17
|
require "tranzito_utils/concerns/sortable_table"
|
17
18
|
require "tranzito_utils/helpers/graphing_helper"
|
18
19
|
require "tranzito_utils/helpers/sortable_helper"
|
20
|
+
require "tranzito_utils/helpers/helpers"
|
19
21
|
require "tranzito_utils/services/time_parser"
|
20
22
|
require "tranzito_utils/services/normalize"
|
21
23
|
require "tranzito_utils/gem"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tranzito_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- willbarrettdev
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-10-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -26,6 +26,20 @@ dependencies:
|
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '6.0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: coderay
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
29
43
|
description: Ruby gem contain several modules mainly containing the helpers, concerns
|
30
44
|
and services for personal use by Tranzito
|
31
45
|
email:
|
@@ -37,6 +51,14 @@ files:
|
|
37
51
|
- MIT-LICENSE
|
38
52
|
- README.md
|
39
53
|
- Rakefile
|
54
|
+
- app/assets/builds/tranzito_utils-compiled.css
|
55
|
+
- app/assets/stylesheets/tranzito_utils.scss
|
56
|
+
- app/assets/stylesheets/tranzito_utils/_admin_header.scss
|
57
|
+
- app/assets/stylesheets/tranzito_utils/_alerts.scss
|
58
|
+
- app/assets/stylesheets/tranzito_utils/_pagination.scss
|
59
|
+
- app/assets/stylesheets/tranzito_utils/_table_extensions.scss
|
60
|
+
- app/assets/stylesheets/tranzito_utils/_utils.scss
|
61
|
+
- app/assets/stylesheets/tranzito_utils/_variables.scss
|
40
62
|
- app/views/tranzito_utils/_period_select.html.haml
|
41
63
|
- config/locales/en.yml
|
42
64
|
- lib/generators/tranzito_utils/install_generator.rb
|
@@ -46,6 +68,7 @@ files:
|
|
46
68
|
- lib/tranzito_utils/concerns/sortable_table.rb
|
47
69
|
- lib/tranzito_utils/gem.rb
|
48
70
|
- lib/tranzito_utils/helpers/graphing_helper.rb
|
71
|
+
- lib/tranzito_utils/helpers/helpers.rb
|
49
72
|
- lib/tranzito_utils/helpers/sortable_helper.rb
|
50
73
|
- lib/tranzito_utils/services/normalize.rb
|
51
74
|
- lib/tranzito_utils/services/time_parser.rb
|