Разработка конструктора схем ДТП на JavaScript

Цена договорная
04 июля 2019, 17:19 • 9 откликов • 70 просмотров
Рассматриваю различные варианты реализаций, предпочтительно JavaScript, возможен вариант на Flash. Конструктор необходимо встроить в стороннее ПО. Сроки весьма сжатые - 1-1,5 мес.

Пример готового решения: http://autokadabra.ru/road-editor . Весь функционал устраивает за исключением двух вещей:
1) Нельзя отредактировать ранее созданную схему (нет загрузки в формате схемы для редактирования);
2) Нельзя загрузить дополнительные элементы (например животное, дерево и т.д.).

Конструктор схем ДТП должен соответствовать следующим требованиям:
1. Конструктор должен состоять из следующих блоков:
a. Рабочая область (область рисования) – область в центральной части, на которой производится составление схемы для формирования схемы путем добавления элементов из меню. Содержит ползунок для изменения масштаба и ползунки перемещения по области рисования;
b. Панель (Меню) с выбором элементов, из которых состоит схема, разделенная на категории. Категории задаются пользователями и могут меняться. Элементы одной категории можно перемещать в другую. Каждая категория поддерживает как загрузку новых элементов, так и элементов, созданных по имеющимся в данной категории;
c. Инструментальная панель для управления добавленными элементами непосредственно на схеме и сохранения готовой схемы.
• Кнопки управления отображением выделенным элементом схемы:
Для каждого элемента схемы должны быть доступны следующие функции:
1. изменение цвета границ элемента;
2. изменение толщины линий;
3. изменение цвета заливки;
4. добавления надписей;
5. отображения объекта горизонтально/вертикально, в том числе зеркальное отображение;
6. операции поворота на 90, 180 гр.;
7. масштабирование – увеличение общего размера объекта по вертикали или горизонтали;
8. вращение;
9. установка отображение объекта на переднем/заднем плане

Дополнительные возможности в зависимости от установленного признака для элемента:
10. растягивание элемента без искажения - увеличение продолжительности объекта по вертикали или горизонтали (Пример: для пешеходного перехода при растягивании не меняется ширина полос, а увеличивается количество полос);
11. частичное изменение геометрии объекта (изменение путем растягивания стороны объекта (полукруг) или увеличение/уменьшение ширины одного конца прямоугольного объекта (трапеция)).
• кнопки управления сформированной схемой:
1. Сохранение проекта;
2. Отмена последнего действия;
3. Повтор последнего действия
4. Загрузка имеющегося проекта из внешнего источника (рабочий стол);
5. Удаление выделенного элемента схемы (так же должна поддерживаться кнопка delete)
2. Схема должна сохраняться в следующих форматах:
a. доступным для редактирования в конструкторе;
b. в графическом (jpeg).
3. Должна быть возможность загрузки в конструктор новых элементов в формате, доступным для дальнейшего использования в конструкторе (png/svg). С указанием свойств, регламентирующих доступные действия с элементом на карте. Доступные свойства:
a. растягивание элемента без искажения;
b. частичное изменение геометрии
4. Должна быть возможность редактирования добавленных элементов в части: изменение цвета границ, толщины линий, цвета заливки, добавления надписей, растягивания, отображения объекта горизонтально/вертикально, масштабирования, вращения;
5. Должна быть возможность создавать новые элементы на основе имеющихся (сохранить как/скопировать);
6. Должна быть возможность сглаживания наложенных друг на друга прямоугольных объектов с измененной геометрией.

Составление схемы:
Последовательность действий для добавления элемента в область рисования:
1. Выбрать необходимый элемент в панели элементов щелчком мыши, зажать кнопку и переместить элемент в область рисования, на место в которое нужно вставить элемент.
2. Добавленные элементы активируются по щелчку мыши (в таком состоянии над ними можно совершать действия