add faq, eslint

This commit is contained in:
Sergey Krylov 2023-05-11 06:10:18 +03:00 committed by Sergey Krylov
parent cc20844885
commit cdbe10fcc0
222 changed files with 2049 additions and 236 deletions

149
.eslintrc.json Normal file
View File

@ -0,0 +1,149 @@
{
"extends": [
"airbnb-base",
"airbnb-typescript/base",
"plugin:import/recommended",
"plugin:typescript-sort-keys/recommended"
],
"plugins": [
"@typescript-eslint",
"typescript-sort-keys",
"sort-destructure-keys",
"sort-keys-fix",
"import"
],
"rules": {
"@typescript-eslint/naming-convention": ["error", {
"selector": "enum",
"format": ["PascalCase", "UPPER_CASE"],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
}],
"@typescript-eslint/member-delimiter-style": [
"error",
{
"multiline": {
"delimiter": "semi",
"requireLast": true
},
"singleline": {
"delimiter": "semi",
"requireLast": false
},
"multilineDetection": "brackets"
}
],
"@typescript-eslint/sort-type-constituents": [
"error",
{
"checkIntersections": true,
"checkUnions": true,
"groupOrder": [
"named",
"keyword",
"operator",
"literal",
"function",
"import",
"conditional",
"object",
"tuple",
"intersection",
"union",
"nullish"
]
}
],
"@typescript-eslint/type-annotation-spacing": [
"error",
{
"before": false,
"after": true,
"overrides": {
"arrow": {
"before": true
}
}
}
],
"import/no-extraneous-dependencies": [
"error",
{
"devDependencies": true
}
],
"import/order": [
"error",
{
"alphabetize": {
"order": "asc"
},
"groups": [
"builtin",
"external",
"internal",
"parent",
[
"index",
"sibling"
],
"object"
],
"newlines-between": "always",
"pathGroups": [
{
"pattern": ".*/**/*.scss",
"group": "sibling",
"position": "after"
},
{
"pattern": "@/**/*",
"group": "parent",
"position": "after"
}
],
"pathGroupsExcludedImportTypes": []
}
],
"import/prefer-default-export": "off",
"max-len": [
"error",
140
],
"no-console": [
"error",
{
"allow": [
"warn",
"error"
]
}
],
"sort-destructure-keys/sort-destructure-keys": [
"error",
{
"caseSensitive": false
}
],
"sort-keys": [
"error",
"asc",
{
"caseSensitive": true,
"natural": false,
"minKeys": 2
}
],
"sort-keys-fix/sort-keys-fix": "error"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
},
"root": true,
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [ ".ts"]
}
}
}

View File

