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": {
"@types/cors": "2.8.13",
"@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": {
"dev": "nodemon 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: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",

View File

@ -1,29 +1,31 @@
import express, { Router } from 'express';
import express from 'express';
import { ApiRoute } from '../constants';
import breadcrumbsRouter from './routes/breadcrumbs';
import faqRouter from './routes/faq';
import hallsRouter from './routes/halls';
import imageRouter from './routes/image';
import infoRouter from './routes/info';
import questRouter from './routes/quests';
import rateRouter from './routes/rate';
import servicesRouter from './routes/services';
import statisticsRouter from './routes/statistic';
import storiesRouter from './routes/stories';
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()
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)
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.IMAGE, imageRouter);
export default apiRouter;

View File

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

View File

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

View File

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

View File

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

View File

@ -1,9 +1,9 @@
import express, { Request, Response } from 'express';
import { getHalls } from './controller';
const hallsRouter = express.Router()
hallsRouter.get('/', (req: Request, res: Response) => {
return getHalls(req, res)
})
import { getHalls } from './controller';
const hallsRouter = express.Router();
hallsRouter.get('/', (req: Request, res: Response) => getHalls(req, res));
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 { PAGE_LINK } from '../../../constants';
const videoLink = 'https://www.youtube.com/watch?v=VqWkQCRsKD0';
type HomeInfo = {
video: string;
};
type ReturnInfoType = HomeInfo;
export const getInfo = (req: Request, res: Response) => {
// @ts-ignore
const body = req.body;
const { body } = req;
const { page } = body;
@ -21,5 +17,4 @@ export const getInfo = (req: Request, res: Response) => {
default:
return res.status(404);
}
}
};

View File

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

View File

@ -1,8 +1,10 @@
import { Request, Response } from 'express';
import * as path from 'path';
import { Request, Response } from 'express';
import { v4 as uuid } from 'uuid';
import { COLORS, ColorVariant } from '../../../constants';
import { StoryType } from '../stories/controller';
import {v4 as uuid} from 'uuid';
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 egerPlotMobileImage = path.join(imageRootDir, 'stories/eger/mobile/plot.png');
const egerBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/eger/desktop/background.png')
const egerBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/eger/mobile/background.png')
const egerBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/eger/desktop/background.png');
const egerBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/eger/mobile/background.png');
const egerCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/eger-card.png')
const egerCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/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 faraonFeedbackImage = path.join(imageRootDir, 'stories/faraon/desktop/feedback.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 faraonPlotMobileImage = path.join(imageRootDir, 'stories/faraon/mobile/plot.png');
const faraonBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/faraon/desktop/background.png')
const faraonBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/faraon/mobile/background.png')
const faraonBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/faraon/desktop/background.png');
const faraonBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/faraon/mobile/background.png');
const faraonCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/faraon-card.png')
const faraonCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/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 multFeedbackImage = path.join(imageRootDir, '/stories/mult/desktop/feedback.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 multPlotMobileImage = path.join(imageRootDir, '/stories/mult/mobile/plot.png');
const multBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/mult/desktop/background.png')
const multBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/mult/mobile/background.png')
const multBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/mult/desktop/background.png');
const multBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/mult/mobile/background.png');
const multCardBackgroundDesktopImage = path.join(imageRootDir, '/backgrounds/main/desktop/mult-card.png')
const multCardBackgroundMobileImage = path.join(imageRootDir, '/backgrounds/main/mobile/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');
export type QuestItemType = {
age: {
@ -405,7 +407,7 @@ export const multQuest: QuestItemType = {
};
export const getOne = (req: Request, res: Response) => {
const {id} = req.params;
const { id } = req.params;
switch (id) {
case 'eger':
@ -420,13 +422,10 @@ export const getOne = (req: Request, res: Response) => {
default:
return res.status(404);
}
}
};
export const getAll = (req: Request, res: Response) => {
return res.status(200).json([
egerQuest,
faraonQuest,
multQuest,
])
}
export const getAll = (req: Request, res: Response) => res.status(200).json([
egerQuest,
faraonQuest,
multQuest,
]);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,5 @@
import { Request, Response } from 'express';
import { PAGE_LINK, TextSection } from '../../../constants';
const birthdayTitleText = {
@ -26,6 +27,11 @@ const questsTitleText = {
title: 'Квесты',
};
const faqTitleText = {
description: 'Раздел с подробной информацией по каждой услуге. Чтобы посмотреть ответы на вопросы, выберите интересующую Вас категорию',
title: 'Часто задаваемые вопросы',
};
const parkInfo = {
text: '-интерактивный парк нового поколения,\n'
+ ' объединяющий популярные услуги\n'
@ -34,11 +40,8 @@ const parkInfo = {
};
export const getTitle = (req: Request, res: Response) => {
console.log('headers', req.headers);
// @ts-ignore
const body = req.body;
console.log('body', body);
const { body } = req;
const { page, section } = body;
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:
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 { getTitle } from './controller';
const router = express.Router()
const router = express.Router();
// middleware that is specific to this router
router.use((req: Request, res: Response, next: NextFunction) => {
console.log('Time: ', Date.now())
next()
})
next();
});
router.get('/', (req: Request, res: Response) => {
return res.send('Api text GET response')
})
router.get('/', (req: Request, res: Response) => res.send('Api text GET response'));
router.post('/', (req: Request, res: Response) => {
return getTitle(req, res);
})
router.post('/', (req: Request, res: Response) => getTitle(req, res));
export default router;

View File

@ -85,6 +85,7 @@ export enum ApiRoute {
BREADCRUMBS = '/breadcrumbs',
FAQ = '/faq',
HALLS = '/halls',
IMAGE = '/image',
INFO = '/info',
QUESTS = '/quests',
RATE = '/rate',
@ -178,7 +179,6 @@ export const servicesList: { [k in SERVICE]: ServiceType } = {
},
};
export enum ColorVariant {
BLACK,
BLACK_LIGHT,
@ -203,22 +203,22 @@ type ColorType = {
[k in ColorVariant]: string;
};
export const COLORS: ColorType = {
[ColorVariant.BLACK]: "#000000",
[ColorVariant.BLACK_LIGHT]: "#3C3C3C",
[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_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_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_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_GREEN]: "linear-gradient(120.58deg, #E9CA26 12.53%, #33CC99 92.98%)",
[ColorVariant.GREEN]: "#15B555",
[ColorVariant.GREY]: "#F1F7FD",
[ColorVariant.ORANGE]: "#FFB76F",
[ColorVariant.BLACK]: '#000000',
[ColorVariant.BLACK_LIGHT]: '#3C3C3C',
[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_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_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_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_GREEN]: 'linear-gradient(120.58deg, #E9CA26 12.53%, #33CC99 92.98%)',
[ColorVariant.GREEN]: '#15B555',
[ColorVariant.GREY]: '#F1F7FD',
[ColorVariant.ORANGE]: '#FFB76F',
[ColorVariant.TRANSPARENT]: 'transparent',
[ColorVariant.VERI_PERI]: "#6767AB",
[ColorVariant.VERI_PERI_DARK]: "#5656A9",
[ColorVariant.WHITE]: "#FFFFFF",
[ColorVariant.VERI_PERI]: '#6767AB',
[ColorVariant.VERI_PERI_DARK]: '#5656A9',
[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