GeekHub-2020.js icon indicating copy to clipboard operation
GeekHub-2020.js copied to clipboard

Домашняя работа №3 - DOM, jQuery

Open redexp opened this issue 5 years ago • 58 comments

Видео: https://youtu.be/nUytDI9El3U

Основная задача:

  1. В тот же свой приватный репозиторий скопировать папку dom. По файлу index.html как обычно бот будет проверять вашу домашку
  2. В index.html вы увидите таблицу с инпутами. Бот выберет наугад один из инпутов и попытается вставить (Ctrl + V) в него текст типа такого
Євпак Віктор Миколайович;ФОП;1985
Бондаренко Анатолій Васильович;міський голова;1974
Мойсієнко Василь Миколайович;перший проректор;1965
  1. В index.js я уже подготовил обработку события paste и вычлинение текста из этого события
  2. Вам нужно разбить этот текст так, чтобы получился массив
[
  ["Євпак Віктор Миколайович", "ФОП", "1985"],
  ["Бондаренко Анатолій Васильович", "міський голова", "1974"],
  ["Мойсієнко Василь Миколайович", "перший проректор", "1965"]
]
  1. Необходимо добавить ячейки с инпутами в таблицу так, чтобы поместились все данные из этого массива. Например. Если бот вставляет текст в инпут a2 то таблица из такого вида
<table>
	<thead>
	<tr>
		<th>&nbsp;</th>
		<th>A</th>
		<th>B</th>
	</tr>
	</thead>
	<tbody>
	<tr>
		<th>1</th>
		<td><input type="text" name="a1" value=""/></td>
		<td><input type="text" name="b1" value=""/></td>
	</tr>
	<tr>
		<th>2</th>
		<td><input type="text" name="a2" value=""/></td>
		<td><input type="text" name="b2" value=""/></td>
	</tr>
	</tbody>
</table>

должна преобразоваться в вот такой вид

<table>
	<thead>
	<tr>
		<th>&nbsp;</th>
		<th>A</th>
		<th>B</th>
		<th>C</th>
	</tr>
	</thead>
	<tbody>
	<tr>
		<th>1</th>
		<td><input type="text" name="a1" value=""/></td>
		<td><input type="text" name="b1" value=""/></td>
		<td><input type="text" name="c1" value=""/></td>
	</tr>
	<tr>
		<th>2</th>
		<td><input type="text" name="a2" value="Євпак Віктор Миколайович"/></td>
		<td><input type="text" name="b2" value="ФОП"/></td>
		<td><input type="text" name="c2" value="1985"/></td>
	</tr>
	<tr>
		<th>3</th>
		<td><input type="text" name="a3" value="Бондаренко Анатолій Васильович"/></td>
		<td><input type="text" name="b3" value="міський голова"/></td>
		<td><input type="text" name="c3" value="1974"/></td>
	</tr>
	<tr>
		<th>4</th>
		<td><input type="text" name="a4" value="Мойсієнко Василь Миколайович"/></td>
		<td><input type="text" name="b4" value="перший проректор"/></td>
		<td><input type="text" name="c4" value="1965"/></td>
	</tr>
	</tbody>
</table>

Обратите внимание что появились <th>C</th> и пустой <input type="text" name="c1" value=""/> и каждая новая строчка имеет свой номер <th>3</th> и новые инпуты имеют имена с этим номером <input type="text" name="a3"...

Естественно, что бот будет вставлять несколько раз, разного размера данные, с разным размером строк и столбцов.

Усложнённое задание:

Под таблицами вы увидите две дивки #column-menu и #row-menu. В index.js я уже реализовал:

  • появление #column-menu по клику на thead th правой клавишей мыши
  • запоминание текущей колонки по которой кликнули
  • обработку клика на каждом из пунктов меню

Ваша задача реализовать:

  1. Добавление новой колонки слева от текущей колонки
  2. Добавление новой колонки справа от текущей колонки
  3. Удаление текущей колонки
  4. Сделать всё тоже самое только для строк через #row-menu и правому клику по tbody th

Дополнительное задание:

не показывать #column-menu по клику не первый th (в котором нету буквы) <th>&nbsp;</th>

redexp avatar Nov 07 '20 08:11 redexp

