Move connections to a tab of user

This commit is contained in:
dklimpel 2020-03-29 23:52:47 +02:00
parent 8687a18c5b
commit c9daaa4941
5 changed files with 48 additions and 54 deletions

View File

@ -5,7 +5,6 @@ import authProvider from "./synapse/authProvider";
import dataProvider from "./synapse/dataProvider"; import dataProvider from "./synapse/dataProvider";
import { UserList, UserCreate, UserEdit } from "./components/users"; import { UserList, UserCreate, UserEdit } from "./components/users";
import { RoomList } from "./components/rooms"; import { RoomList } from "./components/rooms";
import { ConnectionsShow } from "./components/connections";
import LoginPage from "./components/LoginPage"; import LoginPage from "./components/LoginPage";
import UserIcon from "@material-ui/icons/Group"; import UserIcon from "@material-ui/icons/Group";
import { ViewListIcon as RoomIcon } from "@material-ui/icons/ViewList"; import { ViewListIcon as RoomIcon } from "@material-ui/icons/ViewList";
@ -37,7 +36,7 @@ const App = () => (
icon={UserIcon} icon={UserIcon}
/> />
<Resource name="rooms" list={RoomList} icon={RoomIcon} /> <Resource name="rooms" list={RoomList} icon={RoomIcon} />
<Resource name="connections" show={ConnectionsShow} /> <Resource name="connections" />
</Admin> </Admin>
); );

View File

@ -1,43 +0,0 @@
import React from "react";
import {
Datagrid,
Show,
SimpleForm,
TextField,
ArrayField,
DateField,
} from "react-admin";
export const ConnectionsShow = props => (
<Show {...props}>
<SimpleForm toolbar={false}>
<TextField source="user_id" label="resources.users.fields.id" />
<ArrayField
source="devices[].sessions[0].connections"
label="resources.connections.name"
>
<Datagrid style={{ width: "100%" }}>
<TextField source="ip" sortable={false} />
<DateField
source="last_seen"
showTime
options={{
year: "numeric",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
}}
sortable={false}
/>
<TextField
source="user_agent"
sortable={false}
style={{ width: "100%" }}
/>
</Datagrid>
</ArrayField>
</SimpleForm>
</Show>
);

View File

@ -1,4 +1,6 @@
import React from "react"; import React from "react";
import PhoneIcon from "@material-ui/icons/Phone";
import PersonPinIcon from "@material-ui/icons/PersonPin";
import { import {
Datagrid, Datagrid,
Create, Create,
@ -14,7 +16,10 @@ import {
TextInput, TextInput,
ReferenceField, ReferenceField,
regex, regex,
ShowButton, TabbedForm,
FormTab,
ArrayField,
DateField,
} from "react-admin"; } from "react-admin";
const UserFilter = props => ( const UserFilter = props => (
@ -57,7 +62,6 @@ export const UserList = props => (
<BooleanField source="is_guest" sortable={false} /> <BooleanField source="is_guest" sortable={false} />
<BooleanField source="admin" sortable={false} /> <BooleanField source="admin" sortable={false} />
<BooleanField source="deactivated" sortable={false} /> <BooleanField source="deactivated" sortable={false} />
<ShowButton basePath="connections" data="id" />
</Datagrid> </Datagrid>
</List> </List>
); );
@ -81,12 +85,44 @@ export const UserCreate = props => (
export const UserEdit = props => ( export const UserEdit = props => (
<Edit {...props}> <Edit {...props}>
<SimpleForm> <TabbedForm>
<TextInput source="id" disabled /> <FormTab label="resources.users.name" icon={<PersonPinIcon />}>
<TextInput source="displayname" /> <TextInput source="id" disabled />
<PasswordInput source="password" autoComplete="new-password" /> <TextInput source="displayname" />
<BooleanInput source="admin" /> <PasswordInput source="password" autoComplete="new-password" />
<BooleanInput source="deactivated" /> <BooleanInput source="admin" />
</SimpleForm> <BooleanInput source="deactivated" />
</FormTab>
<FormTab label="resources.connections.name" icon={<PhoneIcon />}>
<ReferenceField reference="connections" source="id" addLabel={false}>
<ArrayField
source="devices[].sessions[0].connections"
label="resources.connections.name"
>
<Datagrid style={{ width: "100%" }}>
<TextField source="ip" sortable={false} />
<DateField
source="last_seen"
showTime
options={{
year: "numeric",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
}}
sortable={false}
/>
<TextField
source="user_agent"
sortable={false}
style={{ width: "100%" }}
/>
</Datagrid>
</ArrayField>
</ReferenceField>
</FormTab>
</TabbedForm>
</Edit> </Edit>
); );

View File

@ -15,6 +15,7 @@ export default {
resources: { resources: {
users: { users: {
name: "Benutzer", name: "Benutzer",
backtolist: "Zurück zur Liste",
fields: { fields: {
avatar: "Avatar", avatar: "Avatar",
id: "Benutzer-ID", id: "Benutzer-ID",

View File

@ -15,6 +15,7 @@ export default {
resources: { resources: {
users: { users: {
name: "User |||| Users", name: "User |||| Users",
backtolist: "Back to list",
fields: { fields: {
avatar: "Avatar", avatar: "Avatar",
id: "User-ID", id: "User-ID",