sail 3.4.0 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16b44189cf3b110f2f889319509c1592644f6dde05b0d598c58a1ca38141a2c4
4
- data.tar.gz: 9f908bbfa06fc4a92a173e9e0d5487301ee59159638ba44992f4b6fb0f3f35e0
3
+ metadata.gz: 05c8c9fc861985a4fa65f4f777d4e9739a333bf8d27baf73c15e233421b85f30
4
+ data.tar.gz: b4fa1e809ddbe24599276a7af84fde31cbf6775f4f06e55d549019884359531e
5
5
  SHA512:
6
- metadata.gz: d3db0a5ea82f5f2feb06e53e155e32d9f3dd5bf94e64cd681b1f57a4aa50c20c71dd3c7e6dd7031fe47547b0e5d10688897d304806afe1433868d9a27faf7863
7
- data.tar.gz: 958d60d9fd6a5f3ac52a4d1a40d9688e6fcb5ea499121c17b96d998e55936f29079e7689c967ab70f3073cc186c5fb775b5b69a39cd905578c11f6fad7fa6726
6
+ metadata.gz: 97636b73c70c7d761bfc4519b33717578d9d97ec96a5e43b227bdb0949cc4baa1ba71c638a9c1107bec0feedbe4732a83a120e7b8db5adb4a47ccbe17a33d215
7
+ data.tar.gz: 75dd8458863ffdb53b0967b437f472c3ccc85b3909f3cef8463334dc4b34deba208d5dbfe52a3db182fe43e0788ad05020f47732180eaad860fbc8594cb3b614
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ![dashboard](https://raw.githubusercontent.com/vinistock/sail/master/app/assets/images/sail/sail.png)
1
+ ![dashboard](https://raw.githubusercontent.com/vinistock/sail/master/app/assets/images/sail/sail.gif)
2
2
 
3
3
  [![Build Status](https://github.com/vinistock/sail/workflows/Ruby%20on%20Rails/badge.svg?branch=master)](https://github.com/vinistock/sail/actions) [![codecov](https://codecov.io/gh/vinistock/sail/branch/master/graph/badge.svg)](https://codecov.io/gh/vinistock/sail) [![Gem Version](https://badge.fury.io/rb/sail.svg)](https://badge.fury.io/rb/sail) ![](http://ruby-gem-downloads-badge.herokuapp.com/sail?color=brightgreen&type=total) [![Mentioned in Awesome Ruby](https://awesome.re/mentioned-badge.svg)](https://github.com/markets/awesome-ruby)
4
4
 
@@ -1 +1 @@
1
- <svg aria-hidden="true" data-prefix="fas" data-icon="angle-left" class="svg-inline--fa fa-angle-left fa-w-8" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path fill="currentColor" d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M7.05 9.293L6.343 10 12 15.657l1.414-1.414L9.172 10l4.242-4.243L12 4.343z"/></svg>
@@ -1 +1 @@
1
- <svg aria-hidden="true" data-prefix="fas" data-icon="angle-right" class="svg-inline--fa fa-angle-right fa-w-8" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path fill="currentColor" d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M12.95 10.707l.707-.707L8 4.343 6.586 5.757 10.828 10l-4.242 4.243L8 15.657l4.95-4.95z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M0 11l2-2 5 5L18 3l2 2L7 18z"/></svg>
@@ -1 +1 @@
1
- <svg aria-hidden="true" data-prefix="fas" data-icon="cog" class="svg-inline--fa fa-cog fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M444.788 291.1l42.616 24.599c4.867 2.809 7.126 8.618 5.459 13.985-11.07 35.642-29.97 67.842-54.689 94.586a12.016 12.016 0 0 1-14.832 2.254l-42.584-24.595a191.577 191.577 0 0 1-60.759 35.13v49.182a12.01 12.01 0 0 1-9.377 11.718c-34.956 7.85-72.499 8.256-109.219.007-5.49-1.233-9.403-6.096-9.403-11.723v-49.184a191.555 191.555 0 0 1-60.759-35.13l-42.584 24.595a12.016 12.016 0 0 1-14.832-2.254c-24.718-26.744-43.619-58.944-54.689-94.586-1.667-5.366.592-11.175 5.459-13.985L67.212 291.1a193.48 193.48 0 0 1 0-70.199l-42.616-24.599c-4.867-2.809-7.126-8.618-5.459-13.985 11.07-35.642 29.97-67.842 54.689-94.586a12.016 12.016 0 0 1 14.832-2.254l42.584 24.595a191.577 191.577 0 0 1 60.759-35.13V25.759a12.01 12.01 0 0 1 9.377-11.718c34.956-7.85 72.499-8.256 109.219-.007 5.49 1.233 9.403 6.096 9.403 11.723v49.184a191.555 191.555 0 0 1 60.759 35.13l42.584-24.595a12.016 12.016 0 0 1 14.832 2.254c24.718 26.744 43.619 58.944 54.689 94.586 1.667 5.366-.592 11.175-5.459 13.985L444.788 220.9a193.485 193.485 0 0 1 0 70.2zM336 256c0-44.112-35.888-80-80-80s-80 35.888-80 80 35.888 80 80 80 80-35.888 80-80z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M3.94 6.5L2.22 3.64l1.42-1.42L6.5 3.94c.52-.3 1.1-.54 1.7-.7L9 0h2l.8 3.24c.6.16 1.18.4 1.7.7l2.86-1.72 1.42 1.42-1.72 2.86c.3.52.54 1.1.7 1.7L20 9v2l-3.24.8c-.16.6-.4 1.18-.7 1.7l1.72 2.86-1.42 1.42-2.86-1.72c-.52.3-1.1.54-1.7.7L11 20H9l-.8-3.24c-.6-.16-1.18-.4-1.7-.7l-2.86 1.72-1.42-1.42 1.72-2.86c-.3-.52-.54-1.1-.7-1.7L0 11V9l3.24-.8c.16-.6.4-1.18.7-1.7zM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z"/></svg>
@@ -1 +1 @@
1
- <svg aria-hidden="true" data-prefix="fas" data-icon="sync" class="svg-inline--fa fa-sync fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M440.935 12.574l3.966 82.766C399.416 41.904 331.674 8 256 8 134.813 8 33.933 94.924 12.296 209.824 10.908 217.193 16.604 224 24.103 224h49.084c5.57 0 10.377-3.842 11.676-9.259C103.407 137.408 172.931 80 256 80c60.893 0 114.512 30.856 146.104 77.801l-101.53-4.865c-6.845-.328-12.574 5.133-12.574 11.986v47.411c0 6.627 5.373 12 12 12h200.333c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12h-47.411c-6.853 0-12.315 5.729-11.987 12.574zM256 432c-60.895 0-114.517-30.858-146.109-77.805l101.868 4.871c6.845.327 12.573-5.134 12.573-11.986v-47.412c0-6.627-5.373-12-12-12H12c-6.627 0-12 5.373-12 12V500c0 6.627 5.373 12 12 12h47.385c6.863 0 12.328-5.745 11.985-12.599l-4.129-82.575C112.725 470.166 180.405 504 256 504c121.187 0 222.067-86.924 243.704-201.824 1.388-7.369-4.308-14.176-11.807-14.176h-49.084c-5.57 0-10.377 3.842-11.676 9.259C408.593 374.592 339.069 432 256 432z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M10 3v2a5 5 0 0 0-3.54 8.54l-1.41 1.41A7 7 0 0 1 10 3zm4.95 2.05A7 7 0 0 1 10 17v-2a5 5 0 0 0 3.54-8.54l1.41-1.41zM10 20l-4-4 4-4v8zm0-12V0l4 4-4 4z"/></svg>
@@ -1 +1 @@
1
- <svg aria-hidden="true" data-prefix="fas" data-icon="sort-amount-down" class="svg-inline--fa fa-sort-amount-down fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M187.298 395.314l-79.984 80.002c-6.248 6.247-16.383 6.245-22.627 0L4.705 395.314C-5.365 385.244 1.807 368 16.019 368H64V48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v320h47.984c14.241 0 21.363 17.264 11.314 27.314zM240 96h256c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H240c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16zm-16 112v-32c0-8.837 7.163-16 16-16h192c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16zm0 256v-32c0-8.837 7.163-16 16-16h64c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-64c-8.837 0-16-7.163-16-16zm0-128v-32c0-8.837 7.163-16 16-16h128c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M17 16v4h-2v-4h-2v-3h6v3h-2zM1 9h6v3H1V9zm6-4h6v3H7V5zM3 0h2v8H3V0zm12 0h2v12h-2V0zM9 0h2v4H9V0zM3 12h2v8H3v-8zm6-4h2v12H9V8z"/></svg>
@@ -16,6 +16,7 @@ let dashboardBody = document.getElementById("settings-dashboard");
16
16
  let guideButton = document.getElementById("btn-guide");
17
17
  let guide = document.getElementById("guide-modal");
18
18
  let guideSections = guide.getElementsByTagName("summary");
19
+ let cardTitles = document.getElementsByClassName("card-title");
19
20
  let i;
20
21
 
21
22
  function submitSearch() {
@@ -122,7 +123,9 @@ function refreshClick() {
122
123
 
123
124
  for(i = 0; i < refreshButtons.length; i++) refreshButtons[i].addEventListener("click", refreshClick);
124
125
 
125
- // Guide related functions
126
+ /*
127
+ Guide related functions
128
+ */
126
129
 
127
130
  function sectionClick() {
128
131
  for(i = 0; i < guideSections.length; i++) {
@@ -135,3 +138,13 @@ function sectionClick() {
135
138
  }
136
139
 
137
140
  for(i = 0; i < guideSections.length; i++) guideSections[i].addEventListener("click", sectionClick);
141
+
142
+ /*
143
+ Cards related functions
144
+ */
145
+
146
+ function flipCard() {
147
+ this.parentElement.parentElement.classList.toggle("flipped");
148
+ }
149
+
150
+ for(i = 0; i < cardTitles.length; i++) cardTitles[i].addEventListener("click", flipCard);
@@ -60,13 +60,6 @@ html, body {
60
60
  clear: both;
61
61
  }
62
62
 
63
- @media (max-width: 413px) {
64
- .clear-xs {
65
- clear: both;
66
- margin-top: 8px;
67
- }
68
- }
69
-
70
63
  #nav-bar {
71
64
  background-color: var(--lead);
72
65
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15), 0 5px 12px rgba(0, 0, 0, 0.1);
@@ -142,19 +135,6 @@ html, body {
142
135
  }
143
136
  }
144
137
 
145
- #nav-bar #btn-monitor-mode,
146
- #nav-bar #btn-regular-mode {
147
- right: 80px;
148
- padding: 1px 7px 2px 7px;
149
- }
150
-
151
- @media (min-width: 1200px) {
152
- #nav-bar #btn-monitor-mode,
153
- #nav-bar #btn-regular-mode {
154
- right: 120px;
155
- }
156
- }
157
-
158
138
  #pagination {
159
139
  text-align: center;
160
140
  margin-top: 2rem;
@@ -263,13 +243,7 @@ html, body {
263
243
  outline: none;
264
244
  }
265
245
 
266
- #profiles-modal .profile-entry .inline-form {
267
- float: right;
268
- }
269
-
270
246
  #profiles-modal .profile-entry button {
271
- float: right;
272
- margin-left: 5px;
273
247
  padding: 10px;
274
248
  }
275
249
 
@@ -278,27 +252,11 @@ html, body {
278
252
  top: 10px;
279
253
  }
280
254
 
281
- @media (max-width: 1199px) {
282
- #profiles-modal .profile-entry .entry-name {
283
- float: left;
284
- }
285
- }
286
-
287
- @media (min-width: 1200px) {
288
- #profiles-modal .profile-entry .entry-name {
289
- margin-left: 250px;
290
- }
255
+ #profiles-modal .buttons button {
256
+ margin: 0 5px 0 5px;
291
257
  }
