# Migrating from 0.6 to 1.0
To upgrade your HyperFormula version from 0.6.x to 1.0.x, follow this guide.
# Step 1: Change your license key
If you use the AGPLv3 license, or the free non-commercial license, you need to change your license key.
If you use a commercial license, you don't need to make any changes.
# Open-source license
If you use the open-source version of HyperFormula, in your configuration options, pass the gpl-v3
string instead of the agpl-v3
string:
Before:
const options = {
licenseKey: 'agpl-v3',
}
After:
const options = {
// use `gpl-v3` instead of `agpl-v3`
licenseKey: 'gpl-v3',
}
# Free non-commercial license
If you use the free non-commercial license, switch to the GPLv3 license or purchase a commercial license.
For more details on HyperFormula license keys, go here.
# Step 2: Change sheetName
to sheetId
Most sheet-related methods now take the sheetID
number parameter instead of the sheetName
string parameter.
For example, use the clearSheet()
method in this way:
Before:
const hfInstance = HyperFormula.buildFromSheets({
MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ],
MySheet2: [ ['10'] ],
});
const changes = hfInstance.clearSheet('MySheet2');
After:
const hfInstance = HyperFormula.buildFromSheets({
MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ],
MySheet2: [ ['10'] ],
});
// use `sheetId` instead of `sheetName`
const changes = hfInstance.clearSheet(1);
The only methods still accepting the sheetName
string parameter are now:
addSheet()
: needssheetName
to give a name to the new sheet. Generates the new sheet'ssheetId
isItPossibleToAddSheet()
: needssheetName
to check if it's possible to add a new sheet with that namedoesSheetExist()
: needssheetName
to check if a sheet with that name existsgetSheetId()
: needssheetName
to get the sheet'ssheetId
Also, these methods still accept the newName
string parameter:
renameSheet()
: needsnewName
to give a new name to an existing sheetisItPossibleToRenameSheet()
: needsnewName
to check if it's possible to give that new name to an existing sheet
# Step 3: Adapt to the matrix
->array
name changes
Adapt to the following changes in configuration option names, API method names and exception names:
# Configuration option names
Before | After |
---|---|
matrixColumnSeparator | arrayColumnSeparator |
matrixRowSeparator | arrayRowSeparator |
# API method names
Before | After |
---|---|
matrixMapping | arrrayMapping |
isCellPartOfMatrix | isCellPartOfArray |
# Exception names
Before | After |
---|---|
SourceLocationHasMatrixError | SourceLocationHasArrayError |
TargetLocationHasMatrixError | TargetLocationHasArrayError |
# Step 4: Drop the matrix formula notation
Switch from the matrix formula notation to the array formula notation.
For more information on the array formula notation, go here.
Before:
={ISEVEN(A2:A5*10)}
Now, if the useArrayArithmetic
configuration option is set to false
, use the ARRAYFORMULA
function to enable the array arithmetic mode locally:
=ARRAYFORMULA(ISEVEN(A2:A5*10))
But when the useArrayArithmetic
configuration option is set to true
, you don't need to use the ARRAYFORMULA
function, as the array arithmetic mode is enabled globally:
=ISEVEN(A2:A5*10)
# Step 5: Drop the matrixDetection
and matrixDetectionThreshold
options
Remove the matrixDetection
and matrixDetectionThreshold
options from your HyperFormula configuration.
Before:
// define options
const options = {
licenseKey: 'gpl-v3',
matrixDetection: true,
matrixDetectionThreshold: 150
};
After:
// define options
const options = {
licenseKey: 'gpl-v3'
// remove `matrixDetection` and `matrixDetectionThreshold`
};
# Step 6: Switch to the SimpleCellRange
type argument
If you use any of the following methods, update your code to take the SimpleCellRange
type argument:
copy()
cut()
getCellDependents()
getCellPrecedents()
getFillRangeData()
getRangeFormulas()
getRangeSerialized()
getRangeValues()
isItPossibleToMoveCells()
isItPossibleToSetCellContents()
moveCells()
Before:
const hfInstance = HyperFormula.buildFromArray([
['1', '2'],
]);
// takes `simpleCellAddress`, `width`, and `height`
// returns: [ [ 2 ] ]
const clipboardContent = hfInstance.copy({ sheet: 0, col: 1, row: 0 }, 1, 1);
After:
const hfInstance = HyperFormula.buildFromArray([
['1', '2'],
]);
// takes `simpleCellRange`
// returns: [ [ 2 ] ]
const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 } });
# Step 7: Adapt to the array changes
If you use any of the following methods, adjust your application to the changes in their behavior:
# setCellContents()
The setCellContents()
method now can override space occupied by spilled arrays.
# addRows()
and removeRows()
The addRows()
method now can add rows across a spilled array, without changing the array size.
The removeRows()
method now can remove rows from across a spilled array, without changing the array size.
# addColumns()
and removeColumns()
The addColumns()
method now can add columns across a spilled array, without changing the array size.
The removeColumns()
method now can remove columns from across a spilled array, without changing the array size.