solid_queue_monitor 1.0.0 → 1.1.0

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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -1
  3. data/app/controllers/solid_queue_monitor/base_controller.rb +34 -2
  4. data/app/controllers/solid_queue_monitor/failed_jobs_controller.rb +7 -3
  5. data/app/controllers/solid_queue_monitor/in_progress_jobs_controller.rb +7 -3
  6. data/app/controllers/solid_queue_monitor/overview_controller.rb +7 -3
  7. data/app/controllers/solid_queue_monitor/queues_controller.rb +21 -8
  8. data/app/controllers/solid_queue_monitor/ready_jobs_controller.rb +7 -3
  9. data/app/controllers/solid_queue_monitor/recurring_jobs_controller.rb +7 -3
  10. data/app/controllers/solid_queue_monitor/scheduled_jobs_controller.rb +7 -3
  11. data/app/controllers/solid_queue_monitor/search_controller.rb +12 -0
  12. data/app/controllers/solid_queue_monitor/workers_controller.rb +7 -4
  13. data/app/presenters/solid_queue_monitor/base_presenter.rb +47 -5
  14. data/app/presenters/solid_queue_monitor/failed_jobs_presenter.rb +6 -6
  15. data/app/presenters/solid_queue_monitor/in_progress_jobs_presenter.rb +5 -4
  16. data/app/presenters/solid_queue_monitor/jobs_presenter.rb +5 -4
  17. data/app/presenters/solid_queue_monitor/queue_details_presenter.rb +4 -3
  18. data/app/presenters/solid_queue_monitor/queues_presenter.rb +4 -3
  19. data/app/presenters/solid_queue_monitor/ready_jobs_presenter.rb +6 -5
  20. data/app/presenters/solid_queue_monitor/recurring_jobs_presenter.rb +6 -5
  21. data/app/presenters/solid_queue_monitor/scheduled_jobs_presenter.rb +5 -4
  22. data/app/presenters/solid_queue_monitor/search_results_presenter.rb +190 -0
  23. data/app/presenters/solid_queue_monitor/workers_presenter.rb +4 -3
  24. data/app/services/solid_queue_monitor/html_generator.rb +23 -2
  25. data/app/services/solid_queue_monitor/search_service.rb +126 -0
  26. data/app/services/solid_queue_monitor/stylesheet_generator.rb +614 -0
  27. data/config/routes.rb +1 -0
  28. data/lib/solid_queue_monitor/version.rb +1 -1
  29. metadata +5 -2
@@ -66,6 +66,16 @@ module SolidQueueMonitor
66
66
  margin-bottom: 0.5rem;
67
67
  }
68
68
 
69
+ .solid_queue_monitor .header-title-link {
70
+ color: var(--text-color);
71
+ text-decoration: none;
72
+ transition: color 0.2s;
73
+ }
74
+
75
+ .solid_queue_monitor .header-title-link:hover {
76
+ color: var(--primary-color);
77
+ }
78
+
69
79
  .solid_queue_monitor .navigation {
70
80
  display: flex;
71
81
  flex-wrap: wrap;
@@ -195,6 +205,22 @@ module SolidQueueMonitor
195
205
  color: var(--text-muted);
196
206
  }
197
207
 
208
+ .solid_queue_monitor .sortable-header {
209
+ color: var(--text-muted);
210
+ text-decoration: none;
211
+ cursor: pointer;
212
+ transition: color 0.2s;
213
+ }
214
+
215
+ .solid_queue_monitor .sortable-header:hover {
216
+ color: var(--primary-color);
217
+ }
218
+
219
+ .solid_queue_monitor .sortable-header.active {
220
+ color: var(--primary-color);
221
+ font-weight: 600;
222
+ }
223
+
198
224
  .solid_queue_monitor .status-badge {
199
225
  display: inline-block;
200
226
  padding: 0.25rem 0.5rem;
@@ -1178,6 +1204,98 @@ module SolidQueueMonitor
1178
1204
  gap: 0.75rem;
1179
1205
  }
1180
1206
 
