Merge pull request #3131 from gvespignani70/feature/new-API-cardsByCustomField

Added an API to get the cards for a specific custom field value
This commit is contained in:
Lauri Ojansivu 2020-05-28 18:51:30 +03:00 committed by GitHub
commit a47ca598e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 6 deletions

View file

@ -2,7 +2,7 @@ const JSZip = require('jszip');
window.ExportHtml = Popup => {
const saveAs = function(blob, filename) {
let dl = document.createElement('a');
const dl = document.createElement('a');
dl.href = window.URL.createObjectURL(blob);
dl.onclick = event => document.body.removeChild(event.target);
dl.style.display = 'none';

View file

@ -1276,9 +1276,9 @@ Cards.mutations({
if (lastCardDom) sortIndex = Utils.calculateIndex(lastCardDom, null).base;
return this.moveOptionalArgs({
boardId: boardId,
swimlaneId: swimlaneId,
listId: listId,
boardId,
swimlaneId,
listId,
sort: sortIndex,
});
},
@ -1293,8 +1293,7 @@ Cards.mutations({
swimlaneId = board.getDefaultSwimline()._id;
}
listId = listId || this.listId;
if (sort === undefined || sort === null)
sort = this.sort;
if (sort === undefined || sort === null) sort = this.sort;
return this.move(boardId, swimlaneId, listId, sort);
},
@ -2683,6 +2682,52 @@ if (Meteor.isServer) {
});
},
);
/**
* @operation get_cards_by_custom_field
* @summary Get all Cards that matchs a value of a specific custom field
*
* @param {string} boardId the board ID
* @param {string} customFieldId the list ID
* @param {string} customFieldValue the value to look for
* @return_type [{_id: string,
* title: string,
* description: string,
* listId: string
* swinlaneId: string}]
*/
JsonRoutes.add(
'GET',
'/api/boards/:boardId/cardsByCustomField/:customFieldId/:customFieldValue',
function(req, res) {
const paramBoardId = req.params.boardId;
const paramCustomFieldId = req.params.customFieldId;
const paramCustomFieldValue = req.params.customFieldValue;
Authentication.checkBoardAccess(req.userId, paramBoardId);
JsonRoutes.sendResult(res, {
code: 200,
data: Cards.find({
boardId: paramBoardId,
customFields: {
$elemMatch: {
_id: paramCustomFieldId,
value: paramCustomFieldValue,
},
},
archived: false,
}).map(function(doc) {
return {
_id: doc._id,
title: doc.title,
description: doc.description,
listId: doc.listId,
swinlaneId: doc.swinlaneId,
};
}),
});
},
);
}
export default Cards;