"В тот же свой приватный репозиторий скопировать папку regexp. По файлу index.html как обычно бот будет проверять вашу домашк" - тут скорее всего папка dom ?

KonstantinFaleev avatar Nov 08 '20 10:11 KonstantinFaleev

@KonstantinFaleev точно, спасибо

redexp avatar Nov 08 '20 10:11 redexp

Бот же буде перевіряти по файлу index.html, то можна перейменувати файл index.js в scrypt.js для зручності?

andrewvoinarovskyi avatar Nov 08 '20 23:11 andrewvoinarovskyi

@AndrewVoinarovskyi можно

redexp avatar Nov 09 '20 05:11 redexp

Все кому нужен WebStorm, я достал купоны на 100% скидку. Всем кому нужен бесплатный WebStorm кидайте свои имейлы в форму https://forms.gle/YDzwg5BgTdNweYUN6 Естественно, что получат купоны только те кто прошёл проверку второго домашнего задания.

redexp avatar Nov 09 '20 07:11 redexp

@redexp а что если в строке не ровно 2е ;, а больше/меньше? текст должен быть строго буквами укр. алфавита?

nedopaka avatar Nov 09 '20 09:11 nedopaka

@ANScorp в каждой строке будет строго одинаковое количество ; но их может быть сколько угодно. Никаких ограничений по символам в строке нету.

redexp avatar Nov 09 '20 09:11 redexp

бот будет вставлять текст только в те 4 инпута, которые есть изначально? или в созданные тоже?

andrewvitrenko avatar Nov 09 '20 10:11 andrewvitrenko

@AndriiVitrenko я думал добавить в задание вставку и в созданные, но не придумал как это понятно объяснить, по этому бот будет вставлять только в один из этих четырёх инпутов.

redexp avatar Nov 09 '20 10:11 redexp

@redexp Вставлятися буде тільки рядок виду str \n str \n str, чи може приходити str \s str \s str?

Daniel-developer5 avatar Nov 09 '20 10:11 Daniel-developer5

@Daniel-developer5 не понял вопроса

redexp avatar Nov 09 '20 10:11 redexp

Ну буде приходити рядок в якому підрядки розделені символом переносу рядку, чи можуть бути розділені пробілом?

Типу, буде тільки так: Євпак Віктор Миколайович;ФОП;1985 Бондаренко Анатолій Васильович;міський голова;1974 Мойсієнко Василь Миколайович;перший проректор;1965

Чи може прийти так: Євпак Віктор Миколайович;ФОП;1985 Бондаренко Анатолій Васильович;міський голова;1974 Мойсієнко Василь Миколайович;перший проректор;1965

Вибачаюсь, якщо не зрозуміло будую питання

Daniel-developer5 avatar Nov 09 '20 10:11 Daniel-developer5

@Daniel-developer5 крайне странный вопрос. Прямо хочется написать "А ты сам как думаешь?!"... Только первый вариант...

redexp avatar Nov 09 '20 10:11 redexp

@redexp по https://github.com/redexp/GeekHub-2020.js/issues/16#issuecomment-723905437 если, допустим, в буфере такой текст

Євпак Віктор Миколайович;ФОП;1985;sadfasdfa ; sada8sdf98 Бондаренко Анатолій Васильович;міський голова;1974;вавыdsfsd Мойсієнко Василь Миколайович;перший проректор;1965; asdfsd; adfasdf123

что мы должны получить на выходе? мы полностью игнорируем 2ю строчку?

nedopaka avatar Nov 09 '20 10:11 nedopaka

@ANScorp по хорошему - нет, не игнорируем, а нормализируем, т.е. добавляем недостающие ячейи. Но по факту бот не будет тестировать ваши домашки на таких данных. Количество ячеек в каждой строке будет одинаковым

redexp avatar Nov 09 '20 10:11 redexp

  • 78 репозиториев
  • Пустых репозиториев: 63
  • Основная задача: 3

Проверку остальных задач пока не реализовал

redexp avatar Nov 10 '20 06:11 redexp

Купоны на 100% скидку на WebStorm разошлю чуть позже

redexp avatar Nov 10 '20 06:11 redexp

