girder-plugin-worker 5.0.15.dev8__tar.gz → 5.0.15.dev12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/PKG-INFO +1 -1
  2. girder_plugin_worker-5.0.15.dev12/girder_plugin_worker/web_client/dist/girder-plugin-worker.umd.cjs +2 -0
  3. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/PKG-INFO +1 -1
  4. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/scm_version.json +2 -2
  5. girder_plugin_worker-5.0.15.dev8/girder_plugin_worker/web_client/dist/girder-plugin-worker.umd.cjs +0 -2
  6. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/MANIFEST.in +0 -0
  7. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/__init__.py +0 -0
  8. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/api/__init__.py +0 -0
  9. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/api/worker.py +0 -0
  10. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/constants.py +0 -0
  11. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/event_handlers.py +0 -0
  12. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/status.py +0 -0
  13. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/utils.py +0 -0
  14. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker/web_client/dist/style.css +0 -0
  15. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/SOURCES.txt +0 -0
  16. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/dependency_links.txt +0 -0
  17. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/entry_points.txt +0 -0
  18. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/not-zip-safe +0 -0
  19. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/requires.txt +0 -0
  20. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/scm_file_list.json +0 -0
  21. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/girder_plugin_worker.egg-info/top_level.txt +0 -0
  22. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/pyproject.toml +0 -0
  23. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/setup.cfg +0 -0
  24. {girder_plugin_worker-5.0.15.dev8 → girder_plugin_worker-5.0.15.dev12}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-plugin-worker
3
- Version: 5.0.15.dev8
3
+ Version: 5.0.15.dev12
4
4
  Summary: The Girder server plugin interfacing with girder-worker
5
5
  Home-page: http://girder.readthedocs.io/en/latest/plugins.html#worker
6
6
  Author: Kitware, Inc.
