Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9b00cff2d9 |
112
packages/backend/src/apps/monday/actions/create-item/index.js
Normal file
112
packages/backend/src/apps/monday/actions/create-item/index.js
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
import defineAction from '../../../../helpers/define-action.js';
|
||||||
|
|
||||||
|
export default defineAction({
|
||||||
|
name: 'Create item',
|
||||||
|
key: 'createItem',
|
||||||
|
description: 'Creates a new item in a board.',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
label: 'Board',
|
||||||
|
key: 'boardId',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: true,
|
||||||
|
description: '',
|
||||||
|
variables: true,
|
||||||
|
source: {
|
||||||
|
type: 'query',
|
||||||
|
name: 'getDynamicData',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'key',
|
||||||
|
value: 'listBoards',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Group',
|
||||||
|
key: 'groupId',
|
||||||
|
type: 'dropdown',
|
||||||
|
required: false,
|
||||||
|
description: '',
|
||||||
|
dependsOn: ['parameters.boardId'],
|
||||||
|
variables: true,
|
||||||
|
source: {
|
||||||
|
type: 'query',
|
||||||
|
name: 'getDynamicData',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'key',
|
||||||
|
value: 'listGroups',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'parameters.boardId',
|
||||||
|
value: '{parameters.boardId}',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Item Name',
|
||||||
|
key: 'itemName',
|
||||||
|
type: 'string',
|
||||||
|
required: true,
|
||||||
|
description: '',
|
||||||
|
variables: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Subitem Names',
|
||||||
|
key: 'subitemNames',
|
||||||
|
type: 'dynamic',
|
||||||
|
required: false,
|
||||||
|
description: '',
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
label: 'Subitem Name',
|
||||||
|
key: 'subitemName',
|
||||||
|
type: 'string',
|
||||||
|
required: false,
|
||||||
|
description: '',
|
||||||
|
variables: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
const { boardId, groupId, itemName, subitemNames } = $.step.parameters;
|
||||||
|
const allSubitems = subitemNames.map((entry) => entry.subitemName);
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
query: `
|
||||||
|
mutation {
|
||||||
|
create_item (board_id: ${boardId}${
|
||||||
|
groupId ? `, group_id: "${groupId}"` : ''
|
||||||
|
}, item_name: "${itemName}") {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}`,
|
||||||
|
};
|
||||||
|
|
||||||
|
const { data } = await $.http.post('/', body);
|
||||||
|
|
||||||
|
const itemId = data.data.create_item.id;
|
||||||
|
|
||||||
|
for (let subitemName of allSubitems) {
|
||||||
|
let body = {
|
||||||
|
query: `
|
||||||
|
mutation {
|
||||||
|
create_subitem (parent_item_id:${itemId}, item_name:"${subitemName}") {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}`,
|
||||||
|
};
|
||||||
|
|
||||||
|
await $.http.post('/', body);
|
||||||
|
}
|
||||||
|
|
||||||
|
$.setActionItem({
|
||||||
|
raw: data,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
@@ -1,3 +1,4 @@
|
|||||||
import createBoard from './create-board/index.js';
|
import createBoard from './create-board/index.js';
|
||||||
|
import createItem from './create-item/index.js';
|
||||||
|
|
||||||
export default [createBoard];
|
export default [createBoard, createItem];
|
||||||
|
4
packages/backend/src/apps/monday/dynamic-data/index.js
Normal file
4
packages/backend/src/apps/monday/dynamic-data/index.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import listBoards from './list-boards/index.js';
|
||||||
|
import listGroups from './list-groups/index.js';
|
||||||
|
|
||||||
|
export default [listBoards, listGroups];
|
@@ -0,0 +1,34 @@
|
|||||||
|
export default {
|
||||||
|
name: 'List boards',
|
||||||
|
key: 'listBoards',
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
const boards = {
|
||||||
|
data: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
query: `
|
||||||
|
query {
|
||||||
|
boards {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
};
|
||||||
|
|
||||||
|
const { data } = await $.http.post('/', body);
|
||||||
|
|
||||||
|
if (data.data.boards?.length) {
|
||||||
|
for (const board of data.data.boards) {
|
||||||
|
boards.data.push({
|
||||||
|
value: board.id,
|
||||||
|
name: board.name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return boards;
|
||||||
|
},
|
||||||
|
};
|
@@ -0,0 +1,40 @@
|
|||||||
|
export default {
|
||||||
|
name: 'List groups',
|
||||||
|
key: 'listGroups',
|
||||||
|
|
||||||
|
async run($) {
|
||||||
|
const groups = {
|
||||||
|
data: [],
|
||||||
|
};
|
||||||
|
const boardId = $.step.parameters.parameters.boardId;
|
||||||
|
|
||||||
|
if (!boardId) {
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
query: `query {
|
||||||
|
boards (ids: ${boardId}) {
|
||||||
|
groups {
|
||||||
|
title
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
};
|
||||||
|
|
||||||
|
const { data } = await $.http.post('/', body);
|
||||||
|
|
||||||
|
if (data.data.boards[0].groups.length) {
|
||||||
|
for (const group of data.data.boards[0].groups) {
|
||||||
|
groups.data.push({
|
||||||
|
value: group.id,
|
||||||
|
name: group.title,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return groups;
|
||||||
|
},
|
||||||
|
};
|
@@ -3,6 +3,7 @@ import addAuthHeader from './common/add-auth-header.js';
|
|||||||
import auth from './auth/index.js';
|
import auth from './auth/index.js';
|
||||||
import triggers from './triggers/index.js';
|
import triggers from './triggers/index.js';
|
||||||
import actions from './actions/index.js';
|
import actions from './actions/index.js';
|
||||||
|
import dynamicData from './dynamic-data/index.js';
|
||||||
|
|
||||||
export default defineApp({
|
export default defineApp({
|
||||||
name: 'Monday',
|
name: 'Monday',
|
||||||
@@ -17,4 +18,5 @@ export default defineApp({
|
|||||||
auth,
|
auth,
|
||||||
triggers,
|
triggers,
|
||||||
actions,
|
actions,
|
||||||
|
dynamicData,
|
||||||
});
|
});
|
||||||
|
@@ -3,6 +3,8 @@ favicon: /favicons/monday.svg
|
|||||||
items:
|
items:
|
||||||
- name: Create board
|
- name: Create board
|
||||||
desc: Creates a new board.
|
desc: Creates a new board.
|
||||||
|
- name: Create item
|
||||||
|
desc: Creates a new item in a board.
|
||||||
---
|
---
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
Reference in New Issue
Block a user