rush_job 0.4.0 → 0.5.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 +4 -4
- data/README.md +4 -1
- data/app/assets/stylesheets/rush_job/application.scss +3 -1
- data/app/assets/stylesheets/rush_job/components/_pagination.scss +15 -0
- data/app/assets/stylesheets/rush_job/components/_polling.scss +26 -0
- data/app/assets/stylesheets/rush_job/pages/_rush_jobs_index.scss +10 -0
- data/app/assets/stylesheets/rush_job/themes/_dark.scss +4 -0
- data/app/assets/stylesheets/rush_job/themes/_light.scss +4 -0
- data/app/controllers/rush_job/dashboard_controller.rb +22 -0
- data/app/controllers/rush_job/rush_jobs_controller.rb +1 -1
- data/app/helpers/rush_job/dashboard_helper.rb +5 -0
- data/app/helpers/rush_job/rush_jobs_helper.rb +1 -1
- data/app/models/rush_job/rush_job.rb +3 -0
- data/app/views/layouts/rush_job/_navbar.html.erb +32 -0
- data/app/views/layouts/rush_job/application.html.erb +1 -0
- data/app/views/rush_job/dashboard/_dashboard_tables.html.erb +75 -0
- data/app/views/rush_job/dashboard/index.html.erb +5 -0
- data/app/views/rush_job/dashboard/index.js.erb +1 -0
- data/app/views/rush_job/rush_jobs/_jobs_table.html.erb +4 -6
- data/app/views/rush_job/rush_jobs/index.html.erb +2 -56
- data/app/views/rush_job/rush_jobs/index.js.erb +1 -1
- data/app/views/rush_job/shared/_polling.html.erb +32 -0
- data/config/locales/en.yml +10 -2
- data/config/routes.rb +2 -1
- data/lib/rush_job/engine.rb +1 -0
- data/lib/rush_job/version.rb +1 -1
- metadata +16 -7
- data/app/assets/stylesheets/rush_job/pages/_index.scss +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2656877c04c7bf364e6b009dde59e1b4169ec229cb011c8b973587f07185026b
|
4
|
+
data.tar.gz: d91245e38016a4a0be1e35ee9c8085d6a75580d4bf858cd37c88383e119f33f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c5b8bf4ef1138187b56cd5081aa8ff64a2cf73b3d05222501f7330bbd7f2816c30df2b7e696fd03b4a0442bde77990fdf00c6a8d863e1485218d274806192a9
|
7
|
+
data.tar.gz: 174ced87e1345741f9ffc26e8c5819c67b7d943a5b28ddf9e28afc225c65c2bbf477b9eafae11aba923c9bc554a8652fc4a834bf8bfcf0843536f0d693647aa6
|
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# RushJob
|
2
2
|
User interface for Delayed Job (https://github.com/collectiveidea/delayed_job) in Ruby on Rails
|
3
3
|
|
4
|
+
<img width="656" alt="Dashboard" src="docs/assets/dashboard.png">
|
5
|
+
<img width="1244" alt="Jobs" src="docs/assets/jobs.png">
|
6
|
+
|
4
7
|
### Note
|
5
8
|
- This has only been tested with SQLite and Postgresql.
|
6
9
|
- This app uses cookies to store the dark mode selection.
|
@@ -14,7 +17,7 @@ Navigate to the `/rush_job` route in your application to see the Delayed Jobs. L
|
|
14
17
|
Add this line to your Ruby on Rails application's Gemfile:
|
15
18
|
|
16
19
|
```ruby
|
17
|
-
gem 'rush_job', '~> 0.
|
20
|
+
gem 'rush_job', '~> 0.5.1'
|
18
21
|
```
|
19
22
|
|
20
23
|
And then execute:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
.page-link.disabled, .disabled > .page-link {
|
2
|
+
color: rgb(68, 110, 155);
|
3
|
+
}
|
4
|
+
|
5
|
+
.page-item:first-child .page-link {
|
6
|
+
color: rgb(68, 110, 155);
|
7
|
+
}
|
8
|
+
|
9
|
+
.page-item:last-child .page-link {
|
10
|
+
color: rgb(68, 110, 155);
|
11
|
+
}
|
12
|
+
|
13
|
+
.page-link {
|
14
|
+
color: rgb(68, 110, 155);
|
15
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
.polling-container {
|
2
|
+
margin-left: 5%;
|
3
|
+
margin-right: 5%;
|
4
|
+
}
|
5
|
+
|
6
|
+
.polling-range-form-label-dark {
|
7
|
+
color: rgb(0, 0, 0);
|
8
|
+
margin-bottom: 0.5rem;
|
9
|
+
}
|
10
|
+
|
11
|
+
.polling-range-form-label-light {
|
12
|
+
color: rgb(255, 255, 255);
|
13
|
+
margin-bottom: 0.5rem;
|
14
|
+
}
|
15
|
+
|
16
|
+
.form-check-label-dark {
|
17
|
+
color: rgb(0, 0, 0);
|
18
|
+
}
|
19
|
+
|
20
|
+
.form-check-label-light {
|
21
|
+
color: rgb(255, 255, 255);
|
22
|
+
}
|
23
|
+
|
24
|
+
.table-refresh {
|
25
|
+
opacity: 0.3;
|
26
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RushJob
|
2
|
+
class DashboardController < ApplicationController
|
3
|
+
include Pagy::Backend
|
4
|
+
|
5
|
+
rescue_from Pagy::OverflowError, with: :redirect_to_first_page
|
6
|
+
|
7
|
+
def index
|
8
|
+
@pagy_locked_jobs, @locked_jobs = pagy(RushJob.locked_jobs,
|
9
|
+
items: 10,
|
10
|
+
page_param: :locked_jobs_page)
|
11
|
+
|
12
|
+
@queue_groups = RushJob.queue_groups
|
13
|
+
@pagy_queue, @job_queues = pagy_array(@queue_groups.keys,
|
14
|
+
items: 10,
|
15
|
+
page_param: :queue_page)
|
16
|
+
end
|
17
|
+
|
18
|
+
def redirect_to_first_page
|
19
|
+
redirect_to root_path, notice: t(:invalid_page_notice)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -6,7 +6,7 @@ module RushJob
|
|
6
6
|
|
7
7
|
def sortable(column)
|
8
8
|
direction = column == sort_column && sort_direction == 'asc' ? 'desc' : 'asc'
|
9
|
-
link_to t(column), rush_job.
|
9
|
+
link_to t(column), rush_job.rush_jobs_path({ sort: column, direction: }), class: "link-#{invert_theme}"
|
10
10
|
end
|
11
11
|
|
12
12
|
def sort_arrow(column)
|
@@ -2,6 +2,9 @@ module RushJob
|
|
2
2
|
class RushJob < ApplicationRecord
|
3
3
|
self.table_name = 'delayed_jobs'
|
4
4
|
|
5
|
+
scope :locked_jobs, -> { where.not(locked_at: nil).order(locked_at: :desc) }
|
6
|
+
scope :queue_groups, -> { group(:queue, :priority).order(:priority).count }
|
7
|
+
|
5
8
|
def job_class
|
6
9
|
job_data[:job_class]
|
7
10
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="bs-component mb-1">
|
2
|
+
<nav class="navbar navbar-expand-lg bg-primary"
|
3
|
+
data-bs-theme="dark"
|
4
|
+
aria-label="Navigation">
|
5
|
+
<div class="container-fluid">
|
6
|
+
<%= link_to t(:delayed_title), root_path, class: "navbar-brand" %>
|
7
|
+
<button class="navbar-toggler"
|
8
|
+
type="button"
|
9
|
+
data-bs-toggle="collapse"
|
10
|
+
data-bs-target="#rush-job-navbar-links"
|
11
|
+
aria-controls="rush-job-navbar-links"
|
12
|
+
aria-expanded="false"
|
13
|
+
aria-label="Toggle navigation">
|
14
|
+
<span class="navbar-toggler-icon"></span>
|
15
|
+
</button>
|
16
|
+
|
17
|
+
<div class="collapse navbar-collapse" id="rush-job-navbar-links">
|
18
|
+
<ul class="navbar-nav me-auto">
|
19
|
+
<li class="nav-item">
|
20
|
+
<%= link_to t(:dashboard), root_path, class: "nav-link" %>
|
21
|
+
</li>
|
22
|
+
<li class="nav-item">
|
23
|
+
<%= link_to t(:jobs), rush_jobs_path, class: "nav-link" %>
|
24
|
+
</li>
|
25
|
+
<li class="nav-item">
|
26
|
+
<%= link_to t("#{invert_theme}_mode"), theme_path, class: "nav-link", method: :patch %>
|
27
|
+
</li>
|
28
|
+
</ul>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</nav>
|
32
|
+
</div>
|
@@ -11,6 +11,7 @@
|
|
11
11
|
<%= stylesheet_link_tag "rush_job/application", media: "all" %>
|
12
12
|
</head>
|
13
13
|
<body class="background-color-<%= current_theme %>">
|
14
|
+
<%= render 'layouts/rush_job/navbar' %>
|
14
15
|
<% flash.each do |type, msg| %>
|
15
16
|
<div class="alert alert-<%= invert_theme %>" role="alert">
|
16
17
|
<%= msg %>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
<div id="rush-job-jobs-container"
|
2
|
+
class="jobs-container"
|
3
|
+
role="main">
|
4
|
+
<div class="d-flex justify-content-left">
|
5
|
+
<h2 class="color-<%= invert_theme %>"><%= t :locked_jobs %></h2>
|
6
|
+
</div>
|
7
|
+
<div id="rush-job-dashboard-locked-jobs" class="mb-2 d-flex justify-content-left">
|
8
|
+
<div class="table-responsive">
|
9
|
+
<table class="table
|
10
|
+
table-bordered
|
11
|
+
table-striped
|
12
|
+
table-<%= current_theme %>">
|
13
|
+
<thead>
|
14
|
+
<tr>
|
15
|
+
<th><%= t :id %></th>
|
16
|
+
<th><%= t :locked_at %></th>
|
17
|
+
<th><%= t :locked_by %></th>
|
18
|
+
<th><%= t :job_class %></th>
|
19
|
+
<th><%= t :arguments %></th>
|
20
|
+
</tr>
|
21
|
+
</thead>
|
22
|
+
<tbody class="table-group-divider">
|
23
|
+
<% @locked_jobs.each do |job| %>
|
24
|
+
<tr>
|
25
|
+
<td><%= job.id %></td>
|
26
|
+
<td><%= job.locked_at %></td>
|
27
|
+
<td><%= job.locked_by %></td>
|
28
|
+
<td><%= job.job_class %></td>
|
29
|
+
<td><%= job.job_arguments %></td>
|
30
|
+
</tr>
|
31
|
+
<% end %>
|
32
|
+
</tbody>
|
33
|
+
</table>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<div id="rush-job-locked-job-pagination"
|
37
|
+
class="d-flex justify-content-left"
|
38
|
+
data-bs-theme="<%= current_theme %>">
|
39
|
+
<%== pagy_bootstrap_nav(@pagy_locked_jobs) if @pagy_locked_jobs.pages > 1 %>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div class="d-flex justify-content-left">
|
43
|
+
<h2 class="color-<%= invert_theme %>"><%= t :queues %></h2>
|
44
|
+
</div>
|
45
|
+
<div id="rush-job-dashboard-queues" class="d-flex justify-content-left">
|
46
|
+
<div class="table-responsive">
|
47
|
+
<table class="table
|
48
|
+
table-bordered
|
49
|
+
table-striped
|
50
|
+
table-<%= current_theme %>">
|
51
|
+
<thead>
|
52
|
+
<tr>
|
53
|
+
<th><%= t :name %></th>
|
54
|
+
<th><%= t :priority %></th>
|
55
|
+
<th><%= t :count %></th>
|
56
|
+
</tr>
|
57
|
+
</thead>
|
58
|
+
<tbody class="table-group-divider">
|
59
|
+
<% @job_queues.each do |queue| %>
|
60
|
+
<tr>
|
61
|
+
<td><%= queue[0] %></td>
|
62
|
+
<td><%= queue[1] %></td>
|
63
|
+
<td><%= @queue_groups[queue] %></td>
|
64
|
+
</tr>
|
65
|
+
<% end %>
|
66
|
+
</tbody>
|
67
|
+
</table>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
<div id="rush-job-locked-queue-pagination"
|
71
|
+
class="d-flex justify-content-left"
|
72
|
+
data-bs-theme="<%= current_theme %>">
|
73
|
+
<%== pagy_bootstrap_nav(@pagy_queue) if @pagy_queue.pages > 1 %>
|
74
|
+
</div>
|
75
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
document.getElementById('rush-job-jobs').innerHTML = "<%= j (render partial: 'dashboard_tables') %>"
|
@@ -1,8 +1,6 @@
|
|
1
|
-
<div
|
2
|
-
|
3
|
-
|
4
|
-
role="main"
|
5
|
-
>
|
1
|
+
<div id="rush-job-jobs-container"
|
2
|
+
class="jobs-container"
|
3
|
+
role="main">
|
6
4
|
<div class="table-responsive">
|
7
5
|
<table class="table
|
8
6
|
table-bordered
|
@@ -44,6 +42,6 @@
|
|
44
42
|
</div>
|
45
43
|
</div>
|
46
44
|
|
47
|
-
<div class="footer-container">
|
45
|
+
<div class="footer-container" data-bs-theme="<%= current_theme %>">
|
48
46
|
<%== pagy_bootstrap_nav(@pagy) if @pagy.pages > 1 %>
|
49
47
|
</div>
|
@@ -1,59 +1,5 @@
|
|
1
|
-
|
2
|
-
<div class="container text-center">
|
3
|
-
<div class="row align-items-center">
|
4
|
-
<div class="col-6" role="banner">
|
5
|
-
<h2 class="delayed_title">
|
6
|
-
<%= t :delayed_title %>
|
7
|
-
</h2>
|
8
|
-
</div>
|
9
|
-
<div class="col-3" data-controller="rush-job-reload-jobs-table">
|
10
|
-
<button class="btn btn-primary" data-action="click->rush-job-reload-jobs-table#reloadJobs"><%= t :reload %></button>
|
11
|
-
</div>
|
12
|
-
<div class="col-3">
|
13
|
-
<%= form_with url: theme_path, method: 'patch' do |form| %>
|
14
|
-
<%= form.button "#{invert_theme.titleize} Mode", class: "btn btn-#{invert_theme}" %>
|
15
|
-
<% end %>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
</div>
|
19
|
-
</div>
|
20
|
-
|
21
|
-
<div class="polling-container" data-controller="rush-job-polling">
|
22
|
-
<div class="row align-items-center">
|
23
|
-
<div class="col-3">
|
24
|
-
<label
|
25
|
-
for="rush-job-polling-range"
|
26
|
-
class="polling-range-form-label-<%= invert_theme %>"
|
27
|
-
data-rush-job-polling-target="pollingTimeLabel"
|
28
|
-
>
|
29
|
-
<%= t :polling_time %> 13 <%= t :polling_time_unit %>
|
30
|
-
</label>
|
31
|
-
<input
|
32
|
-
id="rush-job-polling-range"
|
33
|
-
type="range"
|
34
|
-
class="form-range"
|
35
|
-
min="0"
|
36
|
-
max="6"
|
37
|
-
data-rush-job-polling-target="pollingTime"
|
38
|
-
data-action="input->rush-job-polling#pollingChange"
|
39
|
-
>
|
40
|
-
</div>
|
41
|
-
<div class="col-3">
|
42
|
-
<div class="form-check form-switch">
|
43
|
-
<input
|
44
|
-
id="rush-job-polling"
|
45
|
-
class="form-check-input"
|
46
|
-
type="checkbox"
|
47
|
-
role="switch"
|
48
|
-
data-rush-job-polling-target="pollingSlide"
|
49
|
-
data-action="input->rush-job-polling#pollingToggle"
|
50
|
-
>
|
51
|
-
<label class="form-check-label-<%= invert_theme %>" for="rush-job-polling"><%= t :enable_polling %></label>
|
52
|
-
</div>
|
53
|
-
</div>
|
54
|
-
</div>
|
55
|
-
</div>
|
1
|
+
<%= render 'rush_job/shared/polling' %>
|
56
2
|
|
57
|
-
<div id="rush-job-jobs
|
3
|
+
<div id="rush-job-jobs">
|
58
4
|
<%= render 'jobs_table' %>
|
59
5
|
</div>
|
@@ -1 +1 @@
|
|
1
|
-
document.getElementById('rush-job-jobs
|
1
|
+
document.getElementById('rush-job-jobs').innerHTML = "<%= j (render partial: 'jobs_table') %>"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="polling-container" data-controller="rush-job-polling">
|
2
|
+
<div class="row align-items-center">
|
3
|
+
<div class="col-3">
|
4
|
+
<label for="rush-job-polling-range"
|
5
|
+
class="polling-range-form-label-<%= invert_theme %>"
|
6
|
+
data-rush-job-polling-target="pollingTimeLabel">
|
7
|
+
<%= t :polling_time %> 13 <%= t :polling_time_unit %>
|
8
|
+
</label>
|
9
|
+
<input id="rush-job-polling-range"
|
10
|
+
type="range"
|
11
|
+
class="form-range"
|
12
|
+
min="0"
|
13
|
+
max="6"
|
14
|
+
data-rush-job-polling-target="pollingTime"
|
15
|
+
data-action="input->rush-job-polling#pollingChange">
|
16
|
+
</div>
|
17
|
+
<div class="col-3">
|
18
|
+
<div class="form-check form-switch">
|
19
|
+
<input id="rush-job-polling"
|
20
|
+
class="form-check-input"
|
21
|
+
type="checkbox"
|
22
|
+
role="switch"
|
23
|
+
data-rush-job-polling-target="pollingSlide"
|
24
|
+
data-action="input->rush-job-polling#pollingToggle">
|
25
|
+
<label class="form-check-label-<%= invert_theme %>" for="rush-job-polling"><%= t :enable_polling %></label>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<div class="col-3" data-controller="rush-job-reload-jobs-table">
|
29
|
+
<button class="btn btn-primary" data-action="click->rush-job-reload-jobs-table#reloadJobs"><%= t :reload %></button>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
data/config/locales/en.yml
CHANGED
@@ -1,18 +1,26 @@
|
|
1
1
|
en:
|
2
2
|
arguments: "Arguments"
|
3
3
|
attempts: "Attempts"
|
4
|
-
|
4
|
+
count: "Count"
|
5
|
+
dark_mode: "Dark Mode"
|
6
|
+
dashboard: "Dashboard"
|
7
|
+
delayed_title: "Delayed Jobs"
|
5
8
|
enable_polling: "Enable polling"
|
6
9
|
failed_at: "Failed at"
|
7
10
|
id: "Id"
|
8
11
|
invalid_page_notice: "No jobs on that page, redirected to first page."
|
9
12
|
job_class: "Job class"
|
13
|
+
jobs: "Jobs"
|
10
14
|
last_error: "Last error"
|
15
|
+
light_mode: "Light Mode"
|
11
16
|
locked_at: "Locked at"
|
12
17
|
locked_by: "Locked by"
|
18
|
+
locked_jobs: "Locked Jobs"
|
19
|
+
name: "Name"
|
13
20
|
polling_time: "Polling time:"
|
14
21
|
polling_time_unit: "seconds"
|
15
22
|
priority: "Priority"
|
16
23
|
queue: "Queue"
|
24
|
+
queues: "Queues"
|
17
25
|
reload: "Reload"
|
18
|
-
run_at: "Run at"
|
26
|
+
run_at: "Run at"
|
data/config/routes.rb
CHANGED
data/lib/rush_job/engine.rb
CHANGED
data/lib/rush_job/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rush_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JavaKoala
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|
@@ -212,28 +212,28 @@ dependencies:
|
|
212
212
|
requirements:
|
213
213
|
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: '2.
|
215
|
+
version: '2.21'
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
220
|
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version: '2.
|
222
|
+
version: '2.21'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: selenium-webdriver
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
227
|
- - "~>"
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version: '4.
|
229
|
+
version: '4.12'
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
234
|
- - "~>"
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version: '4.
|
236
|
+
version: '4.12'
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: simplecov
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -296,21 +296,30 @@ files:
|
|
296
296
|
- app/assets/javascript/rush_job/controllers/rush_job_reload_jobs_table_controller.js
|
297
297
|
- app/assets/javascript/rush_job/controllers/rush_job_table_update_controller.js
|
298
298
|
- app/assets/stylesheets/rush_job/application.scss
|
299
|
-
- app/assets/stylesheets/rush_job/
|
299
|
+
- app/assets/stylesheets/rush_job/components/_pagination.scss
|
300
|
+
- app/assets/stylesheets/rush_job/components/_polling.scss
|
301
|
+
- app/assets/stylesheets/rush_job/pages/_rush_jobs_index.scss
|
300
302
|
- app/assets/stylesheets/rush_job/themes/_dark.scss
|
301
303
|
- app/assets/stylesheets/rush_job/themes/_light.scss
|
302
304
|
- app/controllers/rush_job/application_controller.rb
|
305
|
+
- app/controllers/rush_job/dashboard_controller.rb
|
303
306
|
- app/controllers/rush_job/rush_jobs_controller.rb
|
304
307
|
- app/controllers/rush_job/themes_controller.rb
|
305
308
|
- app/helpers/rush_job/application_helper.rb
|
309
|
+
- app/helpers/rush_job/dashboard_helper.rb
|
306
310
|
- app/helpers/rush_job/rush_jobs_helper.rb
|
307
311
|
- app/helpers/rush_job/sort_helper.rb
|
308
312
|
- app/models/rush_job/application_record.rb
|
309
313
|
- app/models/rush_job/rush_job.rb
|
314
|
+
- app/views/layouts/rush_job/_navbar.html.erb
|
310
315
|
- app/views/layouts/rush_job/application.html.erb
|
316
|
+
- app/views/rush_job/dashboard/_dashboard_tables.html.erb
|
317
|
+
- app/views/rush_job/dashboard/index.html.erb
|
318
|
+
- app/views/rush_job/dashboard/index.js.erb
|
311
319
|
- app/views/rush_job/rush_jobs/_jobs_table.html.erb
|
312
320
|
- app/views/rush_job/rush_jobs/index.html.erb
|
313
321
|
- app/views/rush_job/rush_jobs/index.js.erb
|
322
|
+
- app/views/rush_job/shared/_polling.html.erb
|
314
323
|
- config/importmap.rb
|
315
324
|
- config/locales/en.yml
|
316
325
|
- config/routes.rb
|
@@ -1,62 +0,0 @@
|
|
1
|
-
.header-container {
|
2
|
-
background-color: #d3d3d3;
|
3
|
-
border-radius: 10px;
|
4
|
-
margin-top: 1em;
|
5
|
-
margin-bottom: 1em;
|
6
|
-
margin-left: 5%;
|
7
|
-
margin-right: 5%;
|
8
|
-
}
|
9
|
-
|
10
|
-
.delayed_title {
|
11
|
-
margin-top: 0.5rem;
|
12
|
-
}
|
13
|
-
|
14
|
-
.polling-container {
|
15
|
-
margin-left: 5%;
|
16
|
-
margin-right: 5%;
|
17
|
-
}
|
18
|
-
|
19
|
-
.polling-range-form-label-dark {
|
20
|
-
color: rgb(0, 0, 0);
|
21
|
-
margin-bottom: 0.5rem;
|
22
|
-
}
|
23
|
-
|
24
|
-
.polling-range-form-label-light {
|
25
|
-
color: rgb(255, 255, 255);
|
26
|
-
margin-bottom: 0.5rem;
|
27
|
-
}
|
28
|
-
|
29
|
-
.form-check-label-dark {
|
30
|
-
color: rgb(0, 0, 0);
|
31
|
-
}
|
32
|
-
|
33
|
-
.form-check-label-light {
|
34
|
-
color: rgb(255, 255, 255);
|
35
|
-
}
|
36
|
-
|
37
|
-
.jobs-container {
|
38
|
-
margin-left: 5%;
|
39
|
-
margin-right: 5%;
|
40
|
-
}
|
41
|
-
|
42
|
-
.footer-container {
|
43
|
-
margin-left: 5%;
|
44
|
-
margin-right: 5%;
|
45
|
-
float: right;
|
46
|
-
}
|
47
|
-
|
48
|
-
.page-link.disabled, .disabled > .page-link {
|
49
|
-
color: rgb(68, 110, 155);
|
50
|
-
}
|
51
|
-
|
52
|
-
.page-item:first-child .page-link {
|
53
|
-
color: rgb(68, 110, 155);
|
54
|
-
}
|
55
|
-
|
56
|
-
.page-item:last-child .page-link {
|
57
|
-
color: rgb(68, 110, 155);
|
58
|
-
}
|
59
|
-
|
60
|
-
.table-refresh {
|
61
|
-
opacity: 0.3;
|
62
|
-
}
|