solid_queue_monitor 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 21024cd4e55a7bc73fde9161c68186a293976fe9fe6149dde1e0c48c0638f1b0
4
- data.tar.gz: b0bfa87b894001e9a14e8666a26073334302b34e89f9e723ed0266c9ced4cfd9
3
+ metadata.gz: 5d980b63b65c764dd6f0382f9072274f22a36f6906a56cdc888b081a3c3aeb5e
4
+ data.tar.gz: 223799c8891120a76776d4f702315f76033af176274bbcb5c2c7d6b30aa1053e
5
5
  SHA512:
6
- metadata.gz: 82e972e2209c95dcc4693f7a1bc0ac0794743f1ccd02405708730005164c3a652a648bb816f0eaf15ccae92da2ca0ca7d1498877502428fc9e6d6c78698f98fc
7
- data.tar.gz: c695e22c0957ba4b3449c9a0fe46e503f6d32d4e2282bd52ee2d7271a13880e16829cae7b8c4ee74d2fb2422f44f4d4a50ba39e79b3c20d46d9907458d2e79ab
6
+ metadata.gz: 7b938b862ebd3b7d7e5c711f6b7dd5717ab70d4472641252f72d9bf1e96bb97596a65799e2adf17b27f2a119d07c3ee4d285d0925931b2c0e6ddc72ab57c4bd9
7
+ data.tar.gz: 84ad9d12a2c7c37610c610938958c60585aeea01c4d3797ea7c9d019f37c0581ba4843e104fa89cdc59e50087e3a7c4bbcdfdd2e95d2bccd09e10f8d11d85722
@@ -18,7 +18,7 @@ module SolidQueueMonitor
18
18
  <title>Solid Queue Monitor - #{@title}</title>
19
19
  #{generate_head}
20
20
  </head>
21
- <body>
21
+ <body class="solid_queue_monitor">
22
22
  #{generate_body}
23
23
  </body>
24
24
  </html>
@@ -2,7 +2,7 @@ module SolidQueueMonitor
2
2
  class StylesheetGenerator
3
3
  def generate
4
4
  <<-CSS
