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

Version 1.2.1 #434

Merged
merged 6 commits into from
Sep 10, 2021
Merged
Show file tree
Hide file tree
Changes from 2 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
7 changes: 2 additions & 5 deletions src/common/db-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,13 @@ async function scanAll(model, size, lastKey) {
/**
* Get data collection by scan with search
* @param {Object} model The dynamoose model to scan
* @param {String} size The size of result
* @param {String} lastKey The lastKey param
* @param {String} containsKey The contains key param
* @param {String} contains The contains value
* @returns {Promise<void>}
*/
async function scanAllWithSearch(model, size, lastKey, containsKey, contains) {
async function scanAllWithSearch(model, containsKey, contains) {
return await new Promise((resolve, reject) => {
const scanMethod = model.scan(containsKey).contains(contains).limit(size);
if (lastKey) scanMethod.startAt(lastKey);
const scanMethod = model.scan(containsKey).contains(contains).all();
scanMethod.exec((err, result) => {
if (err) {
logger.error(`DynamoDB scan error ${err}`);
Expand Down
32 changes: 28 additions & 4 deletions src/front/src/app/user-mappings/user-mappings-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ angular.module('topcoderX')
totalPages: 1,
initialized: false,
query: '',
lastKey: []
lastKey: [],
pages: 1
};

$scope.addUserMapping = function () {
Expand All @@ -40,7 +41,14 @@ angular.module('topcoderX')
config.isLoading = true;
UserMappingsService.search(config.query, config.sortBy, config.sortDir, config.pageNumber, config.pageSize, config.lastKey[config.pageNumber]) // eslint-disable-line max-len
.then(function (res) {
config.items = res.data.docs;
if (config.query) {
config.allItems = res.data.docs;
config.items = config.allItems.slice(0, config.pageSize);
config.pages = Math.ceil(config.allItems.length / config.pageSize);
}
else {
config.items = res.data.docs;
}
if (res.data.lastKey && (res.data.lastKey.githubLastKey || res.data.lastKey.gitlabLastKey)) {
config.lastKey[config.pageNumber + 1] = res.data.lastKey;
if (!config.pages || config.pages <= config.pageNumber) {
Expand Down Expand Up @@ -122,21 +130,37 @@ angular.module('topcoderX')
if (pageNumber === 0 || pageNumber > $scope.tableConfig.pages ||
(pageNumber === $scope.tableConfig.pages &&
$scope.tableConfig.pageNumber === pageNumber)) {
return false;
return false;
}
$scope.tableConfig.pageNumber = pageNumber;
$scope.getUserMappings();
if ($scope.tableConfig.query && $scope.tableConfig.allItems) {
var start = ($scope.tableConfig.pageNumber - 1) * $scope.tableConfig.pageSize - 1;
if (pageNumber === 1) {
start = 0;
}
$scope.tableConfig.items = $scope.tableConfig.allItems.slice(
start, $scope.tableConfig.pageSize);
$scope.tableConfig.initialized = true;
$scope.tableConfig.isLoading = false;
}
else {
$scope.getUserMappings();
}
};

$scope.onSearchIconClicked = function () {
$scope.tableConfig.pageNumber = 1;
$scope.tableConfig.pages = 1;
$scope.tableConfig.allItems = [];
$scope.getUserMappings();
};

$scope.onSearchReset = function () {
var config = $scope.tableConfig;
config.query = '';
$scope.tableConfig.pageNumber = 1;
$scope.tableConfig.pages = 1;
$scope.tableConfig.allItems = [];
$scope.getUserMappings();
};

Expand Down
8 changes: 2 additions & 6 deletions src/services/UserService.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,12 @@ async function search(criteria) {
if (criteria.query) {
githubUserMappings = await dbHelper.scanAllWithSearch(
GithubUserMapping,
criteria.perPage / 2, // eslint-disable-line
criteria.githubLastKey ? JSON.parse(criteria.githubLastKey) : undefined, // eslint-disable-line
'topcoderUsername',
criteria.query.toLowerCase());
criteria.query);
gitlabUserMappings = await dbHelper.scanAllWithSearch(
GitlabUserMapping,
criteria.perPage / 2, // eslint-disable-line
criteria.gitlabLastKey ? JSON.parse(criteria.gitlabLastKey) : undefined, // eslint-disable-line
'topcoderUsername',
criteria.query.toLowerCase());
criteria.query);
}
else {
githubUserMappings = await dbHelper.scanAll(
Expand Down