diff --git a/packages/datalib/src/runMacro.ts b/packages/datalib/src/runMacro.ts index afe70513d..537d0863f 100644 --- a/packages/datalib/src/runMacro.ts +++ b/packages/datalib/src/runMacro.ts @@ -1,5 +1,8 @@ import { FreeTableModel } from './FreeTableModel'; import _ from 'lodash'; +import uuidv1 from 'uuid/v1'; +import uuidv4 from 'uuid/v4'; +import moment from 'moment'; import { MacroDefinition, MacroSelectedCell } from './MacroDefinition'; const getMacroFunction = { @@ -12,6 +15,9 @@ const getMacroFunction = { const modules = { lodash: _, + uuidv1, + uuidv4, + moment, }; export function runMacro( diff --git a/packages/web/src/datagrid/DataGridCore.js b/packages/web/src/datagrid/DataGridCore.js index 4df0680c5..eaaf64c51 100644 --- a/packages/web/src/datagrid/DataGridCore.js +++ b/packages/web/src/datagrid/DataGridCore.js @@ -111,6 +111,7 @@ export default function DataGridCore(props) { grider, onSelectionChanged, frameSelection, + onKeyDown, } = props; // console.log('RENDER GRID', display.baseTable.pureName); const columns = React.useMemo(() => display.allColumns, [display]); @@ -668,6 +669,10 @@ export default function DataGridCore(props) { }; function handleGridKeyDown(event) { + if (onKeyDown) { + onKeyDown(event); + } + if (event.keyCode == keycodes.f5) { event.preventDefault(); display.reload(); diff --git a/packages/web/src/freetable/FreeTableGrid.js b/packages/web/src/freetable/FreeTableGrid.js index 5f4161c0b..5d2a43a06 100644 --- a/packages/web/src/freetable/FreeTableGrid.js +++ b/packages/web/src/freetable/FreeTableGrid.js @@ -56,6 +56,7 @@ export default function FreeTableGrid(props) { macroPreview={selectedMacro} macroValues={macroValues} onSelectionChanged={setSelectedCells} + setSelectedMacro={setSelectedMacro} /> {!!selectedMacro && ( { + if (event.keyCode == keycodes.escape) { + setSelectedMacro(null); + } + }, []); + return ( ); } diff --git a/packages/web/src/freetable/macros.js b/packages/web/src/freetable/macros.js index de7d26786..94921e076 100644 --- a/packages/web/src/freetable/macros.js +++ b/packages/web/src/freetable/macros.js @@ -51,6 +51,40 @@ const macros = [ type: 'transformValue', code: `return rowIndex + 1`, }, + { + title: 'Generate UUID', + name: 'uuidv1', + group: 'Tools', + description: 'Generate unique identifier', + type: 'transformValue', + args: [ + { + type: 'select', + options: [ + { value: 'uuidv1', name: 'V1 - from timestamp' }, + { value: 'uuidv4', name: 'V4 - random generated' }, + ], + label: 'Version', + name: 'uuidVersion', + }, + ], + code: `return modules[args.uuidVersion || 'uuidv1']()`, + }, + { + title: 'Current date', + name: 'currentDate', + group: 'Tools', + description: 'Gets current date', + type: 'transformValue', + args: [ + { + type: 'text', + label: 'Format', + name: 'dateFormat', + }, + ], + code: `return modules.moment().format(args.dateFormat || 'YYYY-MM-DD HH:mm:ss')`, + }, ]; export default macros;