Fix admin table sorting

This commit is contained in:
Narek Amirbekian
2022-03-10 22:20:01 -08:00
parent d11eda14ed
commit 8afc2c9ae9
2 changed files with 68 additions and 83 deletions

View File

@@ -153,10 +153,9 @@ const ServerDashboard = (props) => {
); );
}; };
const EditUserCell = ({ user, numServers, serverName }) => { const EditUserCell = ({ user }) => {
if (serverName) return null;
return ( return (
<td rowspan={numServers}> <td>
<button <button
className="btn btn-primary btn-xs" className="btn btn-primary btn-xs"
style={{ marginRight: 20 }} style={{ marginRight: 20 }}
@@ -176,6 +175,14 @@ const ServerDashboard = (props) => {
); );
}; };
let servers = user_data.flatMap((user) => {
let userServers = Object.values({
"": user.server,
...(user.servers || {}),
});
return userServers.map((server) => [user, server]);
});
return ( return (
<div className="container" data-testid="container"> <div className="container" data-testid="container">
{errorAlert != null ? ( {errorAlert != null ? (
@@ -339,87 +346,65 @@ const ServerDashboard = (props) => {
</Button> </Button>
</td> </td>
</tr> </tr>
{user_data.flatMap((e, i) => { {servers.map(([user, server], i) => {
let userServers = Object.values({ server.name = server.name || ""
"": e.server, return (
...(e.servers || {}), <tr key={i + "row"} className="user-row">
}); <td data-testid="user-row-name">{user.name}</td>
return userServers.map((server) => { <td data-testid="user-row-admin">
server = { name: "", ...server }; {user.admin ? "admin" : ""}
return ( </td>
<tr key={i + "row"} className="user-row">
{!server.name && (
<td
data-testid="user-row-name"
rowspan={userServers.length}
>
{e.name}
</td>
)}
{!server.name && (
<td
data-testid="user-row-admin"
rowspan={userServers.length}
>
{e.admin ? "admin" : ""}
</td>
)}
<td data-testid="user-row-server"> <td data-testid="user-row-server">
{server.name ? ( {server.name ? (
<p class="text-secondary">{server.name}</p> <p class="text-secondary">{server.name}</p>
) : ( ) : (
<p style={{ color: "lightgrey" }}>[MAIN]</p> <p style={{ color: "lightgrey" }}>[MAIN]</p>
)} )}
</td> </td>
<td data-testid="user-row-last-activity"> <td data-testid="user-row-last-activity">
{server.last_activity {server.last_activity
? timeSince(server.last_activity) ? timeSince(server.last_activity)
: "Never"} : "Never"}
</td> </td>
<td data-testid="user-row-server-activity"> <td data-testid="user-row-server-activity">
{server.started ? ( {server.started ? (
// Stop Single-user server // Stop Single-user server
<> <>
<StopServerButton <StopServerButton
serverName={server.name} serverName={server.name}
userName={e.name} userName={user.name}
/> />
<AccessServerButton <AccessServerButton
serverName={server.name} serverName={server.name}
userName={e.name} userName={user.name}
/> />
</> </>
) : ( ) : (
// Start Single-user server // Start Single-user server
<> <>
<StartServerButton <StartServerButton
serverName={server.name} serverName={server.name}
userName={e.name} userName={user.name}
/> />
<a <a
href={`/spawn/${e.name}${ href={`/spawn/${user.name}${
server.name && "/" + server.name server.name && "/" + server.name
}`} }`}
>
<button
className="btn btn-secondary btn-xs"
style={{ marginRight: 20 }}
> >
<button Spawn Page
className="btn btn-secondary btn-xs" </button>
style={{ marginRight: 20 }} </a>
> </>
Spawn Page )}
</button> </td>
</a> <EditUserCell user={user} />
</> </tr>
)} );
</td>
<EditUserCell
user={e}
numServers={userServers.length}
serverName={server.name}
/>
</tr>
);
});
})} })}
</tbody> </tbody>
</table> </table>

File diff suppressed because one or more lines are too long