mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
refactor: Personalization tweaks (#3813)
* update survey * add usage modes * update recommended * update key * update key * fix text cut off issue * delete dulicate * update placeholder * clean up keys * fix label
This commit is contained in:
parent
d65a9ed118
commit
7240aa38a3
110470
package-lock.json
generated
110470
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -523,12 +523,30 @@ export type IPersonalizationSurveyAnswersV2 = {
|
|||
companyIndustryExtended?: string[] | null;
|
||||
companySize?: string | null;
|
||||
companyType?: string | null;
|
||||
customerType?: string | null;
|
||||
mspFocus?: string[] | null;
|
||||
mspFocusOther?: string | null;
|
||||
otherAutomationGoal?: string | null;
|
||||
otherCompanyIndustryExtended?: string[] | null;
|
||||
};
|
||||
|
||||
export type IPersonalizationSurveyAnswersV3 = {
|
||||
version: 'v3';
|
||||
automationGoal?: string | null;
|
||||
otherAutomationGoal?: string | null;
|
||||
companyIndustryExtended?: string[] | null;
|
||||
otherCompanyIndustryExtended?: string[] | null;
|
||||
companySize?: string | null;
|
||||
companyType?: string | null;
|
||||
automationGoalSm?: string[] | null;
|
||||
automationGoalSmOther?: string | null;
|
||||
usageModes?: string[] | null;
|
||||
};
|
||||
|
||||
export type IPersonalizationLatestVersion = IPersonalizationSurveyAnswersV3;
|
||||
|
||||
export type IPersonalizationSurveyVersions = IPersonalizationSurveyAnswersV1 | IPersonalizationSurveyAnswersV2 | IPersonalizationSurveyAnswersV3;
|
||||
|
||||
export type IRole = 'default' | 'owner' | 'member';
|
||||
|
||||
export interface IUserResponse {
|
||||
|
@ -541,7 +559,7 @@ export interface IUserResponse {
|
|||
id: string;
|
||||
createdAt: Date;
|
||||
};
|
||||
personalizationAnswers?: IPersonalizationSurveyAnswersV1 | IPersonalizationSurveyAnswersV2 | null;
|
||||
personalizationAnswers?: IPersonalizationSurveyVersions | null;
|
||||
isPending: boolean;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { IInviteResponse, IOnboardingCallPromptResponse, IPersonalizationSurveyAnswersV2, IRestApiContext, IUserResponse } from '@/Interface';
|
||||
import { IInviteResponse, IPersonalizationLatestVersion, IRestApiContext, IUserResponse } from '@/Interface';
|
||||
import { IDataObject } from 'n8n-workflow';
|
||||
import { get, makeRestApiRequest } from './helpers';
|
||||
import { makeRestApiRequest } from './helpers';
|
||||
|
||||
export function loginCurrentUser(context: IRestApiContext): Promise<IUserResponse | null> {
|
||||
return makeRestApiRequest(context, 'GET', '/login');
|
||||
|
@ -71,6 +71,6 @@ export async function reinvite(context: IRestApiContext, {id}: {id: string}): Pr
|
|||
await makeRestApiRequest(context, 'POST', `/users/${id}/reinvite`);
|
||||
}
|
||||
|
||||
export async function submitPersonalizationSurvey(context: IRestApiContext, params: IPersonalizationSurveyAnswersV2): Promise<void> {
|
||||
export async function submitPersonalizationSurvey(context: IRestApiContext, params: IPersonalizationLatestVersion): Promise<void> {
|
||||
await makeRestApiRequest(context, 'POST', '/me/survey', params as unknown as IDataObject);
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<script lang="ts">
|
||||
import mixins from 'vue-typed-mixins';
|
||||
|
||||
const SURVEY_VERSION = 'v2';
|
||||
const SURVEY_VERSION = 'v3';
|
||||
|
||||
import {
|
||||
CODING_SKILL_KEY,
|
||||
|
@ -64,7 +64,7 @@ import {
|
|||
OTHER_INDUSTRY_OPTION,
|
||||
PERSONALIZATION_MODAL_KEY,
|
||||
SECURITY_INDUSTRY,
|
||||
EDUCATION_INDUSTRY,
|
||||
EDUCATION_TYPE,
|
||||
FINANCE_INSURANCE_INDUSTRY,
|
||||
IT_INDUSTRY,
|
||||
MARKETING_INDUSTRY,
|
||||
|
@ -76,6 +76,7 @@ import {
|
|||
AUTOMATION_GOAL_KEY,
|
||||
CUSTOMER_INTEGRATIONS_GOAL,
|
||||
CUSTOMER_SUPPORT_GOAL,
|
||||
ENGINEERING_GOAL,
|
||||
FINANCE_ACCOUNTING_GOAL,
|
||||
HR_GOAL,
|
||||
OPERATIONS_GOAL,
|
||||
|
@ -86,36 +87,36 @@ import {
|
|||
NOT_SURE_YET_GOAL,
|
||||
AUTOMATION_GOAL_OTHER_KEY,
|
||||
COMPANY_TYPE_KEY,
|
||||
CUSTOMER_TYPE_KEY,
|
||||
MSP_FOCUS_KEY,
|
||||
MSP_FOCUS_OTHER_KEY,
|
||||
SAAS_COMPANY_TYPE,
|
||||
ECOMMERCE_COMPANY_TYPE,
|
||||
MSP_COMPANY_TYPE,
|
||||
MSP_INDUSTRY,
|
||||
DIGITAL_AGENCY_COMPANY_TYPE,
|
||||
AUTOMATION_AGENCY_COMPANY_TYPE,
|
||||
SYSTEMS_INTEGRATOR_COMPANY_TYPE,
|
||||
OTHER_COMPANY_TYPE,
|
||||
PERSONAL_COMPANY_TYPE,
|
||||
INDIVIDUAL_CUSTOMER_TYPE,
|
||||
SMALL_CUSTOMER_TYPE,
|
||||
MEDIUM_CUSTOMER_TYPE,
|
||||
LARGE_CUSTOMER_TYPE,
|
||||
CLOUD_INFRA_FOCUS,
|
||||
IT_SUPPORT_FOCUS,
|
||||
NETWORKING_COMMUNICATION_FOCUS,
|
||||
SECURITY_FOCUS,
|
||||
OTHER_FOCUS,
|
||||
COMPANY_INDUSTRY_EXTENDED_KEY,
|
||||
OTHER_COMPANY_INDUSTRY_EXTENDED_KEY,
|
||||
ONBOARDING_PROMPT_TIMEBOX,
|
||||
FIRST_ONBOARDING_PROMPT_TIMEOUT,
|
||||
ONBOARDING_CALL_SIGNUP_MODAL_KEY,
|
||||
MARKETING_AUTOMATION_GOAL_KEY,
|
||||
MARKETING_AUTOMATION_LEAD_GENERATION_GOAL,
|
||||
MARKETING_AUTOMATION_CUSTOMER_COMMUNICATION,
|
||||
MARKETING_AUTOMATION_ACTIONS,
|
||||
MARKETING_AUTOMATION_AD_CAMPAIGN,
|
||||
MARKETING_AUTOMATION_REPORTING,
|
||||
MARKETING_AUTOMATION_DATA_SYNCHING,
|
||||
MARKETING_AUTOMATION_OTHER,
|
||||
OTHER_MARKETING_AUTOMATION_GOAL_KEY,
|
||||
USAGE_MODE_KEY,
|
||||
USAGE_MODE_MANIPULATE_FILES,
|
||||
USAGE_MODE_BUILD_BE_SERVICES,
|
||||
USAGE_MODE_CONNECT_TO_PRODUCT,
|
||||
} from '../constants';
|
||||
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
|
||||
import { showMessage } from '@/components/mixins/showMessage';
|
||||
import Modal from './Modal.vue';
|
||||
import { IFormInput, IFormInputs, IPersonalizationSurveyAnswersV2 } from '@/Interface';
|
||||
import { IFormInputs, IPersonalizationLatestVersion } from '@/Interface';
|
||||
import Vue from 'vue';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { getAccountAge } from '@/modules/userHelpers';
|
||||
|
@ -147,42 +148,6 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
]),
|
||||
survey() {
|
||||
const survey: IFormInputs = [
|
||||
{
|
||||
name: CODING_SKILL_KEY,
|
||||
properties: {
|
||||
label: this.$locale.baseText('personalizationModal.howAreYourCodingSkills'),
|
||||
type: 'select',
|
||||
placeholder: this.$locale.baseText('personalizationModal.select'),
|
||||
options: [
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.neverCoded'),
|
||||
value: '0',
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText(
|
||||
'personalizationModal.iGetStuckTooQuicklyToAchieveMuch',
|
||||
),
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.iCanCodeSomeUsefulThingsBut'),
|
||||
value: '2',
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.iKnowEnoughToBeDangerousBut'),
|
||||
value: '3',
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.iCanFigureMostThingsOut'),
|
||||
value: '4',
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.iCanDoAlmostAnythingIWant'),
|
||||
value: '5',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: COMPANY_TYPE_KEY,
|
||||
properties: {
|
||||
|
@ -198,22 +163,19 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
label: this.$locale.baseText('personalizationModal.eCommerce'),
|
||||
value: ECOMMERCE_COMPANY_TYPE,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.managedServiceProvider'),
|
||||
value: MSP_COMPANY_TYPE,
|
||||
},
|
||||
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.digitalAgencyOrConsultant'),
|
||||
value: DIGITAL_AGENCY_COMPANY_TYPE,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.automationAgencyOrConsultant'),
|
||||
value: AUTOMATION_AGENCY_COMPANY_TYPE,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.systemsIntegrator'),
|
||||
value: SYSTEMS_INTEGRATOR_COMPANY_TYPE,
|
||||
},
|
||||
{
|
||||
value: EDUCATION_TYPE,
|
||||
label: this.$locale.baseText('personalizationModal.education'),
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.other'),
|
||||
value: OTHER_COMPANY_TYPE,
|
||||
|
@ -225,85 +187,6 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: CUSTOMER_TYPE_KEY,
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
return (
|
||||
!!companyType && ![ OTHER_COMPANY_TYPE, PERSONAL_COMPANY_TYPE, ECOMMERCE_COMPANY_TYPE, MSP_COMPANY_TYPE].includes(companyType)
|
||||
);
|
||||
},
|
||||
properties: {
|
||||
label: this.$locale.baseText('personalizationModal.whatKindOfCustomersDoYouServe'),
|
||||
type: 'select',
|
||||
placeholder: this.$locale.baseText('personalizationModal.select'),
|
||||
options: [
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.individualConsumers'),
|
||||
value: INDIVIDUAL_CUSTOMER_TYPE,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.smallBusinesses'),
|
||||
value: SMALL_CUSTOMER_TYPE,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.mediumBusinesses'),
|
||||
value: MEDIUM_CUSTOMER_TYPE,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.largeBusinesses'),
|
||||
value: LARGE_CUSTOMER_TYPE,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: MSP_FOCUS_KEY,
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
return companyType === MSP_COMPANY_TYPE;
|
||||
},
|
||||
properties: {
|
||||
label: this.$locale.baseText('personalizationModal.whatDoesYourCompanyFocusOn'),
|
||||
type: 'multi-select',
|
||||
placeholder: this.$locale.baseText('personalizationModal.select'),
|
||||
options: [
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.cloudInfrastructure'),
|
||||
value: CLOUD_INFRA_FOCUS,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.itSupport'),
|
||||
value: IT_SUPPORT_FOCUS,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.networkingOrCommunication'),
|
||||
value: NETWORKING_COMMUNICATION_FOCUS,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.security'),
|
||||
value: SECURITY_FOCUS,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.otherPleaseSpecify'),
|
||||
value: OTHER_FOCUS,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: MSP_FOCUS_OTHER_KEY,
|
||||
properties: {
|
||||
placeholder: this.$locale.baseText(
|
||||
'personalizationModal.pleaseSpecifyYourCompanyFocus',
|
||||
),
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
const mspFocus = (values as IPersonalizationSurveyAnswersV2)[MSP_FOCUS_KEY];
|
||||
return companyType === MSP_COMPANY_TYPE && !!mspFocus && mspFocus.includes(OTHER_FOCUS);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: COMPANY_INDUSTRY_EXTENDED_KEY,
|
||||
properties: {
|
||||
|
@ -311,10 +194,6 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
label: this.$locale.baseText('personalizationModal.whichIndustriesIsYourCompanyIn'),
|
||||
placeholder: this.$locale.baseText('personalizationModal.select'),
|
||||
options: [
|
||||
{
|
||||
value: EDUCATION_INDUSTRY,
|
||||
label: this.$locale.baseText('personalizationModal.education'),
|
||||
},
|
||||
{
|
||||
value: FINANCE_INSURANCE_INDUSTRY,
|
||||
label: this.$locale.baseText('personalizationModal.financeOrInsurance'),
|
||||
|
@ -335,6 +214,10 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
value: LEGAL_INDUSTRY,
|
||||
label: this.$locale.baseText('personalizationModal.legal'),
|
||||
},
|
||||
{
|
||||
value: MSP_INDUSTRY,
|
||||
label: this.$locale.baseText('personalizationModal.managedServiceProvider'),
|
||||
},
|
||||
{
|
||||
value: MARKETING_INDUSTRY,
|
||||
label: this.$locale.baseText('personalizationModal.marketing'),
|
||||
|
@ -370,7 +253,7 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
],
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
const companyType = (values as IPersonalizationLatestVersion)[COMPANY_TYPE_KEY];
|
||||
return companyType === OTHER_COMPANY_TYPE;
|
||||
},
|
||||
},
|
||||
|
@ -380,8 +263,8 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
placeholder: this.$locale.baseText('personalizationModal.specifyYourCompanysIndustry'),
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
const companyIndustry = (values as IPersonalizationSurveyAnswersV2)[COMPANY_INDUSTRY_EXTENDED_KEY];
|
||||
const companyType = (values as IPersonalizationLatestVersion)[COMPANY_TYPE_KEY];
|
||||
const companyIndustry = (values as IPersonalizationLatestVersion)[COMPANY_INDUSTRY_EXTENDED_KEY];
|
||||
return companyType === OTHER_COMPANY_TYPE && !!companyIndustry && companyIndustry.includes(OTHER_INDUSTRY_OPTION);
|
||||
},
|
||||
},
|
||||
|
@ -400,6 +283,10 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
value: CUSTOMER_SUPPORT_GOAL,
|
||||
label: this.$locale.baseText('personalizationModal.customerSupport'),
|
||||
},
|
||||
{
|
||||
value: ENGINEERING_GOAL,
|
||||
label: this.$locale.baseText('personalizationModal.engineeringOrDevops'),
|
||||
},
|
||||
{
|
||||
value: FINANCE_ACCOUNTING_GOAL,
|
||||
label: this.$locale.baseText('personalizationModal.financeOrAccounting'),
|
||||
|
@ -435,7 +322,7 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
],
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
const companyType = (values as IPersonalizationLatestVersion)[COMPANY_TYPE_KEY];
|
||||
return companyType !== PERSONAL_COMPANY_TYPE;
|
||||
},
|
||||
},
|
||||
|
@ -445,11 +332,85 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
placeholder: this.$locale.baseText('personalizationModal.specifyYourAutomationGoal'),
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
const automationGoal = (values as IPersonalizationSurveyAnswersV2)[AUTOMATION_GOAL_KEY];
|
||||
const companyType = (values as IPersonalizationLatestVersion)[COMPANY_TYPE_KEY];
|
||||
const automationGoal = (values as IPersonalizationLatestVersion)[AUTOMATION_GOAL_KEY];
|
||||
return companyType !== PERSONAL_COMPANY_TYPE && automationGoal === OTHER_AUTOMATION_GOAL;
|
||||
},
|
||||
},
|
||||
{
|
||||
name: MARKETING_AUTOMATION_GOAL_KEY,
|
||||
properties: {
|
||||
type: 'multi-select',
|
||||
label: this.$locale.baseText('personalizationModal.specifySalesMarketingGoal'),
|
||||
placeholder: this.$locale.baseText('personalizationModal.select'),
|
||||
options: [
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.leadGeneration'),
|
||||
value: MARKETING_AUTOMATION_LEAD_GENERATION_GOAL,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.customerCommunication'),
|
||||
value: MARKETING_AUTOMATION_CUSTOMER_COMMUNICATION,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.customerActions'),
|
||||
value: MARKETING_AUTOMATION_ACTIONS,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.adCampaign'),
|
||||
value: MARKETING_AUTOMATION_AD_CAMPAIGN,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.reporting'),
|
||||
value: MARKETING_AUTOMATION_REPORTING,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.dataSynching'),
|
||||
value: MARKETING_AUTOMATION_DATA_SYNCHING,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.other'),
|
||||
value: MARKETING_AUTOMATION_OTHER,
|
||||
},
|
||||
],
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const goal = (values as IPersonalizationLatestVersion)[AUTOMATION_GOAL_KEY];
|
||||
return goal === SALES_MARKETING_GOAL;
|
||||
},
|
||||
},
|
||||
{
|
||||
name: OTHER_MARKETING_AUTOMATION_GOAL_KEY,
|
||||
properties: {
|
||||
placeholder: this.$locale.baseText('personalizationModal.specifyOtherSalesAndMarketingGoal'),
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const goals = (values as IPersonalizationLatestVersion)[MARKETING_AUTOMATION_GOAL_KEY];
|
||||
return !!goals && goals.includes(MARKETING_AUTOMATION_OTHER);
|
||||
},
|
||||
},
|
||||
{
|
||||
name: USAGE_MODE_KEY,
|
||||
properties: {
|
||||
type: 'multi-select',
|
||||
label: this.$locale.baseText('personalizationModal.specifyUsageMode'),
|
||||
placeholder: this.$locale.baseText('personalizationModal.select'),
|
||||
options: [
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.connectToOwnProduct'),
|
||||
value: USAGE_MODE_CONNECT_TO_PRODUCT,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.buildBackendServices'),
|
||||
value: USAGE_MODE_BUILD_BE_SERVICES,
|
||||
},
|
||||
{
|
||||
label: this.$locale.baseText('personalizationModal.manipulateFiles'),
|
||||
value: USAGE_MODE_MANIPULATE_FILES,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: COMPANY_SIZE_KEY,
|
||||
properties: {
|
||||
|
@ -484,7 +445,7 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
],
|
||||
},
|
||||
shouldDisplay(values): boolean {
|
||||
const companyType = (values as IPersonalizationSurveyAnswersV2)[COMPANY_TYPE_KEY];
|
||||
const companyType = (values as IPersonalizationLatestVersion)[COMPANY_TYPE_KEY];
|
||||
return companyType !== PERSONAL_COMPANY_TYPE;
|
||||
},
|
||||
},
|
||||
|
@ -500,7 +461,7 @@ export default mixins(showMessage, workflowHelpers).extend({
|
|||
onSave() {
|
||||
this.formBus.$emit('submit');
|
||||
},
|
||||
async onSubmit(values: IPersonalizationSurveyAnswersV2): Promise<void> {
|
||||
async onSubmit(values: IPersonalizationLatestVersion): Promise<void> {
|
||||
this.$data.isSaving = true;
|
||||
|
||||
try {
|
||||
|
|
|
@ -147,6 +147,7 @@ export const REQUEST_NODE_FORM_URL = 'https://n8n-community.typeform.com/to/K1fB
|
|||
export const INSTANCE_ID_HEADER = 'n8n-instance-id';
|
||||
export const WAIT_TIME_UNLIMITED = '3000-01-01T00:00:00.000Z';
|
||||
|
||||
/** PERSONALIZATION SURVEY */
|
||||
export const WORK_AREA_KEY = 'workArea';
|
||||
export const FINANCE_WORK_AREA = 'finance';
|
||||
export const IT_ENGINEERING_WORK_AREA = 'IT-Engineering';
|
||||
|
@ -157,30 +158,15 @@ export const SECURITY_WORK_AREA = 'security';
|
|||
export const COMPANY_TYPE_KEY = 'companyType';
|
||||
export const SAAS_COMPANY_TYPE = 'saas';
|
||||
export const ECOMMERCE_COMPANY_TYPE = 'ecommerce';
|
||||
export const EDUCATION_TYPE = 'education';
|
||||
export const MSP_COMPANY_TYPE = 'msp';
|
||||
export const DIGITAL_AGENCY_COMPANY_TYPE = 'digital-agency';
|
||||
export const AUTOMATION_AGENCY_COMPANY_TYPE = 'automation-agency';
|
||||
export const SYSTEMS_INTEGRATOR_COMPANY_TYPE = 'systems-integrator';
|
||||
export const OTHER_COMPANY_TYPE = 'other';
|
||||
export const PERSONAL_COMPANY_TYPE = 'personal';
|
||||
|
||||
export const CUSTOMER_TYPE_KEY = 'customerType';
|
||||
export const INDIVIDUAL_CUSTOMER_TYPE = 'individual';
|
||||
export const SMALL_CUSTOMER_TYPE = 'small';
|
||||
export const MEDIUM_CUSTOMER_TYPE = 'medium';
|
||||
export const LARGE_CUSTOMER_TYPE = 'large';
|
||||
|
||||
export const MSP_FOCUS_KEY = 'mspFocus';
|
||||
export const MSP_FOCUS_OTHER_KEY = 'mspFocusOther';
|
||||
export const CLOUD_INFRA_FOCUS = 'cloud-infra';
|
||||
export const IT_SUPPORT_FOCUS = 'it-support';
|
||||
export const NETWORKING_COMMUNICATION_FOCUS = 'networking-communication';
|
||||
export const SECURITY_FOCUS = 'security';
|
||||
export const OTHER_FOCUS = 'other';
|
||||
|
||||
export const COMPANY_INDUSTRY_EXTENDED_KEY = 'companyIndustryExtended';
|
||||
export const OTHER_COMPANY_INDUSTRY_EXTENDED_KEY = 'otherCompanyIndustryExtended';
|
||||
export const EDUCATION_INDUSTRY = 'education';
|
||||
export const PHYSICAL_RETAIL_OR_SERVICES = 'physical-retail-or-services';
|
||||
export const REAL_ESTATE_OR_CONSTRUCTION = 'real-estate-or-construction';
|
||||
export const GOVERNMENT_INDUSTRY = 'government';
|
||||
|
@ -188,6 +174,7 @@ export const LEGAL_INDUSTRY = 'legal-industry';
|
|||
export const MARKETING_INDUSTRY = 'marketing-industry';
|
||||
export const MEDIA_INDUSTRY = 'media-industry';
|
||||
export const MANUFACTURING_INDUSTRY = 'manufacturing-industry';
|
||||
export const MSP_INDUSTRY = 'msp';
|
||||
export const HEALTHCARE_INDUSTRY= 'healthcare';
|
||||
export const FINANCE_INSURANCE_INDUSTRY = 'finance-insurance-industry';
|
||||
export const IT_INDUSTRY = 'it-industry';
|
||||
|
@ -203,12 +190,29 @@ export const COMPANY_SIZE_500_999 = '500-999';
|
|||
export const COMPANY_SIZE_1000_OR_MORE = '1000+';
|
||||
export const COMPANY_SIZE_PERSONAL_USE = 'personalUser';
|
||||
|
||||
export const MARKETING_AUTOMATION_GOAL_KEY = 'automationGoalSm';
|
||||
export const MARKETING_AUTOMATION_LEAD_GENERATION_GOAL = 'lead-generation';
|
||||
export const MARKETING_AUTOMATION_CUSTOMER_COMMUNICATION = 'customer-communication';
|
||||
export const MARKETING_AUTOMATION_ACTIONS = 'actions';
|
||||
export const MARKETING_AUTOMATION_AD_CAMPAIGN = 'ad-campaign';
|
||||
export const MARKETING_AUTOMATION_REPORTING = 'reporting';
|
||||
export const MARKETING_AUTOMATION_DATA_SYNCHING = 'data-syncing';
|
||||
export const MARKETING_AUTOMATION_OTHER = 'other';
|
||||
|
||||
export const OTHER_MARKETING_AUTOMATION_GOAL_KEY = 'automationGoalSmOther';
|
||||
|
||||
export const CODING_SKILL_KEY = 'codingSkill';
|
||||
|
||||
export const USAGE_MODE_KEY = 'usageModes';
|
||||
export const USAGE_MODE_CONNECT_TO_PRODUCT = 'connect-to-Product';
|
||||
export const USAGE_MODE_BUILD_BE_SERVICES = 'build-be-services';
|
||||
export const USAGE_MODE_MANIPULATE_FILES = 'manipulate-files';
|
||||
|
||||
export const AUTOMATION_GOAL_KEY = 'automationGoal';
|
||||
export const AUTOMATION_GOAL_OTHER_KEY = 'otherAutomationGoal';
|
||||
export const CUSTOMER_INTEGRATIONS_GOAL = 'customer-integrations';
|
||||
export const CUSTOMER_SUPPORT_GOAL = 'customer-support';
|
||||
export const ENGINEERING_GOAL = 'engineering';
|
||||
export const FINANCE_ACCOUNTING_GOAL = 'finance-accounting';
|
||||
export const HR_GOAL = 'hr';
|
||||
export const OPERATIONS_GOAL = 'operations';
|
||||
|
@ -218,6 +222,8 @@ export const SECURITY_GOAL = 'security';
|
|||
export const OTHER_AUTOMATION_GOAL = 'other';
|
||||
export const NOT_SURE_YET_GOAL = 'not-sure-yet';
|
||||
|
||||
/** END OF PERSONALIZATION SURVEY */
|
||||
|
||||
export const MODAL_CANCEL = 'cancel';
|
||||
export const MODAL_CLOSE = 'close';
|
||||
export const MODAL_CONFIRMED = 'confirmed';
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
|
||||
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, 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, COMPANY_TYPE_KEY, ECOMMERCE_COMPANY_TYPE, MSP_COMPANY_TYPE, PERSONAL_COMPANY_TYPE, AUTOMATION_GOAL_KEY, OTHER_AUTOMATION_GOAL, NOT_SURE_YET_GOAL, CUSTOMER_INTEGRATIONS_GOAL, CUSTOMER_SUPPORT_GOAL, FINANCE_ACCOUNTING_GOAL, ZENDESK_TRIGGER_NODE_TYPE, WOOCOMMERCE_TRIGGER_NODE_TYPE, SALES_MARKETING_GOAL, HUBSPOT_TRIGGER_NODE_TYPE, HR_GOAL, WORKABLE_TRIGGER_NODE_TYPE, OPERATIONS_GOAL, PRODUCT_GOAL, NOTION_TRIGGER_NODE_TYPE, SECURITY_GOAL, THE_HIVE_TRIGGER_NODE_TYPE, ZENDESK_NODE_TYPE, SERVICENOW_NODE_TYPE, JIRA_NODE_TYPE, BAMBOO_HR_NODE_TYPE, GOOGLE_SHEETS_NODE_TYPE } from '@/constants';
|
||||
import { IPermissions, IPersonalizationSurveyAnswersV1, IPersonalizationSurveyAnswersV2, IRootState, IUser } from '@/Interface';
|
||||
import { IPermissions, IPersonalizationSurveyAnswersV1, IPersonalizationSurveyAnswersV2, IPersonalizationSurveyAnswersV3, IPersonalizationSurveyVersions, IUser } from '@/Interface';
|
||||
|
||||
import { ILogInStatus, IRole, IUserPermissions } from "@/Interface";
|
||||
|
||||
function isPersonalizationV2OrV3(data: IPersonalizationSurveyVersions): data is IPersonalizationSurveyAnswersV2 | IPersonalizationSurveyAnswersV3 {
|
||||
return "version" in data;
|
||||
}
|
||||
|
||||
export const ROLE: {Owner: IRole, Member: IRole, Default: IRole} = {
|
||||
Owner: 'owner',
|
||||
Member: 'member',
|
||||
|
@ -95,17 +99,16 @@ export const isAuthorized = (permissions: IPermissions, currentUser: IUser | nul
|
|||
return false;
|
||||
};
|
||||
|
||||
export function getPersonalizedNodeTypes(answers: IPersonalizationSurveyAnswersV1 | IPersonalizationSurveyAnswersV2 | null): string[] {
|
||||
export function getPersonalizedNodeTypes(answers: IPersonalizationSurveyAnswersV1 | IPersonalizationSurveyAnswersV2 | IPersonalizationSurveyAnswersV3 | null): string[] {
|
||||
if (!answers) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
if (answers.version === 'v2') {
|
||||
return getPersonalizationV2(answers as IPersonalizationSurveyAnswersV2);
|
||||
if (isPersonalizationV2OrV3(answers)) {
|
||||
return getPersonalizationV2(answers);
|
||||
}
|
||||
|
||||
return getPersonalizationV1(answers as IPersonalizationSurveyAnswersV1);
|
||||
return getPersonalizationV1(answers);
|
||||
}
|
||||
|
||||
export function getAccountAge(currentUser: IUser): number {
|
||||
|
@ -118,7 +121,7 @@ export function getAccountAge(currentUser: IUser): number {
|
|||
return -1;
|
||||
}
|
||||
|
||||
function getPersonalizationV2(answers: IPersonalizationSurveyAnswersV2) {
|
||||
function getPersonalizationV2(answers: IPersonalizationSurveyAnswersV2 | IPersonalizationSurveyAnswersV3) {
|
||||
let nodeTypes: string[] = [];
|
||||
|
||||
const {version, ...data} = answers;
|
||||
|
@ -131,7 +134,7 @@ function getPersonalizationV2(answers: IPersonalizationSurveyAnswersV2) {
|
|||
const automationGoal = answers[AUTOMATION_GOAL_KEY];
|
||||
|
||||
let codingSkill = null;
|
||||
if (answers[CODING_SKILL_KEY]) {
|
||||
if (CODING_SKILL_KEY in answers && answers[CODING_SKILL_KEY]) {
|
||||
codingSkill = parseInt(answers[CODING_SKILL_KEY] as string, 10);
|
||||
codingSkill = isNaN(codingSkill)? 0 : codingSkill;
|
||||
}
|
||||
|
|
|
@ -22,9 +22,8 @@ import {
|
|||
import Vue from 'vue';
|
||||
import { ActionContext, Module } from 'vuex';
|
||||
import {
|
||||
IPermissions,
|
||||
IInviteResponse,
|
||||
IPersonalizationSurveyAnswersV2,
|
||||
IPersonalizationLatestVersion,
|
||||
IRootState,
|
||||
IUser,
|
||||
IUserResponse,
|
||||
|
@ -70,7 +69,7 @@ const module: Module<IUsersState, IRootState> = {
|
|||
deleteUser: (state: IUsersState, userId: string) => {
|
||||
Vue.delete(state.users, userId);
|
||||
},
|
||||
setPersonalizationAnswers(state: IUsersState, answers: IPersonalizationSurveyAnswersV2) {
|
||||
setPersonalizationAnswers(state: IUsersState, answers: IPersonalizationLatestVersion) {
|
||||
if (!state.currentUserId) {
|
||||
return;
|
||||
}
|
||||
|
@ -201,7 +200,7 @@ const module: Module<IUsersState, IRootState> = {
|
|||
async reinviteUser(context: ActionContext<IUsersState, IRootState>, params: {id: string}) {
|
||||
await reinvite(context.rootGetters.getRestApiContext, params);
|
||||
},
|
||||
async submitPersonalizationSurvey(context: ActionContext<IUsersState, IRootState>, results: IPersonalizationSurveyAnswersV2) {
|
||||
async submitPersonalizationSurvey(context: ActionContext<IUsersState, IRootState>, results: IPersonalizationLatestVersion) {
|
||||
await submitPersonalizationSurvey(context.rootGetters.getRestApiContext, results);
|
||||
|
||||
context.commit('setPersonalizationAnswers', results);
|
||||
|
|
|
@ -607,18 +607,15 @@
|
|||
"parameterInputList.delete": "Delete",
|
||||
"parameterInputList.deleteParameter": "Delete Parameter",
|
||||
"parameterInputList.parameterOptions": "Parameter Options",
|
||||
"personalizationModal.automationAgencyOrConsultant": "Automation agency/consultant",
|
||||
"personalizationModal.automationConsulting": "Automation consulting",
|
||||
"personalizationModal.cloudInfrastructure": "Cloud infrastructure",
|
||||
"personalizationModal.continue": "Continue",
|
||||
"personalizationModal.customerIntegrations": "Customer integrations",
|
||||
"personalizationModal.customerSupport": "Customer support",
|
||||
"personalizationModal.customizeN8n": "Customize n8n to you",
|
||||
"personalizationModal.digitalAgencyOrConsultant": "Digital agency/consultant",
|
||||
"personalizationModal.digitalAgencyOrConsultant": "Marketing agency / consultancy",
|
||||
"personalizationModal.eCommerce": "eCommerce",
|
||||
"personalizationModal.education": "Education",
|
||||
"personalizationModal.engineeringOrDevops": "Engineering / Devops",
|
||||
"personalizationModal.errorWhileSubmittingResults": "Error while submitting results",
|
||||
"personalizationModal.executiveTeam": "Executive team",
|
||||
"personalizationModal.financeOrAccounting": "Finance / Accounting",
|
||||
"personalizationModal.financeOrInsurance": "Finance / Insurance",
|
||||
"personalizationModal.getStarted": "Get started",
|
||||
|
@ -627,17 +624,8 @@
|
|||
"personalizationModal.howAreYourCodingSkills": "How are your coding skills?",
|
||||
"personalizationModal.howBigIsYourCompany": "How big is your company?",
|
||||
"personalizationModal.hr": "HR",
|
||||
"personalizationModal.iCanCodeSomeUsefulThingsBut": "2. I can code some useful things, but I spend a lot of time stuck",
|
||||
"personalizationModal.iCanDoAlmostAnythingIWant": "5. I can do almost anything I want, easily (pro coder)",
|
||||
"personalizationModal.iCanFigureMostThingsOut": "4. I can figure most things out",
|
||||
"personalizationModal.iGetStuckTooQuicklyToAchieveMuch": "1. I get stuck too quickly to achieve much",
|
||||
"personalizationModal.iKnowEnoughToBeDangerousBut": "3. I know enough to be dangerous, but I'm no expert",
|
||||
"personalizationModal.imNotUsingN8nForWork": "I'm not using n8n for work",
|
||||
"personalizationModal.individualConsumers": "Customers are individual consumers",
|
||||
"personalizationModal.it": "IT",
|
||||
"personalizationModal.itEngineering": "IT / Engineering",
|
||||
"personalizationModal.itSupport": "IT support",
|
||||
"personalizationModal.largeBusinesses": "Customers are large businesses (500+ employees)",
|
||||
"personalizationModal.legal": "Legal",
|
||||
"personalizationModal.lessThan20People": "Less than 20 people",
|
||||
"personalizationModal.lookOutForThingsMarked": "Look out for things marked with a ✨. They are personalized to make n8n more relevant to you.",
|
||||
|
@ -645,40 +633,40 @@
|
|||
"personalizationModal.manufacturing": "Manufacturing",
|
||||
"personalizationModal.marketing": "Marketing",
|
||||
"personalizationModal.media": "Media",
|
||||
"personalizationModal.mediumBusinesses": "Customers are medium businesses (20-499 employees)",
|
||||
"personalizationModal.networkingOrCommunication": "Networking / Communication",
|
||||
"personalizationModal.neverCoded": "0. Never coded",
|
||||
"personalizationModal.notSureYet": "Not sure yet",
|
||||
"personalizationModal.operations": "Operations",
|
||||
"personalizationModal.other": "Other",
|
||||
"personalizationModal.otherPleaseSpecify": "Other (please specify)",
|
||||
"personalizationModal.people": "people",
|
||||
"personalizationModal.physicalRetailOrServices": "Physical retail or services",
|
||||
"personalizationModal.pleaseSpecifyYourCompanyFocus": "Please specify your company focus",
|
||||
"personalizationModal.proCoder": "Pro coder",
|
||||
"personalizationModal.product": "Product (e.g. fast prototyping)",
|
||||
"personalizationModal.realEstateOrConstruction": "Real estate / Construction",
|
||||
"personalizationModal.saas": "SaaS",
|
||||
"personalizationModal.saas": "Software as a service",
|
||||
"personalizationModal.salesAndMarketing": "Sales and Marketing",
|
||||
"personalizationModal.salesBizDev": "Sales / Bizdev",
|
||||
"personalizationModal.salesBusinessDevelopment": "Sales / Business Development",
|
||||
"personalizationModal.security": "Security",
|
||||
"personalizationModal.select": "Select...",
|
||||
"personalizationModal.smallBusinesses": "Customers are small businesses (under 20 employees)",
|
||||
"personalizationModal.specifyYourAutomationGoal": "Please specify your automation goal",
|
||||
"personalizationModal.specifyYourCompanysIndustry": "Specify your company's industry",
|
||||
"personalizationModal.specifyYourWorkArea": "Specify your work area",
|
||||
"personalizationModal.support": "Support",
|
||||
"personalizationModal.systemsIntegration": "Systems Integration",
|
||||
"personalizationModal.systemsIntegrator": "Systems Integrator",
|
||||
"personalizationModal.systemsIntegrator": "Systems integrator / Automation agency",
|
||||
"personalizationModal.telecoms": "Telecoms",
|
||||
"personalizationModal.thanks": "Thanks!",
|
||||
"personalizationModal.theseQuestionsHelpUs": "These questions help us tailor n8n to you",
|
||||
"personalizationModal.whatAreYouLookingToAutomate": "What are you looking to automate?",
|
||||
"personalizationModal.whatBestDescribesYourCompany": "What best describes your company?",
|
||||
"personalizationModal.whatDoesYourCompanyFocusOn": "Which services does your company focus on?",
|
||||
"personalizationModal.whatKindOfCustomersDoYouServe": "What kind of customers do you serve?",
|
||||
"personalizationModal.whichIndustriesIsYourCompanyIn": "Which industries is your company in?",
|
||||
"personalizationModal.specifySalesMarketingGoal": "Which parts of Sales and Marketing?",
|
||||
"personalizationModal.leadGeneration": "Lead generation, enrichment, routing",
|
||||
"personalizationModal.customerCommunication": "Customer communication",
|
||||
"personalizationModal.customerActions": "Actions when lead changes status",
|
||||
"personalizationModal.adCampaign": "Ad campaign management",
|
||||
"personalizationModal.reporting": "Reporting",
|
||||
"personalizationModal.dataSynching": "Data syncing",
|
||||
"personalizationModal.specifyUsageMode": "Are you looking to do any of these?",
|
||||
"personalizationModal.connectToOwnProduct": "Connect to own product (or core infrastructure)",
|
||||
"personalizationModal.buildBackendServices": "Build backend services (endpoints)",
|
||||
"personalizationModal.manipulateFiles": "Manipulate/transfer files",
|
||||
"personalizationModal.specifyOtherSalesAndMarketingGoal": "Specify your other Sales and Marketing goals",
|
||||
"pushConnection.nodeExecutedSuccessfully": "Node executed successfully",
|
||||
"pushConnection.workflowExecutedSuccessfully": "Workflow executed successfully",
|
||||
"pushConnectionTracker.cannotConnectToServer": "You have a connection issue or the server is down. <br />n8n should reconnect automatically once the issue is resolved.",
|
||||
|
|
Loading…
Reference in a new issue