https://vak1n.github.io/smarthouse/public/
Используемая версия ноды при разработке v10.12.0
npm install
npm run dev
npm run build
- в качестве препроцессора css используется sass
- в качестве сборщика используется webpack
- normalize.css подключается через CDN
- в качестве линтера используется eslint c конофигом от airbnb
- в качестве шаблонизатора используется механизм для отложенного рендера клиентского контента
<template>
Вёрстку адаптирована для экранов размером от 320px до 1920px по ширине
- в мобильной версии шапка прибита к вверзу экрана
- в мобильной версии меню скрывается под 'гамбургер'
- меню рендерится на основе получаемых от сервера данных в фомате json
- меню рендерится на основе все тех же получаемых данных
- карточки рендерятся на основе получаемых от сервера данных в фомате json
- у карточек без дополнительных данных показываются контролы (крестик и стрелка),
- на десктопе контолы показываются при наведении, на мобильных устройствах всегда
- плотная компоновка карточек сделана на гридах
- карточки занимают все свободное место, чтобы не было пустоты
- добавлена адаптивная типографика, шрифты указываются с еденицами
rem
относительно елементаhtml
, под разные экраны уhtml
задаются свои размеры шрифта - изображения графика и камеры адаптивные
- иконки карточек выводятся разного размера, взависимости от ширины экрана
В блоке "Пылесос застрял" на изображении добавлены жесты на сенсорных устройствах
- zoom / pinch позволяет увеличивать и сужать изображение
- после zoom доступен swipe позволяющий перемещатся по кратинке
- rotate позволяет изменять яркость изображения
В десктопной версии для масштабирования, перемещения и изменения яркости добавлены контролы
См. выше версию ноды
git clone https://github.com/mad-gooze/shri-2018-2-multimedia-homework.git
cd shri-2018-2-multimedia-homework
npm i
npm start
git clone https://github.com/vak1n/smarthouse.git --branch task-3
cd smarthouse
npm i
npm start
Добавлена страница "Видеонаблюдение" http://localhost:9000/video.html на которой находится сетка из 4-ёх видео-превью.
Клик по превью разворачивает соответствующее видео на всю страницу с анимацией по аналогии с маковским приложением
Photo Booth. Анимация реализована через css свойство transform scale
. При повороте мобильного устройтсва,
открытое видео адаптируется под новые размеры экрана. В правом верхнем углу кнопка "Все камеры" позволяет вернуться назад.
Страница работатет в актуальной версии Chrome (а так же Яндекс Браузер, Firefox, Edge) на десктопе и на Android.
Для проигрывания HLS-потока на платформах без нативной поддержки HLS подключается библиотека hls.js
.
При развернутом видео внизу находятся контролы яркости и контрастности.
Фильтры на видео накладываютмя через css свойство filter
.
В окне с развернутым видео в левом верхнем углу есть анализатор громкости звука потока из открытой камеры.
Анализатор получает данные через Web Audio Api
и выводит в canvas
в виде столбчатой диаграммы.
Информация об уровне освещенности при раскрытом видео выводится внизу по центру экрана в процентах.
Здесь https://github.com/vak1n/smarthouse-server
Код переписан на TypeScript Компиляция и запуск см. выше пункты Сборка и Разработка
- используется строгий режим
"strict": true
- отсутствуют
@ts-ignore
- минимальное использование
type assertions
, как напримерsomeVar as SomeType
- подключен tslint
Сложных моментов не было, были объемные.
В процессе работы были найдены места, которые в дальнешей работе с проетом могли привести к ошибкам:
- отсутствие нужных дом элементов на странице
- изменение получаемых от api данных
Да. Типизация дает большую уверенность в том, что при внесении изменений к проект, что-то сломается.