1207
+ /* Header Search Box */
1208
+ .solid_queue_monitor .header-search-form {
1209
+ display: flex;
1210
+ align-items: center;
1211
+ gap: 0;
1212
+ flex: 1;
1213
+ max-width: 400px;
1214
+ margin: 0 1rem;
1215
+ }
1216
+
1217
+ .solid_queue_monitor .header-search-input {
1218
+ flex: 1;
1219
+ padding: 0.5rem 0.75rem;
1220
+ border: 1px solid var(--input-border);
1221
+ border-right: none;
1222
+ border-radius: 0.375rem 0 0 0.375rem;
1223
+ font-size: 0.875rem;
1224
+ background: var(--input-background);
1225
+ color: var(--text-color);
1226
+ outline: none;
1227
+ transition: border-color 0.2s, box-shadow 0.2s;
1228
+ }
1229
+
1230
+ .solid_queue_monitor .header-search-input:focus {
1231
+ border-color: var(--primary-color);
1232
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
1233
+ }
1234
+
1235
+ .solid_queue_monitor .header-search-input::placeholder {
1236
+ color: var(--text-muted);
1237
+ }
1238
+
1239
+ .solid_queue_monitor .header-search-button {
1240
+ display: flex;
1241
+ align-items: center;
1242
+ justify-content: center;
1243
+ padding: 0.5rem 0.75rem;
1244
+ background: var(--primary-color);
1245
+ color: white;
1246
+ border: 1px solid var(--primary-color);
1247
+ border-radius: 0 0.375rem 0.375rem 0;
1248
+ cursor: pointer;
1249
+ transition: background-color 0.2s;
1250
+ }
1251
+
1252
+ .solid_queue_monitor .header-search-button:hover {
1253
+ background: #2563eb;
1254
+ border-color: #2563eb;
1255
+ }
1256
+
1257
+ .solid_queue_monitor .header-search-button svg {
1258
+ width: 16px;
1259
+ height: 16px;
1260
+ }
1261
+
1262
+ @media (max-width: 768px) {
1263
+ .solid_queue_monitor .header-search-form {
1264
+ max-width: 100%;
1265
+ margin: 0.5rem 0;
1266
+ order: 3;
1267
+ width: 100%;
1268
+ }
1269
+ }
1270
+
1271
+ /* Search Results Page */
1272
+ .solid_queue_monitor .results-summary {
1273
+ margin: 1rem 0;
1274
+ padding: 0.75rem 1rem;
1275
+ background: var(--card-background);
1276
+ border-radius: 0.375rem;
1277
+ box-shadow: var(--card-shadow);
1278
+ }
1279
+
1280
+ .solid_queue_monitor .results-summary p {
1281
+ margin: 0;
1282
+ color: var(--text-muted);
1283
+ font-size: 0.875rem;
1284
+ }
1285
+
1286
+ .solid_queue_monitor .search-results-section {
1287
+ margin-top: 1.5rem;
1288
+ }
1289
+
1290
+ .solid_queue_monitor .search-results-section h3 {
1291
+ font-size: 1rem;
1292
+ font-weight: 600;
1293
+ color: var(--text-color);
1294
+ margin-bottom: 0.75rem;
1295
+ padding-bottom: 0.5rem;
1296
+ border-bottom: 1px solid var(--border-color);
1297
+ }
1298
+
1181
1299
  /* Workers Page Styles */
1182
1300
  .solid_queue_monitor .workers-summary {
1183
1301
  display: grid;
@@ -1392,7 +1510,503 @@ module SolidQueueMonitor
1392
1510
  opacity: 0.7;
1393
1511
  }
1394
1512
 
