GithubHelp home page GithubHelp logo

akhmadbabaev / o-slider Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 6.66 MB

It's another ordinary slider, no better than other.

License: MIT License

JavaScript 7.18% TypeScript 82.54% SCSS 6.26% Pug 4.03%
jquery-plugin o-slider runner slider

o-slider's People

Contributors

akhmadbabaev avatar

Watchers

 avatar

o-slider's Issues

БЕМ

у тебя щас в _basic.scss используются стили по тегам, по БЕМу можно пользоваться только классами, нельзя использовать id
и для чего ты используешь нижнее подчеркивание) имя файлам должно соответствовать имени папке в которой они лежат

JS

Скриншот 22-04-2020 00_21_38
Поиск и назначение обработчиков нужно разнести по разным методам.
const titleElement = this.element.querySelector('.checkbox__title') as HTMLElement; зачем искать checkbox__title всякий раз при вызове метода, нельзя один раз найти и сохранить в this

Компактность

В стандартах есть принцип Single Responsibility, также методы не должны быть сильно большими.
В стандартах есть принцип Single Responsibility, также методы не должны быть сильно большими. пункт 4 https://github.com/fullstack-development/front-end-best-practices/blob/master/JS/goodPractice.md)
Разбей эти 2 метода handleThumbMouseDown и handleThumbTouchStart

Типы

Скриншот 25-04-2020 12_13_52
а почему ты св-ва объекта и типы значений не указал или они неизвестны?

Шкала значений слайдера.

Было бы неплохо добавить хотя-бы крайние значения слайдера в виде шкалы. Чтобы можно было ориентироваться непосредственно по слайдеру от какого и до какого значения идёт рэнж, т.к. панель опций, по факту, не является частью плагина. (скрин для примера)
image

Раньше в задании был критерий по полностью функциональной шкале, которая отрисовывается в зависимости от шага и по значениям можно кликать, чтобы тригерить слайдер. Если добавишь такой функционал - будет только плюсом, но это не обязательно :)
Peek 2020-05-02 16-44

webpack

зачем ты подключаешь jquery в o-slaider.ts ты можешь его подключить с помощью вебпака. Еще ты подключаешь стили к странице через link и скрипты через script, webpack может сам их подключать)

Кавычки

Скриншот 16-04-2020 20_02_32
Используй в pug двойные кавычки а в scss и js одинарные

Префикс js-.

По стандарту все классы, которые используются для поиска по DOM, должны иметь префикс js-.
1 пункт. Хоть правило и написано в JQuery, но предполагается и для использования с чистым js.

jQuery

$firstElement[0] для выбора индексов используй метод eq()

README.md

Скриншот 24-03-2020 11_22_58
Добавь эти команды в README и почему у тебя не видно в ней диаграммы)

Typescript

image

  1. Почему очень многие методы и поля обозначены как protected, а не как private, хотя используются только?

  2. Использовать type assertion любого вида - крайне не тайп сейвово (в данном случае as).
    Тут же вполне есть вероятность, что элемента с таким классом не существует и тогда всё посыпется.

image

  1. Unknown используется, для того чтобы в дальнейшем была возможность сузить тип, тут тип нигде не сужается. Да и тип парметра value можно указать более точно, имхо.
    И опять же асёртить инпут, как объект с ключами c типом эни - прям ну очень нехоршо.

image

  1. Any используется только в крайних случаях. Тут явно можно указать тип таймера.
  2. Все интерфейсы должны начинаться с префикса 'I'.

Шрифты

Необходимо всегда использовать как минимум один запасной шрифт и одно запасное семейство, сейчас это не учтено. пункт 6

Incorrect parameters validation.

If set slider parameter from or other numeric parameters as a string that contains a number ( for example { from: '20' } I get error 'from is Infinity' but he isn't.

Тесты

Скриншот 25-04-2020 22_58_10
По хорошему общее покрытие тестами должно быть минимум 85%

Порядок указания классов

У тебя порядок в checkbox.scss нарушен селектор input идет перед label, нужно чтобы селекторы были в том порядке как указываются в pug

Разделение зависимостей в package.json

Нужно откорректировать разделение зависимостей на devDependencies и dependencies: в devDependencies ты должен оставить только те зависимости, которые тебе нужны исключительно в режиме разработки, и при отсутствии которых можно все равно без проблем собрать проект

Баги слайдера

GSN3QypVRR
По-хорошему, у меня не должно быть возможности выставлять слайдерам одинаковые значения и перетаскивать один за другой. Обычно в слайдерах(когда есть диапазон) мы выбираем значения между минимальным и максимальным и должна быть привязка одного бегунка как минимального значения, а второго как максимального.

Компонентность

Скриншот 21-04-2020 23_41_33
с миксинами нужно взаимодействовать через аргументы (интерфейс) а не вставлять туда блок кода, зачем так усложнять, почему не написать код в контейнере?

Убрать все id

Скриншот 16-04-2020 20_47_24
Не использовать id, кроме случаев, когда они семантически востребованы;

Когда гарантируется их уникальность например на уровне базы данных и когда вам нужно

требуется рабочая навигация в рамках одной страницы (например, как на Википедии или на этом сайте сборника best-practices;
требуется связать и , которые находятся в совершенно разных ветках дерева DOM (вообще, лучше всегда просто внутрь ставить и тогда никакие айдишники не нужны);

Именование

Скриншот 25-04-2020 11_52_42
и в обработчиках нужно указывать имя метода : this.handleБемЭлементИлиБемБлокТипСобытия

autobind

В плагине то че не используешь)

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.