PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonorDashboards / resources / js / app / components / subscription-table / index.js
give / src / DonorDashboards / resources / js / app / components / subscription-table Last commit date
index.js 4 years ago style.scss 4 years ago
index.js
84 lines
1 import {Fragment, useState} from 'react';
2 import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';
3 import {__} from '@wordpress/i18n';
4
5 import Table from '../table';
6 import SubscriptionRow from '../subscription-row';
7
8 import './style.scss';
9
10 const SubscriptionTable = ({subscriptions, perPage}) => {
11 const [page, setPage] = useState(1);
12
13 const getStartIndex = () => {
14 return (page - 1) * perPage;
15 };
16
17 const getEndIndex = () => {
18 return start + perPage <= subscriptionsArray.length ? start + perPage : subscriptionsArray.length;
19 };
20
21 const getSubscriptionRows = () => {
22 return subscriptionsArray.reduce((rows, subscription, index) => {
23 if (index >= start && index < end) {
24 rows.push(<SubscriptionRow subscription={subscription} key={index} />);
25 }
26 return rows;
27 }, []);
28 };
29
30 let subscriptionRows = [];
31 const subscriptionsArray = [];
32 let start = 0;
33 let end = perPage;
34 let lastPage = 1;
35
36 if (subscriptions) {
37 Object.entries(subscriptions).forEach((subscription) => {
38 subscriptionsArray[subscription[0]] = subscription[1];
39 });
40 start = getStartIndex();
41 end = getEndIndex();
42 lastPage = Math.ceil(subscriptionsArray.length / perPage) - 1;
43 subscriptionRows = getSubscriptionRows();
44 }
45
46 return (
47 <Table
48 header={
49 <Fragment>
50 <div className="give-donor-dashboard-table__column">{__('Subscription', 'give')}</div>
51 <div className="give-donor-dashboard-table__column">{__('Status', 'give')}</div>
52 <div className="give-donor-dashboard-table__column">{__('Next Renewal', 'give')}</div>
53 <div className="give-donor-dashboard-table__column">{__('Progress', 'give')}</div>
54 </Fragment>
55 }
56 rows={<Fragment>{subscriptionRows}</Fragment>}
57 footer={
58 <Fragment>
59 <div className="give-donor-dashboard-table__footer-text">
60 {subscriptions &&
61 `${__('Showing', 'give')} ${start + 1} - ${end} ${__('of', 'give')} ${
62 subscriptionsArray.length
63 } ${__('Subscriptions', 'give')}`}
64 </div>
65 <div className="give-donor-dashboard-table__footer-nav">
66 {page - 1 >= 1 && (
67 <a onClick={() => setPage(page - 1)}>
68 <FontAwesomeIcon icon="chevron-left" />
69 </a>
70 )}
71 {page <= lastPage && (
72 <a onClick={() => setPage(page + 1)}>
73 <FontAwesomeIcon icon="chevron-right" />
74 </a>
75 )}
76 </div>
77 </Fragment>
78 }
79 />
80 );
81 };
82
83 export default SubscriptionTable;
84