Добрый день. Если бот вставляет в ячейку В1 или В2, то каждая следующая строчка должна начинаться тоже с ячейки В (то есть делаем красивую таблицу, где все красиво и текст идет строго один под одним ) или добавляем столько ячеек, чтобы просто вместить массив текста от места вставки?

RomanTaran avatar Nov 10 '20 07:11 RomanTaran

@RomanTaran я не понял первый вариант про "красивую таблицу", но вторая фраза добавляем столько ячеек, чтобы просто вместить массив текста от места вставки больше подходит под задачу этой домашки

redexp avatar Nov 10 '20 08:11 redexp

@RomanTaran возможно под "красивой таблицей" ты имел ввиду что она должна быть полноценной? Тогда да, количество ячеек в каждой строке должно быть одинаковым.

redexp avatar Nov 10 '20 08:11 redexp

В дополнительном задании новые строчки и столбцы не наследуют методы добавления и удаления? То есть я могу добавлять и удалять столбцы, только если кликну на А или В?

RomanTaran avatar Nov 10 '20 19:11 RomanTaran

@RomanTaran бот будет кликать только по A и B для #column-menu и 1 и 2 для #row-menu

redexp avatar Nov 10 '20 19:11 redexp

@redexp 1) если бот вставит больший массив, а потом меньший, то с большой вероятностью текст поместится в таблицу для прошлого большого массива. то есть строки и столбцы не добавлятся вообще, даже может будут лишние - это нормально? или массивы будут только увеличиваться? или табл нужно возвращать до начального состояния перед вставкой нового массива? 2) "неограниченное" количество столбцов - алфавита для этой цели хватит?

alexmay112 avatar Nov 11 '20 07:11 alexmay112

@alexmay112

  1. Если данные помещаются в таблицу, то новые ячейки добавляться не должны
  2. алфавита достаточно

redexp avatar Nov 11 '20 08:11 redexp

переписываю бота, загружен был работой, надеюсь что сегодня на обеде запущу его проверить ваши домашки

redexp avatar Nov 11 '20 09:11 redexp

  • 78 репозиториев
  • Пустых репозиториев: 45
  • Основная задача: 4
  • Усложнённая задача: 1
  • Дополнительная задача: 6

redexp avatar Nov 11 '20 14:11 redexp

если у вас были ошибки в основной задаче, то бот неправильно оценивает усложнённую задачу. Я завтра это исправлю

redexp avatar Nov 11 '20 16:11 redexp

а каким образом бот проверяет name у input? он делает это запросами input.getAttribute('name') или как? ибо сколько у себя проверял через девтулсы, то все правильно делает

andrewvitrenko avatar Nov 11 '20 16:11 andrewvitrenko

@redexp а можно подробную инструкцию по использовании того кода что пришел на почту? по поводу webstorm

andrewvitrenko avatar Nov 11 '20 18:11 andrewvitrenko

Покупаешь WebStorm и при чекауте вводишь купон и цена полностью списывается до 0

redexp avatar Nov 11 '20 18:11 redexp

сам чекаут происходит на сайте? или уже в проге?

andrewvitrenko avatar Nov 11 '20 19:11 andrewvitrenko

на сайте

redexp avatar Nov 11 '20 19:11 redexp

запитання можливо не по темі. як ви робили два коментарі початком і кінцем спойлера, щоб заховати код?

andrewvoinarovskyi avatar Nov 11 '20 19:11 andrewvoinarovskyi

@redexp пишет "This coupon code is not applicable to the products in the shopping cart." что делать?

andrewvitrenko avatar Nov 11 '20 19:11 andrewvitrenko

@AndrewVoinarovskyi

//region Title

some code

//endregion

redexp avatar Nov 11 '20 19:11 redexp

@AndriiVitrenko даже не знаю, либо купоны просрочены, либо вы выбираете что-то не то

redexp avatar Nov 11 '20 19:11 redexp

@redexp перехожу на сайте в магазин и там ищу webstorm. дальше кнопка "купить" и появившемся окне оформления заказа ищу поле "have a discount code?". вроде все правильно делал

andrewvitrenko avatar Nov 11 '20 19:11 andrewvitrenko

@redexp пишет "This coupon code is not applicable to the products in the shopping cart." что делать?

Теж видавало таку помилку.

