Ответ 1
Я создал приложение для планшета, которое похоже на то, что вы создаете. Не стесняйтесь смотреть на исходный код и создавать свою собственную вилку. Надеюсь, вы сможете извлечь из этого вдохновение.
Код, наиболее подходящий для манипуляции SVG, - Map.js, поэтому вы можете начать с него. Один из SVG- карт хранится в mv.svg.
К сожалению, я не могу указать вам на живой экземпляр, на котором это работает, потому что он находится на внутреннем персональном сервере.
Заметки архитектуры
- стены и названия комнат хранятся в SVG файле.
- созданный в Adobe Illustrator, который может импортировать AutoCAD DWG
- SVG, отредактированный вручную, включает в себя массив JavaScript координат места
- при загрузке страницы серверный шаблон вставляет SVG в источник HTML
- в противном случае, если SVG загружается с использованием
<object>
или<image>
илиbackground-image
CSS, у вас не будет доступа к SVG DOM с помощью JavaScript
- в противном случае, если SVG загружается с использованием
- динамические данные (встречи, места) извлекаются из базы данных Mongo и отображаются через API JSON REST
- клиентское приложение JavaScript MVC использует Backbone для вставки динамических данных в SVG DOM и присоединения обработчиков событий
- при щелчке персонального аватара отображается подробная информация о человеке
- когда пользователь вводит в поле поиска, аватары в SVG получают классы CSS, применяемые так, чтобы изображения аватаров, не совпадающие с поиском, были полупрозрачными
Схема базы данных
База данных Mongo имеет коллекцию people
, каждая из которых содержит документ следующей формы:
{
"_id" : ObjectId("5201db41f5f4be9ae57e37a9"),
"fullname" : "Ben Hutchison",
"desk" : 3,
"office" : "mv",
"email" : "ben",
"title" : "Software Engineer, Graphic Designer",
"tags" : [ "des", "eng" ],
"linkedInId" : 139463329,
"mobilePhone" : "845-986-0123",
"workPhone" : "408-550-2995"
}
Единственное обязательное поле - fullname
(и _id
, но я даю Mongo автогенерировать это).
конфигурация
Вы можете настроить подключение к базе данных и настройки HTTP-сервера, скопировав предоставленный config.json.example
в config.json
и внеся изменения в новый файл.
Скриншот