pgbus 0.2.1 → 0.2.3
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/Rakefile +88 -25
- data/app/controllers/pgbus/api/insights_controller.rb +5 -4
- data/app/controllers/pgbus/application_controller.rb +40 -0
- data/app/controllers/pgbus/insights_controller.rb +3 -2
- data/app/controllers/pgbus/locale_controller.rb +15 -0
- data/app/helpers/pgbus/application_helper.rb +67 -7
- data/app/views/layouts/pgbus/application.html.erb +51 -16
- data/app/views/pgbus/dashboard/_processes_table.html.erb +7 -7
- data/app/views/pgbus/dashboard/_queues_table.html.erb +9 -9
- data/app/views/pgbus/dashboard/_recent_failures.html.erb +7 -7
- data/app/views/pgbus/dashboard/_stats_cards.html.erb +10 -10
- data/app/views/pgbus/dashboard/show.html.erb +1 -1
- data/app/views/pgbus/dead_letter/_messages_table.html.erb +20 -20
- data/app/views/pgbus/dead_letter/index.html.erb +5 -5
- data/app/views/pgbus/dead_letter/show.html.erb +12 -12
- data/app/views/pgbus/events/index.html.erb +11 -11
- data/app/views/pgbus/events/show.html.erb +6 -6
- data/app/views/pgbus/insights/show.html.erb +41 -21
- data/app/views/pgbus/jobs/_enqueued_table.html.erb +20 -20
- data/app/views/pgbus/jobs/_failed_table.html.erb +12 -12
- data/app/views/pgbus/jobs/index.html.erb +5 -5
- data/app/views/pgbus/jobs/show.html.erb +13 -13
- data/app/views/pgbus/locks/index.html.erb +11 -11
- data/app/views/pgbus/outbox/index.html.erb +15 -15
- data/app/views/pgbus/processes/_processes_table.html.erb +8 -8
- data/app/views/pgbus/processes/index.html.erb +1 -1
- data/app/views/pgbus/queues/_queues_list.html.erb +15 -15
- data/app/views/pgbus/queues/index.html.erb +1 -1
- data/app/views/pgbus/queues/show.html.erb +11 -11
- data/app/views/pgbus/recurring_tasks/_tasks_table.html.erb +15 -15
- data/app/views/pgbus/recurring_tasks/index.html.erb +2 -2
- data/app/views/pgbus/recurring_tasks/show.html.erb +21 -21
- data/config/i18n-tasks.yml +41 -0
- data/config/locales/da.yml +348 -0
- data/config/locales/de.yml +348 -0
- data/config/locales/en.yml +348 -0
- data/config/locales/es.yml +348 -0
- data/config/locales/fi.yml +348 -0
- data/config/locales/fr.yml +348 -0
- data/config/locales/it.yml +348 -0
- data/config/locales/ja.yml +348 -0
- data/config/locales/nb.yml +348 -0
- data/config/locales/nl.yml +348 -0
- data/config/locales/pt.yml +348 -0
- data/config/locales/sv.yml +348 -0
- data/config/routes.rb +2 -0
- data/lib/pgbus/configuration.rb +8 -2
- data/lib/pgbus/engine.rb +4 -0
- data/lib/pgbus/version.rb +1 -1
- metadata +15 -1
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
<p class="mt-1 text-sm text-gray-500"><%= @task[:class_name] || @task[:command] %></p>
|
|
6
6
|
</div>
|
|
7
7
|
<div class="flex space-x-2">
|
|
8
|
-
<%= button_to @task[:enabled] ? "
|
|
8
|
+
<%= button_to @task[:enabled] ? t("pgbus.recurring_tasks.show.disable") : t("pgbus.recurring_tasks.show.enable"),
|
|
9
9
|
pgbus.toggle_recurring_task_path(@task[:id]),
|
|
10
10
|
class: "inline-flex items-center rounded-md px-3 py-2 text-sm font-medium " \
|
|
11
11
|
"#{@task[:enabled] ? 'bg-yellow-100 text-yellow-700 hover:bg-yellow-200' : 'bg-green-100 text-green-700 hover:bg-green-200'}" %>
|
|
12
12
|
<% if @task[:enabled] %>
|
|
13
|
-
<%= button_to "
|
|
13
|
+
<%= button_to t("pgbus.recurring_tasks.show.run_now"),
|
|
14
14
|
pgbus.enqueue_recurring_task_path(@task[:id]),
|
|
15
15
|
class: "inline-flex items-center rounded-md bg-blue-600 px-3 py-2 text-sm font-medium text-white hover:bg-blue-700" %>
|
|
16
16
|
<% end %>
|
|
17
|
-
<%= link_to "
|
|
17
|
+
<%= link_to t("pgbus.recurring_tasks.show.back"), pgbus.recurring_tasks_path,
|
|
18
18
|
class: "inline-flex items-center rounded-md bg-gray-100 px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-200" %>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-8">
|
|
24
24
|
<div class="rounded-lg bg-white dark:bg-gray-800 p-5 shadow ring-1 ring-gray-200 dark:ring-gray-700">
|
|
25
|
-
<p class="text-sm font-medium text-gray-500"
|
|
25
|
+
<p class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.schedule") %></p>
|
|
26
26
|
<p class="mt-1 text-lg font-semibold text-gray-900 dark:text-white"><%= @task[:schedule] %></p>
|
|
27
27
|
<% if @task[:human_schedule] && @task[:human_schedule] != @task[:schedule] %>
|
|
28
28
|
<p class="text-xs text-gray-400"><%= @task[:human_schedule] %></p>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
32
|
<div class="rounded-lg bg-white dark:bg-gray-800 p-5 shadow ring-1 ring-gray-200 dark:ring-gray-700">
|
|
33
|
-
<p class="text-sm font-medium text-gray-500"
|
|
33
|
+
<p class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.next_run") %></p>
|
|
34
34
|
<% if @task[:enabled] && @task[:next_run_at] %>
|
|
35
35
|
<p class="mt-1 text-lg font-semibold text-gray-900 dark:text-white"><%= pgbus_time_ago_future(@task[:next_run_at]) %></p>
|
|
36
36
|
<p class="text-xs text-gray-400"><%= @task[:next_run_at]&.strftime("%Y-%m-%d %H:%M:%S %Z") %></p>
|
|
@@ -40,50 +40,50 @@
|
|
|
40
40
|
</div>
|
|
41
41
|
|
|
42
42
|
<div class="rounded-lg bg-white dark:bg-gray-800 p-5 shadow ring-1 ring-gray-200 dark:ring-gray-700">
|
|
43
|
-
<p class="text-sm font-medium text-gray-500"
|
|
44
|
-
<p class="mt-1"><%= @task[:enabled] ? pgbus_recurring_health_badge(@task) :
|
|
43
|
+
<p class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.status") %></p>
|
|
44
|
+
<p class="mt-1"><%= @task[:enabled] ? pgbus_recurring_health_badge(@task) : content_tag(:span, t("pgbus.recurring_tasks.show.disabled"), class: "inline-flex items-center rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-medium text-gray-600") %></p>
|
|
45
45
|
</div>
|
|
46
46
|
</div>
|
|
47
47
|
|
|
48
48
|
<div class="rounded-lg bg-white dark:bg-gray-800 shadow ring-1 ring-gray-200 dark:ring-gray-700 mb-8">
|
|
49
49
|
<div class="px-4 py-3 border-b border-gray-200">
|
|
50
|
-
<h2 class="text-lg font-medium text-gray-900 dark:text-white"
|
|
50
|
+
<h2 class="text-lg font-medium text-gray-900 dark:text-white"><%= t("pgbus.recurring_tasks.show.configuration") %></h2>
|
|
51
51
|
</div>
|
|
52
52
|
<div class="p-4">
|
|
53
53
|
<dl class="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
|
54
54
|
<div>
|
|
55
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
55
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.job_class") %></dt>
|
|
56
56
|
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:class_name] || "—" %></dd>
|
|
57
57
|
</div>
|
|
58
58
|
<% if @task[:command] %>
|
|
59
59
|
<div>
|
|
60
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
60
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.command") %></dt>
|
|
61
61
|
<dd class="mt-1 text-sm text-gray-900 dark:text-white font-mono text-xs"><%= @task[:command] %></dd>
|
|
62
62
|
</div>
|
|
63
63
|
<% end %>
|
|
64
64
|
<div>
|
|
65
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
66
|
-
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:queue_name] || "
|
|
65
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.queue") %></dt>
|
|
66
|
+
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:queue_name] || t("pgbus.recurring_tasks.show.default_queue") %></dd>
|
|
67
67
|
</div>
|
|
68
68
|
<div>
|
|
69
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
69
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.priority") %></dt>
|
|
70
70
|
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:priority] %></dd>
|
|
71
71
|
</div>
|
|
72
72
|
<% if @task[:arguments]&.any? %>
|
|
73
73
|
<div class="sm:col-span-2">
|
|
74
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
74
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.arguments") %></dt>
|
|
75
75
|
<dd class="mt-1 text-sm text-gray-900 dark:text-white font-mono text-xs"><%= @task[:arguments].inspect %></dd>
|
|
76
76
|
</div>
|
|
77
77
|
<% end %>
|
|
78
78
|
<% if @task[:description] %>
|
|
79
79
|
<div class="sm:col-span-2">
|
|
80
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
80
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.description") %></dt>
|
|
81
81
|
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:description] %></dd>
|
|
82
82
|
</div>
|
|
83
83
|
<% end %>
|
|
84
84
|
<div>
|
|
85
|
-
<dt class="text-sm font-medium text-gray-500"
|
|
86
|
-
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:static] ? "
|
|
85
|
+
<dt class="text-sm font-medium text-gray-500"><%= t("pgbus.recurring_tasks.show.labels.source") %></dt>
|
|
86
|
+
<dd class="mt-1 text-sm text-gray-900 dark:text-white"><%= @task[:static] ? t("pgbus.recurring_tasks.show.source_config") : t("pgbus.recurring_tasks.show.source_dynamic") %></dd>
|
|
87
87
|
</div>
|
|
88
88
|
</dl>
|
|
89
89
|
</div>
|
|
@@ -91,14 +91,14 @@
|
|
|
91
91
|
|
|
92
92
|
<div class="rounded-lg bg-white dark:bg-gray-800 shadow ring-1 ring-gray-200 dark:ring-gray-700">
|
|
93
93
|
<div class="px-4 py-3 border-b border-gray-200">
|
|
94
|
-
<h2 class="text-lg font-medium text-gray-900 dark:text-white"
|
|
94
|
+
<h2 class="text-lg font-medium text-gray-900 dark:text-white"><%= t("pgbus.recurring_tasks.show.recent_executions") %></h2>
|
|
95
95
|
</div>
|
|
96
96
|
<% if @task[:executions]&.any? %>
|
|
97
97
|
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700">
|
|
98
98
|
<thead class="bg-gray-50 dark:bg-gray-900">
|
|
99
99
|
<tr>
|
|
100
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"
|
|
101
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"
|
|
100
|
+
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"><%= t("pgbus.recurring_tasks.show.execution_headers.scheduled_for") %></th>
|
|
101
|
+
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase"><%= t("pgbus.recurring_tasks.show.execution_headers.enqueued_at") %></th>
|
|
102
102
|
</tr>
|
|
103
103
|
</thead>
|
|
104
104
|
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
</table>
|
|
117
117
|
<% else %>
|
|
118
118
|
<div class="p-8 text-center text-gray-500">
|
|
119
|
-
<p
|
|
119
|
+
<p><%= t("pgbus.recurring_tasks.show.no_executions") %></p>
|
|
120
120
|
</div>
|
|
121
121
|
<% end %>
|
|
122
122
|
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
# i18n-tasks configuration for Pgbus engine
|
|
3
|
+
# https://github.com/glebm/i18n-tasks
|
|
4
|
+
|
|
5
|
+
base_locale: en
|
|
6
|
+
locales: [en, da, de, es, fi, fr, it, ja, nb, nl, pt, sv]
|
|
7
|
+
|
|
8
|
+
data:
|
|
9
|
+
router: pattern_router
|
|
10
|
+
read:
|
|
11
|
+
- config/locales/%{locale}.yml
|
|
12
|
+
- config/locales/**/*.%{locale}.yml
|
|
13
|
+
write:
|
|
14
|
+
- config/locales/%{locale}.yml
|
|
15
|
+
yaml:
|
|
16
|
+
write:
|
|
17
|
+
line_width: -1
|
|
18
|
+
|
|
19
|
+
search:
|
|
20
|
+
paths:
|
|
21
|
+
- app/
|
|
22
|
+
exclude:
|
|
23
|
+
- "*.md"
|
|
24
|
+
- app/assets/images
|
|
25
|
+
strict: false
|
|
26
|
+
|
|
27
|
+
translation:
|
|
28
|
+
backend: openai
|
|
29
|
+
openai_api_key: <%= ENV["OPENAI_API_KEY"] %>
|
|
30
|
+
openai_model: gpt-4.1-mini
|
|
31
|
+
|
|
32
|
+
ignore_missing:
|
|
33
|
+
- "activerecord.*"
|
|
34
|
+
|
|
35
|
+
ignore_unused:
|
|
36
|
+
- "pgbus.helpers.*"
|
|
37
|
+
- "pgbus.insights.show.time_ranges.*"
|
|
38
|
+
- "pgbus.insights.show.charts.series_name"
|
|
39
|
+
- "pgbus.insights.show.charts.failed_to_load"
|
|
40
|
+
- "pgbus.insights.show.charts.no_data"
|
|
41
|
+
- "pgbus.recurring_tasks.index.task_count.*"
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
---
|
|
2
|
+
da:
|
|
3
|
+
pgbus:
|
|
4
|
+
dashboard:
|
|
5
|
+
processes_table:
|
|
6
|
+
empty: Ingen processer kører
|
|
7
|
+
headers:
|
|
8
|
+
host: Vært
|
|
9
|
+
kind: Type
|
|
10
|
+
pid: PID
|
|
11
|
+
status: Status
|
|
12
|
+
title: Aktive processer
|
|
13
|
+
queues_table:
|
|
14
|
+
empty: Ingen køer fundet
|
|
15
|
+
headers:
|
|
16
|
+
depth: Dybde
|
|
17
|
+
oldest: Ældste (s)
|
|
18
|
+
queue: Kø
|
|
19
|
+
total: Total
|
|
20
|
+
visible: Synlig
|
|
21
|
+
title: Køer
|
|
22
|
+
view_all: Se alle
|
|
23
|
+
recent_failures:
|
|
24
|
+
empty: Ingen fejl
|
|
25
|
+
headers:
|
|
26
|
+
error: Fejl
|
|
27
|
+
queue: Kø
|
|
28
|
+
when: Hvornår
|
|
29
|
+
title: Seneste fejl
|
|
30
|
+
view_all: Se alle
|
|
31
|
+
show:
|
|
32
|
+
title: Dashboard
|
|
33
|
+
stats_cards:
|
|
34
|
+
enqueued: Sat i kø
|
|
35
|
+
failed_dlq: Mislykkedes / DLQ
|
|
36
|
+
processes: Processer
|
|
37
|
+
queues: Køer
|
|
38
|
+
recurring: Gentagende
|
|
39
|
+
throughput: Gennemløb
|
|
40
|
+
throughput_unit: besk/s
|
|
41
|
+
view_tasks: Se opgaver
|
|
42
|
+
visible: synlig
|
|
43
|
+
dead_letter:
|
|
44
|
+
index:
|
|
45
|
+
discard_all: Kassér alle
|
|
46
|
+
discard_all_confirm: Slet permanent alle DLQ-beskeder?
|
|
47
|
+
retry_all: Prøv igen alle
|
|
48
|
+
retry_all_confirm: Prøv igen alle DLQ-beskeder?
|
|
49
|
+
title: Dead Letter Queue
|
|
50
|
+
messages_table:
|
|
51
|
+
arguments: Argumenter
|
|
52
|
+
discard: Kassér
|
|
53
|
+
discard_confirm: Slet permanent?
|
|
54
|
+
empty: Dead letter queue er tom
|
|
55
|
+
full_json_payload: Fuld JSON-payload
|
|
56
|
+
headers:
|
|
57
|
+
enqueued: Sat i kø
|
|
58
|
+
id: ID
|
|
59
|
+
job_class: Jobklasse
|
|
60
|
+
reads: Læsninger
|
|
61
|
+
source_queue: Kildekø
|
|
62
|
+
headers_section: Headers
|
|
63
|
+
job_id: 'Job ID:'
|
|
64
|
+
metadata: Metadata
|
|
65
|
+
metadata_labels:
|
|
66
|
+
executions: 'Udførelser:'
|
|
67
|
+
last_read: 'Sidst læst:'
|
|
68
|
+
priority: 'Prioritet:'
|
|
69
|
+
queue: 'Kø:'
|
|
70
|
+
visible_at: 'Synlig ved:'
|
|
71
|
+
retry: Forsøg igen
|
|
72
|
+
show:
|
|
73
|
+
back: Tilbage til DLQ
|
|
74
|
+
discard: Kassér
|
|
75
|
+
discard_confirm: Slet permanent?
|
|
76
|
+
headers: Overskrifter
|
|
77
|
+
labels:
|
|
78
|
+
enqueued_at: Indsat kl.
|
|
79
|
+
read_count: Antal læsninger
|
|
80
|
+
source_queue: Kildekø
|
|
81
|
+
visibility_timeout: Synlighedstimeout
|
|
82
|
+
not_found: Besked ikke fundet
|
|
83
|
+
payload: Indhold
|
|
84
|
+
retry: Forsøg igen
|
|
85
|
+
title: 'DLQ-besked #%{id}'
|
|
86
|
+
events:
|
|
87
|
+
index:
|
|
88
|
+
processed_empty: Ingen begivenheder behandlet endnu
|
|
89
|
+
processed_headers:
|
|
90
|
+
event_id: Begivenheds-ID
|
|
91
|
+
handler: Håndterer
|
|
92
|
+
processed_at: Behandlet kl.
|
|
93
|
+
processed_title: Behandlede begivenheder
|
|
94
|
+
subscribers_empty: Ingen abonnenter registreret
|
|
95
|
+
subscribers_headers:
|
|
96
|
+
handler: Håndterer
|
|
97
|
+
pattern: Mønster
|
|
98
|
+
queue: Kø
|
|
99
|
+
subscribers_title: Registrerede abonnenter
|
|
100
|
+
title: Begivenheder
|
|
101
|
+
show:
|
|
102
|
+
back: Tilbage til begivenheder
|
|
103
|
+
labels:
|
|
104
|
+
event_id: Begivenheds-ID
|
|
105
|
+
handler: Håndterer
|
|
106
|
+
processed_at: Behandlet kl.
|
|
107
|
+
not_found: Begivenhed ikke fundet
|
|
108
|
+
title: Begivenhed %{event_id}
|
|
109
|
+
helpers:
|
|
110
|
+
paused_badge: Pause
|
|
111
|
+
queue_badge:
|
|
112
|
+
dlq: DLQ
|
|
113
|
+
queue: Kø
|
|
114
|
+
recurring_health:
|
|
115
|
+
active: Aktiv
|
|
116
|
+
pending: Afventer
|
|
117
|
+
status_badge:
|
|
118
|
+
healthy: Sund
|
|
119
|
+
stale: Forældet
|
|
120
|
+
insights:
|
|
121
|
+
show:
|
|
122
|
+
charts:
|
|
123
|
+
failed_to_load: Kunne ikke indlæse diagramdata
|
|
124
|
+
no_data: Ingen data endnu
|
|
125
|
+
series_name: Job/min
|
|
126
|
+
status_distribution: Statusfordeling
|
|
127
|
+
throughput: Gennemstrømning (job/min)
|
|
128
|
+
description_html: Jobpræstationsmålinger for de sidste %{range}
|
|
129
|
+
slowest:
|
|
130
|
+
empty: Ingen jobstatistikker endnu
|
|
131
|
+
headers:
|
|
132
|
+
avg: Gns.
|
|
133
|
+
count: Antal
|
|
134
|
+
job_class: Jobklasse
|
|
135
|
+
max: Max
|
|
136
|
+
title: Langsommeste jobklasser (gennemsnitlig varighed)
|
|
137
|
+
summary:
|
|
138
|
+
avg_duration: Gennemsnitlig varighed
|
|
139
|
+
dead_lettered: Døde breve
|
|
140
|
+
failed: Mislykkedes
|
|
141
|
+
max_duration: Maksimal varighed
|
|
142
|
+
succeeded: Succesfuld
|
|
143
|
+
total_jobs: Totale job
|
|
144
|
+
time_ranges:
|
|
145
|
+
1h: 1t
|
|
146
|
+
24h: 24t
|
|
147
|
+
30d: 30d
|
|
148
|
+
7d: 7d
|
|
149
|
+
title: Indsigter
|
|
150
|
+
jobs:
|
|
151
|
+
enqueued_table:
|
|
152
|
+
arguments: Argumenter
|
|
153
|
+
empty: Ingen job i kø
|
|
154
|
+
full_json_payload: Fuld JSON-payload
|
|
155
|
+
headers:
|
|
156
|
+
enqueued: I kø
|
|
157
|
+
id: ID
|
|
158
|
+
job_class: Jobklasse
|
|
159
|
+
queue: Kø
|
|
160
|
+
reads: Læsninger
|
|
161
|
+
headers_section: Headers
|
|
162
|
+
job_id: 'Job ID:'
|
|
163
|
+
metadata: Metadata
|
|
164
|
+
metadata_labels:
|
|
165
|
+
last_read: 'Sidste læsning:'
|
|
166
|
+
locale: 'Locale:'
|
|
167
|
+
priority: 'Prioritet:'
|
|
168
|
+
queue: 'Kø:'
|
|
169
|
+
scheduled: 'Planlagt:'
|
|
170
|
+
timezone: 'Tidszone:'
|
|
171
|
+
visible_at: 'Synlig fra:'
|
|
172
|
+
title: Job i kø
|
|
173
|
+
failed_table:
|
|
174
|
+
discard: Kassér
|
|
175
|
+
discard_confirm: Kassér dette job?
|
|
176
|
+
empty: Ingen mislykkede job
|
|
177
|
+
headers:
|
|
178
|
+
actions: Handlinger
|
|
179
|
+
error: Fejl
|
|
180
|
+
failed: Mislykkedes
|
|
181
|
+
id: ID
|
|
182
|
+
queue: Kø
|
|
183
|
+
retries: Forsøg
|
|
184
|
+
retry: Forsøg igen
|
|
185
|
+
title: Mislykkede job
|
|
186
|
+
index:
|
|
187
|
+
discard_all: Kassér alle
|
|
188
|
+
discard_all_confirm: Kassér alle mislykkede job?
|
|
189
|
+
retry_all: Forsøg alle igen
|
|
190
|
+
retry_all_confirm: Forsøg alle mislykkede job igen?
|
|
191
|
+
title: Job
|
|
192
|
+
show:
|
|
193
|
+
back: Tilbage til job
|
|
194
|
+
backtrace: Stacktrace
|
|
195
|
+
discard: Kassér
|
|
196
|
+
discard_confirm: Slet dette job permanent?
|
|
197
|
+
error_message: Fejlmeddelelse
|
|
198
|
+
labels:
|
|
199
|
+
error_class: Fejlklasse
|
|
200
|
+
failed_at: Mislykkedes ved
|
|
201
|
+
queue: Kø
|
|
202
|
+
retry_count: Antal forsøg
|
|
203
|
+
not_found: Job ikke fundet
|
|
204
|
+
payload: Indhold
|
|
205
|
+
retry: Forsøg igen
|
|
206
|
+
title: 'Mislykket job #%{id}'
|
|
207
|
+
layout:
|
|
208
|
+
brand: Pgbus
|
|
209
|
+
nav:
|
|
210
|
+
dashboard: Dashboard
|
|
211
|
+
dlq: DLQ
|
|
212
|
+
events: Begivenheder
|
|
213
|
+
insights: Indsigter
|
|
214
|
+
jobs: Jobs
|
|
215
|
+
locks: Låse
|
|
216
|
+
outbox: Udbakke
|
|
217
|
+
processes: Processer
|
|
218
|
+
queues: Køer
|
|
219
|
+
recurring: Gentagende
|
|
220
|
+
title: Pgbus Dashboard
|
|
221
|
+
toggle_dark_mode: Skift til mørk tilstand
|
|
222
|
+
locks:
|
|
223
|
+
index:
|
|
224
|
+
description: Aktive unikke låse forhindrer duplikeret jobudførelse
|
|
225
|
+
empty: Ingen aktive låse
|
|
226
|
+
executing: Udfører
|
|
227
|
+
headers:
|
|
228
|
+
age: Alder
|
|
229
|
+
expires: Udløber
|
|
230
|
+
job_class: Jobklasse
|
|
231
|
+
lock_key: Låsenøgle
|
|
232
|
+
owner: Ejer
|
|
233
|
+
state: Status
|
|
234
|
+
queued: I kø
|
|
235
|
+
title: Joblåse
|
|
236
|
+
outbox:
|
|
237
|
+
index:
|
|
238
|
+
description: Transaktionelle udbakke-poster, der venter på publicering til PGMQ
|
|
239
|
+
empty: Ingen udbakkeposter
|
|
240
|
+
headers:
|
|
241
|
+
created: Oprettet
|
|
242
|
+
id: ID
|
|
243
|
+
payload: Indhold
|
|
244
|
+
priority: Prioritet
|
|
245
|
+
queue_topic: Kø / Emne
|
|
246
|
+
status: Status
|
|
247
|
+
pending: Afventer
|
|
248
|
+
published: Publiceret
|
|
249
|
+
stats:
|
|
250
|
+
no_age: "—"
|
|
251
|
+
oldest_age: "%{seconds}s"
|
|
252
|
+
oldest_unpublished: Ældste upublicerede
|
|
253
|
+
total: Total
|
|
254
|
+
unpublished: Upubliceret
|
|
255
|
+
title: Udbakke
|
|
256
|
+
processes:
|
|
257
|
+
index:
|
|
258
|
+
title: Processer
|
|
259
|
+
processes_table:
|
|
260
|
+
empty: Ingen processer kører
|
|
261
|
+
headers:
|
|
262
|
+
hostname: Værtsnavn
|
|
263
|
+
kind: Type
|
|
264
|
+
last_heartbeat: Sidste Heartbeat
|
|
265
|
+
metadata: Metadata
|
|
266
|
+
pid: PID
|
|
267
|
+
status: Status
|
|
268
|
+
queues:
|
|
269
|
+
index:
|
|
270
|
+
title: Køer
|
|
271
|
+
queues_list:
|
|
272
|
+
empty: Ingen køer fundet
|
|
273
|
+
headers:
|
|
274
|
+
actions: Handlinger
|
|
275
|
+
depth: Dybde
|
|
276
|
+
newest: Nyeste (s)
|
|
277
|
+
oldest: Ældste (s)
|
|
278
|
+
queue: Kø
|
|
279
|
+
total_ever: Total nogensinde
|
|
280
|
+
visible: Synlig
|
|
281
|
+
pause: Pause
|
|
282
|
+
pause_confirm: Pause behandling i %{name}?
|
|
283
|
+
paused: Pauset
|
|
284
|
+
purge: Rens
|
|
285
|
+
purge_confirm: Rens alle beskeder fra %{name}?
|
|
286
|
+
resume: Genoptag
|
|
287
|
+
show:
|
|
288
|
+
depth: 'Dybde:'
|
|
289
|
+
empty: Køen er tom
|
|
290
|
+
headers:
|
|
291
|
+
enqueued: Sat i kø
|
|
292
|
+
id: ID
|
|
293
|
+
payload: Indhold
|
|
294
|
+
reads: Læsninger
|
|
295
|
+
vt: VT
|
|
296
|
+
purge_confirm: Rens alle beskeder?
|
|
297
|
+
purge_queue: Rens kø
|
|
298
|
+
total: 'Total:'
|
|
299
|
+
visible: 'Synlig:'
|
|
300
|
+
recurring_tasks:
|
|
301
|
+
index:
|
|
302
|
+
task_count:
|
|
303
|
+
one: "%{count} opgave konfigureret"
|
|
304
|
+
other: "%{count} opgaver konfigureret"
|
|
305
|
+
title: Gentagne opgaver
|
|
306
|
+
show:
|
|
307
|
+
back: Tilbage
|
|
308
|
+
configuration: Konfiguration
|
|
309
|
+
default_queue: standard
|
|
310
|
+
disable: Deaktiver
|
|
311
|
+
disabled: Deaktiveret
|
|
312
|
+
enable: Aktiver
|
|
313
|
+
execution_headers:
|
|
314
|
+
enqueued_at: Sat i kø den
|
|
315
|
+
scheduled_for: Planlagt til
|
|
316
|
+
labels:
|
|
317
|
+
arguments: Argumenter
|
|
318
|
+
command: Kommando
|
|
319
|
+
description: Beskrivelse
|
|
320
|
+
job_class: Jobklasse
|
|
321
|
+
priority: Prioritet
|
|
322
|
+
queue: Kø
|
|
323
|
+
source: Kilde
|
|
324
|
+
next_run: Næste kørsel
|
|
325
|
+
no_executions: Ingen udførelser registreret endnu
|
|
326
|
+
recent_executions: Seneste udførelser
|
|
327
|
+
run_now: Kør nu
|
|
328
|
+
schedule: Planlæg
|
|
329
|
+
source_config: Konfigurationsfil
|
|
330
|
+
source_dynamic: Dynamisk
|
|
331
|
+
status: Status
|
|
332
|
+
tasks_table:
|
|
333
|
+
default_queue: standard
|
|
334
|
+
disable: Deaktiver
|
|
335
|
+
disabled: Deaktiveret
|
|
336
|
+
empty_hint: Tilføj opgaver til config/recurring.yml
|
|
337
|
+
empty_title: Ingen tilbagevendende opgaver konfigureret
|
|
338
|
+
enable: Aktiver
|
|
339
|
+
headers:
|
|
340
|
+
actions: Handlinger
|
|
341
|
+
last_run: Sidste kørsel
|
|
342
|
+
next_run: Næste kørsel
|
|
343
|
+
queue: Kø
|
|
344
|
+
schedule: Planlæg
|
|
345
|
+
status: Status
|
|
346
|
+
task: Opgave
|
|
347
|
+
never: Aldrig
|
|
348
|
+
run_now: Kør nu
|