News in versions: FastGrid 1.0, TreeGrid 17.0
FastGrid FastSheet ExamplesSamples DocumentationDoc Download Licensing Prices Buy Development
services
References References Contacts
TreeGrid Gantt chart SpreadSheet ExamplesSamples DocumentationDoc Download Licensing Prices Buy Contacts
FastGrid documentation
Search in documentation
FastGrid versions compatibility

Changes log (txt file) Compare FastGrid 1.0 & TreeGrid 17.1

Using in JavaScript frameworks

Angular Ember Express React Svelte Vue Other frameworks NodeJS server SalesForce LWC

Data and creating FastGrid

Simple examples of creating FastGrid Create FastGrid Display grid Access grid by API Sheets, more grids switched in one place Layout and configuration Data rows, columns, toolbars, images Changes in data rows, columns, toolbars Saving changes to server Mark changes Loading children on expand parent Short format

Layout - grid parts

Parts - ColParts and RowParts Part size Part scroll position Sets Column sets Row sets

Toolbars

Toolbar Cells Icon Height Width Toolbar position Dragging and manipulating cells Special toolbars

Rows and columns
Default rows, columns, cells, toolbars
Row and column identity

Row / column id Row / column index Row / column name

Row and column manipulation

API to get grid objects Auto added columns & rows on scroll Blocks of rows / columns Adding / copying / moving Deleting Showing and hiding Layout menu Selecting rows and columns Fill cell values by dragging Locking grid against changes Undo & redo

Row and column tree

Row and column tree Row tree Column tree Expand & collapse

Cells
Cell values and attributes

Read and write any values by API Cell value Cell attributes Cell value & attributes in UTF8 Store

Editing cells

Editing During editing Validation and errors

Cell images

Row cell side icons Icons definition Mark icons and charts Mark icons list Row cell floating images

Cell size

Row height Column width Resizing rows and columns Padding Margin Cell span

Cell style

Grid style and look Cell style permissions Cell style Cell outer border Cell inner border Alternate row & column background

Other cell features

Cell hyperlink Cell tooltip Static cells Other cell attributes Row & column attributes to speed up

Cell types and formats
Cell type and format Range - more values / ranges in cell String type Html type Auto type
Bool type

Bool type Check side icon Bool type & Check side icon

Number type

Format Localization

Date type

Format Localization Calendar

Calculations - formulas
JavaScript formulas

JavaScript formulas Aggregate functions String aggregate functions Other functions

Editable formulas

Formula rules Formula attributes Defined names for editable formulas Conditional functions Lookup functions Cell reference functions Logical functions Informational functions Mathematical functions Trigonometry functions Rounding numbers Number conversions String functions Date functions Summary functions

Dialogs and menus

Dialog Dialog Place Dialog API Menu definition in Script Cell menu List Suggest

Features
Sorting rows / columns

Sorting Sorting settings Comparing strings

Grouping rows / columns

Grouping Grouping settings Comparing strings Pivot grid

Filtering rows and columns

Filtering Filter settings Comparing strings

Search in cells Import files to grid
Export files

Export files Export and copy to clipboard CSV data

Copy & paste via system clipboard

Copy & paste Copy to clipboard Paste from clipboard

Printing

Print Print to PDF

Global grid settings
Grid size & scroll

Grid size Grid scrollbars Paging and view Media rules - responsive design

Saving settings in storage or cookies
Focus and hover cells

Focus cell and cell ranges Mouse hover cells Highlight cells, rows and columns

Events

Mouse events Key events API events

Language

Translation Languages

Messages

Message Message style

Other API

API for iterating rows and columns Paint and repaint Various API methods

Debug & files

Debugging FastGrid files

UTF8 Store - fast & short data
Introduction - License & download

Basic description Main advantages Basic usage License Download Documentation

Script language implementations

JavaScript C# JAVA PHP

Suggested ucodes

Bits - small integers or enums Integers or enums with strings Date and time Floating point numbers Special strings

Basic ucodes

Integer 1 char String 1 char Date 1 char Bits 1 char Integer 2 chars String 2 chars Date 2 chars Float 2 chars Integer 3 chars String 3 chars Date 3 chars Integer and double float 5 chars String 5 chars Date 5 chars Fixed length string Separated strings Adjacent strings Prefix for escaping string Fixed length data Unused custom codes Prefix for stored separator or length Prefix for stored base number Unused basic ucodes

Complex ucodes

