PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.2
4.3.1 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 / TopVideos.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
TopVideos.js
114 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 userId,
23 }) => {
24 // 10 per page
25 const per_page = 10;
26
27 // fetch data when page changes
28 useEffect(() => {
29 fetchData({
30 endpoint: "/presto-player/v1/analytics/top-videos",
31 params: {
32 per_page,
33 ...(startDate
34 ? { start: convertDateTimeToAbsoluteDate(startDate) }
35 : {}),
36 ...(endDate ? { end: convertDateTimeToAbsoluteDate(endDate) } : {}),
37 ...(userId ? { user_id: userId } : {}),
38 },
39 });
40 }, [page, startDate, endDate]);
41
42 const navigate = (id) => {
43 const { search } = history.location;
44 history.push(`${search}#/video/${id}`);
45 };
46
47 const columns = [
48 {
49 key: "name",
50 label: __("Name", "presto-player"),
51 render(row) {
52 return (
53 <h3 style={{ marginBottom: 0, wordBreak: "break-all" }}>
54 {row.video.title
55 ? row.video.title
56 : __("Untitled", "presto-player")}
57 </h3>
58 );
59 },
60 },
61 {
62 key: "total_view",
63 label: __("Total View", "presto-player"),
64 value(row) {
65 return row.stats[0].data;
66 },
67 },
68 {
69 key: "avg_view_time",
70 label: __("Avg View Time", "presto-player"),
71 render(row) {
72 return <div className="presto-badge">{row.stats[1].data}</div>;
73 },
74 },
75 {
76 key: "view_more",
77 label: "",
78 render(row) {
79 return (
80 <span
81 style={{
82 color: "var(--wp-admin-theme-color, #007cba)",
83 }}
84 >
85 {__("View Details", "presto-player")} &rarr;
86 </span>
87 );
88 },
89 },
90 ];
91
92 if (error) {
93 return { error };
94 }
95
96 return (
97 <DataTable
98 title={__("Top Media", "presto-player")}
99 perPage={per_page}
100 page={page}
101 setPage={setPage}
102 loading={loading}
103 total={total}
104 totalPages={totalPages}
105 columns={columns}
106 data={data}
107 onSelect={(row) => {
108 navigate(row?.video?.id);
109 }}
110 />
111 );
112 }
113 );
114