PluginProbe ʕ •ᴥ•ʔ
Presto Player / 1.8.2
Presto Player v1.8.2
4.4.1 4.4.0 4.3.3 4.3.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 4 years ago TopVideos.js 4 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
113 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 history.push(`#/video/${id}`);
44 };
45
46 const columns = [
47 {
48 key: "name",
49 label: __("Name", "presto-player"),
50 render(row) {
51 return (
52 <h3 style={{ marginBottom: 0, wordBreak: "break-all" }}>
53 {row.video.title
54 ? row.video.title
55 : __("Untitled", "presto-player")}
56 </h3>
57 );
58 },
59 },
60 {
61 key: "total_view",
62 label: __("Total View", "presto-player"),
63 value(row) {
64 return row.stats[0].data;
65 },
66 },
67 {
68 key: "avg_view_time",
69 label: __("Avg View Time", "presto-player"),
70 render(row) {
71 return <div className="presto-badge">{row.stats[1].data}</div>;
72 },
73 },
74 {
75 key: "view_more",
76 label: "",
77 render(row) {
78 return (
79 <span
80 style={{
81 color: "var(--wp-admin-theme-color, #007cba)",
82 }}
83 >
84 {__("View Details", "presto-player")} &rarr;
85 </span>
86 );
87 },
88 },
89 ];
90
91 if (error) {
92 return { error };
93 }
94
95 return (
96 <DataTable
97 title={__("Top Media", "presto-player")}
98 perPage={per_page}
99 page={page}
100 setPage={setPage}
101 loading={loading}
102 total={total}
103 totalPages={totalPages}
104 columns={columns}
105 data={data}
106 onSelect={(row) => {
107 navigate(row?.video?.id);
108 }}
109 />
110 );
111 }
112 );
113