edt
Описание
Editable Table Viewport
Языки
- JavaScript95,5%
- CSS3,3%
- HTML1,2%
Editable Table Viewport with Formula Support
A JavaScript application that displays an editable spreadsheet-like table with viewport navigation, multiple sheet support, reactive formula computation, main menu, command line interface, context menu, cell tips, advanced selection features, and file operations.
Screenshots




Features
- 7x7 Viewport: Displays a fixed 7x7 grid of cells (7 rows × 7 columns)
- Multiple Sheets: Supports multiple worksheets with independent data
- Formula Support:
- Basic arithmetic expressions (+, -, *, /, ^)
- Spreadsheet functions: SUM, AVG, MAX, MIN, COUNT, SUMPRODUCT, VLOOKUP
- Mathematical Functions: ABS, ACOS, ANGLE, ASIN, ATN, CEIL, COS, COT, CSC, DEG, EXP, FLOOR, FP, INT, IP, LOG, LOG10, MOD, POWER, POW, RAD, RMD, RND, SEC, SGN, SIN, SQR, TAN
- Utility Functions: DATE, EPS, INF, PI, TIME
- Cell references (e.g.,
,A1,B2)ZZ14 - Range references (e.g.,
)A1:C3 - Cross-sheet references (e.g.,
,first.A1)second.B3
- Main Menu Bar: File, Edit, Selection, Navigation, View, Help menus with keyboard shortcuts
- Command Line Interface: Execute commands with history and auto-completion
- File Operations: Open/Save
files, Export to CSV.edt - Advanced Selection System:
- Column selection (click column headers)
- Row selection (click row headers)
- Individual cell selection (Ctrl+Click)
- Range selection (Shift+Arrow keys or Shift+Click)
- Select All (Ctrl+A)
- Clear selection (Esc)
- Per-sheet selection persistence
- Context Menu: Right-click on any cell for quick actions
- Cell Tips: Add, show, hide, edit, and delete sticky notes for any cell
- Copy/Cut/Paste: Full clipboard support with metadata preservation
- Dual Mode Display:
- Formulas Mode: Shows actual formulas (e.g.,
)=SUM(A1:A3) - Results Mode: Shows computed values
- Formulas Mode: Shows actual formulas (e.g.,
- Reactive Computation: Formulas automatically recalculate when referenced cells change
- Cell Editing: Double-click any cell to edit its content
- Viewport Navigation: Move the viewport around a virtual grid:
- Move to top/bottom/left/right edges (Page Up/Down, Home/End)
- Step up/down/left/right one row/column at a time (Ctrl+Page Up/Down, Ctrl+Home/End)
- Arrow key navigation with auto-scroll
- Large Virtual Grid: Supports up to 999 rows and columns up to ZZZ (18,278 columns)
- Position & Selection Indicator: Shows current viewport range, active mode, and selection status
Mathematical Functions Reference
The application includes a comprehensive set of mathematical and trigonometric functions for advanced calculations.
Absolute Value and Sign Functions
| Function | Syntax | Description | Example | Result |
|---|---|---|---|---|
| ABS | | Returns the absolute value of x | | |
| SGN | | Returns the sign of x (-1, 0, or 1) | | |
| INT | | Returns the largest integer ≤ x (same as FLOOR) | | |
| FLOOR | | Returns the largest integer ≤ x | | |
| CEIL | | Returns the smallest integer ≥ x | | |
| IP | | Returns the integer part (truncates toward zero) | | |
| FP | | Returns the fractional part of x | | |
Power and Exponentiation Functions
| Function | Syntax | Description | Example | Result |
|---|---|---|---|---|
| POWER | | Returns base raised to the power exponent | | |
| POW | | Alias for POWER function | | |
| ^ operator | | Exponentiation operator | | |
Note: The POWER function (and its POW alias) support both comma () and semicolon () as argument separators. The caret operator () provides a convenient shorthand for exponentiation.
Exponentiation Rules and Edge Cases
| Case | Example | Result | Explanation |
|---|---|---|---|
| Positive base | | | Standard exponentiation |
| Exponent zero | | | Any number ^ 0 = 1 |
| Negative exponent (integer) | | | 1 / (2.5²) |
| Negative exponent (float) | | | 1 / (2^1.5) |
| Fractional base | | | 0.5³ |
| Negative base, odd exponent | | | (-2)³ |
| Negative base, even exponent | | | (-2.5)² |
| Zero base, positive exponent | | | 0² |
| Zero base, exponent zero | | | Undefined |
| Zero base, negative integer | | | Division by zero |
| Zero base, negative float | | | 1/√0 (undefined) |
| Negative base, fractional exponent | | | √(-4) (complex) |
Trigonometric Functions (Radians)
| Function | Syntax | Description | Example | Result |
|---|---|---|---|---|
| SIN | | Returns the sine of x (x in radians) | | |
| COS | | Returns the cosine of x (x in radians) | | |
| TAN | | Returns the tangent of x (x in radians) | | |
| COT | | Returns the cotangent of x | | |
| SEC | | Returns the secant of x (1/cos(x)) | | |
| CSC | | Returns the cosecant of x (1/sin(x)) | | |
Inverse Trigonometric Functions
| Function | Syntax | Description | Domain | Example | Result |
|---|---|---|---|---|---|
| ASIN | | Returns the arcsine of x (Quadrants I/IV) | [-1, 1] | | (1.5708) |
| ACOS | | Returns the arccosine of x (Quadrants I/II) | [-1, 1] | | (1.5708) |
| ATN | | Returns the arctangent of x (Quadrants I/IV) | All reals | | (0.7854) |
| ANGLE | | Returns the angle φ formed by point (x,y) | All reals | | (0.7854) |
Note: is equivalent to and returns the angle in radians between the positive x-axis and the point (x, y), ranging from -π to π.
Exponential and Logarithmic Functions
| Function | Syntax | Description | Domain | Example | Result |
|---|---|---|---|---|---|
| EXP | | Returns e raised to the power x | All reals | | |
| LOG | | Returns the natural logarithm of x | x > 0 | | |
| LOG10 | | Returns the base-10 logarithm of x | x > 0 | | |
| SQR | | Returns the positive square root of x | x ≥ 0 | | |
Angle Conversion Functions
| Function | Syntax | Description | Example | Result |
|---|---|---|---|---|
| DEG | | Converts radians to degrees | | |
| RAD | | Converts degrees to radians | | (1.5708) |
Arithmetic and Modulo Functions
| Function | Syntax | Description | Example | Result |
|---|---|---|---|---|
| MOD | | Returns x modulo y (x - y * floor(x/y)) | | |
| RMD | | Returns the remainder of x/y (x - y * truncate(x/y)) | | |
Constants and Utility Functions
| Function | Syntax | Description | Example | Result |
|---|---|---|---|---|
| PI | or | Returns the mathematical constant π | | |
| EPS | | Returns machine epsilon (smallest representable number) | | |
| INF | | Returns positive infinity | | |
| DATE | | Returns current date in dd-mm-yyyy format | | |
| TIME | | Returns seconds since midnight | | |
| RND | | Returns a pseudo-random number in [0, 1) | | |
Function Usage Examples
Selection System
The application features a comprehensive selection system that allows you to select cells, rows, columns, and ranges with visual feedback.
Selection Methods
| Method | Action | Description |
|---|---|---|
| Click column header | Select entire column | Click on any column letter (A, B, C, etc.) |
| Click row header | Select entire row | Click on any row number (1, 2, 3, etc.) |
| Ctrl+Click on cell | Toggle cell selection | Add or remove individual cell from selection |
| Shift+Click on cell | Range selection | Select range from current focus to clicked cell |
| Shift+Arrow keys | Extend range | Expand selection from current focus |
| Ctrl+A | Select all | Select all cells in the entire sheet |
| Esc | Clear selection | Remove all current selections |
Selection Visual Feedback
| Selection Type | Color | Description |
|---|---|---|
| Column selection | Blue background | Entire column highlighted |
| Row selection | Red background | Entire row highlighted |
| Individual cell | Green background | Selected cells highlighted |
| Range selection | Purple background | Rectangular range highlighted |
| Select All | Light green background | All visible cells highlighted |
| Focus cell | Green thick border | Current active cell indicator |
Selection Status Display
A selection status bar at the top of the application shows:
- "All Cells Selected" when entire sheet is selected
- Column names when columns are selected
- Row numbers when rows are selected
- Range addresses (e.g.,
) when ranges are selectedA1:C3 - Cell addresses when individual cells are selected
Selection Persistence
- Selections are saved per sheet (each sheet maintains its own selection state)
- Selections are preserved when switching between sheets
- Selections are saved to
files and restored on open.edt - Focus cell position is saved and restored
Keyboard Navigation with Selection
| Key Combination | Action |
|---|---|
| Move focus (auto-scrolls viewport) |
+ | Extend range selection |
| Move to top edge |
| Move to bottom edge |
| Move to left edge |
| Move to right edge |
| Step up one row |
| Step down one row |
| Step left one column |
| Step right one column |
Context Menu (Right-Click)
Right-click on any cell to open a context menu with the following options:
Edit Submenu
| Menu Item | Keyboard Shortcut | Description |
|---|---|---|
| Copy | | Copy cell content to clipboard |
| Cut | | Cut cell content to clipboard and clear the cell |
| Paste | | Paste clipboard content to selected cell |
Tips Submenu
The Tips submenu is dynamic and changes based on the cell's tip state:
| Cell State | Menu Items |
|---|---|
| No tip exists | Add Tip |
| Tip exists and visible | Hide Tip, Edit Tip, Delete Tip |
| Tip exists and hidden | Show Tip, Edit Tip, Delete Tip |
Tip Operations
| Operation | Description |
|---|---|
| Add Tip | Adds a yellow sticky note to the cell with custom text |
| Show Tip | Displays a hidden tip |
| Hide Tip | Hides a visible tip (preserves content) |
| Edit Tip | Modifies the tip text |
| Delete Tip | Permanently removes the tip |
Tip Features:
- Yellow background with light bulb icon (💡)
- Rounded corners with arrow pointing to cell
- Close button to dismiss
- Auto-positioning (above cell by default, below if not enough space)
- Persists across sheet switches and saves
- Visual indicator (💡) in top-right corner of cells with tips
Main Menu
The application features a comprehensive main menu bar with the following menus and items:
File Menu
| Menu Item | Action | Keyboard Shortcut | Description |
|---|---|---|---|
| Open .edt | Open file dialog | | Open a previously saved spreadsheet file |
| Save .edt | Save current data | | Save all sheets data to an file |
| Export to CSV | Export current sheet | | Export the current sheet to CSV format |
Edit Menu
| Menu Item | Action | Description |
|---|---|---|
| Formulas Mode | Switch to formulas view | Display cell formulas instead of computed values |
| Results Mode | Switch to results view | Display computed values instead of formulas |
Selection Menu
| Menu Item | Action | Keyboard Shortcut | Description |
|---|---|---|---|
| Select All | Select entire sheet | | Select all cells in the spreadsheet |
| Clear Selection | Remove all selections | | Clear all current selections |
Navigation Menu
| Menu Item | Action | Keyboard Shortcut | Description |
|---|---|---|---|
| Move to Top | Go to top edge | | Move viewport to the top of the sheet |
| Move to Bottom | Go to bottom edge | | Move viewport to the bottom of the sheet |
| Move to Left Edge | Go to left edge | | Move viewport to the left edge |
| Move to Right Edge | Go to right edge | | Move viewport to the right edge |
| Step Up | Move up one row | | Move viewport up one row |
| Step Down | Move down one row | | Move viewport down one row |
| Step Left | Move left one column | | Move viewport left one column |
| Step Right | Move right one column | | Move viewport right one column |
View Menu
| Menu Item | Action | Keyboard Shortcut | Description |
|---|---|---|---|
| Refresh | Refresh the view | | Refresh the current view and recalculate all formulas |
Help Menu
| Menu Item | Action | Description |
|---|---|---|
| About | Show about dialog | Display application information and version |
| Keyboard Shortcuts | Show shortcuts dialog | Display all available keyboard shortcuts |
Command Line Interface
The command line interface provides a developer-friendly way to control the spreadsheet. Press `Ctrl+`` (backtick) to focus the command input.
Available Commands
File Commands
| Command | Usage | Description |
|---|---|---|
| | Open an file |
| | Save spreadsheet to file |
| | Export current sheet to CSV |
View Commands
| Command | Usage | Description |
|---|---|---|
| | Switch to Formulas Mode |
| | Switch to Results Mode |
| | Refresh the current view |
Navigation Commands
| Command | Usage | Description |
|---|---|---|
| | Move viewport to specific cell (e.g., ) |
| | Switch to a different sheet |
Info Commands
| Command | Usage | Description |
|---|---|---|
| | List all available sheets |
| | Show current spreadsheet information |
| | Show available commands or help for specific command |
System Commands
| Command | Usage | Description |
|---|---|---|
| | Clear the command line output |
| | Show command history |
| | Close the command line interface |
Command Line Features
- Command History: Use
and↑arrow keys to navigate through command history↓ - Output Coloring: Different message types have distinct colors:
- Blueinfo- Greensuccess- Rederror- Orangewarning
- Collapsible Output: Click the header to minimize/hide command history
- Keyboard Shortcut: `Ctrl+`` (backtick) to focus the command input
- Clear Output: Use the
button or⌧commandclear
Keyboard Shortcuts
File Operations
| Shortcut | Action |
|---|---|
| Open .edt file |
| Save .edt file |
| Export to CSV |
Edit Operations
| Shortcut | Action |
|---|---|
| Copy selected cell |
| Cut selected cell |
| Paste to selected cell |
| Edit cell content |
Selection Operations
| Shortcut | Action |
|---|---|
| Select all cells |
| Clear all selections |
| Range selection |
| Toggle cell selection |
Navigation
| Shortcut | Action |
|---|---|
| Move focus (auto-scroll) |
+ | Extend range selection |
| Move to top edge |
| Move to bottom edge |
| Move to left edge |
| Move to right edge |
| Step up one row |
| Step down one row |
| Step left one column |
| Step right one column |
System
| Shortcut | Action |
|---|---|
| Refresh view |
| Toggle command line |
Expressions and Spreadsheet Functions
The Editable Table Viewport supports a powerful formula engine with AST-based computation. Below is comprehensive documentation on supported expressions and functions.
Basic Arithmetic Expressions
All formulas must start with the character.
| Operation | Syntax | Example | Result |
|---|---|---|---|
| Addition | | | |
| Subtraction | | | |
| Multiplication | | | |
| Division | | | |
| Exponentiation | | | |
| Combined | | | |
| Nested Parentheses | | | |
Supported Operands
- Numbers: Integers and decimals (e.g.,
,42,3.14)10.5 - Cell References: Single cells (e.g.,
,A1,B2)ZZ14 - Cross-Sheet References: Cells from other sheets (e.g.,
,first.A1)second.B3
Spreadsheet Functions
The following built-in functions are available for data computation:
SUM
Calculates the sum of all numeric values in a range or list of arguments.
=SUM(range)
=SUM(value1, value2, ...)
Examples:
| Formula | Description | Result |
|---|---|---|
| Sum of values in range A1 through A10 | Sum of 10 cells |
| Sum of values in rectangular range | Sum of 9 cells |
| Sum of specific cells | A1 + B2 + C3 |
| Cross-sheet range sum (shorthand) | Sum from another sheet |
AVG
Calculates the arithmetic mean (average) of all numeric values in a range.
=AVG(range)
=AVG(value1, value2, ...)
Examples:
| Formula | Description | Result |
|---|---|---|
| Average of values in range A1 through A5 | Sum / Count |
| Average of cells C17, D17, E17 | (C17+D17+E17)/3 |
| Cross-sheet average (shorthand) | Average from another sheet |
Note: Empty cells and non-numeric values are excluded from the calculation.
MAX
Returns the maximum (largest) numeric value in a range.
=MAX(range)
=MAX(value1, value2, ...)
Examples:
| Formula | Description | Result |
|---|---|---|
| Maximum value in range A1 through A100 | Highest value |
| Maximum of 10 cells | Highest of C1-C10 |
| Maximum across sheets | Larger of two values |
MIN
Returns the minimum (smallest) numeric value in a range.
=MIN(range)
=MIN(value1, value2, ...)
Examples:
| Formula | Description | Result |
|---|---|---|
| Minimum value in range D1 through D10 | Lowest value |
| Minimum of rectangular range | Lowest of 9 cells |
COUNT
Counts the number of numeric values in a range.
=COUNT(range)
=COUNT(value1, value2, ...)
Examples:
| Formula | Description | Result |
|---|---|---|
| Count of numeric values in range | Number of cells with numbers |
| Count of specific cells | 3 (if all numeric) |
SUMPRODUCT
Multiplies corresponding components in the given arrays and returns the sum of those products.
=SUMPRODUCT(range1, range2)
=SUMPRODUCT(range1, range2, range3, ...)
Key Features:
- Supports 2 or more ranges
- Ranges must have the same dimensions (same number of cells)
- Empty cells are treated as 0
- Non-numeric values are ignored
- Supports cross-sheet references
- Works with single row, single column, and rectangular ranges
Examples:
| Formula | Description | Calculation | Result |
|---|---|---|---|
| Two vertical ranges | A1×B1 + A2×B2 + A3×B3 | Sum of products |
| Two horizontal ranges | A1×A2 + B1×B2 + C1×C2 | Sum of products |
| Three ranges | (A1×B1×C1) + (A2×B2×C2) | Sum of triple products |
| Cross-sheet ranges | Multiplies values across sheets | Sum of cross-sheet products |
Practical Examples:
Use Cases:
- Weighted Averages: =SUMPRODUCT(weights, values) / SUM(weights)
- Dot Product: Calculate vector dot product of two ranges
- Conditional Sums: Combine with Boolean expressions
- Cross-Sheet Analysis: Aggregate data from multiple worksheets
- Multi-dimensional Calculations: Multiply three or more ranges for volume/area calculations
VLOOKUP
Looks up a value in the first column of a table and returns a value in the same row from a specified column.
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Arguments:
| Argument | Description | Required |
|---|---|---|
| The value to search for in the first column of the table | Yes |
| The range of cells that contains the lookup table | Yes |
| The column number in the table from which to return a value (1-indexed) | Yes |
| Optional. TRUE = approximate match (default), FALSE = exact match | No |
Key Features:
- Exact Match (FALSE/0): Finds exact match, returns #N/A if not found
- Approximate Match (TRUE/1): Finds closest match (requires first column sorted ascending)
- Cross-Sheet Support: Can reference tables from other sheets
- Case-Insensitive: String matching is case-insensitive
- Type Handling: Properly handles numbers, strings, and mixed types
Examples:
| Formula | Description | Result |
|---|---|---|
| Exact match for Product B | Returns 200 |
| Approximate match for grade | Returns "B" |
| Cross-sheet exact lookup | Returns price |
Error Messages:
| Error | Cause |
|---|---|
| Missing required arguments |
| Column index < 1 or not a number |
| Table array is not a valid range |
| Column number > table columns |
| No exact match found |
POWER / POW
Raises a number to a specified power.
=POWER(base, exponent)
=POW(base, exponent)
=base ^ exponent
Arguments:
| Argument | Description | Required |
|---|---|---|
| The base number | Yes |
| The exponent to raise the base to | Yes |
Key Features:
- Supports both comma (
) and semicolon (,) as argument separators; - Handles positive and negative bases
- Handles integer and floating-point exponents
- Follows Excel behavior for edge cases
Examples:
| Formula | Description | Result |
|---|---|---|
| 2.5 raised to the 3rd power | 15.625 |
| 2 raised to the 3rd power (alias) | 8 |
| Caret operator shorthand | 8 |
| 2 raised to the -2nd power | 0.25 |
| Zero raised to positive power | 0 |
| Negative base with odd exponent | -8 |
| Negative base with even exponent | 6.25 |
Error Messages:
| Error | Cause |
|---|---|
| 0^0 (undefined) or negative base with fractional exponent |
| 0 raised to a negative integer exponent |
Cell References
Single Cell Reference
Reference a specific cell by its column letter and row number.
=A1 // Column A, Row 1
=B2 // Column B, Row 2
=ZZ14 // Column ZZ, Row 14
Range Reference
Reference a rectangular range of cells using the colon () separator.
=A1:C3 // From A1 to C3 (9 cells total)
=A1:A10 // Column A, rows 1 through 10
=B5:Z5 // Row 5, columns B through Z
Cross-Sheet References
Reference cells from other worksheets using the format.
Single Cell Cross-Sheet
=first.A1 // Value from sheet "first", cell A1
=second.B3 + 100 // Value from sheet "second" plus 100
Range Cross-Sheet (Shorthand)
=SUM(first.A2:A4) // Sum range in "first" sheet (end cell same sheet)
=AVG(first.C17:E17) // Average range in "first" sheet (shorthand)
=SUMPRODUCT(first.A1:A5, second.B1:B5) // SUMPRODUCT across sheets
=VLOOKUP(A1, prices.A1:B100, 2, FALSE) // VLOOKUP across sheets
Note: Cross-sheet ranges support shorthand notation where the sheet name only needs to be specified before the start cell (e.g., ).
Architecture
The application follows a clean modular MVC-like architecture with separate concerns. The codebase is organized into several directories:
Core Components (/classes)
| Class | Description |
|---|---|
| Represents nodes in the Abstract Syntax Tree |
| Evaluates AST nodes and handles cell references |
| Main entry point for formula computation |
| Stores all sheet data and provides CRUD operations |
| Dynamically loads spreadsheet functions |
| Parses formula strings directly into AST nodes |
| Provides computed properties for view state |
| Renders the 7x7 viewport as an HTML table |
| Handles viewport navigation |
| Manages cell edit events |
| Orchestrates all components |
| Creates and manages the main menu bar |
| Provides command line interface |
| Manages cell tip display |
| Handles right-click context menu |
| Stores selection data per sheet |
| Applies selection styles to cells |
| Manages selection events and state |
Actions (/actions)
| Action | Description |
|---|---|
| Open .edt JSON files |
| Save spreadsheet as .edt |
| Export current sheet to CSV |
| Edge navigation actions |
| Step navigation actions |
| Focus movement actions |
| Select all cells action |
| Copy cell content to clipboard |
| Cut cell content to clipboard |
| Paste clipboard content to cell |
| Add a tip to a cell |
| Show a hidden tip |
| Hide a visible tip |
| Edit tip text |
| Delete tip from cell |
Spreadsheet Functions (/functions)
| File | Function | Description |
|---|---|---|
| ABS | Returns absolute value |
| ACOS | Returns arccosine |
| ANGLE | Returns angle of point (x,y) |
| ASIN | Returns arcsine |
| ATN | Returns arctangent |
| AVG | Calculates arithmetic mean |
| CEIL | Returns smallest integer ≥ x |
| COS | Returns cosine |
| COT | Returns cotangent |
| COUNT | Counts numeric values |
| CSC | Returns cosecant |
| DATE | Returns current date |
| DEG | Converts radians to degrees |
| EPS | Returns machine epsilon |
| EXP | Returns e^x |
| FLOOR/INT | Returns largest integer ≤ x |
| FP | Returns fractional part |
| INF | Returns positive infinity |
| IP | Returns integer part (truncate) |
| LOG | Returns natural logarithm |
| LOG10 | Returns base-10 logarithm |
| MAX | Returns maximum value |
| MIN | Returns minimum value |
| MOD | Returns modulo |
| PI | Returns π constant |
| POWER/POW | Raises number to a power |
| RAD | Converts degrees to radians |
| RMD | Returns remainder |
| RND | Returns random number |
| SEC | Returns secant |
| SGN | Returns sign (-1, 0, 1) |
| SIN | Returns sine |
| SQR | Returns square root |
| SUM | Sums all numeric values |
| SUMPRODUCT | Multiplies and sums products |
| TAN | Returns tangent |
| TIME | Returns seconds since midnight |
| VLOOKUP | Looks up values in a table |
File Structure
.
├── actions
│ ├── ActionAddTip.js
│ ├── ActionCopy.js
│ ├── ActionCut.js
│ ├── ActionDeleteTip.js
│ ├── ActionEditTip.js
│ ├── ActionHideTip.js
│ ├── ActionMoveToBottom.js
│ ├── ActionMoveToLeft.js
│ ├── ActionMoveToRight.js
│ ├── ActionMoveToTop.js
│ ├── ActionPaste.js
│ ├── ActionShowTip.js
│ ├── ActionStepDown.js
│ ├── ActionStepLeft.js
│ ├── ActionStepRight.js
│ ├── ActionStepUp.js
│ ├── ExportCSVAction.js
│ ├── MoveFocusDownAction.js
│ ├── MoveFocusLeftAction.js
│ ├── MoveFocusRightAction.js
│ ├── MoveFocusUpAction.js
│ ├── OpenAction.js
│ ├── SaveAction.js
│ └── SelectAllCellsAction.js
├── classes
│ ├── AppController.js
│ ├── ASTEvaluator.js
│ ├── ASTNode.js
│ ├── CellsEditablesController.js
│ ├── CommandLine.js
│ ├── ComputationEngine.js
│ ├── DataHolder.js
│ ├── FormulaTokenizer.js
│ ├── FunctionRegistry.js
│ ├── MainMenu.js
│ ├── NavButtonsController.js
│ ├── PopupContextMenu.js
│ ├── SelectionDataHolder.js
│ ├── SelectionManager.js
│ ├── SelectionViewDrawer.js
│ ├── SheetView.js
│ ├── SimpleFormulaParser.js
│ ├── UITip.js
│ └── ViewModel.js
├── commandline.css
├── edt.css
├── edt.html
├── edt.js
├── functions
│ ├── abs.js
│ ├── acos.js
│ ├── angle.js
│ ├── asin.js
│ ├── atn.js
│ ├── avg.js
│ ├── ceil.js
│ ├── cos.js
│ ├── cot.js
│ ├── count.js
│ ├── csc.js
│ ├── date.js
│ ├── deg.js
│ ├── eps.js
│ ├── exp.js
│ ├── floor.js
│ ├── fp.js
│ ├── inf.js
│ ├── ip.js
│ ├── log10.js
│ ├── log.js
│ ├── max.js
│ ├── min.js
│ ├── mod.js
│ ├── pi.js
│ ├── power.js
│ ├── rad.js
│ ├── rmd.js
│ ├── rnd.js
│ ├── sec.js
│ ├── sgn.js
│ ├── sin.js
│ ├── sqr.js
│ ├── sum.js
│ ├── sumproduct.js
│ ├── tan.js
│ ├── time.js
│ └── vlookup.js
├── LICENSE
├── mainmenu.css
├── README.md
├── test.html
└── testing
├── tests.css
└── tests.js
Testing
The application includes a comprehensive test suite () that validates all formula functionality:
- 111+ Test Cases covering arithmetic, cell references, functions, cross-sheet references, SUMPRODUCT, VLOOKUP, all mathematical functions, and exponentiation (POWER, POW, ^ operator)
- 100% Pass Rate on all test cases
- Visual Test Results with green/red highlighting for pass/fail indicators
- Report Generation for failed tests with copy to clipboard functionality
- Filtering options (show all, passed only, failed only)
Run from the HTTP server to validate the formula engine.
Version History
v1.8.0 (Current)
- Added POWER and POW functions for exponentiation
- Added caret operator (
) for inline exponentiation^ - Support for both comma (
) and semicolon (,) as argument separators in functions; - Comprehensive edge case handling for exponentiation (0^0, negative bases with fractional exponents)
- Added 31 new test cases for POWER, POW, and caret operator
- Achieved 111 total test cases with 100% pass rate
v1.7.0
- Added 30+ mathematical and utility functions
- Added trigonometric functions: SIN, COS, TAN, COT, SEC, CSC
- Added inverse trigonometric functions: ASIN, ACOS, ATN, ANGLE (ATAN2)
- Added exponential and logarithmic functions: EXP, LOG, LOG10, SQR
- Added integer functions: INT, FLOOR, CEIL, IP, FP
- Added modulo functions: MOD, RMD
- Added constants and utilities: PI, EPS, INF, DATE, TIME, RND
- Added angle conversion functions: DEG, RAD
- Added sign and absolute value functions: ABS, SGN
- Enhanced cross-sheet range support with shorthand notation
- Added comprehensive mathematical function documentation
v1.6.0
- Added comprehensive selection system
- Added column selection (click column headers)
- Added row selection (click row headers)
- Added individual cell selection (Ctrl+Click)
- Added range selection (Shift+Arrow keys or Shift+Click)
- Added Select All (Ctrl+A) with visual feedback
- Added Clear Selection (Esc)
- Added per-sheet selection persistence
- Added selection status display
- Added Selection menu in main menu bar
- Added MoveFocus actions for keyboard navigation
- Added SelectAllCellsAction
- Improved viewport auto-scroll during selection
- Enhanced visual feedback with color-coded selections
v1.5.0
- Added Context Menu (right-click) with dynamic Tip management
- Added Cell Tips feature with full CRUD operations
- Added Copy, Cut, Paste functionality with metadata preservation
- Added dynamic menu items based on tip state (Show/Hide toggle)
- Added tip indicator (💡) on cells with tips
- Added tip repositioning on scroll/resize
- Added metadata persistence for tips in save/load
- Added close button on tips to hide them
v1.4.0
- Added Main Menu bar with File, Edit, View, Help menus
- Added Command Line Interface with command history
- Added File operations: Open/Save
files, Export to CSV.edt - Added Navigation actions as modular components
- Added keyboard shortcuts for all major operations
- Added modal dialogs for About and Keyboard Shortcuts
- Refactored styles into separate CSS files
v1.3.0
- Refactored codebase into modular architecture with separate class files
- Added dynamic class loading system
- Added VLOOKUP function with exact and approximate match support
v1.2.0
- Added SUMPRODUCT function with support for 2+ ranges
- Enhanced cross-sheet reference support
v1.1.0
- Added cross-sheet reference support
- Implemented range references for all functions
v1.0.0
- Initial release with basic arithmetic and spreadsheet functions
- Viewport navigation and multiple sheet support
- Dual mode display (formulas/results)