sail 3.2.3 → 3.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -7
  3. data/Rakefile +3 -3
  4. data/app/assets/images/sail/angle-left.svg +1 -1
  5. data/app/assets/images/sail/angle-right.svg +1 -1
  6. data/app/assets/images/sail/checkmark.svg +1 -0
  7. data/app/assets/images/sail/cog.svg +1 -1
  8. data/app/assets/images/sail/error.svg +1 -0
  9. data/app/assets/images/sail/reset.svg +1 -0
  10. data/app/assets/images/sail/sort.svg +1 -1
  11. data/app/assets/javascripts/sail/{application.js.erb → application.js} +1 -10
  12. data/app/assets/javascripts/{settings.js.erb → sail/settings.js} +16 -3
  13. data/app/assets/stylesheets/sail/application.css.erb +419 -0
  14. data/app/assets/stylesheets/sail/settings.css +555 -0
  15. data/app/controllers/sail/settings_controller.rb +2 -13
  16. data/app/helpers/sail/application_helper.rb +4 -0
  17. data/app/models/sail/setting.rb +4 -8
  18. data/app/views/layouts/sail/application.html.erb +2 -6
  19. data/app/views/sail/profiles/_profile.html.erb +29 -17
  20. data/app/views/sail/settings/_guide_modal.html.erb +2 -2
  21. data/app/views/sail/settings/_setting.html.erb +80 -50
  22. data/app/views/sail/settings/index.html.erb +21 -17
  23. data/app/views/sail/settings/update.js.erb +6 -2
  24. data/config/locales/en.yml +1 -4
  25. data/lib/generators/sail/install/install_generator.rb +5 -1
  26. data/lib/generators/sail/install/templates/sail.yml.tt +5 -0
  27. data/lib/generators/sail/update/update_generator.rb +1 -1
  28. data/lib/sail.rb +3 -3
  29. data/lib/sail/constant_collection.rb +2 -2
  30. data/lib/sail/engine.rb +3 -3
  31. data/lib/sail/graphql.rb +43 -0
  32. data/lib/sail/instrumenter.rb +1 -1
  33. data/lib/sail/mutations.rb +49 -0
  34. data/lib/sail/types.rb +1 -0
  35. data/lib/sail/types/set.rb +20 -0
  36. data/lib/sail/version.rb +1 -1
  37. metadata +26 -102
  38. data/app/assets/images/sail/refresh.svg +0 -1
  39. data/app/assets/stylesheets/sail/_colors.scss +0 -9
  40. data/app/assets/stylesheets/sail/_shared.scss +0 -52
  41. data/app/assets/stylesheets/sail/application.scss +0 -351
  42. data/app/assets/stylesheets/sail/settings.scss +0 -422
  43. data/app/views/sail/settings/_setting_minimal.html.erb +0 -6
