Space

空间SDK模块类,通过创建该类的实例对象,可以提供读取空间相关操作能力

属性

list

获取当前空间下的所有子空间元数据列表

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();

查询当前空间的某个子要素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

参考:SocketResponseBody; SocketConfig

  • 参数

    • 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()
上次更新:
贡献者: jiangtao, zhengqian