From 457977f9541606305eb89095855fc9292e7696ff Mon Sep 17 00:00:00 2001 From: Louis Orleans Date: Sat, 20 Feb 2021 12:46:29 -0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20add=20and=20remove=20dropdown=20ite?= =?UTF-8?q?ms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/customFields.js | 65 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/models/customFields.js b/models/customFields.js index 59e89ac2f..276177fe9 100644 --- a/models/customFields.js +++ b/models/customFields.js @@ -440,6 +440,71 @@ if (Meteor.isServer) { }, ); + /** + * @operation add_custom_field_dropdown_items + * @summary Update a Custom Field's dropdown items + * + * @param {string[]} items names of the custom field + * @return_type {_id: string} + */ + JsonRoutes.add( + 'POST', + '/api/boards/:boardId/custom-fields/:customFieldId/dropdown-items', + (req, res) => { + Authentication.checkUserId(req.userId); + + if (req.body.hasOwnProperty('items')) { + CustomFields.direct.update( + { _id: req.params.customFieldId }, + { + $push: { + 'settings.dropdownItems': { + $each: req.body.items.map(name => ({ + _id: Random.id(6), + name, + })), + }, + }, + }, + ); + } + + JsonRoutes.sendResult(res, { + code: 200, + data: { _id: req.params.customFieldId }, + }); + }, + ); + + /** + * @operation delete_custom_field_dropdown_item + * @summary Update a Custom Field's dropdown items + * + * @param {string} itemId ID of the dropdown item + * @return_type {_id: string} + */ + JsonRoutes.add( + 'DELETE', + '/api/boards/:boardId/custom-fields/:customFieldId/dropdown-items/:dropdownItemId', + (req, res) => { + Authentication.checkUserId(req.userId); + + CustomFields.direct.update( + { _id: req.params.customFieldId }, + { + $pull: { + 'settings.dropdownItems': { _id: req.params.dropdownItemId }, + }, + }, + ); + + JsonRoutes.sendResult(res, { + code: 200, + data: { _id: req.params.customFieldId }, + }); + }, + ); + /** * @operation delete_custom_field * @summary Delete a Custom Fields attached to a board