chars signed decimals multiple limits varstrings escape base chars2 signed2 decimals2 multiple2 limits2

Internal coding Profiling times for ucode options Function reference

Complex ucodes in UTF8 Store

UTF8 Store documentation; version 1.0

The complex ucode has always set some bit of 0x1C00 => (ucode & 0x1C00) != 0.
The complex ucode can have 1, 2, 3 or 5 chars.
The complex ucode can be got by function GetUCode ( int chars = 1, int sign = 0, int decimals = 0, int multiple = 1, int limits = 0, int varstrings = 0, int escape = 0, number base = null, int chars2 = null, int sign2 = 0, int decimals2 = 0, int multiple2 = 1, int limits2 = 0 ).

GetUCode() parameterGetUCode() valuesucode hexadecimal valuesDescription
chars1, 2, 3, 50x00, 0x10, 0x20, 0x30Number of characters every value occupies, can be 1, 2, 3, 5.
signed0, 10x00, 0x40 0 (0) - positive values are coded smaller. For 1+2 chars the negative range is much smaller than positive.
1 (64) - positive and negative values are coded in the same size and ranges.
decimals0 ... 150x00, 0x01, 0x02, 0x03,
0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D, 0x0E, 0x0F
Sets number of decimal places the number can have, e.g. value 2 means 0.00, value 4 means 0.0000.
The number is multiplied by decimals value in the below table before it is stored and divided back when it is read.
0123 4567 89101112131415
1 char1101001e31e4 0.50.20.10.010.001 1 / 6e4
minutes in ms
1 / 36e5
hours in ms
1 / 864e5
days in ms
24
hours in day
1440
minutes in day
86400
seconds in day
2 chars1101001e31e4 1e51e61e71e80.001 1 / 6e4
minutes in ms
1 / 36e5
hours in ms
1 / 864e5
days in ms
24
hours in day
1440
minutes in day
86400
seconds in day
3+5 chars1101001e31e4 1e51e61e71e81e9 1e101e111e121e131e141e15
It changes the limits, e.g. for chars = 1, limit = 0, sign = 0, decimals = 0 the limits are <-100,63000>, for decimals = 2 the limits are <-1.00,630.00>, for decimals = 7 the limits are <-1000,630000>.
Values 10, 11, 12 in 1+2 chars are for JavaScript times as integer count of milliseconds, values 13, 14, 15 are for MS Excel times as decimal count of days.
multiple1, 10, 100 for 1 char
1, 10, 100, 1000, 10000,
100000 for 2+3+5 chars
0x400, 0x800, 0xC00 for 1 char
0x400, 0x800, 0xC00, 0x1000,
0x1400, 0x1800 for 2+3+5 chars
Which numbers will be coded smaller, e.g. 100 means that numbers 0, 100, 200, 300, .... will be coded smaller than 1,2,...,101,102,...
It is affected by decimals, e.g. if set decimals = 2, multiple = 100, the 1.00, 2.00, 3.00 will be coded smaller.
Value 0 is reserved to mark the basic ucode.
limits0 ... 15 for 1 char
0 ... 3 for 2+3+5 chars
0x0000, 0x1000, 0x2000, 0x3000,
0x4000, 0x5000, 0x6000, 0x7000
0x8000, 0x9000, 0xA000, 0xB000,
0xC000, 0xD000, 0xE000, 0xF000
for 1 char

