Improvements to ClickUp-Node (#921)

This commit is contained in:
Ricardo Espinoza
2020-09-06 15:38:18 -04:00
committed by GitHub
parent d64c767ebd
commit f24afcd86f
3 changed files with 297 additions and 8 deletions

View File

@@ -99,7 +99,7 @@ export class ClickUp implements INodeType {
{
name: 'clickUpApi',
required: true,
}
},
],
properties: [
{
@@ -296,7 +296,7 @@ export class ClickUp implements INodeType {
const { tags } = await clickupApiRequest.call(this, 'GET', `/space/${spaceId}/tag`);
for (const tag of tags) {
const tagName = tag.name;
const tagId = tag.id;
const tagId = tag.name;
returnData.push({
name: tagName,
value: tagId,
@@ -320,6 +320,23 @@ export class ClickUp implements INodeType {
}
return returnData;
},
// Get all the custom fields to display them to user so that he can
// select them easily
async getCustomFields(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
const listId = this.getCurrentNodeParameter('list') as string;
const returnData: INodePropertyOptions[] = [];
const { fields } = await clickupApiRequest.call(this, 'GET', `/list/${listId}/field`);
for (const field of fields) {
const fieldName = field.name;
const fieldId = field.id;
returnData.push({
name: fieldName,
value: fieldId,
});
}
return returnData;
},
},
};
@@ -846,6 +863,22 @@ export class ClickUp implements INodeType {
if (filters.dateUpdatedLt) {
qs.date_updated_lt = new Date(filters.dateUpdatedLt as string).getTime();
}
if (filters.customFieldsUi) {
const customFieldsValues = (filters.customFieldsUi as IDataObject).customFieldsValues as IDataObject[];
if (customFieldsValues) {
const customFields: IDataObject[] = [];
for (const customFieldValue of customFieldsValues) {
customFields.push({
field_id: customFieldValue.fieldId,
operator: (customFieldValue.operator === 'equal') ? '=' : customFieldValue.operator,
value: customFieldValue.value as string,
});
}
qs.custom_fields = JSON.stringify(customFields);
}
}
const listId = this.getNodeParameter('list', i) as string;
if (returnAll === true) {
responseData = await clickupApiRequestAllItems.call(this, 'tasks', 'GET', `/list/${listId}/task`, {}, qs);
@@ -855,6 +888,19 @@ export class ClickUp implements INodeType {
responseData = responseData.splice(0, qs.limit);
}
}
if (operation === 'member') {
const taskId = this.getNodeParameter('id', i) as string;
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
if (returnAll === true) {
responseData = await clickupApiRequest.call(this, 'GET', `/task/${taskId}/member`, {}, qs);
responseData = responseData.members;
} else {
qs.limit = this.getNodeParameter('limit', i) as number;
responseData = await clickupApiRequest.call(this, 'GET', `/task/${taskId}/member`, {}, qs);
responseData = responseData.members;
responseData = responseData.splice(0, qs.limit);
}
}
if (operation === 'setCustomField') {
const taskId = this.getNodeParameter('task', i) as string;
const fieldId = this.getNodeParameter('field', i) as string;
@@ -984,6 +1030,19 @@ export class ClickUp implements INodeType {
responseData = await clickupApiRequest.call(this, 'POST', `/folder/${folderId}/list`, body);
}
}
if (operation === 'member') {
const listId = this.getNodeParameter('id', i) as string;
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
if (returnAll === true) {
responseData = await clickupApiRequest.call(this, 'GET', `/list/${listId}/member`, {}, qs);
responseData = responseData.members;
} else {
qs.limit = this.getNodeParameter('limit', i) as number;
responseData = await clickupApiRequest.call(this, 'GET', `/list/${listId}/member`, {}, qs);
responseData = responseData.members;
responseData = responseData.splice(0, qs.limit);
}
}
if (operation === 'customFields') {
const listId = this.getNodeParameter('list', i) as string;
responseData = await clickupApiRequest.call(this, 'GET', `/list/${listId}/field`);