292
258
 
293
259
  @media (max-width: 767px) {
294
- #profiles-modal .profile-entry .inline-form {
295
- margin-right: 3%;
296
- }
297
-
298
- #profiles-modal .profile-entry .inline-form:first-child {
299
- clear: both;
300
- }
301
-
302
260
  #profiles-modal .profile-entry .entry-name {
303
261
  width: 90%;
304
262
  margin-bottom: 15px;
@@ -310,7 +268,6 @@ html, body {
310
268
  }
311
269
 
312
270
  #profiles-modal .profile-entry .active-indicator {
313
- float: left;
314
271
  position: relative;
315
272
  top: 7px;
316
273
  }
@@ -324,7 +281,6 @@ html, body {
324
281
  }
325
282
 
326
283
  #profiles-modal .profile-entry .errors-indicator {
327
- float: left;
328
284
  position: relative;
329
285
  top: 9px;
330
286
  left: 15px;
@@ -340,7 +296,6 @@ html, body {
340
296
  position: relative;
341
297
  top: 10px;
342
298
  text-overflow: ellipsis;
343
-
344
299
  }
345
300
 
346
301
  #profiles-modal #new-profile-input:focus {
@@ -372,6 +327,14 @@ html, body {
372
327
  outline: none;
373
328
  }
