* 💄 Hack to fix suggestion box
* 🐛 Fix validation messages
* 🐛 Relax operations check for managedReferences
* Change completion params
* 🏷️ Fix missing arg issue
* ✨ Add more tinymath fns
* 🐛 Improved validation around math operations + multiple named arguments
* 🐛 Use new onError feature in math expression
* ♻️ Refactor namedArguments validation
* 🐛 Fix circular dependency issue in tests + minor fixes
* Move formula into a tab
* 🔥 Leftovers from previous merge
* ✨ Move over namedArgs from previous function
* ✅ Add tests for transferable scenarios
* ✅ Fixed broken test
* ✨ Use custom label for axis
* Allow switching back and forth to formula tab
* Add a section for the function reference
* Add modal editor and markdown docs
* Change the way math nodes are validated
* Use custom portal to fix monaco positioning
* Fix model sharing issues
* Provide signature help
* 🐛 Fix small test issue
* 🐛 Mark pow arguments as required
* 🐛 validate on first render only if a formula is present
* 🔥 Remove log10 fn for now
* ✨ Improved math validation + add tests for math functions
* Fix mount/unmount issues with Monaco
* [Lens] Fully unmount React when flyout closes
* Fix bug with editor frame unmounting
* Fix type
* Add tests for monaco providers, add hover provider
* Add test for last_value
* Usability improvements
* Add KQL and Lucene named parameters
* Add kql, lucene completion and validation
* Fix autocomplete on weird characters and properly connect KQL
* Highlight functions that have additional requirements after validating
* Fix type error and move help text to popover
* Fix escape characters inside KQL
* 🐛 Fix dataType issue when moving over to Formula
* Automatically insert single quotes on every named param
* Only insert single quotes when typing kql= or lucene=
* Reorganize help popover
* Fix merge issues
* Update grammar for formulas
* Fix bad merge
* Rough fullscreen mode
* Type updates
* Pass through fullscreen state
* Remove more chrome from full screen mode
* Fix minor bugs in formula typing
* 🐛 Decouple column order of references and output
* 🔧 Fix tests and types
* ✅ Add first functional test
* Fix copying formulas and empty formula
* Trigger suggestion prompt when hitting enter on function or typing kql=
* 🐛 Prevent flyout from closing while interacting with monaco
* refactoring
* move main column generation into parse module
* fix tests
* refactor small formula styles and markup
* documentation
* adjustments in formula footer
* Formula refactoring (#12)
* refactoring
* move main column generation into parse module
* fix tests
* more style and markup tweak for custom formula
* Fix tests
* [Expressions] Use table column ID instead of name when set
* [Lens] Create managedReference type for formulas
* Fix test failures
* Fix i18n types
* fix fullscreen flex issues
* Delete managedReference when replacing
* refactor css and markup; add button placeholders
* [Lens] Formulas
* Tests for formula
Co-authored-by: Marco Liberati <marco.liberati@elastic.co>
* added error count placeholder
* Add tooltips
* Refactoring from code review
* Fix some editor issues
* Update ID matching to match by name sometimes
* Improve performance of Monaco, fix formulas with 0, update labels
* Improve performance of full screen toggle
* Fix formula tests
* fix stuff
* Add an extra case to prevent insertion of duplicate column
* Simplify logic and add test for output ID
* add telemetry for Lens formula (#15)
* Respond to review comments
* ✨ Improve the signatures with better documentation and examples
* adjust border styles to account for docs collapse
* refactor docs markup; restructure docs obj; styles
* Fix formula auto reordering (#18)
* fix formula auto reordering
* add unit test
* Fix and improve suggestion experience in Formula (#19)
* ✨ Revisit documentation and suggestions
* 👌 Integrated feedback
* ✨ Add query validation for quotes
* Usability updates & type fixes
* add search to formula
* fix form styles to match designs
* fix text styles; revert to Markdown for control
* 👌 Integrated more feedback
* improve search
* improve suggestions
* improve suggestions even more
* 🐛 Fix i18n issues (#22)
* Persist formula on leave, fix fullscreen and popovers
* Fix documentation tests
* 🏷️ fix type issue
* 🐛 Remove hidden operations from valid functions list
* 🐛 Fix empty string query edge case
* 🐛 Enable more suggestions + extends validation
* Fix tests that depended on setState being called without function
* Error state and text wrapping updates
* ✨ Add new module to CodeEditor for brackets matching (#25)
* Fix type
* show warning
* keep current quick function
* ✨ Improve suggestions within kql query
* 📷 Fix snapshot editor test
* 🐛 Improved suggestion for single quote and refactored debounce
* Fix lodash usage
* Fix tests
* Revert "keep current quick function"
This reverts commit ed477054c5
.
* Improve performance of dispatch by using timeout
* Improve memoization of datapanel
* Fix escape characters
* fix reduced suggestions
* fix responsiveness
* fix unit test
* Fix autocomplete on nested math
* Show errors and warnings on first render
* fix transposing column crash
* Update comment
* 🐛 Fix field error message
* fix test types
* 📝 Fix i18n name
* 💄 Manage wordwrap via react component
* Fix selector for palettes that interferes with quick functions
* Use word wrapping by default
* Errors for managed references are handled at the top level
* 🐛 Move the cursor just next to new inserted text
* ⚗️ First pass for performance
* 🐛 Fix unwanted change
* ⚡ Memoize as many combobox props as possible
* ⚡ More memoization
* Show errors in hover
* Use temporary invalid state when moving away from formula
* Remove setActiveDimension and shouldClose, fixed by async setters
* Fix test dependency
* do not show quick functions tab
* increase documentation popover width
* fix functional test
* Call setActiveDimension when updating visualization
* Simplify handling of flyout with incomplete columns
* Fix test issues
* add description to formula telemetry
* fix schema
* Update from design feedback
* More review comments
* Hide callout border from v7 theme
Co-authored-by: dej611 <dej611@gmail.com>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Joe Reuter <johannes.reuter@elastic.co>
Co-authored-by: Michael Marcialis <michael.marcialis@elastic.co>
Co-authored-by: Joe Reuter <email@johannes-reuter.de>
Co-authored-by: Marco Liberati <marco.liberati@elastic.co>
Co-authored-by: Marco Liberati <dej611@users.noreply.github.com>
Co-authored-by: Wylie Conlon <william.conlon@elastic.co>
Co-authored-by: dej611 <dej611@gmail.com>
Co-authored-by: Joe Reuter <johannes.reuter@elastic.co>
Co-authored-by: Michael Marcialis <michael.marcialis@elastic.co>
Co-authored-by: Joe Reuter <email@johannes-reuter.de>
Co-authored-by: Marco Liberati <marco.liberati@elastic.co>
Co-authored-by: Marco Liberati <dej611@users.noreply.github.com>
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
* Side Public License, v 1.
|
|
*/
|
|
|
|
export function parse(expression: string): TinymathAST;
|
|
export function evaluate(
|
|
expression: string | null,
|
|
context: Record<string, any>
|
|
): number | number[];
|
|
|
|
// Named arguments are not top-level parts of the grammar, but can be nested
|
|
export type TinymathAST = number | TinymathVariable | TinymathFunction | TinymathNamedArgument;
|
|
|
|
// Zero-indexed location
|
|
export interface TinymathLocation {
|
|
min: number;
|
|
max: number;
|
|
}
|
|
|
|
export interface TinymathFunction {
|
|
type: 'function';
|
|
name: string;
|
|
args: TinymathAST[];
|
|
// Location is not guaranteed because PEG grammars are not left-recursive
|
|
location?: TinymathLocation;
|
|
// Text is not guaranteed because PEG grammars are not left-recursive
|
|
text?: string;
|
|
}
|
|
|
|
export interface TinymathVariable {
|
|
type: 'variable';
|
|
value: string;
|
|
text: string;
|
|
location: TinymathLocation;
|
|
}
|
|
|
|
export interface TinymathNamedArgument {
|
|
type: 'namedArgument';
|
|
name: string;
|
|
value: string;
|
|
text: string;
|
|
location: TinymathLocation;
|
|
}
|