PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.2
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / analytics / components / TopUsers.js
presto-player / src / admin / analytics / components Last commit date
DataTable.js 5 years ago DatePicker.js 5 years ago OverviewPanel.js 5 years ago TopUsers.js 3 years ago TopVideos.js 3 years ago TotalVideoViewsByUser.js 4 years ago TotalViewsGraph.js 4 years ago TotalWatchGraph.js 4 years ago VideoAverageWatchTime.js 4 years ago VideoAverageWatchTimeByUser.js 4 years ago VideoTimeline.js 4 years ago VideoTotalWatchTimeByUser.js 4 years ago VideoViews.js 5 years ago
TopUsers.js
86 lines
1 const { __ } = wp.i18n;
2 const { useEffect } = wp.element;
3 const { compose } = wp.compose;
4
5 import { history } from "@/router/context";
6 import withDataList from "../hocs/withDataList";
7 import { convertDateTimeToAbsoluteDate } from "../util";
8 import DataTable from "./DataTable";
9
10 export default compose([withDataList()])(
11 ({
12 loading,
13 page,
14 setPage,
15 total,
16 totalPages,
17 data,
18 error,
19 fetchData,
20 startDate,
21 endDate,
22 }) => {
23 // 10 per page
24 const per_page = 5;
25
26 // fetch data when page changes
27 useEffect(() => {
28 fetchData({
29 endpoint: "/presto-player/v1/analytics/top-users",
30 params: {
31 per_page,
32 ...(startDate
33 ? { start: convertDateTimeToAbsoluteDate(startDate) }
34 : {}),
35 ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),
36 },
37 });
38 }, [page, startDate, endDate]);
39
40 // navigate to user screen here
41 const navigate = (id) => {
42 const { search } = history.location;
43 history.push(`${search}#/user/${id}`);
44 };
45
46 const columns = [
47 {
48 key: "name",
49 label: __("Name", "presto-player"),
50 value: (row) => row?.user?.name,
51 },
52 {
53 key: "total_view",
54 label: __("Total View", "presto-player"),
55 value: (row) => row?.stats?.[0]?.data,
56 },
57 {
58 key: "avg_view_time",
59 label: __("Avg View Time", "presto-player"),
60 render: (row) => (
61 <div className="presto-badge">{row?.stats?.[1]?.data}</div>
62 ),
63 },
64 ];
65
66 if (error) {
67 return { error };
68 }
69
70 return (
71 <DataTable
72 title={__("Top Users", "presto-player")}
73 page={page}
74 perPage={per_page}
75 setPage={setPage}
76 loading={loading}
77 total={total}
78 totalPages={totalPages}
79 columns={columns}
80 data={data}
81 onSelect={(row) => navigate(row?.user?.id)}
82 />
83 );
84 }
85 );
86