Skip to content

企业统计应用 Reporting App

nekolab edited this page Sep 1, 2018 · 32 revisions

第三方开发者,登录 Teambition开发者中心,在需要配置的 应用 详情中,选择 应用能力配置 添加 Teambition 能力图表能力

此时,PC 端入口地址 即为对应的,由第三方开发的报表应用地址,该地址遵循以下规则:

  • 在呼起应用时,若需要知道当前点击的 报表ID, 入口地址可设置为: https://domain.com/path/to?reportId=$_id$

  • Teambition 内部会解析 ${ 报表字段名 }$ 内的报表字段

  • 如需其他报表字段传入此地址,只需要把对应字段添加到 query

  • 例如:通过 https://domain.com/path/to?reportId=$_id$&anyName=$_organizationId$ 可由 anyName 获得 企业ID 字段

Teambition 的企业统计应用中,当用户执行 保存另存为 等操作后,向第三方程序推送信息


报表字段

字段 含义 类型
_id 报表id string
logo 报表缩略图 string
name 报表名称 string
created 报表创建日期 ISOstring
updated 报表改动日期 ISOstring
_organizationId 报表所属企业id string
_featureId 报表所属能力id string
userId 用户id string

第三方统计报表程序接入

  • 安装
$ yarn add tslib
$ yarn add tb-apps-sdk

$ npm install tslib
$ npm install tb-apps-sdk
  • 使用
// ES6 Modules
import { AppSDK } from 'tb-apps-sdk'
import { hostAPI } from 'tb-apps-sdk/api/report-app'

// 接收到推送后的行为
const onPush = (...params) => {
  // params表示推送信息
  // console.log(...params)
  doSomethingWithParams(params)
}

const bridge = AppSDK.fork(hostAPI, onPush)
// 初始化
bridge.init()
// 发送已准备好接收推送的信号,参数见下
bridge.start({'save': true, 'saveAs': true, ...})

// CommonJS
var AppSDK = require('tb-apps-sdk').AppSDK
var hostAPI = require('tb-apps-sdk/api/report-app').hostAPI

function onPush(params) {
  doSomethingWithParams(params)
}

var bridge = AppSDK.fork(hostAPI, onPush)
bridge.init()
bridge.start({'save': true, 'saveAs': true, ...})

start 参数

一个对象,格式如下

{
  'save': true | false, // boolean, 表示是否支持 保存 功能, 默认支持
  'saveAs': true | false, // boolean, 表示是否支持 另存为 功能, 默认支持
  'customOrders': [{  // Array, 自定义命令数组, 默认无自定义命令
    icon: '...', // string, 表示自定义命令的显示图标名,图标库参考 teambition dls
    title: '...',  // 必填, string, 表示自定义命令的显示名称,长度超过 4 的部分做省略处理
    type: '...',  // 必填, string, 表示自定义命令的种类,点击后反应在下面的推送信息中
    ignores: // 'all' 或 Array<报表字段>, 表示推送信息中忽略的报表字段,默认不忽略;若为 'all' 表示忽略全部字段;若为数组则忽略数组中的字段名
  }, { ... }, { ... }],
}

请求和释放离开锁

在某些情况下,应用可能会需要在用户离开页面时进行二次确认,您可以通过请求离开锁来执行这个操作。在请求离开锁之后,用户在关闭应用,以及执行浏览器的前进/后退、关闭和刷新页面操作时都会收到确认通知。

当应用决定不再需要用户进行离开页面的二次确认时,可以释放离开锁。需要注意对于离开锁的请求是不会被累计叠加的,即无论请求了多少次离开锁都只需要一次释放操作。

  • 请求离开锁
bridge.requestLeavingLock()
  • 释放离开锁
bridge.releaseLeavingLock()

推送信息格式

  • 保存
{
  type: 'SAVE'
  payload: {
    _id, // 报表id
    logo, // 报表缩略图
    name, // 报表名称
    created, // 报表创建日期
    updated, // 报表改动日期
    _organizationId, // 报表所属企业id
    _featureId // 报表所属能力id
  }
}
  • 另存为
{
  type: 'SAVE_AS'
  payload: {
    _id, // 另存为的新报表id
    logo, // 报表缩略图
    name, // 报表名称
    created, // 报表创建日期
    updated, // 报表改动日期
    _organizationId, // 报表所属企业id
    _featureId // 报表所属能力id
  }
}
  • 删除
{
  type: 'DELETE'
  payload: {
    _id, // 报表id
  }
}
  • 自定义命令
{
  type: 'custom' // 用户定义的 type
  payload: {} // 自定义命令的返回信息
}
Clone this wiki locally