Introduce telemetry (#2099)

* introduce analytics

* add user survey backend

* add user survey backend

* set answers on survey submit

Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>

* change name to personalization

* lint

Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>

* N8n 2495 add personalization modal (#2280)

* update modals

* add onboarding modal

* implement questions

* introduce analytics

* simplify impl

* implement survey handling

* add personalized cateogry

* update modal behavior

* add thank you view

* handle empty cases

* rename modal

* standarize modal names

* update image, add tags to headings

* remove unused file

* remove unused interfaces

* clean up footer spacing

* introduce analytics

* refactor to fix bug

* update endpoint

* set min height

* update stories

* update naming from questions to survey

* remove spacing after core categories

* fix bug in logic

* sort nodes

* rename types

* merge with be

* rename userSurvey

* clean up rest api

* use constants for keys

* use survey keys

* clean up types

* move personalization to its own file

Co-authored-by: ahsan-virani <ahsan.virani@gmail.com>

* Survey new options (#2300)

* split up options

* fix quotes

* remove unused import

* add user created workflow event (#2301)

* simplify env vars

* fix versionCli on FE

* update personalization env

* fix event User opened Credentials panel

* fix select modal spacing

* fix nodes panel event

* fix workflow id in workflow execute event

* improve telemetry error logging

* fix config and stop process events

* add flush call on n8n stop

* ready for release

* improve telemetry process exit

* fix merge

* improve n8n stop events

Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
Co-authored-by: Mutasem <mutdmour@gmail.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
This commit is contained in:
Ahsan Virani
2021-10-19 05:57:49 +02:00
committed by GitHub
parent 4b857b19ac
commit 421dd72224
100 changed files with 2223 additions and 550 deletions

View File

@@ -2,26 +2,37 @@
<el-dialog
:visible="visible"
:before-close="closeDialog"
:title="title"
:class="{'dialog-wrapper': true, 'center': center, 'scrollable': scrollable}"
:class="{'dialog-wrapper': true, [$style.center]: center, scrollable: scrollable}"
:width="width"
:show-close="showClose"
:custom-class="getCustomClass()"
:close-on-click-modal="closeOnClickModal"
:close-on-press-escape="closeOnPressEscape"
:style="styles"
append-to-body
>
<template v-slot:title>
<template v-slot:title v-if="$scopedSlots.header">
<slot name="header" v-if="!loading" />
</template>
<template v-slot:title v-else-if="title">
<div :class="centerTitle ? $style.centerTitle : ''">
<div v-if="title">
<n8n-heading tag="h1" size="xlarge">{{title}}</n8n-heading>
</div>
<div v-if="subtitle" :class="$style.subtitle">
<n8n-heading tag="h3" size="small" color="text-light">{{subtitle}}</n8n-heading>
</div>
</div>
</template>
<div class="modal-content" @keydown.stop @keydown.enter="handleEnter" @keydown.esc="closeDialog">
<slot v-if="!loading" name="content"/>
<div class="loader" v-else>
<div :class="$style.loader" v-else>
<n8n-spinner />
</div>
</div>
<el-row v-if="!loading" class="modal-footer">
<div v-if="!loading && $scopedSlots.footer" :class="$style.footer">
<slot name="footer" :close="closeDialog" />
</el-row>
</div>
</el-dialog>
</template>
@@ -37,6 +48,9 @@ export default Vue.extend({
title: {
type: String,
},
subtitle: {
type: String,
},
eventBus: {
type: Vue,
},
@@ -72,6 +86,9 @@ export default Vue.extend({
height: {
type: String,
},
minHeight: {
type: String,
},
maxHeight: {
type: String,
},
@@ -79,6 +96,18 @@ export default Vue.extend({
type: Boolean,
default: false,
},
centerTitle: {
type: Boolean,
default: false,
},
closeOnClickModal: {
type: Boolean,
default: true,
},
closeOnPressEscape: {
type: Boolean,
default: true,
},
},
mounted() {
window.addEventListener('keydown', this.onWindowKeydown);
@@ -151,6 +180,9 @@ export default Vue.extend({
if (this.height) {
styles['--dialog-height'] = this.height;
}
if (this.minHeight) {
styles['--dialog-min-height'] = this.minHeight;
}
if (this.maxHeight) {
styles['--dialog-max-height'] = this.maxHeight;
}
@@ -174,6 +206,7 @@ export default Vue.extend({
max-width: var(--dialog-max-width, 80%);
min-width: var(--dialog-min-width, 420px);
height: var(--dialog-height);
min-height: var(--dialog-min-height);
max-height: var(--dialog-max-height);
}
@@ -188,12 +221,14 @@ export default Vue.extend({
overflow: hidden;
flex-grow: 1;
}
}
.scrollable .modal-content {
overflow-y: auto;
&.scrollable .modal-content {
overflow-y: auto;
}
}
</style>
<style lang="scss" module>
.center {
display: flex;
align-items: center;
@@ -208,4 +243,16 @@ export default Vue.extend({
font-size: 30px;
height: 80%;
}
.centerTitle {
text-align: center;
}
.subtitle {
margin-top: var(--spacing-2xs);
}
.footer {
margin-top: var(--spacing-l);
}
</style>