diff --git a/jsx/src/components/ServerDashboard/ServerDashboard.jsx b/jsx/src/components/ServerDashboard/ServerDashboard.jsx
index 2e76771a..3847c314 100644
--- a/jsx/src/components/ServerDashboard/ServerDashboard.jsx
+++ b/jsx/src/components/ServerDashboard/ServerDashboard.jsx
@@ -29,6 +29,7 @@ const ServerDashboard = (props) => {
var [errorAlert, setErrorAlert] = useState(null);
var [sortMethod, setSortMethod] = useState(null);
+ var [disabledButtons, setDisabledButtons] = useState({});
var user_data = useSelector((state) => state.user_data),
user_page = useSelector((state) => state.user_page),
@@ -241,9 +242,10 @@ const ServerDashboard = (props) => {
...(e.servers || {}),
});
return userServers.map((server) => {
+ server = { name: "", ...server };
return (
- {!(server || {}).name && (
+ {!server.name && (
{
{e.name}
|
)}
- {!(server || {}).name && (
+ {!server.name && (
{
)}
|
- {(server || {}).name || "[MAIN]"}
+ {server.name || "[MAIN]"}
|
- {(server || {}).last_activity
+ {server.last_activity
? timeSince(server.last_activity)
: "Never"}
|
- {server != null ? (
+ {server.started ? (
// Stop Single-user server
-
+ <>
+
+
+
+
+ >
) : (
// Start Single-user server
-
+
+
+ Spawn New
+
+
+ >
)}
|
@@ -346,18 +392,6 @@ const ServerDashboard = (props) => {
>
edit user
-
-
- Access Server
-
-
|
);
diff --git a/share/jupyterhub/static/js/admin-react.js b/share/jupyterhub/static/js/admin-react.js
index e6097263..e10a4a3a 100644
--- a/share/jupyterhub/static/js/admin-react.js
+++ b/share/jupyterhub/static/js/admin-react.js
@@ -1,2 +1,2 @@
/*! For license information please see admin-react.js.LICENSE.txt */
-(()=>{var e,t,n={733:(e,t,n)=>{"use strict";var r=n(294),a=n(935),o=n(697),l=n.n(o),i=r.createContext(null),u=function(e){e()},c=function(){return u},s={notify:function(){}},f=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=s,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=function(){var e=c(),t=null,n=null;return{clear:function(){t=null,n=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],n=t;n;)e.push(n),n=n.next;return e},subscribe:function(e){var r=!0,a=n={callback:e,next:null,prev:n};return a.prev?a.prev.next=a:t=a,function(){r&&null!==t&&(r=!1,a.next?a.next.prev=a.prev:n=a.prev,a.prev?a.prev.next=a.next:t=a.next)}}}}())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=s)},e}();const d=function(e){var t=e.store,n=e.context,a=e.children,o=(0,r.useMemo)((function(){var e=new f(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),l=(0,r.useMemo)((function(){return t.getState()}),[t]);(0,r.useEffect)((function(){var e=o.subscription;return e.trySubscribe(),l!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[o,l]);var u=n||i;return r.createElement(u.Provider,{value:o},a)};n(679),n(864);var p="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?r.useLayoutEffect:r.useEffect,h=n(121),m=function(){return Math.random().toString(36).substring(7).split("").join(".")},v={INIT:"@@redux/INIT"+m(),REPLACE:"@@redux/REPLACE"+m(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+m()}};function y(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function g(){return(g=Object.assign||function(e){for(var t=1;t