Skip to content

Commit 92dd00b

Browse files
authored
Merge branch 'master' into hu/ent-11124-2
2 parents 272ee42 + f6883e8 commit 92dd00b

File tree

2 files changed

+304
-334
lines changed

2 files changed

+304
-334
lines changed
Lines changed: 105 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,107 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
33

4-
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
4+
import { useIntl } from '@edx/frontend-platform/i18n';
55
import {
66
Award, Check, Groups, RemoveRedEye,
77
} from '@openedx/paragon/icons';
88

99
import NumberCard from './cards/NumberCard';
1010

11-
class AdminCards extends React.Component {
12-
constructor(props) {
13-
super(props);
14-
const { intl } = this.props;
11+
const AdminCards = ({
12+
activeLearners,
13+
numberOfUsers,
14+
courseCompletions,
15+
enrolledLearners,
16+
}) => {
17+
const intl = useIntl();
1518

16-
this.cards = {
17-
numberOfUsers: {
18-
ref: React.createRef(),
19-
description: intl.formatMessage({
20-
id: 'adminPortal.cards.registeredLearners',
21-
defaultMessage: 'total number of learners registered',
19+
const cards = {
20+
numberOfUsers: {
21+
ref: React.createRef(),
22+
description: intl.formatMessage({
23+
id: 'adminPortal.cards.registeredLearners',
24+
defaultMessage: 'total number of learners registered',
25+
}),
26+
icon: Groups,
27+
actions: [{
28+
label: intl.formatMessage({
29+
id: 'adminPortal.cards.registeredUnenrolledLearners',
30+
defaultMessage: 'Which learners are registered but not yet enrolled in any courses?',
2231
}),
23-
icon: Groups,
24-
actions: [{
25-
label: intl.formatMessage({
26-
id: 'adminPortal.cards.registeredUnenrolledLearners',
27-
defaultMessage: 'Which learners are registered but not yet enrolled in any courses?',
28-
}),
29-
slug: 'registered-unenrolled-learners',
30-
}],
31-
},
32-
enrolledLearners: {
33-
ref: React.createRef(),
34-
description: intl.formatMessage({
35-
id: 'adminPortal.cards.enrolledOneCourse',
36-
defaultMessage: 'learners enrolled in at least one course',
32+
slug: 'registered-unenrolled-learners',
33+
}],
34+
},
35+
enrolledLearners: {
36+
ref: React.createRef(),
37+
description: intl.formatMessage({
38+
id: 'adminPortal.cards.enrolledOneCourse',
39+
defaultMessage: 'learners enrolled in at least one course',
40+
}),
41+
icon: Check,
42+
actions: [{
43+
label: intl.formatMessage({
44+
id: 'adminPortal.cards.enrolledLearners',
45+
defaultMessage: 'How many courses are learners enrolled in?',
3746
}),
38-
icon: Check,
39-
actions: [{
40-
label: intl.formatMessage({
41-
id: 'adminPortal.cards.enrolledLearners',
42-
defaultMessage: 'How many courses are learners enrolled in?',
43-
}),
44-
slug: 'enrolled-learners',
45-
}, {
46-
label: intl.formatMessage({
47-
id: 'adminPortal.cards.enrolledLearnersInactiveCourses',
48-
defaultMessage: 'Who is no longer enrolled in a current course?',
49-
}),
50-
slug: 'enrolled-learners-inactive-courses',
51-
}],
52-
},
53-
activeLearners: {
54-
ref: React.createRef(),
55-
description: intl.formatMessage({
56-
id: 'adminPortal.cards.activeLearnersPastWeek',
57-
defaultMessage: 'active learners in the past week',
47+
slug: 'enrolled-learners',
48+
}, {
49+
label: intl.formatMessage({
50+
id: 'adminPortal.cards.enrolledLearnersInactiveCourses',
51+
defaultMessage: 'Who is no longer enrolled in a current course?',
5852
}),
59-
icon: RemoveRedEye,
60-
actions: [{
61-
label: intl.formatMessage({
62-
id: 'adminPortal.cards.learnersActiveWeek',
63-
defaultMessage: 'Who are my top active learners?',
64-
}),
65-
slug: 'learners-active-week',
66-
}, {
67-
label: intl.formatMessage({
68-
id: 'adminPortal.cards.learnersInactiveWeek',
69-
defaultMessage: 'Who has not been active for over a week?',
70-
}),
71-
slug: 'learners-inactive-week',
72-
}, {
73-
label: intl.formatMessage({
74-
id: 'adminPortal.cards.learnersInactiveMonth',
75-
defaultMessage: 'Who has not been active for over a month?',
76-
}),
77-
slug: 'learners-inactive-month',
78-
}],
79-
},
80-
courseCompletions: {
81-
ref: React.createRef(),
82-
description: 'course completions',
83-
icon: Award,
84-
actions: [{
85-
label: intl.formatMessage({
86-
id: 'adminPortal.cards.completedLearners',
87-
defaultMessage: 'How many courses have been completed by learners?',
88-
}),
89-
slug: 'completed-learners',
90-
}, {
91-
label: intl.formatMessage({
92-
id: 'adminPortal.cards.completedLearnersWeek',
93-
defaultMessage: 'Who completed a course in the past week?',
94-
}),
95-
slug: 'completed-learners-week',
96-
}],
97-
},
98-
};
99-
}
53+
slug: 'enrolled-learners-inactive-courses',
54+
}],
55+
},
56+
activeLearners: {
57+
ref: React.createRef(),
58+
description: intl.formatMessage({
59+
id: 'adminPortal.cards.activeLearnersPastWeek',
60+
defaultMessage: 'active learners in the past week',
61+
}),
62+
icon: RemoveRedEye,
63+
actions: [{
64+
label: intl.formatMessage({
65+
id: 'adminPortal.cards.learnersActiveWeek',
66+
defaultMessage: 'Who are my top active learners?',
67+
}),
68+
slug: 'learners-active-week',
69+
}, {
70+
label: intl.formatMessage({
71+
id: 'adminPortal.cards.learnersInactiveWeek',
72+
defaultMessage: 'Who has not been active for over a week?',
73+
}),
74+
slug: 'learners-inactive-week',
75+
}, {
76+
label: intl.formatMessage({
77+
id: 'adminPortal.cards.learnersInactiveMonth',
78+
defaultMessage: 'Who has not been active for over a month?',
79+
}),
80+
slug: 'learners-inactive-month',
81+
}],
82+
},
83+
courseCompletions: {
84+
ref: React.createRef(),
85+
description: 'course completions',
86+
icon: Award,
87+
actions: [{
88+
label: intl.formatMessage({
89+
id: 'adminPortal.cards.completedLearners',
90+
defaultMessage: 'How many courses have been completed by learners?',
91+
}),
92+
slug: 'completed-learners',
93+
}, {
94+
label: intl.formatMessage({
95+
id: 'adminPortal.cards.completedLearnersWeek',
96+
defaultMessage: 'Who completed a course in the past week?',
97+
}),
98+
slug: 'completed-learners-week',
99+
}],
100+
},
101+
};
100102

101-
renderCard({ title, cardKey }) {
102-
const card = this.cards[cardKey];
103+
const renderCard = ({ title, cardKey }) => {
104+
const card = cards[cardKey];
103105

104106
return (
105107
<div
@@ -115,31 +117,22 @@ class AdminCards extends React.Component {
115117
/>
116118
</div>
117119
);
118-
}
119-
120-
render() {
121-
const {
122-
activeLearners,
123-
numberOfUsers,
124-
courseCompletions,
125-
enrolledLearners,
126-
} = this.props;
120+
};
127121

128-
const data = {
129-
activeLearners: activeLearners.past_week,
130-
numberOfUsers,
131-
courseCompletions,
132-
enrolledLearners,
133-
};
122+
const data = {
123+
activeLearners: activeLearners.past_week,
124+
numberOfUsers,
125+
courseCompletions,
126+
enrolledLearners,
127+
};
134128

135-
return Object.keys(this.cards).map(cardKey => (
136-
this.renderCard({
137-
title: data[cardKey],
138-
cardKey,
139-
})
140-
));
141-
}
142-
}
129+
return Object.keys(cards).map(cardKey => (
130+
renderCard({
131+
title: data[cardKey],
132+
cardKey,
133+
})
134+
));
135+
};
143136

144137
AdminCards.propTypes = {
145138
activeLearners: PropTypes.shape({
@@ -149,8 +142,6 @@ AdminCards.propTypes = {
149142
numberOfUsers: PropTypes.number.isRequired,
150143
courseCompletions: PropTypes.number.isRequired,
151144
enrolledLearners: PropTypes.number.isRequired,
152-
// injected
153-
intl: intlShape.isRequired,
154145
};
155146

156-
export default injectIntl(AdminCards);
147+
export default AdminCards;

0 commit comments

Comments
 (0)