(core) Adds setSelectedRows to the grist api for custom view

Summary:
This is needed to let custom widget driver filtering of other widget in the same page.

Descripion here:
 - https://grist.quip.com/ctytAQJoFMsM/Hopefully-Small-Projects#temp:C:NNCfe2030b27647439886ca83595

Test Plan: New api tested in a new nbrowser test

Reviewers: paulfitz

Reviewed By: paulfitz

Differential Revision: https://phab.getgrist.com/D3253
This commit is contained in:
Cyprien P
2022-02-01 20:51:40 +01:00
parent e264094412
commit 2f6eafff35
7 changed files with 58 additions and 7 deletions

View File

@@ -7,8 +7,7 @@ import * as t from "ts-interface-checker";
export const ComponentKind = t.union(t.lit("safeBrowser"), t.lit("safePython"), t.lit("unsafeNode"));
export const GristAPI = t.iface([], {
"render": t.func("number", t.param("path", "string"), t.param("target", "RenderTarget"),
t.param("options", "RenderOptions", true)),
"render": t.func("number", t.param("path", "string"), t.param("target", "RenderTarget"), t.param("options", "RenderOptions", true)),
"dispose": t.func("void", t.param("procId", "number")),
"subscribe": t.func("void", t.param("tableId", "string")),
"unsubscribe": t.func("void", t.param("tableId", "string")),
@@ -24,6 +23,8 @@ export const GristDocAPI = t.iface([], {
export const GristView = t.iface([], {
"fetchSelectedTable": t.func("any"),
"fetchSelectedRecord": t.func("any", t.param("rowId", "number")),
"allowSelectBy": t.func("void"),
"setSelectedRows": t.func("void", t.param("rowIds", t.array("number"))),
});
const exportedTypeSuite: t.ITypeSuite = {

View File

@@ -99,4 +99,10 @@ export interface GristView {
// Similar TODO to fetchSelectedTable for return type.
fetchSelectedRecord(rowId: number): Promise<any>;
// Allow custom widget to be listed as a possible source for linking with SELECT BY.
allowSelectBy(): Promise<void>;
// Set the list of selected rows to be used against any linked widget. Requires `allowSelectBy()`.
setSelectedRows(rowIds: number[]): Promise<void>;
}

View File

@@ -47,6 +47,8 @@ export const coreDocApi = rpc.getStub<GristDocAPI>('GristDocAPI@grist', checkers
export const viewApi = rpc.getStub<GristView>('GristView', checkers.GristView);
export const widgetApi = rpc.getStub<WidgetAPI>('WidgetAPI', checkers.WidgetAPI);
export const sectionApi = rpc.getStub<CustomSectionAPI>('CustomSectionAPI', checkers.CustomSectionAPI);
export const allowSelectBy = viewApi.allowSelectBy;
export const setSelectedRows = viewApi.setSelectedRows;
export const docApi: GristDocAPI & GristView = {
...coreDocApi,