@@ -0,0 +1,2 @@
1
+ (function(e){typeof define==`function`&&define.amd?define([],e):e()})(function(){function e(e){var t=``;return t+=`<div class="g-config-breadcrumb-container"></div><p>Configure how Girder should connect to the celery worker.
2
+ </p><form id="g-worker-settings-form" role="form"><div class="form-group"><label class="control-label" for="g-worker-api-url">Alternative Girder API URL</label><input class="input-sm form-control" id="g-worker-api-url" type="text" placeholder="API URL (default: auto-detected)"/></div><div class="checkbox"><label class="control-label" for="g-worker-direct-path"><input id="g-worker-direct-path" type="checkbox"/><span>When possible, send local file paths to the worker to avoid downloading files</span></label></div><p class="g-validation-failed-message" id="g-worker-settings-error-message"></p><input class="btn btn-sm btn-primary" type="submit" value="Save"/></form><button class="q-worker-task-info btn btn-default" title="Task information" style="margin-top:10px;">Task information</button>`,t}var t=girder.views.widgets.PluginConfigBreadcrumbWidget,n=girder.views.View,r=girder.events,{restRequest:i}=girder.rest,a=girder.router,o=n.extend({events:{"submit #g-worker-settings-form":function(e){e.preventDefault(),this.$(`#g-worker-settings-error-message`).empty(),this._saveSettings([{key:`worker.api_url`,value:this.$(`#g-worker-api-url`).val().trim()},{key:`worker.direct_path`,value:this.$(`#g-worker-direct-path`).is(`:checked`)}])},"click .q-worker-task-info":function(e){a.navigate(`#plugins/worker/task/status`,{trigger:!0})}},initialize:function(){i({method:`GET`,url:`system/setting`,data:{list:JSON.stringify([`worker.api_url`,`worker.direct_path`])}}).done(e=>{this.render(),this.$(`#g-worker-api-url`).val(e[`worker.api_url`]),this.$(`#g-worker-direct-path`).prop(`checked`,e[`worker.direct_path`])})},render:function(){return this.$el.html(e()),this.breadcrumb||=new t({pluginName:`Worker`,el:this.$(`.g-config-breadcrumb-container`),parentView:this}),this.breadcrumb.render(),this},_saveSettings:function(e){i({method:`PUT`,url:`system/setting`,data:{list:JSON.stringify(e)},error:null}).done(e=>{r.trigger(`g:alert`,{icon:`ok`,text:`Settings saved.`,type:`success`,timeout:4e3})}).fail(e=>{this.$(`#g-worker-settings-error-message`).text(e.responseJSON.message)})}});function s(e){var t=``+e,n=c.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`&quot;`;break;case 38:a=`&amp;`;break;case 60:a=`&lt;`;break;case 62:a=`&gt;`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var c=/["&<>]/;function l(e){var t=``,n=e||{};return(function(e,n,r,i,a,o){t+=`<h1 class="g-worker-status-header">Global information about workers`,t+=r?`<i class="icon-spin4 icon-spin"></i>`:`<button class="g-worker-status-btn-reload"><i class="icon-arrows-cw"></i></button>`,t+=`</h1>`,r||(t+=`<div class="g-worker-status-content">`,n===null?(t=t+`<table class="g-worker-status-table"><tr><th>`+s(`Name`)+`</th><th>`+s(`Status`)+`</th><th>`+s(`Max Concurrency`)+`</th><th>`+s(`Accepted tasks`)+`</th><th>`+s(`Running tasks`)+`</th><th>`+s(`Completed tasks`)+`</th><th>`+s(`Report`)+`</th></tr>`,(function(){var e=a;if(typeof e.length==`number`)for(var n=0,r=e.length;n<r;n++){var i=e[n];t=t+`<tr class="g-worker-task-status-link"><td>`+s(i.name??``)+`</td>`,t=i.ping===`pong`?t+`<td>`+s(`Online`)+`</td>`:t+`<td>`+s(`Offline`)+`</td>`,t=t+`<td>`+s(i.concurrency??``)+`</td><td>`+s(i.stats??``)+`</td><td>`+s(i.active.length??``)+`</td><td>`+s(i.stats-i.active.length??``)+`</td><td>`+s(i.report??``)+`</td></tr>`}else{var r=0;for(var n in e){r++;var i=e[n];t=t+`<tr class="g-worker-task-status-link"><td>`+s(i.name??``)+`</td>`,t=i.ping===`pong`?t+`<td>`+s(`Online`)+`</td>`:t+`<td>`+s(`Offline`)+`</td>`,t=t+`<td>`+s(i.concurrency??``)+`</td><td>`+s(i.stats??``)+`</td><td>`+s(i.active.length??``)+`</td><td>`+s(i.stats-i.active.length??``)+`</td><td>`+s(i.report??``)+`</td></tr>`}}}).call(this),t+=`</table>`,(e.length||i.length)&&(t=t+`<div class="g-worker-task-status"><h2 class="g-worker-status-header">`+s(o??``)+`</h2>`,e.length&&(t=t+`<h3 class="g-worker-status-header">Running Tasks</h3><table class="g-worker-task-status-table"><tr><th>`+s(`Name`)+`</th><th>`+s(`ID`)+`</th><th>`+s(`Type`)+`</th><th>`+s(`Time Start`)+`</th><th>`+s(`Arguments`)+`</th><th>`+s(`KeyWord Arguments`)+`</th><th>`+s(`Worker PID`)+`</th></tr>`,(function(){var n=e;if(typeof n.length==`number`)for(var r=0,i=n.length;r<i;r++){var a=n[r];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.time_start??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.worker_pid??``)+`</td></tr>`}else{var i=0;for(var r in n){i++;var a=n[r];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.time_start??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.worker_pid??``)+`</td></tr>`}}}).call(this),t+=`</table>`),i.length&&(t=t+`<h3 class="g-worker-status-header">Queued Tasks</h3><table class="g-worker-task-status-table"><tr><th>`+s(`Name`)+`</th><th>`+s(`ID`)+`</th><th>`+s(`Type`)+`</th><th>`+s(`Arguments`)+`</th><th>`+s(`KeyWord Arguments`)+`</th><th>`+s(`Priority`)+`</th><th>`+s(`Redelivered`)+`</th></tr>`,(function(){var e=i;if(typeof e.length==`number`)for(var n=0,r=e.length;n<r;n++){var a=e[n];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.delivery_info.priority??``)+`</td><td>`+s(a.delivery_info.redelivered??``)+`</td></tr>`}else{var r=0;for(var n in e){r++;var a=e[n];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.delivery_info.priority??``)+`</td><td>`+s(a.delivery_info.redelivered??``)+`</td></tr>`}}}).call(this),t+=`</table>`),t+=`</div>`)):t=t+`<p class="g-worker-status-no-worker-message">`+s(n??``)+`</p>`,t+=`</div>`)}).call(this,`activeTasks`in n?n.activeTasks:typeof activeTasks<`u`?activeTasks:void 0,`errorMsg`in n?n.errorMsg:typeof errorMsg<`u`?errorMsg:void 0,`load`in n?n.load:typeof load<`u`?load:void 0,`reservedTasks`in n?n.reservedTasks:typeof reservedTasks<`u`?reservedTasks:void 0,`workerList`in n?n.workerList:typeof workerList<`u`?workerList:void 0,`workerName`in n?n.workerName:typeof workerName<`u`?workerName:void 0),t}var u=girder._,d=girder.views.View,{restRequest:f}=girder.rest,p=d.extend({events:{"click .g-worker-status-btn-reload":function(){this._fetchWorkerStatus()},"click .g-worker-task-status-link":function(e){var t=e.target.parentElement.childNodes[0].innerText;u.each(this.workers,e=>{e.name===t&&(this.workerName=t,this.activeTaskList=e.active,this.reservedTaskList=e.reserved,this.render())})}},initialize:function(){this.errorMsg=null,this._fetchWorkerStatus()},render:function(){return this.$el.html(l({workerList:this.workers,load:this.load,workerName:this.workerName,activeTasks:this.activeTaskList,reservedTasks:this.reservedTaskList,errorMsg:this.errorMsg})),this},_fetchWorkerStatus:function(){this.workers=[],this.activeTaskList=[],this.reservedTaskList=[],this.load=!0,f({method:`GET`,url:`worker/status`}).done(e=>{e===-1?this.errorMsg=`The Broker is inaccessible.`:(this.errorMsg=null,this.parseWorkerStatus(e.report,e.stats,e.ping,e.active,e.reserved)),this.load=!1,this.render()}),this.render()},parseWorkerStatus:function(e,t,n,r,i){var a=u.keys(e),o=null,s=null,c=null,l=null;u.each(a,a=>{u.has(e[a],`ok`)&&(o=e[a].ok),t[a].total!==null&&(s=u.values(t[a].total)[0]),t[a].pool!==null&&(c=t[a].pool[`max-concurrency`]),u.has(n[a],`ok`)&&(l=n[a].ok),this.workers.push({name:a,report:o,stats:s|0,concurrency:c|0,ping:l,active:r[a]||[],reserved:i[a]})}),this.workers.length||(this.errorMsg=`No task information.`)}}),m=girder.router,h=girder.events,{exposePluginConfig:g}=girder.utilities.PluginUtils;g(`worker`,`plugins/worker/config`),m.route(`plugins/worker/config`,`workerConfig`,function(){h.trigger(`g:navigateTo`,o)}),m.route(`plugins/worker/task/status`,`workerTaskStatus`,function(){h.trigger(`g:navigateTo`,p)}),girder.events.on(`g:appload.before`,()=>{let e=girder.plugins.jobs.JobStatus;e.registerStatus({WORKER_FETCHING_INPUT:{value:820,text:`Fetching input`,icon:`icon-download`,color:`#89d2e2`},WORKER_CONVERTING_INPUT:{value:821,text:`Converting input`,icon:`icon-shuffle`,color:`#92f5b5`},WORKER_CONVERTING_OUTPUT:{value:822,text:`Converting output`,icon:`icon-shuffle`,color:`#92f5b5`},WORKER_PUSHING_OUTPUT:{value:823,text:`Pushing output`,icon:`icon-upload`,color:`#89d2e2`},WORKER_CANCELING:{value:824,text:`Canceling`,icon:`icon-spin3 animate-spin`,color:`#f89406`}});let t=e.isCancelable;e.isCancelable=function(n){let r=n.get(`handler`);return r===`worker_handler`||r===`celery_handler`?[e.CANCELED,e.WORKER_CANCELING,e.SUCCESS,e.ERROR].indexOf(n.get(`status`))===-1:t(n)}})});
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-plugin-worker
3
- Version: 5.0.15.dev8
3
+ Version: 5.0.15.dev12
4
4
  Summary: The Girder server plugin interfacing with girder-worker
5
5
  Home-page: http://girder.readthedocs.io/en/latest/plugins.html#worker
6
6
  Author: Kitware, Inc.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "tag": "5.0.14",
3
- "distance": 8,
4
- "node": "ga9f3737b96ca87be312d0061a215c541bb5b6d9e",
3
+ "distance": 12,
4
+ "node": "g103f7799794d1e6b3daa6eff70e20f860abd4c0f",
5
5
  "dirty": false,
6
6
  "branch": "master",
7
7
  "node_date": "2026-08-04"
@@ -1,2 +0,0 @@
1
- (function(e){typeof define==`function`&&define.amd?define([],e):e()})(function(){function e(e){var t=``;return t+=`<div class="g-config-breadcrumb-container"></div><p>Configure how Girder should connect to the celery worker.
2
- </p><form id="g-worker-settings-form" role="form"><div class="form-group"><label class="control-label" for="g-worker-api-url">Alternative Girder API URL</label><input class="input-sm form-control" id="g-worker-api-url" type="text" placeholder="API URL (default: auto-detected)"/></div><div class="checkbox"><label class="control-label" for="g-worker-direct-path"><input id="g-worker-direct-path" type="checkbox"/><span>When possible, send local file paths to the worker to avoid downloading files</span></label></div><p class="g-validation-failed-message" id="g-worker-settings-error-message"></p><input class="btn btn-sm btn-primary" type="submit" value="Save"/></form><button class="q-worker-task-info btn btn-default" title="Task information" style="margin-top:10px;">Task information</button>`,t}var t=girder.views.widgets.PluginConfigBreadcrumbWidget,n=girder.views.View,r=girder.events,{restRequest:i}=girder.rest,a=girder.router,o=n.extend({events:{"submit #g-worker-settings-form":function(e){e.preventDefault(),this.$(`#g-worker-settings-error-message`).empty(),this._saveSettings([{key:`worker.api_url`,value:this.$(`#g-worker-api-url`).val().trim()},{key:`worker.direct_path`,value:this.$(`#g-worker-direct-path`).is(`:checked`)}])},"click .q-worker-task-info":function(e){a.navigate(`#plugins/worker/task/status`,{trigger:!0})}},initialize:function(){i({method:`GET`,url:`system/setting`,data:{list:JSON.stringify([`worker.api_url`,`worker.direct_path`])}}).done(e=>{this.render(),this.$(`#g-worker-api-url`).val(e[`worker.api_url`]),this.$(`#g-worker-direct-path`).prop(`checked`,e[`worker.direct_path`])})},render:function(){return this.$el.html(e()),this.breadcrumb||=new t({pluginName:`Worker`,el:this.$(`.g-config-breadcrumb-container`),parentView:this}),this.breadcrumb.render(),this},_saveSettings:function(e){i({method:`PUT`,url:`system/setting`,data:{list:JSON.stringify(e)},error:null}).done(e=>{r.trigger(`g:alert`,{icon:`ok`,text:`Settings saved.`,type:`success`,timeout:4e3})}).fail(e=>{this.$(`#g-worker-settings-error-message`).text(e.responseJSON.message)})}});function s(e){var t=``+e,n=c.exec(t);if(!n)return e;var r,i,a,o=``;for(r=n.index,i=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:a=`&quot;`;break;case 38:a=`&amp;`;break;case 60:a=`&lt;`;break;case 62:a=`&gt;`;break;default:continue}i!==r&&(o+=t.substring(i,r)),i=r+1,o+=a}return i===r?o:o+t.substring(i,r)}var c=/["&<>]/;function l(e){var t=``,n=e||{};return(function(e,n,r,i,a,o){t+=`<h1 class="g-worker-status-header">Global information about workers`,r?t+=`<i class="icon-spin4 icon-spin"></i>`:t+=`<button class="g-worker-status-btn-reload"><i class="icon-arrows-cw"></i></button>`,t+=`</h1>`,r||(t+=`<div class="g-worker-status-content">`,n===null?(t=t+`<table class="g-worker-status-table"><tr><th>`+s(`Name`)+`</th><th>`+s(`Status`)+`</th><th>`+s(`Max Concurrency`)+`</th><th>`+s(`Accepted tasks`)+`</th><th>`+s(`Running tasks`)+`</th><th>`+s(`Completed tasks`)+`</th><th>`+s(`Report`)+`</th></tr>`,(function(){var e=a;if(typeof e.length==`number`)for(var n=0,r=e.length;n<r;n++){var i=e[n];t=t+`<tr class="g-worker-task-status-link"><td>`+s(i.name??``)+`</td>`,t=i.ping===`pong`?t+`<td>`+s(`Online`)+`</td>`:t+`<td>`+s(`Offline`)+`</td>`,t=t+`<td>`+s(i.concurrency??``)+`</td><td>`+s(i.stats??``)+`</td><td>`+s(i.active.length??``)+`</td><td>`+s(i.stats-i.active.length??``)+`</td><td>`+s(i.report??``)+`</td></tr>`}else{var r=0;for(var n in e){r++;var i=e[n];t=t+`<tr class="g-worker-task-status-link"><td>`+s(i.name??``)+`</td>`,t=i.ping===`pong`?t+`<td>`+s(`Online`)+`</td>`:t+`<td>`+s(`Offline`)+`</td>`,t=t+`<td>`+s(i.concurrency??``)+`</td><td>`+s(i.stats??``)+`</td><td>`+s(i.active.length??``)+`</td><td>`+s(i.stats-i.active.length??``)+`</td><td>`+s(i.report??``)+`</td></tr>`}}}).call(this),t+=`</table>`,(e.length||i.length)&&(t=t+`<div class="g-worker-task-status"><h2 class="g-worker-status-header">`+s(o??``)+`</h2>`,e.length&&(t=t+`<h3 class="g-worker-status-header">Running Tasks</h3><table class="g-worker-task-status-table"><tr><th>`+s(`Name`)+`</th><th>`+s(`ID`)+`</th><th>`+s(`Type`)+`</th><th>`+s(`Time Start`)+`</th><th>`+s(`Arguments`)+`</th><th>`+s(`KeyWord Arguments`)+`</th><th>`+s(`Worker PID`)+`</th></tr>`,(function(){var n=e;if(typeof n.length==`number`)for(var r=0,i=n.length;r<i;r++){var a=n[r];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.time_start??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.worker_pid??``)+`</td></tr>`}else{var i=0;for(var r in n){i++;var a=n[r];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.time_start??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.worker_pid??``)+`</td></tr>`}}}).call(this),t+=`</table>`),i.length&&(t=t+`<h3 class="g-worker-status-header">Queued Tasks</h3><table class="g-worker-task-status-table"><tr><th>`+s(`Name`)+`</th><th>`+s(`ID`)+`</th><th>`+s(`Type`)+`</th><th>`+s(`Arguments`)+`</th><th>`+s(`KeyWord Arguments`)+`</th><th>`+s(`Priority`)+`</th><th>`+s(`Redelivered`)+`</th></tr>`,(function(){var e=i;if(typeof e.length==`number`)for(var n=0,r=e.length;n<r;n++){var a=e[n];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.delivery_info.priority??``)+`</td><td>`+s(a.delivery_info.redelivered??``)+`</td></tr>`}else{var r=0;for(var n in e){r++;var a=e[n];t=t+`<tr><td>`+s(a.name??``)+`</td><td>`+s(a.id??``)+`</td><td>`+s(a.type??``)+`</td><td>`+s(a.args??``)+`</td><td>`+s(a.kwargs??``)+`</td><td>`+s(a.delivery_info.priority??``)+`</td><td>`+s(a.delivery_info.redelivered??``)+`</td></tr>`}}}).call(this),t+=`</table>`),t+=`</div>`)):t=t+`<p class="g-worker-status-no-worker-message">`+s(n??``)+`</p>`,t+=`</div>`)}).call(this,`activeTasks`in n?n.activeTasks:typeof activeTasks<`u`?activeTasks:void 0,`errorMsg`in n?n.errorMsg:typeof errorMsg<`u`?errorMsg:void 0,`load`in n?n.load:typeof load<`u`?load:void 0,`reservedTasks`in n?n.reservedTasks:typeof reservedTasks<`u`?reservedTasks:void 0,`workerList`in n?n.workerList:typeof workerList<`u`?workerList:void 0,`workerName`in n?n.workerName:typeof workerName<`u`?workerName:void 0),t}var u=girder._,d=girder.views.View,{restRequest:f}=girder.rest,p=d.extend({events:{"click .g-worker-status-btn-reload":function(){this._fetchWorkerStatus()},"click .g-worker-task-status-link":function(e){var t=e.target.parentElement.childNodes[0].innerText;u.each(this.workers,e=>{e.name===t&&(this.workerName=t,this.activeTaskList=e.active,this.reservedTaskList=e.reserved,this.render())})}},initialize:function(){this.errorMsg=null,this._fetchWorkerStatus()},render:function(){return this.$el.html(l({workerList:this.workers,load:this.load,workerName:this.workerName,activeTasks:this.activeTaskList,reservedTasks:this.reservedTaskList,errorMsg:this.errorMsg})),this},_fetchWorkerStatus:function(){this.workers=[],this.activeTaskList=[],this.reservedTaskList=[],this.load=!0,f({method:`GET`,url:`worker/status`}).done(e=>{e===-1?this.errorMsg=`The Broker is inaccessible.`:(this.errorMsg=null,this.parseWorkerStatus(e.report,e.stats,e.ping,e.active,e.reserved)),this.load=!1,this.render()}),this.render()},parseWorkerStatus:function(e,t,n,r,i){var a=u.keys(e),o=null,s=null,c=null,l=null;u.each(a,a=>{u.has(e[a],`ok`)&&(o=e[a].ok),t[a].total!==null&&(s=u.values(t[a].total)[0]),t[a].pool!==null&&(c=t[a].pool[`max-concurrency`]),u.has(n[a],`ok`)&&(l=n[a].ok),this.workers.push({name:a,report:o,stats:s|0,concurrency:c|0,ping:l,active:r[a]||[],reserved:i[a]})}),this.workers.length||(this.errorMsg=`No task information.`)}}),m=girder.router,h=girder.events,{exposePluginConfig:g}=girder.utilities.PluginUtils;g(`worker`,`plugins/worker/config`),m.route(`plugins/worker/config`,`workerConfig`,function(){h.trigger(`g:navigateTo`,o)}),m.route(`plugins/worker/task/status`,`workerTaskStatus`,function(){h.trigger(`g:navigateTo`,p)}),girder.events.on(`g:appload.before`,()=>{let e=girder.plugins.jobs.JobStatus;e.registerStatus({WORKER_FETCHING_INPUT:{value:820,text:`Fetching input`,icon:`icon-download`,color:`#89d2e2`},WORKER_CONVERTING_INPUT:{value:821,text:`Converting input`,icon:`icon-shuffle`,color:`#92f5b5`},WORKER_CONVERTING_OUTPUT:{value:822,text:`Converting output`,icon:`icon-shuffle`,color:`#92f5b5`},WORKER_PUSHING_OUTPUT:{value:823,text:`Pushing output`,icon:`icon-upload`,color:`#89d2e2`},WORKER_CANCELING:{value:824,text:`Canceling`,icon:`icon-spin3 animate-spin`,color:`#f89406`}});let t=e.isCancelable;e.isCancelable=function(n){let r=n.get(`handler`);return r===`worker_handler`||r===`celery_handler`?[e.CANCELED,e.WORKER_CANCELING,e.SUCCESS,e.ERROR].indexOf(n.get(`status`))===-1:t(n)}})});