2021-02-11 23:14:02 +03:00
|
|
|
import React from "react";
|
2021-02-23 15:37:54 +03:00
|
|
|
import { cloneElement } from "react";
|
2021-02-11 23:14:02 +03:00
|
|
|
import {
|
|
|
|
Datagrid,
|
2021-02-23 15:37:54 +03:00
|
|
|
ExportButton,
|
2021-02-11 23:14:02 +03:00
|
|
|
Filter,
|
|
|
|
List,
|
|
|
|
NumberField,
|
|
|
|
Pagination,
|
2021-02-23 15:37:54 +03:00
|
|
|
sanitizeListRestProps,
|
|
|
|
SearchInput,
|
|
|
|
TextField,
|
|
|
|
TopToolbar,
|
|
|
|
useListContext,
|
2021-02-11 23:14:02 +03:00
|
|
|
} from "react-admin";
|
2021-02-23 15:37:54 +03:00
|
|
|
import { DeleteMediaButton } from "./media";
|
|
|
|
|
|
|
|
const ListActions = props => {
|
|
|
|
const { className, exporter, filters, maxResults, ...rest } = props;
|
|
|
|
const {
|
2024-02-05 23:57:14 +03:00
|
|
|
sort,
|
2021-02-23 15:37:54 +03:00
|
|
|
resource,
|
|
|
|
displayedFilters,
|
|
|
|
filterValues,
|
|
|
|
showFilter,
|
|
|
|
total,
|
|
|
|
} = useListContext();
|
|
|
|
return (
|
|
|
|
<TopToolbar className={className} {...sanitizeListRestProps(rest)}>
|
|
|
|
{filters &&
|
|
|
|
cloneElement(filters, {
|
|
|
|
resource,
|
|
|
|
showFilter,
|
|
|
|
displayedFilters,
|
|
|
|
filterValues,
|
|
|
|
context: "button",
|
|
|
|
})}
|
|
|
|
<DeleteMediaButton />
|
|
|
|
<ExportButton
|
|
|
|
disabled={total === 0}
|
|
|
|
resource={resource}
|
2024-02-05 23:57:14 +03:00
|
|
|
sort={sort}
|
2021-02-23 15:37:54 +03:00
|
|
|
filterValues={filterValues}
|
|
|
|
maxResults={maxResults}
|
|
|
|
/>
|
|
|
|
</TopToolbar>
|
|
|
|
);
|
|
|
|
};
|
2021-02-11 23:14:02 +03:00
|
|
|
|
2024-02-06 00:02:06 +03:00
|
|
|
const UserMediaStatsPagination = () => (
|
|
|
|
<Pagination rowsPerPageOptions={[10, 25, 50, 100, 500, 1000]} />
|
2021-02-11 23:14:02 +03:00
|
|
|
);
|
|
|
|
|
|
|
|
const UserMediaStatsFilter = props => (
|
|
|
|
<Filter {...props}>
|
|
|
|
<SearchInput source="search_term" alwaysOn />
|
|
|
|
</Filter>
|
|
|
|
);
|
|
|
|
|
|
|
|
export const UserMediaStatsList = props => {
|
|
|
|
return (
|
|
|
|
<List
|
2021-02-23 15:37:54 +03:00
|
|
|
actions={<ListActions />}
|
2021-02-11 23:14:02 +03:00
|
|
|
filters={<UserMediaStatsFilter />}
|
|
|
|
pagination={<UserMediaStatsPagination />}
|
|
|
|
sort={{ field: "media_length", order: "DESC" }}
|
|
|
|
>
|
2023-02-04 18:57:37 +03:00
|
|
|
<Datagrid
|
|
|
|
rowClick={(id, resource, record) => "/users/" + id + "/media"}
|
|
|
|
bulkActionButtons={false}
|
|
|
|
>
|
2021-02-11 23:14:02 +03:00
|
|
|
<TextField source="user_id" label="resources.users.fields.id" />
|
|
|
|
<TextField
|
|
|
|
source="displayname"
|
|
|
|
label="resources.users.fields.displayname"
|
|
|
|
/>
|
|
|
|
<NumberField source="media_count" />
|
|
|
|
<NumberField source="media_length" />
|
|
|
|
</Datagrid>
|
|
|
|
</List>
|
|
|
|
);
|
|
|
|
};
|