UNPKG

@andrewcturing/kanbanize

Version:

Pipedream Kanbanize Components

152 lines (150 loc) 4.75 kB
import kanbanizeApp from "../../kanbanize.app.mjs"; import constants from "../../common/constants.mjs"; export default { key: "kanbanize-list-all-tasks", name: "List Tasks", description: "Get All Tasks. [See the docs here](https://kanbanize.com/api)", version: "0.0.1", type: "action", props: { kanbanizeApp, boardId: { description: "The ID of the board where the tasks are located.\n\nYou can see the board ID on the dashboard screen, in the upper right corner of each board.", propDefinition: [ kanbanizeApp, "boardId", ], }, subtasks: { label: "Subtasks", description: "Set true if you want to get subtask details for each task.", type: "boolean", default: true, }, comments: { label: "Comments", description: "Set true if you want to get comments for each task.", type: "boolean", default: true, }, textFormat: { label: "Text Format", description: "If the plain text format is used, the HTML tags are stripped from the task description.", type: "string", options: constants.textFormatOpts, }, section: { label: "Section", description: "Get card from a specific board area.", type: "string", optional: true, options: constants.sectionOpts, }, column: { label: "Column", description: "Get only cards from a specific column.\n\nThis field has higher priority than the section option.", type: "string", optional: true, async options() { if (!this.boardId) { return []; } return this.kanbanizeApp.getBoardsColumns(this.boardId); }, }, lane: { label: "Lane", description: "Only get cards from that specific lane.", type: "string", optional: true, async options() { if (!this.boardId) { return []; } return this.kanbanizeApp.getBoardsLanes(this.boardId); }, }, container: { label: "Archive Container", description: "Set true if you want to get tasks from archive.", type: "boolean", default: false, reloadProps: true, }, }, async additionalProps() { if (!this.container) { return {}; } return { fromDate: { label: "From date", description: "Only applicable with container=”archive”.\n\nThe date after which the tasks have been archived. Accepts the format: `2012-05-05`. Default value is `1970-01-01`", type: "string", optional: true, }, toDate: { label: "To date", description: "Only applicable with container=”archive”.\n\nThe date before which the tasks have been archived. Accepts the following format: `2012-05-05`. Default value is `now`", type: "string", optional: true, }, showInitiatives: { label: "Show initiatives", description: "Only applicable with container=”archive”.\n\nIf this parameter is set true the response will return only initiatives. Otherwise, it will return only tasks.", type: "boolean", optional: true, }, version: { label: "Version", description: "Gives the tasks from the specified archive version.\n\nThe From Date and To Date parameters are ignored.", type: "string", optional: true, }, page: { label: "Page", description: "Only applicable with container=”archive”.\n\nBy default this method returns 30 tasks per page. If not set, the first 30 values will be returned.", type: "integer", optional: true, }, }; }, methods: { removeUnusedParams(searchParams) { return Object.keys(searchParams).reduce((acc, key) => ( (searchParams[key] === undefined || searchParams[key] === null) ? acc : { ...acc, [key]: searchParams[key], } ), {}); }, }, async run({ $ }) { const searchParams = this.removeUnusedParams({ boardid: this.boardId, subtasks: this.subtasks ? "yes" : null, comments: this.comments ? "yes" : null, container: this.container ? "archive" : null, fromdate: this.fromDate, todate: this.toDate, showInitiatives: this.showInitiatives, version: this.version, page: this.page, textformat: this.textFormat, column: this.column, lane: this.lane, section: this.section, }); const response = await this.kanbanizeApp.getAllTasks(searchParams); $.export("$summary", `Successfully fetched ${response.length} tasks`); return response; }, };