# Json 文件格式

::: details 目录
[[toc]]
:::

## 整体数据格式

``` json
{
    data: [
        {
            elements:{                          // 平面图展示所需数据
                objExtInfo: [],                 // 对象扩展信息，所有与对象实例相关的图例（图标类型与区域）
                markers: [],                    // 与对象实例的标识对象（增加文本注释，图上的图片说明）
                relations: [],                  // 管线对象
            },
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            name: '',                           // 名称
            folderId: '',                       // 文件夹 id
            projectId: '',                      // 项目 id
            buildingId: '',                     // 建筑 id
            floorId: '',                        // 楼层 id
            note: '',                           // 图说明
            label: [''],                        // 图标签
            pic: '',                            // 图快照
            version: '',                        // 版本信息
            createTime: '',                     // 创建时间
            lastUpdate: '',                     // 最后更新时间
            state: 'Draft',                     // 标记(Draft: 未发布, WaitCheck: 待审核, Checked: 审核完成, Recyle: 回收站, Publish: 发布)
            ruleList: [                         // 实例数据获取规则
                {
                    returnType: '',             // 返回类型(equip: 设备, equipGroup: 设备组, zone: 空间)
                    commond: '',                // 命令类型(query: 查询, delete: 删除)
                    params: {},                 // 查询参数
                    note: '',                   // 命令说明
                }
            ],
            hideList: [''],                     // 隐藏的实例ID( 设备,空间 在物理世界的ID)
            style: [],                          // 风格    
        }
    ],
    message: '',                                //  接口返回提示
    result: ''                                  // 接口返回类型(success: 成功, error: 失败)
}
```

## 对象扩展信息

``` json
    objExtInfo:[
        {   
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            nodeId: '',                         // node 节点本身 id
            name: '',                           // 名称
            attachObjectIds: [],                 // 返回物理世界对象 id 列表
            type: '',                           // 节点类型(image / zone)
            pos: {x: 0, y: 0},                  // 位置
            properties: {},                     // 由应用自己定义
        },
        ...
    ]
```


## 风格定义

> 可以指定引用文件(只能引用一个), 或者使用自己的风格

``` json
    style: [
        {

        },
        ...
    ]
```

## 标识对象

``` json
    markers: [
        {
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            markerId: '',                       // marker 本身 id
            name: '',                           // 名称
            type: '',                           // 图标（Image），线类型(Line)，文本（Text）
            pos: {x: 0, y: 0},                  // 位置
            scale: {x: 1, y: 1, z: 1},          // 缩放
            rotate: {x: 0, y: 0, z: 0},         // 旋转
            size: {width: 0, height: 0},        // 大小
            properties: {},                     // 由应用自己定义
            style: {                            // 绘图样式
                default: {}                     // 默认状态样式
            },
        },
        ...
    ]
```

## 对象关系

> 设备删除/新增, 需要手动处理管线

``` json
    relations: [
        {
            id: '',                             // 图编号
            graphId: '',                        // 图 id
            relationId: '',                     // relation 本身 id
            name: '',                           // 名称
            graphElementId: '',                 // 对应的图元ID
            node1Id: '',                        // 关联节点1_id
            node2Id: '',                        // 关联节点2_id
            anchor1Id: '',                      // 关联锚点1_id
            anchor2Id: '',                      // 关联锚点2_id
            dir: 0,                             // 方向（0:无向，1：节点1到节点2，2：节点2到节点1)
            lineType: '',                       // 直线（Line），水平垂直
            properties: {},                     // 由应用自己定义
            style: {                            // 绘图样式
                outline: [{x:0,y:0,z:0},...],   // 折线数据
                default: {}                     // 默认状态样式
            }                           
        },
        ...
    ]
```