Створив аккаунт на JetBrains, після чого вибрав "придбати ліцензію" зі списку вибрав необхідний продукт. Все пройшло, купон використався.

@redexp дякую!

VlasSergiy avatar Nov 11 '20 19:11 VlasSergiy

@VlasSergiy спасибо большое. помогло. работает!!!!

andrewvitrenko avatar Nov 11 '20 19:11 andrewvitrenko

  • 78 репозиториев
  • Пустых репозиториев: 36
  • Основная задача: 5
  • Усложнённая задача: 2
  • Дополнительная задача: 11

redexp avatar Nov 12 '20 06:11 redexp

А на эти новые столбцы и строки будет снова применяться 'Paste'? Т.е. нужно ли наследовать в новые инпуты событие "Paste"?

oleksandr2004lataniuk avatar Nov 12 '20 08:11 oleksandr2004lataniuk

@oleksandr2004lataniuk Нет, не нужно

@AndriiVitrenko я думал добавить в задание вставку и в созданные, но не придумал как это понятно объяснить, по этому бот будет вставлять только в один из этих четырёх инпутов.

AlexKif avatar Nov 12 '20 12:11 AlexKif

Якщо я лишав заявку на купон для WebStorm але його не отримав, то мені треба ще почекати чи я, з якоїсь причини, не потрапив в список?

Вы смотрели issues ?

kvils avatar Nov 12 '20 20:11 kvils

  • 78 репозиториев
  • Пустых репозиториев: 31
  • Основная задача: 15
  • Усложнённая задача: 4
  • Дополнительная задача: 19

redexp avatar Nov 13 '20 06:11 redexp

@redexp вставка текста должна начаться конкретно с той яйчейки в которую вставку выполнили или с первой клеточки того рядка, где сработало событие?

andrewvitrenko avatar Nov 13 '20 07:11 andrewvitrenko

@redexp вставка текста должна начаться конкретно с той яйчейки в которую вставку выполнили или с первой клеточки того рядка, где сработало событие?

@AndriiVitrenko з тієї в яку вставили

Daniel-developer5 avatar Nov 13 '20 07:11 Daniel-developer5

ну просто мне пришел репорт от бота. и там фрагмент "і, залишаючись" ну никак не может быть в е4. в самом тексте 5 рядков, поэтому этот фрагмент находится на 5 строке

andrewvitrenko avatar Nov 13 '20 07:11 andrewvitrenko

здравствуйте, еще не поздно получить купон? Я заполнила заявку.

olgachotii avatar Nov 13 '20 07:11 olgachotii

@olgachotii не поздно, можно оставлять до конца недели

redexp avatar Nov 13 '20 09:11 redexp

@redexp а можно хавтра на уроке взять чью-то домашку (из тех кто утверждает что сделал, но бот выдает ошибку) и вручну на уроке проверить и разобратся?

andrewvitrenko avatar Nov 13 '20 21:11 andrewvitrenko

  • 78 репозиториев
  • Пустых репозиториев: 23
  • Основная задача: 29
  • Усложнённая задача: 7
  • Дополнительная задача: 29

redexp avatar Nov 14 '20 14:11 redexp

Доброго вам вечера! А когда дедлайн для этого задания?

Andreii12 avatar Nov 14 '20 19:11 Andreii12

@Andreii12 дедлайн для всех заданий - утро понедельника

redexp avatar Nov 14 '20 19:11 redexp

Доброго вечора. Можете скинути скріншот як повинно виглядати по завершенню всіх завдань. Дякую)

VadymBezsmertnyi avatar Nov 14 '20 20:11 VadymBezsmertnyi

@VadymBezsmertnyi зачем?

redexp avatar Nov 15 '20 05:11 redexp

  • 78 репозиториев
  • Пустых репозиториев: 21
  • Основная задача: 31
  • Усложнённая задача: 8
  • Дополнительная задача: 29

redexp avatar Nov 15 '20 06:11 redexp

  • 79 репозиториев
  • Пустых репозиториев: 18
  • Основная задача: 46
  • Усложнённая задача: 13
  • Дополнительная задача: 34

redexp avatar Nov 16 '20 09:11 redexp

Список студентов сократился до 49

redexp avatar Nov 17 '20 20:11 redexp