mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
✨ 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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user