sidekiq 8.0.8 → 8.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.
- checksums.yaml +4 -4
- data/Changes.md +42 -0
- data/README.md +15 -0
- data/bin/lint-herb +13 -0
- data/lib/generators/sidekiq/templates/job.rb.erb +1 -1
- data/lib/sidekiq/api.rb +28 -5
- data/lib/sidekiq/capsule.rb +4 -0
- data/lib/sidekiq/cli.rb +16 -4
- data/lib/sidekiq/config.rb +8 -2
- data/lib/sidekiq/fetch.rb +1 -0
- data/lib/sidekiq/job/iterable.rb +2 -2
- data/lib/sidekiq/job.rb +2 -0
- data/lib/sidekiq/job_logger.rb +4 -2
- data/lib/sidekiq/job_retry.rb +7 -3
- data/lib/sidekiq/launcher.rb +18 -9
- data/lib/sidekiq/middleware/i18n.rb +2 -0
- data/lib/sidekiq/monitor.rb +4 -8
- data/lib/sidekiq/profiler.rb +1 -0
- data/lib/sidekiq/redis_connection.rb +2 -2
- data/lib/sidekiq/ring_buffer.rb +1 -0
- data/lib/sidekiq/scheduled.rb +7 -5
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/action.rb +1 -1
- data/lib/sidekiq/web/application.rb +10 -0
- data/lib/sidekiq/web/config.rb +3 -6
- data/lib/sidekiq/web/helpers.rb +3 -11
- data/lib/sidekiq/web.rb +23 -4
- data/sidekiq.gemspec +5 -5
- data/web/assets/javascripts/application.js +17 -1
- data/web/assets/stylesheets/style.css +17 -2
- data/web/locales/ar.yml +1 -0
- data/web/locales/cs.yml +1 -0
- data/web/locales/da.yml +1 -0
- data/web/locales/de.yml +1 -0
- data/web/locales/el.yml +1 -0
- data/web/locales/en.yml +1 -0
- data/web/locales/es.yml +1 -0
- data/web/locales/fa.yml +1 -0
- data/web/locales/fr.yml +2 -1
- data/web/locales/gd.yml +1 -0
- data/web/locales/he.yml +1 -0
- data/web/locales/hi.yml +1 -0
- data/web/locales/it.yml +1 -0
- data/web/locales/ja.yml +1 -0
- data/web/locales/ko.yml +1 -0
- data/web/locales/lt.yml +1 -0
- data/web/locales/nb.yml +1 -0
- data/web/locales/nl.yml +1 -0
- data/web/locales/pl.yml +1 -0
- data/web/locales/pt-BR.yml +1 -0
- data/web/locales/pt.yml +1 -0
- data/web/locales/ru.yml +1 -0
- data/web/locales/sv.yml +1 -0
- data/web/locales/ta.yml +1 -0
- data/web/locales/tr.yml +1 -0
- data/web/locales/uk.yml +1 -0
- data/web/locales/ur.yml +1 -0
- data/web/locales/vi.yml +1 -0
- data/web/locales/zh-CN.yml +1 -0
- data/web/locales/zh-TW.yml +1 -0
- data/web/views/{_footer.erb → _footer.html.erb} +1 -1
- data/web/views/{_metrics_period_select.erb → _metrics_period_select.html.erb} +1 -1
- data/web/views/{_paging.erb → _paging.html.erb} +0 -1
- data/web/views/_poll_link.html.erb +4 -0
- data/web/views/{busy.erb → busy.html.erb} +4 -8
- data/web/views/{dashboard.erb → dashboard.html.erb} +3 -3
- data/web/views/{dead.erb → dead.html.erb} +3 -3
- data/web/views/filtering.html.erb +6 -0
- data/web/views/{layout.erb → layout.html.erb} +7 -7
- data/web/views/{metrics.erb → metrics.html.erb} +9 -8
- data/web/views/{morgue.erb → morgue.html.erb} +8 -4
- data/web/views/{queue.erb → queue.html.erb} +2 -2
- data/web/views/{queues.erb → queues.html.erb} +4 -4
- data/web/views/{retries.erb → retries.html.erb} +9 -5
- data/web/views/{retry.erb → retry.html.erb} +2 -2
- data/web/views/{scheduled.erb → scheduled.html.erb} +8 -4
- data/web/views/{scheduled_job_info.erb → scheduled_job_info.html.erb} +2 -2
- metadata +34 -34
- data/lib/sidekiq/web/csrf_protection.rb +0 -183
- data/web/views/_poll_link.erb +0 -4
- data/web/views/filtering.erb +0 -6
- /data/web/views/{_job_info.erb → _job_info.html.erb} +0 -0
- /data/web/views/{_nav.erb → _nav.html.erb} +0 -0
- /data/web/views/{_summary.erb → _summary.html.erb} +0 -0
- /data/web/views/{metrics_for_job.erb → metrics_for_job.html.erb} +0 -0
- /data/web/views/{profiles.erb → profiles.html.erb} +0 -0
data/lib/sidekiq/web.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Sidekiq
|
|
|
13
13
|
ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../web")
|
|
14
14
|
VIEWS = "#{ROOT}/views"
|
|
15
15
|
LOCALES = ["#{ROOT}/locales"]
|
|
16
|
-
LAYOUT = "#{VIEWS}/layout.erb"
|
|
16
|
+
LAYOUT = "#{VIEWS}/layout.html.erb"
|
|
17
17
|
ASSETS = "#{ROOT}/assets"
|
|
18
18
|
|
|
19
19
|
DEFAULT_TABS = {
|
|
@@ -42,6 +42,12 @@ module Sidekiq
|
|
|
42
42
|
@@config.app_url = url
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
+
def assets_path=(path)
|
|
46
|
+
@@config.assets_path = path
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def assets_path = @@config.assets_path
|
|
50
|
+
|
|
45
51
|
def tabs = @@config.tabs
|
|
46
52
|
|
|
47
53
|
def locales = @@config.locales
|
|
@@ -87,13 +93,27 @@ module Sidekiq
|
|
|
87
93
|
env[:web_config] = Sidekiq::Web.configure
|
|
88
94
|
env[:csp_nonce] = SecureRandom.hex(8)
|
|
89
95
|
env[:redis_pool] = self.class.redis_pool
|
|
90
|
-
app.call(env)
|
|
96
|
+
safe_request?(env) ? app.call(env) : deny(env)
|
|
91
97
|
end
|
|
92
98
|
|
|
93
99
|
def app
|
|
94
100
|
@app ||= build(@@config)
|
|
95
101
|
end
|
|
96
102
|
|
|
103
|
+
def safe_methods?(env)
|
|
104
|
+
%w[GET HEAD OPTIONS TRACE].include? env["REQUEST_METHOD"]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def safe_request?(env)
|
|
108
|
+
return true if safe_methods?(env)
|
|
109
|
+
env["HTTP_SEC_FETCH_SITE"] == "same-origin"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def deny(env)
|
|
113
|
+
Sidekiq.logger.warn "attack prevented by #{self.class}"
|
|
114
|
+
[403, {Rack::CONTENT_TYPE => "text/plain"}, ["Forbidden"]]
|
|
115
|
+
end
|
|
116
|
+
|
|
97
117
|
private
|
|
98
118
|
|
|
99
119
|
def build(cfg)
|
|
@@ -105,11 +125,10 @@ module Sidekiq
|
|
|
105
125
|
|
|
106
126
|
::Rack::Builder.new do
|
|
107
127
|
use Rack::Static, urls: ["/stylesheets", "/images", "/javascripts"],
|
|
108
|
-
root:
|
|
128
|
+
root: cfg.assets_path,
|
|
109
129
|
cascade: true,
|
|
110
130
|
header_rules: rules
|
|
111
131
|
m.each { |middleware, block| use(*middleware, &block) }
|
|
112
|
-
use CsrfProtection if cfg[:csrf]
|
|
113
132
|
run Sidekiq::Web::Application.new(self.class)
|
|
114
133
|
end
|
|
115
134
|
end
|
data/sidekiq.gemspec
CHANGED
|
@@ -23,9 +23,9 @@ Gem::Specification.new do |gem|
|
|
|
23
23
|
"rubygems_mfa_required" => "true"
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
gem.add_dependency "redis-client", ">= 0.
|
|
27
|
-
gem.add_dependency "connection_pool", ">=
|
|
28
|
-
gem.add_dependency "rack", ">= 3.
|
|
29
|
-
gem.add_dependency "json", ">= 2.
|
|
30
|
-
gem.add_dependency "logger", ">= 1.
|
|
26
|
+
gem.add_dependency "redis-client", ">= 0.26.0"
|
|
27
|
+
gem.add_dependency "connection_pool", ">= 3.0.0"
|
|
28
|
+
gem.add_dependency "rack", ">= 3.2.0"
|
|
29
|
+
gem.add_dependency "json", ">= 2.16.0"
|
|
30
|
+
gem.add_dependency "logger", ">= 1.7.0"
|
|
31
31
|
end
|
|
@@ -22,6 +22,7 @@ function addListeners() {
|
|
|
22
22
|
node.addEventListener("click", addDataToggleListeners)
|
|
23
23
|
})
|
|
24
24
|
|
|
25
|
+
initializeBulkToggle();
|
|
25
26
|
addShiftClickListeners();
|
|
26
27
|
updateFuzzyTimes();
|
|
27
28
|
updateNumbers();
|
|
@@ -63,6 +64,21 @@ function addDataToggleListeners(event) {
|
|
|
63
64
|
full.classList.toggle("is-open");
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
function toggleBulkButtons() {
|
|
68
|
+
const checkboxes = document.querySelectorAll('.select-item-checkbox, .check-all-items');
|
|
69
|
+
const anyChecked = Array.from(checkboxes).some(cb => cb.checked);
|
|
70
|
+
const buttons = document.querySelectorAll('.bulk-action-buttons');
|
|
71
|
+
buttons.forEach(btn => {
|
|
72
|
+
btn.style.display = anyChecked ? 'none' : 'block';
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function initializeBulkToggle(){
|
|
77
|
+
document.querySelectorAll('.check-all-items, .select-item-checkbox').forEach(cb => {
|
|
78
|
+
cb.addEventListener('change', toggleBulkButtons);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
66
82
|
function addShiftClickListeners() {
|
|
67
83
|
let checkboxes = Array.from(document.querySelectorAll(".shift_clickable"));
|
|
68
84
|
let lastChecked = null;
|
|
@@ -174,7 +190,7 @@ function updateProgressBars() {
|
|
|
174
190
|
function handleConfirmDialog (event) {
|
|
175
191
|
const target = event.target
|
|
176
192
|
|
|
177
|
-
if (target.localName !== "input") { return }
|
|
193
|
+
if (target.localName !== "input" && target.localName !== "button" ) { return }
|
|
178
194
|
const confirmMessage = target.dataset.confirm
|
|
179
195
|
|
|
180
196
|
if (confirmMessage === undefined) { return }
|
|
@@ -448,12 +448,14 @@ canvas + .table_container {
|
|
|
448
448
|
}
|
|
449
449
|
|
|
450
450
|
.buttons-row {
|
|
451
|
-
margin-top: var(--space-3x);
|
|
452
451
|
display: flex;
|
|
453
|
-
flex-wrap: wrap;
|
|
454
452
|
gap: 8px;
|
|
455
453
|
}
|
|
456
454
|
|
|
455
|
+
.bulk-action-buttons.bulk-lead-button {
|
|
456
|
+
margin-inline-start: auto;
|
|
457
|
+
}
|
|
458
|
+
|
|
457
459
|
table {
|
|
458
460
|
background-color: var(--color-elevated);
|
|
459
461
|
border: 1px solid var(--color-border);
|
|
@@ -757,3 +759,16 @@ body > footer .nav {
|
|
|
757
759
|
padding: 20px;
|
|
758
760
|
background: var(--color-success);
|
|
759
761
|
}
|
|
762
|
+
|
|
763
|
+
.args {
|
|
764
|
+
overflow-y: auto;
|
|
765
|
+
max-height: 50px;
|
|
766
|
+
word-break: break-word
|
|
767
|
+
}
|
|
768
|
+
.args-extended {
|
|
769
|
+
overflow-y: scroll;
|
|
770
|
+
max-height: 500px;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
.toggle { display: none; }
|
|
774
|
+
.toggle.is-open { display: block; }
|
data/web/locales/ar.yml
CHANGED
data/web/locales/cs.yml
CHANGED
|
@@ -3,6 +3,7 @@ cs:
|
|
|
3
3
|
LanguageName: Čeština
|
|
4
4
|
Actions: Akce
|
|
5
5
|
AddToQueue: Přidat do fronty
|
|
6
|
+
AddAllToQueue: Přidat vše do fronty
|
|
6
7
|
AreYouSure: Jste si jisti?
|
|
7
8
|
AreYouSureDeleteJob: Jste si jisti, že chcete odstranit tento úkol?
|
|
8
9
|
AreYouSureDeleteQueue: Jste si jisti, že chcete odstranit frontu %{queue}?
|
data/web/locales/da.yml
CHANGED
|
@@ -3,6 +3,7 @@ da:
|
|
|
3
3
|
LanguageName: Dansk
|
|
4
4
|
Actions: Handlinger
|
|
5
5
|
AddToQueue: Tilføj til kø
|
|
6
|
+
AddAllToQueue: Tilføj alle til kø
|
|
6
7
|
AreYouSure: Er du sikker?
|
|
7
8
|
AreYouSureDeleteJob: Er du sikker på at du vil slette dette job?
|
|
8
9
|
AreYouSureDeleteQueue: Er du sikker på at du vil slette %{queue} køen?
|
data/web/locales/de.yml
CHANGED
|
@@ -3,6 +3,7 @@ de:
|
|
|
3
3
|
LanguageName: Deutsch
|
|
4
4
|
Actions: Aktionen
|
|
5
5
|
AddToQueue: In Warteschlange einreihen
|
|
6
|
+
AddAllToQueue: Alle in Warteschlange einreihen
|
|
6
7
|
AreYouSure: Bist du sicher?
|
|
7
8
|
AreYouSureDeleteJob: Möchtest du diesen Job wirklich löschen?
|
|
8
9
|
AreYouSureDeleteQueue: Möchtest du %{queue} wirklich löschen?
|
data/web/locales/el.yml
CHANGED
|
@@ -26,6 +26,7 @@ el: # <---- change this to your locale code
|
|
|
26
26
|
ShowAll: Εμφάνιση Όλων
|
|
27
27
|
Enqueued: Μπήκαν στην στοίβα
|
|
28
28
|
AddToQueue: Προσθήκη στην στοίβα
|
|
29
|
+
AddAllToQueue: Προσθήκη όλων στην στοίβα
|
|
29
30
|
AreYouSureDeleteJob: Θέλετε να διαγράψετε αυτή την εργασία;
|
|
30
31
|
AreYouSureDeleteQueue: Θέλετε να διαγράψετε την στοίβα %{queue}; Αυτό θα διαγράψει όλες τις εργασίες εντός της στοίβας, θα εμφανιστεί ξανά εάν προωθήσετε περισσότερες εργασίες σε αυτήν στο μέλλον.
|
|
31
32
|
Queues: Στοίβες
|
data/web/locales/en.yml
CHANGED
|
@@ -3,6 +3,7 @@ en:
|
|
|
3
3
|
LanguageName: English
|
|
4
4
|
Actions: Actions
|
|
5
5
|
AddToQueue: Add to queue
|
|
6
|
+
AddAllToQueue: Add All to Queue
|
|
6
7
|
AreYouSure: Are you sure?
|
|
7
8
|
AreYouSureDeleteJob: Are you sure you want to delete this job?
|
|
8
9
|
AreYouSureDeleteQueue: Are you sure you want to delete the %{queue} queue? This will delete all jobs within the queue, it will reappear if you push more jobs to it in the future.
|
data/web/locales/es.yml
CHANGED
|
@@ -3,6 +3,7 @@ es:
|
|
|
3
3
|
LanguageName: Español
|
|
4
4
|
Actions: Acciones
|
|
5
5
|
AddToQueue: Añadir a la cola
|
|
6
|
+
AddAllToQueue: Añadir todo a la cola
|
|
6
7
|
AreYouSure: ¿Estás seguro?
|
|
7
8
|
AreYouSureDeleteJob: ¿Estás seguro de eliminar este trabajo?
|
|
8
9
|
AreYouSureDeleteQueue: ¿Estás seguro de eliminar la cola %{queue}?
|
data/web/locales/fa.yml
CHANGED
data/web/locales/fr.yml
CHANGED
|
@@ -3,11 +3,12 @@ fr:
|
|
|
3
3
|
LanguageName: Français
|
|
4
4
|
Actions: Actions
|
|
5
5
|
AddToQueue: Ajouter à la queue
|
|
6
|
+
AddAllToQueue: Ajouter tout à la queue
|
|
6
7
|
AreYouSure: Êtes-vous certain ?
|
|
7
8
|
AreYouSureDeleteJob: Êtes-vous certain de vouloir supprimer cette tâche ?
|
|
8
9
|
AreYouSureDeleteQueue: Êtes-vous certain de vouloir supprimer la queue %{queue} ?
|
|
9
10
|
Arguments: Arguments
|
|
10
|
-
|
|
11
|
+
BackToApp: Retour à l'application
|
|
11
12
|
Busy: En cours
|
|
12
13
|
Class: Classe
|
|
13
14
|
Connections: Connexions
|
data/web/locales/gd.yml
CHANGED
|
@@ -3,6 +3,7 @@ gd:
|
|
|
3
3
|
LanguageName: Gaeilge
|
|
4
4
|
Actions: Gnìomhan
|
|
5
5
|
AddToQueue: Cuir ris a’ chiutha
|
|
6
|
+
AddAllToQueue: Cuir a h-uile ris a’ chiutha
|
|
6
7
|
AreYouSure: A bheil thu cinnteach?
|
|
7
8
|
AreYouSureDeleteJob: A bheil thu cinnteach gu bheil thu airson an obair seo a sguabadh às?
|
|
8
9
|
AreYouSureDeleteQueue: A bheil thu cinnteach gu bheil thu airson ciutha %{queue} a sguabadh às? Sguabaidh seo às gach obair sa chiutha seo, nochdaidh e a-rithist nuair a phutas tu barrachd obraichean dha an uairsin.
|
data/web/locales/he.yml
CHANGED
data/web/locales/hi.yml
CHANGED
|
@@ -3,6 +3,7 @@ hi:
|
|
|
3
3
|
LanguageName: हिन्दी
|
|
4
4
|
Actions: कार्रवाई
|
|
5
5
|
AddToQueue: कतार मे जोड़ें
|
|
6
|
+
AddAllToQueue: सभी को कतार मे जोड़ें
|
|
6
7
|
AreYouSure: क्या आपको यकीन है?
|
|
7
8
|
AreYouSureDeleteJob: क्या आप इस कार्य को हटाना चाहते है?
|
|
8
9
|
AreYouSureDeleteQueue: क्या आप %{queue} कतार को हटाना चाहते है?
|
data/web/locales/it.yml
CHANGED
|
@@ -3,6 +3,7 @@ it:
|
|
|
3
3
|
LanguageName: Italiano
|
|
4
4
|
Actions: Azioni
|
|
5
5
|
AddToQueue: Aggiungi alla coda
|
|
6
|
+
AddAllToQueue: Aggiungi tutto alla coda
|
|
6
7
|
AreYouSure: Sei sicuro?
|
|
7
8
|
AreYouSureDeleteJob: Sei sicuro di voler cancellare questo lavoro?
|
|
8
9
|
AreYouSureDeleteQueue: Sei sicuro di voler cancellare la coda %{queue}?
|
data/web/locales/ja.yml
CHANGED
data/web/locales/ko.yml
CHANGED
data/web/locales/lt.yml
CHANGED
|
@@ -3,6 +3,7 @@ lt:
|
|
|
3
3
|
LanguageName: Lietuvių
|
|
4
4
|
Actions: Veiksmai
|
|
5
5
|
AddToQueue: Pridėti į eilę
|
|
6
|
+
AddAllToQueue: Pridėti viską į eilę
|
|
6
7
|
AreYouSure: Ar jūs įsitikinę?
|
|
7
8
|
AreYouSureDeleteJob: Ar tikrai norite pašalinti šį darbą?
|
|
8
9
|
AreYouSureDeleteQueue: Ar tikrai norite pašalinti šią eilę %{queue}?
|
data/web/locales/nb.yml
CHANGED
|
@@ -3,6 +3,7 @@ nb:
|
|
|
3
3
|
LanguageName: Norsk
|
|
4
4
|
Actions: Handlinger
|
|
5
5
|
AddToQueue: Legg til i kø
|
|
6
|
+
AddAllToQueue: Legg alt til i kø
|
|
6
7
|
AreYouSure: Er du sikker?
|
|
7
8
|
AreYouSureDeleteJob: Er du sikker på at du vil slette denne jobben?
|
|
8
9
|
AreYouSureDeleteQueue: Er du sikker på at du vil slette køen %{queue}?
|
data/web/locales/nl.yml
CHANGED
|
@@ -3,6 +3,7 @@ nl:
|
|
|
3
3
|
LanguageName: Nederlands
|
|
4
4
|
Actions: Acties
|
|
5
5
|
AddToQueue: Toevoegen aan wachtrij
|
|
6
|
+
AddAllToQueue: Alles toevoegen aan wachtrij
|
|
6
7
|
AreYouSure: Weet u het zeker?
|
|
7
8
|
AreYouSureDeleteJob: Weet u zeker dat u deze taak wilt verwijderen?
|
|
8
9
|
AreYouSureDeleteQueue: Weet u zeker dat u wachtrij %{queue} wilt verwijderen?
|
data/web/locales/pl.yml
CHANGED
data/web/locales/pt-BR.yml
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
LanguageName: Português (Brasil)
|
|
3
3
|
Actions: Ações
|
|
4
4
|
AddToQueue: Adicionar à fila
|
|
5
|
+
AddAllToQueue: Adicionar tudo à fila
|
|
5
6
|
AreYouSure: Tem certeza?
|
|
6
7
|
AreYouSureDeleteJob: Deseja deletar esta tarefa?
|
|
7
8
|
AreYouSureDeleteQueue: Deseja deletar a fila %{queue}? Isso irá deletar todas as tarefas desta fila.
|
data/web/locales/pt.yml
CHANGED
|
@@ -3,6 +3,7 @@ pt:
|
|
|
3
3
|
LanguageName: Português
|
|
4
4
|
Actions: Acções
|
|
5
5
|
AddToQueue: Adicionar à fila
|
|
6
|
+
AddAllToQueue: Adicionar tudo à fila
|
|
6
7
|
AreYouSure: Tem a certeza?
|
|
7
8
|
AreYouSureDeleteJob: Tem a certeza que deseja eliminar esta tarefa?
|
|
8
9
|
AreYouSureDeleteQueue: Tem a certeza que deseja eliminar a fila %{queue}?
|
data/web/locales/ru.yml
CHANGED
|
@@ -3,6 +3,7 @@ ru:
|
|
|
3
3
|
LanguageName: Русский
|
|
4
4
|
Actions: Действия
|
|
5
5
|
AddToQueue: Добавить в очередь
|
|
6
|
+
AddAllToQueue: Добавить все в очередь
|
|
6
7
|
AreYouSure: Вы уверены?
|
|
7
8
|
AreYouSureDeleteJob: Вы уверены, что хотите удалить эту задачу?
|
|
8
9
|
AreYouSureDeleteQueue: Вы уверены, что хотите удалить очередь %{queue}?
|
data/web/locales/sv.yml
CHANGED
|
@@ -3,6 +3,7 @@ sv:
|
|
|
3
3
|
LanguageName: Svenska
|
|
4
4
|
Actions: Åtgärder
|
|
5
5
|
AddToQueue: Lägg till i kö
|
|
6
|
+
AddAllToQueue: Lägg till allt i kö
|
|
6
7
|
AreYouSure: Är du säker?
|
|
7
8
|
AreYouSureDeleteJob: Är du säker på att du vill ta bort detta jobb?
|
|
8
9
|
AreYouSureDeleteQueue: Är du säker på att du vill ta bort kön %{queue}?
|
data/web/locales/ta.yml
CHANGED
|
@@ -3,6 +3,7 @@ ta:
|
|
|
3
3
|
LanguageName: தமிழ்
|
|
4
4
|
Actions: செயல்கள்
|
|
5
5
|
AddToQueue: வரிசையில் சேர்
|
|
6
|
+
AddAllToQueue: அனைத்தையும் வரிசையில் சேர்
|
|
6
7
|
AreYouSure: நீங்கள் உறுதியாக இருக்கிறீர்களா?
|
|
7
8
|
AreYouSureDeleteJob: நீ இந்த வேலையை நீக்க வேண்டும் என்று உறுதியாக இருக்கிறீர்களா?
|
|
8
9
|
AreYouSureDeleteQueue: நீங்கள் %{queue} வரிசையில் நீக்க வேண்டும் என்பதில் உறுதியாக இருக்கிறீர்களா?
|
data/web/locales/tr.yml
CHANGED
|
@@ -3,6 +3,7 @@ tr:
|
|
|
3
3
|
LanguageName: Türkçe
|
|
4
4
|
Actions: Eylemler
|
|
5
5
|
AddToQueue: Kuyruğa ekle
|
|
6
|
+
AddAllToQueue: Hepsini kuyruğa ekle
|
|
6
7
|
AreYouSure: Emin misiniz?
|
|
7
8
|
AreYouSureDeleteJob: Bu işi silmek istediğinizden emin misiniz?
|
|
8
9
|
AreYouSureDeleteQueue: "%{queue} kuyruğunu silmek istediğinizden emin misiniz?"
|
data/web/locales/uk.yml
CHANGED
|
@@ -3,6 +3,7 @@ uk:
|
|
|
3
3
|
LanguageName: Українська
|
|
4
4
|
Actions: Дії
|
|
5
5
|
AddToQueue: Додати до черги
|
|
6
|
+
AddAllToQueue: Додати все до черги
|
|
6
7
|
AreYouSure: Ви впевнені?
|
|
7
8
|
AreYouSureDeleteJob: Ви впевнені у тому, що хочете видалити задачу?
|
|
8
9
|
AreYouSureDeleteQueue: Ви впевнені у тому, що хочете видалити чергу %{queue}?
|
data/web/locales/ur.yml
CHANGED
data/web/locales/vi.yml
CHANGED
|
@@ -3,6 +3,7 @@ vi:
|
|
|
3
3
|
LanguageName: Tiếng Việt
|
|
4
4
|
Actions: Những hành động
|
|
5
5
|
AddToQueue: Thêm vào hàng đợi
|
|
6
|
+
AddAllToQueue: Thêm tất cả vào hàng đợi
|
|
6
7
|
AreYouSure: Bạn chắc chứ?
|
|
7
8
|
AreYouSureDeleteJob: Bạn có chắc là muốn xóa tác vụ này?
|
|
8
9
|
AreYouSureDeleteQueue: Bạn có chắc là muốn xóa %{queue} này?
|
data/web/locales/zh-CN.yml
CHANGED
data/web/locales/zh-TW.yml
CHANGED
|
@@ -27,6 +27,7 @@ zh-TW: # <---- change this to your locale code
|
|
|
27
27
|
CurrentMessagesInQueue: 目前在<span class='title'>%{queue}</span>的工作
|
|
28
28
|
Delete: 刪除
|
|
29
29
|
AddToQueue: 增加至佇列
|
|
30
|
+
AddAllToQueue: 增加所有至佇列
|
|
30
31
|
AreYouSureDeleteJob: 確定要刪除這個工作嗎?
|
|
31
32
|
AreYouSureDeleteQueue: 確定要刪除%{queue}佇列?這會刪除佇列裡的所有工作,佇列將會在有新工作時重新出現。
|
|
32
33
|
Queues: 佇列
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<p id="serverUtcTime"><%= server_utc_time %></p>
|
|
12
12
|
</li>
|
|
13
13
|
<li>
|
|
14
|
-
<p><a rel=help href="https://github.com/sidekiq/sidekiq/wiki">docs</a></p>
|
|
14
|
+
<p><a rel="help" href="https://github.com/sidekiq/sidekiq/wiki">docs</a></p>
|
|
15
15
|
</li>
|
|
16
16
|
<li>
|
|
17
17
|
<form id="locale-form" action="<%= root_path %>change_locale" method="post">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div class="filter">
|
|
2
2
|
<form id="metrics-form" class="form-inline" action="<%= path %>" method="get">
|
|
3
3
|
<label for="substr"><%= t('Filter') %></label>
|
|
4
|
-
<input id="class-filter" class="form-control" type="text" name="substr" placeholder="<%= t('Name') %>" value="<%= h url_params("substr") %>">
|
|
4
|
+
<input id="class-filter" class="form-control" type="text" name="substr" placeholder="<%= t('Name') %>" value="<%= h url_params("substr") %>" autocomplete="off">
|
|
5
5
|
<select id="period-selector" class="form-control" name="period">
|
|
6
6
|
<% periods.each_key do |code| %>
|
|
7
7
|
<% if code == period %>
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
<form method="POST" class="filter warning-messages">
|
|
34
34
|
<%= csrf_tag %>
|
|
35
35
|
<div class="btn-group pull-right flip">
|
|
36
|
-
<input class="btn btn-warn" type="submit" name="quiet" value="<%= t('QuietAll') %>" data-confirm="<%= t('AreYouSure') %>"
|
|
37
|
-
<input class="btn btn-danger" type="submit" name="stop" value="<%= t('StopAll') %>" data-confirm="<%= t('AreYouSure') %>"
|
|
36
|
+
<input class="btn btn-warn" type="submit" name="quiet" value="<%= t('QuietAll') %>" data-confirm="<%= t('AreYouSure') %>">
|
|
37
|
+
<input class="btn btn-danger" type="submit" name="stop" value="<%= t('StopAll') %>" data-confirm="<%= t('AreYouSure') %>">
|
|
38
38
|
</div>
|
|
39
39
|
</form>
|
|
40
40
|
</header>
|
|
@@ -69,11 +69,7 @@
|
|
|
69
69
|
<% end %>
|
|
70
70
|
<br>
|
|
71
71
|
<b><%= "#{t('Queues')}: " %></b>
|
|
72
|
-
|
|
73
|
-
<%= busy_weights(process.weights) %>
|
|
74
|
-
<% else %>
|
|
75
|
-
<%= process.queues.sort.join(", ") %>
|
|
76
|
-
<% end %>
|
|
72
|
+
<%= process.queues.sort.join(", ") %>
|
|
77
73
|
<% if process.version != Sidekiq::VERSION %>
|
|
78
74
|
<br>
|
|
79
75
|
<b><%= "#{t('Version')}: " %></b>
|
|
@@ -92,7 +88,7 @@
|
|
|
92
88
|
<% unless process.embedded? %>
|
|
93
89
|
<form method="POST">
|
|
94
90
|
<%= csrf_tag %>
|
|
95
|
-
<input type="hidden" name="identity" value="<%= process['identity'] %>"
|
|
91
|
+
<input type="hidden" name="identity" value="<%= process['identity'] %>">
|
|
96
92
|
|
|
97
93
|
<div class="btn-group">
|
|
98
94
|
<% unless process.stopping? %><button class="btn btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button><% end %>
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
<div class="filter interval-slider">
|
|
10
10
|
<span class="interval-slider-label"><%= t('PollingInterval') %>:</span>
|
|
11
11
|
<span id="sldr-text" class="current-interval">5 s</span>
|
|
12
|
-
<br
|
|
13
|
-
<input id="sldr" aria-label="<%= t("PollingIntervalMilliseconds") %>" role="slider" type="range" min="2000" max="20000" step="1000" value="5000"
|
|
12
|
+
<br>
|
|
13
|
+
<input id="sldr" aria-label="<%= t("PollingIntervalMilliseconds") %>" role="slider" type="range" min="2000" max="20000" step="1000" value="5000" autocomplete="off">
|
|
14
14
|
</div>
|
|
15
15
|
</header>
|
|
16
16
|
|
|
17
17
|
<div class="chart">
|
|
18
|
-
<span id="sr-last-dashboard-update-template" hidden
|
|
18
|
+
<span id="sr-last-dashboard-update-template" hidden><%= t("LastDashboardUpdateTemplateLiteral") %></span>
|
|
19
19
|
<span id="sr-last-dashboard-update" class="sr-only" role="status"></span>
|
|
20
20
|
|
|
21
21
|
<canvas id="realtime-chart">
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<form action="<%= root_path %>morgue/<%= job_params(@dead, @dead.score) %>" method="post">
|
|
33
33
|
<%= csrf_tag %>
|
|
34
34
|
<a class="btn btn-default" href="<%= root_path %>morgue"><%= t('GoBack') %></a>
|
|
35
|
-
<input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>"
|
|
36
|
-
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>"
|
|
35
|
+
<input class="btn btn-primary" type="submit" name="retry" value="<%= t('RetryNow') %>">
|
|
36
|
+
<input class="btn btn-danger" type="submit" name="delete" value="<%= t('Delete') %>">
|
|
37
37
|
</form>
|
|
38
|
-
</section>
|
|
38
|
+
</section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="filter">
|
|
2
|
+
<form role="search" method="get" class="form-inline" action="<%= root_path %><%= which %>">
|
|
3
|
+
<label for="substr"><%= t(label_key) %></label>
|
|
4
|
+
<input class="form-control" type="search" name="substr" value="<%= h url_params("substr") %>" placeholder="<%= t(placeholder_key) %>" autocomplete="off">
|
|
5
|
+
</form>
|
|
6
|
+
</div>
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
<html dir="<%= text_direction %>" lang="<%= locale %>">
|
|
3
3
|
<head>
|
|
4
4
|
<title><%= environment_title_prefix %><%= Sidekiq::NAME %></title>
|
|
5
|
-
<meta charset="utf-8"
|
|
6
|
-
<meta name="viewport" content="width=device-width,initial-scale=1.0"
|
|
7
|
-
<meta name="color-scheme" content="light dark"
|
|
8
|
-
<link href="<%= root_path %>stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>"
|
|
9
|
-
<link rel="apple-touch-icon" href="<%= root_path %>images/apple-touch-icon.png"
|
|
10
|
-
<link rel="shortcut icon" type="image/ico" href="<%= root_path %>images/favicon.ico"
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
7
|
+
<meta name="color-scheme" content="light dark">
|
|
8
|
+
<link href="<%= root_path %>stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" nonce="<%= csp_nonce %>">
|
|
9
|
+
<link rel="apple-touch-icon" href="<%= root_path %>images/apple-touch-icon.png">
|
|
10
|
+
<link rel="shortcut icon" type="image/ico" href="<%= root_path %>images/favicon.ico">
|
|
11
11
|
<script type="text/javascript" src="<%= root_path %>javascripts/application.js" nonce="<%= csp_nonce %>"></script>
|
|
12
|
-
<meta name="google" content="notranslate"
|
|
12
|
+
<meta name="google" content="notranslate">
|
|
13
13
|
<%= display_custom_head %>
|
|
14
14
|
</head>
|
|
15
15
|
<body class="admin" data-locale="<%= locale %>">
|
|
@@ -58,8 +58,9 @@
|
|
|
58
58
|
id="<%= id %>"
|
|
59
59
|
class="metrics-swatch"
|
|
60
60
|
value="<%= kls %>"
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
<% if visible_kls.include?(kls) %>
|
|
62
|
+
checked
|
|
63
|
+
<% end %>>
|
|
63
64
|
<code><a href="<%= root_path %>metrics/<%= kls %>?period=<%= @period %>"><%= kls %></a></code>
|
|
64
65
|
</div>
|
|
65
66
|
</td>
|
|
@@ -70,15 +71,15 @@
|
|
|
70
71
|
</tr>
|
|
71
72
|
<% end %>
|
|
72
73
|
<% else %>
|
|
73
|
-
|
|
74
|
+
<tr><td colspan="5"><%= t("NoDataFound") %></td></tr>
|
|
74
75
|
<% end %>
|
|
75
76
|
</tbody>
|
|
76
77
|
</table>
|
|
77
78
|
</div>
|
|
78
79
|
|
|
79
|
-
<% if job_results.any? %>
|
|
80
|
-
|
|
81
|
-
<% end %>
|
|
82
|
-
|
|
80
|
+
<% if job_results.any? %>
|
|
81
|
+
<p><small>Data from <%= @query_result.starts_at %> to <%= @query_result.ends_at %>.<% if @period == "1h" %> Auto-refreshing every 60 seconds.<% end %></small></p>
|
|
82
|
+
<% end %>
|
|
83
83
|
</section>
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
<%= script_tag "javascripts/metrics.js" %>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<tr>
|
|
17
17
|
<th>
|
|
18
18
|
<label>
|
|
19
|
-
<input type="checkbox" class="check_all"
|
|
19
|
+
<input type="checkbox" class="check_all check-all-items">
|
|
20
20
|
</label>
|
|
21
21
|
</th>
|
|
22
22
|
<th><%= t('LastRetry') %></th>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<tr>
|
|
31
31
|
<td>
|
|
32
32
|
<label>
|
|
33
|
-
<input type=
|
|
33
|
+
<input type="checkbox" name="key[]" value="<%= job_params(entry.item, entry.score) %>" class="shift_clickable select-item-checkbox">
|
|
34
34
|
</label>
|
|
35
35
|
</td>
|
|
36
36
|
<td>
|
|
@@ -55,8 +55,12 @@
|
|
|
55
55
|
<% end %>
|
|
56
56
|
</table>
|
|
57
57
|
</div>
|
|
58
|
-
<
|
|
59
|
-
|
|
58
|
+
<div class="buttons-row">
|
|
59
|
+
<input class="btn btn-primary pull-left flip" type="submit" name="retry" value="<%= t('RetryNow') %>">
|
|
60
|
+
<input class="btn btn-danger pull-left flip" type="submit" name="delete" value="<%= t('Delete') %>">
|
|
61
|
+
<button class="btn btn-primary bulk-action-buttons bulk-lead-button" type="submit" name="action" value="retry_all" formaction="<%= "#{root_path}morgue/all/retry" %>"><%= t('RetryAll') %></button>
|
|
62
|
+
<button class="btn btn-danger bulk-action-buttons" type="submit" name="action" value="delete_all" formaction="<%= "#{root_path}morgue/all/delete" %>" data-confirm="<%= t('AreYouSure') %>"><%= t('DeleteAll') %></button>
|
|
63
|
+
</div>
|
|
60
64
|
</form>
|
|
61
65
|
|
|
62
66
|
<% else %>
|