@@ -0,0 +1,555 @@
1
+ @-webkit-keyframes fadeIn {
2
+ from { opacity: 0; }
3
+ to { opacity: 1; }
4
+ }
5
+
6
+ @keyframes fadeIn {
7
+ from { opacity: 0; }
8
+ to { opacity: 1; }
9
+ }
10
+
11
+ #settings-dashboard {
12
+ max-height: 100vh;
13
+ color: var(--main-black);
14
+ }
15
+
16
+ #settings-dashboard #settings-container {
17
+ margin-top: 1rem;
18
+ text-align: center;
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ justify-content: flex-start;
22
+ padding: 0 15px 0 15px;
23
+ }
24
+
25
+ #settings-dashboard #settings-container.empty {
26
+ justify-content: center;
27
+ }
28
+
29
+ #settings-dashboard .card {
30
+ flex: 0 1 auto;
31
+ max-height: 220px;
32
+ background-color: white;
33
+ margin: 1rem .75rem;
34
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
35
+ padding: 0 10px 0 10px;
36
+ z-index: 2;
37
+ width: 90%;
38
+ -webkit-box-sizing: border-box;
39
+ -moz-box-sizing: border-box;
40
+ box-sizing: border-box;
41
+ -webkit-border-radius: 5px;
42
+ -moz-border-radius: 5px;
43
+ border-radius: 5px;
44
+
45
+ transition-duration: 0.6s;
46
+ transition-timing-function: ease-in-out;
47
+ transform-style: preserve-3d;
48
+ }
49
+
50
+ #settings-dashboard .card .card-title {
51
+ transition: color 500ms ease-in;
52
+ }
53
+
54
+ #settings-dashboard .card .card-title:hover {
55
+ color: var(--tangerine);
56
+ cursor: pointer;
57
+ }
58
+
59
+ #settings-dashboard .card .front,
60
+ #settings-dashboard .card .back {
61
+ backface-visibility: hidden;
62
+ transform: rotateX(0deg);
63
+ height: 61%;
64
+ }
65
+
66
+ #settings-dashboard .card .back {
67
+ transform: rotateY(-180deg);
68
+ position: relative;
69
+ bottom: 155px;
70
+ }
71
+
72
+ #settings-dashboard .card.flipped {
73
+ transform: rotateY(-180deg);
74
+ }
75
+
76
+ #settings-dashboard .card .relevancy-score {
77
+ position: relative;
78
+ bottom: 5px;
79
+ color: var(--dark-aluminium);
80
+ }
81
+
82
+ @media (min-width: 768px) {
83
+ #settings-dashboard .card {
84
+ width: 44%;
85
+ }
86
+ }
87
+
88
+ @media (min-width: 1200px) {
89
+ #settings-dashboard .card {
90
+ width: 18%;
91
+ }
92
+ }
93
+
94
+ #settings-dashboard .card .tag {
95
+ -webkit-border-radius: 20px;
96
+ -moz-border-radius: 20px;
97
+ border-radius: 20px;
98
+ padding: 10px;
99
+ color: var(--main-black);
100
+ font-size: 14px;
101
+ margin-left: 5px;
102
+ text-decoration: none;
103
+ font-weight: bold;
104
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
105
+ }
106
+
107
+ #settings-dashboard .card .tag.type-label {
108
+ background-color: var(--light-yellow);
109
+ }
110
+
111
+ #settings-dashboard .card .tag.group-label {
112
+ background-color: var(--cerulean);
113
+ }
114
+
115
+ #settings-dashboard .card .tag.stale-label {
116
+ background-color: var(--bright-red);
117
+ }
118
+
119
+ #settings-dashboard .card .setting-description {
120
+ -webkit-animation: fadeIn 0.5s;
121
+ animation: fadeIn 0.5s;
122
+ color: var(--darker-aluminium);
123
+ }
124
+
125
+ @media (max-width: 413px) {
126
+ #settings-dashboard .card .tag.stale-label {
127
+ position: relative;
128
+ top: 8px;
129
+ }
130
+ }
131
+
132
+ #settings-dashboard .card .value-input {
133
+ width: 95%;
134
+ text-align: center;
135
+ font-size: 22px;
136
+ border: none;
137
+ border-bottom: 2px solid var(--aluminium);
138
+ -webkit-border-radius: 0;
139
+ -moz-border-radius: 0;
140
+ border-radius: 0;
141
+ padding: 0;
142
+ -webkit-transition : border .25s ease-in;
143
+ -moz-transition : border .25s ease-in;
144
+ -o-transition : border .25s ease-in;
145
+ transition : border .25s ease-in;
146
+ outline: none;
147
+ }
148
+
149
+ #settings-dashboard .card .value-input:focus,
150
+ #settings-dashboard .card .value-input:hover {
151
+ border-color: var(--tangerine);
152
+ outline: none;
153
+ }
154
+
155
+ #settings-dashboard .card .value-slider {
156
+ -webkit-appearance: none;
157
+ height: 15px;
158
+ width: 90%;
159
+ border-radius: 5px;
160
+ background: #d3d3d3;
161
+ outline: none;
162
+ opacity: 0.7;
163
+ -webkit-transition: .2s;
164
+ transition: opacity .2s;
165
+ }
166
+
167
+ #settings-dashboard .card .value-slider::-webkit-slider-thumb {
168
+ -webkit-appearance: none;
169
+ appearance: none;
170
+ width: 25px;
171
+ height: 25px;
172
+ border-radius: 50%;
173
+ background: var(--tangerine);
174
+ cursor: pointer;
175
+ }
176
+
177
+ #settings-dashboard .card .value-slider::-moz-range-thumb {
178
+ width: 25px;
179
+ height: 25px;
180
+ border-radius: 50%;
181
+ background: var(--tangerine);
182
+ cursor: pointer;
183
+ }
184
+
185
+ #settings-dashboard .card .btn-value-submit {
186
+ height: 100%;
187
+ cursor: pointer;
188
+ }
189
+
190
+ #settings-dashboard .card .submit-container {
191
+ height: 35px;
192
+ width: 24%;
193
+ }
194
+
195
+ #settings-dashboard .card .switch {
196
+ position: relative;
197
+ top: 5px;
198
+ display: inline-block;
199
+ width: 60px;
200
+ height: 34px;
201
+ }
202
+
203
+ #settings-dashboard .card .switch input {display:none;}
204
+
205
+ #settings-dashboard .card .slider {
206
+ position: absolute;
207
+ cursor: pointer;
208
+ top: 0;
209
+ left: 0;
210
+ right: 0;
211
+ bottom: 0;
212
+ background-color: #ccc;
213
+ -webkit-transition: .4s;
214
+ transition: .4s;
215
+ }
216
+
217
+ #settings-dashboard .card .slider:before {
218
+ position: absolute;
219
+ content: "";
220
+ height: 26px;
221
+ width: 26px;
222
+ left: 4px;
223
+ bottom: 4px;
224
+ background-color: white;
225
+ -webkit-transition: .4s;
226
+ transition: .4s;
227
+ }
228
+
229
+ #settings-dashboard .card input:checked + .slider {
230
+ background-color: var(--tangerine);
231
+ }
232
+
233
+ #settings-dashboard .card input:focus + .slider {
234
+ box-shadow: 0 0 1px var(--tangerine);
235
+ }
236
+
237
+ #settings-dashboard .card input:checked + .slider:before {
238
+ -webkit-transform: translateX(26px);
239
+ -ms-transform: translateX(26px);
240
+ transform: translateX(26px);
241
+ }
242
+
243
+ #settings-dashboard .card .slider.round {
244
+ border-radius: 34px;
245
+ }
246
+
247
+ #settings-dashboard .card .slider.round:before {
248
+ border-radius: 50%;
249
+ }
250
+
251
+ #settings-dashboard .card .refresh-button {
252
+ border: none;
253
+ outline: none;
254
+ background: transparent;
255
+ }
256
+
257
+ .flex-container {
258
+ display: flex;
259
+ align-items: center;
260
+ }
261
+
262
+ .flex-container .flex-grow {
263
+ flex-grow: 4;
264
+ }
265
+
266
+ .flex-container-vertical {
267
+ display: flex;
268
+ flex-direction: column;
269
+ justify-content: space-between;
270
+ height: 100%;
271
+ }
272
+
273
+ .flex-container.space-between {
274
+ justify-content: space-between;
275
+ }
276
+
277
+ .flex-container.align-bottom {
278
+ align-items: flex-end;
279
+ }
280
+
281
+ .flex-container.padded {
282
+ padding: 5px 0 10px 0;
283
+ }
284
+
285
+ .flex-container.justify-end {
286
+ justify-content: flex-end;
287
+ }
288
+
289
+ .flex-container > div {
290
+ flex: 0 1 auto;
291
+ }
292
+
293
+ @-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
294
+ @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
295
+ @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
296
+
297
+ #settings-dashboard .card .refresh-button img {
298
+ height: 30px;
299
+ }
300
+
301
+ #settings-dashboard .card .refresh-button:hover {
302
+ cursor: pointer;
303
+ }
304
+
305
+ #settings-dashboard .card .refresh-button.active img {
306
+ -webkit-animation:spin 0.5s linear infinite;
307
+ -webkit-animation-direction: reverse;
308
+ -moz-animation:spin 0.5s linear infinite;
309
+ -moz-animation-direction: reverse;
310
+ animation:spin 0.5s linear infinite;
311
+ animation-direction: reverse;
312
+ }
313
+
314
+ .notice {
315
+ display: none;
316
+ position: relative;
317
+ top: 10px;
318
+ text-overflow: ellipsis;
319
+ overflow: hidden;
320
+ text-transform: uppercase;
321
+ font-weight: bolder;
322
+ font-size: 18px;
323
+ width: 100%;
324
+ height: 100%;
325
+ text-align: center;
326
+ -webkit-animation: fadeIn 0.5s;
327
+ animation: fadeIn 0.5s;
328
+ }
329
+
330
+ .notice img {
331
+ width: 25px;
332
+ }
333
+
334
+ .notice.success img {
335
+ fill: var(--dark-green);
336
+ }
337
+
338
+ .notice.alert img {
339
+ fill: var(--bright-red);
340
+ }
341
+
342
+ #progress-container {
343
+ text-align: center;
344
+ }
345
+
346
+ #progress-container #search-submit-progress {
347
+ display: none;
348
+ width: 100%;
349
+ -webkit-appearance: none;
350
+ height: 3px;
351
+ position: relative;
352
+ bottom: 22px;
353
+ left: 3px;
354
+ }
355
+
356
+ #progress-container #search-submit-progress::-webkit-progress-bar {
357
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25) inset;
358
+ background-color: white;
359
+ }
360
+
361
+ #progress-container #search-submit-progress::-webkit-progress-value {
362
+ background-color: var(--cerulean);
363
+ }
364
+
365
+ @media (max-width: 991px) {
366
+ #settings-dashboard #search-container {
367
+ margin-top: 10px;
368
+ }
369
+ }
370
+
371
+ #settings-dashboard #search-container .inner-container {
372
+ width: 90%;
373
+ float: left;
374
+ }
375
+
376
+ @media (min-width: 992px) {
377
+ #settings-dashboard #search-container .inner-container {
378
+ width: 50%;
379
+ }
380
+ }
381
+
382
+ #settings-dashboard #search-container #main-app-link {
383
+ margin: 0 0 0 8px;
384
+ height: 53px;
385
+ }
386
+
387
+ #settings-dashboard #search-container #btn-profiles {
388
+ height: 58px;
389
+ margin: 0 0 0 8px;
390
+ }
391
+
392
+ #settings-dashboard #search-container #sort-menu {
393
+ background: white;
394
+ position: absolute;
395
+ right: 30%;
396
+ top: 165px;
397
+ z-index: 3;
398
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
399
+ -webkit-border-radius: 5px;
400
+ -moz-border-radius: 5px;
401
+ border-radius: 5px;
402
+ -webkit-animation: fadeIn 0.5s;
403
+ animation: fadeIn 0.5s;
404
+ padding: 10px;
405
+ }
406
+
407
+ #settings-dashboard #search-container #sort-menu button {
408
+ outline: none;
409
+ border: none;
410
+ width: 100%;
411
+ font-size: 20px;
412
+ background: transparent;
413
+ padding: 5px;
414
+ -webkit-border-radius: 5px;
415
+ -moz-border-radius: 5px;
416
+ border-radius: 5px;
417
+ }
418
+
419
+ #settings-dashboard #search-container #sort-menu button:hover {
420
+ background-color: var(--tangerine);
421
+ }
422
+
423
+ @media (min-width: 768px) {
424
+ #settings-dashboard #search-container #sort-menu {
425
+ right: 41%;
426
+ }
427
+ }
428
+
429
+ @media (min-width: 1024px) {
430
+ #settings-dashboard #search-container #sort-menu {
431
+ right: 18%;
432
+ }
433
+ }
434
+
435
+ @media (min-width: 1200px) {
436
+ #settings-dashboard #search-container #sort-menu {
437
+ right: 22%;
438
+ }
439
+ }
440
+
441
+ #settings-dashboard #search-container #btn-order {
442
+ margin: 0 0 0 15px;
443
+ height: 58px;
444
+ }
445
+
446
+ #settings-dashboard #search-container .search-button {
447
+ float: left;
448
+ border: 3px solid transparent;
449
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
450
+ -webkit-border-radius: 5px;
451
+ -moz-border-radius: 5px;
452
+ border-radius: 5px;
453
+ -webkit-transition : border .25s ease-in;
454
+ -moz-transition : border .25s ease-in;
455
+ -o-transition : border .25s ease-in;
456
+ transition : border .25s ease-in;
457
+ outline: none;
458
+ background: white;
459
+ }
460
+
461
+ #settings-dashboard #search-container .search-button:focus,
462
+ #settings-dashboard #search-container .search-button:hover {
463
+ border-color: var(--tangerine);
464
+ outline: none;
465
+ }
466
+
467
+ #settings-dashboard #search-container .search-button img {
468
+ height: 100%;
469
+ }
470
+
471
+ @media (max-width: 991px) {
472
+ #settings-dashboard #search-container .search-button {
473
+ position: relative;
474
+ top: 10px;
475
+ left: 33vw;
476
+ }
477
+ }
478
+
479
+ @media (max-width: 767px) {
480
+ #settings-dashboard #search-container .search-button {
481
+ left: 20vw;
482
+ }
483
+ }
484
+
485
+ @media (max-width: 413px) {
486
+ #settings-dashboard #search-container .search-button {
487
+ left: 16vw;
488
+ }
489
+ }
490
+
491
+ #settings-dashboard #search-container #search-form {
492
+ text-align: center;
493
+ }
494
+
495
+ #settings-dashboard #search-container #search-form #query {
496
+ height: 50px;
497
+ width: 100%;
498
+ border: 3px solid transparent;
499
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
500
+ font-size: 18px;
501
+ text-align: center;
502
+ text-overflow: ellipsis;
503
+ -webkit-border-radius: 5px;
504
+ -moz-border-radius: 5px;
505
+ border-radius: 5px;
506
+ -webkit-transition : border .25s ease-in;
507
+ -moz-transition : border .25s ease-in;
508
+ -o-transition : border .25s ease-in;
509
+ transition : border .25s ease-in;
510
+ outline: none;
511
+ }
512
+
513
+ #settings-dashboard #search-container #search-form #query:focus,
514
+ #settings-dashboard #search-container #search-form #query:hover {
515
+ border-color: var(--tangerine);
516
+ outline: none;
517
+ }
518
+
519
+ #settings-dashboard #search-container .offset-container {
520
+ float: left;
521
+ width: 3.5%;
522
+ height: 50px;
523
+ }
524
+
525
+ @media (min-width: 992px) {
526
+ #settings-dashboard #search-container .offset-container {
527
+ width: 25%;
528
+ }
529
+ }
530
+
531
+ .btn-sail, #settings-dashboard .card .btn-value-submit {
532
+ text-align: center;
533
+ font-size: 18px;
534
+ -webkit-border-radius: 5px;
535
+ -moz-border-radius: 5px;
536
+ border-radius: 5px;
537
+ background-color: var(--tangerine);
538
+ border: none;
539
+ outline: none;
540
+ -webkit-transition: background-color 0.5s;
541
+ -moz-transition: background-color 0.5s;
542
+ -ms-transition: background-color 0.5s;
543
+ -o-transition: background-color 0.5s;
544
+ transition: background-color 0.5s;
545
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
546
+ }
547
+
548
+ .btn-sail:active {
549
+ color: var(--main-black);
550
+ opacity: .8;
551
+ }
552
+
553
+ .btn-sail :hover {
554
+ background-color: var(--dark-tangerine);
555
+ }