Releases: fin-hypergrid/core
Hypergrid v3.3.2
Minor version update
This release introduces new functionality while remaining interface-backwards-compatible with prior v3.. releases.
Contents
1. Removed off-screen blitting support
This feature was off by default. Turning it on produced no measurable performance gain (in Chrome at least). We may add it back later if we can realize a benefit.
- Removed
grid.properties.useBitBlit
,grid.canvas.bc
, andgrid.canvas.buffer
- The method
grid.canvas.flushBuffer()
is now a no-op
2. Added support for zoom
CSS style
style.zoom
is non-standard but widely supported. (The only exception is Firefox.)
This PR adds the following support for when a Hypergrid is zoomed by setting document.body.style.zoom
:
- Canvas resolution is now optimized with respect to the zoom settings of all the elements in the chain
- Mouse tracking coordinates are now properly adjusted when zoomed
Tested on Chrome, Safari, IE 11, and regression tested on Firefox where it has no effect.
Added method grid.resetZoom()
which should be called:
- Any time you set the
document.body.style.zoom
. This does two things: Optimizes the canvas resolution; adjusts the mouse coordinates. - After user adjusts browser zoom using ctrl +/- to optimize the resolution. This optimizes the canvas resolution for a sharper image. The mouse coordinates are not adjusted for browser zoom. The only way to tell if browser zoom changed (I believe) is to poll
getComputedStyle(htmlElement).zoom
(wherehtmlElement = document.body.parentElement
).
Important caveat: Setting
zoom
style on any other element betweenbody
andcanvas
is not accommodated byresetZoom
.
Pre-bundled build files
A bundled build of this release is available on the CDN:
fin-hypergrid.js
2.2M (includes source map)fin-hypergrid.min.js
257K (no source map)
Published to npm
This release has been published as a module to the npm registry, including umd
folder that contains the same two build files found on the GitHub CDN.
Hypergrid v3.2.2
Contents
-
Scrolling on touch devices (see PR #807)
With much thanks to @AmirF27 (sorry for the delay!) -
column.header setter no longer calls grid.repaint()
This was the only call to repaint() outside of a UI interaction, so for consistency we are removing it. To see column header text change immediately, call grid.repaint() explicitly following column.header assignments or calls to grid.behavior.setHeaders(arrayOfHeaderText).
Build files
No build files are being published with this release because the next release (v3.3.2) will follow immediately.
NOTE
This version matches in content and version number a fork called faux-hypergrid
.
Hypergrid v3.2.1
Minor version update
This is a "patch release" (fixes/improvements); it is interface-backwards-compatible with all v3...
Contents
- Anonymous column calculator bug (see PR #786)
- New:
./umd
folder in npm module
As noted in the previous release (v3.2.0)...
Worth repeating:
Change regarding Versioning
Going forward and starting with [the v3.2.0] release, we shall bump the minor version number (middle tupple of version number) on any new functionality per npm SEMVER.
Previously we were often just bumping the patch number (last tupple), but patches are meant for bug fixes that do not introduce any new functionality. The semantics for a minor version bump is non-breaking/backwards compatible. It may however be expanded with new but optional parameters; just so long as it doesn't break existing code.
Change regarding pull requests
Going forward and starting with this release, we shall be switching over to the single-item-per-PR paradigm (where "item" is a bug fix or new feature implementation).
Previously we were putting an entire release's items into a single branch/PR with separate commits per item. This was easy to work with for me as the only active contributor because commits therein could be based on earlier commits without intermediate merges. Besides not being conducive to multiple contributors, however, it was difficult (impossible really) to get anyone to code review a big PR. Doing so requires reviewing each commit one by one. GitHub conversations are better supported at the PR level rather than at the commit level.
This change in strategy should make reviewing less daunting and hopefully we'll get more feedback before merging.
A final merge-to-master PR for the release shall bump the version number and update the README. A summary of the constituent PRs shall be listed in the PR description field (as well as being plainly visible in the commit list below the description).
Regarding rebasing
Constant rebasing is not necessary just to move the commit ahead of develop before the merge. Although the resulting git log --graph
railroad diagrams end of with leap-frogging commit paths, they are still easily comprehensible. Only rebase when there are merge conflicts (which GitHub will tell you). After all, during a PR merge, git applies the same merge algorithms as would be performed in a rebase with no conflicts.
Published to npm
This release has been published as a module to the npm registry.
umd
folder
The npm module now includes a ./umd
folder which contains the same two build files found on the GitHub CDN (fin-hypergrid.js
and fin-hypergrid.min.js
).
Pre-bundled build files
A bundled build of this release is available on the CDN.
Hypergrid v3.2.0
Note regarding the CDN release
The 3.2.0 pre-bundled build files were not published to the CDN as intended on 17-Nov-2018 along with the github repo and npm releases. This was due to an errant symlink which was rejected by the github pages build process, which event unfortunately went unnoticed. The CDN build was finally published on 29-Nov-2018. We regret the delay and apologize for any confusion that may have resulted.
Minor version update
This is a "minor version update," meaning it's interface-backwards-compatible with v3.1.* but introduces some new methods.
Contents
- Add mouse event details (see PR #773)
- Add
Base.prototype.versionAtLeast
(see PR #777) - Add
Registry.prototype.make
(see PR #775) - Add
images.setTheme
: Support for themeable SVG images (see PR #772) - Bump version number (#778)
- Update README.md (#779)
- Resolve jsdoc compilation issue (#781)
Change regarding Versioning
Going forward and starting with this release, we shall bump the minor version number (middle tupple of version number) on any new functionality per npm SEMVER.
Previously we were often just bumping the patch number (last tupple), but patches are meant for bug fixes that do not introduce any new functionality. The interface for a minor version bump is non-breaking/backwards compatible. It may however be expanded with new but optional parameters; just so long as it doesn't break existing code.
Change regarding pull requests
Going forward and starting with this release, we shall be switching over to the single-item-per-PR paradigm (where "item" is a bug fix or new feature implementation).
Previously we were putting an entire release's items into a single branch/PR with separate commits per item. This was easy to work with for me as the only active contributor because commits therein could be based on earlier commits without intermediate merges. Besides not being conducive to multiple contributors, however, it was difficult (impossible really) to get anyone to code review a big PR. Doing so requires reviewing each commit one by one. GitHub conversations are better supported at the PR level rather than at the commit level.
This change in strategy should make reviewing less daunting and hopefully we'll get more feedback before merging.
A final merge-to-master PR for the release shall bump the version number and update the README. A summary of the constituent PRs shall be listed in the PR description field (as well as being plainly visible in the commit list below the description).
Regarding rebasing
Constant rebasing is not necessary just to move the commit ahead of develop before the merge. Although the resulting git log --graph
railroad diagrams end of with leap-frogging commit paths, they are still easily comprehensible. Only rebase when there are merge conflicts (which GitHub checks will tell you). After all, during a PR merge, git applies the exact same merge algorithms as would be performed in a rebase with no conflicts.
Published to npm
This release has been published as a module to the npm registry.
Pre-bundled build files
A bundled build of this release is available on the CDN.
Hypergrid v3.1.0
Minor version update
This is a "minor version update," meaning it's interface-backwards-compatible with v3.0.* but introduces a new feature, the maximumColumnWidth
prop (see below) as well as bug fixes, simplified license, and tutorial improvements.
Synopsis
- Fix bug in
getSelectedRows
renderLastSelection
now bails on missing rows- Update keys down array when shift key changes
- Update keys down array whenever referenced by mouse event handlers
- Implement
maximumColumnWidth
prop - Capture off-grid
mouseup
during scrollbar thumb drag - Retain scrollbar thumb's
.hover
CSS class throughout drag - Normalize mouse wheel metrics across platforms and browsers
- Fix jsdocs type:
options.contextAttributes
- Reorganize and update the Tutorial
- Updated copyright notice
- Updated license
1. Fix getSelectedRows
[bug]
When all rows selected, SelectionModel.prototype.getSelectedRows
returns inaccurate list. Addresses Issue #764 (see).
2. renderLastSelection
now bails on missing rows [bug]
When the selection included rows that are now missing, Renderer.prototype.renderLastSelection
previously threw an error. It now aborts without rendering.
3. Update keys down array when shift key changes [bug]
Addresses Issue #770 (see).
4. Update keys down array whenever referenced by mouse event handlers [bug]
Addresses Issue #769 (see).
5. Implement maximumColumnWidth
prop [new feature]
Addresses Issue #761 (see). This is a new feature, hence the minor version number bump (3.1.0
).
6. Capture off-grid mouseup
during scrollbar thumb drag [enhancement]
Addresses finbars
Issue #6 (see) into Hypergrid.
7. Retain scrollbar thumb's .hover
CSS class throughout drag [enhancement]
Merges finbars
Issue #7 (see) into Hypergrid.
8. Normalize mouse wheel metrics across platforms and browsers [enhancement]
The following platforms and browsers are supported by assigning multiplicative factors to each (webkit on macOS = 1.0):
- macOS
- webkit (Chrome/Safari/Opera)
- moz (Firefox)
- Windows
- webkit (Chrome/Opera)
- moz (Firefox)
- IE 11
- Edge
Measurements were taken with default wheel system settings. The macOS measurements were taken on 10.13.6 (High Sierra). The Windows measurements were taken on Windows 10 and Windows 7 SP 1 (which yielded identical results with the exception of IE 11 on W7 which was ~20% faster compared to to IE11 on W10 but not enough to be a concern, especially with < 1% browser market share).
Normalization can be turned off:
- Before instantiation:
var FinBar = require('finbars'); // or Hypegrid.modules.finbars or fin.Hypergrid.require('finbars') delete FinBar.normals;
- For a specific grid instance:
grid.sbVScroller.normal = grid.sbHScroller.normal = 1;
In any case (with or without normalization), the application layer can still apply its own (additional) factor using grid.properties.wheelVFactor
and grid.properties.wheelHFactor
.
9. Fix jsdocs typo: options.contextAttributes
[docs]
Option was renamed (from canvasContextAttributes
) before merge of v2.1.5 but jsdoc comments unfortunately got out of sync, disappointing anyone trying the option using the erroneous name in the docs.
10. Reorganize and update the Tutorial
The tutorial has been moved to a new home with its own more frequent release schedule:
https://fin-hypergrid.github.io/tutorial
The current release features new Help tabs for instructions on how to use the tutorial user interface (previously mixed in with the tutorial itself, which was confusing).
11. Updated copyright notice
The copyright notice was updated from "© 2015 Openfin" to "© 2015 Openfin and The Hypergrid Authors" in:
./LICENSE
filejsdoc-template-hypergrid
submodule (which puts the copyright notice at the bottom of every doc page) (See a separate PR in another repo.)
12. Updated license
The following restriction has been removed from the license:
You may not redistribute the software or modifications as part of any application that can be described as a development toolkit, library or framework.
This change makes the license back into a plain vanilla MIT
license (per ./package.json
).
Published to npm
This release has been published (as of 10/29/2018) as a module to the npm registry.
Pre-bundled build files
A bundled build of this release is available on the CDN.
Hypergrid v3.0.3
This patch release v3.0.3
:
- Reflects:
- Supersedes:
This is a very minor release, fixing one reported issue and updated the tutorial.
Synopsis
- Grid now takes back focus after cancelling out of a cell editor
- Tutorial has been expanded to include Scrollbar Styling
1. Grid now takes back focus after cancelling out of a cell editor
See issue #753: Cancelling the editor loses focus ... This refers to the grid (i.e., it's <canvas>
element) losing the focus so it wasn't responding to keyboard events (until click on).
2. Tutorial has been expanded to include Scrollbar Styling
Added a new tab Scrollbars to the Formatter Workbench tutorial along with accompanying tutorial pages and code snippets.
Published to npm
This release has been published (as of 9/25/2018) as a module to the npm registry.
Pre-bundled build files
A bundled build of this release is available on the CDN.
Hypergrid v3.0.2
This patch release v3.0.2
:
- Reflects:
- Supersedes:
Synopsis
- Regression when no data rows (Issue #741)
- Fix linter errors in
columnEnum.js
- Avoid throwing error on a mouse event received before columns are created
- Expose registries to
fin.Hypergrid.require()
DataModel
instantiation option now accepts array- Remove finbars.css from
<head>
section - New column property:
resizeColumnInPlace
(Issue #749) - Fix
editOnNextCell
feature (Issue #745) - Avoid throwing error when dragging a column and column(s) selected (Issue #751)
- Demos
1. Regression when no data rows (Issue #741)
Solution was to properly handle edge cases in grid.renderer.paintGridLines
:
- No data rows
- No header rows
2. Fix linter errors in columnEnum.js
3. Avoid throwing error on a mouse event received before columns are created
This annoying error happened if the mouse was moved over the grid during a page reload.
4. Expose registries to fin.Hypergrid.require()
The
fin.Hypergrid.require()
function is a feature of the build files only. (It is not needed with thefin-hypergrid
npm module when a CommonJS-likerequire()
function is already available.) As such, it is found in thebuild
repo; the commits for these changes can therefore be found there. The changes are listed here because the build files (as well as the npm module) are published whenever the latest version is merged (see below).
The following expressions are now valid:
fin.Hypergrid.require('fin-hypergrid/src/cellEditors')
fin.Hypergrid.require('fin-hypergrid/src/cellRenderers')
fin.Hypergrid.require('fin-hypergrid/src/dataModels')
fin.Hypergrid.require('fin-hypergrid/src/features')
These expressions return the four currently defined registry objects.
Previously, fin.Hypergrid.require()
only accepted fully qualified paths, ending in a module filename (e.g., fin.Hypergrid.require('fin-hypergrid/src/cellEditors/SimpleCell')
. Now the registries are exposed so new modules can be added (with Registry.prototype.add
) and existing modules can be referenced (with Registry.prototype.get
) for use as base classes for the new modules. Registries are instantiated at load time and are therefore available before the first grid instantiation. (Previously grid.cellEditors
, grid.cellRenderers
, and grid.behavior.featureRegistry
were accessible, but only after instantiation. The dataModels
registry was not previously accessible.)
5. DataModel
instantiation option now accepts array
As a convenience feature, when an array, instantiates a multi-stage data model as a data source stack. Each data source is instantiated in turn, passing the previous stack tip to the next constructor, forming a linked list. Each is data source module is a subclass of datasaur-base
, which implements method inheritance on the stack.
Previously: Single-stage data model
var MyDataModel = require('./my-data-model');
var options = { DataModel: MyDataModel };
var grid = new Hypergrid(options);
Alternatively, the following produces the same result:
var options = { dataModel: new MyDataModel };
var grid = new Hypergrid(options);
Previously: Multi-stage data model
var dataModel = new (require('datasaur-indexed'))();
dataModel = new (require('datasaur-indexed'))(dataModel);
var grid = new Hypergrid({ dataModel: dataModel });
Now, with this enhancement: Multi-stage data model
The following is a short hand for the above
var DataModel = [ require('datasaur-local'), require('datasaur-indexed') ];
var grid = new Hypergrid({ DataModel: DataModel });
6. Remove finbars.css from <head>
section
This stylesheet was being completely overridden by the duplicate in the <body>
section (which remains).
7. New column property: resizeColumnInPlace
(Issue #749)
Resizing a column through the UI (by clicking and dragging on the column's
right border in the column header row) normally affects the width of the whole grid.
Set this new property to truthy to inversely resize the next column.
In other words, if user expands (say) the third column, then the fourth column will contract —
and vice versa — without therefore affecting the width of the grid.
This is a column property and may be set for selected columns (myColumn.properties.resizeColumnInPlace
)
or for all columns by setting it at the grid level. (myGrid.properties.resizeColumnInPlace
).
Note that the implementation of this property does not allow expanding a
column beyond the width it can borrow from the next column.
The last column, however, is unconstrained and resizing it will affect the total grid width.
8. Fix editOnNextCell
feature (Issue #745)
Issue was new cellEvent
failed to define its gridCell.y
prop.
9. Avoid throwing error when dragging a column and column(s) selected (Issue #751)
Fixed. This was due to improperly clearing existing selections in SelectionModel.prototype.clear
.
This commit also blocks dragging column on right-click.
10. Demos
These demo commits are actually in the build
repo. The changes are listed here because the live demos are published along with the bundled builds (see below).
Testbench demo
Restored the regressed "top-level global vars" help tip.
Formatter Workbench demo
Collapsed the four text areas into one using a tab bar (curvy-tabs
) and incorporated the instructions onto the same page. (Compare v3.0.1 vs. v3.0.2 to see the difference.)
Note: The tutorial is still a work-in-progress
Cell borders
A new cell-borders
demo contains sample code that shows how to implement cell borders using an overlay cell renderer (called Borders
) for the purpose. Cell borders are line segments drawn on the edges of cells to form rule lines between cells.
Caveats: This method of drawing rules between cells cannot be used simultaneously with the current grid lines feature. Note also that it is not performant and not recommended when performance is paramount unless restricted to a small handful of cells.
Published to npm
This release has been published (as of 8/28/2018) as a module to the npm registry.
Pre-bundled build files
A bundled build of this release is available on the CDN.
Hypergrid v3.0.1
This patch release v3.0.1
supersedes v3.0.0
.
Synopsis
- Fix row header click regression
- Make deprecated
columnEnum
methods backwards compatible - New demo:
click-rect.html
clickRect
enhancements
1. Fix row header click regression
v3.0.0 threw an error when clicking in a row number cell. This has been fixed.
2. Make deprecated columnEnum
methods backwards compatible
Although behavior.columnEnum
and related methods and properties have been deprecated, and will issue a warning if used, they are still supposed to be fully functional. The version released in 3.0.0, however, was not true to the original implementation, returning the column objects rather than the column indexes (and therefore not an "enum" at all). This was the only issue preventing the v2.1.x
Dev Testbench demo from working with v3.0.x
. This has been fixed.
3. New demo: click-rect.html
Demonstrates the use of config.clickRect
and includes instructions and notes on the page and additional notes and alternate codings in the view source. (This demo is not dependent on the enhancements discussed below.)
4. clickRect
enhancements
clickRect
is now also a property — in addition to being settable by cell rendererclickRect
can now be a simple object{ x:number, y:number, width:number, height:number }
— as alternative to aRectangle
object- row selection now respects
clickRect
- add
hotIcon
property with possible values of'left'
,'center'
, or'right'
. Respected by theSimpleCell
cell renderer which, per value, automatically setsconfig.clickRect
to image rect specified inconfig.leftIcon
,config.centerIcon
, andconfig.rightIcon
, respectively. SimpleCell
now paints center icon on top of text (previously only painted it if no text)
Ignore commit "skip calls to canvas.paintNow during createColumns()"
This commit (eb54c56) was supposed to be reverted; it was not intended to be included in this release. It is ineffective in resolving errors that are thrown when the paint loop is stopped. Ignore. This will be reverted in 3.0.2
in favor of a more general solution to these issues.
Published to npm
This release has been published (as of 7/14/2018) as a module to the npm registry.
Pre-bundled build file
A bundled build of this release is available on the CDN.
Hypergrid v3.0.0
Please make careful note herein of breaking changes.
In addition (depending on what version you are upgrading from), you will want to reveiw the release notes of late versions of 2.1.x, which added many new features!
CAUTION: DO NOT BLINDLY UPGRADE YOUR APP TO VERSION 3!!
While this new version is largely backwards compatible for many use cases, there are breaking changes as the major version number increment implies, especially around the dataModel object which will affect those applications that manipulate or depend on low-level aspects of the v2 dataModel object.
If you feel your use application is not one of those, do give it a try. Otherwise, please check back here in a few days for detailed release notes noting the pain points migrating from v2 to v3.
Demos
The demos have been removed from this core repo to a new repo called build. The live demo links on the CDN have not changed, including the default demo, the dev testbench. For a listing of the other demos, see the new demo index. (Note that because the links haven't changed, you may need to clear your cache to see all of the latest versions (although some of their contents haven't changed at all.)
Data model changes
We have retired the internal DataModel
class and dataModels/JSON
subclass, previously referenced as grid.behavior.dataModel
. That reference now points to an external black-box dataModel.
(Some properties of the retired objects that dealt with the internal structure of the data model, such as .DataSources
, .source
, .dataSource,
.pipeline, and
.controllers`, are now gone. How the external data model works is no longer of any interest to Hypergrid. Furthermore, “data controllers” have been replaced with messaging.
)
To make this transition easier (seamless, in fact, for most developers), we have included a new default data model in the build (datasaur-local
which subclasses datasaur-base
), used when developers do not “bring their own” external data model, provided to either of two new instantiation options, dataModel
(a fully instantiated data model API) or DataModel
(a data model constructor).
The new data model interface is responsible for implementing a very small core set of three methods. Implementation of any of an additional larger set of methods is optional. When unimplemented, Hypergrid injects “fallback” implementations that provide basic functionality. This ensures that basic access to the data model is backwards compatible. The .dataModel.getCell
and .getCellEditorAt
“hooks” are both still supported.
(Note that DataSourceBase
and DataSourceLocal
have been retired.)
A detailed wiki describing the data model interface is forthcoming.
Data model messaging
New to Hypergrid is data model events. Hypergrid subscribes to and handles some basic data model events (for those data models that implement events), before propagating them out to the grid as grid events (which the application layer can subscribe to). You can also roll your own custom data model events to listen for as grid events. By convention, data model event strings should be revised with fin-hypergrid-data-
.
For example, Hypergrid handles the fin-hypergrid-data-schema
data model event by “decorating” the dataModel.schema
array with a self-referential dictionary with column names as keys, including “camelized” versions of keys with underscores and hyphens, etc.
Behavior
changes
- The internal
behaviors/JSON
subclass ofBehavior
is now calledLocal
. - Behavior object support for data controllers (
grid.behavior.getController
,.setController
,.prop
) have been retired in favor of data model messaging. - The properties
Behavior.prototype.columnEnum
,.columnEnumKey
, and.columnEnumDecorators
have been deprecated in favor of accessing column schema through.schema
,.columns
, and.allColumns
, all of which now sport self-referential dictionaries. (Deprecated means these properties are still supported for now but accessing them will issue deprecation warnings to the console.)
Old deprecated methods retired
All methods previously deprecated in versions 1.x.x (which issued deprecation warnings to the console) have been removed. These methods are no longer supported and calling any of them will now throw an error. (You were warned.)
Miscellany
- Fixed
removeAllEventListeners
- Added
fin-hypergrid/src/lib/SelectionRectangle.js
LikeRectangle
but.extent
coords are exclusive rather than inclusive (i.e., 1 greater), which works better with.width
,.height
, and.area
which were previously of little use. - New
Hypergrid
methods:addState
stashRowSelections
unstashRowSelections
stashColumnSelections
unstashColumnSelections
- Improved
registerTheme
andregisterThemes
logic.
Hypergrid 2.1.15
- This patch release
v2.1.15
supersedesv2.1.14
- Reflects PRs #735
- Note that there were no releases
v2.1.1
,v2.1.9
,v2.1.11
, or2.1.12
See also
In addition to the release notes below, please refer also to:
- Release Notes: v2.1.0 wiki page
- Notes for all subsequent releases through
v2.1.14
(following these notes)
Published to npm
This release has been published as a module to the npm registry.
Pre-bundled build file
A bundled build of this release is available on the CDN.
Synopsis
- Fix partial render grid lines (Issue #730)
- Option to turn off canvas's alpha channel
- Fix error in
Hypgrid.prototype.terminate
- Add more dashboard controls to
demo/row-props.html
- Add
autosizeGroups
and documentation tofin-hypergrid-grouped-header-plugin
1. Fix partial renderer grid lines (Issue #730)
This issue affects the "partial renderer" only. The partial render is the "by-cells" grid renderer, which is the "difference engine" renderer that only repaints cells whose contents has changed. This renderer has the major advantage of speed, up to 5x faster (!).
The issue was that the cells were overwriting the lines previously drawn by the key frame render. This is because in the default "boxSizing" mode (grid.properties.boxSizing = 'border-box'
), cell contents includes the one-pixel borders.
The fix was to redraw the grid lines in this situation, which incurs a negligible performance hit. You can however avoid this by setting .boxSizing = 'content-box'
(which has some other advantages besides).
You can play with the box-sizing modes as well as the grid line widths using the new dashboard controls in the row-props.html
app. (See item 4 below.)
2. Option to turn off canvas's alpha channel
Hypergrid intentionally supports transparent/translucent grids, for example:
grid.properties.backgroundColor = 'transparent'; grid.repaint();
grid.properties.backgroundColor = 'rgba(0,0,0,0)'; grid.repaint();
grid.properties.backgroundColor = 'rgba(200,0,0,.5)'; grid.repaint();
The use case for a transparent or translucent grid is rare, however, so we are introducing a new grid instantiation option for v2.1.15 and v3.0.0: options.canvasContextAttributes
a value that will be passed to HTMLCanvasElement.getContext
:
var gridOptions = {
canvasContextAttributes: { alpha: false }
};
var myGrid = new Hypergrid(gridOptions);
The only "context attribute" currently available is alpha
:
Boolean that indicates if the canvas contains an alpha channel. If set to
false
, the browser now knows that the backdrop is always opaque, which can speed up drawing of transparent content and images.
Use with caution. In particular, if the canvas is set to "opaque" ({alpha: false}
), do not also specify a transparent or translucent color for grid.properties.backGround
because content may then be drawn with corrupt anti-aliasing (at lest in Chrome v67).
Note that such an "opaque" canvas can still be made to appear translucent using the CSS opacity
property — a different effect entirely.
Although alpha: false
has no apparent performance gains (in Chrome v63), it does permit the graphics context to use sub-pixel rendering for sharper text when viewed on LCD or LED screens, in especially black text on white backgrounds. The improvement is particularly apparent when viewed on a high-pixel-density display (such as an Apple retina display).
canvasContextAttributes |
Canvas | Text | Sample |
---|---|---|---|
alpha: true |
transparent | regular anti-aliasing |
|
alpha: false |
opaque | sub-pixel rendering |
3. Fix error in Hypgrid.prototype.terminate
Fixed a coding error in the terminate
method, which now functions correctly: The shared property Hypergrid.grids
maintains a list of instantiated grids. Use grid.terminate()
to remove a grid from the list before deleting it's canvas element.
4. Add more dashboard controls to demo/row-props.html
- New controls:
- Rule lines
- Horizontal (between rows)
- enable (
gridLinesH
) - color (
gridLinesHColor
) - width (
gridLinesHWidth
)
- enable (
- Vertical (between columns)
- enable (
gridLinesV
) - color (
gridLinesVColor
) - width (
gridLinesVWidth
)
- enable (
- Horizontal (between rows)
- Divider rule lines
- Horizontal (between column headers or fixed rows and the scrolling content)
- color (
fixedLinesHColor
) - width (
fixedLinesHWidth
) - edge (
fixedLinesHEdge
)
- color (
- Vertical (between row headers or fixed columns and the scrolling content)
- color (
fixedLinesVColor
) - width (
fixedLinesVWidth
) - edge (
fixedLinesVEdge
)
- color (
- Horizontal (between column headers or fixed rows and the scrolling content)
- Fixed row count (
fixedRowCount
) - Fixed column count (
fixedColumnCount
) - Cell "box sizing" (
box-sizing
)
- Rule lines
- Added missing
repaint()
calls to some controls. - Reposition "behind-the-grid content" (orange circle) relative to grid to accommodate wrapped controls.
5. Add autosizeGroups
and documentation to fin-hypergrid-grouped-header-plugin
Though technically not a part of Hypergrid core, it is worth noting here that fin-hypergrid-grouped-header-plugin
has been updated to version 1.2.0
.