@ -17,11 +17,21 @@
"devDependencies": { "devDependencies": {
"@types/cors": "2.8.13", "@types/cors": "2.8.13",
"@types/express": "4.17.17", "@types/express": "4.17.17",
"@types/uuid": "9.0.1" "@types/uuid": "9.0.1",
"@typescript-eslint/eslint-plugin": "5.59.0",
"@typescript-eslint/parser": "5.59.0",
"eslint": "8.39.0",
"eslint-config-airbnb-base": "15.0.0",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-sort-destructure-keys": "1.5.0",
"eslint-plugin-sort-keys-fix": "1.1.2",
"eslint-plugin-typescript-sort-keys": "2.3.0",
"eslint-config-airbnb-typescript": "17.0.0"
}, },
"scripts": { "scripts": {
"dev": "nodemon index.ts", "dev": "nodemon index.ts",
"start": "ts-node --esm index.ts", "start": "ts-node --esm index.ts",
"lint": "eslint src --color",
"docker:build:dev": "docker build -f ./configs/Dockerfile.dev -t arkids-main-backend:development .", "docker:build:dev": "docker build -f ./configs/Dockerfile.dev -t arkids-main-backend:development .",
"docker:start:dev": "docker run --rm -p 5000:5000 -t -i -v ./src:/app-backend/src --name arkids-main-backend-development --network arkids-network arkids-main-backend:development", "docker:start:dev": "docker run --rm -p 5000:5000 -t -i -v ./src:/app-backend/src --name arkids-main-backend-development --network arkids-network arkids-main-backend:development",
"docker:remove:dev": "docker image rm arkids-main-backend:development", "docker:remove:dev": "docker image rm arkids-main-backend:development",

View File

@ -1,29 +1,31 @@
import express, { Router } from 'express'; import express from 'express';
import { ApiRoute } from '../constants'; import { ApiRoute } from '../constants';
import breadcrumbsRouter from './routes/breadcrumbs';
import faqRouter from './routes/faq';
import hallsRouter from './routes/halls'; import hallsRouter from './routes/halls';
import imageRouter from './routes/image';
import infoRouter from './routes/info';
import questRouter from './routes/quests'; import questRouter from './routes/quests';
import rateRouter from './routes/rate'; import rateRouter from './routes/rate';
import servicesRouter from './routes/services';
import statisticsRouter from './routes/statistic'; import statisticsRouter from './routes/statistic';
import storiesRouter from './routes/stories'; import storiesRouter from './routes/stories';
import textRouter from './routes/text'; import textRouter from './routes/text';
import infoRouter from './routes/info';
import breadcrumbsRouter from './routes/breadcrumbs';
import servicesRouter from './routes/services';
import faqRouter from './routes/faq';
const apiRouter = express.Router() const apiRouter = express.Router();
apiRouter.use(ApiRoute.BREADCRUMBS, breadcrumbsRouter)
apiRouter.use(ApiRoute.FAQ, faqRouter)
apiRouter.use(ApiRoute.INFO, infoRouter)
apiRouter.use(ApiRoute.SERVICES, servicesRouter)
apiRouter.use(ApiRoute.TEXT, textRouter)
apiRouter.use(ApiRoute.HALLS, hallsRouter)
apiRouter.use(ApiRoute.RATE, rateRouter)
apiRouter.use(ApiRoute.STORIES, storiesRouter)
apiRouter.use(ApiRoute.STATISTIC_INFO, statisticsRouter)
apiRouter.use(ApiRoute.QUESTS, questRouter)
apiRouter.use(ApiRoute.BREADCRUMBS, breadcrumbsRouter);
apiRouter.use(ApiRoute.FAQ, faqRouter);
apiRouter.use(ApiRoute.INFO, infoRouter);
apiRouter.use(ApiRoute.SERVICES, servicesRouter);
apiRouter.use(ApiRoute.TEXT, textRouter);
apiRouter.use(ApiRoute.HALLS, hallsRouter);
apiRouter.use(ApiRoute.RATE, rateRouter);
apiRouter.use(ApiRoute.STORIES, storiesRouter);
apiRouter.use(ApiRoute.STATISTIC_INFO, statisticsRouter);
apiRouter.use(ApiRoute.QUESTS, questRouter);
apiRouter.use(ApiRoute.IMAGE, imageRouter);
export default apiRouter; export default apiRouter;

View File

@ -1,4 +1,5 @@
import { Request, Response } from 'express'; import { Request, Response } from 'express';
import { PAGE_LINK, PAGE_LINK_LABEL } from '../../../constants'; import { PAGE_LINK, PAGE_LINK_LABEL } from '../../../constants';
export type BreadcrumbsType = { export type BreadcrumbsType = {
@ -29,10 +30,14 @@ const questsPageBreadcrumbs: BreadcrumbsType[] = [
{ href: PAGE_LINK.QUESTS, label: PAGE_LINK_LABEL[PAGE_LINK.QUESTS] }, { href: PAGE_LINK.QUESTS, label: PAGE_LINK_LABEL[PAGE_LINK.QUESTS] },
]; ];
const faqPageBreadcrumbs: BreadcrumbsType[] = [
{ href: PAGE_LINK.HOME, label: PAGE_LINK_LABEL[PAGE_LINK.HOME] },
{ href: PAGE_LINK.FAQ, label: PAGE_LINK_LABEL[PAGE_LINK.FAQ] },
];
export const getBreadcrumbs = (req: Request, res: Response) => { export const getBreadcrumbs = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const {page} = req.body; const { page } = req.body;
switch (page) { switch (page) {
case PAGE_LINK.BIRTHDAY: { case PAGE_LINK.BIRTHDAY: {
@ -51,7 +56,11 @@ export const getBreadcrumbs = (req: Request, res: Response) => {
return res.status(200).json(questsPageBreadcrumbs); return res.status(200).json(questsPageBreadcrumbs);
} }
case PAGE_LINK.FAQ: {
return res.status(200).json(faqPageBreadcrumbs);
}
default: default:
return res.status(404); return res.status(404);
} }
} };

View File

@ -1,10 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getBreadcrumbs } from './controller'; import { getBreadcrumbs } from './controller';
const router = express.Router() const router = express.Router();
router.post('/', (req: Request, res: Response) => { router.post('/', (req: Request, res: Response) => getBreadcrumbs(req, res));
return getBreadcrumbs(req, res);
})
export default router; export default router;

View File

@ -1,59 +1,81 @@
import { Request, Response } from 'express'; import { Request, Response } from 'express';
import { v4 as uuid } from 'uuid';
import { PAGE_LINK } from '../../../constants'; import { PAGE_LINK } from '../../../constants';
export type QuestionType = { export type QuestionType = {
answer: string; answer: string;
id: string;
question: string; question: string;
}; };
export type QuestionCategoryType = {
id: string;
questions: QuestionType[];
title: string;
};
const birthdayQuestions: QuestionType[] = [ const birthdayQuestions: QuestionType[] = [
{ {
answer: 'Ответ на вопрос как забронировать зал для проведения Дня рождения?', answer: 'Ответ на вопрос как забронировать зал для проведения Дня рождения?',
id: uuid(),
question: 'Как забронировать зал для проведения Дня рождения?', question: 'Как забронировать зал для проведения Дня рождения?',
}, },
{ {
answer: 'Мы не требуем предоплату. Для бронирования мероприятия достаточно Вашего номера телефона. ' answer: 'Мы не требуем предоплату. Для бронирования мероприятия достаточно Вашего номера телефона. '
+ 'Мероприятие оплачивается на месте перед его началом.', + 'Мероприятие оплачивается на месте перед его началом.',
id: uuid(),
question: 'Как производится оплата мероприятия?', question: 'Как производится оплата мероприятия?',
}, },
{ {
answer: 'Ответ на вопрос какое максимальное количество детей допустимо на празднике?', answer: 'Ответ на вопрос какое максимальное количество детей допустимо на празднике?',
id: uuid(),
question: 'Какое максимальное количество детей допустимо на празднике?', question: 'Какое максимальное количество детей допустимо на празднике?',
}, },
]; ];
const graduationQuestions: QuestionType[] = [ const graduationQuestions: QuestionType[] = [
{ {
answer: 'Ответ на вопрос как забронировать зал для проведения Дня рождения?', answer: 'Ответ на вопрос как забронировать зал для проведения выпускного?',
id: uuid(),
question: 'Как забронировать зал для проведения Дня рождения?', question: 'Как забронировать зал для проведения Дня рождения?',
}, },
{ {
answer: 'Мы не требуем предоплату. Для бронирования мероприятия достаточно Вашего номера телефона.' answer: 'Мы не требуем предоплату. Для бронирования мероприятия достаточно Вашего номера телефона.'
+ ' Мероприятие оплачивается на месте перед его началом.', + ' Мероприятие оплачивается на месте перед его началом.',
id: uuid(),
question: 'Как производится оплата мероприятия?', question: 'Как производится оплата мероприятия?',
}, },
{ {
answer: 'Ответ на вопрос какое максимальное количество детей допустимо на празднике?', answer: 'Ответ на вопрос какое максимальное количество детей допустимо на празднике?',
id: uuid(),
question: 'Какое максимальное количество детей допустимо на празднике?', question: 'Какое максимальное количество детей допустимо на празднике?',
}, },
]; ];
const outdoorsQuestions: QuestionType[] = [ const outdoorsQuestions: QuestionType[] = [
{ {
answer: 'Ответ на вопрос как забронировать зал для проведения Дня рождения?', answer: 'Ответ на вопрос как забронировать зал для проведения выездного праздника?',
id: uuid(),
question: 'Как забронировать зал для проведения Дня рождения?', question: 'Как забронировать зал для проведения Дня рождения?',
}, },
{ {
answer: 'Мы не требуем предоплату. Для бронирования мероприятия достаточно Вашего номера телефона. ' answer: 'Мы не требуем предоплату. Для бронирования мероприятия достаточно Вашего номера телефона. '
+ 'Мероприятие оплачивается на месте перед его началом.', + 'Мероприятие оплачивается на месте перед его началом.',
id: uuid(),
question: 'Как производится оплата мероприятия?', question: 'Как производится оплата мероприятия?',
}, },
{ {
answer: 'Ответ на вопрос какое максимальное количество детей допустимо на празднике?', answer: 'Ответ на вопрос какое максимальное количество детей допустимо на празднике?',
id: uuid(),
question: 'Какое максимальное количество детей допустимо на празднике?', question: 'Какое максимальное количество детей допустимо на празднике?',
}, },
]; ];
type QuestionsType = {
categories: QuestionCategoryType[];
group: string;
id: string;
};
export const getFaq = (req: Request, res: Response) => { export const getFaq = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const { id, page } = req.body; const { id, page } = req.body;
@ -90,4 +112,103 @@ export const getFaq = (req: Request, res: Response) => {
default: default:
return res.status(404); return res.status(404);
} }
} };
export const getAllFaq = (req: Request, res: Response<QuestionsType[]>) => {
res.status(200).json([
{
categories: [
{
id: uuid(),
questions: birthdayQuestions,
title: 'Расположение',
},
{
id: uuid(),
questions: graduationQuestions,
title: 'Бронирование и оплата',
},
],
group: 'О парке',
id: uuid(),
},
{
categories: [
{
id: uuid(),
questions: outdoorsQuestions,
title: 'Общая информация',
},
{
id: uuid(),
questions: graduationQuestions,
title: 'Квест Егерь',
},
{
id: uuid(),
questions: birthdayQuestions,
title: 'Квест Фараон',
},
{
id: uuid(),
questions: outdoorsQuestions,
title: 'Квест Мульт',
},
],
group: 'Квесты',
id: uuid(),
},
{
categories: [
{
id: uuid(),
questions: birthdayQuestions,
title: 'День Рождения',
},
{
id: uuid(),
questions: outdoorsQuestions,
title: 'Комбо для праздника',
},
{
id: uuid(),
questions: birthdayQuestions,
title: 'Тематические комбо',
},
{
id: uuid(),
questions: graduationQuestions,
title: 'Выпускной',
},
{
id: uuid(),
questions: outdoorsQuestions,
title: 'Выездной правздник',
},
],
group: 'Праздник',
id: uuid(),
},
{
categories: [
{
id: uuid(),
questions: graduationQuestions,
title: 'Аренда зала',
},
{
id: uuid(),
questions: outdoorsQuestions,
title: 'Мастер классы',
},
{
id: uuid(),
questions: birthdayQuestions,
title: 'Сопровождение детей',
},
],
group: 'Прочее',
id: uuid(),
},
]);
};

