mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
* fix: expect multiple answers for survey * chore: refactor survey input methods * fix error; fix tracking Co-authored-by: Mutasem <mutdmour@gmail.com>
93 lines
3.6 KiB
TypeScript
93 lines
3.6 KiB
TypeScript
|
|
import { CALENDLY_TRIGGER_NODE_TYPE, CLEARBIT_NODE_TYPE, COMPANY_SIZE_1000_OR_MORE, COMPANY_SIZE_500_999, CRON_NODE_TYPE, ELASTIC_SECURITY_NODE_TYPE, EMAIL_SEND_NODE_TYPE, EXECUTE_COMMAND_NODE_TYPE, FINANCE_WORK_AREA, FUNCTION_NODE_TYPE, GITHUB_TRIGGER_NODE_TYPE, HTTP_REQUEST_NODE_TYPE, IF_NODE_TYPE, ITEM_LISTS_NODE_TYPE, IT_ENGINEERING_WORK_AREA, JIRA_TRIGGER_NODE_TYPE, MICROSOFT_EXCEL_NODE_TYPE, MICROSOFT_TEAMS_NODE_TYPE, PERSONALIZATION_MODAL_KEY, PAGERDUTY_NODE_TYPE, PRODUCT_WORK_AREA, QUICKBOOKS_NODE_TYPE, SALESFORCE_NODE_TYPE, SALES_BUSINESSDEV_WORK_AREA, SECURITY_WORK_AREA, SEGMENT_NODE_TYPE, SET_NODE_TYPE, SLACK_NODE_TYPE, SPREADSHEET_FILE_NODE_TYPE, SWITCH_NODE_TYPE, WEBHOOK_NODE_TYPE, XERO_NODE_TYPE, COMPANY_SIZE_KEY, WORK_AREA_KEY, CODING_SKILL_KEY } from '@/constants';
|
|
import { IPersonalizationSurveyAnswers } from '@/Interface';
|
|
|
|
export function getPersonalizedNodeTypes(answers: IPersonalizationSurveyAnswers) {
|
|
const companySize = answers[COMPANY_SIZE_KEY];
|
|
const workArea = answers[WORK_AREA_KEY];
|
|
|
|
function isWorkAreaAnswer(name: string) {
|
|
if (Array.isArray(workArea)) {
|
|
return workArea.includes(name);
|
|
} else {
|
|
return workArea === name;
|
|
}
|
|
}
|
|
|
|
const workAreaIsEmpty = workArea === null || workArea.length === 0;
|
|
|
|
if (companySize === null && workAreaIsEmpty && answers[CODING_SKILL_KEY] === null) {
|
|
return [];
|
|
}
|
|
|
|
let codingSkill = null;
|
|
if (answers[CODING_SKILL_KEY]) {
|
|
codingSkill = parseInt(answers[CODING_SKILL_KEY] as string, 10);
|
|
codingSkill = isNaN(codingSkill)? 0 : codingSkill;
|
|
}
|
|
|
|
let nodeTypes = [] as string[];
|
|
if (isWorkAreaAnswer(IT_ENGINEERING_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat(WEBHOOK_NODE_TYPE);
|
|
}
|
|
else {
|
|
nodeTypes = nodeTypes.concat(CRON_NODE_TYPE);
|
|
}
|
|
|
|
if (codingSkill !== null && codingSkill >= 4) {
|
|
nodeTypes = nodeTypes.concat(FUNCTION_NODE_TYPE);
|
|
}
|
|
else {
|
|
nodeTypes = nodeTypes.concat(ITEM_LISTS_NODE_TYPE);
|
|
}
|
|
|
|
if (codingSkill !== null && codingSkill < 3) {
|
|
nodeTypes = nodeTypes.concat(IF_NODE_TYPE);
|
|
}
|
|
else {
|
|
nodeTypes = nodeTypes.concat(SWITCH_NODE_TYPE);
|
|
}
|
|
|
|
if (companySize === COMPANY_SIZE_500_999 || companySize === COMPANY_SIZE_1000_OR_MORE) {
|
|
if (isWorkAreaAnswer(SALES_BUSINESSDEV_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat(SALESFORCE_NODE_TYPE);
|
|
}
|
|
else if (isWorkAreaAnswer(SECURITY_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([ELASTIC_SECURITY_NODE_TYPE, HTTP_REQUEST_NODE_TYPE]);
|
|
}
|
|
else if (isWorkAreaAnswer(PRODUCT_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([JIRA_TRIGGER_NODE_TYPE, SEGMENT_NODE_TYPE]);
|
|
}
|
|
else if (isWorkAreaAnswer(IT_ENGINEERING_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([GITHUB_TRIGGER_NODE_TYPE, HTTP_REQUEST_NODE_TYPE]);
|
|
}
|
|
else {
|
|
nodeTypes = nodeTypes.concat([MICROSOFT_EXCEL_NODE_TYPE, MICROSOFT_TEAMS_NODE_TYPE]);
|
|
}
|
|
}
|
|
else {
|
|
if (isWorkAreaAnswer(SALES_BUSINESSDEV_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat(CLEARBIT_NODE_TYPE);
|
|
}
|
|
else if (isWorkAreaAnswer(SECURITY_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([PAGERDUTY_NODE_TYPE, HTTP_REQUEST_NODE_TYPE]);
|
|
}
|
|
else if (isWorkAreaAnswer(PRODUCT_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([JIRA_TRIGGER_NODE_TYPE, CALENDLY_TRIGGER_NODE_TYPE]);
|
|
}
|
|
else if (isWorkAreaAnswer(IT_ENGINEERING_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([EXECUTE_COMMAND_NODE_TYPE, HTTP_REQUEST_NODE_TYPE]);
|
|
}
|
|
else if (isWorkAreaAnswer(FINANCE_WORK_AREA)) {
|
|
nodeTypes = nodeTypes.concat([XERO_NODE_TYPE, QUICKBOOKS_NODE_TYPE, SPREADSHEET_FILE_NODE_TYPE]);
|
|
}
|
|
else {
|
|
nodeTypes = nodeTypes.concat([EMAIL_SEND_NODE_TYPE, SLACK_NODE_TYPE]);
|
|
}
|
|
}
|
|
|
|
nodeTypes = nodeTypes.concat(SET_NODE_TYPE);
|
|
|
|
return nodeTypes;
|
|
}
|