ahj_6_dnd
v1.0.0
Published
[![Build status](https://ci.appveyor.com/api/projects/status/ifg3kctbxu9iwm3r?svg=true)](https://ci.appveyor.com/project/SubHunt/ahj-6-dnd)
Downloads
2
Readme
Домашнее задание к занятию "6. Работа с файлами, DnD"
Правила сдачи задания:
- Важно: в рамках этого ДЗ нужно использовать yarn (поэтому файла
package-lock.json
в репозитории быть не должно) - Всё должно собираться через Webpack (включая картинки и стили) и выкладываться на Github Pages через Appveyor
- В README.md должен быть размещён бейджик сборки и ссылка на Github Pages
- В качестве результата присылайте проверяющему ссылки на ваши GitHub-проекты
- Авто-тесты писать не требуется
Trello
Легенда
Вы делаете внутрикорпоративную систему управления задачами и вашему руководству очень нравится подход, который используется в Trello:
Описание
Фактически у вас есть доска, состоящая из колонок, в каждой колонке может быть несколько карточек.
Для упрощения сделаем следующие допущения:
- Кол-во колонок фиксировано и равно 3
- Новые колонки добавлять нельзя, удалять имеющиеся тоже
- Перемещать колонки тоже нельзя
Что же можно:
- Добавлять карточки с помощью кнопки 'Add another card'. Вот так это выглядит:
- Удалять карточки - при наведении на карточку появляется иконка крестик ("\E951"), которая и удаляет карточку (обратите внимание в оригинальном Trello такой операции нет, есть только архивация, но мы для упрощения её ввели):
- Перемещать карточки как внутри колонки, так и между колонками:
Процесс перемещения
- Внешний вид до переноса (карточка находится на своём месте):
- Внешний вид в момент переноса (карточка удаляется из своего начального положения):
Обратите внимание на следующие нюансы:
- Внешний вид курсора ('grabbing')
- Курсор по отношению к карточке остаётся там, где изначально схватили - не привязывается ни к левому краю, ни к центру, а там, где схватили карточку, т.е. можно схватить за нижний левый угол:
- При наведении на другие позиции под карточку выделяется место по высоте равное размеру самой карточке, при это будет карточка ставится "до" или "после" элемента определяется исключительно позицией курсора:
Дополнительно
Дополнительные требования:
- Храните всё состояние в LocalStorage так, чтобы после обновления страницы внесённые изменения сохранялись
- Постоение DOM-дерева производите на базе состояния, хранящегося в LocalStorage
Упрощения
В целях упрощения сделайте только:
- Возможность хранить текст (картинки, списки, цветовое оформление элементов не нужно)
- Перемещение самой карточки (поворот делать не нужно)
- Можете также не обрабатывать ситуацию, связанную с выносом элемента за пределы доски
Modern Image Manager* (задача со звёздочкой)
Важно: эта задача не является обязательной. Её (не)выполнение не влияет на получение зачёта по ДЗ.
Легенда
Менеджер картинок, который вы делали в 3-ей лекции нуждается в улучшении, в частности решили сделать две вещи:
- Предоставить возможность загружать пользователю изображения с его компьютера (а не URL)
- Совместить форму для Drag and Drop и окошко выбора файлов
Описание
Внешний интерфейс должен выглядеть следующим образом:
Схема работы:
- При переносе изображения (Native DnD) с компьютера пользователя в блок Drag and Drop (т.е. из файлового менеджера переносим файл в окно браузера) должна происходить загрузка файла (если это изображение) и отображение его внизу (превью с крестиком)
- При клике на блок Drag and Drop должна открываться стандартная форма выбора файлов (как для native
<input type="file">
) после выбора файла также должна происходить загрузка с отображение его внизу (превью с крестиком)
Обратите внимание: нужно, чтобы если пользователь два раза подряд выбрал один и тот же файл (не важно каким способом), этот файл оба раза загрузился и отображался внизу в превью (т.е. должно их быть два).