diff --git a/src/front/src/app/upsertproject/upsertproject.controller.js b/src/front/src/app/upsertproject/upsertproject.controller.js index d145dd6..c60c48a 100644 --- a/src/front/src/app/upsertproject/upsertproject.controller.js +++ b/src/front/src/app/upsertproject/upsertproject.controller.js @@ -30,6 +30,7 @@ angular.module('topcoderX').controller('ProjectController', ['currentUser', '$sc if ($rootScope.project) { $scope.title = 'Manage a Project'; $scope.project = $rootScope.project; + $scope.project.tags = $rootScope.project.tags.split(','); $scope.project.repoUrl = $rootScope.project.repoUrls.join(','); $scope.editing = true; if ($rootScope.project.tcDirectId) { @@ -52,7 +53,8 @@ angular.module('topcoderX').controller('ProjectController', ['currentUser', '$sc $scope.tags = []; $scope.fetchTags = function() { ProjectService.getTags().then(function (resp) { - $scope.tags = resp.data.map(tag => tag.name); + const s = new Set(resp.data.result.content.map(function(tag) { return tag.name; })); + $scope.tags = Array.from(s).sort(); }); } $scope.fetchTags(); diff --git a/src/models/Project.js b/src/models/Project.js index 06f1608..5b4440b 100644 --- a/src/models/Project.js +++ b/src/models/Project.js @@ -25,9 +25,9 @@ const schema = new Schema({ required: true }, tags: { - type: Array, + type: String, required: true, - default: [] + default: '' }, rocketChatWebhook: {type: String, required: false}, rocketChatChannelName: {type: String, required: false}, diff --git a/src/services/ProjectService.js b/src/services/ProjectService.js index fcfc7b3..d8b57f4 100644 --- a/src/services/ProjectService.js +++ b/src/services/ProjectService.js @@ -212,6 +212,7 @@ async function create(project, currentUser) { project.secretWebhookKey = guid.raw(); project.copilot = project.copilot ? project.copilot.toLowerCase() : null; project.id = helper.generateIdentifier(); + project.tags = project.tags.join(','); const createdProject = await dbHelper.create(models.Project, project); @@ -221,7 +222,7 @@ async function create(project, currentUser) { try { const challengeUUIDs = await _createOrMigrateRepository(repoUrl, project, currentUser); if (!_.isEmpty(challengeUUIDs)) { - challengeUUIDsList.append(challengeUUIDs); + challengeUUIDsList.push(challengeUUIDs); } } catch (err) { @@ -278,6 +279,7 @@ async function update(project, currentUser) { */ project.owner = dbProject.owner; project.copilot = project.copilot !== undefined ? project.copilot.toLowerCase() : null; + project.tags = project.tags.join(','); // TODO: move the following logic into one dynamoose transaction const repos = await dbHelper.queryRepositoriesByProjectId(project.id); @@ -289,13 +291,13 @@ async function update(project, currentUser) { await dbHelper.update(models.Repository, repoId, {archived: project.archived}); if (!_.isEqual(dbProject.tags, project.tags)) { // NOTE: delay query of challengeUUIDs into topcoder-x-processor - challengeUUIDsList.append(repoUrl); + challengeUUIDsList.push(repoUrl); } } else { try { const challengeUUIDs = await _createOrMigrateRepository(repoUrl, project, currentUser); if (!_.isEmpty(challengeUUIDs)) { - challengeUUIDsList.append(challengeUUIDs); + challengeUUIDsList.push(challengeUUIDs); } } catch (err) {