374
329
 
330
+ #guide-modal details > summary {
331
+ list-style: none;
332
+ }
333
+
334
+ #guide-modal details > summary::-webkit-details-marker {
335
+ display: none;
336
+ }
337
+
375
338
  #guide-modal details summary:focus,
376
339
  #guide-modal details summary:hover {
377
340
  border-color: var(--tangerine);
@@ -16,15 +16,19 @@
16
16
  #settings-dashboard #settings-container {
17
17
  margin-top: 1rem;
18
18
  text-align: center;
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ justify-content: flex-start;
22
+ padding: 0 15px 0 15px;
19
23
  }
20
24
 
21
25
  #settings-dashboard .card {
22
- min-height: 230px;
26
+ flex: 0 1 auto;
27
+ max-height: 220px;
23
28
  background-color: white;
24
29
  margin: 1rem .75rem;
25
- display: inline-block;
26
30
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
27
- padding: 10px;
31
+ padding: 0 10px 0 10px;
28
32
  z-index: 2;
29
33
  width: 90%;
30
34
  -webkit-box-sizing: border-box;
@@ -33,14 +37,41 @@
33
37
  -webkit-border-radius: 5px;
34
38
  -moz-border-radius: 5px;
35
39
  border-radius: 5px;
40
+
41
+ transition-duration: 0.6s;
42
+ transition-timing-function: ease-in-out;
43
+ transform-style: preserve-3d;
44
+ }
45
+
46
+ #settings-dashboard .card .card-title {
47
+ transition: color 500ms ease-in;
48
+ }
49
+
50
+ #settings-dashboard .card .card-title:hover {
51
+ color: var(--tangerine);
52
+ cursor: pointer;
53
+ }
54
+
55
+ #settings-dashboard .card .front,
56
+ #settings-dashboard .card .back {
57
+ backface-visibility: hidden;
58
+ transform: rotateX(0deg);
59
+ height: 61%;
60
+ }
61
+
62
+ #settings-dashboard .card .back {
63
+ transform: rotateY(-180deg);
64
+ position: relative;
65
+ bottom: 155px;
36
66
  }
37
67
 
38
- #settings-dashboard .card h3 {
39
- margin-left: 25px;
68
+ #settings-dashboard .card.flipped {
69
+ transform: rotateY(-180deg);
40
70
  }
41
71
 
42
72
  #settings-dashboard .card .relevancy-score {
43
- float: right;
73
+ position: relative;
74
+ bottom: 5px;
44
75
  color: var(--dark-aluminium);
45
76
  }
46
77
 
@@ -52,26 +83,14 @@
52
83
 
53
84
  @media (min-width: 1200px) {
54
85
  #settings-dashboard .card {
55
- width: 21%;
86
+ width: 18%;
56
87
  }
57
88
  }
58
89
 
59
- #settings-dashboard .card .card-body-container {
60
- display: table;
61
- width: 100%;
62
- }
63
-
64
- #settings-dashboard .card .card-body {
65
- height: 80px;
66
- width: 100%;
67
- display: table-cell;
68
- vertical-align: bottom;
69
- }
70
-
71
90
  #settings-dashboard .card .tag {
72
- -webkit-border-radius: 5px;
73
- -moz-border-radius: 5px;
74
- border-radius: 5px;
91
+ -webkit-border-radius: 20px;
92
+ -moz-border-radius: 20px;
93
+ border-radius: 20px;
75
94
  padding: 10px;
76
95
  color: var(--main-black);
77
96
  font-size: 14px;
@@ -94,11 +113,6 @@
94
113
  }
95
114
 
96
115
  #settings-dashboard .card .setting-description {
97
- clear: both;
98
- padding: 25px 15px 15px 15px;
99
- text-overflow: ellipsis;
100
- white-space: nowrap;
101
- overflow: hidden;
102
116
  -webkit-animation: fadeIn 0.5s;
103
117
  animation: fadeIn 0.5s;
104
118
  color: var(--darker-aluminium);
@@ -111,16 +125,10 @@
111
125
  }
112
126
  }
113
127
 
114
- #settings-dashboard .card .label-container {
115
- float: right;
116
- margin-top: 5px;
117
- }
118
-
119
128
  #settings-dashboard .card .value-input {
120
- width: 98%;
121
- margin-bottom: 10px;
122
- font-size: 22px;
129
+ width: 95%;
123
130
  text-align: center;
