Skip to content

HW 2.1#2

Open
matiko-ma wants to merge 3 commits intomainfrom
hw_2
Open

HW 2.1#2
matiko-ma wants to merge 3 commits intomainfrom
hw_2

Conversation

@matiko-ma
Copy link
Copy Markdown
Owner

Изменения

HTML/CSS:

  • Доработка мелочей
  • Адаптация под планшеты и телефоны

JS:

  • Извлечение информации из различных полей
  • Функция парсинга карточек

To be done

  • Доработать drop-down list согласно макету
  • Доработать меню в версии для телефонов согласно макету
  • Добавить функционал карточке (удаление, перемещение)
  • Добавить возможность редактировать содержимое карточки
  • Добавить функционал раздела Публикации
  • Добавить логику/ограничения/валидацию
  • Сверстать финальный шаблон резюме
  • Добавить функцию генерации PDF

@matiko-ma
Copy link
Copy Markdown
Owner Author

Я не знала, что если коммитить в ту же ветку, то не получится сделать отдельный pull request :(
Но да и ладно, в коммите hw2.2 было сделано следующее:

  • Доработано меню в версии для телефонов согласно макету
  • Добавлен функционал карточке (удаление, перемещение)
  • Сделан общий класс CardList со всеми функциями карточек

To Be Done:

  • Доработать drop-down list согласно макету
  • Доработать функцию перемещения для планшетов и телефонов
  • Добавить возможность редактировать содержимое карточки
  • Добавить функционал раздела Публикации
  • Добавить логику/ограничения/валидацию
  • Сверстать финальный шаблон резюме
  • Добавить функцию генерации PDF

@matiko-ma matiko-ma mentioned this pull request Nov 2, 2025
Comment thread src/scripts/cv_1.js
@@ -1,3 +1,5 @@
import './menu_activeBtn.js'
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Используются модули

Comment thread src/scripts/cv_1.js

document.addEventListener('DOMContentLoaded', function () {

const posEl = document.getElementById('posName');
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Понятные имена переменных, например, здесь ясно, что это поле с позицией, для которой создается резюме

Comment thread src/scripts/cv_1.js
console.log(sessionStorage.getItem('position'));
});

const photoEl = document.getElementById('photo_input');
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень классно, что делаешь предпросмотр загруженного фото

Comment thread src/scripts/cv_2.js
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Код очень понятный, легко читается: каждый блок отвечает за одно поле + все данные складываются в sessionStorage

Мне кажется, что раз здесь похожие блоки, то можно оптимизировать код, написав вспомогательную функцию. Например:

const bindInputToSession = (id) => {
    const el = document.getElementById(id);
    if (!el) return;
    el.addEventListener('change', () => {
        sessionStorage.setItem(id, el.value);
    });
};

bindInputToSession('name');
bindInputToSession('surname');
bindInputToSession('email');
bindInputToSession('phone');
bindInputToSession('about');

Comment thread src/scripts/cv_3.js
const edStart = document.getElementById('ed_start').value;
const edEnd = document.getElementById('ed_end').value;

const formatMonthYear = (dateStr) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чуть-чуть поехали отступы

Comment thread src/scripts/cv_4.js
const workCurrent = document.getElementById('w_cur').checked;
let cardSmallText = "";

const formatMonthYear = (dateStr) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Функция используется ещё в cv_3, поэтому можно вынести в отдельный модуль

Comment thread src/scripts/cv_3.js
};
const cardSmallText = `${formatMonthYear(edStart)} — ${formatMonthYear(edEnd)}`;

const extraData = {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удобный способ хранения данных

Comment thread src/scripts/CardList.js
this.init();
}

init() {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread src/scripts/CardList.js
}
});

document.addEventListener('mouseup', () => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread src/scripts/cv_2.js
console.log(sessionStorage.getItem('surname'));
});

const emailEl = document.getElementById('email');
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для телефона и почты можно добавить валидацию

@vsovgir
Copy link
Copy Markdown

vsovgir commented Nov 15, 2025

Саммари по критериям

Читаемость и понятность кода

  • Код читается легко: файлы логично разделены по шагам приложения (cv_1-cv_5, CardList, меню), имена переменных и функций отражают их смысл
  • Логика обработчиков событий линейная и понятная, даже без комментариев ясно, что где происходит

Отсутствие ошибок

  • Синтаксических ошибок в проекте нет, работа со всеми элементами реализована корректно

Модульность и переиспользуемость кода

  • Проект хорошо структурирован на модули: класс CardList переиспользуется на нескольких шагах, а логика меню вынесена в отдельный модуль
  • В cv_5.js видно удачное обобщение через addCardHandler, что уменьшает дублирование и делает код гибче
  • formatMonthYear можно вынести в отдельный модуль, чтобы ещё улучшить архитектуру

Соответствие стандартам форматирования и кодирования

  • Есть небольшие проблемы с форматированием, но на читаемость и понятность они не влияют
  • В остальном -- стиль кода ровный, подход к обработке событий и структуре файлов единообразен

Соответствие требованиям задания

  • Используется динамическое создание и изменение DOM-элементов. Карточки создаются, удаляются и переставляются динамически через JS
  • Данные хранятся в JavaScript-структурах (массивы, объекты). Данные карточек собираются в объекты и массивы и дополнительно сохраняются в sessionStorage
  • Есть обработка пользовательских событий (клики, отправка форм, ввод текста). Обрабатываются клики по кнопкам, изменения в полях формы и действия при перетаскивании карточек
  • Код организован в модули (ES modules). Проект разделён на 7 модулей: cv_1.js-cv_5.js, CardList.js, menu_activeBnt.js.
  • Приложение корректно работает и не выдаёт ошибок в консоли

@lyaplyap
Copy link
Copy Markdown

Ревью дз по javascript

Критерии выполненного задания:

  • Используется динамическое создание и изменение DOM-элементов [ok]
  • Данные хранятся в JavaScript-структурах (массивы, объекты) [ok]
  • Есть обработка пользовательских событий (клики, отправка форм, ввод текста) [ok]
  • Код организован в модули (ES modules) [mostly ok]
  • Приложение корректно работает и не выдаёт ошибок в консоли [ok]

Итого: 9/10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants