Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Dev #434

Merged
merged 2 commits into from
May 28, 2015
Merged

Dev #434

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions actions/challenges.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,9 @@ var QUERY_PATH = './queries/';
*/
var TECHNOLOGY_FILTER = ' AND EXISTS (SELECT DISTINCT 1 FROM comp_technology ct WHERE ct.comp_vers_id = pi1.value ' +
'AND ct.technology_type_id IN (@filter@))';


var EXT_TECHNOLOGY_FILTER = ' AND (pn.value LIKE ("%@tech@%") OR EXISTS (SELECT DISTINCT 1 FROM comp_technology ct WHERE ct.comp_vers_id = pi1.value ' +
'AND ct.technology_type_id IN (@filter@)))';
/**
* The platform filter for challenges api.
* @since 1.23
Expand Down Expand Up @@ -745,14 +747,15 @@ function transferResultV2(src, helper) {
* @param {String} content - the content that need in template.
* @since 1.23
*/
var editSql = function (sql, template, content) {
var editSql = function (sql, template, content, tech) {
// For empty sql just return it.
if (sql.length === 0) {
return sql;
}
var index = sql.toLowerCase().indexOf('order by');
if (!_.isUndefined(template)) {
template = template.replace('@filter@', content);
template = template.replace('@tech@', tech);
}
return sql.slice(0, index) + template + sql.slice(index, sql.length);
};
Expand All @@ -776,8 +779,13 @@ var addFilter = function (sql, filter, isMyChallenges, helper, caller) {

if (_.isDefined(filter.technologies)) {
technology = filter.technologies.join(', ');
sql.count = editSql(sql.count, TECHNOLOGY_FILTER, technology);
sql.data = editSql(sql.data, TECHNOLOGY_FILTER, technology);
if (filter.tech) {
sql.count = editSql(sql.count, EXT_TECHNOLOGY_FILTER, technology, filter.tech);
sql.data = editSql(sql.data, EXT_TECHNOLOGY_FILTER, technology, filter.tech);
} else {
sql.count = editSql(sql.count, TECHNOLOGY_FILTER, technology);
sql.data = editSql(sql.data, TECHNOLOGY_FILTER, technology);
}
}

if (_.isDefined(filter.challengeType)) {
Expand Down Expand Up @@ -3708,6 +3716,10 @@ var getChallenges = function (api, connection, listType, isMyChallenges, next) {
},
function (cb) {
validateInputParameterV2(helper, caller, type, query, filter, pageIndex, pageSize, sortColumn, sortOrder, listType, dbConnectionMap, cb);

if (filter.technologies) {
filter.tech = filter.technologies.split(',')[0];
}
}, function (cb) {
if (pageIndex === -1) {
pageIndex = 1;
Expand Down