Создаю данный проект в рамках благотворительности и с целью освоения технологий
Что он должен уметь ?
- Отрисовывать фигуры как это делает GeoGebra
- Считать площадь отрисованной фигуры
- Уметь задать свойства фигуры, например, длину и пересчитывать площадь
Для товарищей, которые изучают математику, собираются сдавать егэ/огэ. Думаю полезно было бы иметь инструмент, который бы в автоматическом режиме получал бы ответы на “вопрос каково площадь треугольника если известны его стороны”. Иногда я занимаюсь репетиторством и мне было бы полезно иметь такой инструмент.
Что он умеет сейчас :По большему счету ничего. Но пока что он может рисовать линий, используя Drag and Drop. Мне потребовалось время чтобы разобраться в Snap/SVG и подружить себя с инфраструктурой Angular. Дальше будет больше
Почему Angular ?
- Востребованная технология
- В дальнейшем проект планируется расшириться до множества форм, появятся новые объекты, каждый со своим состоянием, всем этим нужно управлять, поэтому нужен фреймворк
- Мне нравится Angular по субъективным причинам
В кратце : Оно ужасно. Нужно переписать View… И тут не идет речи о болезни программиста : Переписывай все, если работает плохо и код раздувается. В данном случае, получился лишний слой, который связывал логику и отрисовку в Snap. Snap это вообще отдельная история. Кажется мне нужно засунуть всю отрисовку в компоненты или нет ? Как мне тогда связывать свойства DOM и поля компонента ? Ведь отрисовка динамическая, элементы появляются на лету. Над этим нужно подумать. На данный момент передо мной стояла задача сделать как того требует бизнес(шутка) быстро и некачественно. У меня даже получилось, хотя благодаря Angular я во второй раз убедился, что мой код никуда не годится. Что же касается метод ActiveDraggable. То это очень огромный костыль его нужно переписать или вообще удалить. Все что выглядеть как плохой код, помечено комментарием //need fix.
Что планируется дальше ?
Дальше планируется организовать процесс разработки, используя, например, Scrum. Улучшить архитектуру. Добавить тестов и реализовать отрисовку фигур. Пока что сложно говорить о фичах и прочем, потому что нет даже дизайн-документа. Думаю нужно начать с этого.