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,31 +346,14 @@ 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,
...(e.servers || {}),
});
return userServers.map((server) => {
server = { name: "", ...server };
return ( return (
<tr key={i + "row"} className="user-row"> <tr key={i + "row"} className="user-row">
{!server.name && ( <td data-testid="user-row-name">{user.name}</td>
<td <td data-testid="user-row-admin">
data-testid="user-row-name" {user.admin ? "admin" : ""}
rowspan={userServers.length}
>
{e.name}
</td> </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 ? (
@@ -383,11 +373,11 @@ const ServerDashboard = (props) => {
<> <>
<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}
/> />
</> </>
) : ( ) : (
@@ -395,10 +385,10 @@ const ServerDashboard = (props) => {
<> <>
<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
}`} }`}
> >
@@ -412,14 +402,9 @@ const ServerDashboard = (props) => {
</> </>
)} )}
</td> </td>
<EditUserCell <EditUserCell user={user} />
user={e}
numServers={userServers.length}
serverName={server.name}
/>
</tr> </tr>
); );
});
})} })}
</tbody> </tbody>
</table> </table>

File diff suppressed because one or more lines are too long