modified: components/LoadingTeamsForm.tsx

modified:   components/RegistrationForm.tsx
	new file:   components/UX/SelectNominations.tsx
	modified:   components/UX/index.ts
	modified:   pages/api/loadingLegisteredCommands.ts
	modified:   pages/api/registration.ts
	modified:   pages/registration.tsx
	modified:   posts/regulations.mdx
	modified:   redux/user/types.ts
master
joker 3 years ago
parent 2a24949485
commit c254586222
  1. 6
      components/LoadingTeamsForm.tsx
  2. 14
      components/RegistrationForm.tsx
  3. 31
      components/UX/SelectNominations.tsx
  4. 3
      components/UX/index.ts
  5. 2
      pages/api/loadingLegisteredCommands.ts
  6. 2
      pages/api/registration.ts
  7. 5
      pages/registration.tsx
  8. 9
      posts/regulations.mdx
  9. 1
      redux/user/types.ts

@ -7,6 +7,7 @@ type UserProps = {
name_first_participant: string; name_first_participant: string;
name_second_participant: string; name_second_participant: string;
name_third_party: string; name_third_party: string;
nominations: string;
classTeam: string[]; classTeam: string[];
}; };
@ -17,6 +18,7 @@ export const LoadingTeamsForm : React.FC<UserProps> = ({
name_first_participant, name_first_participant,
name_second_participant, name_second_participant,
name_third_party, name_third_party,
nominations,
classTeam classTeam
}) => { }) => {
@ -45,6 +47,10 @@ export const LoadingTeamsForm : React.FC<UserProps> = ({
<td className="px-6 py-4"> <td className="px-6 py-4">
{ flatten(classTeam)} { flatten(classTeam)}
</td> </td>
<td className="px-6 py-4">
{ nominations}
</td>
</tr> </tr>
); );
}; };

