mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) add grist.selectedTable.create/update/destroy/upsert to custom widget api
Summary: This makes an equivalent of the /records REST endpoint available within custom widgets. For simple operations, it is compatible with https://github.com/airtable/airtable.js/. About half of the diff is refactoring code from DocApi that implements /records using applyUserActions, to make that code available in the plugin api. Test Plan: added tests Reviewers: alexmojaki Reviewed By: alexmojaki Differential Revision: https://phab.getgrist.com/D3320
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
*/
|
||||
|
||||
// Some definitions have moved to be part of plugin API.
|
||||
import { CellValue, RowRecord } from 'app/plugin/GristData';
|
||||
export { CellValue, RowRecord } from 'app/plugin/GristData';
|
||||
import { BulkColValues, CellValue, RowRecord } from 'app/plugin/GristData';
|
||||
export { BulkColValues, CellValue, RowRecord } from 'app/plugin/GristData';
|
||||
|
||||
// Part of a special CellValue used for comparisons, embedding several versions of a CellValue.
|
||||
export interface AllCellVersions {
|
||||
@@ -108,7 +108,6 @@ export function getTableId(action: DocAction): string {
|
||||
// Helper types used in the definitions above.
|
||||
|
||||
export interface ColValues { [colId: string]: CellValue; }
|
||||
export interface BulkColValues { [colId: string]: CellValue[]; }
|
||||
export interface ColInfoMap { [colId: string]: ColInfo; }
|
||||
|
||||
export interface ColInfo {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import {delay} from 'app/common/delay';
|
||||
import {BindableValue, DomElementMethod, ISubscribable, Listener, Observable, subscribeElem, UseCB} from 'grainjs';
|
||||
import {Observable as KoObservable} from 'knockout';
|
||||
import constant = require('lodash/constant');
|
||||
import identity = require('lodash/identity');
|
||||
import times = require('lodash/times');
|
||||
|
||||
// Some definitions have moved to be used by plugin API.
|
||||
export {arrayRepeat} from 'app/plugin/gutil';
|
||||
|
||||
export const UP_TRIANGLE = '\u25B2';
|
||||
export const DOWN_TRIANGLE = '\u25BC';
|
||||
@@ -363,13 +364,6 @@ export function arraySplice<T>(target: T[], start: number, arrToInsert: ArrayLik
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a new array of length count, filled with the given value.
|
||||
*/
|
||||
export function arrayRepeat<T>(count: number, value: T): T[] {
|
||||
return times(count, constant(value));
|
||||
}
|
||||
|
||||
// Type for a compare func that returns a positive, negative, or zero value, as used for sorting.
|
||||
export type CompareFunc<T> = (a: T, b: T) => number;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user