wurk 1.1.2 → 1.2.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 +22 -2
- data/app/controllers/wurk/api_controller.rb +2 -2
- data/lib/sidekiq/testing.rb +2 -0
- data/lib/wurk/batch/callback_job.rb +53 -13
- data/lib/wurk/batch.rb +10 -2
- data/lib/wurk/configuration.rb +10 -6
- data/lib/wurk/cron.rb +56 -7
- data/lib/wurk/iterable_job.rb +26 -4
- data/lib/wurk/metrics/query.rb +8 -5
- data/lib/wurk/metrics/rollup.rb +1 -1
- data/lib/wurk/sorted_entry.rb +6 -0
- data/lib/wurk/testing.rb +20 -1
- data/lib/wurk/unique.rb +80 -11
- data/lib/wurk/version.rb +1 -1
- data/lib/wurk/web/enterprise.rb +24 -2
- data/lib/wurk/worker/setter.rb +29 -2
- data/lib/wurk/worker.rb +4 -4
- data/vendor/assets/dashboard/assets/{ArgsValue-DYfBiXrJ.js → ArgsValue-D74zX0MI.js} +1 -1
- data/vendor/assets/dashboard/assets/{BatchDetail-DTZ2HzcD.js → BatchDetail-YRymNsrB.js} +1 -1
- data/vendor/assets/dashboard/assets/{Batches-BrnXA332.js → Batches-HY4hHdQU.js} +1 -1
- data/vendor/assets/dashboard/assets/{Busy-C57G8Xb3.js → Busy-FCEN1Bpx.js} +1 -1
- data/vendor/assets/dashboard/assets/{Cron-DlyH88oo.js → Cron-DO3J2zcp.js} +1 -1
- data/vendor/assets/dashboard/assets/Dashboard-B9rOrkzk.js +1 -0
- data/vendor/assets/dashboard/assets/{Dead-BPA7gs-X.js → Dead-Bi4GGk9a.js} +1 -1
- data/vendor/assets/dashboard/assets/{Extension-Bunf6XuU.js → Extension-BSv8ddW_.js} +1 -1
- data/vendor/assets/dashboard/assets/{FilterBox-FCDi4ZCU.js → FilterBox-IJkHYpdm.js} +1 -1
- data/vendor/assets/dashboard/assets/{JobDetailModal-DuMdKUMm.js → JobDetailModal-DS1ypyoc.js} +1 -1
- data/vendor/assets/dashboard/assets/{Limiters-Br0aCPMK.js → Limiters-Nz7UbNeJ.js} +1 -1
- data/vendor/assets/dashboard/assets/{Metrics-DxBmuywH.js → Metrics-BBTDxcaE.js} +1 -1
- data/vendor/assets/dashboard/assets/{Modal-t4FI_LaY.js → Modal-Crrsu64-.js} +1 -1
- data/vendor/assets/dashboard/assets/{PageHeader-CsDvJSOA.js → PageHeader-C44KNMGm.js} +1 -1
- data/vendor/assets/dashboard/assets/{Profiles-Bkhoqjlq.js → Profiles-xEVTyS2N.js} +1 -1
- data/vendor/assets/dashboard/assets/{Queues-BvhA-vfI.js → Queues-D9PH_THs.js} +1 -1
- data/vendor/assets/dashboard/assets/{Retries-JEpB-1Yl.js → Retries-CAKzDgYG.js} +1 -1
- data/vendor/assets/dashboard/assets/{Scheduled-DN_FbSwP.js → Scheduled-DTYw1X8S.js} +1 -1
- data/vendor/assets/dashboard/assets/{Search-DJuK0YCJ.js → Search-c4vFxDG_.js} +1 -1
- data/vendor/assets/dashboard/assets/Skeleton-DzR7XNxz.js +1 -0
- data/vendor/assets/dashboard/assets/{charts-CVK0zAnC.js → charts-BVHHGof7.js} +1 -1
- data/vendor/assets/dashboard/assets/fa-brands-400-Bs6tcqqs.woff2 +0 -0
- data/vendor/assets/dashboard/assets/fa-regular-400-DRN8N0d1.woff2 +0 -0
- data/vendor/assets/dashboard/assets/fa-solid-900-IAB4Droh.woff2 +0 -0
- data/vendor/assets/dashboard/assets/fa-v4compatibility-CErXDOsT.woff2 +0 -0
- data/vendor/assets/dashboard/assets/index-BxjdeuOa.css +1 -0
- data/vendor/assets/dashboard/assets/index-DQu7WY9y.js +141 -0
- data/vendor/assets/dashboard/assets/{useResetPageOnEmpty-CoZU4b3a.js → useResetPageOnEmpty-B_FsMah6.js} +1 -1
- data/vendor/assets/dashboard/assets/{useSort-wQcnbdsa.js → useSort-BeYbztkN.js} +1 -1
- data/vendor/assets/dashboard/index.html +3 -3
- data/vendor/assets/dashboard/wurk-manifest.json +2 -2
- metadata +30 -30
- data/vendor/assets/dashboard/assets/Dashboard-B887pxWf.js +0 -1
- data/vendor/assets/dashboard/assets/Skeleton-DOYDkzg1.js +0 -1
- data/vendor/assets/dashboard/assets/fa-brands-400-BK5CuonO.woff2 +0 -0
- data/vendor/assets/dashboard/assets/fa-regular-400-WLfxSHV3.woff2 +0 -0
- data/vendor/assets/dashboard/assets/fa-solid-900-Iz_TytpP.woff2 +0 -0
- data/vendor/assets/dashboard/assets/fa-v4compatibility-CMhGCN2W.woff2 +0 -0
- data/vendor/assets/dashboard/assets/index-BnPX9Ptn.css +0 -1
- data/vendor/assets/dashboard/assets/index-CZTcs-pM.js +0 -141
data/lib/wurk/web/enterprise.rb
CHANGED
|
@@ -42,11 +42,33 @@ module Wurk
|
|
|
42
42
|
# row remains in the UI. Mirrors the §1.5 `#reset` surface — the
|
|
43
43
|
# name is wire-compat, so the trailing-? rule doesn't apply here.
|
|
44
44
|
def reset(name) # rubocop:disable Naming/PredicateMethod
|
|
45
|
+
limiter = rebuild(name)
|
|
46
|
+
# Reconstruct the limiter and delegate: only the type itself knows
|
|
47
|
+
# its state keys. A bucket's counter lives at `lmtr-b:<name>:<epoch>`,
|
|
48
|
+
# so the bare-prefix DEL below never touched it.
|
|
49
|
+
limiter ? limiter.reset : reset_by_prefix(name)
|
|
50
|
+
true
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Read-only reconstruction (`register: false`) from the persisted
|
|
54
|
+
# metadata. Returns nil when the meta HASH is gone or malformed —
|
|
55
|
+
# LIST membership has no TTL, so a name can outlive its metadata.
|
|
56
|
+
def rebuild(name)
|
|
57
|
+
meta = metadata(name)
|
|
58
|
+
return nil if meta.nil? || meta.empty?
|
|
59
|
+
|
|
60
|
+
options = meta['options'] ? ::JSON.parse(meta['options']) : {}
|
|
61
|
+
Wurk::Limiter.build(name, meta['type'], options)
|
|
62
|
+
rescue StandardError
|
|
63
|
+
nil
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Metadata-less fallback: wipe every type's un-suffixed state key.
|
|
67
|
+
def reset_by_prefix(name)
|
|
45
68
|
Wurk.redis do |c|
|
|
46
|
-
%W[lmtr-cs:#{name} lmtr-
|
|
69
|
+
%W[lmtr-cs:#{name} lmtr-w:#{name} lmtr-l:#{name}
|
|
47
70
|
lmtr-p:#{name} lmtr-stats:#{name}].each { |k| c.call('DEL', k) }
|
|
48
71
|
end
|
|
49
|
-
true
|
|
50
72
|
end
|
|
51
73
|
end
|
|
52
74
|
|
data/lib/wurk/worker/setter.rb
CHANGED
|
@@ -31,8 +31,24 @@ module Wurk
|
|
|
31
31
|
@klass.client_push(@opts.merge('class' => @klass, 'args' => args))
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
# Explicit synchronous execution. Runs the payload through the real client
|
|
35
|
+
# AND server middleware chains rather than calling `perform` directly:
|
|
36
|
+
# unique-job locks are taken by the client chain and released only by the
|
|
37
|
+
# server chain (bypassing both leaked every lock until its TTL), and batch
|
|
38
|
+
# callbacks fire from server middleware. Mirrors Sidekiq's Setter#perform_inline,
|
|
39
|
+
# including its return contract — nil when middleware halts the job, else true.
|
|
40
|
+
def perform_inline(*args)
|
|
41
|
+
config = Wurk.configuration
|
|
42
|
+
item = normalize_item(@opts.merge('class' => @klass, 'args' => args))
|
|
43
|
+
pushed = config.client_middleware.invoke(item['class'], item, item['queue'], config.redis_pool) do
|
|
44
|
+
verify_json(item)
|
|
45
|
+
item
|
|
46
|
+
end
|
|
47
|
+
return nil unless pushed
|
|
48
|
+
|
|
49
|
+
# Round-trip through JSON so the job sees exactly the arguments a real
|
|
50
|
+
# worker would after the payload has crossed Redis.
|
|
51
|
+
run_job(Wurk.load_json(Wurk.dump_json(item)), config)
|
|
36
52
|
end
|
|
37
53
|
alias perform_sync perform_inline
|
|
38
54
|
|
|
@@ -58,6 +74,17 @@ module Wurk
|
|
|
58
74
|
|
|
59
75
|
private
|
|
60
76
|
|
|
77
|
+
def run_job(msg, config)
|
|
78
|
+
instance = @klass.new
|
|
79
|
+
instance.jid = msg['jid']
|
|
80
|
+
instance.bid = msg['bid'] if instance.respond_to?(:bid=)
|
|
81
|
+
ran = config.server_middleware.invoke(instance, msg, msg['queue']) do
|
|
82
|
+
instance.perform(*msg['args'])
|
|
83
|
+
true
|
|
84
|
+
end
|
|
85
|
+
ran ? true : nil
|
|
86
|
+
end
|
|
87
|
+
|
|
61
88
|
def absolute_at(interval)
|
|
62
89
|
unless interval.is_a?(Numeric) || interval.is_a?(Time)
|
|
63
90
|
raise ArgumentError, "interval must be Numeric or Time, got #{interval.class}"
|
data/lib/wurk/worker.rb
CHANGED
|
@@ -132,12 +132,12 @@ module Wurk
|
|
|
132
132
|
Wurk::Worker::Setter.new(self, {}).perform_async(*)
|
|
133
133
|
end
|
|
134
134
|
|
|
135
|
-
# Run
|
|
136
|
-
#
|
|
135
|
+
# Run the job synchronously in the current thread, through both middleware
|
|
136
|
+
# chains (see {Wurk::Worker::Setter#perform_inline}). Useful in tests.
|
|
137
137
|
#
|
|
138
|
-
# @return [
|
|
138
|
+
# @return [true, nil] nil when middleware halted the job, true otherwise
|
|
139
139
|
def perform_inline(*)
|
|
140
|
-
new.
|
|
140
|
+
Wurk::Worker::Setter.new(self, {}).perform_inline(*)
|
|
141
141
|
end
|
|
142
142
|
alias perform_sync perform_inline
|
|
143
143
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,_ as n,b as r,v as i,w as a,z as o}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,_ as n,b as r,v as i,w as a,z as o}from"./Skeleton-DzR7XNxz.js";import{o as s}from"./utils-DDJC7tJV.js";var c=a(`<span>`),l=a(`<span style=color:var(--text-muted)>—`);function u(a){return t(e,{get when(){return i(()=>a.str!==`[]`)()&&a.str!==``},get fallback(){return l()},get children(){var e=c();return n(e,()=>s(a.str,a.max)),o(()=>r(e,`title`,a.str)),e}})}export{u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,M as r,O as i,_ as a,c as o,f as s,k as c,r as l,s as u,v as d,w as f}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,M as r,O as i,_ as a,c as o,f as s,k as c,r as l,s as u,v as d,w as f}from"./Skeleton-DzR7XNxz.js";import{o as p,s as m}from"./index-DQu7WY9y.js";import{a as h}from"./utils-DDJC7tJV.js";var g=f(`<div style=display:flex;flex-direction:column;gap:2px><span style=font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em></span><span style=font-variant-numeric:tabular-nums>`),_=f(`<div style=margin-top:1.5rem><h2 style="font-size:14px;margin:0 0 0.5rem"> <span class="badge badge-muted"></span></h2><div class=table-wrapper><table><tbody>`),v=f(`<tr><td style=font-family:monospace;font-size:12px>`),y=f(`<div><div class=section-header style=gap:0.75rem></div><div style=margin-top:1rem>`),b=f(`<div class=empty-state style=color:var(--danger)>`),x=f(`<span class="badge badge-success">`),S=f(`<span class="badge badge-danger">`),C=f(`<p style=color:var(--text-muted);margin-top:0>`),w=f(`<div><div class=section-header style=gap:0.75rem><h1 class=page-title style=margin:0;font-family:monospace;font-size:16px></h1></div><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(140px, 1fr));gap:1rem;margin-top:1rem">`),T=f(`<span class="badge badge-accent">%`);function E(e){return(()=>{var t=g(),n=t.firstChild,r=n.nextSibling;return a(n,()=>e.label),a(r,()=>e.children),t})()}function D(n){return t(e,{get when(){return n.jids.length>0},get children(){var e=_(),r=e.firstChild,o=r.firstChild,s=o.nextSibling,c=r.nextSibling.firstChild.firstChild;return a(r,()=>n.label,o),a(s,()=>n.jids.length),a(c,t(i,{get each(){return n.jids},children:e=>(()=>{var t=v(),n=t.firstChild;return a(n,e),t})()})),e}})}function O(){let i=m(),f=()=>i.bid??``;n(()=>{document.title=`${u(`nav.batches`)} — Wurk`});let g=s(()=>({queryKey:[`batch`,f()],queryFn:()=>fetch(`${o()}/api/batches/${encodeURIComponent(f())}`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()})}));return t(r,{get children(){return[t(c,{get when(){return g.isPending},get children(){var e=y(),n=e.firstChild,r=n.nextSibling;return a(n,t(p,{href:`/batches`,class:`btn btn-sm`,get children(){return[`← `,d(()=>u(`nav.batches`))]}})),a(r,t(l,{count:8})),e}}),t(c,{get when(){return g.isError||!g.data},get children(){var e=b();return a(e,()=>u(`common.error`)),e}}),t(c,{get when(){return g.data},children:n=>{let r=()=>n().total-n().pending,i=()=>n().total>0?Math.round(r()/n().total*100):0;return(()=>{var r=w(),o=r.firstChild,s=o.firstChild,c=o.nextSibling;return a(o,t(p,{href:`/batches`,class:`btn btn-sm`,get children(){return[`← `,d(()=>u(`nav.batches`))]}}),s),a(s,()=>n().bid),a(o,t(e,{get when(){return n().complete},get fallback(){return(()=>{var e=T(),t=e.firstChild;return a(e,i,t),e})()},get children(){var e=x();return a(e,()=>u(`batches.complete`)),e}}),null),a(o,t(e,{get when(){return n().invalidated},get children(){var e=S();return a(e,()=>u(`batches.invalidated`)),e}}),null),a(r,t(e,{get when(){return n().description},get children(){var e=C();return a(e,()=>n().description),e}}),c),a(c,t(E,{get label(){return u(`table.total`)},get children(){return n().total.toLocaleString()}}),null),a(c,t(E,{get label(){return u(`table.pending`)},get children(){return n().pending.toLocaleString()}}),null),a(c,t(E,{get label(){return u(`table.failures`)},get children(){return n().failures.toLocaleString()}}),null),a(c,t(E,{get label(){return u(`batches.children`)},get children(){return n().child_count.toLocaleString()}}),null),a(c,t(E,{get label(){return u(`table.created`)},get children(){return d(()=>!!n().created_at)()?h(n().created_at):`—`}}),null),a(c,t(E,{get label(){return u(`batches.completed`)},get children(){return d(()=>!!n().complete_at)()?h(n().complete_at):`—`}}),null),a(c,t(e,{get when(){return n().parent_bid},get children(){return t(E,{get label(){return u(`batches.parent`)},get children(){return n().parent_bid}})}}),null),a(c,t(e,{get when(){return n().tags.length>0},get children(){return t(E,{get label(){return u(`batches.tags`)},get children(){return n().tags.join(`, `)}})}}),null),a(r,t(D,{get label(){return u(`batches.failed_jobs`)},get jids(){return n().failed_jids}}),null),a(r,t(D,{get label(){return u(`batches.dead_jobs`)},get jids(){return n().dead_jids}}),null),r})()}})]}})}export{O as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,M as r,O as i,_ as a,b as o,c as s,f as c,i as l,k as u,s as d,v as f,w as p,x as m,z as h}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,M as r,O as i,_ as a,b as o,c as s,f as c,i as l,k as u,s as d,v as f,w as p,x as m,z as h}from"./Skeleton-DzR7XNxz.js";import{n as g,o as _}from"./index-DQu7WY9y.js";import{a as v,o as y}from"./utils-DDJC7tJV.js";import{n as b,r as x,t as S}from"./useResetPageOnEmpty-B_FsMah6.js";import{n as C,t as w}from"./useSort-BeYbztkN.js";import{t as T}from"./PageHeader-C44KNMGm.js";var E=p(`<div>`),D=p(`<div class=empty-state style=color:var(--danger)>`),O=p(`<span class="badge badge-accent">`),k=p(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),A=p(`<div class=empty-state>`),j=p(`<tr><td style=font-family:monospace;font-size:12px></td><td></td><td></td><td></td><td></td><td style=width:100px><div style=display:flex;align-items:center;gap:0.5rem><div class=progress-bar-track style=flex:1><div class=progress-bar-fill></div></div><span style=font-size:11px;color:var(--text-muted);min-width:32px>%</span></div></td><td>`),M=25,N={bid:e=>e.bid,description:e=>e.description??``,total:e=>e.total,pending:e=>e.pending,failures:e=>e.failures,progress:e=>e.total>0?(e.total-e.pending)/e.total:0,created:e=>e.created_at??null};function P(){let[p,P]=b();n(()=>{document.title=`${d(`nav.batches`)} — Wurk`});let F=c(()=>({queryKey:[`batches`,p()],queryFn:()=>g(`${s()}/api/batches?page=${p()-1}&count=${M}`)}));S(p,P,()=>!F.isPending&&!!F.data,()=>(F.data?.batches.length??0)===0);let{sorted:I,sort:L,toggle:R}=w(()=>F.data?.batches??[],N);return t(r,{get children(){return[t(u,{get when(){return F.isPending},get children(){var e=E();return a(e,t(T,{icon:`fa-table-cells-large`,get title(){return d(`nav.batches`)},get summary(){return d(`summaries.batches`)}}),null),a(e,t(l,{rows:8,cols:7}),null),e}}),t(u,{get when(){return F.isError||!F.data},get children(){var e=D();return a(e,()=>d(`common.error`)),e}}),t(u,{get when(){return F.data},children:n=>(()=>{var r=E();return a(r,t(T,{icon:`fa-table-cells-large`,get title(){return d(`nav.batches`)},get summary(){return d(`summaries.batches`)},get children(){var e=O();return a(e,()=>n().total.toLocaleString()),e}}),null),a(r,t(e,{get when(){return I().length>0},get fallback(){return(()=>{var e=A();return a(e,()=>d(`common.empty`)),e})()},get children(){return[(()=>{var e=k(),n=e.firstChild.firstChild,r=n.firstChild,s=n.nextSibling;return a(r,t(C,{get label(){return d(`table.bid`)},sortKey:`bid`,get sort(){return L()},onSort:R}),null),a(r,t(C,{get label(){return d(`table.description`)},sortKey:`description`,get sort(){return L()},onSort:R}),null),a(r,t(C,{get label(){return d(`table.total`)},sortKey:`total`,get sort(){return L()},onSort:R}),null),a(r,t(C,{get label(){return d(`table.pending`)},sortKey:`pending`,get sort(){return L()},onSort:R}),null),a(r,t(C,{get label(){return d(`table.failures`)},sortKey:`failures`,get sort(){return L()},onSort:R}),null),a(r,t(C,{get label(){return d(`table.progress`)},sortKey:`progress`,get sort(){return L()},onSort:R}),null),a(r,t(C,{get label(){return d(`table.created`)},sortKey:`created`,get sort(){return L()},onSort:R}),null),a(s,t(i,{get each(){return I()},children:e=>{let n=e.total-e.pending,r=e.total>0?n/e.total*100:0;return(()=>{var n=j(),i=n.firstChild,s=i.nextSibling,c=s.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling,p=d.firstChild.firstChild,g=p.firstChild,b=p.nextSibling,x=b.firstChild,S=d.nextSibling;return a(i,t(_,{get href(){return`/batches/${e.bid}`},get title(){return e.bid},get children(){return y(e.bid,14)}})),a(s,()=>y(e.description??`—`,40)),a(c,()=>e.total.toLocaleString()),a(l,()=>e.pending.toLocaleString()),a(u,()=>e.failures.toLocaleString()),m(g,`width`,`${r}%`),a(b,()=>Math.round(r),x),a(S,(()=>{var t=f(()=>!!e.created_at);return()=>t()?v(e.created_at):`—`})()),h(t=>{var n=e.description??``,r=e.pending>0?`var(--warning)`:`var(--success)`,i=e.failures>0?`var(--danger)`:void 0,a=e.failures>0?`var(--danger)`:`var(--success)`;return n!==t.e&&o(s,`title`,t.e=n),r!==t.t&&m(l,`color`,t.t=r),i!==t.a&&m(u,`color`,t.a=i),a!==t.o&&m(g,`background`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}})),e})(),t(x,{get page(){return p()},get total(){return n().total},count:M,onChange:P})]}}),null),r})()})]}})}export{P as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,C as t,F as n,J as r,M as i,O as a,V as o,_ as s,b as c,c as l,d as u,f as d,g as f,k as p,p as m,r as h,s as g,v as _,w as v,x as y,z as b}from"./Skeleton-DOYDkzg1.js";import{a as x,r as S,t as C}from"./index-CZTcs-pM.js";import{a as w,i as T,n as ee,o as E,r as D,t as O}from"./utils-DDJC7tJV.js";import{t as k}from"./PageHeader-CsDvJSOA.js";import{t as A}from"./Modal-t4FI_LaY.js";import{t as j}from"./ArgsValue-DYfBiXrJ.js";var M=v(`<code style=font-size:12px>`),N=v(`<span class="badge badge-accent">`),P=v(`<span>`),F=v(`<div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),I=v(`<div><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:0.75rem;margin-bottom:1rem"></div><div style=margin-bottom:0.25rem></div><div style=display:flex;flex-wrap:wrap;gap:0.25rem;margin-bottom:1rem></div><h3 class=section-title style=margin-bottom:0.5rem> <span class="badge badge-muted">`),L=v(`<div><div></div><div style=font-size:14px>`),R=v(`<span class="badge badge-muted">`),z=v(`<div class=empty-state style=padding:1rem>`),B=v(`<tr><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td><span class="badge badge-muted"></span></td><td></td><td>`),V=v(`<span class="badge badge-muted"><i class="fa-solid fa-microchip"style=margin-right:0.35rem>`),te=v(`<span class="badge badge-muted"><i class="fa-solid fa-memory"style=margin-right:0.35rem>`),H=v(`<div style=display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem;margin-bottom:0.75rem><span style=font-weight:600;font-size:15px><i class="fa-solid fa-server"style=color:var(--text-muted);margin-right:0.5rem></i></span><span class="badge badge-muted"> </span><span class="badge badge-muted"style=font-variant-numeric:tabular-nums> <!> / `),U=v(`<div>`),W=v(`<div class=empty-state style=color:var(--danger)>`),G=v(`<button class="btn btn-sm btn-ghost">`),K=v(`<button class="btn btn-sm btn-ghost btn-danger">`),q=v(`<div style=display:flex;align-items:center;gap:0.6rem><span class="badge badge-muted"> `),J=v(`<div class=empty-state>`),Y=v(`<section style=margin-bottom:1.5rem><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 320px), 1fr));gap:1rem">`),X=v(`<span class=live-dot title="Heartbeat OK">`),Z=v(`<span class="badge badge-accent"><i class="fa-solid fa-crown"style=margin-right:0.3rem>`),ne=v(`<span class="badge badge-warning">Quiet`),Q=v(`<span class="badge badge-muted">embedded`),re=v(`<div style=display:flex;gap:0.4rem;margin-top:0.85rem><button class="btn btn-sm"></button><button class="btn btn-sm btn-danger">`),ie=v(`<div class="card row-clickable"><div style=display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:0.75rem><div><div style=font-weight:600;font-size:15px>PID </div><div style=color:var(--text-muted);font-size:12px></div></div><div style=display:flex;gap:0.375rem></div></div><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.5rem;margin-bottom:0.75rem"><div><div> / </div><div style=font-weight:600;font-size:18px;font-variant-numeric:tabular-nums> / </div></div><div><div></div><div style=font-size:13px></div></div><div><div></div><div style=font-size:13px></div></div></div><div class=progress-bar-track style=margin-bottom:0.75rem><div class=progress-bar-fill></div></div><div><div style=margin-bottom:0.25rem></div><div style=display:flex;flex-wrap:wrap;gap:0.25rem>`);function ae(e){let t=new Map;for(let n of e){let e=t.get(n.hostname);e||(e={hostname:n.hostname,processes:[],busy:0,concurrency:0,rssKb:0},t.set(n.hostname,e)),e.processes.push(n),e.busy+=n.busy,e.concurrency+=n.concurrency,e.rssKb+=n.rss??0,e.cpuModel??=n.cpu_model??void 0,e.cores??=n.cores,e.memoryTotalKb??=n.memory_total_kb}return[...t.values()].sort((e,t)=>e.hostname.localeCompare(t.hostname))}function oe(e){return e>90?`var(--danger)`:e>70?`var(--warning)`:`var(--accent)`}var $={"font-size":`11px`,color:`var(--text-muted)`,"text-transform":`uppercase`,"letter-spacing":`0.04em`};function se(r){let i=d(()=>({queryKey:[`workers`],queryFn:()=>fetch(`${l()}/api/workers`).then(e=>e.json()),refetchInterval:5e3})),o=()=>(i.data??[]).filter(e=>e.process_id===r.proc.identity),u=()=>[[g(`busy.identity`),(()=>{var e=M();return s(e,()=>r.proc.identity),e})()],[g(`busy.leader`),r.proc.leader?(()=>{var e=N();return s(e,()=>g(`busy.leader`)),e})():`—`],[`PID`,r.proc.pid],[g(`busy.started`),r.proc.started_at?(()=>{var e=P();return s(e,()=>w(r.proc.started_at)),b(()=>c(e,`title`,T(r.proc.started_at))),e})():`—`],[g(`busy.heartbeat`),(()=>{var e=P();return s(e,()=>w(r.proc.beat)),b(()=>c(e,`title`,T(r.proc.beat))),e})()],[`${g(`table.busy`)} / ${g(`table.concurrency`)}`,`${r.proc.busy} / ${r.proc.concurrency}`],[g(`busy.rss`),D(r.proc.rss??0)],[g(`busy.rtt`),r.proc.rtt_us?`${(r.proc.rtt_us/1e3).toFixed(1)} ${g(`common.ms`)}`:`—`],[g(`busy.version`),r.proc.version??`—`],[g(`busy.tag`),r.proc.tag||`—`],[g(`busy.labels`),r.proc.labels?.length?r.proc.labels.join(`, `):`—`]];return(()=>{var i=I(),l=i.firstChild,d=l.nextSibling,f=d.nextSibling,p=f.nextSibling,m=p.firstChild,h=m.nextSibling;return s(l,n(a,{get each(){return u()},children:([e,n])=>(()=>{var r=L(),i=r.firstChild,a=i.nextSibling;return s(i,e),s(a,n),b(e=>t(i,$,e)),r})()})),s(d,()=>g(`table.queues`)),s(f,n(a,{get each(){return r.proc.queues},children:e=>(()=>{var t=R();return s(t,e),t})()})),s(p,()=>g(`busy.running_jobs`),m),s(h,()=>o().length),s(i,n(e,{get when(){return o().length>0},get fallback(){return(()=>{var e=z();return s(e,()=>g(`busy.no_running`)),e})()},get children(){var e=F(),t=e.firstChild.firstChild,r=t.firstChild.firstChild,i=r.nextSibling,l=i.nextSibling,u=l.nextSibling,d=u.nextSibling,f=t.nextSibling;return s(r,()=>g(`table.jid`)),s(i,()=>g(`table.class`)),s(l,()=>g(`table.queue`)),s(u,()=>g(`table.args`)),s(d,()=>g(`busy.running_since`)),s(f,n(a,{get each(){return o()},children:e=>(()=>{var t=B(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.firstChild,l=a.nextSibling,u=l.nextSibling;return s(r,()=>E(e.jid,12)),s(i,()=>e.klass),s(o,()=>e.queue),s(l,n(j,{get str(){return O(e.args)},max:40})),s(u,()=>w(e.run_at)),b(t=>{var n=e.jid,i=T(e.run_at);return n!==t.e&&c(r,`title`,t.e=n),i!==t.t&&c(u,`title`,t.t=i),t},{e:void 0,t:void 0}),t})()})),e}}),null),b(e=>t(d,{...$},e)),i})()}function ce(t){let r=()=>t.group.memoryTotalKb?Math.min(100,t.group.rssKb/t.group.memoryTotalKb*100):null;return(()=>{var i=H(),a=i.firstChild;a.firstChild;var o=a.nextSibling,l=o.firstChild,u=o.nextSibling,d=u.firstChild,f=d.nextSibling;return f.nextSibling,s(a,()=>t.group.hostname,null),s(o,()=>t.group.processes.length,l),s(o,()=>g(`dashboard.processes`).toLowerCase(),null),s(i,n(e,{get when(){return t.group.cpuModel},get children(){var e=V();return e.firstChild,s(e,()=>E(t.group.cpuModel,40),null),b(()=>c(e,`title`,t.group.cpuModel??void 0)),e}}),u),s(i,n(e,{get when(){return _(()=>t.group.cores!=null)()&&t.group.cores>0},get children(){var e=R();return s(e,()=>g(`busy.cores`,{n:t.group.cores})),e}}),u),s(i,n(e,{get when(){return t.group.rssKb>0},get children(){var e=te();return e.firstChild,s(e,()=>D(t.group.rssKb),null),s(e,(()=>{var e=_(()=>!!t.group.memoryTotalKb);return()=>e()?` / ${D(t.group.memoryTotalKb)}`:``})(),null),b(()=>c(e,`title`,r()==null?void 0:`${r().toFixed(1)}% ${g(`busy.of_total_ram`)}`)),e}}),u),s(u,()=>g(`table.busy`),d),s(u,()=>t.group.busy,f),s(u,()=>t.group.concurrency,null),i})()}function le(){let f=x(),v=()=>f.data?.read_only??!1,T=m(),[E,O]=o(null);r(()=>{document.title=`${g(`nav.busy`)} — Wurk`});let j=d(()=>({queryKey:[`processes`],queryFn:()=>fetch(`${l()}/api/processes`).then(e=>e.json()),refetchInterval:5e3})),M=u(()=>({mutationFn:e=>S(`${l()}/api/busy/${e.signal}`,{identity:e.scope===`all`?`all`:e.identity}),onSuccess:()=>T.invalidateQueries({queryKey:[`processes`]}),onError:C})),N=e=>window.confirm(g(`actions.confirm`,{action:g(`actions.stop`),scope:e})),P=()=>(j.data??[]).some(e=>!e.embedded),F=()=>ae(j.data??[]),I=()=>(j.data??[]).find(e=>e.identity===E())??null;return n(i,{get children(){return[n(p,{get when(){return j.isPending},get children(){var e=U();return s(e,n(k,{icon:`fa-gears`,get title(){return g(`nav.busy`)},get summary(){return g(`summaries.busy`)}}),null),s(e,n(h,{count:6}),null),e}}),n(p,{get when(){return j.isError||!j.data},get children(){var e=W();return s(e,()=>g(`common.error`)),e}}),n(p,{get when(){return j.data},children:r=>(()=>{var i=U();return s(i,n(k,{icon:`fa-gears`,get title(){return g(`nav.busy`)},get summary(){return g(`summaries.busy`)},get children(){var t=q(),i=t.firstChild,a=i.firstChild;return s(i,()=>r().length,a),s(i,()=>g(`dashboard.processes`).toLowerCase(),null),s(t,n(e,{get when(){return F().length>1},get children(){var e=R();return s(e,()=>g(`busy.hosts`,{n:F().length})),e}}),null),s(t,n(e,{get when(){return _(()=>!v())()&&P()},get children(){return[(()=>{var e=G();return e.$$click=()=>M.mutate({signal:`quiet`,scope:`all`}),s(e,()=>`${g(`actions.quiet`)} ${g(`actions.all_suffix`)}`),b(()=>e.disabled=M.isPending),e})(),(()=>{var e=K();return e.$$click=()=>N(g(`actions.scope_all_processes`))&&M.mutate({signal:`stop`,scope:`all`}),s(e,()=>`${g(`actions.stop`)} ${g(`actions.all_suffix`)}`),b(()=>e.disabled=M.isPending),e})()]}}),null),t}}),null),s(i,n(e,{get when(){return r().length>0},get fallback(){return(()=>{var e=J();return s(e,()=>g(`common.empty`)),e})()},get children(){return n(a,{get each(){return F()},children:r=>(()=>{var i=Y(),o=i.firstChild;return s(i,n(ce,{group:r}),o),s(o,n(a,{get each(){return r.processes},children:r=>{let i=r.concurrency>0?r.busy/r.concurrency*100:0,o=Date.now()/1e3-r.beat<30;return(()=>{var l=ie(),u=l.firstChild,d=u.firstChild,f=d.firstChild;f.firstChild;var p=f.nextSibling,m=d.nextSibling,h=u.nextSibling,x=h.firstChild,S=x.firstChild,C=S.firstChild,T=S.nextSibling,E=T.firstChild,k=x.nextSibling,A=k.firstChild,j=A.nextSibling,P=k.nextSibling.firstChild,F=P.nextSibling,I=h.nextSibling,L=I.firstChild,z=I.nextSibling.firstChild,B=z.nextSibling;return l.$$click=()=>r.identity&&O(r.identity),s(f,()=>r.pid,null),s(p,()=>r.tag||r.hostname,null),s(p,(()=>{var e=_(()=>!!r.started_at);return()=>e()?` · ${g(`busy.up_for`)} ${ee(Date.now()/1e3-r.started_at)}`:``})(),null),s(m,n(e,{when:o,get children(){return X()}}),null),s(m,n(e,{get when(){return r.leader},get children(){var e=Z();return e.firstChild,s(e,()=>g(`busy.leader`),null),b(()=>c(e,`title`,g(`busy.leader_title`))),e}}),null),s(m,n(e,{get when(){return r.quiet},get children(){return ne()}}),null),s(m,n(e,{get when(){return r.embedded},get children(){return Q()}}),null),s(S,()=>g(`table.busy`),C),s(S,()=>g(`table.concurrency`),null),s(T,()=>r.busy,E),s(T,()=>r.concurrency,null),s(A,()=>g(`busy.heartbeat`)),y(j,`color`,o?`var(--success)`:`var(--danger)`),s(j,()=>w(r.beat)),s(P,()=>g(`busy.rss`)),s(F,()=>D(r.rss??0)),y(L,`width`,`${i}%`),s(z,()=>g(`table.queues`)),s(B,n(a,{get each(){return r.queues},children:e=>(()=>{var t=R();return s(t,e),t})()})),s(l,n(e,{get when(){return _(()=>!v())()&&!r.embedded},get children(){var e=re(),t=e.firstChild,n=t.nextSibling;return e.$$click=e=>e.stopPropagation(),t.$$click=()=>M.mutate({signal:`quiet`,scope:`one`,identity:r.identity}),s(t,()=>g(`actions.quiet`)),n.$$click=()=>N(g(`actions.scope_this_process`))&&M.mutate({signal:`stop`,scope:`one`,identity:r.identity}),s(n,()=>g(`actions.stop`)),b(e=>{var r=M.isPending,i=M.isPending;return r!==e.e&&(t.disabled=e.e=r),i!==e.t&&(n.disabled=e.t=i),e},{e:void 0,t:void 0}),e}}),null),b(e=>{var n=$,r=$,a=$,o=oe(i),s={...$};return e.e=t(S,n,e.e),e.t=t(A,r,e.t),e.a=t(P,a,e.a),o!==e.o&&y(L,`background`,e.o=o),e.i=t(z,s,e.i),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),l})()}})),i})()})}}),null),s(i,n(A,{get open(){return I()!==null},onClose:()=>O(null),get title(){return _(()=>!!I())()?`${I().hostname} · PID ${I().pid}`:``},width:780,get children(){return n(e,{get when(){return I()},children:e=>n(se,{get proc(){return e()}})})}}),null),i})()})]}})}f([`click`]);export{le as default};
|
|
1
|
+
import{A as e,C as t,F as n,J as r,M as i,O as a,V as o,_ as s,b as c,c as l,d as u,f as d,g as f,k as p,p as m,r as h,s as g,v as _,w as v,x as y,z as b}from"./Skeleton-DzR7XNxz.js";import{a as x,r as S,t as C}from"./index-DQu7WY9y.js";import{a as w,i as T,n as ee,o as E,r as D,t as O}from"./utils-DDJC7tJV.js";import{t as k}from"./PageHeader-C44KNMGm.js";import{t as A}from"./Modal-Crrsu64-.js";import{t as j}from"./ArgsValue-D74zX0MI.js";var M=v(`<code style=font-size:12px>`),N=v(`<span class="badge badge-accent">`),P=v(`<span>`),F=v(`<div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),I=v(`<div><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:0.75rem;margin-bottom:1rem"></div><div style=margin-bottom:0.25rem></div><div style=display:flex;flex-wrap:wrap;gap:0.25rem;margin-bottom:1rem></div><h3 class=section-title style=margin-bottom:0.5rem> <span class="badge badge-muted">`),L=v(`<div><div></div><div style=font-size:14px>`),R=v(`<span class="badge badge-muted">`),z=v(`<div class=empty-state style=padding:1rem>`),B=v(`<tr><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td><span class="badge badge-muted"></span></td><td></td><td>`),V=v(`<span class="badge badge-muted"><i class="fa-solid fa-microchip"style=margin-right:0.35rem>`),te=v(`<span class="badge badge-muted"><i class="fa-solid fa-memory"style=margin-right:0.35rem>`),H=v(`<div style=display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem;margin-bottom:0.75rem><span style=font-weight:600;font-size:15px><i class="fa-solid fa-server"style=color:var(--text-muted);margin-right:0.5rem></i></span><span class="badge badge-muted"> </span><span class="badge badge-muted"style=font-variant-numeric:tabular-nums> <!> / `),U=v(`<div>`),W=v(`<div class=empty-state style=color:var(--danger)>`),G=v(`<button class="btn btn-sm btn-ghost">`),K=v(`<button class="btn btn-sm btn-ghost btn-danger">`),q=v(`<div style=display:flex;align-items:center;gap:0.6rem><span class="badge badge-muted"> `),J=v(`<div class=empty-state>`),Y=v(`<section style=margin-bottom:1.5rem><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 320px), 1fr));gap:1rem">`),X=v(`<span class=live-dot title="Heartbeat OK">`),Z=v(`<span class="badge badge-accent"><i class="fa-solid fa-crown"style=margin-right:0.3rem>`),ne=v(`<span class="badge badge-warning">Quiet`),Q=v(`<span class="badge badge-muted">embedded`),re=v(`<div style=display:flex;gap:0.4rem;margin-top:0.85rem><button class="btn btn-sm"></button><button class="btn btn-sm btn-danger">`),ie=v(`<div class="card row-clickable"><div style=display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:0.75rem><div><div style=font-weight:600;font-size:15px>PID </div><div style=color:var(--text-muted);font-size:12px></div></div><div style=display:flex;gap:0.375rem></div></div><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.5rem;margin-bottom:0.75rem"><div><div> / </div><div style=font-weight:600;font-size:18px;font-variant-numeric:tabular-nums> / </div></div><div><div></div><div style=font-size:13px></div></div><div><div></div><div style=font-size:13px></div></div></div><div class=progress-bar-track style=margin-bottom:0.75rem><div class=progress-bar-fill></div></div><div><div style=margin-bottom:0.25rem></div><div style=display:flex;flex-wrap:wrap;gap:0.25rem>`);function ae(e){let t=new Map;for(let n of e){let e=t.get(n.hostname);e||(e={hostname:n.hostname,processes:[],busy:0,concurrency:0,rssKb:0},t.set(n.hostname,e)),e.processes.push(n),e.busy+=n.busy,e.concurrency+=n.concurrency,e.rssKb+=n.rss??0,e.cpuModel??=n.cpu_model??void 0,e.cores??=n.cores,e.memoryTotalKb??=n.memory_total_kb}return[...t.values()].sort((e,t)=>e.hostname.localeCompare(t.hostname))}function oe(e){return e>90?`var(--danger)`:e>70?`var(--warning)`:`var(--accent)`}var $={"font-size":`11px`,color:`var(--text-muted)`,"text-transform":`uppercase`,"letter-spacing":`0.04em`};function se(r){let i=d(()=>({queryKey:[`workers`],queryFn:()=>fetch(`${l()}/api/workers`).then(e=>e.json()),refetchInterval:5e3})),o=()=>(i.data??[]).filter(e=>e.process_id===r.proc.identity),u=()=>[[g(`busy.identity`),(()=>{var e=M();return s(e,()=>r.proc.identity),e})()],[g(`busy.leader`),r.proc.leader?(()=>{var e=N();return s(e,()=>g(`busy.leader`)),e})():`—`],[`PID`,r.proc.pid],[g(`busy.started`),r.proc.started_at?(()=>{var e=P();return s(e,()=>w(r.proc.started_at)),b(()=>c(e,`title`,T(r.proc.started_at))),e})():`—`],[g(`busy.heartbeat`),(()=>{var e=P();return s(e,()=>w(r.proc.beat)),b(()=>c(e,`title`,T(r.proc.beat))),e})()],[`${g(`table.busy`)} / ${g(`table.concurrency`)}`,`${r.proc.busy} / ${r.proc.concurrency}`],[g(`busy.rss`),D(r.proc.rss??0)],[g(`busy.rtt`),r.proc.rtt_us?`${(r.proc.rtt_us/1e3).toFixed(1)} ${g(`common.ms`)}`:`—`],[g(`busy.version`),r.proc.version??`—`],[g(`busy.tag`),r.proc.tag||`—`],[g(`busy.labels`),r.proc.labels?.length?r.proc.labels.join(`, `):`—`]];return(()=>{var i=I(),l=i.firstChild,d=l.nextSibling,f=d.nextSibling,p=f.nextSibling,m=p.firstChild,h=m.nextSibling;return s(l,n(a,{get each(){return u()},children:([e,n])=>(()=>{var r=L(),i=r.firstChild,a=i.nextSibling;return s(i,e),s(a,n),b(e=>t(i,$,e)),r})()})),s(d,()=>g(`table.queues`)),s(f,n(a,{get each(){return r.proc.queues},children:e=>(()=>{var t=R();return s(t,e),t})()})),s(p,()=>g(`busy.running_jobs`),m),s(h,()=>o().length),s(i,n(e,{get when(){return o().length>0},get fallback(){return(()=>{var e=z();return s(e,()=>g(`busy.no_running`)),e})()},get children(){var e=F(),t=e.firstChild.firstChild,r=t.firstChild.firstChild,i=r.nextSibling,l=i.nextSibling,u=l.nextSibling,d=u.nextSibling,f=t.nextSibling;return s(r,()=>g(`table.jid`)),s(i,()=>g(`table.class`)),s(l,()=>g(`table.queue`)),s(u,()=>g(`table.args`)),s(d,()=>g(`busy.running_since`)),s(f,n(a,{get each(){return o()},children:e=>(()=>{var t=B(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.firstChild,l=a.nextSibling,u=l.nextSibling;return s(r,()=>E(e.jid,12)),s(i,()=>e.klass),s(o,()=>e.queue),s(l,n(j,{get str(){return O(e.args)},max:40})),s(u,()=>w(e.run_at)),b(t=>{var n=e.jid,i=T(e.run_at);return n!==t.e&&c(r,`title`,t.e=n),i!==t.t&&c(u,`title`,t.t=i),t},{e:void 0,t:void 0}),t})()})),e}}),null),b(e=>t(d,{...$},e)),i})()}function ce(t){let r=()=>t.group.memoryTotalKb?Math.min(100,t.group.rssKb/t.group.memoryTotalKb*100):null;return(()=>{var i=H(),a=i.firstChild;a.firstChild;var o=a.nextSibling,l=o.firstChild,u=o.nextSibling,d=u.firstChild,f=d.nextSibling;return f.nextSibling,s(a,()=>t.group.hostname,null),s(o,()=>t.group.processes.length,l),s(o,()=>g(`dashboard.processes`).toLowerCase(),null),s(i,n(e,{get when(){return t.group.cpuModel},get children(){var e=V();return e.firstChild,s(e,()=>E(t.group.cpuModel,40),null),b(()=>c(e,`title`,t.group.cpuModel??void 0)),e}}),u),s(i,n(e,{get when(){return _(()=>t.group.cores!=null)()&&t.group.cores>0},get children(){var e=R();return s(e,()=>g(`busy.cores`,{n:t.group.cores})),e}}),u),s(i,n(e,{get when(){return t.group.rssKb>0},get children(){var e=te();return e.firstChild,s(e,()=>D(t.group.rssKb),null),s(e,(()=>{var e=_(()=>!!t.group.memoryTotalKb);return()=>e()?` / ${D(t.group.memoryTotalKb)}`:``})(),null),b(()=>c(e,`title`,r()==null?void 0:`${r().toFixed(1)}% ${g(`busy.of_total_ram`)}`)),e}}),u),s(u,()=>g(`table.busy`),d),s(u,()=>t.group.busy,f),s(u,()=>t.group.concurrency,null),i})()}function le(){let f=x(),v=()=>f.data?.read_only??!1,T=m(),[E,O]=o(null);r(()=>{document.title=`${g(`nav.busy`)} — Wurk`});let j=d(()=>({queryKey:[`processes`],queryFn:()=>fetch(`${l()}/api/processes`).then(e=>e.json()),refetchInterval:5e3})),M=u(()=>({mutationFn:e=>S(`${l()}/api/busy/${e.signal}`,{identity:e.scope===`all`?`all`:e.identity}),onSuccess:()=>T.invalidateQueries({queryKey:[`processes`]}),onError:C})),N=e=>window.confirm(g(`actions.confirm`,{action:g(`actions.stop`),scope:e})),P=()=>(j.data??[]).some(e=>!e.embedded),F=()=>ae(j.data??[]),I=()=>(j.data??[]).find(e=>e.identity===E())??null;return n(i,{get children(){return[n(p,{get when(){return j.isPending},get children(){var e=U();return s(e,n(k,{icon:`fa-gears`,get title(){return g(`nav.busy`)},get summary(){return g(`summaries.busy`)}}),null),s(e,n(h,{count:6}),null),e}}),n(p,{get when(){return j.isError||!j.data},get children(){var e=W();return s(e,()=>g(`common.error`)),e}}),n(p,{get when(){return j.data},children:r=>(()=>{var i=U();return s(i,n(k,{icon:`fa-gears`,get title(){return g(`nav.busy`)},get summary(){return g(`summaries.busy`)},get children(){var t=q(),i=t.firstChild,a=i.firstChild;return s(i,()=>r().length,a),s(i,()=>g(`dashboard.processes`).toLowerCase(),null),s(t,n(e,{get when(){return F().length>1},get children(){var e=R();return s(e,()=>g(`busy.hosts`,{n:F().length})),e}}),null),s(t,n(e,{get when(){return _(()=>!v())()&&P()},get children(){return[(()=>{var e=G();return e.$$click=()=>M.mutate({signal:`quiet`,scope:`all`}),s(e,()=>`${g(`actions.quiet`)} ${g(`actions.all_suffix`)}`),b(()=>e.disabled=M.isPending),e})(),(()=>{var e=K();return e.$$click=()=>N(g(`actions.scope_all_processes`))&&M.mutate({signal:`stop`,scope:`all`}),s(e,()=>`${g(`actions.stop`)} ${g(`actions.all_suffix`)}`),b(()=>e.disabled=M.isPending),e})()]}}),null),t}}),null),s(i,n(e,{get when(){return r().length>0},get fallback(){return(()=>{var e=J();return s(e,()=>g(`common.empty`)),e})()},get children(){return n(a,{get each(){return F()},children:r=>(()=>{var i=Y(),o=i.firstChild;return s(i,n(ce,{group:r}),o),s(o,n(a,{get each(){return r.processes},children:r=>{let i=r.concurrency>0?r.busy/r.concurrency*100:0,o=Date.now()/1e3-r.beat<30;return(()=>{var l=ie(),u=l.firstChild,d=u.firstChild,f=d.firstChild;f.firstChild;var p=f.nextSibling,m=d.nextSibling,h=u.nextSibling,x=h.firstChild,S=x.firstChild,C=S.firstChild,T=S.nextSibling,E=T.firstChild,k=x.nextSibling,A=k.firstChild,j=A.nextSibling,P=k.nextSibling.firstChild,F=P.nextSibling,I=h.nextSibling,L=I.firstChild,z=I.nextSibling.firstChild,B=z.nextSibling;return l.$$click=()=>r.identity&&O(r.identity),s(f,()=>r.pid,null),s(p,()=>r.tag||r.hostname,null),s(p,(()=>{var e=_(()=>!!r.started_at);return()=>e()?` · ${g(`busy.up_for`)} ${ee(Date.now()/1e3-r.started_at)}`:``})(),null),s(m,n(e,{when:o,get children(){return X()}}),null),s(m,n(e,{get when(){return r.leader},get children(){var e=Z();return e.firstChild,s(e,()=>g(`busy.leader`),null),b(()=>c(e,`title`,g(`busy.leader_title`))),e}}),null),s(m,n(e,{get when(){return r.quiet},get children(){return ne()}}),null),s(m,n(e,{get when(){return r.embedded},get children(){return Q()}}),null),s(S,()=>g(`table.busy`),C),s(S,()=>g(`table.concurrency`),null),s(T,()=>r.busy,E),s(T,()=>r.concurrency,null),s(A,()=>g(`busy.heartbeat`)),y(j,`color`,o?`var(--success)`:`var(--danger)`),s(j,()=>w(r.beat)),s(P,()=>g(`busy.rss`)),s(F,()=>D(r.rss??0)),y(L,`width`,`${i}%`),s(z,()=>g(`table.queues`)),s(B,n(a,{get each(){return r.queues},children:e=>(()=>{var t=R();return s(t,e),t})()})),s(l,n(e,{get when(){return _(()=>!v())()&&!r.embedded},get children(){var e=re(),t=e.firstChild,n=t.nextSibling;return e.$$click=e=>e.stopPropagation(),t.$$click=()=>M.mutate({signal:`quiet`,scope:`one`,identity:r.identity}),s(t,()=>g(`actions.quiet`)),n.$$click=()=>N(g(`actions.scope_this_process`))&&M.mutate({signal:`stop`,scope:`one`,identity:r.identity}),s(n,()=>g(`actions.stop`)),b(e=>{var r=M.isPending,i=M.isPending;return r!==e.e&&(t.disabled=e.e=r),i!==e.t&&(n.disabled=e.t=i),e},{e:void 0,t:void 0}),e}}),null),b(e=>{var n=$,r=$,a=$,o=oe(i),s={...$};return e.e=t(S,n,e.e),e.t=t(A,r,e.t),e.a=t(P,a,e.a),o!==e.o&&y(L,`background`,e.o=o),e.i=t(z,s,e.i),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),l})()}})),i})()})}}),null),s(i,n(A,{get open(){return I()!==null},onClose:()=>O(null),get title(){return _(()=>!!I())()?`${I().hostname} · PID ${I().pid}`:``},width:780,get children(){return n(e,{get when(){return I()},children:e=>n(se,{get proc(){return e()}})})}}),null),i})()})]}})}f([`click`]);export{le as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,M as r,O as i,V as a,_ as o,b as s,c,d as l,f as u,g as d,i as f,k as p,p as m,s as h,v as g,w as _,x as v,z as y}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,M as r,O as i,V as a,_ as o,b as s,c,d as l,f as u,g as d,i as f,k as p,p as m,s as h,v as g,w as _,x as v,z as y}from"./Skeleton-DzR7XNxz.js";import{a as b,r as x,t as S}from"./index-DQu7WY9y.js";import{a as C,i as w,o as T}from"./utils-DDJC7tJV.js";import{n as E,t as D}from"./useSort-BeYbztkN.js";import{t as O}from"./PageHeader-C44KNMGm.js";import{t as k}from"./Modal-Crrsu64-.js";var A=_(`<div>`),j=_(`<div class=empty-state style=color:var(--danger)>`),M=_(`<span class="badge badge-muted">`),N=_(`<th>`),P=_(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),F=_(`<div class=empty-state>`),I=_(`<td><div style=display:flex;gap:0.4rem><button class="btn btn-sm"></button><button class="btn btn-sm">`),L=_(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px></td><td></td><td></td><td style=color:var(--text-muted)></td><td></td><td>`),R=_(`<span class="badge badge-success">`),z=_(`<div class=table-wrapper><table><thead><tr><th></th><th></th></tr></thead><tbody>`),B=_(`<tr><td style=color:var(--text-muted)></td><td style=font-family:monospace;font-size:12px>`),V={schedule:e=>e.schedule,klass:e=>e.klass,queue:e=>e.queue,last_fire:e=>e.last_fire_at,next_fire:e=>e.next_fire_at,status:e=>e.paused?`paused`:`active`};function H(){let d=m(),_=b(),H=()=>_.data?.read_only??!1,[U,W]=a(null);n(()=>{document.title=`${h(`nav.cron`)} — Wurk`});let G=u(()=>({queryKey:[`cron`],queryFn:()=>fetch(`${c()}/api/cron`).then(e=>e.json()),refetchInterval:15e3})),K=(e,t)=>x(`${c()}/api/cron/${e}/${t}`),q=l(()=>({mutationFn:({lid:e,paused:t})=>K(e,t?`unpause`:`pause`),onSuccess:()=>d.invalidateQueries({queryKey:[`cron`]}),onError:S})),J=l(()=>({mutationFn:e=>K(e,`enqueue`),onSuccess:()=>d.invalidateQueries({queryKey:[`cron`]}),onError:S})),Y=u(()=>({queryKey:[`cron-history`,U()?.lid],queryFn:()=>fetch(`${c()}/api/cron/${U().lid}/history`).then(e=>e.json()).then(e=>e.history),enabled:U()!==null})),{sorted:X,sort:Z,toggle:Q}=D(()=>G.data??[],V);return t(r,{get children(){return[t(p,{get when(){return G.isPending},get children(){var e=A();return o(e,t(O,{icon:`fa-stopwatch`,get title(){return h(`nav.cron`)},get summary(){return h(`summaries.cron`)}}),null),o(e,t(f,{rows:8,get cols(){return H()?6:7}}),null),e}}),t(p,{get when(){return G.isError||!G.data},get children(){var e=j();return o(e,()=>h(`common.error`)),e}}),t(p,{get when(){return G.data},children:n=>(()=>{var a=A();return o(a,t(O,{icon:`fa-stopwatch`,get title(){return h(`nav.cron`)},get summary(){return h(`summaries.cron`)},get children(){var e=M();return o(e,()=>n().length),e}}),null),o(a,t(e,{get when(){return n().length>0},get fallback(){return(()=>{var e=F();return o(e,()=>h(`common.empty`)),e})()},get children(){var n=P(),r=n.firstChild.firstChild,a=r.firstChild,c=r.nextSibling;return o(a,t(E,{get label(){return h(`table.schedule`)},sortKey:`schedule`,get sort(){return Z()},onSort:Q}),null),o(a,t(E,{get label(){return h(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),o(a,t(E,{get label(){return h(`table.queue`)},sortKey:`queue`,get sort(){return Z()},onSort:Q}),null),o(a,t(E,{get label(){return h(`cron.last_fire`)},sortKey:`last_fire`,get sort(){return Z()},onSort:Q}),null),o(a,t(E,{get label(){return h(`cron.next_fire`)},sortKey:`next_fire`,get sort(){return Z()},onSort:Q}),null),o(a,t(E,{get label(){return h(`table.status`)},sortKey:`status`,get sort(){return Z()},onSort:Q}),null),o(a,t(e,{get when(){return!H()},get children(){return N()}}),null),o(c,t(i,{get each(){return X()},children:n=>(()=>{var r=L(),i=r.firstChild,a=i.nextSibling,c=a.nextSibling,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling;return r.$$click=()=>W(n),o(i,()=>n.schedule),o(a,()=>T(n.klass,32)),o(c,()=>n.queue),o(l,(()=>{var e=g(()=>!!n.last_fire_at);return()=>e()?C(n.last_fire_at):`—`})()),o(u,(()=>{var e=g(()=>!!n.paused);return()=>e()?`—`:g(()=>!!n.next_fire_at)()?C(n.next_fire_at):`—`})()),o(d,t(e,{get when(){return n.paused},get fallback(){return(()=>{var e=R();return o(e,()=>h(`dashboard.active`)),e})()},get children(){var e=M();return o(e,()=>h(`dashboard.paused`)),e}})),o(r,t(e,{get when(){return!H()},get children(){var e=I(),t=e.firstChild.firstChild,r=t.nextSibling;return e.$$click=e=>e.stopPropagation(),t.$$click=()=>q.mutate({lid:n.lid,paused:n.paused}),o(t,(()=>{var e=g(()=>!!n.paused);return()=>e()?h(`actions.unpause`):h(`actions.pause`)})()),r.$$click=()=>J.mutate(n.lid),o(r,()=>h(`actions.enqueue`)),y(e=>{var n=q.isPending,i=J.isPending;return n!==e.e&&(t.disabled=e.e=n),i!==e.t&&(r.disabled=e.t=i),e},{e:void 0,t:void 0}),e}}),null),y(e=>{var t=n.tz??void 0,r=n.klass,o=n.paused?`var(--text-muted)`:`var(--accent)`;return t!==e.e&&s(i,`title`,e.e=t),r!==e.t&&s(a,`title`,e.t=r),o!==e.a&&v(u,`color`,e.a=o),e},{e:void 0,t:void 0,a:void 0}),r})()})),n}}),null),o(a,t(k,{get open(){return U()!==null},onClose:()=>W(null),get title(){return g(()=>!!U())()?`${h(`cron.history_title`)} — ${T(U().klass,40)}`:h(`cron.history_title`)},get children(){return t(r,{get children(){return[t(p,{get when(){return Y.isPending},get children(){return t(f,{rows:6,cols:2})}}),t(p,{get when(){return Y.isError},get children(){var e=j();return o(e,()=>h(`common.error`)),e}}),t(p,{get when(){return!Y.data||Y.data.length===0},get children(){var e=F();return o(e,()=>h(`cron.no_history`)),e}}),t(p,{get when(){return Y.data},children:e=>(()=>{var n=z(),r=n.firstChild.firstChild,a=r.firstChild.firstChild,c=a.nextSibling,l=r.nextSibling;return o(a,()=>h(`cron.fired`)),o(c,()=>h(`table.jid`)),o(l,t(i,{get each(){return e()},children:([e,t])=>(()=>{var n=B(),r=n.firstChild,i=r.nextSibling;return o(r,()=>C(e)),o(i,t),y(()=>s(r,`title`,w(e))),n})()})),n})()})]}})}}),null),a})()})]}})}d([`click`]);export{H as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,F as t,J as n,L as r,M as i,O as a,R as o,V as s,_ as c,b as l,c as u,f as d,g as f,h as p,i as m,k as h,n as ee,q as g,r as _,s as v,v as y,w as b,z as x}from"./Skeleton-DzR7XNxz.js";import{i as S,o as C}from"./index-DQu7WY9y.js";import{n as w}from"./utils-DDJC7tJV.js";import{r as T}from"./charts-BVHHGof7.js";var E=e=>1-(1-e)**3,D=()=>typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;function O(e,t=700){let[n,i]=s(0),a=0,o=null;return r(()=>{let n=e();if(D()||!Number.isFinite(n)){a=n,i(n);return}let r=a;if(r===n)return;let s=performance.now(),c=e=>{let l=Math.min((e-s)/t,1),u=r+(n-r)*E(l);a=u,i(u),l<1&&(o=requestAnimationFrame(c))};o=requestAnimationFrame(c),g(()=>{o!==null&&cancelAnimationFrame(o)})}),n}function k(e){let t=O(()=>e.value);return y(()=>Math.round(t()).toLocaleString())}var A=b(`<span class=obs-metric__sub>`),j=b(`<span class=obs-metric__sub><span> <!>%</span> `),M=b(`<div class=obs>`),N=b(`<div class=empty-state style=color:var(--danger)>`),P=b(`<div class=empty-state>`),te=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true>`),F=b(`<span class=obs-metric__value>`),I=b(`<i class="fa-solid fa-arrow-right obs-card__go"aria-hidden=true>`),ne=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true>`),re=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-ban obs-metric__icon"aria-hidden=true>`),ie=b(`<div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-spinner obs-metric__icon"aria-hidden=true>`),L=b(`<span class=obs-mono>`),R=b(`<span class=obs-stat__value>`),ae=b(`<i class="fa-solid fa-arrow-right"aria-hidden=true>`),oe=b(`<div class=obs-tablescroll><table><thead><tr><th>Name</th><th></th><th></th><th></th></tr></thead><tbody>`),se=b(`<div class=obs><div class=obs-metrics></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-panel__controls><div class=obs-seg role=tablist aria-label="Time range"></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div></div><div class=obs-chartbox></div></div><div class=obs-stats></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title></h2></div></div><div class="obs-card obs-cta"><span class=obs-cta__icon><i class="fa-solid fa-bolt"aria-hidden=true></i></span><h2 class=obs-cta__title></h2><p class=obs-cta__text></p><div class=obs-cta__actions><a class="obs-btn obs-btn--primary"href=https://developerz-ai.github.io/wurk/ target=_blank rel=noreferrer><i class="fa-solid fa-download"aria-hidden=true></i> </a><a class="obs-btn obs-btn--ghost"href=https://github.com/developerz-ai/wurk/wiki target=_blank rel=noreferrer><i class="fa-solid fa-book"aria-hidden=true></i> `),z=b(`<button role=tab>`),B=b(`<div class=empty-state style=height:320px;display:grid;place-items:center>`),V=b(`<span class="obs-chip obs-chip--paused">`),H=b(`<tr><td style=font-weight:500;color:var(--obs-text)></td><td></td><td></td><td>`),U=b(`<span class="obs-chip obs-chip--active">`);function W(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}var G=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,desc_key:`dashboard.range_1h_desc`},{key:`24h`,bucket:`1m`,window:`24h`,desc_key:`dashboard.range_24h_desc`},{key:`7d`,bucket:`5m`,window:`7d`,desc_key:`dashboard.range_7d_desc`},{key:`30d`,bucket:`1h`,window:`30d`,desc_key:`dashboard.range_30d_desc`}],K=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function q(n){return t(e,{get when(){return n.pct!==null},get fallback(){return(()=>{var e=A();return c(e,()=>v(`dashboard.vs_last_hour`)),e})()},get children(){return(()=>{let e=()=>n.pct>=0,t=()=>e()===n.goodWhenUp;return(()=>{var r=j(),i=r.firstChild,a=i.firstChild,o=a.nextSibling;return o.nextSibling,i.nextSibling,c(i,()=>e()?`▲`:`▼`,a),c(i,()=>e()?`+`:``,o),c(i,()=>n.pct,o),c(r,()=>v(`dashboard.vs_last_hour`),null),x(()=>p(i,t()?`up`:`down`)),r})()})()}})}function J(){let r=S(),[f,g]=s(0),b=()=>G[f()];n(()=>{document.title=`${v(`nav.dashboard`)} — Wurk`});let E=d(()=>({queryKey:[`stats`],queryFn:()=>fetch(`${u()}/api/stats`).then(e=>e.json()),enabled:!r.connected(),refetchInterval:!r.connected()&&5e3})),D=d(()=>({queryKey:[`history`,b().bucket,b().window],queryFn:()=>fetch(`${u()}/api/history/${b().bucket}?window=${b().window}`).then(e=>e.json()),refetchInterval:3e4})),O=()=>r.stats()??E.data??null,j=o(()=>(D.data?.series??[]).map(e=>({...e,label:K(e.at,b().bucket)}))),J=o(()=>{let e=b(),t=`slice`in e?e.slice:void 0;return t?j().slice(-t):j()}),Y=o(()=>J().some(e=>e.processed>0||e.failed>0));return t(i,{get children(){return[t(h,{get when(){return y(()=>!!E.isLoading)()&&!O()},get children(){var e=M();return c(e,t(_,{count:4}),null),c(e,t(m,{rows:6,cols:4}),null),e}}),t(h,{get when(){return y(()=>!!E.isError)()&&!O()},get children(){var e=N();return c(e,()=>v(`common.error`)),e}}),t(h,{get when(){return!O()},get children(){var e=P();return c(e,()=>v(`common.empty`)),e}}),t(h,{get when(){return O()},children:n=>(()=>{var r=se(),i=r.firstChild,o=i.nextSibling,s=o.firstChild,u=s.firstChild,d=u.firstChild,m=d.nextSibling,h=u.nextSibling.firstChild,_=h.nextSibling.firstChild;_.firstChild.nextSibling;var S=_.nextSibling;S.firstChild.nextSibling;var E=s.nextSibling,O=o.nextSibling,M=O.nextSibling,N=M.firstChild,K=N.firstChild,X=M.nextSibling.firstChild.nextSibling,Z=X.nextSibling,Q=Z.nextSibling.firstChild;Q.firstChild.nextSibling;var $=Q.nextSibling;return $.firstChild.nextSibling,c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/metrics`,get children(){return[(()=>{var e=te(),t=e.firstChild;return c(t,()=>v(`dashboard.processed`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().processed}})),e})(),t(q,{get pct(){return W(j(),`processed`)},goodWhenUp:!0}),I()]}}),null),c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/retries`,get children(){return[(()=>{var e=ne(),t=e.firstChild;return c(t,()=>v(`dashboard.failed`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().failed}})),e})(),t(q,{get pct(){return W(j(),`failed`)},goodWhenUp:!1}),I()]}}),null),c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/dead`,get children(){return[(()=>{var e=re(),t=e.firstChild;return c(t,()=>v(`dashboard.expired`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().expired}})),e})(),(()=>{var e=A();return c(e,(()=>{var e=y(()=>n().expired===0);return()=>e()?v(`dashboard.stable_threshold`):v(`dashboard.above_threshold`)})()),e})(),I()]}}),null),c(i,t(C,{class:`obs-card obs-metric obs-card--link`,href:`/busy`,get children(){return[(()=>{var e=ie(),t=e.firstChild;return c(t,()=>v(`dashboard.busy`)),e})(),(()=>{var e=F();return c(e,t(k,{get value(){return n().busy}})),e})(),(()=>{var e=A();return c(e,(()=>{var e=y(()=>n().busy===0);return()=>e()?v(`dashboard.system_idle`):v(`dashboard.processing`)})()),e})(),I()]}}),null),c(d,()=>v(`dashboard.performance_insight`)),c(m,()=>v(`dashboard.perf_subtitle`,{range:v(b().desc_key)})),c(h,t(a,{each:G,children:(e,t)=>(()=>{var n=z();return n.$$click=()=>g(t()),c(n,()=>e.key),x(e=>{var r=t()===f(),i=t()===f()?`is-active`:``;return r!==e.e&&l(n,`aria-selected`,e.e=r),i!==e.t&&p(n,e.t=i),e},{e:void 0,t:void 0}),n})()})),c(_,()=>v(`dashboard.processed`),null),c(S,()=>v(`dashboard.failed`),null),c(E,t(e,{get when(){return!D.isPending},get fallback(){return t(ee,{height:320})},get children(){return t(e,{get when(){return Y()},get fallback(){return(()=>{var e=B();return c(e,()=>v(`dashboard.no_history`)),e})()},get children(){return t(T,{get data(){return J()},height:320,xMinTickGap:64,get series(){return[{key:`processed`,name:v(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:v(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/queues`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.enqueued`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().enqueued}})),e})(),I()]}}),null),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/retries`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.retries`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().retries}})),e})(),I()]}}),null),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/scheduled`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.scheduled`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().scheduled}})),e})(),I()]}}),null),c(O,t(C,{class:`obs-card obs-stat obs-card--link`,href:`/dead`,get children(){return[(()=>{var e=L();return c(e,()=>v(`dashboard.dead`)),e})(),(()=>{var e=R();return c(e,t(k,{get value(){return n().dead}})),e})(),I()]}}),null),c(K,()=>v(`table.queues`)),c(N,t(C,{class:`obs-table__link`,href:`/queues`,get children(){return[`View All `,ae()]}}),null),c(M,t(e,{get when(){return n().queues.length>0},get fallback(){return(()=>{var e=P();return c(e,()=>v(`common.empty`)),e})()},get children(){var r=oe(),i=r.firstChild.firstChild,o=i.firstChild.firstChild.nextSibling,s=o.nextSibling,u=s.nextSibling,d=i.nextSibling;return c(o,()=>v(`table.size`)),c(s,()=>v(`table.latency`)),c(u,()=>v(`table.status`)),c(d,t(a,{get each(){return n().queues},children:n=>(()=>{var r=H(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling;return c(i,()=>n.name),c(a,t(k,{get value(){return n.size}})),c(o,()=>w(n.latency)),c(s,t(e,{get when(){return n.paused},get fallback(){return(()=>{var e=U();return c(e,()=>v(`dashboard.active`)),e})()},get children(){var e=V();return c(e,()=>v(`dashboard.paused`)),e}})),x(()=>l(o,`title`,`${n.latency.toFixed(3)}s`)),r})()})),r}}),null),c(X,()=>v(`dashboard.strapline`)),c(Z,()=>v(`dashboard.tagline`)),c(Q,()=>v(`dashboard.install`),null),c($,()=>v(`dashboard.docs`),null),r})()})]}})}f([`click`]);export{J as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,M as r,O as i,V as a,_ as o,b as s,c,f as l,g as u,i as d,k as f,s as p,w as m,z as h}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,M as r,O as i,V as a,_ as o,b as s,c,f as l,g as u,i as d,k as f,s as p,w as m,z as h}from"./Skeleton-DzR7XNxz.js";import{a as ee,n as te}from"./index-DQu7WY9y.js";import{a as g,i as _,o as v,t as y}from"./utils-DDJC7tJV.js";import{n as ne,r as b,t as re}from"./useResetPageOnEmpty-B_FsMah6.js";import{n as x,t as S}from"./useSort-BeYbztkN.js";import{t as C}from"./PageHeader-C44KNMGm.js";import{t as w}from"./ArgsValue-D74zX0MI.js";import{t as T}from"./JobDetailModal-DS1ypyoc.js";import{a as E,i as D,n as O,r as ie,t as ae}from"./FilterBox-IJkHYpdm.js";var k=m(`<div>`),oe=m(`<div class=empty-state style=color:var(--danger)>`),se=m(`<span class="badge badge-danger">`),ce=m(`<th class=row-action><input type=checkbox>`),A=m(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),j=m(`<div class=empty-state>`),M=m(`<td class=row-action><input type=checkbox>`),N=m(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td></td><td>`),P=25,F={jid:e=>e.jid,klass:e=>e.klass,args:e=>y(e.args),error_class:e=>e.error_class,error_message:e=>e.error_message,failed_at:e=>e.at},I=[{cmd:`retry`,label:p(`actions.retry`)},{cmd:`delete`,label:p(`actions.delete`),danger:!0}];function L(){let[u,m]=ne(),[L,R]=a(``),[z,B]=a(null),[V,H]=a(null),U=ee(),W=()=>U.data?.read_only??!1,G=D(),{single:K,bulk:q,all:J}=ie(`dead`),le=()=>K.isPending||q.isPending||J.isPending;n(()=>{document.title=`${p(`nav.dead`)} — Wurk`});let ue=e=>{R(e),m(1)},Y=l(()=>({queryKey:[`dead`,u(),L()],queryFn:()=>te(`${c()}/api/dead?page=${u()-1}&count=${P}&substr=${encodeURIComponent(L())}`)}));re(u,m,()=>!Y.isPending&&!!Y.data,()=>(Y.data?.entries.length??0)===0);let{sorted:X,sort:Z,toggle:Q}=S(()=>Y.data?.entries??[],F),$=()=>X().map(O),de=()=>$().length>0&&$().every(e=>G.selected().has(e));return t(r,{get children(){return[t(f,{get when(){return Y.isPending},get children(){var e=k();return o(e,t(C,{icon:`fa-skull`,get title(){return p(`nav.dead`)},get summary(){return p(`summaries.dead`)}}),null),o(e,t(d,{rows:8,cols:7}),null),e}}),t(f,{get when(){return Y.isError||!Y.data},get children(){var e=oe();return o(e,()=>p(`common.error`)),e}}),t(f,{get when(){return Y.data},children:n=>(()=>{var r=k();return o(r,t(C,{icon:`fa-skull`,get title(){return p(`nav.dead`)},get summary(){return p(`summaries.dead`)},get children(){var e=se();return o(e,()=>n().total.toLocaleString()),e}}),null),o(r,t(ae,{get value(){return L()},onChange:ue,get placeholder(){return p(`common.filter_placeholder`)}}),null),o(r,t(e,{get when(){return X().length>0},get fallback(){return(()=>{var e=j();return o(e,()=>p(`common.empty`)),e})()},get children(){return[t(e,{get when(){return!W()},get children(){return t(E,{bulk:I,all:I,get selectedCount(){return G.count()},get total(){return n().total},get pending(){return le()},onBulk:e=>q.mutate({keys:[...G.selected()],cmd:e},{onSuccess:G.clear}),onAll:e=>J.mutate(e,{onSuccess:G.clear})})}}),(()=>{var n=A(),r=n.firstChild.firstChild,a=r.firstChild,c=r.nextSibling;return o(a,t(e,{get when(){return!W()},get children(){var e=ce(),t=e.firstChild;return t.addEventListener(`change`,()=>G.toggleAll($())),h(()=>s(t,`aria-label`,p(`table.select_all`))),h(()=>t.checked=de()),e}}),null),o(a,t(x,{get label(){return p(`table.jid`)},sortKey:`jid`,get sort(){return Z()},onSort:Q}),null),o(a,t(x,{get label(){return p(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),o(a,t(x,{get label(){return p(`table.args`)},sortKey:`args`,get sort(){return Z()},onSort:Q}),null),o(a,t(x,{get label(){return p(`table.error`)},sortKey:`error_class`,get sort(){return Z()},onSort:Q}),null),o(a,t(x,{get label(){return p(`table.message`)},sortKey:`error_message`,get sort(){return Z()},onSort:Q}),null),o(a,t(x,{get label(){return p(`table.failed_at`)},sortKey:`failed_at`,get sort(){return Z()},onSort:Q}),null),o(c,t(i,{get each(){return X()},children:n=>{let r=y(n.args),i=O(n);return(()=>{var a=N(),c=a.firstChild,l=c.nextSibling,u=l.nextSibling,d=u.nextSibling,f=d.nextSibling,m=f.nextSibling;return a.$$click=()=>{B(n),H(i)},o(a,t(e,{get when(){return!W()},get children(){var e=M(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.addEventListener(`change`,()=>G.toggle(i)),h(()=>s(t,`aria-label`,p(`table.select_row`))),h(()=>t.checked=G.selected().has(i)),e}}),c),o(c,()=>v(n.jid,12)),o(l,()=>n.klass),o(u,t(w,{str:r,max:40})),o(d,()=>v(n.error_class,25)),o(f,()=>v(n.error_message,40)),o(m,()=>g(n.at)),h(e=>{var t=n.jid,r=n.error_class??``,i=n.error_message??``,a=_(n.at);return t!==e.e&&s(c,`title`,e.e=t),r!==e.t&&s(d,`title`,e.t=r),i!==e.a&&s(f,`title`,e.a=i),a!==e.o&&s(m,`title`,e.o=a),e},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}})),n})(),t(b,{get page(){return u()},get total(){return n().total},count:P,onChange:m})]}}),null),o(r,t(T,{get entry(){return z()},get atLabel(){return p(`table.failed_at`)},get actions(){return W()?void 0:I},get pending(){return K.isPending},onAction:e=>{let t=V();t&&K.mutate({key:t,cmd:e},{onSuccess:()=>{B(null),H(null)}})},onClose:()=>{B(null),H(null)}}),null),r})()})]}})}u([`click`]);export{L as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,L as n,V as r,_ as i,b as a,c as o,g as s,i as c,n as l,s as u,v as d,w as f,z as p}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,L as n,V as r,_ as i,b as a,c as o,g as s,i as c,n as l,s as u,v as d,w as f,z as p}from"./Skeleton-DzR7XNxz.js";import{a as m,s as h}from"./index-DQu7WY9y.js";import{t as g}from"./PageHeader-C44KNMGm.js";var _=f(`<div class=empty-state style=color:var(--danger)>`),v=f(`<div class=skeleton-stack>`),y=f(`<div class="card ext-view">`),b=f(`<a class="btn btn-sm"target=_blank rel="noopener noreferrer"><i class="fa-solid fa-arrow-up-right-from-square"style=margin-inline-end:0.4rem>`),x=f(`<iframe style="width:100%;height:calc(100vh - 11rem);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)">`);function S(){let n=h(),r=()=>n.tab??``,i=m(),a=e=>e.replace(/\/+$/,``),o=()=>i.data?.custom_tabs?.find(e=>a(e.path)===a(r())),s=()=>o()?.name??r();return t(e,{get when(){return o()?.ext_name},keyed:!0,get fallback(){return t(w,{get tab(){return r()},get title(){return s()}})},children:e=>t(C,{extName:e,get indexPath(){return r()},get title(){return s()}})})}function C(a){let s=`${o()}/ext/${a.extName}/`,[f,m]=r(null),[h,b]=r(!1),x=0,S=async(e,t)=>{let n=++x;try{let r=await fetch(s+e,t),i=await r.text();if(n!==x)return;b(!r.ok&&r.status!==404),m(i)}catch{n===x&&b(!0)}};n(()=>{S(a.indexPath.replace(/\/+$/,``))});let C=e=>{let t=e.target.closest(`a`);if(!t?.getAttribute(`href`))return;let n=new URL(t.href,window.location.origin);n.origin!==window.location.origin||!n.pathname.startsWith(s)||(e.preventDefault(),S(n.pathname.slice(s.length)+n.search))},w=e=>{let t=e.target,n=new URL(t.getAttribute(`action`)||window.location.href,window.location.origin);if(n.origin!==window.location.origin||!n.pathname.startsWith(s))return;e.preventDefault();let r=new FormData(t);if((t.method||`get`).toUpperCase()===`GET`){let e=new URLSearchParams(Array.from(r.entries())).toString();S(`${n.pathname.slice(s.length)}${e?`?${e}`:``}`)}else S(n.pathname.slice(s.length)+n.search,{method:`POST`,body:r})};return[t(g,{icon:`fa-puzzle-piece`,get title(){return a.title},get summary(){return u(`extension.summary`)}}),t(e,{get when(){return h()},get children(){var e=_();return i(e,()=>u(`common.error`)),e}}),t(e,{get when(){return d(()=>f()===null)()&&!h()},get children(){var e=v();return i(e,t(l,{height:`1.5rem`,width:`40%`}),null),i(e,t(c,{rows:6,cols:4}),null),e}}),t(e,{get when(){return d(()=>f()!==null)()&&!h()},get children(){var e=y();return e.addEventListener(`submit`,w),e.$$click=C,p(()=>e.innerHTML=f()),e}})]}function w(e){let n=()=>`${o()}/${e.tab}?wurk_ext_embed=1`;return[t(g,{icon:`fa-puzzle-piece`,get title(){return e.title},get summary(){return u(`extension.summary`)},get children(){var t=b();return t.firstChild,i(t,()=>u(`extension.open`),null),p(()=>a(t,`href`,`${o()}/${e.tab}`)),t}}),(()=>{var t=x();return p(r=>{var i=e.title,o=n();return i!==r.e&&a(t,`title`,r.e=i),o!==r.t&&a(t,`src`,r.t=o),r},{e:void 0,t:void 0}),t})()]}s([`click`]);export{S as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{F as e,L as t,O as n,V as r,_ as i,b as a,c as o,d as s,g as c,h as l,p as u,q as d,s as f,v as p,w as m,z as h}from"./Skeleton-
|
|
1
|
+
import{F as e,L as t,O as n,V as r,_ as i,b as a,c as o,d as s,g as c,h as l,p as u,q as d,s as f,v as p,w as m,z as h}from"./Skeleton-DzR7XNxz.js";import{r as g,t as _}from"./index-DQu7WY9y.js";var v=m(`<div class=action-bar><div class=action-bar-group><span class=action-bar-count></span></div><div class=action-bar-group>`),y=m(`<button>`);function b(t){let r=(e,t)=>!e.danger||window.confirm(f(`actions.confirm`,{action:e.label,scope:t}));return(()=>{var a=v(),o=a.firstChild,s=o.firstChild,c=o.nextSibling;return i(s,(()=>{var e=p(()=>t.selectedCount>0);return()=>e()?f(`actions.selected`,{n:t.selectedCount}):f(`actions.select_hint`)})()),i(o,e(n,{get each(){return t.bulk},children:e=>(()=>{var n=y();return n.$$click=()=>r(e,f(`actions.scope_selected`,{n:t.selectedCount}))&&t.onBulk(e.cmd),i(n,()=>e.label),h(r=>{var i=`btn btn-sm${e.danger?` btn-danger`:``}`,a=t.pending||t.selectedCount===0;return i!==r.e&&l(n,r.e=i),a!==r.t&&(n.disabled=r.t=a),r},{e:void 0,t:void 0}),n})()}),null),i(c,e(n,{get each(){return t.all},children:e=>(()=>{var n=y();return n.$$click=()=>r(e,f(`actions.scope_all`))&&t.onAll(e.cmd),i(n,()=>`${e.label} ${f(`actions.all_suffix`)}`),h(r=>{var i=`btn btn-sm btn-ghost${e.danger?` btn-danger`:``}`,a=t.pending||t.total===0;return i!==r.e&&l(n,r.e=i),a!==r.t&&(n.disabled=r.t=a),r},{e:void 0,t:void 0}),n})()})),a})()}c([`click`]);function x(){let[e,t]=r(new Set);return{selected:e,toggle:e=>t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),toggleAll:e=>t(t=>e.length>0&&e.every(e=>t.has(e))?new Set:new Set(e)),clear:()=>t(new Set),count:()=>e().size}}function S(e){return`${e.score}|${e.jid}`}function C(e){let t=u(),n=()=>{t.invalidateQueries({queryKey:[e]}),t.invalidateQueries({queryKey:[`stats`]})};return{single:s(()=>({mutationFn:({key:t,cmd:n})=>g(`${o()}/api/${e}/${encodeURIComponent(t)}`,{cmd:n}),onSuccess:n,onError:_})),bulk:s(()=>({mutationFn:({keys:t,cmd:n})=>g(`${o()}/api/${e}`,{keys:t,cmd:n}),onSuccess:n,onError:_})),all:s(()=>({mutationFn:t=>g(`${o()}/api/${e}/all/${t}`),onSuccess:n,onError:_}))}}var w=m(`<div class=filter-box style=margin-bottom:1rem;display:flex><input class=input type=search style=flex:1;max-width:360px>`),T=250;function E(e){let[n,i]=r(e.value);return t(()=>{let t=n(),r=setTimeout(()=>{t!==e.value&&e.onChange(t)},T);d(()=>clearTimeout(r))}),(()=>{var t=w(),r=t.firstChild;return r.$$input=e=>i(e.currentTarget.value),h(t=>{var n=e.placeholder??f(`common.filter_placeholder`),i=e.placeholder??f(`common.filter_placeholder`);return n!==t.e&&a(r,`placeholder`,t.e=n),i!==t.t&&a(r,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),h(()=>r.value=n()),t})()}c([`input`]);export{b as a,x as i,S as n,C as r,E as t};
|
data/vendor/assets/dashboard/assets/{JobDetailModal-DuMdKUMm.js → JobDetailModal-DS1ypyoc.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as e,F as t,O as n,_ as r,g as i,h as a,s as o,v as s,w as c,x as l,z as u}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,O as n,_ as r,g as i,h as a,s as o,v as s,w as c,x as l,z as u}from"./Skeleton-DzR7XNxz.js";import{a as d,i as f,t as p}from"./utils-DDJC7tJV.js";import{t as m}from"./Modal-Crrsu64-.js";var h=c(`<div style=display:flex;flex-direction:column;gap:3px><span style=font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em></span><span style=font-size:13px;word-break:break-word>`),g=c(`<div style=display:flex;gap:0.5rem;justify-content:flex-end;flex-wrap:wrap>`),_=c(`<button>`),v=c(`<span style=color:var(--text-muted)>—`),y=c(`<div style=display:flex;flex-direction:column;gap:3px><span style=font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.04em></span><span style=font-size:13px;color:var(--danger);word-break:break-word>`),b=c(`<pre class=job-backtrace>`),x=c(`<div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:0.9rem">`),S=c(`<div style=display:flex;flex-direction:column;gap:1rem><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:0.9rem">`),C=c(`<pre style=margin:0;white-space:pre-wrap;word-break:break-word>`);function w(e){return(()=>{var t=h(),n=t.firstChild,i=n.nextSibling;return r(n,()=>e.label),r(i,()=>e.children),u(t=>l(i,`font-family`,e.mono?`ui-monospace, monospace`:void 0)),t})()}function T(i){return t(m,{get open(){return i.entry!==null},get onClose(){return i.onClose},get title(){return i.entry?.klass??o(`job.detail`)},width:680,footer:i.actions&&i.actions.length>0&&i.onAction?(()=>{var e=g();return r(e,t(n,{get each(){return i.actions},children:e=>(()=>{var t=_();return t.$$click=()=>{i.pending||e.danger&&!window.confirm(o(`actions.confirm`,{action:e.label,scope:o(`job.detail`).toLowerCase()}))||i.onAction?.(e.cmd)},r(t,()=>e.label),u(n=>{var r=`btn btn-sm${e.danger?` btn-danger`:``}`,o=i.pending;return r!==n.e&&a(t,n.e=r),o!==n.t&&(t.disabled=n.t=o),n},{e:void 0,t:void 0}),t})()})),e})():void 0,get children(){return t(e,{get when(){return i.entry},children:a=>(()=>{var c=S(),l=c.firstChild;return r(l,t(w,{get label(){return o(`job.class`)},get children(){return a().klass}}),null),r(l,t(e,{get when(){return a().queue},get children(){return t(w,{get label(){return o(`job.queue`)},get children(){return a().queue}})}}),null),r(l,t(w,{get label(){return o(`job.jid`)},mono:!0,get children(){return a().jid}}),null),r(l,t(e,{get when(){return typeof a().retry_count==`number`},get children(){return t(w,{get label(){return o(`job.retries`)},get children(){return a().retry_count}})}}),null),r(l,t(e,{get when(){return a().enqueued_at!=null},get children(){return t(w,{get label(){return o(`job.enqueued`)},mono:!0,get children(){return[s(()=>f(a().enqueued_at)),` (`,s(()=>d(a().enqueued_at)),`)`]}})}}),null),r(l,t(e,{get when(){return a().at!=null},get children(){return t(w,{get label(){return i.atLabel??o(`job.at`)},mono:!0,get children(){return[s(()=>f(a().at)),` (`,s(()=>d(a().at)),`)`]}})}}),null),r(c,t(w,{get label(){return o(`job.args`)},mono:!0,get children(){return t(e,{get when(){return p(a().args)===`[]`||p(a().args)===``},get fallback(){return(()=>{var e=C();return r(e,()=>p(a().args)),e})()},get children(){return v()}})}}),null),r(c,t(e,{get when(){return a().error_class||a().error_message},get children(){var e=y(),t=e.firstChild,n=t.nextSibling;return r(t,()=>o(`job.error`)),r(n,()=>a().error_class,null),r(n,(()=>{var e=s(()=>!!a().error_message);return()=>e()?`: ${a().error_message}`:``})(),null),e}}),null),r(c,t(e,{get when(){return s(()=>!!a().error_backtrace)()&&a().error_backtrace.length>0},get children(){return t(w,{get label(){return o(`job.backtrace`)},get children(){var e=b();return r(e,()=>a().error_backtrace.join(`
|
|
2
2
|
`)),e}})}}),null),r(c,t(e,{get when(){return s(()=>!!a().custom_rows)()&&a().custom_rows.length>0},get children(){var e=x();return r(e,t(n,{get each(){return a().custom_rows},children:([e,n])=>t(w,{label:e,children:n})})),e}}),null),c})()})}})}i([`click`]);export{T as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,M as r,O as i,_ as a,b as o,c as s,d as c,f as l,g as u,i as d,k as f,p,s as m,w as h,x as g,z as _}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,M as r,O as i,_ as a,b as o,c as s,d as c,f as l,g as u,i as d,k as f,p,s as m,w as h,x as g,z as _}from"./Skeleton-DzR7XNxz.js";import{a as v,n as y,r as b,t as x}from"./index-DQu7WY9y.js";import{n as S,r as C,t as w}from"./useResetPageOnEmpty-B_FsMah6.js";import{n as T,t as E}from"./useSort-BeYbztkN.js";import{t as D}from"./PageHeader-C44KNMGm.js";var O=h(`<div>`),k=h(`<div class=empty-state style=color:var(--danger)>`),A=h(`<span class="badge badge-muted">`),j=h(`<th>`),M=h(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),N=h(`<div class=empty-state>`),P=h(`<div style=display:flex;align-items:center;gap:0.5rem><div class=progress-bar-track style=flex:1><div class=progress-bar-fill></div></div><span style=font-size:12px;color:var(--text-muted);min-width:36px>%`),F=h(`<span class="badge badge-success">`),I=h(`<td><button class="btn btn-sm">`),L=h(`<tr><td style=font-weight:500></td><td><span class="badge badge-accent"></span></td><td style=font-variant-numeric:tabular-nums></td><td style=font-variant-numeric:tabular-nums></td><td style=width:160px></td><td>`),R=h(`<span style=color:var(--text-muted)>—`),z=h(`<span class="badge badge-danger">`),B=25,V={name:e=>e.name,type:e=>e.type,used:e=>e.status?.used??0,limit:e=>e.status?.limit??null,usage:e=>{let t=e.status?.used??0,n=e.status?.limit??null;return n&&n>0?t/n:0},status:e=>e.status?.[`available?`]??!0?`available`:`exhausted`};function H(){let u=p(),h=v(),H=()=>h.data?.read_only??!1,[U,W]=S();n(()=>{document.title=`${m(`nav.limiters`)} — Wurk`});let G=l(()=>({queryKey:[`limiters`,U()],queryFn:()=>y(`${s()}/api/limiters?page=${U()-1}&count=${B}`),refetchInterval:5e3})),K=c(()=>({mutationFn:e=>b(`${s()}/api/limiters/${encodeURIComponent(e)}/reset`),onSuccess:()=>u.invalidateQueries({queryKey:[`limiters`]}),onError:x}));w(U,W,()=>!G.isPending&&!!G.data,()=>(G.data?.limiters.length??0)===0);let{sorted:q,sort:J,toggle:Y}=E(()=>G.data?.limiters??[],V),X=e=>window.confirm(m(`actions.confirm`,{action:m(`actions.reset`),scope:e}))&&K.mutate(e);return t(r,{get children(){return[t(f,{get when(){return G.isPending},get children(){var e=O();return a(e,t(D,{icon:`fa-gauge`,get title(){return m(`nav.limiters`)},get summary(){return m(`summaries.limiters`)}}),null),a(e,t(d,{rows:8,get cols(){return H()?6:7}}),null),e}}),t(f,{get when(){return G.isError||!G.data},get children(){var e=k();return a(e,()=>m(`common.error`)),e}}),t(f,{get when(){return G.data},children:n=>(()=>{var r=O();return a(r,t(D,{icon:`fa-gauge`,get title(){return m(`nav.limiters`)},get summary(){return m(`summaries.limiters`)},get children(){var e=A();return a(e,()=>n().total.toLocaleString()),e}}),null),a(r,t(e,{get when(){return q().length>0},get fallback(){return(()=>{var e=N();return a(e,()=>m(`common.empty`)),e})()},get children(){return[(()=>{var n=M(),r=n.firstChild.firstChild,s=r.firstChild,c=r.nextSibling;return a(s,t(T,{get label(){return m(`table.name`)},sortKey:`name`,get sort(){return J()},onSort:Y}),null),a(s,t(T,{get label(){return m(`table.type`)},sortKey:`type`,get sort(){return J()},onSort:Y}),null),a(s,t(T,{get label(){return m(`table.used`)},sortKey:`used`,get sort(){return J()},onSort:Y}),null),a(s,t(T,{get label(){return m(`table.limit`)},sortKey:`limit`,get sort(){return J()},onSort:Y}),null),a(s,t(T,{get label(){return m(`table.usage`)},sortKey:`usage`,get sort(){return J()},onSort:Y}),null),a(s,t(T,{get label(){return m(`table.status`)},sortKey:`status`,get sort(){return J()},onSort:Y}),null),a(s,t(e,{get when(){return!H()},get children(){return j()}}),null),a(c,t(i,{get each(){return q()},children:n=>{let r=n.status,i=r?.used??0,s=r?.limit??null,c=s&&s>0?Math.min(i/s*100,100):0,l=c>90?`var(--danger)`:c>70?`var(--warning)`:`var(--success)`,u=r?.[`available?`]??!0,d=r?Object.entries(r).filter(([e])=>![`used`,`limit`,`reset_at`,`available?`].includes(e)).map(([e,t])=>`${e}=${t}`).join(` `):``;return(()=>{var r=L(),f=r.firstChild,p=f.nextSibling,h=p.firstChild,v=p.nextSibling,y=v.nextSibling,b=y.nextSibling,x=b.nextSibling;return a(f,()=>n.name),a(h,()=>n.type),o(v,`title`,d),a(v,()=>i.toLocaleString()),a(y,()=>s==null?`∞`:s.toLocaleString()),a(b,t(e,{when:s!=null,get fallback(){return R()},get children(){var e=P(),t=e.firstChild,n=t.firstChild,r=t.nextSibling,i=r.firstChild;return g(n,`width`,`${c}%`),g(n,`background`,l),a(r,()=>Math.round(c),i),e}})),a(x,t(e,{when:u,get fallback(){return(()=>{var e=z();return a(e,()=>m(`limiters.exhausted`)),e})()},get children(){var e=F();return a(e,()=>m(`limiters.available`)),e}})),a(r,t(e,{get when(){return!H()},get children(){var e=I(),t=e.firstChild;return t.$$click=()=>X(n.name),a(t,()=>m(`actions.reset`)),_(()=>t.disabled=K.isPending),e}}),null),_(()=>o(f,`title`,n.name)),r})()}})),n})(),t(C,{get page(){return U()},get total(){return n().total},count:B,onChange:W})]}}),null),r})()})]}})}u([`click`]);export{H as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,O as r,R as i,V as a,_ as o,b as s,c,f as l,g as u,h as ee,n as d,s as f,v as p,w as m,x as h,z as g}from"./Skeleton-DOYDkzg1.js";import{n as te,o as ne}from"./utils-DDJC7tJV.js";import{t as _}from"./Modal-t4FI_LaY.js";import{n as v,r as re,t as ie}from"./charts-CVK0zAnC.js";var y=m(`<span style=font-size:12px;margin-inline-start:8px>%`),b=m(`<div role=status>`),ae=m(`<div class=obs-tablescroll><table><thead><tr><th></th><th style=text-align:end></th><th style=text-align:end></th></tr></thead><tbody>`),oe=m(`<div class=obs><div class=obs-toolbar><span class=obs-toolbar__label><i class="fa-regular fa-calendar"aria-hidden=true></i> </span><div class=obs-seg role=tablist></div></div><div class=obs-metrics><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-stopwatch obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-gears obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div><div class=obs-chartbox></div></div><div class=obs-grid2><div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2><span class=obs-mono></span></div><div class=obs-chartbox></div></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title style=font-size:18px>`),se=m(`<button role=tab>`),ce=m(`<div class=empty-state style=height:300px;display:grid;place-items:center>`),x=m(`<div class=empty-state style=height:240px;display:grid;place-items:center>`),le=m(`<div class=obs-empty>`),ue=m(`<tr><td style=color:var(--obs-text)><button type=button class=obs-jobbtn><span class=obs-jobdot></span></button></td><td style=text-align:end;font-variant-numeric:tabular-nums></td><td class=obs-pct style=text-align:end>%`),S=m(`<div style=display:flex;gap:1.5rem;margin-bottom:1rem><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600></div></div><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600;color:var(--danger)>`),C=m(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2></div><div class=obs-chartbox>`),w=[`var(--accent)`,`#e0b341`,`#46b3a8`,`#d4737e`,`#8a7fd1`,`#5fa8d3`,`#c08457`,`#7bb274`],T=e=>w[e%w.length],de=[`#fafafa`,`#d4d4d8`,`#a1a1aa`,`#71717a`,`#52525b`,`#3f3f46`],E=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,minutes:60},{key:`24h`,bucket:`1m`,window:`24h`,minutes:1440},{key:`7d`,bucket:`5m`,window:`7d`,minutes:10080},{key:`30d`,bucket:`1h`,window:`30d`,minutes:720*60}],D=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function O(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}function k(n){return t(e,{get when(){return n.pct!==null},get children(){return(()=>{let e=()=>n.pct>=0,t=()=>e()===n.goodWhenUp;return(()=>{var r=y(),i=r.firstChild;return o(r,()=>e()?`↑`:`↓`,i),o(r,()=>Math.abs(n.pct),i),g(e=>h(r,`color`,t()?`var(--success)`:`var(--danger)`)),r})()})()}})}var A=(e,t)=>{if(t<=0)return[];if(e.length<=t)return e;if(t===1)return[e[e.length-1]];let n=(e.length-1)/(t-1);return Array.from({length:t},(t,r)=>e[Math.round(r*n)])};function j(e){return(()=>{var n=b();return o(n,t(d,{height:`100%`})),g(t=>{var r=`${e.height}px`,i=f(`common.loading`);return r!==t.e&&h(n,`height`,t.e=r),i!==t.t&&s(n,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),n})()}function M(){let[u,d]=a(2),[m,_]=a(null),v=()=>E[u()];n(()=>{document.title=`${f(`nav.metrics`)} — Wurk`});let y=l(()=>({queryKey:[`stats`],queryFn:()=>fetch(`${c()}/api/stats`).then(e=>e.json()),refetchInterval:5e3})),b=l(()=>({queryKey:[`history`,v().bucket,v().window],queryFn:()=>fetch(`${c()}/api/history/${v().bucket}?window=${v().window}`).then(e=>e.json()),refetchInterval:3e4})),S=l(()=>({queryKey:[`metrics`,v().minutes],queryFn:()=>fetch(`${c()}/api/metrics?minutes=${v().minutes}`).then(e=>e.json()),refetchInterval:3e4})),C=l(()=>({queryKey:[`queue-history`,v().bucket,v().window],queryFn:async()=>{let e=await fetch(`${c()}/api/queue-history/${v().bucket}?window=${v().window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),w=i(()=>(b.data?.series??[]).map(e=>({...e,label:D(e.at,v().bucket)}))),T=i(()=>{let e=v(),t=`slice`in e?e.slice:void 0;return t?w().slice(-t):w()}),M=i(()=>T().some(e=>e.processed>0||e.failed>0)),N=i(()=>C.data?.queues??[]),P=i(()=>N()[0]?.points.map(e=>e.at)??[]),F=i(()=>A(P().map((e,t)=>({label:D(e,v().bucket),depth:N().reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16)),I=i(()=>Math.max(0,...F().map(e=>e.depth))),L=i(()=>(S.data?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed+e.failed})).sort((e,t)=>t.count-e.count)),R=i(()=>L().reduce((e,t)=>e+t.count,0)),z=i(()=>L().slice(0,6));return(()=>{var n=oe(),i=n.firstChild,a=i.firstChild;a.firstChild.nextSibling;var c=a.nextSibling,l=i.nextSibling,D=l.firstChild,A=D.firstChild,N=A.firstChild,P=A.nextSibling,L=P.nextSibling,B=D.nextSibling,V=B.firstChild,he=V.firstChild,H=V.nextSibling,ge=H.nextSibling,U=B.nextSibling,W=U.firstChild,_e=W.firstChild,G=W.nextSibling,ve=G.nextSibling,K=U.nextSibling.firstChild,ye=K.firstChild,q=K.nextSibling,be=q.nextSibling,J=l.nextSibling,Y=J.firstChild,X=Y.firstChild,Z=X.firstChild,xe=Z.nextSibling,Q=X.nextSibling.firstChild;Q.firstChild.nextSibling;var Se=Q.nextSibling;Se.firstChild.nextSibling;var Ce=Y.nextSibling,$=J.nextSibling.firstChild,we=$.firstChild,Te=we.firstChild,Ee=Te.nextSibling,De=we.nextSibling,Oe=$.nextSibling,ke=Oe.firstChild.firstChild;return o(a,()=>f(`metrics.time_range`),null),o(c,t(r,{each:E,children:(e,t)=>(()=>{var n=se();return n.$$click=()=>d(t()),o(n,()=>e.key),g(e=>{var r=t()===u(),i=t()===u()?`is-active`:``;return r!==e.e&&s(n,`aria-selected`,e.e=r),i!==e.t&&ee(n,e.t=i),e},{e:void 0,t:void 0}),n})()})),o(N,()=>f(`metrics.total_processed`)),o(P,()=>(y.data?.processed??0).toLocaleString(),null),o(P,t(k,{get pct(){return O(w(),`processed`)},goodWhenUp:!0}),null),o(L,()=>f(`metrics.across_all_queues`)),o(he,()=>f(`metrics.failed_jobs`)),o(H,()=>(y.data?.failed??0).toLocaleString(),null),o(H,t(k,{get pct(){return O(w(),`failed`)},goodWhenUp:!1}),null),o(ge,()=>f(`metrics.total_failures`)),o(_e,()=>f(`metrics.avg_latency`)),o(G,(()=>{var e=p(()=>!!y.data);return()=>e()?te(y.data.latency):`—`})()),o(ve,()=>f(`metrics.head_of_line`)),o(ye,()=>f(`metrics.active_workers`)),o(q,()=>(y.data?.processes??0).toLocaleString()),o(be,(()=>{var e=p(()=>(y.data?.processes??0)>0);return()=>e()?f(`metrics.stable`):f(`metrics.no_workers`)})()),o(Z,()=>f(`metrics.throughput_failures`)),o(xe,()=>f(`metrics.throughput_sub`,{range:v().key})),o(Q,()=>f(`dashboard.processed`),null),o(Se,()=>f(`dashboard.failed`),null),o(Ce,t(e,{get when(){return!b.isPending},get fallback(){return t(j,{height:300})},get children(){return t(e,{get when(){return M()},get fallback(){return(()=>{var e=ce();return o(e,()=>f(`dashboard.no_history`)),e})()},get children(){return t(re,{get data(){return T()},height:300,yAxisWidth:36,yDecimals:!1,xMinTickGap:56,get series(){return[{key:`processed`,name:f(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:f(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),o(Te,()=>f(`metrics.queue_depth`)),o(Ee,(()=>{var e=p(()=>I()>0);return()=>e()?f(`metrics.peak`,{n:I().toLocaleString()}):``})()),o(De,t(e,{get when(){return!C.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return F().length>0},get fallback(){return(()=>{var e=x();return o(e,()=>f(`metrics.no_queue_history`)),e})()},get children(){return t(ie,{get data(){return F().map(e=>({label:e.label,value:e.depth,color:e.depth===I()&&I()>0?`#fafafa`:`#3f3f46`}))},height:240,get name(){return f(`metrics.queue_depth`)},yAxisWidth:36,yDecimals:!1,xMinTickGap:40})}})}})),o(ke,()=>f(`metrics.top_job_types`)),o(Oe,t(e,{get when(){return!S.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return z().length>0},get fallback(){return(()=>{var e=le();return o(e,()=>f(`common.empty`)),e})()},get children(){var e=ae(),n=e.firstChild.firstChild,i=n.firstChild.firstChild,a=i.nextSibling,c=a.nextSibling,l=n.nextSibling;return o(i,()=>f(`metrics.job_class`)),o(a,()=>f(`table.count`)),o(c,()=>f(`metrics.pct_total`)),o(l,t(r,{get each(){return z()},children:(e,t)=>(()=>{var n=ue(),r=n.firstChild,i=r.firstChild,a=i.firstChild,c=r.nextSibling,l=c.nextSibling,u=l.firstChild;return i.$$click=()=>_(e.klass),o(i,()=>ne(e.klass.split(`::`).pop()??e.klass,36),null),o(c,()=>e.count.toLocaleString()),o(l,(()=>{var t=p(()=>R()>0);return()=>t()?Math.round(e.count/R()*100):0})(),u),g(n=>{var o=e.klass,c=f(`metrics.view_job_detail`),l=de[t()%de.length];return o!==n.e&&s(r,`title`,n.e=o),c!==n.t&&s(i,`title`,n.t=c),l!==n.a&&h(a,`background`,n.a=l),n},{e:void 0,t:void 0,a:void 0}),n})()})),e}})}}),null),o(n,t(pe,{get range(){return v()}}),null),o(n,t(me,{}),null),o(n,t(fe,{get klass(){return m()},get minutes(){return v().minutes},onClose:()=>_(null)}),null),g(()=>s(c,`aria-label`,f(`metrics.time_range`))),n})()}function fe(n){let r=l(()=>({queryKey:[`metrics-job`,n.klass,n.minutes],queryFn:async()=>{let e=await fetch(`${c()}/api/metrics/${encodeURIComponent(n.klass)}?minutes=${n.minutes}`);if(!e.ok)throw Error(`metrics-job failed (${e.status})`);return e.json()},enabled:n.klass!==null})),a=i(()=>(r.data?.series??[]).map(e=>({label:D(e.at,`1m`),processed:e.p,failed:e.f,runtime_ms:e.ms}))),s=i(()=>a().some(e=>e.processed>0||e.failed>0)),u=i(()=>a().reduce((e,t)=>({processed:e.processed+t.processed,failed:e.failed+t.failed}),{processed:0,failed:0}));return t(_,{get open(){return n.klass!==null},get onClose(){return n.onClose},get title(){return n.klass??``},width:720,get children(){return t(e,{get when(){return n.klass},get children(){return[(()=>{var e=S(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=t.nextSibling.firstChild,a=i.nextSibling;return o(n,()=>f(`dashboard.processed`)),o(r,()=>u().processed.toLocaleString()),o(i,()=>f(`dashboard.failed`)),o(a,()=>u().failed.toLocaleString()),e})(),t(e,{get when(){return!r.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return!r.isError},get fallback(){return(()=>{var e=x();return o(e,()=>f(`common.error`)),e})()},get children(){return t(e,{get when(){return s()},get fallback(){return(()=>{var e=x();return o(e,()=>f(`dashboard.no_history`)),e})()},get children(){return t(v,{get data(){return a()},height:240,yAxisWidth:36,yDecimals:!1,xMinTickGap:48,legend:!0,get series(){return[{key:`processed`,name:f(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2},{key:`failed`,name:f(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5}]}})}})}})}})]}})}})}function pe(n){let r=l(()=>({queryKey:[`queue-history-lat`,n.range.bucket,n.range.window],queryFn:async()=>{let e=await fetch(`${c()}/api/queue-history/${n.range.bucket}?window=${n.range.window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),a=i(()=>r.data?.queues??[]),s=i(()=>a().map((e,t)=>({key:`queue_${t}`,name:e.name}))),u=i(()=>a()[0]?.points.map(e=>e.at)??[]),ee=i(()=>u().map((e,t)=>{let r={label:D(e,n.range.bucket)};return a().forEach((e,n)=>{r[s()[n].key]=e.points[t]?.latency??0}),r})),d=i(()=>s().map((e,t)=>({key:e.key,name:e.name,stroke:T(t),strokeWidth:2}))),p=i(()=>a().some(e=>e.points.some(e=>e.latency>0)));return t(e,{get when(){return p()},get children(){var e=C(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return o(r,()=>f(`metrics.queue_latency_seconds`)),o(i,t(v,{get data(){return ee()},get series(){return d()},height:240,legend:!0,yAxisWidth:40,xMinTickGap:48})),e}})}var N=new Set([`processed`,`failures`]);function me(){let n=l(()=>({queryKey:[`history-snapshots`],queryFn:async()=>{let e=await fetch(`${c()}/api/history/snapshots?limit=1000`);if(!e.ok)throw Error(`history snapshots request failed (${e.status})`);return e.json()},refetchInterval:3e4})),r=i(()=>n.data?.snapshots??[]),a=i(()=>Array.from(new Set(r().flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!N.has(t)&&typeof e[t]==`number`))))),s=i(()=>r().map(e=>{let t=new Date(e.at*1e3),n={label:`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`};for(let t of Object.keys(e))n[t]=e[t];return n})),u=i(()=>a().map((e,t)=>({key:e,name:e,stroke:T(t),strokeWidth:2})));return t(e,{get when(){return p(()=>r().length>0)()&&a().length>0},get children(){var e=C(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return o(r,()=>f(`metrics.historical_snapshots`)),o(i,t(v,{get data(){return s()},get series(){return u()},height:240,legend:!0,yAxisWidth:40,yDecimals:!1,xMinTickGap:48})),e}})}u([`click`]);export{M as default};
|
|
1
|
+
import{A as e,F as t,J as n,O as r,R as i,V as a,_ as o,b as s,c,f as l,g as u,h as ee,n as d,s as f,v as p,w as m,x as h,z as g}from"./Skeleton-DzR7XNxz.js";import{n as te,o as ne}from"./utils-DDJC7tJV.js";import{t as _}from"./Modal-Crrsu64-.js";import{n as v,r as re,t as ie}from"./charts-BVHHGof7.js";var y=m(`<span style=font-size:12px;margin-inline-start:8px>%`),b=m(`<div role=status>`),ae=m(`<div class=obs-tablescroll><table><thead><tr><th></th><th style=text-align:end></th><th style=text-align:end></th></tr></thead><tbody>`),oe=m(`<div class=obs><div class=obs-toolbar><span class=obs-toolbar__label><i class="fa-regular fa-calendar"aria-hidden=true></i> </span><div class=obs-seg role=tablist></div></div><div class=obs-metrics><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-stopwatch obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-gears obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div><div class=obs-chartbox></div></div><div class=obs-grid2><div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2><span class=obs-mono></span></div><div class=obs-chartbox></div></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title style=font-size:18px>`),se=m(`<button role=tab>`),ce=m(`<div class=empty-state style=height:300px;display:grid;place-items:center>`),x=m(`<div class=empty-state style=height:240px;display:grid;place-items:center>`),le=m(`<div class=obs-empty>`),ue=m(`<tr><td style=color:var(--obs-text)><button type=button class=obs-jobbtn><span class=obs-jobdot></span></button></td><td style=text-align:end;font-variant-numeric:tabular-nums></td><td class=obs-pct style=text-align:end>%`),S=m(`<div style=display:flex;gap:1.5rem;margin-bottom:1rem><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600></div></div><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600;color:var(--danger)>`),C=m(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2></div><div class=obs-chartbox>`),w=[`var(--accent)`,`#e0b341`,`#46b3a8`,`#d4737e`,`#8a7fd1`,`#5fa8d3`,`#c08457`,`#7bb274`],T=e=>w[e%w.length],de=[`#fafafa`,`#d4d4d8`,`#a1a1aa`,`#71717a`,`#52525b`,`#3f3f46`],E=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,minutes:60},{key:`24h`,bucket:`1m`,window:`24h`,minutes:1440},{key:`7d`,bucket:`5m`,window:`7d`,minutes:10080},{key:`30d`,bucket:`1h`,window:`30d`,minutes:720*60}],D=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function O(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}function k(n){return t(e,{get when(){return n.pct!==null},get children(){return(()=>{let e=()=>n.pct>=0,t=()=>e()===n.goodWhenUp;return(()=>{var r=y(),i=r.firstChild;return o(r,()=>e()?`↑`:`↓`,i),o(r,()=>Math.abs(n.pct),i),g(e=>h(r,`color`,t()?`var(--success)`:`var(--danger)`)),r})()})()}})}var A=(e,t)=>{if(t<=0)return[];if(e.length<=t)return e;if(t===1)return[e[e.length-1]];let n=(e.length-1)/(t-1);return Array.from({length:t},(t,r)=>e[Math.round(r*n)])};function j(e){return(()=>{var n=b();return o(n,t(d,{height:`100%`})),g(t=>{var r=`${e.height}px`,i=f(`common.loading`);return r!==t.e&&h(n,`height`,t.e=r),i!==t.t&&s(n,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),n})()}function M(){let[u,d]=a(2),[m,_]=a(null),v=()=>E[u()];n(()=>{document.title=`${f(`nav.metrics`)} — Wurk`});let y=l(()=>({queryKey:[`stats`],queryFn:()=>fetch(`${c()}/api/stats`).then(e=>e.json()),refetchInterval:5e3})),b=l(()=>({queryKey:[`history`,v().bucket,v().window],queryFn:()=>fetch(`${c()}/api/history/${v().bucket}?window=${v().window}`).then(e=>e.json()),refetchInterval:3e4})),S=l(()=>({queryKey:[`metrics`,v().minutes],queryFn:()=>fetch(`${c()}/api/metrics?minutes=${v().minutes}`).then(e=>e.json()),refetchInterval:3e4})),C=l(()=>({queryKey:[`queue-history`,v().bucket,v().window],queryFn:async()=>{let e=await fetch(`${c()}/api/queue-history/${v().bucket}?window=${v().window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),w=i(()=>(b.data?.series??[]).map(e=>({...e,label:D(e.at,v().bucket)}))),T=i(()=>{let e=v(),t=`slice`in e?e.slice:void 0;return t?w().slice(-t):w()}),M=i(()=>T().some(e=>e.processed>0||e.failed>0)),N=i(()=>C.data?.queues??[]),P=i(()=>N()[0]?.points.map(e=>e.at)??[]),F=i(()=>A(P().map((e,t)=>({label:D(e,v().bucket),depth:N().reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16)),I=i(()=>Math.max(0,...F().map(e=>e.depth))),L=i(()=>(S.data?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed+e.failed})).sort((e,t)=>t.count-e.count)),R=i(()=>L().reduce((e,t)=>e+t.count,0)),z=i(()=>L().slice(0,6));return(()=>{var n=oe(),i=n.firstChild,a=i.firstChild;a.firstChild.nextSibling;var c=a.nextSibling,l=i.nextSibling,D=l.firstChild,A=D.firstChild,N=A.firstChild,P=A.nextSibling,L=P.nextSibling,B=D.nextSibling,V=B.firstChild,he=V.firstChild,H=V.nextSibling,ge=H.nextSibling,U=B.nextSibling,W=U.firstChild,_e=W.firstChild,G=W.nextSibling,ve=G.nextSibling,K=U.nextSibling.firstChild,ye=K.firstChild,q=K.nextSibling,be=q.nextSibling,J=l.nextSibling,Y=J.firstChild,X=Y.firstChild,Z=X.firstChild,xe=Z.nextSibling,Q=X.nextSibling.firstChild;Q.firstChild.nextSibling;var Se=Q.nextSibling;Se.firstChild.nextSibling;var Ce=Y.nextSibling,$=J.nextSibling.firstChild,we=$.firstChild,Te=we.firstChild,Ee=Te.nextSibling,De=we.nextSibling,Oe=$.nextSibling,ke=Oe.firstChild.firstChild;return o(a,()=>f(`metrics.time_range`),null),o(c,t(r,{each:E,children:(e,t)=>(()=>{var n=se();return n.$$click=()=>d(t()),o(n,()=>e.key),g(e=>{var r=t()===u(),i=t()===u()?`is-active`:``;return r!==e.e&&s(n,`aria-selected`,e.e=r),i!==e.t&&ee(n,e.t=i),e},{e:void 0,t:void 0}),n})()})),o(N,()=>f(`metrics.total_processed`)),o(P,()=>(y.data?.processed??0).toLocaleString(),null),o(P,t(k,{get pct(){return O(w(),`processed`)},goodWhenUp:!0}),null),o(L,()=>f(`metrics.across_all_queues`)),o(he,()=>f(`metrics.failed_jobs`)),o(H,()=>(y.data?.failed??0).toLocaleString(),null),o(H,t(k,{get pct(){return O(w(),`failed`)},goodWhenUp:!1}),null),o(ge,()=>f(`metrics.total_failures`)),o(_e,()=>f(`metrics.avg_latency`)),o(G,(()=>{var e=p(()=>!!y.data);return()=>e()?te(y.data.latency):`—`})()),o(ve,()=>f(`metrics.head_of_line`)),o(ye,()=>f(`metrics.active_workers`)),o(q,()=>(y.data?.processes??0).toLocaleString()),o(be,(()=>{var e=p(()=>(y.data?.processes??0)>0);return()=>e()?f(`metrics.stable`):f(`metrics.no_workers`)})()),o(Z,()=>f(`metrics.throughput_failures`)),o(xe,()=>f(`metrics.throughput_sub`,{range:v().key})),o(Q,()=>f(`dashboard.processed`),null),o(Se,()=>f(`dashboard.failed`),null),o(Ce,t(e,{get when(){return!b.isPending},get fallback(){return t(j,{height:300})},get children(){return t(e,{get when(){return M()},get fallback(){return(()=>{var e=ce();return o(e,()=>f(`dashboard.no_history`)),e})()},get children(){return t(re,{get data(){return T()},height:300,yAxisWidth:36,yDecimals:!1,xMinTickGap:56,get series(){return[{key:`processed`,name:f(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:f(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),o(Te,()=>f(`metrics.queue_depth`)),o(Ee,(()=>{var e=p(()=>I()>0);return()=>e()?f(`metrics.peak`,{n:I().toLocaleString()}):``})()),o(De,t(e,{get when(){return!C.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return F().length>0},get fallback(){return(()=>{var e=x();return o(e,()=>f(`metrics.no_queue_history`)),e})()},get children(){return t(ie,{get data(){return F().map(e=>({label:e.label,value:e.depth,color:e.depth===I()&&I()>0?`#fafafa`:`#3f3f46`}))},height:240,get name(){return f(`metrics.queue_depth`)},yAxisWidth:36,yDecimals:!1,xMinTickGap:40})}})}})),o(ke,()=>f(`metrics.top_job_types`)),o(Oe,t(e,{get when(){return!S.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return z().length>0},get fallback(){return(()=>{var e=le();return o(e,()=>f(`common.empty`)),e})()},get children(){var e=ae(),n=e.firstChild.firstChild,i=n.firstChild.firstChild,a=i.nextSibling,c=a.nextSibling,l=n.nextSibling;return o(i,()=>f(`metrics.job_class`)),o(a,()=>f(`table.count`)),o(c,()=>f(`metrics.pct_total`)),o(l,t(r,{get each(){return z()},children:(e,t)=>(()=>{var n=ue(),r=n.firstChild,i=r.firstChild,a=i.firstChild,c=r.nextSibling,l=c.nextSibling,u=l.firstChild;return i.$$click=()=>_(e.klass),o(i,()=>ne(e.klass.split(`::`).pop()??e.klass,36),null),o(c,()=>e.count.toLocaleString()),o(l,(()=>{var t=p(()=>R()>0);return()=>t()?Math.round(e.count/R()*100):0})(),u),g(n=>{var o=e.klass,c=f(`metrics.view_job_detail`),l=de[t()%de.length];return o!==n.e&&s(r,`title`,n.e=o),c!==n.t&&s(i,`title`,n.t=c),l!==n.a&&h(a,`background`,n.a=l),n},{e:void 0,t:void 0,a:void 0}),n})()})),e}})}}),null),o(n,t(pe,{get range(){return v()}}),null),o(n,t(me,{}),null),o(n,t(fe,{get klass(){return m()},get minutes(){return v().minutes},onClose:()=>_(null)}),null),g(()=>s(c,`aria-label`,f(`metrics.time_range`))),n})()}function fe(n){let r=l(()=>({queryKey:[`metrics-job`,n.klass,n.minutes],queryFn:async()=>{let e=await fetch(`${c()}/api/metrics/${encodeURIComponent(n.klass)}?minutes=${n.minutes}`);if(!e.ok)throw Error(`metrics-job failed (${e.status})`);return e.json()},enabled:n.klass!==null})),a=i(()=>(r.data?.series??[]).map(e=>({label:D(e.at,`1m`),processed:e.p,failed:e.f,runtime_ms:e.ms}))),s=i(()=>a().some(e=>e.processed>0||e.failed>0)),u=i(()=>a().reduce((e,t)=>({processed:e.processed+t.processed,failed:e.failed+t.failed}),{processed:0,failed:0}));return t(_,{get open(){return n.klass!==null},get onClose(){return n.onClose},get title(){return n.klass??``},width:720,get children(){return t(e,{get when(){return n.klass},get children(){return[(()=>{var e=S(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=t.nextSibling.firstChild,a=i.nextSibling;return o(n,()=>f(`dashboard.processed`)),o(r,()=>u().processed.toLocaleString()),o(i,()=>f(`dashboard.failed`)),o(a,()=>u().failed.toLocaleString()),e})(),t(e,{get when(){return!r.isPending},get fallback(){return t(j,{height:240})},get children(){return t(e,{get when(){return!r.isError},get fallback(){return(()=>{var e=x();return o(e,()=>f(`common.error`)),e})()},get children(){return t(e,{get when(){return s()},get fallback(){return(()=>{var e=x();return o(e,()=>f(`dashboard.no_history`)),e})()},get children(){return t(v,{get data(){return a()},height:240,yAxisWidth:36,yDecimals:!1,xMinTickGap:48,legend:!0,get series(){return[{key:`processed`,name:f(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2},{key:`failed`,name:f(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5}]}})}})}})}})]}})}})}function pe(n){let r=l(()=>({queryKey:[`queue-history-lat`,n.range.bucket,n.range.window],queryFn:async()=>{let e=await fetch(`${c()}/api/queue-history/${n.range.bucket}?window=${n.range.window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4})),a=i(()=>r.data?.queues??[]),s=i(()=>a().map((e,t)=>({key:`queue_${t}`,name:e.name}))),u=i(()=>a()[0]?.points.map(e=>e.at)??[]),ee=i(()=>u().map((e,t)=>{let r={label:D(e,n.range.bucket)};return a().forEach((e,n)=>{r[s()[n].key]=e.points[t]?.latency??0}),r})),d=i(()=>s().map((e,t)=>({key:e.key,name:e.name,stroke:T(t),strokeWidth:2}))),p=i(()=>a().some(e=>e.points.some(e=>e.latency>0)));return t(e,{get when(){return p()},get children(){var e=C(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return o(r,()=>f(`metrics.queue_latency_seconds`)),o(i,t(v,{get data(){return ee()},get series(){return d()},height:240,legend:!0,yAxisWidth:40,xMinTickGap:48})),e}})}var N=new Set([`processed`,`failures`]);function me(){let n=l(()=>({queryKey:[`history-snapshots`],queryFn:async()=>{let e=await fetch(`${c()}/api/history/snapshots?limit=1000`);if(!e.ok)throw Error(`history snapshots request failed (${e.status})`);return e.json()},refetchInterval:3e4})),r=i(()=>n.data?.snapshots??[]),a=i(()=>Array.from(new Set(r().flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!N.has(t)&&typeof e[t]==`number`))))),s=i(()=>r().map(e=>{let t=new Date(e.at*1e3),n={label:`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`};for(let t of Object.keys(e))n[t]=e[t];return n})),u=i(()=>a().map((e,t)=>({key:e,name:e,stroke:T(t),strokeWidth:2})));return t(e,{get when(){return p(()=>r().length>0)()&&a().length>0},get children(){var e=C(),n=e.firstChild,r=n.firstChild,i=n.nextSibling;return o(r,()=>f(`metrics.historical_snapshots`)),o(i,t(v,{get data(){return s()},get series(){return u()},height:240,legend:!0,yAxisWidth:40,yDecimals:!1,xMinTickGap:48})),e}})}u([`click`]);export{M as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,L as r,T as i,V as a,_ as o,b as s,g as c,q as l,w as u,x as d,z as f}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,L as r,T as i,V as a,_ as o,b as s,g as c,q as l,w as u,x as d,z as f}from"./Skeleton-DzR7XNxz.js";var p=u(`<div class=modal-footer>`),m=u(`<dialog class=modal><div class=modal-panel><div class=modal-header><h2 class=modal-title></h2><button class=modal-close aria-label=Close><i class="fa-solid fa-xmark"></i></button></div><div class=modal-body>`);function h(c){let u,h=`modal-title-${Math.random().toString(36).slice(2)}`,[g,_]=a({title:c.title,children:c.children});r(()=>{c.open&&_({title:c.title,children:c.children})});let v=()=>c.open?{title:c.title,children:c.children}:g();return r(()=>{c.open&&!u.open?u.showModal():!c.open&&u.open&&u.close()}),n(()=>{let e=e=>{e.preventDefault(),c.onClose()};u.addEventListener(`cancel`,e),l(()=>u.removeEventListener(`cancel`,e))}),(()=>{var n=m(),r=n.firstChild,a=r.firstChild,l=a.firstChild,g=l.nextSibling,_=a.nextSibling;n.$$click=e=>{e.target===u&&c.onClose()};var y=u;return typeof y==`function`?i(y,n):u=n,s(n,`aria-labelledby`,h),s(l,`id`,h),o(l,()=>v().title),g.$$click=()=>c.onClose(),o(_,()=>v().children),o(r,t(e,{get when(){return c.footer},get children(){var e=p();return o(e,()=>c.footer),e}}),null),f(e=>d(r,`max-width`,`${c.width??640}px`)),n})()}c([`click`]);export{h as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,_ as n,h as r,w as i,z as a}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,_ as n,h as r,w as i,z as a}from"./Skeleton-DzR7XNxz.js";var o=i(`<div class=page-header__aside>`),s=i(`<div class=page-header><span class=page-header__icon><i></i></span><div class=page-header__text><h1 class=page-header__title></h1><p class=page-header__summary>`);function c(i){return(()=>{var c=s(),l=c.firstChild,u=l.firstChild,d=l.nextSibling.firstChild,f=d.nextSibling;return n(d,()=>i.title),n(f,()=>i.summary),n(c,t(e,{get when(){return i.children!=null},get children(){var e=o();return n(e,()=>i.children),e}}),null),a(()=>r(u,`fa-solid ${i.icon}`)),c})()}export{c as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,J as n,M as r,O as i,_ as a,b as o,c as s,f as c,i as l,k as u,s as d,v as f,w as p,z as m}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,J as n,M as r,O as i,_ as a,b as o,c as s,f as c,i as l,k as u,s as d,v as f,w as p,z as m}from"./Skeleton-DzR7XNxz.js";var h=p(`<div class=obs>`),g=p(`<div class=obs><div class=empty-state style=color:var(--danger)>`),_=p(`<div class="obs-card obs-table"><div class=obs-tablescroll><table><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),v=p(`<div class=obs><div class=obs-pagehead><div><h1></h1><p class=obs-panel__sub></p></div><span class="obs-chip obs-chip--active">`),y=p(`<div class="obs-card obs-empty">`),b=p(`<tr><td style=font-weight:500;color:var(--obs-text)></td><td><span class=obs-mono-cell></span></td><td></td><td> </td><td></td><td style=text-align:end><a class="obs-btn obs-btn--ghost obs-btn--sm"target=_blank rel="noopener noreferrer"><i class="fa-solid fa-up-right-from-square"aria-hidden=true></i> `);function x(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function S(e){return e?new Date(e*1e3).toLocaleString():`—`}function C(){n(()=>{document.title=`${d(`nav.profiles`)} — Wurk`});let p=c(()=>({queryKey:[`profiles`],queryFn:async()=>{let e=await fetch(`${s()}/api/profiles`);if(!e.ok)throw Error(`profiles request failed: ${e.status}`);return e.json()},refetchInterval:5e3}));return t(r,{get children(){return[t(u,{get when(){return p.isPending},get children(){var e=h();return a(e,t(l,{rows:8,cols:6})),e}}),t(u,{get when(){return!Array.isArray(p.data)},get children(){var e=g(),t=e.firstChild;return a(t,()=>d(`common.error`)),e}}),t(u,{get when(){return f(()=>!!Array.isArray(p.data))()&&p.data},children:n=>(()=>{var r=v(),c=r.firstChild.firstChild,l=c.firstChild,u=l.nextSibling,f=c.nextSibling;return a(l,()=>d(`nav.profiles`)),a(u,()=>d(`summaries.profiles`)),a(f,()=>n().length.toLocaleString()),a(r,t(e,{get when(){return n().length>0},get fallback(){return(()=>{var e=y();return a(e,()=>d(`common.empty`)),e})()},get children(){var e=_(),r=e.firstChild.firstChild.firstChild,c=r.firstChild.firstChild,l=c.nextSibling,u=l.nextSibling,f=u.nextSibling,p=f.nextSibling,h=r.nextSibling;return a(c,()=>d(`table.type`)),a(l,()=>d(`table.jid`)),a(u,()=>d(`busy.started`)),a(f,()=>d(`table.elapsed`)),a(p,()=>d(`table.size`)),a(h,t(i,{get each(){return n()},children:e=>(()=>{var t=b(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,c=r.nextSibling,l=c.nextSibling,u=l.firstChild,f=l.nextSibling,p=f.nextSibling.firstChild;return p.firstChild.nextSibling,a(n,()=>e.type),a(i,()=>e.jid),a(c,()=>S(e.started_at)),a(l,()=>e.elapsed.toLocaleString(),u),a(l,()=>d(`common.ms`),null),a(f,()=>x(e.size)),a(p,()=>d(`extension.open`),null),m(()=>o(p,`href`,`${s()}/profiles/${encodeURIComponent(e.key)}`)),t})()})),e}}),null),r})()})]}})}export{C as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,F as t,H as n,J as r,L as i,M as a,O as o,P as s,T as c,V as l,_ as u,b as d,c as f,d as p,f as m,g as h,i as g,k as _,m as v,p as y,s as b,v as x,w as S,x as C,z as w}from"./Skeleton-
|
|
1
|
+
import{A as e,F as t,H as n,J as r,L as i,M as a,O as o,P as s,T as c,V as l,_ as u,b as d,c as f,d as p,f as m,g as h,i as g,k as _,m as v,p as y,s as b,v as x,w as S,x as C,z as w}from"./Skeleton-DzR7XNxz.js";import{a as T,n as E,r as D,t as O}from"./index-DQu7WY9y.js";import{a as k,n as A,o as j,t as M}from"./utils-DDJC7tJV.js";import{n as N,r as P,t as F}from"./useResetPageOnEmpty-B_FsMah6.js";import{n as I,t as L}from"./useSort-BeYbztkN.js";import{t as R}from"./PageHeader-C44KNMGm.js";import{t as z}from"./Modal-Crrsu64-.js";import{t as B}from"./ArgsValue-D74zX0MI.js";import{t as V}from"./JobDetailModal-DS1ypyoc.js";var H=S(`<span style=display:inline-flex>`),U=S(`<div role=tooltip style="position:fixed;transform:translate(-50%, -100%);max-width:260px;background:var(--surface-strong);color:var(--text);border:1px solid var(--border-strong);padding:0.4rem 0.6rem;border-radius:6px;font-size:12px;line-height:1.35;z-index:9999;pointer-events:none;box-shadow:0 4px 14px rgba(0, 0, 0, 0.45)">`);function W(r){let[a,o]=l(null),f,p=n(),m=()=>{let e=f?.getBoundingClientRect();e&&o({x:e.left+e.width/2,y:e.top})},h=s(()=>r.children);return i(()=>{let e=h();e instanceof HTMLElement&&e.setAttribute(`aria-describedby`,p)}),(()=>{var n=H();n.addEventListener(`mouseleave`,()=>o(null)),n.addEventListener(`mouseenter`,m);var i=f;return typeof i==`function`?c(i,n):f=n,u(n,h,null),u(n,t(e,{get when(){return a()},children:e=>t(v,{get children(){var t=U();return d(t,`id`,p),u(t,()=>r.tip),w(n=>{var r=`${e().x}px`,i=`${e().y-8}px`;return r!==n.e&&C(t,`left`,n.e=r),i!==n.t&&C(t,`top`,n.t=i),n},{e:void 0,t:void 0}),t}})}),null),n})()}var G=S(`<div class=empty-state style=color:var(--danger)>`),K=S(`<span class="badge badge-warning">`),q=S(`<th class=row-action>`),J=S(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),Y=S(`<div class=qjobs><div style=display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem><span style=color:var(--text-muted);font-size:13px> · <span> `),X=S(`<div class=empty-state>`),Z=S(`<td class=row-action><button class="btn btn-sm btn-danger">`),ee=S(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td>`),Q=S(`<div>`),te=S(`<button class="btn btn-sm">`),ne=S(`<td class=row-action><div style=display:flex;gap:0.4rem;justify-content:flex-end><button class="btn btn-sm btn-danger">`),re=S(`<tr class=row-clickable><td style=font-weight:500></td><td></td><td></td><td>`),ie=S(`<span class="badge badge-success">`),$=25,ae={jid:e=>e.jid,class:e=>e.class,args:e=>M(e.args),enqueued:e=>e.enqueued_at};function oe(n){let[r,i]=N(),[s,c]=l(null),h=T(),v=()=>h.data?.read_only??!1,x=y(),S=m(()=>({queryKey:[`queue`,n.name,r()],queryFn:()=>E(`${f()}/api/queues/${encodeURIComponent(n.name)}?page=${r()-1}&count=${$}`)})),C=p(()=>({mutationFn:e=>D(`${f()}/api/queues/${encodeURIComponent(n.name)}/delete`,{jid:e}),onSuccess:()=>{x.invalidateQueries({queryKey:[`queue`,n.name]}),x.invalidateQueries({queryKey:[`queues`]}),x.invalidateQueries({queryKey:[`stats`]})},onError:O}));F(r,i,()=>!S.isPending&&!!S.data,()=>(S.data?.jobs.length??0)===0);let{sorted:R,sort:z,toggle:H}=L(()=>S.data?.jobs??[],ae);return t(a,{get children(){return[t(_,{get when(){return S.isPending},get children(){return t(g,{rows:6,cols:5})}}),t(_,{get when(){return S.isError||!S.data},get children(){var e=G();return u(e,()=>b(`common.error`)),e}}),t(_,{get when(){return S.data},children:a=>(()=>{var l=Y(),f=l.firstChild,p=f.firstChild,m=p.firstChild,h=m.nextSibling,g=h.firstChild;return u(p,()=>b(`queues.job_count`,{n:a().size.toLocaleString()}),m),u(h,()=>b(`queues.latency_label`),g),u(h,()=>A(a().latency),null),u(f,t(e,{get when(){return a().paused},get children(){var e=K();return u(e,()=>b(`dashboard.paused`)),e}}),null),u(l,t(e,{get when(){return R().length>0},get fallback(){return(()=>{var e=X();return u(e,()=>b(`common.empty`)),e})()},get children(){return[(()=>{var r=J(),i=r.firstChild.firstChild,a=i.firstChild,s=i.nextSibling;return u(a,t(I,{get label(){return b(`table.jid`)},sortKey:`jid`,get sort(){return z()},onSort:H}),null),u(a,t(I,{get label(){return b(`table.class`)},sortKey:`class`,get sort(){return z()},onSort:H}),null),u(a,t(I,{get label(){return b(`table.args`)},sortKey:`args`,get sort(){return z()},onSort:H}),null),u(a,t(I,{get label(){return b(`table.enqueued_at`)},sortKey:`enqueued`,get sort(){return z()},onSort:H}),null),u(a,t(e,{get when(){return!v()},get children(){return q()}}),null),u(s,t(o,{get each(){return R()},children:r=>{let i=M(r.args);return(()=>{var a=ee(),o=a.firstChild,s=o.nextSibling,l=s.nextSibling,f=l.nextSibling;return a.$$click=()=>c({jid:r.jid,klass:r.class,args:r.args,queue:n.name,enqueued_at:r.enqueued_at}),u(o,()=>j(r.jid,12)),u(s,()=>r.class),u(l,t(B,{str:i,max:60})),u(f,()=>k(r.enqueued_at)),u(a,t(e,{get when(){return!v()},get children(){var e=Z(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.$$click=()=>{window.confirm(b(`actions.confirm`,{action:b(`actions.delete`),scope:b(`actions.scope_this_job`)}))&&C.mutate(r.jid)},u(t,()=>b(`actions.delete`)),w(()=>t.disabled=C.isPending),e}}),null),w(()=>d(o,`title`,r.jid)),a})()}})),r})(),t(P,{get page(){return r()},get total(){return a().size},count:$,onChange:i})]}}),null),u(l,t(V,{get entry(){return s()},onClose:()=>c(null)}),null),w(()=>d(h,`title`,`${a().latency.toFixed(3)}s`)),l})()})]}})}var se={name:e=>e.name,size:e=>e.size,latency:e=>e.latency,status:e=>e.paused?`paused`:`active`};function ce(){let[n,i]=l(null),s=T(),c=()=>s.data?.read_only??!1,h=y();r(()=>{document.title=`${b(`nav.queues`)} — Wurk`});let v=m(()=>({queryKey:[`queues`],queryFn:()=>E(`${f()}/api/queues`),refetchInterval:5e3})),S=p(()=>({mutationFn:e=>D(`${f()}/api/queues/${encodeURIComponent(e)}/clear`),onSuccess:(e,t)=>{h.invalidateQueries({queryKey:[`queues`]}),h.invalidateQueries({queryKey:[`queue`,t]}),h.invalidateQueries({queryKey:[`stats`]})},onError:O})),C=p(()=>({mutationFn:({name:e,paused:t})=>D(`${f()}/api/queues/${encodeURIComponent(e)}/${t?`unpause`:`pause`}`),onSuccess:(e,{name:t})=>{h.invalidateQueries({queryKey:[`queues`]}),h.invalidateQueries({queryKey:[`queue`,t]}),h.invalidateQueries({queryKey:[`stats`]})},onError:O})),{sorted:k,sort:j,toggle:M}=L(()=>v.data??[],se);return t(a,{get children(){return[t(_,{get when(){return v.isPending},get children(){var e=Q();return u(e,t(R,{icon:`fa-layer-group`,get title(){return b(`nav.queues`)},get summary(){return b(`summaries.queues`)}}),null),u(e,t(g,{rows:8,cols:5}),null),e}}),t(_,{get when(){return v.isError||!v.data},get children(){var e=G();return u(e,()=>b(`common.error`)),e}}),t(_,{get when(){return v.data},children:r=>(()=>{var r=Q();return u(r,t(R,{icon:`fa-layer-group`,get title(){return b(`nav.queues`)},get summary(){return b(`summaries.queues`)}}),null),u(r,t(e,{get when(){return k().length>0},get fallback(){return(()=>{var e=X();return u(e,()=>b(`common.empty`)),e})()},get children(){var n=J(),r=n.firstChild.firstChild,a=r.firstChild,s=r.nextSibling;return u(a,t(I,{get label(){return b(`table.name`)},sortKey:`name`,get sort(){return j()},onSort:M}),null),u(a,t(I,{get label(){return b(`table.size`)},sortKey:`size`,get sort(){return j()},onSort:M}),null),u(a,t(I,{get label(){return b(`table.latency`)},sortKey:`latency`,get sort(){return j()},onSort:M}),null),u(a,t(I,{get label(){return b(`table.status`)},sortKey:`status`,get sort(){return j()},onSort:M}),null),u(a,t(e,{get when(){return!c()},get children(){return q()}}),null),u(s,t(o,{get each(){return k()},children:n=>(()=>{var r=re(),a=r.firstChild,o=a.nextSibling,s=o.nextSibling,l=s.nextSibling;return r.$$click=()=>i(n.name),u(a,()=>n.name),u(o,()=>n.size.toLocaleString()),u(s,()=>A(n.latency)),u(l,t(e,{get when(){return n.paused},get fallback(){return(()=>{var e=ie();return u(e,()=>b(`dashboard.active`)),e})()},get children(){var e=K();return u(e,()=>b(`dashboard.paused`)),e}})),u(r,t(e,{get when(){return!c()},get children(){var e=ne(),r=e.firstChild,i=r.firstChild;return e.$$click=e=>e.stopPropagation(),u(r,t(W,{get tip(){return x(()=>!!n.paused)()?b(`actions.unpause_hint`):b(`actions.pause_hint`)},get children(){var e=te();return e.$$click=()=>C.mutate({name:n.name,paused:n.paused}),u(e,(()=>{var e=x(()=>!!n.paused);return()=>e()?b(`actions.unpause`):b(`actions.pause`)})()),w(()=>e.disabled=C.isPending),e}}),i),i.$$click=()=>{window.confirm(b(`actions.confirm_clear_queue`,{name:n.name}))&&S.mutate(n.name)},u(i,()=>b(`actions.clear`)),w(()=>i.disabled=S.isPending),e}}),null),w(()=>d(s,`title`,`${n.latency.toFixed(3)}s`)),r})()})),n}}),null),u(r,t(z,{get open(){return n()!==null},onClose:()=>i(null),get title(){return n()??``},width:780,get children(){return t(e,{get when(){return n()},children:e=>t(oe,{get name(){return e()}})})}}),null),r})()})]}})}h([`click`]);export{ce as default};
|