131
+ font-size: 22px;
124
132
  border: none;
125
133
  border-bottom: 2px solid var(--aluminium);
126
134
  -webkit-border-radius: 0;
@@ -140,42 +148,16 @@
140
148
  outline: none;
141
149
  }
142
150
 
143
- #settings-dashboard .card .date-picker {
144
- position: relative;
145
- bottom: 10px;
146
- border: none;
147
- border-bottom: 2px solid var(--aluminium);
148
- -webkit-border-radius: 0;
149
- -moz-border-radius: 0;
150
- border-radius: 0;
151
- width: 100%;
152
- text-align: center;
153
- font-size: 22px;
154
- padding: 0;
155
- -webkit-transition : border .25s ease-in;
156
- -moz-transition : border .25s ease-in;
157
- -o-transition : border .25s ease-in;
158
- transition : border .25s ease-in;
159
- outline: none;
160
- }
161
-
162
- #settings-dashboard .card .date-picker:focus,
163
- #settings-dashboard .card .date-picker:hover {
164
- border-color: var(--tangerine);
165
- outline: none;
166
- }
167
-
168
151
  #settings-dashboard .card .value-slider {
169
152
  -webkit-appearance: none;
170
- width: 100%;
171
153
  height: 15px;
154
+ width: 90%;
172
155
  border-radius: 5px;
173
156
  background: #d3d3d3;
174
157
  outline: none;
175
158
  opacity: 0.7;
176
159
  -webkit-transition: .2s;
177
160
  transition: opacity .2s;
178
- margin: 0 0 10px 0;
179
161
  }
180
162
 
181
163
  #settings-dashboard .card .value-slider::-webkit-slider-thumb {
@@ -197,17 +179,21 @@
197
179
  }
198
180
 
199
181
  #settings-dashboard .card .btn-value-submit {
200
- width: 100%;
182
+ height: 100%;
183
+ cursor: pointer;
184
+ }
185
+
186
+ #settings-dashboard .card .submit-container {
201
187
  height: 35px;
188
+ width: 24%;
202
189
  }
203
190
 
204
191
  #settings-dashboard .card .switch {
205
192
  position: relative;
193
+ top: 5px;
206
194
  display: inline-block;
207
195
  width: 60px;
208
196
  height: 34px;
209
- margin-bottom: 10px;
210
- float: right;
211
197
  }
212
198
 
213
199
  #settings-dashboard .card .switch input {display:none;}
@@ -261,10 +247,45 @@
261
247
  #settings-dashboard .card .refresh-button {
262
248
  border: none;
263
249
  outline: none;
264
- float: left;
265
250
  background: transparent;
266
251
  }
267
252
 
253
+ .flex-container {
254
+ display: flex;
255
+ align-items: center;
256
+ }
257
+
258
+ .flex-container .flex-grow {
259
+ flex-grow: 4;
260
+ }
261
+
262
+ .flex-container-vertical {
263
+ display: flex;
264
+ flex-direction: column;
265
+ justify-content: space-between;
266
+ height: 100%;
267
+ }
268
+
269
+ .flex-container.space-between {
270
+ justify-content: space-between;
271
+ }
272
+
273
+ .flex-container.align-bottom {
274
+ align-items: flex-end;
275
+ }
276
+
277
+ .flex-container.padded {
278
+ padding: 5px 0 10px 0;
279
+ }
280
+
281
+ .flex-container.justify-end {
282
+ justify-content: flex-end;
283
+ }
284
+
285
+ .flex-container > div {
286
+ flex: 0 1 auto;
287
+ }
288
+
268
289
  @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
269
290
  @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
270
291
  @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
@@ -283,34 +304,32 @@
283
304
  animation:spin 1s linear infinite;
284
305
  }
285
306
 
286
- #settings-dashboard .card.minimal {
287
- min-height: 50px;
288
- padding-top: 0;
289
- }
290
-
291
- #settings-dashboard .card.minimal label {
292
- font-size: 22px;
293
- }
294
-
295
307
  .notice {
296
308
  display: none;
297
- clear: both;
298
- padding: 25px 15px 15px 15px;
309
+ position: relative;
310
+ top: 10px;
299
311
  text-overflow: ellipsis;
300
- white-space: nowrap;
301
312
  overflow: hidden;
313
+ text-transform: uppercase;
302
314
  font-weight: bolder;
315
+ font-size: 18px;
316
+ width: 100%;
317
+ height: 100%;
303
318
  text-align: center;
304
319
  -webkit-animation: fadeIn 0.5s;
305
320
  animation: fadeIn 0.5s;
306
321
  }
307
322
 
