diff --git a/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts b/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts index 6bccd6dc38..7f17409585 100644 --- a/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts +++ b/packages/nodes-base/nodes/MondayCom/BoardItemDescription.ts @@ -55,6 +55,11 @@ export const boardItemOperations = [ value: 'getByColumnValue', description: 'Get items by column value', }, + { + name: 'Move', + value: 'move', + description: 'Move item to group', + }, ], default: 'create', description: 'The operation to perform.', @@ -63,9 +68,9 @@ export const boardItemOperations = [ export const boardItemFields = [ -/* -------------------------------------------------------------------------- */ -/* boardItem:addUpdate */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:addUpdate */ + /* -------------------------------------------------------------------------- */ { displayName: 'Item ID', name: 'itemId', @@ -102,9 +107,9 @@ export const boardItemFields = [ }, description: 'The update text to add.', }, -/* -------------------------------------------------------------------------- */ -/* boardItem:changeColumnValue */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:changeColumnValue */ + /* -------------------------------------------------------------------------- */ { displayName: 'Board ID', name: 'boardId', @@ -186,9 +191,9 @@ export const boardItemFields = [ }, description: 'The column value in JSON format. Documentation can be found here.', }, -/* -------------------------------------------------------------------------- */ -/* boardItem:changeMultipleColumnValues */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:changeMultipleColumnValues */ + /* -------------------------------------------------------------------------- */ { displayName: 'Board ID', name: 'boardId', @@ -249,9 +254,9 @@ export const boardItemFields = [ alwaysOpenEditWindow: true, }, }, -/* -------------------------------------------------------------------------- */ -/* boardItem:create */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:create */ + /* -------------------------------------------------------------------------- */ { displayName: 'Board ID', name: 'boardId', @@ -342,9 +347,9 @@ export const boardItemFields = [ }, ], }, -/* -------------------------------------------------------------------------- */ -/* boardItem:delete */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:delete */ + /* -------------------------------------------------------------------------- */ { displayName: 'Item ID', name: 'itemId', @@ -363,9 +368,9 @@ export const boardItemFields = [ }, description: `Item's ID`, }, -/* -------------------------------------------------------------------------- */ -/* boardItem:get */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:get */ + /* -------------------------------------------------------------------------- */ { displayName: 'Item ID', name: 'itemId', @@ -384,9 +389,9 @@ export const boardItemFields = [ }, description: `Item's ID (Multiple can be added separated by comma)`, }, -/* -------------------------------------------------------------------------- */ -/* boardItem:getAll */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:getAll */ + /* -------------------------------------------------------------------------- */ { displayName: 'Board ID', name: 'boardId', @@ -471,9 +476,9 @@ export const boardItemFields = [ default: 50, description: 'How many results to return.', }, -/* -------------------------------------------------------------------------- */ -/* boardItem:getByColumnValue */ -/* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ + /* boardItem:getByColumnValue */ + /* -------------------------------------------------------------------------- */ { displayName: 'Board ID', name: 'boardId', @@ -578,4 +583,68 @@ export const boardItemFields = [ default: 50, description: 'How many results to return.', }, + /* -------------------------------------------------------------------------- */ + /* boardItem:move */ + /* -------------------------------------------------------------------------- */ + { + displayName: 'Board ID', + name: 'boardId', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getBoards', + }, + default: '', + required: true, + displayOptions: { + show: { + resource: [ + 'boardItem', + ], + operation: [ + 'move', + ], + }, + }, + }, + { + displayName: 'Item ID', + name: 'itemId', + type: 'string', + required: true, + displayOptions: { + show: { + operation: [ + 'move', + ], + resource: [ + 'boardItem', + ], + }, + }, + default: '', + description: `The item's ID`, + }, + { + displayName: 'Group ID', + name: 'groupId', + type: 'options', + default: '', + typeOptions: { + loadOptionsMethod: 'getGroups', + loadOptionsDependsOn: [ + 'boardId', + ], + }, + required: true, + displayOptions: { + show: { + resource: [ + 'boardItem', + ], + operation: [ + 'move', + ], + }, + }, + }, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts b/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts index b790df1b6c..413ca91531 100644 --- a/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts +++ b/packages/nodes-base/nodes/MondayCom/MondayCom.node.ts @@ -38,7 +38,7 @@ import { import { snakeCase, - } from 'change-case'; +} from 'change-case'; interface IGraphqlBody { query: string; @@ -322,7 +322,7 @@ export class MondayCom implements INodeType { if (returnAll === true) { responseData = await mondayComApiRequestAllItems.call(this, 'data.boards', body); } else { - body.variables.limit = this.getNodeParameter('limit', i) as number; + body.variables.limit = this.getNodeParameter('limit', i) as number; responseData = await mondayComApiRequest.call(this, body); responseData = responseData.data.boards; } @@ -695,6 +695,26 @@ export class MondayCom implements INodeType { responseData = responseData.data.items_by_column_values; } } + if (operation === 'move') { + const groupId = this.getNodeParameter('groupId', i) as string; + const itemId = parseInt(this.getNodeParameter('itemId', i) as string, 10); + + const body: IGraphqlBody = { + query: + `mutation ($groupId: String!, $itemId: Int!) { + move_item_to_group (group_id: $groupId, item_id: $itemId) { + id + } + }`, + variables: { + groupId, + itemId, + }, + }; + + responseData = await mondayComApiRequest.call(this, body); + responseData = responseData.data.move_item_to_group; + } } if (Array.isArray(responseData)) { returnData.push.apply(returnData, responseData as IDataObject[]);