接口: PivotDefinition
一种可运行的丰富功能:它的名称、运行的内容、如何宣传现有内容以及如何获取它。
拓展是两个函数和一些元数据。 PivotDefinition.summarize 是廉价的“那里有什么”调用,其方面成为缩小控制范围; PivotDefinition.fetch才是真正的。结果是 候选者 — 为分类而上演,永远不会在画布上 — 除非拓展声明 PivotDefinition.autoIngest。
属性
appliesTo()?
optionalappliesTo: (nodes) =>boolean|Node[]
该拓展是否适用于给定的原点,以及适用于多少。每次原点更改时都要重新读取,因此它必须是同步的且成本低廉。省略它,拓展适用于所有事物。当origin为'none'时不咨询。
返回一个 boolean 作为关于整个原点的规则 - “仅选择两个或更多”,“从不在音符上”。对于一次读取一个节点的规则,返回它应用于的节点,这是丰富的正常情况:混合域和IP的选择仍然提供仅域提供商,而不是单独的域。空数组的含义与 false 相同。
无论它保留什么,都是调用提供者的来源 - summarize 和 fetch 永远不会看到被拒绝的节点。
appliesTo: nodes => nodes.length >= 2 // whole origin
appliesTo: nodes => nodes.filter(n => accepted.has(typeOf(n))) // per node参数
nodes
Node[]
返回值
boolean | Node[]
autoIngest?
optionalautoIngest:boolean
直接着陆结果,而不是将其分期进行分类。对于小的、可信的结果——将事件扩展到其对象——而不是分析师想要挑选的任何东西。该上限仍然适用。
true 和 false 都是答案,无论运行如何开始,都成立。不设置它与不是与false相同:它表示拓展没有视图,因此一键运行可能会单独决定大小 - 请参阅PivotRunOptions。autoIngestUpTo。以任何其他方式运行仍处于舞台状态。
默认值
undefined — stages, unless the run itself sets a size to land underautoSave?
optionalautoSave:boolean
每次跑步落地后立即写下,无需任何手势。对于其结果已经是源系统自己的数据的拓展(将事件扩展到其对象),其中保存是更新而不是决策。
保存在摄取解析之后运行,而不是在摄取解析内部运行,因此缓慢的后端永远不会支撑画布;其结果由通知者报告。
默认值
falsefetch()
fetch: (
nodes,narrowing,ctx) =>PivotResult|Promise<PivotResult>
真实价值因分析师的选择而缩小。
参数
nodes
Node[]
narrowing
ctx
返回值
PivotResult | Promise<PivotResult>
icon?
optionalicon:string
SVG 字符串,注入 innerHTML 且未经清理——它必须是可信的。
id
id:
string
稳定身份:注册表项的内容以及摄取时写入的出处标签。
label
label:
string
标签,逐字使用(因此可以翻译)。
maxCandidates?
optionalmaxCandidates:number
当广告计数超过此值时拒绝获取。提供者不知道的计数 (total: null) 永远不会被拒绝。没有库默认值:声明没有上限的拓展永远不会被 1 门控(PivotManagerLike。candidateCeiling 的绝对上限仍然适用于 fetch 返回的值)。
menuChoices()?
optionalmenuChoices: (nodes) =>PivotMenuChoice[]
上下文菜单的选项。对于任何一个,拓展的行都会打开一个子菜单,每个选项一行,每个选项都在缩小的位置上运行拓展,最后一行打开拓展面板。接收拓展适用的节点。同步且便宜,如 appliesTo:每次打开菜单时都会运行。
返回 [],或省略钩子,以获得没有变窄的普通行。
参数
nodes
Node[]
返回值
示例
// Enrich an object through one of its attributes.
menuChoices: ([object]) => attributesOf(object).map(a => ({
label: `${a.type}: ${a.value}`,
narrowing: { attribute: [a.id] },
}))origin?
optionalorigin:"none"|"selection"
这个拓展运行的基础是什么。 'selection' 拓展需要一个原点——分析师指向的节点; 'none' 拓展根本不需要任何节点(搜索、导入、暂存托盘)并接收 []。
默认值
'selection'save()?
optionalsave: (payload,ctx) =>PivotSaveOutcome|Promise<PivotSaveOutcome>
将摄取的运行结果写回到源系统 - 合约的一半不是只读的。
省略它,该拓展表的结果是不可保存:它们永远不会进入分类帐,永远不会被算作未保存,并且不会为它们显示“保存”。对无法写入任何地方的派生数据进行的枢转应该忽略它,而不是声明一个失败的数据。
库永远不会单独调用 - 显式的 PivotManagerLike.save 或 PivotDefinition.autoSave。消费者执行写入;图书馆只是询问并记录答案。
参数
payload
ctx
返回值
PivotSaveOutcome | Promise<PivotSaveOutcome>
summarize()?
optionalsummarize: (nodes,narrowing,ctx) =>PivotSummary|Promise<PivotSummary>
便宜的“外面有什么”。在任何窄化存在之前用 {} 调用,并在原点或窄化发生变化时重新运行;它的各个方面成为缩小控制范围,其 total 是判断上限的数字。
省略它,拓展不会提供广告计数,也不会缩小 - 合法,但是 PivotDefinition.fetch 必须安全地调用盲注,因为没有任何东西可以控制它。
参数
nodes
Node[]
narrowing
ctx
返回值
PivotSummary | Promise<PivotSummary>