Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Необходимо разработать движок на javascript+jQuery+CSS+Bootstrap, отрисовывающий турнирную сетку для соревнований по вольной борьбе по следующей модели данных:

TournamentGroup = {

Rounds: [{

 Name:"Финал",

 RoundType:"Main", // or "Additional" для сетки утешения

 Matches: [{

  Number: 1,

  WrestlerInRed: {

   LastName: "Петров"

  },

  WrestlerInBlue: {

   LastName: "Иванов"

  },

  PointsRed: 4,

  PointsBlue: 8,

  IsRedWon: false

 }]

}]

}

Т.е. общая схема данных описывается так - в турнире есть весовые категории (группы), для каждой группы есть своя турнирная сетка с раундами (1/16, 1/8, 1/4, Получинал, Финал), каждый раунд состоит из схваток (матчей).

Поддерживаемые модели отрисовки: Олимпийская система с матчем за 3-е место, Олимпийская система с утешением от финалистов, Круговая система. Разбираться в генерации самой сетки не нужно. Модель данных описывает сетку полностью, она уже сгенерирована вместе с результатами. Надо только уметь отрисовать эту сетку. Сетка уже отбалансирована, т.е. количество матчей в раунде - это строго степень двойки.

В прикрепленных файлах примеры отрисовки подобной сетки для .NET WPF. Нужно сделать тоже самое для веб сайта.

По сути, задача состоит в том, чтобы сначала сверстать разметку для отдельного матча, в которой будет:

слева - номер матча, далее фамилии борцов, затем баллы и, наконец, кнопка для навигации на другую страницу;

Далее нужно написать javascript/jQuery компонент, который будет бегать по модели данных и генерировать необходимую разметку с расстановкой отступов, margin'ов и отрисовкой коннекторов таким образом чтобы получить желаемый внешний вид.

Разметка матча может быть такой:



1/16 финала



 

  

1

  

   

Петров Иван

   

Сидоров Петр

  

  

   

4

   

6

  

  

   

   

  

  

   

  

 



Начать можно с RoundRobin (круговой) сетки, т.к. она самая простая. По сути - потребуется просто сгенерировать div'раундов, которые будут идти один за другим по горизонтали и добавть туда матчи данного раунда без всяких коннекторов, т.к. в круговой сетке нет понятия перехода в следующий тур.

Олимпийка с матчем за 3-е место уже посложнее. Нужно рассчитывать необходимые отступы так чтобы правильно размещать матчи в каждом следующем раунде и соединять их коннекторами с матчами из предыдущего раунда вплоть до финала. В модели данных раунд с матчем за 3-е место имеет RoundType="Additional". Сам матч необходимо отрисовать справа от финального матча с теми же отступами.

Олимпийка с утешением от финалистов отличается тем, что тут уже не 1 матч за 3-е место, а может быть от 1 до нескольких дополнительных раундов, в которых будет определяться 2 третьих места. Пример есть в скриншоте.

Требования к результату:

1. js файл, в котором определен es6 класс с методом отрисовки турнирной сетки:

export default class {

constructor() {

}

drawBracket(group, container) {

 // group - модель даннх раундов и матчей для данной группы, описанная выше

 // container - div, в котором требуется отрисовать турнирную сетку

}

}

Код должен быть кросс-браузерным. Для самого es6 будет использован babel для транспиляции в es5.

2. css файл с необходимыми стилями, совместимыми с bootstrap 3.3.7 и изолированными в рамках css класса bracket

Стили должны давать удобную возможность менять размеры компонентов разметки.

3. html файл с примерами использования компонента для отрисовки всех 3-х заявленных видов сеток (олимпийка обычная отличается от олимпийки с утешением только дополнительными раундами утешения).

Необходимо продумать варианты отображения сетки на разных экранах.

6 лет назад
kardash
38 летРоссия
17 лет в сервисе
Был
3 года назад
Выбранный исполнитель
marozec
Максим 
43 годаРоссия
6 лет в сервисе
Был
2 года назад
6 лет назад
$50
2 дня
Работа выполнена качественно и в срок. Исполнительно очень аккуратно подходит к работе, выслушивает замечания и вносит необходимые правки. Общением и результатом очень даволен. С задачей по написанию js кода + разметки + css справился на отлично. Рекомендую!
От сотрудничества только положительные эмоции. Рекомендую.