From a6006382762ffb8c36b20a337e823cbdd86fd5d8 Mon Sep 17 00:00:00 2001 From: "dev.daminik00" Date: Sun, 5 Oct 2025 23:43:14 +0200 Subject: [PATCH] add funnel --- .../ac321d94-62e3-45c6-85f4-51faf6769bab.svg | 13 +++++++++++ src/lib/models/Funnel.ts | 22 +++++++++++-------- 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 public/images/ac321d94-62e3-45c6-85f4-51faf6769bab.svg diff --git a/public/images/ac321d94-62e3-45c6-85f4-51faf6769bab.svg b/public/images/ac321d94-62e3-45c6-85f4-51faf6769bab.svg new file mode 100644 index 0000000..5ddd5de --- /dev/null +++ b/public/images/ac321d94-62e3-45c6-85f4-51faf6769bab.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/lib/models/Funnel.ts b/src/lib/models/Funnel.ts index 80be137..0491972 100644 --- a/src/lib/models/Funnel.ts +++ b/src/lib/models/Funnel.ts @@ -35,19 +35,18 @@ export interface IFunnel extends Document { // Вложенные схемы для валидации структуры данных воронки const TypographyVariantSchema = new Schema( { - text: { + text: { type: String, - // НЕ required - позволяет { show: false } без текста + // НЕ required — позволяет { show: false } без текста, но если указан — не пустой validate: { - validator: function(v: string | undefined): boolean { - // Если текст указан, он не может быть пустым + validator: function (v: string | undefined): boolean { if (v === undefined || v === null) return true; return v.trim().length > 0; }, - message: 'Text field cannot be empty if provided' - } + message: "Text field cannot be empty if provided", + }, }, - show: { type: Boolean, default: true }, // Добавляем поддержку show флага + show: { type: Boolean, default: true }, // поддержка флага видимости font: { type: String, enum: ["manrope", "inter", "geistSans", "geistMono"], @@ -376,9 +375,14 @@ FunnelSchema.pre("save", function (next) { // Экспорт модели с проверкой на существование // В dev окружении пересоздаём модель, чтобы подтянуть изменения схемы (enums и т.п.) -if (process.env.NODE_ENV !== "production" && typeof mongoose.models.Funnel !== "undefined") { +if ( + process.env.NODE_ENV !== "production" && + typeof mongoose.models.Funnel !== "undefined" +) { try { - (mongoose as unknown as { deleteModel: (name: string) => void }).deleteModel("Funnel"); + ( + mongoose as unknown as { deleteModel: (name: string) => void } + ).deleteModel("Funnel"); } catch { // no-op }