Add sort and filter to rooms list and update to users list

This commit is contained in:
dklimpel 2020-03-28 14:01:41 +01:00
parent 7eeb60539f
commit ae0a88a7ab
5 changed files with 35 additions and 8 deletions

View File

@ -1,13 +1,29 @@
import React from "react"; import React from "react";
import { Datagrid, List, TextField } from "react-admin"; import {
Datagrid,
List,
TextField,
TextInput,
Filter
} from "react-admin";
const RoomFilter = (props) => (
<Filter {...props}>
<TextInput source="search_term" alwaysOn />
</Filter>
);
export const RoomList = props => ( export const RoomList = props => (
<List {...props}> <List
{...props}
sort={{ field: "alphabetical", order: "DESC" }}
filters={<RoomFilter />}
>
<Datagrid> <Datagrid>
<TextField source="room_id" /> <TextField source="room_id" sortable={false} />
<TextField source="name" /> <TextField source="name" sortBy="alphabetical" />
<TextField source="canonical_alias" /> <TextField source="canonical_alias" sortable={false} />
<TextField source="joined_members" /> <TextField source="joined_members" sortBy="size" />
</Datagrid> </Datagrid>
</List> </List>
); );

View File

@ -43,7 +43,7 @@ export const UserList = props => (
> >
<ImageField source="avatar_url" title="displayname" /> <ImageField source="avatar_url" title="displayname" />
</ReferenceField> </ReferenceField>
<TextField source="id" /> <TextField source="id" sortable={false} />
{/* Hack since the users endpoint does not give displaynames in the list*/} {/* Hack since the users endpoint does not give displaynames in the list*/}
<ReferenceField <ReferenceField
source="name" source="name"

View File

@ -36,6 +36,7 @@ export default {
name: "Name", name: "Name",
canonical_alias: "Alias", canonical_alias: "Alias",
joined_members: "Mitglieder", joined_members: "Mitglieder",
search_term: "Suche",
}, },
}, },
}, },

View File

@ -36,6 +36,7 @@ export default {
name: "Name", name: "Name",
canonical_alias: "Alias", canonical_alias: "Alias",
joined_members: "Members", joined_members: "Members",
search_term: "Search",
}, },
}, },
}, },

View File

@ -55,8 +55,14 @@ function filterNullValues(key, value) {
const dataProvider = { const dataProvider = {
getList: (resource, params) => { getList: (resource, params) => {
console.log("getList " + resource); console.log("getList " + resource);
const { user_id, guests, deactivated } = params.filter; const { user_id, guests, deactivated, search_term } = params.filter;
const { page, perPage } = params.pagination; const { page, perPage } = params.pagination;
var { field, order } = params.sort;
if ( order === "DESC") {
order = "b";
} else {
order = "f";
}
const from = (page - 1) * perPage; const from = (page - 1) * perPage;
const query = { const query = {
from: from, from: from,
@ -64,6 +70,9 @@ const dataProvider = {
user_id: user_id, user_id: user_id,
guests: guests, guests: guests,
deactivated: deactivated, deactivated: deactivated,
order_by: field,
search_term: search_term,
dir: order,
}; };
const homeserver = localStorage.getItem("base_url"); const homeserver = localStorage.getItem("base_url");
if (!homeserver || !(resource in resourceMap)) return Promise.reject(); if (!homeserver || !(resource in resourceMap)) return Promise.reject();