我构建了一个与您正在创建的内容相似的平面图应用程序。随意查看源代码并创建自己的 fork。希望你能从中得到一些启发。
与 SVG 操作最相关的代码是Map.js,因此您可能希望从那里开始。地图 SVG 之一存储在mv.svg中。
遗憾的是,我无法将您指向正在运行的实时实例,因为它位于内部 HR 服务器上。
架构笔记
- 墙壁和房间名称存储在 SVG 文件中。
- 在 Adobe Illustrator 中生成,可以导入 AutoCAD DWG
- 手动编辑的 SVG 以包含座位坐标的 JavaScript 数组
- 在页面加载时,服务器端模板将 SVG 插入 HTML 源代码
- 否则,如果使用
<object>
or<image>
标签或 CSS加载 SVG background-image
,您将无法通过 JavaScript 访问 SVG DOM
- 从 Mongo 数据库中检索动态数据(会议、席位)并通过 JSON REST API 公开
- 客户端 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 自动生成)。
配置
config.json.example
您可以通过将提供的内容复制到config.json
新文件并在新文件中进行更改来配置数据库连接和 HTTP 服务器设置。
截屏