@ -1,11 +1,11 @@
import React,{useRef} from 'react'; import React,{useRef} from 'react';
import { useForm, SubmitHandler, FormProvider } from "react-hook-form"; import { useForm, SubmitHandler, FormProvider } from "react-hook-form";
import { Select, Input, Link } from "./UX"; import { Select, Input, Link, SelectNominations } from "./UX";
interface IFormInputs { interface IFormInputs {
name_team_coach: string, name_team_coach: string,
coach_telefon_number: string, coach_telefon_number: string,
email_address: string, nominations: string,
city_team: string, city_team: string,
training_institution_team: string, training_institution_team: string,
team_name: string, team_name: string,
@ -21,7 +21,7 @@ interface IFormInputs {
const defaultValues = { const defaultValues = {
name_team_coach: ``, name_team_coach: ``,
coach_telefon_number: ``, coach_telefon_number: ``,
email_address: '', nominations: 0,
city_team: '', city_team: '',
training_institution_team: '', training_institution_team: '',
team_name: '', team_name: '',
@ -73,10 +73,6 @@ export const RegistrationForm = (props): JSX.Element => {
<Input placeholder="+79181234567" name="coach_telefon_number" text="Номер телефона тренера" additional={"valueAsNumber: true"} /> <Input placeholder="+79181234567" name="coach_telefon_number" text="Номер телефона тренера" additional={"valueAsNumber: true"} />
</div> </div>
<div className="col-span-6 sm:col-span-3">
<Input placeholder="you@example.com" name="email_address" text="Email тренера" additional={`pattern: /^(([^<>()[]\\.,;:s@"]+(.[^<>()[]\\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/ })`} />
</div>
<div className="col-span-6 sm:col-span-3"> <div className="col-span-6 sm:col-span-3">
<Input placeholder="Краснодар" name="city_team" text="Город команда" additional={""} /> <Input placeholder="Краснодар" name="city_team" text="Город команда" additional={""} />
</div> </div>
@ -89,6 +85,10 @@ export const RegistrationForm = (props): JSX.Element => {
<Input placeholder="Фиксики" name="team_name" text="Название команды" additional={""} /> <Input placeholder="Фиксики" name="team_name" text="Название команды" additional={""} />
</div> </div>
<div className="col-span-6 sm:col-span-3">
<SelectNominations text={'Номинация'} name={'nominations'}/>
</div>
<div className="col-span-6 sm:col-span-3"> <div className="col-span-6 sm:col-span-3">
<Input placeholder="Иванов Иван Иванович" name="name_first_participant" text="ФИО первого участника" additional={""} /> <Input placeholder="Иванов Иван Иванович" name="name_first_participant" text="ФИО первого участника" additional={""} />
</div> </div>

@ -0,0 +1,31 @@
import React from 'react';
//import { useFormContext } from "react-hook-form";
import { useFormContext } from "react-hook-form";
type Props = {
text: string;
name: string;
children?: JSX.Element[] | JSX.Element;
}
export const SelectNominations: React.FC<Props> = ({text, name}) => {
const { register } = useFormContext();
return(
<>
<label htmlFor="country" className="block text-sm font-medium text-gray-700">
{text}
</label>
<select
{...register(name)} // ...register("first_partial_class")
name={name}
defaultValue={0}
className="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
>
<option value={0}>-- Выбрать --</option>
<option >Cлалом</option>
<option >Шорт-Трек</option>
</select>
</>
)
}

@ -1,4 +1,5 @@
export * from './Select' export * from './Select'
export * from './Alert' export * from './Alert'
export * from './Input' export * from './Input'
export * from './Link' export * from './Link'
export * from './SelectNominations'

@ -1,6 +1,6 @@
import Select from "../../server/db/select"; import Select from "../../server/db/select";
const sql = "SELECT team_name, training_institution_team, name_team_coach, name_first_participant, name_second_participant, name_third_party, concat(first_partial_class,',',second_class,',',third_part_class) as classTeam, reg_time_add FROM members WHERE 1 ORDER BY reg_time_add DESC"; const sql = "SELECT team_name, training_institution_team, name_team_coach, nominations, name_first_participant, name_second_participant, name_third_party, concat(first_partial_class,',',second_class,',',third_part_class) as classTeam, reg_time_add FROM members WHERE 1 ORDER BY reg_time_add DESC";
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export default function handler(req, res) { export default function handler(req, res) {

@ -1,7 +1,7 @@
import type { NextApiRequest, NextApiResponse } from 'next' import type { NextApiRequest, NextApiResponse } from 'next'
import Insert from "../../server/db/insert"; import Insert from "../../server/db/insert";
const sql = "INSERT INTO members (name_team_coach, coach_telefon_number, trainer_mail, city_team, training_institution_team, team_name, name_first_participant, first_partial_class, name_second_participant, second_class, name_third_party, third_part_class) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; const sql = "INSERT INTO members (name_team_coach, coach_telefon_number, nominations, city_team, training_institution_team, team_name, name_first_participant, first_partial_class, name_second_participant, second_class, name_third_party, third_part_class) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types

@ -50,7 +50,10 @@ export const Registration = (): JSX.Element => {
ФИО участников ФИО участников
</th> </th>
<th scope="col" className="px-6 py-3"> <th scope="col" className="px-6 py-3">
Возрастная группа Класс
</th>
<th scope="col" className="px-6 py-3">
Номинация
</th> </th>
</tr> </tr>
</thead> </thead>

@ -25,7 +25,7 @@ image: '/images/robottop.png'
+ младшая группа» 7-11 лет; + младшая группа» 7-11 лет;
+ средняя группа» 12-14 лет; + средняя группа» 12-14 лет;
+ старшая группа» 14-18 лет; + старшая группа» 14-18 лет;
* Номинация "Робо - ШОРТ-ТРЕК" * Номинация "ШОРТ-ТРЕК"
+ младшая группа» 7-11 лет; + младшая группа» 7-11 лет;
+ средняя группа» 12-14 лет; + средняя группа» 12-14 лет;
+ старшая группа» 14-18 лет; + старшая группа» 14-18 лет;
@ -55,6 +55,7 @@ image: '/images/robottop.png'
+ Заезд большей части робота в зону финиш - 5 б.; + Заезд большей части робота в зону финиш - 5 б.;
+ Баллы за время начисляются следующим образом: + Баллы за время начисляются следующим образом:
* 60 секунд - время затраченное на выполнения задание = баллы. * 60 секунд - время затраченное на выполнения задание = баллы.
+ Штрафной бал за задетую шайбу - 5 б.
### Результат попытки не засчитывается, если: ### Результат попытки не засчитывается, если:
* Фальстарт оператора робота (оператор нажал стартовую кнопку раньше команды судьи). * Фальстарт оператора робота (оператор нажал стартовую кнопку раньше команды судьи).
@ -77,7 +78,7 @@ image: '/images/robottop.png'
/> />
Рисунок 1 - Вид игрового поля Рисунок 1 - Вид игрового поля
## 2. Наминация "Робо-Шорт-Трек" ## 2. Наминация "Шорт-Трек"
#### 2.1 Первый этап: #### 2.1 Первый этап:
* В заездах участвуют одновременно два робота (пара) на поле * В заездах участвуют одновременно два робота (пара) на поле
* В данном этапе роботы движутся в автоматическом режиме, любое вмешательство извне в движение робота невозможно * В данном этапе роботы движутся в автоматическом режиме, любое вмешательство извне в движение робота невозможно
@ -127,10 +128,10 @@ image: '/images/robottop.png'
Рисунок 2 - Вид игрового поля Рисунок 2 - Вид игрового поля
## 3 Робот: ## 3 Робот:
* К соревнованиям в номинациях **«Робо-слалом»** и **«Робо - Шорт-Трек»** допускаются роботы, собранные на базе произвольного конструктора. * К соревнованиям в номинациях **«Робо-слалом»** и **«Шорт-Трек»** допускаются роботы, собранные на базе произвольного конструктора.
* Размер роботов не больше 200x200x200 (мм). * Размер роботов не больше 200x200x200 (мм).
* Все элементы конструкции, включая систему питания, должны находиться непосредственно на самом роботе. * Все элементы конструкции, включая систему питания, должны находиться непосредственно на самом роботе.
* Роботы принимающие участие в состязания «Робо-слалом» и «Робо - ШОРТ-ТРЕК» собираются на месте проведения Соревнований. На сборку и отладку роботов отводится два часа. * Роботы принимающие участие в состязания «Робо-слалом» и «ШОРТ-ТРЕК» собираются на месте проведения Соревнований. На сборку и отладку роботов отводится два часа.
* К первому этапу допускаются только автономные роботы, при любой попытке дистанционного управления, команда дисквалифицируется. * К первому этапу допускаются только автономные роботы, при любой попытке дистанционного управления, команда дисквалифицируется.
* Во втором этапе участвуют только дистанционно управляемые роботы. Управление роботами на втором этапе состязаний производится извне через любой беспроводной канал связи. Допустимо использование любых устройств для беспроводного управления. * Во втором этапе участвуют только дистанционно управляемые роботы. Управление роботами на втором этапе состязаний производится извне через любой беспроводной канал связи. Допустимо использование любых устройств для беспроводного управления.
* В каждом заезде дается две попытки на выполнение задания. После первой попытки дается время на восстановление конструкции в случае поломки любой его части - 2 минуты. * В каждом заезде дается две попытки на выполнение задания. После первой попытки дается время на восстановление конструкции в случае поломки любой его части - 2 минуты.

@ -5,6 +5,7 @@ export type User = {
name_first_participant: string; name_first_participant: string;
name_second_participant: string; name_second_participant: string;
name_third_party: string; name_third_party: string;
nominations: string;
classTeam: string[]; classTeam: string[];
}; };

Loading…
Cancel
Save