Space
空间SDK模块类,通过创建该类的实例对象,可以提供读取空间相关操作能力
属性
list
获取当前空间下的所有子空间元数据列表
类型:
SpaceMetaData[]
示例
import Tacos, { Root } from "@tslfe/tacos-sdk";
...
const space = await root.search<Space>("/Office");
// 读取当前office空间下的所有资源信息
const curSpaceList = space.list;
device
返回当前空间下的设备sdk实例对象
类型:
Device
参考: Device
mode
返回当前空间下的模式sdk实例对象
类型:
Mode
参考: Mode
plan
返回当前空间下的计划sdk实例对象
类型:
Plan
参考: Plan
rule
返回当前空间下的规则sdk实例对象
类型:
Rule
参考: Rule
layout
返回当前空间下的布局sdk实例对象
类型:
Layout
参考: Layout
方法
fullPath()
获取当前空间的所在全路径空间目录树
fullPath: () => Promise<SpaceTree>
参考:SpaceTree
参数
- 无
返回类型
Promise<SpaceTree>
返回值
SpaceTree
: 空间资源目录树
示例
const space = await root.search<Space>("/Office");
// 返回当前空间所在的office全路径目录
const spaceTree = await space.fullPath();
path()
获取当前空间下全部子空间路径信息列表(包括空间 id
和空间 path
路径)
path: () => Promise<{ id: string; path: string}[]>
参数
- 无
返回类型
Promise<{ id: string; path: string}[]>
返回值
id
: 空间id
path
: 空间path
路径
示例
const space = await root.search<Space>("/Office");
// 获取当前Office空间下所有子空间路径
const pathList = await space.path();
// return [
// { id: 100001, path: "/Office/childSpace1"},
// { id: 100002, path: "/Office/childSpace2"}
//]
parent()
获取当前空间所在父级空间SDK实例对象
parent: <S>() => Promise<TacosSDK & S>
参考:TacosSDK
参数
- 无
返回类型
Promise<TacosSDK & S>
示例
const space = await root.search<Space>("/Office/space1");
// 返回当前space1空间的父空间Office sdk对象
const parent = await space.parent();
root()
获取根节点空间SDK对象
root: <S>()=> Promise<TacosSDK & S>
参数
- 无
返回类型
Promise<TacosSDK & S>
示例
const space = await root.search<Space>("/Office/space1/space2");
// 返回当前space2空间链路上根空间root sdk对象
const parent = await space.root();
search()
查询当前空间的某个子要素SDK实例对象
search: <S>(tacosPath:string) => Promise<TacosSDK & S>
参数
tacosPath
: 相对路径资源定位符xpath
(相对于当前空间层级)
返回类型
Promise<TacosSDK & S>
示例
import type { Space, Device } from "@tslfe/tacos-sdk"
// 根空间查询传入绝对路径
const space = await root.search<Space>("/Office/space1/space2");
// 相对于space2空间层级,查询其空间下的设备id=12345的设备sdk对象(相对路径)
const device = space.search<Device>("./devices/*[@id='123456']");
findById()
根据空间 id
查找子空间SDK实例对象
findById: (id:string) => Space
参考:Space
参数
id
: 空间id
返回值
Space
示例
const subSpace = space.findById("100010");
getSpaceMode()
根据空间 id
查找对应空间所启用的模式
getSpaceMode: (spaceId: string) => Promise<string>
参数
spaceId
: 空间id
返回值
- 模式编码
示例
const curMode = await space.getSpaceMode("100010");
getSpacePathBy()
根据目标空间 id
获取不包含自身空间的所有父级空间 name
getSpacePathBy: (id: string, list: SpaceNode[], paths: string[]) => string[]
参考:SpaceNode
参数
id
: 目标空间id
list
: 空间目录树paths
: 保存的所有父级空间name
数组
示例
const parentPaths = space.getSpacePathBy(id, pathTree, []);
// return parentPaths : ["yingli","46", "office"]
xml()
基于当前空间 xpath
路径生成 xml
字符串列表
xml: () => string[]
参数
- 无
返回值
xml
字符串列表
示例
// xpath: yingli/46
const xmls = space.xml();
// return: ["<space name='46' driver='office' id='01014601' zhname='46'></space>"]
事件
addListener
注册监听空间内所有指令下发的消息推送
function addListener(
callback: (body: SocketResponseBody) => void,
options?: Partial<SocketConfig>
) => void
参数
callback
: 消息回调函数必传body
:socket
消息日志主体
options
:socket
连接配置信息选传
返回值
- 无
示例
const yingli46 = await root.search("/yingli/46");
// 监听yingli46楼所有的设备下发指令成功的消息
yingli46.addListener((body)=>{
if(body.messageType === "device_property_notice"){
// 判定设备指令成功上报
}
})
removeListener
移除空间日志消息监听
function removeListener() => void
- 示例
const yingli46 = await root.search("/yingli/46");
// 监听yingli46楼所有的设备下发指令成功的消息
yingli46.addListener((body)=>{
...
})
// 移除yingli46空间模块对象的设备指令消息监听
yingli46.removeListener()