Skip to content

Commit d2c563e

Browse files
committed
fix: counts is different
1 parent e73c49e commit d2c563e

File tree

8 files changed

+49
-2
lines changed

8 files changed

+49
-2
lines changed

__tests__/shared/components/challenge-listing/Filters/__snapshots__/FiltersPanel.jsx.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ exports[`Matches shallow shapshot 2`] = `
6969
isReviewer={false}
7070
loading={true}
7171
past={false}
72+
reviewCount={0}
7273
/>
7374
</div>
7475
</div>

__tests__/shared/components/challenge-listing/Sidebar/__snapshots__/index.jsx.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ exports[`Matches shallow shapshot 1`] = `
1515
isAuth={false}
1616
loading={true}
1717
past={false}
18+
reviewCount={0}
1819
selectBucket={[MockFunction]}
1920
/>
2021
</div>
@@ -39,6 +40,7 @@ exports[`Matches shallow shapshot 2`] = `
3940
isAuth={false}
4041
loading={true}
4142
past={false}
43+
reviewCount={0}
4244
selectBucket={[MockFunction]}
4345
/>
4446
</div>

__tests__/shared/components/challenge-listing/__snapshots__/index.jsx.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ exports[`Matches shallow shapshot 1 shapshot 1 1`] = `
2929
>
3030
<Connect(SidebarContainer)
3131
expanding={false}
32+
reviewCount={0}
3233
setFilterState={[MockFunction]}
3334
/>
3435
<Connect(Container)
@@ -99,6 +100,7 @@ exports[`Matches shallow shapshot 2 shapshot 2 1`] = `
99100
>
100101
<Connect(SidebarContainer)
101102
expanding={false}
103+
reviewCount={0}
102104
setFilterState={[MockFunction]}
103105
/>
104106
<Connect(Container)

src/shared/components/challenge-listing/Sidebar/BucketSelector/Bucket/index.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function Bucket({
1818
// challenges,
1919
disabled,
2020
onClick,
21+
reviewCount,
2122
// allActiveChallengesLoaded,
2223
meta,
2324
loading,
@@ -53,7 +54,7 @@ function Bucket({
5354
count = meta.myPastChallengesCount;
5455
break;
5556
case BUCKETS.REVIEW_OPPORTUNITIES:
56-
count = meta.openReviewCount;
57+
count = reviewCount;
5758
break;
5859
default:
5960
}
@@ -104,6 +105,7 @@ Bucket.defaultProps = {
104105
disabled: false,
105106
onClick: _.noop,
106107
meta: {},
108+
reviewCount: 0,
107109
loading: true,
108110
};
109111

@@ -122,6 +124,7 @@ Bucket.propTypes = {
122124
meta: PT.shape(),
123125
// allActiveChallengesLoaded: PT.bool.isRequired,
124126
loading: PT.bool,
127+
reviewCount: PT.number,
125128
};
126129

127130
const mapStateToProps = (state) => {

src/shared/components/challenge-listing/Sidebar/BucketSelector/index.jsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export default function BucketSelector({
3636
// setEditSavedFiltersMode,
3737
past,
3838
auth,
39+
reviewCount,
3940
loading,
4041
}) {
4142
// let filteredChallenges = challenges.filter(Filter.getFilterFunction(filterState));
@@ -52,6 +53,7 @@ export default function BucketSelector({
5253
<Bucket
5354
active={!disabled && isActive}
5455
bucket={bucket}
56+
reviewCount={reviewCount}
5557
// challenges={challenges}
5658
disabled={disabled}
5759
onClick={() => {
@@ -146,6 +148,7 @@ BucketSelector.defaultProps = {
146148
isAuth: false,
147149
expanding: false,
148150
past: false,
151+
reviewCount: 0,
149152
loading: true,
150153
};
151154

@@ -168,6 +171,7 @@ BucketSelector.propTypes = {
168171
isAuth: PT.bool,
169172
// savedFilters: PT.arrayOf(PT.shape()).isRequired,
170173
selectBucket: PT.func.isRequired,
174+
reviewCount: PT.number,
171175
// selectSavedFilter: PT.func.isRequired,
172176
// setEditSavedFiltersMode: PT.func.isRequired,
173177
past: PT.bool,

src/shared/components/challenge-listing/Sidebar/index.jsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export default function SideBarFilters({
5353
// updateSavedFilter,
5454
// setFilter,
5555
setFilterState,
56+
reviewCount,
5657
loading,
5758
}) {
5859
const past = isPastBucket(activeBucket);
@@ -116,6 +117,7 @@ export default function SideBarFilters({
116117
// filterState={filterState}
117118
isAuth={isAuth}
118119
auth={auth}
120+
reviewCount={reviewCount}
119121
// savedFilters={savedFilters}
120122
selectBucket={selectBucket}
121123
// selectSavedFilter={selectSavedFilter}
@@ -138,6 +140,7 @@ SideBarFilters.defaultProps = {
138140
// extraBucket: null,
139141
// hideTcLinksInFooter: false,
140142
isAuth: false,
143+
reviewCount: 0,
141144
expanding: false,
142145
};
143146

@@ -161,6 +164,7 @@ SideBarFilters.propTypes = {
161164
// hideTcLinksInFooter: PT.bool,
162165
auth: PT.shape().isRequired,
163166
isAuth: PT.bool,
167+
reviewCount: PT.number,
164168
// resetFilterName: PT.func.isRequired,
165169
// savedFilters: PT.arrayOf(PT.shape()).isRequired,
166170
selectBucket: PT.func.isRequired,

src/shared/components/challenge-listing/index.jsx

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
import FilterPanel from 'containers/challenge-listing/FilterPanel';
88
// import moment from 'moment';
99
import React from 'react';
10+
import {
11+
BUCKET_DATA,
12+
} from 'utils/challenge-listing/buckets';
13+
import { challenge as challengeUtils } from 'topcoder-react-lib';
1014
import PT from 'prop-types';
1115
// import { challenge as challengeUtils } from 'topcoder-react-lib';
1216
import Sidebar from 'containers/challenge-listing/Sidebar';
@@ -20,7 +24,7 @@ import ChallengeTab from './ChallengeTab';
2024

2125
import './style.scss';
2226

23-
// const Filter = challengeUtils.filter;
27+
const Filter = challengeUtils.filter;
2428

2529
// Number of challenge placeholder card to display
2630
// const CHALLENGE_PLACEHOLDER_COUNT = 8;
@@ -54,10 +58,30 @@ export default function ChallengeListing(props) {
5458
setPreviousBucketOfPastChallengesTab,
5559
previousBucketOfPastChallengesTab,
5660
previousBucketOfActiveTab,
61+
reviewOpportunities,
62+
filterState,
63+
challengeTypes,
5764
} = props;
5865

5966
// const { challenges } = props;
6067

68+
// const activeSort = sort || BUCKET_DATA[bucket].sorts[0];
69+
70+
// const sortedOpportunities = _.clone(opportunities);
71+
// sortedOpportunities.sort(Sort[activeSort].func);
72+
73+
/* Filtering for Review Opportunities will be done entirely in the front-end
74+
* which means it can be done at render, rather than in the reducer,
75+
* which avoids reloading the review opportunities from server every time
76+
* a filter is changed. */
77+
const filteredOpportunities = reviewOpportunities.filter(
78+
Filter.getReviewOpportunitiesFilterFunction({
79+
...BUCKET_DATA.reviewOpportunities.filter, // Default bucket filters from utils/buckets.js
80+
...filterState, // User selected filters
81+
}, challengeTypes),
82+
// }),
83+
);
84+
6185
// if (communityFilter) {
6286
// challenges = challenges.filter(Filter.getFilterFunction(props.communityFilter));
6387
// }
@@ -178,6 +202,7 @@ export default function ChallengeListing(props) {
178202
loadingMyChallenges={props.loadingMyChallenges}
179203
loadingOpenForRegistrationChallenges={props.loadingOpenForRegistrationChallenges}
180204
loadingReviewOpportunities={props.loadingReviewOpportunities}
205+
reviewCount={filteredOpportunities.length}
181206
/>
182207

183208
<FilterPanel
@@ -219,6 +244,7 @@ ChallengeListing.defaultProps = {
219244
expandTag: null,
220245
loadMoreActive: null,
221246
expanding: false,
247+
challengeTypes: [],
222248
// isBucketSwitching: false,
223249
// userChallenges: [],
224250
};
@@ -233,6 +259,7 @@ ChallengeListing.propTypes = {
233259
allChallenges: PT.arrayOf(PT.shape()).isRequired,
234260
pastChallenges: PT.arrayOf(PT.shape()).isRequired,
235261
challengesUrl: PT.string.isRequired,
262+
challengeTypes: PT.arrayOf(PT.shape()),
236263
// communityFilter: PT.shape(),
237264
communityName: PT.string,
238265
defaultCommunityId: PT.string.isRequired,

src/shared/containers/challenge-listing/Listing/index.jsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import Banner from 'components/tc-communities/Banner';
2323
import sidebarActions from 'actions/challenge-listing/sidebar';
2424
import filterPanelActions from 'actions/challenge-listing/filter-panel';
2525
import communityActions from 'actions/tc-communities';
26+
2627
// import SORT from 'utils/challenge-listing/sort';
2728
import {
2829
BUCKETS, filterChanged, sortChangedBucket,
@@ -516,6 +517,7 @@ export class ListingContainer extends React.Component {
516517
setFilter,
517518
setSort,
518519
sorts,
520+
setReviewCount,
519521
// hideTcLinksInSidebarFooter,
520522
// isBucketSwitching,
521523
// userChallenges,
@@ -702,6 +704,7 @@ export class ListingContainer extends React.Component {
702704
// userChallenges={[]}
703705
isLoggedIn={isLoggedIn}
704706
meta={meta}
707+
setReviewCount={setReviewCount}
705708
setSearchText={setSearchText}
706709
previousBucketOfActiveTab={previousBucketOfActiveTab}
707710
previousBucketOfPastChallengesTab={previousBucketOfPastChallengesTab}
@@ -837,6 +840,7 @@ ListingContainer.propTypes = {
837840
// userChallenges: PT.arrayOf(PT.string),
838841
// getUserChallenges: PT.func.isRequired,
839842
setSearchText: PT.func.isRequired,
843+
setReviewCount: PT.func.isRequired,
840844
filterState: PT.shape().isRequired,
841845
loading: PT.bool,
842846
};

0 commit comments

Comments
 (0)