5
- :root {
5
+ .solid_queue_monitor {
6
6
  --primary-color: #3b82f6;
7
7
  --success-color: #10b981;
8
8
  --error-color: #ef4444;
@@ -11,33 +11,33 @@ module SolidQueueMonitor
11
11
  --background-color: #f9fafb;
12
12
  }
13
13
 
14
- * { box-sizing: border-box; margin: 0; padding: 0; }
14
+ .solid_queue_monitor * { box-sizing: border-box; margin: 0; padding: 0; }
15
15
 
16
- body {
16
+ .solid_queue_monitor {
17
17
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
18
18
  line-height: 1.5;
19
19
  color: var(--text-color);
20
20
  background: var(--background-color);
21
21
  }
22
22
 
23
- .container {
23
+ .solid_queue_monitor .container {
24
24
  max-width: 1200px;
25
25
  margin: 0 auto;
26
26
  padding: 2rem;
27
27
  }
28
28
 
29
- header {
29
+ .solid_queue_monitor header {
30
30
  margin-bottom: 2rem;
31
31
  text-align: center;
32
32
  }
33
33
 
34
- h1 {
34
+ .solid_queue_monitor h1 {
35
35
  font-size: 2rem;
36
36
  font-weight: 600;
37
37
  margin-bottom: 0.5rem;
38
38
  }
39
39
 
40
- .navigation {
40
+ .solid_queue_monitor .navigation {
41
41
  display: flex;
42
42
  flex-wrap: wrap;
43
43
  justify-content: center;
@@ -45,7 +45,7 @@ module SolidQueueMonitor
45
45
  padding: 0.5rem;
46
46
  }
47
47
 
48
- .nav-link {
48
+ .solid_queue_monitor .nav-link {
49
49
  text-decoration: none;
50
50
  color: var(--text-color);
51
51
  padding: 0.5rem 1rem;
@@ -55,28 +55,28 @@ module SolidQueueMonitor
55
55
  transition: all 0.2s;
56
56
  }
57
57
 
58
- .nav-link:hover {
58
+ .solid_queue_monitor .nav-link:hover {
59
59
  background: var(--primary-color);
60
60
  color: white;
61
61
  }
62
62
 
63
- .section-wrapper {
63
+ .solid_queue_monitor .section-wrapper {
64
64
  margin-top: 2rem;
65
65
  }
66
66
 
67
67
 
68
- .section h2 {
68
+ .solid_queue_monitor .section h2 {
69
69
  padding: 1rem;
70
70
  border-bottom: 1px solid var(--border-color);
71
71
  font-size: 1.25rem;
72
72
  background: var(--background-color);
73
73
  }
74
74
 
75
- .stats-container {
75
+ .solid_queue_monitor .stats-container {
76
76
  margin-bottom: 2rem;
77
77
  }
78
78
 
79
- .stats {
79
+ .solid_queue_monitor .stats {
80
80
  display: flex;
81
81
  flex-direction: row;
82
82
  flex-wrap: wrap;
@@ -84,7 +84,7 @@ module SolidQueueMonitor
84
84
  margin: 0 -0.5rem;
85
85
  }
86
86
 
87
- .stat-card {
87
+ .solid_queue_monitor .stat-card {
88
88
  flex: 1 1 0;
89
89
  min-width: 150px;
90
90
  background: white;
@@ -94,7 +94,7 @@ module SolidQueueMonitor
94
94
  text-align: center;
95
95
  }
96
96
 
97
- .stat-card h3 {
97
+ .solid_queue_monitor .stat-card h3 {
98
98
  color: #6b7280;
99
99
  font-size: 0.875rem;
100
100
  text-transform: uppercase;
@@ -102,38 +102,39 @@ module SolidQueueMonitor
102
102
  margin-bottom: 0.5rem;
103
103
  }
104
104
 
105
- .stat-card p {
105
+ .solid_queue_monitor .stat-card p {
106
106
  font-size: 1.5rem;
107
107
  font-weight: 600;
108
108
  color: var(--primary-color);
109
109
  }
110
110
 
111
- .section h2 {
111
+ .solid_queue_monitor .section h2 {
112
112
  padding: 1rem;
113
113
  border-bottom: 1px solid var(--border-color);
114
114
  font-size: 1.25rem;
115
115
  }
116
116
 
117
- .table-container {
117
+ .solid_queue_monitor .table-container {
118
118
  width: 100%;
119
119
  overflow-x: auto;
120
120
  -webkit-overflow-scrolling: touch;
121
121
  }
122
122
 
123
- table {
123
+ .solid_queue_monitor table {
124
124
  width: 100%;
125
125
  min-width: 800px; /* Ensures table doesn't get too squeezed */
126
126
  border-collapse: collapse;
127
127
  white-space: nowrap;
128
128
  }
129
129
 
130
- th, td {
130
+ .solid_queue_monitor th,
131
+ .solid_queue_monitor td {
131
132
  padding: 0.75rem 1rem;
132
133
  text-align: left;
133
134
  border-bottom: 1px solid var(--border-color);
134
135
  }
135
136
 
136
- th {
137
+ .solid_queue_monitor th {
137
138
  background: var(--background-color);
138
139
  font-weight: 500;
139
140
  font-size: 0.875rem;
@@ -141,7 +142,7 @@ module SolidQueueMonitor
141
142
  letter-spacing: 0.05em;
142
143
  }
143
144
 
144
- .status-badge {
145
+ .solid_queue_monitor .status-badge {
145
146
  display: inline-block;
146
147
  padding: 0.25rem 0.5rem;
147
148
  border-radius: 9999px;
@@ -149,38 +150,38 @@ module SolidQueueMonitor
149
150
  font-weight: 500;
150
151
  }
151
152
 
152
- .table-actions {
153
- display: flex;
154
- justify-content: space-between;
155
- align-items: center;
156
- padding: 1rem;
157
- border-top: 1px solid var(--border-color);
158
- }
159
-
160
- .select-all {
161
- display: flex;
162
- align-items: center;
163
- gap: 0.5rem;
164
- cursor: pointer;
165
- }
166
-
167
- .execute-btn:disabled {
168
- opacity: 0.5;
169
- cursor: not-allowed;
170
- }
171
-
172
- input[type="checkbox"] {
173
- width: 1rem;
174
- height: 1rem;
175
- cursor: pointer;
176
- }
177
-
178
- .status-completed { background: #d1fae5; color: #065f46; }
179
- .status-failed { background: #fee2e2; color: #991b1b; }
180
- .status-scheduled { background: #dbeafe; color: #1e40af; }
181
- .status-pending { background: #f3f4f6; color: #374151; }
182
-
183
- .execute-btn {
153
+ .solid_queue_monitor .table-actions {
154
+ display: flex;
155
+ justify-content: space-between;
156
+ align-items: center;
157
+ padding: 1rem;
158
+ border-top: 1px solid var(--border-color);
159
+ }
160
+
161
+ .solid_queue_monitor .select-all {
162
+ display: flex;
163
+ align-items: center;
164
+ gap: 0.5rem;
165
+ cursor: pointer;
166
+ }
167
+
168
+ .solid_queue_monitor .execute-btn:disabled {
169
+ opacity: 0.5;
170
+ cursor: not-allowed;
171
+ }
172
+
173
+ .solid_queue_monitor input[type="checkbox"] {
174
+ width: 1rem;
175
+ height: 1rem;
176
+ cursor: pointer;
177
+ }
178
+
179
+ .solid_queue_monitor .status-completed { background: #d1fae5; color: #065f46; }
180
+ .solid_queue_monitor .status-failed { background: #fee2e2; color: #991b1b; }
181
+ .solid_queue_monitor .status-scheduled { background: #dbeafe; color: #1e40af; }
182
+ .solid_queue_monitor .status-pending { background: #f3f4f6; color: #374151; }
183
+
184
+ .solid_queue_monitor .execute-btn {
184
185
  background: var(--primary-color);
185
186
  color: white;
186
187
  border: none;
@@ -191,33 +192,33 @@ input[type="checkbox"] {
191
192
  transition: background-color 0.2s;
192
193
  }
193
194
 
194
- .execute-btn:hover {
195
+ .solid_queue_monitor .execute-btn:hover {
195
196
  background: #2563eb;
196
197
  }
197
198
 
198
- .message {
199
+ .solid_queue_monitor .message {
199
200
  padding: 1rem;
200
201
  margin-bottom: 1rem;
201
202
  border-radius: 0.375rem;
202
203
  }
203
204
 
204
- .message-success {
205
+ .solid_queue_monitor .message-success {
205
206
  background: #d1fae5;
206
207
  color: #065f46;
207
208
  }
208
209
 
209
- .message-error {
210
+ .solid_queue_monitor .message-error {
210
211
  background: #fee2e2;
211
212
  color: #991b1b;
212
213
  }
213
214
 
214
- footer {
215
+ .solid_queue_monitor footer {
215
216
  text-align: center;
216
217
  padding: 2rem 0;
217
218
  color: #6b7280;
218
219
  }
219
220
 
220
- .pagination {
221
+ .solid_queue_monitor .pagination {
221
222
  display: flex;
222
223
  justify-content: center;
223
224
  gap: 0.5rem;
@@ -225,12 +226,12 @@ input[type="checkbox"] {
225
226
  padding: 1rem;
226
227
  }
227
228
 
228
- .pagination-nav {
229
+ .solid_queue_monitor .pagination-nav {
229
230
  padding: 0.5rem 1rem;
230
231
  font-size: 0.875rem;
231
232
  }
232
233
 
233
- .pagination-gap {
234
+ .solid_queue_monitor .pagination-gap {
234
235
  display: inline-flex;
235
236
  align-items: center;
236
237
  justify-content: center;
@@ -240,14 +241,14 @@ input[type="checkbox"] {
240
241
  color: var(--text-color);
241
242
  }
242
243
 
243
- .pagination-link.disabled {
244
+ .solid_queue_monitor .pagination-link.disabled {
244
245
  opacity: 0.5;
245
246
  cursor: not-allowed;
246
247
  pointer-events: none;
247
248
  }
248
249
 
249
- .pagination-link,
250
- .pagination-current {
250
+ .solid_queue_monitor .pagination-link,
251
+ .solid_queue_monitor .pagination-current {
251
252
  display: inline-flex;
252
253
  align-items: center;
253
254
  justify-content: center;
@@ -260,64 +261,64 @@ input[type="checkbox"] {
260
261
  transition: all 0.2s;
261
262
  }
262
263
 
263
- .pagination-link {
264
+ .solid_queue_monitor .pagination-link {
264
265
  background: white;
265
266
  color: var(--text-color);
266
267
  border: 1px solid var(--border-color);
267
268
  }
268
269
 
269
- .pagination-link:hover {
270
+ .solid_queue_monitor .pagination-link:hover {
270
271
  background: var(--primary-color);
271
272
  color: white;
272
273
  border-color: var(--primary-color);
273
274
  }
274
275
 
275
- .pagination-current {
276
+ .solid_queue_monitor .pagination-current {
276
277
  background: var(--primary-color);
277
278
  color: white;
278
279
  font-weight: 500;
279
280
  }
280
281
 
281
282
  @media (max-width: 768px) {
282
- .container {
283
+ .solid_queue_monitor .container {
283
284
  padding: 0.5rem;
284
285
  }
285
286
 
286
- .stats {
287
+ .solid_queue_monitor .stats {
287
288
  margin: 0;
288
289
  }
289
290
 
290
- .stat-card {
291
+ .solid_queue_monitor .stat-card {
291
292
  flex: 1 1 calc(33.333% - 1rem);
292
293
  min-width: 120px;
293
294
  }
294
295
 
295
- .section {
296
+ .solid_queue_monitor .section {
296
297
  margin: 0.5rem 0;
297
298
  border-radius: 0.375rem;
298
299
  }
299
300
 
300
- .table-container {
301
+ .solid_queue_monitor .table-container {
301
302
  width: 100%;
302
303
  overflow-x: auto;
303
304
  }
304
305
  }
305
306
 
306
307
  @media (max-width: 480px) {
307
- .stat-card {
308
+ .solid_queue_monitor .stat-card {
308
309
  flex: 1 1 calc(50% - 1rem);
309
310
  }
310
311
 
311
- .nav-link {
312
+ .solid_queue_monitor .nav-link {
312
313
  width: 100%;
313
314
  text-align: center;
314
315
  }
315
- .pagination-nav {
316
+ .solid_queue_monitor .pagination-nav {
316
317
  display: none;
317
318
  }
318
319
  }
319
320
 
320
- .filter-form-container {
321
+ .solid_queue_monitor .filter-form-container {
321
322
  background: white;
322
323
  padding: 1rem;
323
324
  border-radius: 0.5rem;
@@ -325,19 +326,19 @@ input[type="checkbox"] {
325
326
  box-shadow: 0 1px 3px rgba(0,0,0,0.1);
326
327
  }
327
328
 
328
- .filter-form {
329
+ .solid_queue_monitor .filter-form {
329
330
  display: flex;
330
331
  flex-wrap: wrap;
331
332
  gap: 1rem;
332
333
  align-items: flex-end;
333
334
  }
334
335
 
335
- .filter-group {
336
+ .solid_queue_monitor .filter-group {
336
337
  flex: 1;
337
338
  min-width: 200px;
338
339
  }
339
340
 
340
- .filter-group label {
341
+ .solid_queue_monitor .filter-group label {
341
342
  display: block;
342
343
  margin-bottom: 0.5rem;
343
344
  font-size: 0.875rem;
@@ -345,8 +346,8 @@ input[type="checkbox"] {
345
346
  color: #4b5563;
346
347
  }
347
348
 
348
- .filter-group input,
349
- .filter-group select {
349
+ .solid_queue_monitor .filter-group input,
350
+ .solid_queue_monitor .filter-group select {
350
351
  width: 100%;
351
352
  padding: 0.5rem;
352
353
  border: 1px solid #d1d5db;
@@ -354,12 +355,12 @@ input[type="checkbox"] {
354
355
  font-size: 0.875rem;
355
356
  }
356
357
 
357
- .filter-actions {
358
+ .solid_queue_monitor .filter-actions {
358
359
  display: flex;
359
360
  gap: 0.5rem;
360
361
  }
361
362
 
362
- .filter-button {
363
+ .solid_queue_monitor .filter-button {
363
364
  background: var(--primary-color);
364
365
  color: white;
365
366
  border: none;
@@ -370,11 +371,11 @@ input[type="checkbox"] {
370
371
  transition: background-color 0.2s;
371
372
  }
372
373
 
373
- .filter-button:hover {
374
+ .solid_queue_monitor .filter-button:hover {
374
375
  background: #2563eb;
375
376
  }
376
377
 
377
- .reset-button {
378
+ .solid_queue_monitor .reset-button {
378
379
  background: #f3f4f6;
379
380
  color: #4b5563;
380
381
  border: 1px solid #d1d5db;
@@ -386,7 +387,7 @@ input[type="checkbox"] {
386
387
  transition: background-color 0.2s;
387
388
  }
388
389
 
389
- .reset-button:hover {
390
+ .solid_queue_monitor .reset-button:hover {
390
391
  background: #e5e7eb;
391
392
  }
392
393
  CSS
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidQueueMonitor
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_queue_monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vishal Sadriya