View File

@ -1,9 +1,11 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getFaq } from './controller';
const router = express.Router()
router.post('/', (req: Request, res: Response) => { import { getFaq, getAllFaq } from './controller';
return getFaq(req, res)
}) const router = express.Router();
router.post('/', (req: Request, res: Response) => getFaq(req, res));
router.get('/', (req: Request, res: Response) => getAllFaq(req, res));
export default router; export default router;

View File

@ -1,12 +1,12 @@
import { Request, Response } from 'express';
import * as path from 'path'; import * as path from 'path';
import { Request, Response } from 'express';
const imageRootDir = 'static/images/information/halls/'; const imageRootDir = 'static/images/information/halls/';
const Hall1Image = path.join(imageRootDir, 'hall1.jpg') const Hall1Image = path.join(imageRootDir, 'hall1.jpg');
const Hall2Image = path.join(imageRootDir, 'hall2.jpg') const Hall2Image = path.join(imageRootDir, 'hall2.jpg');
const Hall3Image = path.join(imageRootDir, 'hall3.jpg') const Hall3Image = path.join(imageRootDir, 'hall3.jpg');
export type HallType = { export type HallType = {
area: number; area: number;
@ -23,6 +23,4 @@ const halls: HallType[] = [
{ area: 60, img: { alt: 'Зал Лофт', src: Hall3Image }, name: 'Зал Лофт' }, { area: 60, img: { alt: 'Зал Лофт', src: Hall3Image }, name: 'Зал Лофт' },
]; ];
export const getHalls = (req: Request, res: Response) => { export const getHalls = (req: Request, res: Response) => res.status(200).json(halls);
return res.status(200).json(halls);
}

View File

@ -1,9 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getHalls } from './controller';
const hallsRouter = express.Router()
hallsRouter.get('/', (req: Request, res: Response) => { import { getHalls } from './controller';
return getHalls(req, res)
}) const hallsRouter = express.Router();
hallsRouter.get('/', (req: Request, res: Response) => getHalls(req, res));
export default hallsRouter; export default hallsRouter;

View File

@ -0,0 +1,59 @@
import path from 'path';
import { Request, Response } from 'express';
import { PAGE_LINK } from '../../../constants';
export type ImagePosition = {
bottom?: number | string;
left?: number | string;
right?: number | string;
top?: number | string;
};
export type ImageType = {
alt?: string;
height?: number;
mobileHeight?: number;
mobilePosition?: ImagePosition;
mobileSrc?: string;
mobileWidth?: number;
position?: ImagePosition;
src: string;
width?: number;
};
const imageRootDir = 'static/images/title/';
const faqMobileImage = path.join(imageRootDir, 'faq/mobile.png');
const faqDesktopImage = path.join(imageRootDir, 'faq/desktop.png');
export const getTitleImage = (req: Request, res: Response<ImageType>) => {
// @ts-ignore
const { body } = req;
const { page } = body;
switch (page) {
case PAGE_LINK.FAQ: {
return res.status(200).json({
alt: 'faq',
height: 575,
mobileHeight: 704,
mobilePosition: {
left: -20,
top: -175,
},
mobileSrc: faqMobileImage,
mobileWidth: 385,
position: {
left: 75,
top: -160,
},
src: faqDesktopImage,
width: 1153,
});
}
default:
return res.status(404);
}
};

View File

@ -0,0 +1,9 @@
import express, { Request, Response } from 'express';
import { getTitleImage } from './controller';
const router = express.Router();
router.post('/', (req: Request, res: Response) => getTitleImage(req, res));
export default router;

View File

@ -1,16 +1,12 @@
import { Request, Response } from 'express'; import { Request, Response } from 'express';
import { PAGE_LINK } from '../../../constants'; import { PAGE_LINK } from '../../../constants';
const videoLink = 'https://www.youtube.com/watch?v=VqWkQCRsKD0'; const videoLink = 'https://www.youtube.com/watch?v=VqWkQCRsKD0';
type HomeInfo = {
video: string;
};
type ReturnInfoType = HomeInfo;
export const getInfo = (req: Request, res: Response) => { export const getInfo = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const body = req.body; const { body } = req;
const { page } = body; const { page } = body;
@ -21,5 +17,4 @@ export const getInfo = (req: Request, res: Response) => {
default: default:
return res.status(404); return res.status(404);
} }
};
}

View File

@ -1,10 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getInfo } from './controller'; import { getInfo } from './controller';
const router = express.Router() const router = express.Router();
router.post('/', (req: Request, res: Response) => { router.post('/', (req: Request, res: Response) => getInfo(req, res));
return getInfo(req, res);
})
export default router; export default router;

View File