1513
+ /* Job Details Page Styles */
1514
+ .solid_queue_monitor .job-details-page {
1515
+ width: 100%;
1516
+ }
1517
+
1518
+ .solid_queue_monitor .job-header {
1519
+ background: var(--card-background);
1520
+ border-radius: 0.5rem;
1521
+ padding: 1.5rem;
1522
+ margin-bottom: 1.5rem;
1523
+ box-shadow: var(--card-shadow);
1524
+ }
1525
+
1526
+ .solid_queue_monitor .job-header-main {
1527
+ display: flex;
1528
+ align-items: center;
1529
+ gap: 1rem;
1530
+ margin-bottom: 0.75rem;
1531
+ flex-wrap: wrap;
1532
+ }
1533
+
1534
+ .solid_queue_monitor .job-title {
1535
+ font-size: 1.5rem;
1536
+ font-weight: 600;
1537
+ color: var(--text-color);
1538
+ margin: 0;
1539
+ }
1540
+
1541
+ .solid_queue_monitor .job-status-badge {
1542
+ padding: 0.375rem 0.75rem;
1543
+ border-radius: 9999px;
1544
+ font-size: 0.75rem;
1545
+ font-weight: 600;
1546
+ text-transform: uppercase;
1547
+ letter-spacing: 0.05em;
1548
+ }
1549
+
1550
+ .solid_queue_monitor .job-header-meta {
1551
+ display: flex;
1552
+ align-items: center;
1553
+ gap: 0.5rem;
1554
+ color: var(--text-muted);
1555
+ font-size: 0.875rem;
1556
+ flex-wrap: wrap;
1557
+ }
1558
+
1559
+ .solid_queue_monitor .job-separator {
1560
+ color: var(--border-color);
1561
+ }
1562
+
1563
+ .solid_queue_monitor .job-actions {
1564
+ display: flex;
1565
+ gap: 0.5rem;
1566
+ margin-top: 1rem;
1567
+ }
1568
+
1569
+ .solid_queue_monitor .job-section {
1570
+ background: var(--card-background);
1571
+ border-radius: 0.5rem;
1572
+ padding: 1.25rem;
1573
+ margin-bottom: 1rem;
1574
+ box-shadow: var(--card-shadow);
1575
+ }
1576
+
1577
+ .solid_queue_monitor .job-section .section-header {
1578
+ display: flex;
1579
+ justify-content: space-between;
1580
+ align-items: center;
1581
+ margin-bottom: 1rem;
1582
+ }
1583
+
1584
+ .solid_queue_monitor .job-section .section-title {
1585
+ font-size: 1rem;
1586
+ font-weight: 600;
1587
+ color: var(--text-color);
1588
+ margin: 0;
1589
+ }
1590
+
1591
+ .solid_queue_monitor .section-subtitle {
1592
+ color: var(--text-muted);
1593
+ font-size: 0.875rem;
1594
+ }
1595
+
1596
+ /* Timing Cards */
1597
+ .solid_queue_monitor .timing-cards {
1598
+ display: grid;
1599
+ grid-template-columns: repeat(3, 1fr);
1600
+ gap: 1rem;
1601
+ margin-bottom: 1.5rem;
1602
+ }
1603
+
1604
+ .solid_queue_monitor .timing-card {
1605
+ background: var(--card-background);
1606
+ border-radius: 0.5rem;
1607
+ padding: 1.25rem;
1608
+ text-align: center;
1609
+ box-shadow: var(--card-shadow);
1610
+ border: 1px solid var(--border-color);
1611
+ }
1612
+
1613
+ .solid_queue_monitor .timing-value {
1614
+ font-size: 1.5rem;
1615
+ font-weight: 700;
1616
+ color: var(--text-color);
1617
+ margin-bottom: 0.25rem;
1618
+ }
1619
+
1620
+ .solid_queue_monitor .timing-label {
1621
+ font-size: 0.75rem;
1622
+ color: var(--text-muted);
1623
+ text-transform: uppercase;
1624
+ letter-spacing: 0.05em;
1625
+ }
1626
+
1627
+ .solid_queue_monitor .timing-indicator {
1628
+ display: inline-block;
1629
+ padding: 0.125rem 0.5rem;
1630
+ border-radius: 9999px;
1631
+ font-size: 0.625rem;
1632
+ font-weight: 600;
1633
+ text-transform: uppercase;
1634
+ margin-top: 0.5rem;
1635
+ }
1636
+
1637
+ .solid_queue_monitor .indicator-good {
1638
+ background: rgba(16, 185, 129, 0.15);
1639
+ color: #10b981;
1640
+ }
1641
+
1642
+ .solid_queue_monitor .indicator-normal {
1643
+ background: rgba(59, 130, 246, 0.15);
1644
+ color: #3b82f6;
1645
+ }
1646
+
1647
+ .solid_queue_monitor .indicator-warning {
1648
+ background: rgba(245, 158, 11, 0.15);
1649
+ color: #f59e0b;
1650
+ }
1651
+
1652
+ /* Timeline */
1653
+ .solid_queue_monitor .job-timeline {
1654
+ padding: 0.5rem 0;
1655
+ }
1656
+
1657
+ .solid_queue_monitor .timeline-track {
1658
+ display: flex;
1659
+ justify-content: space-between;
1660
+ position: relative;
1661
+ }
1662
+
1663
+ .solid_queue_monitor .timeline-event {
1664
+ display: flex;
1665
+ flex-direction: column;
1666
+ align-items: center;
1667
+ position: relative;
1668
+ flex: 1;
1669
+ }
1670
+
1671
+ .solid_queue_monitor .timeline-dot {
1672
+ width: 12px;
1673
+ height: 12px;
1674
+ border-radius: 50%;
1675
+ background: var(--border-color);
1676
+ border: 2px solid var(--card-background);
1677
+ z-index: 1;
1678
+ }
1679
+
1680
+ .solid_queue_monitor .timeline-line {
1681
+ position: absolute;
1682
+ top: 5px;
1683
+ left: calc(50% + 6px);
1684
+ right: calc(-50% + 6px);
1685
+ height: 2px;
1686
+ background: var(--border-color);
1687
+ }
1688
+
1689
+ .solid_queue_monitor .timeline-content {
1690
+ text-align: center;
1691
+ margin-top: 0.5rem;
1692
+ }
1693
+
1694
+ .solid_queue_monitor .timeline-label {
1695
+ font-size: 0.75rem;
1696
+ font-weight: 600;
1697
+ color: var(--text-color);
1698
+ }
1699
+
1700
+ .solid_queue_monitor .timeline-time {
1701
+ font-size: 0.625rem;
1702
+ color: var(--text-muted);
1703
+ margin-top: 0.125rem;
1704
+ }
1705
+
1706
+ .solid_queue_monitor .timeline-done .timeline-dot {
1707
+ background: #10b981;
1708
+ }
1709
+
1710
+ .solid_queue_monitor .timeline-done .timeline-line {
1711
+ background: #10b981;
1712
+ }
1713
+
1714
+ .solid_queue_monitor .timeline-success .timeline-dot {
1715
+ background: #10b981;
1716
+ box-shadow: 0 0 0 4px rgba(16, 185, 129, 0.2);
1717
+ }
1718
+
1719
+ .solid_queue_monitor .timeline-failed .timeline-dot {
1720
+ background: #ef4444;
1721
+ box-shadow: 0 0 0 4px rgba(239, 68, 68, 0.2);
1722
+ }
1723
+
1724
+ .solid_queue_monitor .timeline-active .timeline-dot {
1725
+ background: #3b82f6;
1726
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.2);
1727
+ animation: pulse 2s infinite;
1728
+ }
1729
+
1730
+ @keyframes pulse {
1731
+ 0%, 100% { box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.2); }
1732
+ 50% { box-shadow: 0 0 0 8px rgba(59, 130, 246, 0.1); }
1733
+ }
1734
+
1735
+ /* Error Section */
1736
+ .solid_queue_monitor .error-section {
1737
+ border-left: 4px solid #ef4444;
1738
+ }
1739
+
1740
+ .solid_queue_monitor .error-type {
1741
+ font-size: 1rem;
1742
+ font-weight: 600;
1743
+ color: #ef4444;
1744
+ margin-bottom: 0.5rem;
1745
+ }
1746
+
1747
+ .solid_queue_monitor .error-message-box {
1748
+ background: rgba(239, 68, 68, 0.1);
1749
+ border-radius: 0.375rem;
1750
+ padding: 0.75rem 1rem;
1751
+ color: var(--text-color);
1752
+ font-size: 0.875rem;
1753
+ line-height: 1.5;
1754
+ }
1755
+
1756
+ /* Backtrace */
1757
+ .solid_queue_monitor .backtrace-section {
1758
+ margin-top: 1rem;
1759
+ }
1760
+
1761
+ .solid_queue_monitor .backtrace-header {
1762
+ display: flex;
1763
+ justify-content: space-between;
1764
+ align-items: center;
1765
+ margin-bottom: 0.5rem;
1766
+ }
1767
+
1768
+ .solid_queue_monitor .backtrace-title {
1769
+ font-size: 0.75rem;
1770
+ font-weight: 600;
1771
+ color: var(--text-muted);
1772
+ text-transform: uppercase;
1773
+ letter-spacing: 0.05em;
1774
+ }
1775
+
1776
+ .solid_queue_monitor .backtrace-toggle {
1777
+ display: flex;
1778
+ gap: 0.25rem;
1779
+ }
1780
+
1781
+ .solid_queue_monitor .toggle-btn {
1782
+ padding: 0.25rem 0.5rem;
1783
+ font-size: 0.625rem;
1784
+ border: 1px solid var(--border-color);
1785
+ background: transparent;
1786
+ color: var(--text-muted);
1787
+ border-radius: 0.25rem;
1788
+ cursor: pointer;
1789
+ transition: all 0.2s;
1790
+ }
1791
+
1792
+ .solid_queue_monitor .toggle-btn:hover {
1793
+ border-color: var(--text-muted);
1794
+ }
1795
+
1796
+ .solid_queue_monitor .toggle-btn.active {
1797
+ background: var(--primary-color);
1798
+ border-color: var(--primary-color);
1799
+ color: white;
1800
+ }
1801
+
1802
+ .solid_queue_monitor .backtrace-content {
1803
+ background: var(--code-background);
1804
+ border-radius: 0.375rem;
1805
+ padding: 0.75rem;
1806
+ font-size: 0.75rem;
1807
+ line-height: 1.6;
1808
+ overflow-x: auto;
1809
+ margin: 0;
1810
+ max-height: 300px;
1811
+ overflow-y: auto;
1812
+ }
1813
+
1814
+ .solid_queue_monitor .backtrace-line {
1815
+ display: block;
1816
+ color: var(--text-color);
1817
+ }
1818
+
1819
+ .solid_queue_monitor .backtrace-line .line-number {
1820
+ color: var(--text-muted);
1821
+ margin-right: 0.5rem;
1822
+ user-select: none;
1823
+ }
1824
+
1825
+ /* Details Grid */
1826
+ .solid_queue_monitor .details-grid {
1827
+ display: grid;
1828
+ gap: 0.75rem;
1829
+ }
1830
+
1831
+ .solid_queue_monitor .detail-row {
1832
+ display: flex;
1833
+ justify-content: space-between;
1834
+ align-items: center;
1835
+ padding: 0.5rem 0;
1836
+ border-bottom: 1px solid var(--border-color);
1837
+ }
1838
+
1839
+ .solid_queue_monitor .detail-row:last-child {
1840
+ border-bottom: none;
1841
+ }
1842
+
1843
+ .solid_queue_monitor .detail-label {
1844
+ font-size: 0.875rem;
1845
+ color: var(--text-muted);
1846
+ }
1847
+
1848
+ .solid_queue_monitor .detail-value {
1849
+ font-size: 0.875rem;
1850
+ color: var(--text-color);
1851
+ text-align: right;
1852
+ }
1853
+
1854
+ .solid_queue_monitor .detail-mono {
1855
+ font-family: ui-monospace, monospace;
1856
+ font-size: 0.8rem;
1857
+ }
1858
+
1859
+ /* Arguments Content */
1860
+ .solid_queue_monitor .arguments-content {
1861
+ background: var(--code-background);
1862
+ border-radius: 0.375rem;
1863
+ padding: 1rem;
1864
+ font-size: 0.8rem;
1865
+ line-height: 1.5;
1866
+ overflow-x: auto;
1867
+ margin: 0;
1868
+ font-family: ui-monospace, monospace;
1869
+ }
1870
+
1871
+ /* Copy Button */
1872
+ .solid_queue_monitor .copy-button {
1873
+ display: inline-flex;
1874
+ align-items: center;
1875
+ gap: 0.25rem;
1876
+ padding: 0.375rem 0.625rem;
1877
+ font-size: 0.75rem;
1878
+ color: var(--text-muted);
1879
+ background: transparent;
1880
+ border: 1px solid var(--border-color);
1881
+ border-radius: 0.25rem;
1882
+ cursor: pointer;
1883
+ transition: all 0.2s;
1884
+ }
1885
+
1886
+ .solid_queue_monitor .copy-button:hover {
1887
+ color: var(--text-color);
1888
+ border-color: var(--text-muted);
1889
+ }
1890
+
1891
+ /* Collapsible Section */
1892
+ .solid_queue_monitor .collapsible-header {
1893
+ cursor: pointer;
1894
+ user-select: none;
1895
+ }
1896
+
1897
+ .solid_queue_monitor .collapsible-title {
1898
+ display: flex;
1899
+ align-items: center;
1900
+ gap: 0.5rem;
1901
+ }
1902
+
1903
+ .solid_queue_monitor .collapse-icon {
1904
+ transition: transform 0.2s;
1905
+ color: var(--text-muted);
1906
+ }
1907
+
1908
+ .solid_queue_monitor .collapsible-content {
1909
+ margin-top: 1rem;
1910
+ }
1911
+
1912
+ .solid_queue_monitor .raw-data-content {
1913
+ background: var(--code-background);
1914
+ border-radius: 0.375rem;
1915
+ padding: 1rem;
1916
+ font-size: 0.75rem;
1917
+ line-height: 1.5;
1918
+ overflow-x: auto;
1919
+ margin: 0;
1920
+ font-family: ui-monospace, monospace;
1921
+ max-height: 400px;
1922
+ overflow-y: auto;
1923
+ }
1924
+
1925
+ /* Recent Executions Table */
1926
+ .solid_queue_monitor .recent-executions-table {
1927
+ width: 100%;
1928
+ }
1929
+
1930
+ .solid_queue_monitor .mini-status-badge {
1931
+ display: inline-block;
1932
+ padding: 0.125rem 0.375rem;
1933
+ border-radius: 0.25rem;
1934
+ font-size: 0.625rem;
1935
+ font-weight: 600;
1936
+ text-transform: uppercase;
1937
+ }
1938
+
1939
+ .solid_queue_monitor .args-preview {
1940
+ max-width: 200px;
1941
+ overflow: hidden;
1942
+ text-overflow: ellipsis;
1943
+ white-space: nowrap;
1944
+ }
1945
+
1946
+ .solid_queue_monitor .args-preview a {
1947
+ color: var(--text-color);
1948
+ text-decoration: none;
1949
+ }
1950
+
1951
+ .solid_queue_monitor .args-preview a:hover {
1952
+ color: #3b82f6;
1953
+ text-decoration: underline;
1954
+ }
1955
+
1956
+ /* Queue Badge in Job Details */
1957
+ .solid_queue_monitor .queue-badge {
1958
+ display: inline-block;
1959
+ padding: 0.25rem 0.5rem;
1960
+ background: var(--code-background);
1961
+ border-radius: 0.25rem;
1962
+ font-size: 0.875rem;
1963
+ color: var(--text-color);
1964
+ text-decoration: none;
1965
+ }
1966
+
1967
+ .solid_queue_monitor .queue-badge:hover {
1968
+ color: #3b82f6;
1969
+ }
1970
+
1395
1971
  @media (max-width: 768px) {
1972
+ .solid_queue_monitor .timing-cards {
1973
+ grid-template-columns: 1fr;
1974
+ }
1975
+
1976
+ .solid_queue_monitor .timeline-track {
1977
+ flex-direction: column;
1978
+ gap: 1rem;
1979
+ }
1980
+
1981
+ .solid_queue_monitor .timeline-line {
1982
+ display: none;
1983
+ }
1984
+
1985
+ .solid_queue_monitor .timeline-event {
1986
+ flex-direction: row;
1987
+ gap: 1rem;
1988
+ }
1989
+
1990
+ .solid_queue_monitor .timeline-content {
1991
+ text-align: left;
1992
+ margin-top: 0;
1993
+ }
1994
+
1995
+ .solid_queue_monitor .detail-row {
1996
+ flex-direction: column;
1997
+ align-items: flex-start;
1998
+ gap: 0.25rem;
1999
+ }
2000
+
2001
+ .solid_queue_monitor .detail-value {
2002
+ text-align: left;
2003
+ }
2004
+
2005
+ .solid_queue_monitor .job-header-main {
2006
+ flex-direction: column;
2007
+ align-items: flex-start;
2008
+ }
2009
+
1396
2010
  .solid_queue_monitor .workers-summary {
1397
2011
  grid-template-columns: repeat(2, 1fr);
1398
2012
  }
data/config/routes.rb CHANGED
@@ -7,6 +7,7 @@ SolidQueueMonitor::Engine.routes.draw do
7
7
  root to: 'overview#index'
8
8
 
9
9
  get 'chart_data', to: 'overview#chart_data', as: :chart_data
10
+ get 'search', to: 'search#index', as: :search
10
11
 
11
12
  resources :ready_jobs, only: [:index]
12
13
  resources :scheduled_jobs, only: [:index]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidQueueMonitor
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
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: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vishal Sadriya
@@ -58,6 +58,7 @@ files:
58
58
  - app/controllers/solid_queue_monitor/ready_jobs_controller.rb
59
59
  - app/controllers/solid_queue_monitor/recurring_jobs_controller.rb
60
60
  - app/controllers/solid_queue_monitor/scheduled_jobs_controller.rb
61
+ - app/controllers/solid_queue_monitor/search_controller.rb
61
62
  - app/controllers/solid_queue_monitor/workers_controller.rb
62
63
  - app/presenters/solid_queue_monitor/base_presenter.rb
63
64
  - app/presenters/solid_queue_monitor/failed_jobs_presenter.rb
@@ -69,6 +70,7 @@ files:
69
70
  - app/presenters/solid_queue_monitor/ready_jobs_presenter.rb
70
71
  - app/presenters/solid_queue_monitor/recurring_jobs_presenter.rb
71
72
  - app/presenters/solid_queue_monitor/scheduled_jobs_presenter.rb
73
+ - app/presenters/solid_queue_monitor/search_results_presenter.rb
72
74
  - app/presenters/solid_queue_monitor/stats_presenter.rb
73
75
  - app/presenters/solid_queue_monitor/workers_presenter.rb
74
76
  - app/services/solid_queue_monitor/authentication_service.rb
@@ -80,6 +82,7 @@ files:
80
82
  - app/services/solid_queue_monitor/pagination_service.rb
81
83
  - app/services/solid_queue_monitor/queue_pause_service.rb
82
84
  - app/services/solid_queue_monitor/reject_job_service.rb
85
+ - app/services/solid_queue_monitor/search_service.rb
83
86
  - app/services/solid_queue_monitor/stats_calculator.rb
84
87
  - app/services/solid_queue_monitor/status_calculator.rb
85
88
  - app/services/solid_queue_monitor/stylesheet_generator.rb
@@ -116,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
119
  - !ruby/object:Gem::Version
117
120
  version: '0'
118
121
  requirements: []
119
- rubygems_version: 3.6.7
122
+ rubygems_version: 4.0.6
120
123
  specification_version: 4
121
124
  summary: Simple monitoring interface for Solid Queue
122
125
  test_files: []