-
Notifications
You must be signed in to change notification settings - Fork 0
企业统计应用 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: {} // 自定义命令的返回信息
}