GithubHelp home page GithubHelp logo

code-and-magick's Introduction

Проект «Код и магия» интенсивного онлайн-курса «Базовый JavaScript».

О проекте

  • Технологии: HTML5, CSS3, Javascript, Webpack, Git, npm.
  • Поддержка: IE11+.

Проект изначально был сверстан и включал в себя функционал игры.

Содержание

Что было сделано

  1. Canvas

    • Метод drawPauseScreen доработан таким образом, чтобы вместо вывода в консоль сообщения показывались на игровом экране. Каждое сообщение отрисовано на холсте канваса this.ctx на многоугольнике неправильной формы, под сообщением располагается тень — многоугольник такой же формы.
  2. Валидация формы отзыва

    • Написан сценарий валидации формы отправки отзыва. Ограничения на ввод данных:
      «Имя пользователя» — обязательное поле
      Поле «Описание» становится обязательным, если поле «Оценка» ниже 3
      
    • Справа от кнопки отправки находится блок .review-fields, в котором находятся «ссылки» на незаполненные обязательные поля. «Ссылки» исчезают из блока по мере заполнения полей формы. Если все обязательные поля заполнены, блок .review-fields исчезает целиком.
    • Если данные, введённые в форму, невалидны, форму невозможно отправить — кнопка отправки деактивирована (добавлен атрибут disabled).
  3. Cookies

    • В файле form.js в cookies сохраняется оценка и имя пользователя. Срок жизни cookie — количество дней, прошедшее с моего ближайшего дня рождения.
    • При загрузке страницы имя пользователя и оценка, записанные в cookies, ставятся в форму по умолчанию.
  4. Шаблонизация

    • Написан модуль инициализации списка отзывов, который:
      • использует подготовленные данные, полученные по JSONP;
      • генерирует HTML-код списков отзывов и добавляет этот код на страницу.
  5. AJAX и фильтры

    • Загрузка данных по XMLHttpRequest.
    • Фильтрация загруженного списка отзывов:
      • Все — показывает список отзывов в таком виде, в котором он был загружен.
      • Недавние — показывает список отзывов, оставленных за две недели, отсортированных по убыванию даты (поле date).
      • Хорошие — с рейтингом не ниже 3, отсортированные по убыванию рейтинга (поле rating).
      • Плохие — с рейтингом не выше 2, отсортированные по возрастанию рейтинга.
      • Популярные — отсортированные по убыванию оценки отзыва (поле review_usefulness).
  6. Постраничный вывод и делегирование событий

    • Каждая страница состоит максимум из 3 отзывов (последняя может содержать меньше).
    • Кнопка "Показать еще" показывает следующую страницу отзывов.
    • Функция, устанавливающая обработчики событий на клики по фильтрам, переписана с использованием делегирования.
  7. Parallax

    • В зависимости от положения прокрутки положение блока с облаками смещается.
    • Если игра не видна, она ставится на паузу.
  8. ООП

    • Создан конструктор объекта Review, который принимает на вход аргумент data и сохраняет его в приватном свойстве data. Объект Review имеет метод render, который отрисовывает элемент отзыва в списке. Модуль js/reviews.js отрисовывает отзывы, создавая объекты типа Review, а при фильтрации каждый из элементов списка удаляется через вызов removeChild у их родительского блока.
    • Создан конструктор объекта Photo, который работает с данными каждой фотографии.
    • Создан конструктор объекта Gallery со следующими методами:
      • show и hide для показа и скрытия галереи.
      • setPictures, принимающий на вход массив объектов Photo и сохраняющий его.
      • setCurrentPicture, который берет фотографию с переданным индексом из массива фотографий и показывает ее в галерее.
  9. Оптимизация

    • Модули переписаны в стиле CommonJS.

code-and-magick's People

Contributors

birra05 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.