completed the logic of the page PsychTest
This commit is contained in:
parent
67140144d7
commit
c313690e11
Binary file not shown.
|
@ -1,6 +1,7 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Apartament, Photo, User
|
from .models import Apartament, Photo, User, PsychTestAnswers
|
||||||
|
|
||||||
admin.site.register(Apartament)
|
admin.site.register(Apartament)
|
||||||
admin.site.register(Photo)
|
admin.site.register(Photo)
|
||||||
admin.site.register(User)
|
admin.site.register(User)
|
||||||
|
admin.site.register(PsychTestAnswers)
|
||||||
|
|
|
@ -115,7 +115,6 @@ class UserFactory(factory.django.DjangoModelFactory):
|
||||||
|
|
||||||
favorites_apartments = CSV(1, 100, 1, 16);
|
favorites_apartments = CSV(1, 100, 1, 16);
|
||||||
comparison_apartments = CSV(1, 100, 1, 5);
|
comparison_apartments = CSV(1, 100, 1, 5);
|
||||||
psych_test_result = Random(20, 90);
|
|
||||||
openid_addr = OpenID_Address();
|
openid_addr = OpenID_Address();
|
||||||
name = factory.faker.Faker('name');
|
name = factory.faker.Faker('name');
|
||||||
date_of_birth = Date(1980, 2006);
|
date_of_birth = Date(1980, 2006);
|
||||||
|
|
|
@ -16,9 +16,9 @@ class Migration(migrations.Migration):
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='User',
|
name='User',
|
||||||
fields=[
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('favorites_apartments', models.CharField(max_length=100, help_text="Избранные квартиры (CSV)")),
|
('favorites_apartments', models.CharField(max_length=100, help_text="Избранные квартиры (CSV)")),
|
||||||
('comparison_apartments', models.CharField(max_length=100, help_text="Квартиры для сравнения (CSV)")),
|
('comparison_apartments', models.CharField(max_length=100, help_text="Квартиры для сравнения (CSV)")),
|
||||||
('psych_test_result', models.IntegerField(validators=[MaxValueValidator(100)], null=True, help_text="Результат психологического теста")),
|
|
||||||
('openid_addr', models.CharField(max_length=1000, null=False, help_text='Адрес Open ID Connect (login@provider.com, для ВВГУ - login@vvsu.ru)')),
|
('openid_addr', models.CharField(max_length=1000, null=False, help_text='Адрес Open ID Connect (login@provider.com, для ВВГУ - login@vvsu.ru)')),
|
||||||
('name', models.CharField(max_length=256, help_text='ФИО Пользователя')),
|
('name', models.CharField(max_length=256, help_text='ФИО Пользователя')),
|
||||||
('date_of_birth', models.DateField(help_text='Дата рождения пользователя')),
|
('date_of_birth', models.DateField(help_text='Дата рождения пользователя')),
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
# Generated by Django 4.2.1 on 2023-05-15 14:41
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pairent_app', '0005_user'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='user',
|
||||||
|
options={'verbose_name': 'Пользователь', 'verbose_name_plural': 'Пользователи'},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='about_me',
|
||||||
|
field=models.CharField(max_length=1000, verbose_name='Поле "О Себе"'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='city',
|
||||||
|
field=models.CharField(max_length=1000, null=True, verbose_name='Город пользователя'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='comparison_apartments',
|
||||||
|
field=models.CharField(max_length=100, verbose_name='Квартиры для сравнения (CSV)'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='date_of_birth',
|
||||||
|
field=models.DateField(verbose_name='Дата рождения пользователя'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='discord',
|
||||||
|
field=models.CharField(max_length=1000, null=True, verbose_name='Дискорд ник пользователя'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='email',
|
||||||
|
field=models.CharField(max_length=1000, null=True, verbose_name='Почтовый ящик пользователя в формате user@example.com'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='favorites_apartments',
|
||||||
|
field=models.CharField(max_length=100, verbose_name='Избранные квартиры (CSV)'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='gender',
|
||||||
|
field=models.CharField(max_length=1, verbose_name='Пол пользователя (f,m,n,?)'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=256, verbose_name='ФИО Пользователя'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='openid_addr',
|
||||||
|
field=models.CharField(max_length=1000, verbose_name='Адрес Open ID Connect (login@provider.com, для ВВГУ - login@vvsu.ru)'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='phone',
|
||||||
|
field=models.CharField(max_length=30, null=True, verbose_name='Телефон пользователя в международном формате (+00000000)'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='role',
|
||||||
|
field=models.CharField(max_length=1, verbose_name='Роль пользователя (s - student, a - admin, m - moderator)'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='telegram',
|
||||||
|
field=models.CharField(max_length=1000, null=True, verbose_name='Телеграм пользователя'),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='PsychTestAnswers',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('first_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на первый вопрос')),
|
||||||
|
('second_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на второй вопрос')),
|
||||||
|
('third_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на третий вопрос')),
|
||||||
|
('fourth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на четвертый вопрос')),
|
||||||
|
('fifth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на пятый вопрос')),
|
||||||
|
('sixth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на шестой вопрос')),
|
||||||
|
('seventh_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на седьмой вопрос')),
|
||||||
|
('eighth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на восьмой вопрос')),
|
||||||
|
('nineth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на девятый вопрос')),
|
||||||
|
('tenth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на десятый вопрос')),
|
||||||
|
('eleventh_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на одиннадцатый вопрос')),
|
||||||
|
('twelfth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на двенадцатый вопрос')),
|
||||||
|
('thirteenth_question', models.IntegerField(validators=[django.core.validators.MaxValueValidator(5)], verbose_name='Ответ на тринадцатый вопрос')),
|
||||||
|
('users', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pairent_app.user', verbose_name='Пользователь')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Generated by Django 4.2.1 on 2023-05-15 15:23
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pairent_app', '0006_alter_user_options_alter_user_about_me_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='psychtestanswers',
|
||||||
|
options={'verbose_name': 'Ответ на психологический тест', 'verbose_name_plural': 'Ответы на психологический тест'},
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='psychtestanswers',
|
||||||
|
old_name='users',
|
||||||
|
new_name='user',
|
||||||
|
),
|
||||||
|
]
|
|
@ -85,7 +85,7 @@ class User(models.Model):
|
||||||
|
|
||||||
favorites_apartments = models.CharField(max_length=100, verbose_name="Избранные квартиры (CSV)")
|
favorites_apartments = models.CharField(max_length=100, verbose_name="Избранные квартиры (CSV)")
|
||||||
comparison_apartments = models.CharField(max_length=100, verbose_name="Квартиры для сравнения (CSV)")
|
comparison_apartments = models.CharField(max_length=100, verbose_name="Квартиры для сравнения (CSV)")
|
||||||
psych_test_result = models.IntegerField(validators=[MaxValueValidator(100)], null=True, verbose_name="Результат психологического теста")
|
|
||||||
openid_addr = models.CharField(max_length=1000, null=False, verbose_name='Адрес Open ID Connect (login@provider.com, для ВВГУ - login@vvsu.ru)')
|
openid_addr = models.CharField(max_length=1000, null=False, verbose_name='Адрес Open ID Connect (login@provider.com, для ВВГУ - login@vvsu.ru)')
|
||||||
name = models.CharField(max_length=256, verbose_name='ФИО Пользователя')
|
name = models.CharField(max_length=256, verbose_name='ФИО Пользователя')
|
||||||
date_of_birth = models.DateField(verbose_name='Дата рождения пользователя')
|
date_of_birth = models.DateField(verbose_name='Дата рождения пользователя')
|
||||||
|
@ -104,4 +104,26 @@ class User(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Пользователь"
|
verbose_name = "Пользователь"
|
||||||
verbose_name_plural = "Пользователи"
|
verbose_name_plural = "Пользователи"
|
||||||
|
|
||||||
|
|
||||||
|
class PsychTestAnswers(models.Model):
|
||||||
|
"""Модель ответов на психологический тест"""
|
||||||
|
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Пользователь")
|
||||||
|
first_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на первый вопрос")
|
||||||
|
second_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на второй вопрос")
|
||||||
|
third_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на третий вопрос")
|
||||||
|
fourth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на четвертый вопрос")
|
||||||
|
fifth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на пятый вопрос")
|
||||||
|
sixth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на шестой вопрос")
|
||||||
|
seventh_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на седьмой вопрос")
|
||||||
|
eighth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на восьмой вопрос")
|
||||||
|
nineth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на девятый вопрос")
|
||||||
|
tenth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на десятый вопрос")
|
||||||
|
eleventh_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на одиннадцатый вопрос")
|
||||||
|
twelfth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на двенадцатый вопрос")
|
||||||
|
thirteenth_question = models.IntegerField(validators=[MaxValueValidator(5)], verbose_name="Ответ на тринадцатый вопрос")
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = "Ответ на психологический тест"
|
||||||
|
verbose_name_plural = "Ответы на психологический тест"
|
|
@ -10,7 +10,7 @@ urlpatterns = format_suffix_patterns([
|
||||||
path("apartaments/comparison/", views.ApartamentGetManyViewSet.as_view({'get': 'retrieve'})), # пример: apartaments/comparison/?user_id=1 user_id - id пользователя
|
path("apartaments/comparison/", views.ApartamentGetManyViewSet.as_view({'get': 'retrieve'})), # пример: apartaments/comparison/?user_id=1 user_id - id пользователя
|
||||||
path("apartaments/favorite/", views.ApartamentGetManyViewSet.as_view({'get': 'list'})), # пример: apartaments/favorite/?user_id=1 user_id - id пользователя
|
path("apartaments/favorite/", views.ApartamentGetManyViewSet.as_view({'get': 'list'})), # пример: apartaments/favorite/?user_id=1 user_id - id пользователя
|
||||||
path("apartaments/filters/", views.ApartmentFilter.as_view({'post': 'list'})),
|
path("apartaments/filters/", views.ApartmentFilter.as_view({'post': 'list'})),
|
||||||
path("psych_test/add_result/<int:pk>", views.PsychTestAddResultViewSet.as_view({'patch': 'update'})), # пример: psych_test/add_result/1/?result=50 result - результат псих теста пользователя
|
path("psych_test/add_result/<int:pk>", views.PsychTestAddResultViewSet.as_view({'post': 'create'})), # пример: psych_test/add_result/1/?result=50 result - результат псих теста пользователя
|
||||||
path("users/get_compatible", views.CompatibleUsersView.as_view({'post': 'list'})),
|
path("users/get_compatible", views.CompatibleUsersView.as_view({'post': 'list'})),
|
||||||
re_path(r'^auth/vvsu/', views.VVSUAuthProxy),
|
re_path(r'^auth/vvsu/', views.VVSUAuthProxy),
|
||||||
])
|
])
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.db.models.query import QuerySet
|
||||||
from django.core.validators import validate_email
|
from django.core.validators import validate_email
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
from .models import Apartament, User
|
from .models import Apartament, User, PsychTestAnswers
|
||||||
from .serializer import (ApartamentListSerializer,
|
from .serializer import (ApartamentListSerializer,
|
||||||
ApartamentDetailSerializer,
|
ApartamentDetailSerializer,
|
||||||
PsychTestAddResultSerializer,
|
PsychTestAddResultSerializer,
|
||||||
|
@ -30,6 +30,7 @@ class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
elif self.action == "retrieve":
|
elif self.action == "retrieve":
|
||||||
return ApartamentDetailSerializer
|
return ApartamentDetailSerializer
|
||||||
|
|
||||||
|
|
||||||
class ApartamentGetManyViewSet(viewsets.ReadOnlyModelViewSet):
|
class ApartamentGetManyViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
"""Вывод отдельных квартир для сравнения"""
|
"""Вывод отдельных квартир для сравнения"""
|
||||||
def get_queryset(self): # получение id квартир для избранного или сравнения
|
def get_queryset(self): # получение id квартир для избранного или сравнения
|
||||||
|
@ -60,6 +61,7 @@ class ApartamentGetManyViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
apartaments.append(ApartamentListSerializer(i).data)
|
apartaments.append(ApartamentListSerializer(i).data)
|
||||||
return Response({'results': apartaments})
|
return Response({'results': apartaments})
|
||||||
|
|
||||||
|
|
||||||
class ApartmentFilter(viewsets.ViewSet):
|
class ApartmentFilter(viewsets.ViewSet):
|
||||||
"""Вывод списка квартир или отдельной квартиры"""
|
"""Вывод списка квартир или отдельной квартиры"""
|
||||||
|
|
||||||
|
@ -90,12 +92,28 @@ class ApartmentFilter(viewsets.ViewSet):
|
||||||
|
|
||||||
class PsychTestAddResultViewSet(viewsets.ViewSet):
|
class PsychTestAddResultViewSet(viewsets.ViewSet):
|
||||||
def get_object(self, pk):
|
def get_object(self, pk):
|
||||||
return User.objects.filter(pk=pk)
|
return User.objects.get(pk=pk)
|
||||||
def update(self, request, pk):
|
def create(self, request, pk):
|
||||||
user = self.get_object(pk)
|
user = self.get_object(pk)
|
||||||
result = request.query_params.get("result", None)
|
results = request.data
|
||||||
user.update(psych_test_result=result)
|
PsychTestAnswers.objects.create(
|
||||||
return Response(PsychTestAddResultSerializer(User.objects.get(pk=pk)).data)
|
user=user,
|
||||||
|
first_question=results['first'],
|
||||||
|
second_question=results['second'],
|
||||||
|
third_question=results['third'],
|
||||||
|
fourth_question=results['fourth'],
|
||||||
|
fifth_question=results['fifth'],
|
||||||
|
sixth_question=results['sixth'],
|
||||||
|
seventh_question=results['seventh'],
|
||||||
|
eighth_question=results['eighth'],
|
||||||
|
nineth_question=results['nineth'],
|
||||||
|
tenth_question=results['tenth'],
|
||||||
|
eleventh_question=results['eleventh'],
|
||||||
|
twelfth_question=results['twelfth'],
|
||||||
|
thirteenth_question=results['thirteenth']
|
||||||
|
)
|
||||||
|
return Response({'successfully': 'results post'})
|
||||||
|
|
||||||
|
|
||||||
class CompatibleUsersView(viewsets.ViewSet):
|
class CompatibleUsersView(viewsets.ViewSet):
|
||||||
def list(self, req: Request):
|
def list(self, req: Request):
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"bootstrap-icons": "^1.10.5",
|
"bootstrap-icons": "^1.10.5",
|
||||||
"font-awesome": "^4.7.0",
|
"font-awesome": "^4.7.0",
|
||||||
"formik": "^2.2.9",
|
"formik": "^2.2.9",
|
||||||
|
"oidc-client-ts": "^2.2.3",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-awesome-slider": "^4.1.0",
|
"react-awesome-slider": "^4.1.0",
|
||||||
"react-bootstrap": "^2.7.4",
|
"react-bootstrap": "^2.7.4",
|
||||||
|
|
|
@ -1,26 +1,28 @@
|
||||||
import axios from 'axios';
|
import axios from "axios";
|
||||||
import constants from '../constants';
|
import constants from "../constants";
|
||||||
|
|
||||||
const { API_ROOT } = constants;
|
const { API_ROOT } = constants;
|
||||||
|
|
||||||
export default class ApartamentService {
|
export default class ApartamentService {
|
||||||
static async getAll(limit, offest) {
|
static async getAll(limit, offest) {
|
||||||
const response = await axios.get(API_ROOT + '/api/apartaments/', {
|
const response = await axios.get(API_ROOT + "/api/apartaments/", {
|
||||||
params: {
|
params: {
|
||||||
limit: limit,
|
limit: limit,
|
||||||
...(offest !== 0 ? {offset: offest} : {})
|
...(offest !== 0 ? { offset: offest } : {}),
|
||||||
}
|
},
|
||||||
})
|
});
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
static async getById(id) {
|
static async getById(id) {
|
||||||
const response = await axios.get(API_ROOT + '/api/apartament/' + id + '/')
|
const response = await axios.get(
|
||||||
|
API_ROOT + "/api/apartament/" + id + "/"
|
||||||
|
);
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
static async getComparisons() {
|
static async getComparisons() {
|
||||||
const response = await axios.get(API_ROOT + '/api/comparison/')
|
const response = await axios.get(API_ROOT + "/api/comparison/");
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
import axios from "axios";
|
||||||
|
import constants from "../constants";
|
||||||
|
|
||||||
|
const { API_ROOT } = constants;
|
||||||
|
|
||||||
|
export default class PsychTestAddResult {
|
||||||
|
static async addById(id, answers) {
|
||||||
|
const data = await axios.post(
|
||||||
|
API_ROOT + "/api/psych_test/add_result/" + id,
|
||||||
|
answers
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,14 +1,27 @@
|
||||||
import PsychTestQuestion from "../../components/PsychTestQuestion";
|
import PsychTestQuestion from "../../components/PsychTestQuestion";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
|
import PsychTestAddResult from "../../API/PsychTestAddResult";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
const PsychTest = () => {
|
const PsychTest = () => {
|
||||||
|
const navigate = useNavigate();
|
||||||
const [answers, setAnswers] = useState({
|
const [answers, setAnswers] = useState({
|
||||||
first: 0,
|
first: 0,
|
||||||
second: 0,
|
second: 0,
|
||||||
third: 0,
|
third: 0,
|
||||||
|
fourth: 0,
|
||||||
|
fifth: 0,
|
||||||
|
sixth: 0,
|
||||||
|
seventh: 0,
|
||||||
|
eighth: 0,
|
||||||
|
nineth: 0,
|
||||||
|
tenth: 0,
|
||||||
|
eleventh: 0,
|
||||||
|
twelfth: 0,
|
||||||
|
thirteenth: 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Может как-то изменить, а то я сидел и тупил
|
// TODO: Может как-то изменить, а то я сидел и тупил только не ругайте
|
||||||
const answerChangeHandler = (answer, account) => {
|
const answerChangeHandler = (answer, account) => {
|
||||||
if (account == "first") {
|
if (account == "first") {
|
||||||
setAnswers((previous) => ({
|
setAnswers((previous) => ({
|
||||||
|
@ -25,12 +38,64 @@ const PsychTest = () => {
|
||||||
...previous,
|
...previous,
|
||||||
third: answer,
|
third: answer,
|
||||||
}));
|
}));
|
||||||
|
} else if (account == "fourth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
fourth: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "fifth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
fifth: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "sixth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
sixth: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "seventh") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
seventh: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "eight") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
eight: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "nineth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
nineth: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "tenth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
tenth: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "eleventh") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
eleventh: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "twelfth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
twelfth: answer,
|
||||||
|
}));
|
||||||
|
} else if (account == "thirteenth") {
|
||||||
|
setAnswers((previous) => ({
|
||||||
|
...previous,
|
||||||
|
thirteenth: answer,
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const submitHandler = (event) => {
|
const submitHandler = async (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
console.log(answers);
|
const result = await PsychTestAddResult.addById(1, answers); // 1 - это id пользователя
|
||||||
|
console.log(result);
|
||||||
|
navigate("/");
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -52,6 +117,56 @@ const PsychTest = () => {
|
||||||
account="third"
|
account="third"
|
||||||
onChangeAnswer={answerChangeHandler}
|
onChangeAnswer={answerChangeHandler}
|
||||||
/>
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 4"
|
||||||
|
account="fourth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 5"
|
||||||
|
account="fifth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 6"
|
||||||
|
account="sixth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 7"
|
||||||
|
account="seventh"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 8"
|
||||||
|
account="eighth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 9"
|
||||||
|
account="nineth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 10"
|
||||||
|
account="tenth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 11"
|
||||||
|
account="eleventh"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 12"
|
||||||
|
account="twelfth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
|
<PsychTestQuestion
|
||||||
|
name="Название вопроса 13"
|
||||||
|
account="thirteenth"
|
||||||
|
onChangeAnswer={answerChangeHandler}
|
||||||
|
/>
|
||||||
<button type="submit">Отправить</button>
|
<button type="submit">Отправить</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -994,7 +994,6 @@
|
||||||
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
|
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
|
||||||
|
|
||||||
"@babel/runtime@^7.12.5", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
|
"@babel/runtime@^7.12.5", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
|
||||||
|
|
||||||
version "7.21.5"
|
version "7.21.5"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
|
||||||
integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
|
integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
|
||||||
|
@ -1443,7 +1442,6 @@
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react@*", "@types/react@>=16.9.11":
|
"@types/react@*", "@types/react@>=16.9.11":
|
||||||
|
|
||||||
version "18.2.6"
|
version "18.2.6"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571"
|
||||||
integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==
|
integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==
|
||||||
|
@ -1756,7 +1754,6 @@ ci-info@^3.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
|
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
|
||||||
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
|
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
|
||||||
|
|
||||||
|
|
||||||
classnames@^2.3.2:
|
classnames@^2.3.2:
|
||||||
version "2.3.2"
|
version "2.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
|
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
|
||||||
|
@ -3122,7 +3119,6 @@ pretty-format@^29.0.0, pretty-format@^29.5.0:
|
||||||
ansi-styles "^5.0.0"
|
ansi-styles "^5.0.0"
|
||||||
react-is "^18.0.0"
|
react-is "^18.0.0"
|
||||||
|
|
||||||
|
|
||||||
prop-types-extra@^1.1.0:
|
prop-types-extra@^1.1.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b"
|
resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b"
|
||||||
|
@ -3132,7 +3128,6 @@ prop-types-extra@^1.1.0:
|
||||||
warning "^4.0.0"
|
warning "^4.0.0"
|
||||||
|
|
||||||
prop-types@^15.6.2, prop-types@^15.8.1:
|
prop-types@^15.6.2, prop-types@^15.8.1:
|
||||||
|
|
||||||
version "15.8.1"
|
version "15.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
|
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
|
||||||
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
||||||
|
|
Loading…
Reference in New Issue