308
- .notice.success {
309
- color: var(--dark-green);
323
+ .notice img {
324
+ width: 25px;
310
325
  }
311
326
 
312
- .notice.alert {
313
- color: var(--bright-red);
327
+ .notice.success img {
328
+ fill: var(--dark-green);
329
+ }
330
+
331
+ .notice.alert img {
332
+ fill: var(--bright-red);
314
333
  }
315
334
 
316
335
  #progress-container {
@@ -368,7 +387,7 @@
368
387
  position: absolute;
369
388
  right: 30%;
370
389
  top: 165px;
371
- z-index: 2;
390
+ z-index: 3;
372
391
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
373
392
  -webkit-border-radius: 5px;
374
393
  -moz-border-radius: 5px;
@@ -10,15 +10,12 @@ module Sail
10
10
  class SettingsController < ApplicationController
11
11
  before_action :set_locale, only: :index
12
12
  after_action :log_update, only: %i[update reset], if: -> { Sail.configuration.enable_logging && @successful_update }
13
-
14
- # rubocop:disable Metrics/AbcSize
15
13
  def index
16
14
  @settings = Setting.by_query(s_params[:query]).ordered_by(s_params[:order_field])
17
- @number_of_pages = (@settings.count.to_f / settings_per_page).ceil
18
- @settings = @settings.paginated(s_params[:page], settings_per_page)
15
+ @number_of_pages = (@settings.count.to_f / Sail::ConstantCollection::SETTINGS_PER_PAGE).ceil
16
+ @settings = @settings.paginated(s_params[:page], Sail::ConstantCollection::SETTINGS_PER_PAGE)
19
17
  fresh_when(@settings)
20
18
  end
21
- # rubocop:enable Metrics/AbcSize
22
19
 
23
20
  def update
24
21
  respond_to do |format|
@@ -65,14 +62,6 @@ module Sail
65
62
 
66
63
  private
67
64
 
68
- def settings_per_page
69
- if params[:monitor_mode] == Sail::ConstantCollection::TRUE
70
- Sail::ConstantCollection::MINIMAL_SETTINGS_PER_PAGE
71
- else
72
- Sail::ConstantCollection::SETTINGS_PER_PAGE
73
- end
74
- end
75
-
76
65
  def s_params
77
66
  params.permit(:page, :query, :name,
78
67
  :value, :positive, :negative,
@@ -40,7 +40,7 @@ module Sail
40
40
  elsif select(:id).by_group(query).exists?
41
41
  by_group(query)
42
42
  elsif query.to_s.include?(Sail::ConstantCollection::RECENT)
43
- recently_updated(query.delete("recent ").strip)
43
+ recently_updated(query.delete("recent ").strip.to_i)
44
44
  else
45
45
  by_name(query)
46
46
  end
@@ -21,12 +21,6 @@
21
21
  <button id="btn-guide" type="button" class="nav-button">
22
22
  <%= I18n.t("sail.guide") %>
23
23
  </button>
24
-
25
- <% if params[:monitor_mode] == Sail::ConstantCollection::TRUE %>
26
- <%= link_to(I18n.t("sail.regular_mode"), settings_path, method: :get, class: "nav-button", id: "btn-regular-mode") %>
27
- <% else %>
28
- <%= link_to(I18n.t("sail.monitor_mode"), settings_path(monitor_mode: "true"), method: :get, class: "nav-button", id: "btn-monitor-mode") %>
29
- <% end %>
30
24
  </nav>
31
25
 
32
26
  <div class="clearfix"></div>
@@ -1,31 +1,43 @@
1
- <div id="<%= profile.name %>" class="profile-entry">
2
- <% if profile.active? %>
1
+ <div id="<%= profile.name %>" class="profile-entry flex-container space-between">
2
+ <div>
3
+ <% if profile.active? %>
3
4
  <span class="active-indicator <%= profile.dirty? ? "yellow" : "green" %>"
4
5
  title="<%= profile.dirty? ? I18n.t("sail.dirty_profile_tooltip") : I18n.t("sail.clean_profile_tooltip") %>">
5
6
 
6
7
  </span>
7
8
 
8
- <% unless Sail.instrumenter.profile(profile.name).zero? %>
9
+ <% unless Sail.instrumenter.profile(profile.name).zero? %>
9
10
  <span class="errors-indicator" title="<%= I18n.t("sail.profile_error_tooltip") %>">
10
11
  <%= I18n.t("sail.profile_errors", count: Sail.instrumenter.profile(profile.name)) %>
11
12
  </span>
13
+ <% end %>
12
14
  <% end %>
13
- <% end %>
15
+ </div>
14
16
 
15
- <span class="entry-name"><%= profile.name.titleize %></span>
17
+ <div>
18
+ <span class="entry-name"><%= profile.name.titleize %></span>
19
+ </div>
16
20
 
17
- <%= form_tag(profile_path(name: profile.name), method: :delete, remote: true, class: "inline-form") do %>
18
- <button class="btn-sail"><%= I18n.t("sail.delete") %></button>
19
- <% end %>
21
+ <div>
22
+ <div class="flex-container space-between buttons">
23
+ <div>
24
+ <%= form_tag(profile_path(name: profile.name), method: :delete, remote: true) do %>
25
+ <button class="btn-sail"><%= I18n.t("sail.delete") %></button>
26
+ <% end %>
27
+ </div>
20
28
 
21
- <%= form_tag(switch_profile_path(name: profile.name), method: :put, remote: true, class: "inline-form") do %>
22
- <button class="btn-sail" type="submit"><%= I18n.t("sail.activate") %></button>
23
- <% end %>
29
+ <div>
30
+ <%= form_tag(switch_profile_path(name: profile.name), method: :put, remote: true) do %>
31
+ <button class="btn-sail" type="submit"><%= I18n.t("sail.activate") %></button>
32
+ <% end %>
33
+ </div>
24
34
 
25
- <%= form_tag(profiles_path, method: :post, remote: true, class: "inline-form") do %>
26
- <input type="hidden" name="name" value="<%= profile.name %>">
27
- <button class="btn-sail" type="submit"><%= I18n.t("sail.save") %></button>
28
- <% end %>
29
-
30
- <div class="clearfix"></div>
35
+ <div>
36
+ <%= form_tag(profiles_path, method: :post, remote: true) do %>
37
+ <input type="hidden" name="name" value="<%= profile.name %>">
38
+ <button class="btn-sail" type="submit"><%= I18n.t("sail.save") %></button>
39
+ <% end %>
40
+ </div>
41
+ </div>
42
+ </div>
31
43
  </div>
@@ -12,7 +12,6 @@
12
12
  </div>
13
13
  </summary>
14
14
 
15
- <p>
16
15
  <div class="items-container">
17
16
  <ul>
18
17
  <li><%= I18n.t("sail.by_setting_name_html").html_safe %></li>
@@ -21,8 +20,9 @@
21
20
  <li><%= I18n.t("sail.by_stale_html").html_safe %></li>
22
21
  <li><%= I18n.t("sail.by_recent_html").html_safe %></li>
23
22
  </ul>
23
+
24
+ <p><%= I18n.translate("sail.click_title") %></p>
24
25
  </div>
25
- </p>
26
26
  </details>
27
27
  <div class="clearfix"></div>
28
28
 
@@ -1,68 +1,90 @@
1
1
  <% cache setting, expires_in: Sail.configuration.cache_life_span do %>
2
2
  <div class="card">
3
- <h3 class="title">
4
- <%= setting.display_name %>
3
+ <div class="front">
4
+ <h3 class="title card-title"><%= setting.display_name %></h3>
5
+ <hr/>
5
6
 
6
- <span class="relevancy-score" title="<%= I18n.t("sail.relevancy_tooltip") %>"><%= setting.relevancy %></span>
7
- <div class="clearfix"></div>
8
- </h3>
9
- <hr/>
7
+ <div class="flex-container-vertical">
8
+ <div>
9
+ <div class="flex-container space-between">
10
+ <div>
11
+ <%= form_tag(reset_setting_path(name: setting.name), method: :put, remote: true) do %>
12
+ <button class="refresh-button" title="<%= I18n.t("sail.refresh_tooltip") %>">
13
+ <%= image_tag("sail/refresh.svg", alt: I18n.t("sail.refresh_tooltip")) %>
14
+ </button>
15
+ <% end %>
16
+ </div>
10
17
 
11
- <%= form_tag(reset_setting_path(name: setting.name), method: :put, remote: true) do %>
12
- <button class="refresh-button" title="<%= I18n.t("sail.refresh_tooltip") %>">
13
- <%= image_tag("sail/refresh.svg", alt: I18n.t("sail.refresh_tooltip")) %>
14
- </button>
15
- <% end %>
16
-
17
- <div class="label-container">
18
- <%= link_to(setting.cast_type, settings_path(query: setting.cast_type), method: :get, class: "tag type-label") %>
19
- </div>
18
+ <div>
19
+ <span class="relevancy-score" title="<%= I18n.t("sail.relevancy_tooltip") %>"><%= setting.relevancy %></span>
20
+ </div>
21
+ </div>
22
+ </div>
20
23
 
21
- <% if setting.group.present? %>
22
- <div class="label-container">
23
- <%= link_to(setting.group, settings_path(query: setting.group), method: :get, class: "tag group-label") %>
24
- </div>
25
- <% end %>
24
+ <div>
25
+ <div class="flex-container justify-end padded">
26
+ <div>
27
+ <%= link_to(setting.cast_type, settings_path(query: setting.cast_type), method: :get, class: "tag type-label") %>
28
+ </div>
26
29
 
27
- <div class="clear-xs"></div>
30
+ <% if setting.group.present? %>
31
+ <div>
32
+ <%= link_to(setting.group, settings_path(query: setting.group), method: :get, class: "tag group-label") %>
33
+ </div>
34
+ <% end %>
28
35
 
29
- <% if setting.stale? %>
30
- <div class="label-container">
31
- <%= link_to(I18n.t("sail.stale"), settings_path(query: Sail::ConstantCollection::STALE), method: :get, class: "tag stale-label", title: I18n.t("sail.stale_tooltip", days: Sail.configuration.days_until_stale)) %>
32
- </div>
33
- <% end %>
36
+ <% if setting.stale? %>
37
+ <div>
38
+ <%= link_to(I18n.t("sail.stale"), settings_path(query: Sail::ConstantCollection::STALE), method: :get, class: "tag stale-label", title: I18n.t("sail.stale_tooltip", days: Sail.configuration.days_until_stale)) %>
39
+ </div>
40
+ <% end %>
41
+ </div>
42
+ </div>
34
43
 
35
- <p id="success-<%= setting.name %>" class="notice success">
36
- <label><%= I18n.t("sail.updated") %></label>
37
- </p>
44
+ <div>
45
+ <%= form_tag(setting_path(name: setting.name), method: :put, remote: true) do %>
46
+ <div class="flex-container space-between align-bottom">
47
+ <% if setting.boolean? || setting.ab_test? %>
48
+ <div>
49
+ <label class="switch">
50
+ <input id="<%= "input_for_#{setting.name}" %>" type="checkbox" name="value" <%= setting.value == "true" ? "checked" : "" %>>
51
+ <span class="slider round"></span>
52
+ </label>
53
+ </div>
54
+ <% elsif setting.range? %>
55
+ <div class="flex-grow">
56
+ <input id="<%= "input_for_#{setting.name}" %>" type="range" min="0" max="99" value="<%= setting.value %>" name="value" class="value-slider">
57
+ </div>
58
+ <% else %>
59
+ <div>
60
+ <input id="<%= "input_for_#{setting.name}" %>" type="text" name="value" class="value-input" value="<%= setting.value %>"/>
61
+ </div>
62
+ <% end %>
38
63
 
39
- <p id="alert-<%= setting.name %>" class="notice alert">
40
- <label><%= I18n.t("sail.failed") %></label>
41
- </p>
64
+ <div class="submit-container">
65
+ <button id="btn-submit-<%= setting.name %>" type="submit" class="btn-value-submit"><%= I18n.t("sail.save") %></button>
42
66
 
43
- <p id="description-<%= setting.name %>" class="setting-description" title="<%= setting.description %>">
44
- <label for="<%= "input_for_#{setting.name}" %>"><%= setting.description %></label>
45
- </p>
67
+ <span id="success-<%= setting.name %>" class="notice success">
68
+ <%= image_tag("sail/checkmark.svg") %>
69
+ </span>
46
70
 
47
- <%= form_tag(setting_path(name: setting.name), method: :put, remote: true) do %>
48
- <div class="card-body-container">
49
- <div class="card-body">
50
- <% if setting.boolean? || setting.ab_test? %>
51
- <label class="switch">
52
- <input id="<%= "input_for_#{setting.name}" %>" type="checkbox" name="value" <%= setting.value == "true" ? "checked" : "" %>>
53
- <span class="slider round"></span>
54
- </label>
55
- <% elsif setting.range? %>
56
- <input id="<%= "input_for_#{setting.name}" %>" type="range" min="0" max="99" value="<%= setting.value %>" name="value" class="value-slider">
57
- <% elsif setting.date? %>
58
- <input id="<%= "input_for_#{setting.name}" %>" type="datetime-local" value="<%= formatted_date(setting) %>" name="value" class="date-picker">
59
- <% else %>
60
- <input id="<%= "input_for_#{setting.name}" %>" type="text" name="value" class="value-input" value="<%= setting.value %>"/>
71
+ <span id="alert-<%= setting.name %>" class="notice alert">
72
+ <%= image_tag("sail/error.svg") %>
73
+ </span>
74
+ </div>
75
+ </div>
61
76
  <% end %>
62
-
63
- <button type="submit" class="btn-value-submit"><%= I18n.t('sail.save') %></button>
64
77
  </div>
65
78
  </div>
66
- <% end %>
79
+ </div>
80
+
81
+ <div class="back">
82
+ <h3 class="title card-title"><%= setting.display_name %></h3>
83
+ <hr/>
84
+
85
+ <p class="setting-description" title="<%= setting.description %>">
86
+ <label for="<%= "input_for_#{setting.name}" %>"><%= setting.description %></label>
87
+ </p>
88
+ </div>
67
89
  </div>
68
90
  <% end %>
@@ -1,16 +1,10 @@
1
1
  <div id="settings-dashboard">
2
- <% cache [@settings, params[:monitor_mode]] do %>
3
- <% unless params[:monitor_mode] == Sail::ConstantCollection::TRUE %>
4
- <%= render(partial: "search") %>
5
- <% end %>
2
+ <% cache @settings do %>
3
+ <%= render(partial: "search") %>
6
4
 
7
5
  <div id="settings-container">
8
6
  <% if @number_of_pages > 0 %>
9
- <% if params[:monitor_mode] == Sail::ConstantCollection::TRUE %>
10
- <%= render(partial: "setting_minimal", collection: @settings) %>
11
- <% else %>
12
- <%= render(partial: "setting", collection: @settings) %>
13
- <% end%>
7
+ <%= render(partial: "setting", collection: @settings) %>
14
8
  <% else %>
15
9
  <h1><%= I18n.t("sail.no_settings") %></h1>
16
10
  <% end %>
@@ -22,15 +16,15 @@
22
16
  <div class="clearfix"></div>
23
17
 
24
18
  <div class="page-links">
25
- <%= link_to("", settings_path(page: [params[:page].to_i - 1, 0].max, monitor_mode: params[:monitor_mode], query: params[:query]), method: :get, id: "angle-left-link", title: I18n.t("sail.previous_page")) %>
26
- <%= link_to(1, settings_path(page: 0, monitor_mode: params[:monitor_mode], query: params[:query]), method: :get, class: params[:page].to_i.zero? || params[:page].blank? ? "active" : "") %>
19
+ <%= link_to("", settings_path(page: [params[:page].to_i - 1, 0].max, query: params[:query]), method: :get, id: "angle-left-link", title: I18n.t("sail.previous_page")) %>
20
+ <%= link_to(1, settings_path(page: 0, query: params[:query]), method: :get, class: params[:page].to_i.zero? || params[:page].blank? ? "active" : "") %>
27
21
 
28
22
  <% if params[:page].to_i - Sail::ConstantCollection::MAX_PAGES > 1 %>
29
23
  ●●●
30
24
  <% end %>
31
25
 
32
26
  <% ([params[:page].to_i - Sail::ConstantCollection::MAX_PAGES, 1].max...[@number_of_pages - 1, params[:page].to_i + Sail::ConstantCollection::MAX_PAGES].min).each do |page| %>
33
- <%= link_to(page + 1, settings_path(page: page, monitor_mode: params[:monitor_mode], query: params[:query]), method: :get, class: params[:page].to_i == page || params[:page].blank? && page.zero? ? "active" : "") %>
27
+ <%= link_to(page + 1, settings_path(page: page, query: params[:query]), method: :get, class: params[:page].to_i == page || params[:page].blank? && page.zero? ? "active" : "") %>
34
28
  <% end %>
35
29
 
36
30
  <% if params[:page].to_i + Sail::ConstantCollection::MAX_PAGES < @number_of_pages - 1 %>
@@ -38,10 +32,10 @@
38
32
  <% end %>
39
33
 
40
34
  <% if @number_of_pages > 1 %>
41
- <%= link_to(@number_of_pages, settings_path(page: @number_of_pages - 1, monitor_mode: params[:monitor_mode], query: params[:query]), method: :get, class: params[:page].to_i == @number_of_pages - 1 ? "active" : "") %>
35
+ <%= link_to(@number_of_pages, settings_path(page: @number_of_pages - 1, query: params[:query]), method: :get, class: params[:page].to_i == @number_of_pages - 1 ? "active" : "") %>
42
36
  <% end %>
43
37
 
44
- <%= link_to("", settings_path(page: [params[:page].to_i + 1, @number_of_pages - 1].min, monitor_mode: params[:monitor_mode], query: params[:query]), method: :get, id: "angle-right-link", title: I18n.t("sail.next_page")) %>
38
+ <%= link_to("", settings_path(page: [params[:page].to_i + 1, @number_of_pages - 1].min, query: params[:query]), method: :get, id: "angle-right-link", title: I18n.t("sail.next_page")) %>
45
39
  </div>
46
40
  </div>
47
41
  <% end %>
@@ -1,12 +1,12 @@
1
1
  var notice = document.getElementById("<%= @successful_update ? "success-#{@setting.name}" : "alert-#{@setting.name}" %>");
2
- var description = document.getElementById("description-<%= @setting.name %>");
2
+ var submit = document.getElementById("btn-submit-<%= @setting.name %>");
3
3
 
4
- notice.style.display = "block";
5
- description.style.display = "none";
4
+ submit.style.display = "none";
5
+ notice.style.display = "inline-block";
6
6
 
7
7
  setTimeout(function () {
8
8
  notice.style.display = "none";
9
- description.style.display = "block";
9
+ submit.style.display = "inline-block";
10
10
  }, 1500);
11
11
 
12
12
  if ("<%= @successful_update %>" === "true") {
@@ -4,8 +4,6 @@ en:
4
4
  save: SAVE
5
5
  activate: ACTIVATE
6
6
  delete: DELETE
7
- updated: Updated!
8
- failed: Failed!
9
7
  search_placeholder: Setting name, group, cast type, stale or recent x
10
8
  search_tooltip: "When searching for recently updated settings, x is the number of hours since the update (e.g.: recent 2)"
11
9
  main_app: Main app
@@ -33,6 +31,7 @@ en:
33
31
  by_cast_type_html: "<b>By cast type:</b> will find all settings with the same type (must be exact match)"
34
32
  by_stale_html: "<b>By stale:</b> will find settings that are stale (haven't been updated recently)"
35
33
  by_recent_html: "<b>By recent:</b> will find settings updated in the last X hours (e.g.: recent 50)"
34
+ click_title: Click a setting's title to view its description.
36
35
  profiles_can_be_used: Profiles can be used to configure many states of settings. They save the values of all settings in a given moment.
37
36
  profile_configuring: Configure settings as desired and create a new profile. Activate profiles to change the value of all settings at once.
38
37
  relevancy_score: Relevancy Score
@@ -40,8 +39,6 @@ en:
40
39
  available_groups_and_types: Available groups and types
41
40
  groups_are: "The groups currently used are:"
42
41
  types_are: "The cast types currently used are:"
43
- regular_mode: Regular mode
44
- monitor_mode: Monitor mode
45
42
  how_to_find_settings: How to find settings you are looking for
46
43
  how_to_profiles: How to organize your settings in profiles
47
44
  how_to_relevancy_score: What is the relevancy score and how to use it
@@ -33,6 +33,10 @@ module Sail
33
33
  migration_version: migration_version
34
34
  end
35
35
 
36
+ def create_config_file
37
+ template "sail.yml", "config/sail.yml"
38
+ end
39
+
36
40
  def migration_version
37
41
  "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
38
42
  end
@@ -0,0 +1,5 @@
1
+ name_of_setting:
2
+ description: Describe what the setting does
3
+ value: 'true'
4
+ cast_type: boolean
5
+ group: feature_flags
@@ -17,8 +17,7 @@ module Sail
17
17
  STALE = "stale"
18
18
  RECENT = "recent"
19
19
  FIELDS_FOR_SORT = %w[name updated_at cast_type group].freeze
20
- SETTINGS_PER_PAGE = 8
21
- MINIMAL_SETTINGS_PER_PAGE = 24
20
+ SETTINGS_PER_PAGE = 20
22
21
  INPUT_DATE_FORMAT = "%Y-%m-%dT%H:%m:%S"
23
22
  MAX_PAGES = 5
24
23
  end
@@ -24,8 +24,8 @@ module Sail
24
24
 
25
25
  initializer "sail.assets.precompile" do |app|
26
26
  app.config.assets.precompile += %w[sail/refresh.svg sail/sort.svg sail/angle-left.svg
27
- sail/angle-right.svg sail/link.svg sail/cog.svg sail/application.css
28
- sail/application.js]
27
+ sail/angle-right.svg sail/link.svg sail/cog.svg sail/checkmark.svg
28
+ sail/error.svg sail/application.css sail/application.js]
29
29
  end
30
30
 
31
31
  initializer "sail" do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sail
4
- VERSION = "3.4.0"
4
+ VERSION = "3.5.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sail
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinicius Stock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-26 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fugit
@@ -262,7 +262,9 @@ files:
262
262
  - app/assets/config/sail_manifest.js
263
263
  - app/assets/images/sail/angle-left.svg
264
264
  - app/assets/images/sail/angle-right.svg
265
+ - app/assets/images/sail/checkmark.svg
265
266
  - app/assets/images/sail/cog.svg
267
+ - app/assets/images/sail/error.svg
266
268
  - app/assets/images/sail/link.svg
267
269
  - app/assets/images/sail/refresh.svg
268
270
  - app/assets/images/sail/sort.svg
@@ -287,7 +289,6 @@ files:
287
289
  - app/views/sail/settings/_profiles_modal.html.erb
288
290
  - app/views/sail/settings/_search.html.erb
289
291
  - app/views/sail/settings/_setting.html.erb
290
- - app/views/sail/settings/_setting_minimal.html.erb
291
292
  - app/views/sail/settings/_sort_menu.html.erb
292
293
  - app/views/sail/settings/index.html.erb
293
294
  - app/views/sail/settings/update.js.erb
@@ -297,6 +298,7 @@ files:
297
298
  - lib/generators/sail/install/install_generator.rb
298
299
  - lib/generators/sail/install/templates/create_sail_profiles.rb
299
300
  - lib/generators/sail/install/templates/create_sail_settings.rb
301
+ - lib/generators/sail/install/templates/sail.yml.tt
300
302
  - lib/generators/sail/update/templates/add_group_to_sail_settings.rb
301
303
  - lib/generators/sail/update/update_generator.rb
302
304
  - lib/sail.rb
@@ -345,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
345
347
  - !ruby/object:Gem::Version
346
348
  version: '0'
347
349
  requirements: []
348
- rubygems_version: 3.1.2
350
+ rubygems_version: 3.1.3
349
351
  signing_key:
350
352
  specification_version: 4
351
353
  summary: Sail is a lightweight Rails engine that brings an admin panel for managing
@@ -1,6 +0,0 @@
1
- <% cache setting_minimal, expires_in: Sail.configuration.cache_life_span do %>
2
- <div class="card minimal">
3
- <h2><%= setting_minimal.display_name %></h2>
4
- <label><%= setting_minimal.value %></label>
5
- </div>
6
- <% end %>