0x0000, 0x2000, 0x4000, 0x6000
for 2+3+5 chars
Specifies number range (maximal and minimal number) and precision (number of significant digits).
For 1 char and sign 0:0 (0x0000)<-100,63000> (300 texts)8<0,63000> (400 texts, first 100 texts coded smaller)
1 (0x1000)<-100,50000> (13300 texts)9<0,50000> (13400 texts, first 100 texts coded smaller)
2 (0x2000)<-100,40000> (23300 texts)10<0,40000> (23400 texts, first 100 texts coded smaller)
3 (0x3000)<-100,20000> (43300 texts)11<0,20000> (43400 texts, first 100 texts coded smaller)
4 (0x4000)<-100,10000> (53300 texts)12<0,10000> (53400 texts, first 100 texts coded smaller)
5 (0x5000)<-10000,50000> (3400 texts)13<-10000,50000> (3400 texts, first 100 texts coded smaller)
6 (0x6000)<-10000,40000> (13400 texts)14<-10000,40000> (13400 texts, first 100 texts coded smaller)
7 (0x7000)<-10000,20000> (33400 texts)15<-10000,20000> (33400 texts, first 100 texts coded smaller)
For 1 char and sign 1:0 (0x0000)<-31500,31500> (400 texts)8<-31500,31500> (400 texts, first 100 texts coded smaller)
1 (0x1000)<-25000,25000> (13400 texts)9<-25000,25000> (13400 texts, first 100 texts coded smaller)
2 (0x2000)<-20000,20000> (23400 texts)10<-20000,20000> (23400 texts, first 100 texts coded smaller)
3 (0x3000)<-10000,10000> (43400 texts)11<-10000,10000> (43400 texts, first 100 texts coded smaller)
4 (0x4000)<-5000,5000> (53400 texts)12<-5000,5000> (53400 texts, first 100 texts coded smaller)
For 2 chars it is number of significant digits:0 (0x0000)10 digits (limits <-1e7,4e9> / <-2e9,2e9>)
1 (0x2000)9 digits (limits <-1e7,1e12> / <-1e10,1e10>)
2 (0x4000)8 digits (limits <-1e7,1e47> / <-1e27,1e27>)
3 (0x6000)7 digits (limits <0,1e150> (1e-100) / <-1e100,1e100> (+/-1e-100)) - ignores decimals parameter.
For 3+5 chars it is number of significant digits:0 (0x0000)14 digits (limits <-1e14,1e14>)
1 (0x2000)13 digits (limits <-1e22,1e22>)
2 (0x4000)12 digits (limits <-1e111,1e111>)
3 (0x6000)11 digits (limits <-1e150,1e150> (+/-1e-150)) - ignores decimals parameter
The values 0 - 7 for char 1 cannot be used with the second ucode and values 8 - 15 for char 1 cannot be used with base!
If value in chars 5 extends its limits, it is coded as double in range <-1e308,1e308>, with 15 digits precision and minimal value 1e-322.
varstrings0, 10x00, 0x80 0 (0) - Stores all strings in texts or utexts. The size (chars) of the value is always the same.
1 (128) - Stores everything directly to output string. The size (chars) of the value varies. Cannot be used in FastGrid U / B!
escape0, 1, 2, 30x000, 0x100, 0x200, 0x300If and how escapes problematic characters in strings:
1 (4096) - Prefixes characters \t, \r, \n, \", \\ by \\ in all stored strings.
2 (8192) - Works like 1 plus replaces 007F character by "\\x7F" in all stored strings (except varstrings stored directly).
3 (12288) - Works like 2 plus replaces all 0000 - 001F, 0085, 00A0 characters by "\\xXX" in all stored strings.
basenull,
integer <1,32767>
2 digits integer +/- 1e150
2 digits floating +/- 1e-13
0x00000000,
0x00010000 ~ 0xFFFF0000
If set, the base is subtracted from the number before it is stored and added back when returned the number from store. It cannot be set with signed2.
The stored base is integer number in range <1,32767> or rounded to two singnificant digits and forced in integer range (-1e150,1e150) and minimal decimal 1e-13.
If set decimals to divide or time (only options 5-15 for chars = 1 or 9-15 for chars = 2), the base is divided by the decimals before storing to ucode.
The base can be used to shorten the stored numbers if they oscillate around some base number to save only the difference. It is often used for dates.
Using base outside range <1,32767> or with floating point will produce negative ucode as 32bit integer.
chars2null,
1, 2, 3, 5
0x000000,
0x008000, 0x108000, 0x208000, 0x308000
Number of characters every value occupies for the second ucode option, can be 1, 2, 3, 5.
If set to null, the second ucode is not used. It cannot be set with base.
The second ucode is used when the number cannot be stored in the first ucode option due its limits.
In the second ucode the escape is used from the first ucode and varstrings is always 0.
signed20, 10x000000, 0x400000The sign for the second ucode option.
decimals20 ... 150x00000, 0x10000, 0x20000, 0x30000,
0x40000, 0x50000, 0x60000, 0x70000,
0x80000, 0x90000, 0xA0000, 0xB0000,
0xC0000, 0xD0000, 0xE0000, 0xF0000
The decimals for the second ucode option.
multiple20, 1, 10, 100, 1000,
10000, 100000
0x0000000, 0x0800000, 0x1000000, 0x1800000,
0x2000000, 0x2800000, 0x3000000, 0x3800000
The multiple for the second ucode option. Value 0 is taken as 1.
limits20 ... 30x0000000, 0x4000000,
0x8000000, 0xC000000
The limits for the second ucode option.