@ -1,8 +1,10 @@
import { Request, Response } from 'express';
import * as path from 'path'; import * as path from 'path';
import { Request, Response } from 'express';
import { v4 as uuid } from 'uuid';
import { COLORS, ColorVariant } from '../../../constants'; import { COLORS, ColorVariant } from '../../../constants';
import { StoryType } from '../stories/controller'; import { StoryType } from '../stories/controller';
import {v4 as uuid} from 'uuid';
const imageRootDir = 'static/images/quests/'; const imageRootDir = 'static/images/quests/';
@ -13,11 +15,11 @@ const egerFeedbackMobileImage = path.join(imageRootDir, 'stories/eger/mobile/fee
const egerGalleryMobileImage = path.join(imageRootDir, 'stories/eger/mobile/gallery.png'); const egerGalleryMobileImage = path.join(imageRootDir, 'stories/eger/mobile/gallery.png');
const egerPlotMobileImage = path.join(imageRootDir, 'stories/eger/mobile/plot.png'); const egerPlotMobileImage = path.join(imageRootDir, 'stories/eger/mobile/plot.png');
const egerBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/eger/desktop/background.png') const egerBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/eger/desktop/background.png');
const egerBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/eger/mobile/background.png') const egerBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/eger/mobile/background.png');
const egerCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/eger-card.png') const egerCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/eger-card.png');
const egerCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/eger-card.png') const egerCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/eger-card.png');
const faraonFeedbackImage = path.join(imageRootDir, 'stories/faraon/desktop/feedback.png'); const faraonFeedbackImage = path.join(imageRootDir, 'stories/faraon/desktop/feedback.png');
const faraonGalleryImage = path.join(imageRootDir, 'stories/faraon/desktop/gallery.png'); const faraonGalleryImage = path.join(imageRootDir, 'stories/faraon/desktop/gallery.png');
@ -26,11 +28,11 @@ const faraonFeedbackMobileImage = path.join(imageRootDir, 'stories/faraon/mobile
const faraonGalleryMobileImage = path.join(imageRootDir, 'stories/faraon/mobile/gallery.png'); const faraonGalleryMobileImage = path.join(imageRootDir, 'stories/faraon/mobile/gallery.png');
const faraonPlotMobileImage = path.join(imageRootDir, 'stories/faraon/mobile/plot.png'); const faraonPlotMobileImage = path.join(imageRootDir, 'stories/faraon/mobile/plot.png');
const faraonBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/faraon/desktop/background.png') const faraonBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/faraon/desktop/background.png');
const faraonBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/faraon/mobile/background.png') const faraonBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/faraon/mobile/background.png');
const faraonCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/faraon-card.png') const faraonCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/faraon-card.png');
const faraonCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/faraon-card.png') const faraonCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/faraon-card.png');
const multFeedbackImage = path.join(imageRootDir, '/stories/mult/desktop/feedback.png'); const multFeedbackImage = path.join(imageRootDir, '/stories/mult/desktop/feedback.png');
const multGalleryImage = path.join(imageRootDir, '/stories/mult/desktop/gallery.png'); const multGalleryImage = path.join(imageRootDir, '/stories/mult/desktop/gallery.png');
@ -39,11 +41,11 @@ const multFeedbackMobileImage = path.join(imageRootDir, '/stories/mult/mobile/fe
const multGalleryMobileImage = path.join(imageRootDir, '/stories/mult/mobile/gallery.png'); const multGalleryMobileImage = path.join(imageRootDir, '/stories/mult/mobile/gallery.png');
const multPlotMobileImage = path.join(imageRootDir, '/stories/mult/mobile/plot.png'); const multPlotMobileImage = path.join(imageRootDir, '/stories/mult/mobile/plot.png');
const multBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/mult/desktop/background.png') const multBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/mult/desktop/background.png');
const multBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/mult/mobile/background.png') const multBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/mult/mobile/background.png');
const multCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/mult-card.png') const multCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/mult-card.png');
const multCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/mult-card.png') const multCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/mult-card.png');
export type QuestItemType = { export type QuestItemType = {
age: { age: {
@ -405,7 +407,7 @@ export const multQuest: QuestItemType = {
}; };
export const getOne = (req: Request, res: Response) => { export const getOne = (req: Request, res: Response) => {
const {id} = req.params; const { id } = req.params;
switch (id) { switch (id) {
case 'eger': case 'eger':
@ -420,13 +422,10 @@ export const getOne = (req: Request, res: Response) => {
default: default:
return res.status(404); return res.status(404);
} }
} };
export const getAll = (req: Request, res: Response) => res.status(200).json([
export const getAll = (req: Request, res: Response) => {
return res.status(200).json([
egerQuest, egerQuest,
faraonQuest, faraonQuest,
multQuest, multQuest,
]) ]);
}

View File

@ -1,14 +1,11 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getAll, getOne } from './controller'; import { getAll, getOne } from './controller';
const questRouter = express.Router() const questRouter = express.Router();
questRouter.get('/', (req: Request, res: Response) => { questRouter.get('/', (req: Request, res: Response) => getAll(req, res));
return getAll(req, res);
})
questRouter.get('/:id', (req: Request, res: Response) => { questRouter.get('/:id', (req: Request, res: Response) => getOne(req, res));
return getOne(req, res);
})
export default questRouter; export default questRouter;

View File

@ -1,5 +1,7 @@
import { Request, Response } from 'express';
import * as path from 'path'; import * as path from 'path';
import { Request, Response } from 'express';
import { PAGE_LINK, SERVICE } from '../../../constants'; import { PAGE_LINK, SERVICE } from '../../../constants';
const imageRootDir = 'static/images/rate/'; const imageRootDir = 'static/images/rate/';
@ -511,7 +513,7 @@ const outdoorsPageRate: RateItemType[] = [
export const getRate = (req: Request, res: Response) => { export const getRate = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const {page} = req.body; const { page } = req.body;
switch (page) { switch (page) {
case PAGE_LINK.BIRTHDAY: { case PAGE_LINK.BIRTHDAY: {
@ -529,4 +531,4 @@ export const getRate = (req: Request, res: Response) => {
default: default:
return res.status(404); return res.status(404);
} }
} };

View File

@ -1,10 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getRate } from './controller'; import { getRate } from './controller';
const rateRouter = express.Router() const rateRouter = express.Router();
rateRouter.post('/', (req: Request, res: Response) => { rateRouter.post('/', (req: Request, res: Response) => getRate(req, res));
return getRate(req, res);
})
export default rateRouter; export default rateRouter;

View File

@ -1,6 +1,8 @@
import { Request, Response } from 'express'; import { Request, Response } from 'express';
import { PAGE_LINK, SERVICE, servicesList, ServiceType } from '../../../constants';
import {
PAGE_LINK, SERVICE, servicesList, ServiceType,
} from '../../../constants';
const birthdayPageServices: ServiceType[] = [ const birthdayPageServices: ServiceType[] = [
servicesList[SERVICE.QUEST], servicesList[SERVICE.QUEST],
@ -42,9 +44,8 @@ const outdoorsPageServices: ServiceType[] = [
export const getServices = (req: Request, res: Response) => { export const getServices = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const {page} = req.body; const { page } = req.body;
// @ts-ignore
console.log('Body', req.body);
switch (page) { switch (page) {
case PAGE_LINK.BIRTHDAY: { case PAGE_LINK.BIRTHDAY: {
return res.status(200).json(birthdayPageServices); return res.status(200).json(birthdayPageServices);
@ -61,4 +62,4 @@ export const getServices = (req: Request, res: Response) => {
default: default:
return res.status(404); return res.status(404);
} }
} };

View File

@ -1,11 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import {
getServices } from './controller';
const router = express.Router() import { getServices } from './controller';
router.post('/', (req: Request, res: Response) => { const router = express.Router();
return getServices(req, res);
}) router.post('/', (req: Request, res: Response) => getServices(req, res));
export default router; export default router;

View File

@ -1,5 +1,7 @@
import { Request, Response } from 'express';
import * as path from 'path'; import * as path from 'path';
import { Request, Response } from 'express';
import { PAGE_LINK } from '../../../constants'; import { PAGE_LINK } from '../../../constants';
const imageRootDir = 'static/images/information/statistics'; const imageRootDir = 'static/images/information/statistics';
@ -37,6 +39,8 @@ const StarMobileImg = path.join(imageRootDir, 'mobile/star.png');
export type StatisticsItem = { export type StatisticsItem = {
img?: { img?: {
alt: string; alt: string;
height: number;
mobileHeight?: number;
mobilePosition?: { mobilePosition?: {
bottom?: number; bottom?: number;
left?: number; left?: number;
@ -44,6 +48,7 @@ export type StatisticsItem = {
top?: number; top?: number;
}; };
mobileSrc?: string; mobileSrc?: string;
mobileWidth?: number;
position?: { position?: {
bottom?: number; bottom?: number;
left?: number; left?: number;
@ -51,9 +56,6 @@ export type StatisticsItem = {
top?: number; top?: number;
}; };
src: string; src: string;
height: number;
mobileHeight?: number;
mobileWidth?: number;
width: number; width: number;
}; };
mobileOrder?: number; mobileOrder?: number;
@ -81,12 +83,13 @@ const birthdayItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'combo', alt: 'combo',
height: 90,
mobileHeight: 106,
mobilePosition: { mobilePosition: {
right: 12, right: 12,
top: -10, top: -10,
}, },
mobileSrc: RateMobileImg, mobileSrc: RateMobileImg,
mobileHeight: 106,
mobileWidth: 60, mobileWidth: 60,
position: { position: {
right: 22, right: 22,
@ -94,7 +97,6 @@ const birthdayItems: StatisticsItem[] = [
}, },
src: RateDesktopImg, src: RateDesktopImg,
width: 80, width: 80,
height: 90
}, },
size: { size: {
sm: 2, sm: 2,
@ -107,12 +109,13 @@ const birthdayItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'programs', alt: 'programs',
height: 96,
mobileHeight: 84,
mobilePosition: { mobilePosition: {
right: 10, right: 10,
top: -20, top: -20,
}, },
mobileSrc: ProgramsMobileImg, mobileSrc: ProgramsMobileImg,
mobileHeight: 84,
mobileWidth: 110, mobileWidth: 110,
position: { position: {
right: 0, right: 0,
@ -120,7 +123,6 @@ const birthdayItems: StatisticsItem[] = [
}, },
src: ProgramsDesktopImg, src: ProgramsDesktopImg,
width: 72, width: 72,
height: 96
}, },
size: { size: {
sm: 2, sm: 2,
@ -133,12 +135,13 @@ const birthdayItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'decor', alt: 'decor',
height: 80,
mobileHeight: 116,
mobilePosition: { mobilePosition: {
right: 10, right: 10,
top: 10, top: 10,
}, },
mobileSrc: DecorationMobileImg, mobileSrc: DecorationMobileImg,
mobileHeight: 116,
mobileWidth: 90, mobileWidth: 90,
position: { position: {
right: 35, right: 35,
@ -146,7 +149,6 @@ const birthdayItems: StatisticsItem[] = [
}, },
src: DecorationDesktopImg, src: DecorationDesktopImg,
width: 106, width: 106,
height: 80
}, },
size: { size: {
sm: 2, sm: 2,
@ -159,12 +161,13 @@ const birthdayItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 108,
mobilePosition: { mobilePosition: {
right: 26, right: 26,
top: -10, top: -10,
}, },
mobileSrc: KidsMobileImg, mobileSrc: KidsMobileImg,
mobileHeight: 108,
mobileWidth: 74, mobileWidth: 74,
position: { position: {
right: -10, right: -10,
@ -172,7 +175,6 @@ const birthdayItems: StatisticsItem[] = [
}, },
src: KidsDesktopImg, src: KidsDesktopImg,
width: 90, width: 90,
height: 94
}, },
mobileText: 'для детей разных возрастов', mobileText: 'для детей разных возрастов',
size: { size: {
@ -198,16 +200,16 @@ const homeItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'pinata', alt: 'pinata',
height: 120,
mobileHeight: 131,
mobilePosition: { mobilePosition: {
left: 37, left: 37,
top: -40, top: -40,
}, },
mobileSrc: PinataMobileImg, mobileSrc: PinataMobileImg,
mobileHeight: 131,
mobileWidth: 128, mobileWidth: 128,
src: PinataDesktopImg, src: PinataDesktopImg,
width: 123, width: 123,
height: 120
}, },
size: { size: {
sm: 2, sm: 2,
@ -220,12 +222,13 @@ const homeItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'star', alt: 'star',
height: 66,
mobileHeight: 112,
mobilePosition: { mobilePosition: {
right: 6, right: 6,
top: -20, top: -20,
}, },
mobileSrc: StarMobileImg, mobileSrc: StarMobileImg,
mobileHeight: 112,
mobileWidth: 112, mobileWidth: 112,
position: { position: {
right: 35, right: 35,
@ -233,7 +236,6 @@ const homeItems: StatisticsItem[] = [
}, },
src: StarDesktopImg, src: StarDesktopImg,
width: 66, width: 66,
height: 66
}, },
size: { size: {
sm: 2, sm: 2,
@ -246,12 +248,13 @@ const homeItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'like', alt: 'like',
height: 72,
mobileHeight: 89,
mobilePosition: { mobilePosition: {
right: 17, right: 17,
top: -14, top: -14,
}, },
mobileSrc: LikeMobileImg, mobileSrc: LikeMobileImg,
mobileHeight: 89,
mobileWidth: 87, mobileWidth: 87,
position: { position: {
right: 5, right: 5,
@ -259,7 +262,6 @@ const homeItems: StatisticsItem[] = [
}, },
src: LikeDesktopImg, src: LikeDesktopImg,
width: 76, width: 76,
height: 72
}, },
size: { size: {
sm: 2, sm: 2,
@ -272,15 +274,15 @@ const homeItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'cup', alt: 'cup',
height: 101,
mobileHeight: 131,
mobilePosition: { mobilePosition: {
right: 3, right: 3,
top: -29, top: -29,
}, },
mobileWidth: 131,
src: CupMobileImg, src: CupMobileImg,
height: 101,
width: 101, width: 101,
mobileHeight: 131,
mobileWidth: 131
}, },
size: { size: {
sm: 2, sm: 2,
@ -305,12 +307,13 @@ const graduationItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'combo', alt: 'combo',
height: 90,
mobileHeight: 106,
mobilePosition: { mobilePosition: {
left: 12, left: 12,
top: -10, top: -10,
}, },
mobileSrc: RateMobileImg, mobileSrc: RateMobileImg,
mobileHeight: 106,
mobileWidth: 60, mobileWidth: 60,
position: { position: {
right: 22, right: 22,
@ -318,7 +321,6 @@ const graduationItems: StatisticsItem[] = [
}, },
src: RateDesktopImg, src: RateDesktopImg,
width: 80, width: 80,
height: 90
}, },
size: { size: {
sm: 2, sm: 2,
@ -331,12 +333,13 @@ const graduationItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'diploma', alt: 'diploma',
height: 85,
mobileHeight: 90,
mobilePosition: { mobilePosition: {
right: 10, right: 10,
top: -10, top: -10,
}, },
mobileSrc: DiplomaMobileImg, mobileSrc: DiplomaMobileImg,
mobileHeight: 90,
mobileWidth: 100, mobileWidth: 100,
position: { position: {
right: 22, right: 22,
@ -344,7 +347,6 @@ const graduationItems: StatisticsItem[] = [
}, },
src: DiplomaDesktopImg, src: DiplomaDesktopImg,
width: 76, width: 76,
height: 85
}, },
size: { size: {
sm: 2, sm: 2,
@ -357,12 +359,13 @@ const graduationItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'decor', alt: 'decor',
height: 80,
mobileHeight: 116,
mobilePosition: { mobilePosition: {
right: 10, right: 10,
top: 10, top: 10,
}, },
mobileSrc: DecorationMobileImg, mobileSrc: DecorationMobileImg,
mobileHeight: 116,
mobileWidth: 90, mobileWidth: 90,
position: { position: {
right: 35, right: 35,
@ -370,7 +373,6 @@ const graduationItems: StatisticsItem[] = [
}, },
src: DecorationDesktopImg, src: DecorationDesktopImg,
width: 106, width: 106,
height: 80
}, },
size: { size: {
sm: 2, sm: 2,
@ -383,12 +385,13 @@ const graduationItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 108,
mobilePosition: { mobilePosition: {
right: 10, right: 10,
top: -10, top: -10,
}, },
mobileSrc: KidsMobileImg, mobileSrc: KidsMobileImg,
mobileHeight: 108,
mobileWidth: 74, mobileWidth: 74,
position: { position: {
right: -10, right: -10,
@ -396,7 +399,6 @@ const graduationItems: StatisticsItem[] = [
}, },
src: KidsDesktopImg, src: KidsDesktopImg,
width: 90, width: 90,
height: 94
}, },
size: { size: {
sm: 2, sm: 2,
@ -421,12 +423,13 @@ const outdoorsItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'combo', alt: 'combo',
height: 90,
mobileHeight: 106,
mobilePosition: { mobilePosition: {
left: 12, left: 12,
top: -10, top: -10,
}, },
mobileSrc: RateMobileImg, mobileSrc: RateMobileImg,
mobileHeight: 106,
mobileWidth: 60, mobileWidth: 60,
position: { position: {
right: 22, right: 22,
@ -434,7 +437,6 @@ const outdoorsItems: StatisticsItem[] = [
}, },
src: RateDesktopImg, src: RateDesktopImg,
width: 80, width: 80,
height: 90
}, },
size: { size: {
sm: 2, sm: 2,
@ -447,12 +449,13 @@ const outdoorsItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'programs', alt: 'programs',
height: 98,
mobileHeight: 116,
mobilePosition: { mobilePosition: {
right: 10, right: 10,
top: -10, top: -10,
}, },
mobileSrc: StatScooterMobileImg, mobileSrc: StatScooterMobileImg,
mobileHeight: 116,
mobileWidth: 114, mobileWidth: 114,
position: { position: {
right: 22, right: 22,
@ -460,7 +463,6 @@ const outdoorsItems: StatisticsItem[] = [
}, },
src: StatScooterDesktopImg, src: StatScooterDesktopImg,
width: 94, width: 94,
height: 98
}, },
size: { size: {
sm: 2, sm: 2,
@ -473,12 +475,13 @@ const outdoorsItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'decor', alt: 'decor',
height: 108,
mobileHeight: 76,
mobilePosition: { mobilePosition: {
right: 14, right: 14,
top: 10, top: 10,
}, },
mobileSrc: StatDecorMobileImg, mobileSrc: StatDecorMobileImg,
mobileHeight: 76,
mobileWidth: 136, mobileWidth: 136,
position: { position: {
right: 35, right: 35,
@ -486,7 +489,6 @@ const outdoorsItems: StatisticsItem[] = [
}, },
src: StatDecorDesktopImg, src: StatDecorDesktopImg,
width: 60, width: 60,
height: 108
}, },
size: { size: {
sm: 2, sm: 2,
@ -499,12 +501,13 @@ const outdoorsItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 108,
mobilePosition: { mobilePosition: {
left: 28, left: 28,
top: -10, top: -10,
}, },
mobileSrc: KidsMobileImg, mobileSrc: KidsMobileImg,
mobileHeight: 108,
mobileWidth: 74, mobileWidth: 74,
position: { position: {
right: -10, right: -10,
@ -512,7 +515,6 @@ const outdoorsItems: StatisticsItem[] = [
}, },
src: KidsDesktopImg, src: KidsDesktopImg,
width: 90, width: 90,
height: 94
}, },
size: { size: {
sm: 2, sm: 2,
@ -537,12 +539,13 @@ const egerQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 106,
mobilePosition: { mobilePosition: {
right: 15, right: 15,
top: -20, top: -20,
}, },
mobileSrc: Kids2MobileImg, mobileSrc: Kids2MobileImg,
mobileHeight: 106,
mobileWidth: 110, mobileWidth: 110,
position: { position: {
right: 22, right: 22,
@ -550,7 +553,6 @@ const egerQuestItems: StatisticsItem[] = [
}, },
src: KidsDesktopImg, src: KidsDesktopImg,
width: 90, width: 90,
height: 94
}, },
mobileOrder: 1, mobileOrder: 1,
order: 1, order: 1,
@ -565,12 +567,13 @@ const egerQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'programs', alt: 'programs',
height: 90,
mobileHeight: 116,
mobilePosition: { mobilePosition: {
right: -20, right: -20,
top: 5, top: 5,
}, },
mobileSrc: BooksMobileImg, mobileSrc: BooksMobileImg,
mobileHeight: 116,
mobileWidth: 122, mobileWidth: 122,
position: { position: {
right: 22, right: 22,
@ -578,7 +581,6 @@ const egerQuestItems: StatisticsItem[] = [
}, },
src: BooksDesktopImg, src: BooksDesktopImg,
width: 109, width: 109,
height: 90
}, },
mobileOrder: 4, mobileOrder: 4,
order: 2, order: 2,
@ -593,12 +595,13 @@ const egerQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'decor', alt: 'decor',
height: 94,
mobileHeight: 68,
mobilePosition: { mobilePosition: {
right: 14, right: 14,
top: 10, top: 10,
}, },
mobileSrc: MapMobileImg, mobileSrc: MapMobileImg,
mobileHeight: 68,
mobileWidth: 94, mobileWidth: 94,
position: { position: {
right: 35, right: 35,
@ -606,7 +609,6 @@ const egerQuestItems: StatisticsItem[] = [
}, },
src: MapDesktopImg, src: MapDesktopImg,
width: 69, width: 69,
height: 94
}, },
mobileOrder: 3, mobileOrder: 3,
order: 3, order: 3,
@ -621,12 +623,13 @@ const egerQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 64,
mobilePosition: { mobilePosition: {
right: 0, right: 0,
top: -15, top: -15,
}, },
mobileSrc: KeysMobileImg, mobileSrc: KeysMobileImg,
mobileHeight: 64,
mobileWidth: 94, mobileWidth: 94,
position: { position: {
right: 30, right: 30,
@ -634,7 +637,6 @@ const egerQuestItems: StatisticsItem[] = [
}, },
src: KeysDesktopImg, src: KeysDesktopImg,
width: 69, width: 69,
height: 94
}, },
mobileOrder: 2, mobileOrder: 2,
order: 4, order: 4,
@ -661,12 +663,13 @@ const faraonQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 106,
mobilePosition: { mobilePosition: {
right: 15, right: 15,
top: -20, top: -20,
}, },
mobileSrc: Kids2MobileImg, mobileSrc: Kids2MobileImg,
mobileHeight: 106,
mobileWidth: 110, mobileWidth: 110,
position: { position: {
right: 22, right: 22,
@ -674,7 +677,6 @@ const faraonQuestItems: StatisticsItem[] = [
}, },
src: KidsDesktopImg, src: KidsDesktopImg,
width: 90, width: 90,
height: 94
}, },
mobileOrder: 1, mobileOrder: 1,
order: 1, order: 1,
@ -689,12 +691,13 @@ const faraonQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'programs', alt: 'programs',
height: 90,
mobileHeight: 116,
mobilePosition: { mobilePosition: {
right: -20, right: -20,
top: 5, top: 5,
}, },
mobileSrc: BooksMobileImg, mobileSrc: BooksMobileImg,
mobileHeight: 116,
mobileWidth: 122, mobileWidth: 122,
position: { position: {
right: 22, right: 22,
@ -702,7 +705,6 @@ const faraonQuestItems: StatisticsItem[] = [
}, },
src: BooksDesktopImg, src: BooksDesktopImg,
width: 109, width: 109,
height: 90
}, },
mobileOrder: 4, mobileOrder: 4,
order: 2, order: 2,
@ -717,12 +719,13 @@ const faraonQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'decor', alt: 'decor',
height: 94,
mobileHeight: 68,
mobilePosition: { mobilePosition: {
right: 14, right: 14,
top: 10, top: 10,
}, },
mobileSrc: MapMobileImg, mobileSrc: MapMobileImg,
mobileHeight: 68,
mobileWidth: 94, mobileWidth: 94,
position: { position: {
right: 35, right: 35,
@ -730,7 +733,6 @@ const faraonQuestItems: StatisticsItem[] = [
}, },
src: MapDesktopImg, src: MapDesktopImg,
width: 69, width: 69,
height: 94
}, },
mobileOrder: 3, mobileOrder: 3,
order: 3, order: 3,
@ -745,12 +747,13 @@ const faraonQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 64,
mobilePosition: { mobilePosition: {
right: 0, right: 0,
top: -15, top: -15,
}, },
mobileSrc: KeysMobileImg, mobileSrc: KeysMobileImg,
mobileHeight: 64,
mobileWidth: 94, mobileWidth: 94,
position: { position: {
right: 30, right: 30,
@ -758,7 +761,6 @@ const faraonQuestItems: StatisticsItem[] = [
}, },
src: KeysDesktopImg, src: KeysDesktopImg,
width: 69, width: 69,
height: 94
}, },
mobileOrder: 2, mobileOrder: 2,
order: 4, order: 4,
@ -785,12 +787,13 @@ const multQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 106,
mobilePosition: { mobilePosition: {
right: 15, right: 15,
top: -20, top: -20,
}, },
mobileSrc: Kids2MobileImg, mobileSrc: Kids2MobileImg,
mobileHeight: 106,
mobileWidth: 110, mobileWidth: 110,
position: { position: {
right: 22, right: 22,
@ -798,7 +801,6 @@ const multQuestItems: StatisticsItem[] = [
}, },
src: KidsDesktopImg, src: KidsDesktopImg,
width: 90, width: 90,
height: 94
}, },
mobileOrder: 1, mobileOrder: 1,
order: 1, order: 1,
@ -813,12 +815,13 @@ const multQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'programs', alt: 'programs',
height: 90,
mobileHeight: 116,
mobilePosition: { mobilePosition: {
right: -20, right: -20,
top: 5, top: 5,
}, },
mobileSrc: BooksMobileImg, mobileSrc: BooksMobileImg,
mobileHeight: 116,
mobileWidth: 122, mobileWidth: 122,
position: { position: {
right: 22, right: 22,
@ -826,7 +829,6 @@ const multQuestItems: StatisticsItem[] = [
}, },
src: BooksDesktopImg, src: BooksDesktopImg,
width: 109, width: 109,
height: 90
}, },
mobileOrder: 4, mobileOrder: 4,
order: 2, order: 2,
@ -841,12 +843,13 @@ const multQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'decor', alt: 'decor',
height: 94,
mobileHeight: 68,
mobilePosition: { mobilePosition: {
right: 14, right: 14,
top: 10, top: 10,
}, },
mobileSrc: MapMobileImg, mobileSrc: MapMobileImg,
mobileHeight: 68,
mobileWidth: 94, mobileWidth: 94,
position: { position: {
right: 35, right: 35,
@ -854,7 +857,6 @@ const multQuestItems: StatisticsItem[] = [
}, },
src: MapDesktopImg, src: MapDesktopImg,
width: 69, width: 69,
height: 94
}, },
mobileOrder: 3, mobileOrder: 3,
order: 3, order: 3,
@ -869,12 +871,13 @@ const multQuestItems: StatisticsItem[] = [
{ {
img: { img: {
alt: 'kids', alt: 'kids',
height: 94,
mobileHeight: 64,
mobilePosition: { mobilePosition: {
right: 0, right: 0,
top: -15, top: -15,
}, },
mobileSrc: KeysMobileImg, mobileSrc: KeysMobileImg,
mobileHeight: 64,
mobileWidth: 94, mobileWidth: 94,
position: { position: {
right: 30, right: 30,
@ -882,7 +885,6 @@ const multQuestItems: StatisticsItem[] = [
}, },
src: KeysDesktopImg, src: KeysDesktopImg,
width: 69, width: 69,
height: 94
}, },
mobileOrder: 2, mobileOrder: 2,
order: 4, order: 4,
@ -898,7 +900,7 @@ const multQuestItems: StatisticsItem[] = [
export const getStatistics = (req: Request, res: Response) => { export const getStatistics = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const {page, id} = req.body; const { id, page } = req.body;
switch (page) { switch (page) {
case PAGE_LINK.BIRTHDAY: { case PAGE_LINK.BIRTHDAY: {
@ -936,4 +938,4 @@ export const getStatistics = (req: Request, res: Response) => {
default: default:
return res.status(404); return res.status(404);
} }
} };

View File

@ -1,10 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getStatistics } from './controller'; import { getStatistics } from './controller';
const statisticsRouter = express.Router() const statisticsRouter = express.Router();
statisticsRouter.post('/', (req: Request, res: Response) => { statisticsRouter.post('/', (req: Request, res: Response) => getStatistics(req, res));
return getStatistics(req, res);
})
export default statisticsRouter; export default statisticsRouter;

View File

@ -1,19 +1,21 @@
import { Request, Response } from 'express';
import * as path from 'path'; import * as path from 'path';
import { Request, Response } from 'express';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { PAGE_LINK } from '../../../constants'; import { PAGE_LINK } from '../../../constants';
const imageRootDir = 'static/images/stories/'; const imageRootDir = 'static/images/stories/';
const faqImage = path.join(imageRootDir, 'birthday/faq.png') const faqImage = path.join(imageRootDir, 'birthday/faq.png');
const faqMobileImage = path.join(imageRootDir, 'birthday/faq_mobile.png') const faqMobileImage = path.join(imageRootDir, 'birthday/faq_mobile.png');
const feedbackImage = path.join(imageRootDir, 'birthday/feedback.png') const feedbackImage = path.join(imageRootDir, 'birthday/feedback.png');
const feedbackMobileImage = path.join(imageRootDir, 'birthday/feedback_mobile.png') const feedbackMobileImage = path.join(imageRootDir, 'birthday/feedback_mobile.png');
const photoImage = path.join(imageRootDir, 'birthday/photo.png') const photoImage = path.join(imageRootDir, 'birthday/photo.png');
const photoMobileImage = path.join(imageRootDir, 'birthday/photo_mobile.png') const photoMobileImage = path.join(imageRootDir, 'birthday/photo_mobile.png');
const example = path.join(imageRootDir, 'example.png') const example = path.join(imageRootDir, 'example.png');
const example2 = path.join(imageRootDir, 'example2.jpg') const example2 = path.join(imageRootDir, 'example2.jpg');
export type StoryFeedbackModalType = {}; export type StoryFeedbackModalType = {};
export type StoryGalleryModalType = {}; export type StoryGalleryModalType = {};
@ -48,8 +50,6 @@ export type StoryType = {
title?: string; title?: string;
}; };
const birthdayPageStories: StoryType[] = [ const birthdayPageStories: StoryType[] = [
{ {
id: uuid(), id: uuid(),
@ -302,7 +302,7 @@ const homePageStories: StoryType[] = [
export const getStories = (req: Request, res: Response) => { export const getStories = (req: Request, res: Response) => {
// @ts-ignore // @ts-ignore
const {page} = req.body; const { page } = req.body;
switch (page) { switch (page) {
case PAGE_LINK.BIRTHDAY: { case PAGE_LINK.BIRTHDAY: {
@ -321,7 +321,11 @@ export const getStories = (req: Request, res: Response) => {
return res.status(200).json(homePageStories); return res.status(200).json(homePageStories);
} }
case PAGE_LINK.FAQ: {
return res.status(200).json([]);
}
default: default:
return res.status(404); return res.status(404);
} }
} };

View File

@ -1,10 +1,9 @@
import express, { Request, Response } from 'express'; import express, { Request, Response } from 'express';
import { getStories } from './controller'; import { getStories } from './controller';
const storiesRouter = express.Router() const storiesRouter = express.Router();
storiesRouter.post('/', (req: Request, res: Response) => { storiesRouter.post('/', (req: Request, res: Response) => getStories(req, res));
return getStories(req, res);
})
export default storiesRouter; export default storiesRouter;

View File

@ -1,4 +1,5 @@
import { Request, Response } from 'express'; import { Request, Response } from 'express';
import { PAGE_LINK, TextSection } from '../../../constants'; import { PAGE_LINK, TextSection } from '../../../constants';
const birthdayTitleText = { const birthdayTitleText = {
@ -26,6 +27,11 @@ const questsTitleText = {
title: 'Квесты', title: 'Квесты',
}; };
const faqTitleText = {
description: 'Раздел с подробной информацией по каждой услуге. Чтобы посмотреть ответы на вопросы, выберите интересующую Вас категорию',
title: 'Часто задаваемые вопросы',
};
const parkInfo = { const parkInfo = {
text: '-интерактивный парк нового поколения,\n' text: '-интерактивный парк нового поколения,\n'
+ ' объединяющий популярные услуги\n' + ' объединяющий популярные услуги\n'
@ -34,11 +40,8 @@ const parkInfo = {
}; };
export const getTitle = (req: Request, res: Response) => { export const getTitle = (req: Request, res: Response) => {
console.log('headers', req.headers);
// @ts-ignore // @ts-ignore
const body = req.body; const { body } = req;
console.log('body', body);
const { page, section } = body; const { page, section } = body;
switch (page) { switch (page) {
@ -92,7 +95,17 @@ export const getTitle = (req: Request, res: Response) => {
} }
} }
case PAGE_LINK.FAQ: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(faqTitleText);
default: default:
return res.status(404); return res.status(404);
} }
} }
default:
return res.status(404);
}
};

View File

@ -1,21 +1,16 @@
// const express = require('express')
import express, { NextFunction, Request, Response } from 'express'; import express, { NextFunction, Request, Response } from 'express';
import { getTitle } from './controller'; import { getTitle } from './controller';
const router = express.Router()
const router = express.Router();
// middleware that is specific to this router // middleware that is specific to this router
router.use((req: Request, res: Response, next: NextFunction) => { router.use((req: Request, res: Response, next: NextFunction) => {
console.log('Time: ', Date.now()) next();
next() });
})
router.get('/', (req: Request, res: Response) => { router.get('/', (req: Request, res: Response) => res.send('Api text GET response'));
return res.send('Api text GET response')
})
router.post('/', (req: Request, res: Response) => { router.post('/', (req: Request, res: Response) => getTitle(req, res));
return getTitle(req, res);
})
export default router; export default router;

View File

@ -85,6 +85,7 @@ export enum ApiRoute {
BREADCRUMBS = '/breadcrumbs', BREADCRUMBS = '/breadcrumbs',
FAQ = '/faq', FAQ = '/faq',
HALLS = '/halls', HALLS = '/halls',
IMAGE = '/image',
INFO = '/info', INFO = '/info',
QUESTS = '/quests', QUESTS = '/quests',
RATE = '/rate', RATE = '/rate',
@ -178,7 +179,6 @@ export const servicesList: { [k in SERVICE]: ServiceType } = {
}, },
}; };
export enum ColorVariant { export enum ColorVariant {
BLACK, BLACK,
BLACK_LIGHT, BLACK_LIGHT,
@ -203,22 +203,22 @@ type ColorType = {
[k in ColorVariant]: string; [k in ColorVariant]: string;
}; };
export const COLORS: ColorType = { export const COLORS: ColorType = {
[ColorVariant.BLACK]: "#000000", [ColorVariant.BLACK]: '#000000',
[ColorVariant.BLACK_LIGHT]: "#3C3C3C", [ColorVariant.BLACK_LIGHT]: '#3C3C3C',
[ColorVariant.GRADIENT_PERI]: "linear-gradient(120.58deg, #33CC99 7.16%, #9966FF 92.98%)", [ColorVariant.GRADIENT_PERI]: 'linear-gradient(120.58deg, #33CC99 7.16%, #9966FF 92.98%)',
[ColorVariant.GRADIENT_PERI2]: "linear-gradient(134.56deg, #6767AB 11.78%, #FF3399 84.81%)", [ColorVariant.GRADIENT_PERI2]: 'linear-gradient(134.56deg, #6767AB 11.78%, #FF3399 84.81%)',
[ColorVariant.GRADIENT_PERI3]: "linear-gradient(118.78deg, #9966FF 23.28%, #33CC99 97.07%)", [ColorVariant.GRADIENT_PERI3]: 'linear-gradient(118.78deg, #9966FF 23.28%, #33CC99 97.07%)',
[ColorVariant.GRADIENT_PERI4]: "linear-gradient(120.58deg, #968CE0 7.16%, #3748AA 92.98%)", [ColorVariant.GRADIENT_PERI4]: 'linear-gradient(120.58deg, #968CE0 7.16%, #3748AA 92.98%)',
[ColorVariant.GRADIENT_RED]: "linear-gradient(134.56deg, #FF5C00 11.78%, #FF3399 84.81%)", [ColorVariant.GRADIENT_RED]: 'linear-gradient(134.56deg, #FF5C00 11.78%, #FF3399 84.81%)',
[ColorVariant.GRADIENT_RED_DARK]: "linear-gradient(134.56deg, #FF5F04 11.78%, #FE007F 84.81%)", [ColorVariant.GRADIENT_RED_DARK]: 'linear-gradient(134.56deg, #FF5F04 11.78%, #FE007F 84.81%)',
[ColorVariant.GRADIENT_YELLOW]: "linear-gradient(154.56deg, #FDF041 -35.9%, #FBAB01 129.39%)", [ColorVariant.GRADIENT_YELLOW]: 'linear-gradient(154.56deg, #FDF041 -35.9%, #FBAB01 129.39%)',
[ColorVariant.GRADIENT_ORANGE]: "linear-gradient(135.23deg, #FFB76F 20.94%, #FB5858 75.76%)", [ColorVariant.GRADIENT_ORANGE]: 'linear-gradient(135.23deg, #FFB76F 20.94%, #FB5858 75.76%)',
[ColorVariant.GRADIENT_GREEN]: "linear-gradient(120.58deg, #E9CA26 12.53%, #33CC99 92.98%)", [ColorVariant.GRADIENT_GREEN]: 'linear-gradient(120.58deg, #E9CA26 12.53%, #33CC99 92.98%)',
[ColorVariant.GREEN]: "#15B555", [ColorVariant.GREEN]: '#15B555',
[ColorVariant.GREY]: "#F1F7FD", [ColorVariant.GREY]: '#F1F7FD',
[ColorVariant.ORANGE]: "#FFB76F", [ColorVariant.ORANGE]: '#FFB76F',
[ColorVariant.TRANSPARENT]: 'transparent', [ColorVariant.TRANSPARENT]: 'transparent',
[ColorVariant.VERI_PERI]: "#6767AB", [ColorVariant.VERI_PERI]: '#6767AB',
[ColorVariant.VERI_PERI_DARK]: "#5656A9", [ColorVariant.VERI_PERI_DARK]: '#5656A9',
[ColorVariant.WHITE]: "#FFFFFF", [ColorVariant.WHITE]: '#FFFFFF',
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More