Skip to content

Commit ed10471

Browse files
Merge pull request #5078 from topcoder-platform/issue-5056
Update filter to TCO20 and TCO21
2 parents 4d81d90 + 3f9137d commit ed10471

File tree

5 files changed

+43
-6
lines changed

5 files changed

+43
-6
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
"tc-accounts": "git+https://github.com/appirio-tech/accounts-app.git#dev",
141141
"tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6.3",
142142
"tc-ui": "^1.0.12",
143-
"topcoder-react-lib": "1000.24.4",
143+
"topcoder-react-lib": "1000.24.5",
144144
"topcoder-react-ui-kit": "2.0.1",
145145
"topcoder-react-utils": "0.7.8",
146146
"turndown": "^4.0.2",

src/shared/components/challenge-listing/Filters/ChallengeFilters.jsx

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export default function ChallengeFilters({
4646
}) {
4747
let filterRulesCount = 0;
4848
if (filterState.groups && filterState.groups.length) filterRulesCount += 1;
49+
if (filterState.events && filterState.events.length) filterRulesCount += 1;
4950
if (filterState.tags && filterState.tags.length) filterRulesCount += 1;
5051
if (filterState.types && filterState.types.length) filterRulesCount += 1;
5152
if (filterState.endDateStart || filterState.startDateEnd) {

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

+37-4
Original file line numberDiff line numberDiff line change
@@ -183,12 +183,21 @@ export default function FiltersPanel({
183183
);
184184
};
185185

186+
const mapCommunityOps = (community) => {
187+
if (community.challengeFilter
188+
&& community.challengeFilter.events && community.challengeFilter.events.length) {
189+
return `event_${community.challengeFilter.events[0]}`;
190+
}
191+
192+
return community.communityName === 'All' ? '' : community.groupIds[0];
193+
};
194+
186195
const communityOps = communityFilters.filter(community => (
187196
(!community.hidden && !community.hideFilter && !_.isEmpty(community.groupIds)) || community.communityName === 'All'
188197
))
189198
.map(community => ({
190199
label: community.communityName,
191-
value: community.communityName === 'All' ? '' : community.groupIds[0],
200+
value: mapCommunityOps(community),
192201
name: community.communityName,
193202
data: getLabel(community),
194203
}));
@@ -202,6 +211,16 @@ export default function FiltersPanel({
202211

203212
const mapOps = item => ({ label: item, value: item });
204213
const mapTypes = item => ({ label: item.name, value: item.abbreviation });
214+
const getCommunityOption = () => {
215+
if (filterState.events && filterState.events.length) {
216+
return `event_${filterState.events[0]}`;
217+
}
218+
if (filterState.groups && filterState.groups.length) {
219+
return filterState.groups[0];
220+
}
221+
return '';
222+
};
223+
205224
return (
206225
<div styleName={className}>
207226
<div styleName="header">
@@ -247,13 +266,26 @@ export default function FiltersPanel({
247266
id="community-select"
248267
// onChange={selectCommunity}
249268
onChange={(value) => {
250-
const group = value;
251-
setFilterState({ ..._.clone(filterState), groups: group === '' ? [] : [group] });
269+
if (value && value.startsWith('event_')) {
270+
const event = value.split('_')[1];
271+
setFilterState({
272+
..._.clone(filterState),
273+
events: event === '' ? [] : [event],
274+
groups: [],
275+
});
276+
} else {
277+
const group = value;
278+
setFilterState({
279+
..._.clone(filterState),
280+
groups: group === '' ? [] : [group],
281+
events: [],
282+
});
283+
}
252284
// setFilterState({ ..._.clone(filterState), groups: [value] });
253285
}}
254286
options={communityOps}
255287
simpleValue
256-
value={filterState.groups && filterState.groups.length ? filterState.groups[0] : ''}
288+
value={getCommunityOption()}
257289
valueRenderer={option => (
258290
<span styleName="active-community">
259291
{option.name}
@@ -398,6 +430,7 @@ export default function FiltersPanel({
398430
tags: [],
399431
types: [],
400432
groups: [],
433+
events: [],
401434
endDateStart: null,
402435
startDateEnd: null,
403436
});

src/shared/reducers/challenge-listing/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ function onSetFilter(state, { payload }) {
409409
* do it very carefuly (many params are not validated). */
410410
const filter = _.pickBy(_.pick(
411411
payload,
412-
['tags', 'types', 'name', 'startDateEnd', 'endDateStart', 'groups', 'tracks'],
412+
['tags', 'types', 'name', 'startDateEnd', 'endDateStart', 'groups', 'events', 'tracks'],
413413
), value => (!_.isArray(value) && value && value !== '') || (_.isArray(value) && value.length > 0));
414414
// if (_.isPlainObject(filter.tags)) {
415415
// filter.tags = _.values(filter.tags);
@@ -854,6 +854,7 @@ function create(initialState) {
854854
tags: [],
855855
types: [],
856856
groups: [],
857+
events: [],
857858
startDateEnd: null,
858859
endDateStart: null,
859860
status: 'Active',

src/shared/utils/challenge-listing/buckets.js

+2
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ export function filterChanged(filter, prevFilter) {
177177
|| (filter.endDateStart !== prevFilter.endDateStart)
178178
// eslint-disable-next-line max-len
179179
|| (!_.isEqual(filter.groups, prevFilter.groups))
180+
|| (!_.isEqual(filter.events, prevFilter.events))
180181
|| _.filter(filter.tags, val => _.indexOf(prevFilter.tags, val) < 0).length > 0
181182
|| _.filter(prevFilter.tags, val => _.indexOf(filter.tags, val) < 0).length > 0
182183
|| _.filter(filter.types, val => _.indexOf(prevFilter.types, val) < 0).length > 0
@@ -204,6 +205,7 @@ export function isFilterEmpty(filter) {
204205
tags: [],
205206
types: [],
206207
groups: [],
208+
events: [],
207209
startDateStart: null,
208210
endDateEnd: null,
209211
status: 'Active',

0 commit comments

Comments
 (0)