Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0. #6343

Closed
LeeDr opened this issue Feb 26, 2016 · 5 comments
Labels
bug Fixes for quality problems that affect the customer experience Feature:Coordinate Map Feature:Visualizations Generic visualization features (in case no more specific feature label is available) v5.4.0 WIP Work in progress

Comments

@LeeDr
Copy link
Contributor

LeeDr commented Feb 26, 2016

On kibana 4.4.1 I created a Tile Map vis (on Firefox) with heatmap option. Saved it. Zoomed in by double-clicking. Everything works fine.

Then went to Chrome browser to try the same thing.

The first problem is that the map doesn't render correctly. I only see a small part of it;

2016-02-26 11_29_13-clipboard

And then when I click on the map to drag it into view I get this error;

Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0. (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17062)

Version: 4.4.1
Build: 9693

Error: Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0. (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17062)
    at window.onerror (http://localhost:5601/bundles/commons.bundle.js?v=9693:63832:25)

And if I open the dev console in Chrome I get this;

Error: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at Error (native)
    at Object.t.draw (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17062:1413)
    at L.HeatLayer.extend._redraw (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17067:2734)
    at L.HeatLayer.extend._reset (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17067:1754)
    at L.HeatLayer.extend.onAdd (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17067:703)
    at o.Map.o.Class.extend._layerAdd (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17040:30050)
    at o.Map.o.Class.extend.addLayer (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17040:21550)
    at HeatmapMarker.MarkerFactory.BaseMarker._addToMap (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17324:17)
    at HeatmapMarkerFactory.HeatmapMarker._createMarkerGroup (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17622:13)
    at new HeatmapMarker (http://localhost:5601/bundles/kibana.bundle.js?v=9693:17600:13)(anonymous function) @ commons.bundle.js?v=9693:40088(anonymous function) @ commons.bundle.js?v=9693:36857Scope.$digest @ commons.bundle.js?v=9693:43455Scope.$apply @ commons.bundle.js?v=9693:43708done @ commons.bundle.js?v=9693:38157completeRequest @ commons.bundle.js?v=9693:38355requestLoaded @ commons.bundle.js?v=9693:38296

I also reproduced it somewhat on IE11 where the map only shows a small portion in the upper left and the console shows IndexSizeError

@LeeDr LeeDr added bug Fixes for quality problems that affect the customer experience P2 labels Feb 26, 2016
@gilles-m
Copy link

gilles-m commented Jun 8, 2016

Hello,

I have the same Issue with Kibana 4.5.1.

@apkoponen
Copy link

This issue is caused by the fact that the map canvas is still 0x0 pixels when we call L.heatLayer(points, options).

My workaround was to change the code in heatmap.js that creates and adds the layer to map. The size invalidated and then we wait until the canvas gets big enough. This is a hack, but I could not find a way to properly check when the map canvas gets actually resized.

HeatmapMarker.prototype._createMarkerGroup = function (options) {
      var self = this;
      var max = _.get(this.geoJson, 'properties.allmax');
      var points = this._dataToHeatArray(max);

      // Invalidate size to make sure canvas size is large enough
      self.map.invalidateSize();
      setupHeatLayer();
      function setupHeatLayer() {
        // Wait until size has been invalidated
        if(self.map.getSize().x > 0) {
          self._markerGroup = L.heatLayer(points, options);
          self._fixTooltips();
          self._addToMap();
        } else {
          setTimeout(setupHeatLayer, 100);
        }
      }
    };

@gmoskovicz
Copy link
Contributor

@LeeDr is there any way to fix or workaround this issue? Saving the dashboard with a different zoom level for this viz should fix it?

@gmoskovicz
Copy link
Contributor

@LeeDr i have some repro steps for this:

[1] Create the index

DELETE index_logs

PUT index_logs
{
  "mappings": {
    "type": {
      "properties": {
        "geoip": {
          "type": "object",
          "properties": {
            "location": {
              "type": "geo_point"
            }
          }
        },
        "@timestamp": {
          "type": "date"
        }
      }
    }
  }
}

POST index_logs/type/1
{
  "geoip": {
    "location": {
      "lat": 41.12,
      "lon": -71.34
    }
  },
  "@timestamp": "2016-12-10T12:10:30Z"
}

[2] Crete the index pattern

[3] Import the following dashboard: dashboards.txt . Import it with the import functionality from Kibana

[4] Go to the dashboard index_user_activity

[5] Change the time-range to 2 years:

screen shot 2017-01-23 at 09 32 32

@LeeDr LeeDr added the Feature:Visualizations Generic visualization features (in case no more specific feature label is available) label Jan 23, 2017
@tbragin tbragin added P3 and removed P2 labels Feb 9, 2017
@thomasneirynck thomasneirynck mentioned this issue Feb 27, 2017
14 tasks
@thomasneirynck thomasneirynck added WIP Work in progress v5.4.0 labels Mar 8, 2017
@milos92100
Copy link

Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.

Same error on Chrome and Kibana 6.2.4

jbudz pushed a commit that referenced this issue Nov 18, 2022
## Summary
`eui@67.1.8` ⏩ `eui@70.2.2`

⚠️ Note: This upgrade contains breaking changes to `EuiFlexGroup` and
`EuiFlexGrid`, primarily around switching margins and negative margins
to `gap`. Please do a quick QA pass of your app to scan for any issues.
We're happy to help resolve minor fixes, or potentially follow up after
PR merges. You can find us over in #eui!

## [`70.2.4`](https://github.com/elastic/eui/tree/v70.2.4)

**Bug fixes**

- Fixed visual bug in nested `EuiFlexGroup`s, where the parent
`EuiFlexGroup` is responsive but a child `EuiFlexGroup` is not
([#6381](elastic/eui#6381))

## [`70.2.3`](https://github.com/elastic/eui/tree/v70.2.3)

**Bug fixes**

- Fixed incorrect margins in `EuiSuperDatePicker` caused by `EuiFlex`
CSS gap change ([#6380](elastic/eui#6380))

## [`70.2.2`](https://github.com/elastic/eui/tree/v70.2.2)

- `EuiButton` now accepts `minWidth={false}`
([#6373](elastic/eui#6373))

**Bug fixes**

- `EuiButton` no longer outputs unnecessary inline styles for
`minWidth={0}` or `minWidth={false}`
([#6373](elastic/eui#6373))
- `EuiFacetButton` no longer reports type issues when passing props
accepted by `EuiButton`
([#6373](elastic/eui#6373))
- Fixed the shadow sizes of `.eui-yScrollWithShadows` and
`.eui-xScrollWithShadows`
([#6374](elastic/eui#6374))


## [`70.2.1`](https://github.com/elastic/eui/tree/v70.2.1)

**Bug fixes**

- Re-fixed `EuiPageSection` not correctly merging `contentProps.css`
([#6365](elastic/eui#6365))
- Fixed `EuiTab` not defaulting to size `m`
([#6366](elastic/eui#6366))

## [`70.2.0`](https://github.com/elastic/eui/tree/v70.2.0)

- Added a keyboard shortcuts popover to `EuiDataGrid`'s toolbar. This
can be visually hidden via `toolbarVisibility.showKeyboardShortcuts`,
but will always remain accessible to keyboard and screen reader users.
([#6036](elastic/eui#6036))
- `EuiScreenReaderOnly`'s `showOnFocus` prop now also shows on focus
within its children ([#6036](elastic/eui#6036))
- Added `onFocus` prop callback to `EuiSuperDatePicker`
([#6320](elastic/eui#6320))

**Bug fixes**

- Fixed `EuiSelectable` to ensure the full options list is re-displayed
when the search bar is controlled and cleared using `searchProps.value`
([#6317](elastic/eui#6317))
- Fixed incorrect padding on `xl`-sized `EuiTabs`
([#6336](elastic/eui#6336))
- Fixed `EuiCard` not correctly merging `css` on its child `icon`s
([#6341](elastic/eui#6341))
- Fixed `EuiCheckableCard` not setting `css` on the correct DOM node
([#6341](elastic/eui#6341))
- Fixed a webkit rendering issue with `EuiModal`s containing
`EuiBasicTable`s tall enough to scroll
([#6343](elastic/eui#6343))
- Fixed bug in `to_initials` that truncates custom initials
([#6346](elastic/eui#6346))
- Fix bug in `EuiCard` where layout breaks when `horizontal` and
`selectable` are both passed
([#6348](elastic/eui#6348))

## [`70.1.0`](https://github.com/elastic/eui/tree/v70.1.0)

- Added the `hint` prop to the `<EuiSearchBar />`. This prop lets the
consumer render a hint below the search bar that will be displayed on
focus. ([#6319](elastic/eui#6319))
- Added the `hasDragDrop` prop to `EuiPopover`. Use this prop if your
popover contains `EuiDragDropContext`.
([#6329](elastic/eui#6329))

**Bug fixes**

- Fixed `EuiButton`'s cursor style when the button is disabled
([#6323](elastic/eui#6323))
- Fixed `EuiPageTemplate` not recognizing child
`EuiPageSidebar`s/`EuiPageTemplate.Sidebar`s with `css` props
([#6324](elastic/eui#6324))
- Fixed `EuiBetaBadge` to always respect its `anchorProps` values,
including when there is no tooltip content
([#6326](elastic/eui#6326))
- Temporarily patched `EuiModal` to not cause scroll-jumping issues on
modal open ([#6327](elastic/eui#6327))
- Fixed buggy drag & drop behavior within `EuiDataGrid`'s columns &
sorting toolbar popovers
([#6329](elastic/eui#6329))
- Fixed `EuiButton` not correctly passing `textProps` for children
inside fragments or i18n components
([#6332](elastic/eui#6332))
- Fixed `EuiButton` not correctly respecting `minWidth={0}`
([#6332](elastic/eui#6332))

**CSS-in-JS conversions**

- Converted `EuiTabs` to Emotion
([#6311](elastic/eui#6311))

## [`70.0.0`](https://github.com/elastic/eui/tree/v70.0.0)

- Added the `enabled` option to the `<EuiInMemoryTable />`
`executeQueryOptions` prop. This option prevents the Query from being
executed when controlled by the consumer.
([#6284](elastic/eui#6284))

**Bug fixes**

- Fixed `EuiOverlayMask` to set a
`[data-relative-to-header=above|below]` attribute to replace the
`--aboveHeader` and `--belowHeader` classNames removed in its Emotion
conversion ([#6289](elastic/eui#6289))
- Fixed `EuiHeader` CSS using removed `EuiOverlayMask` class modifiers
([#6293](elastic/eui#6293))
- Fixed `EuiToolTip` not respecting reduced motion preferences
([#6295](elastic/eui#6295))
- Fixed a bug with `EuiTour` where passing any `panelProps` would cause
the beacon to disappear
([#6298](elastic/eui#6298))

**Breaking changes**

- `@emotion/css` is now a required peer dependency, alongside
`@emotion/react` ([#6288](elastic/eui#6288))
- `@emotion/cache` is no longer required peer dependency, although your
project must still use it if setting custom cache/injection locations
([#6288](elastic/eui#6288))

**CSS-in-JS conversions**

- Converted `EuiCode` and `EuiCodeBlock` to Emotion; Removed
`euiCodeSyntaxTokens` Sass mixin and `$euiCodeBlockPaddingModifiers`;
([#6263](elastic/eui#6263))
- Converted `EuiResizableContainer` and `EuiResizablePanel` to Emotion
([#6287](elastic/eui#6287))

## [`69.0.0`](https://github.com/elastic/eui/tree/v69.0.0)

- Added support for `fullWidth` prop on EuiForm, which will be the
default for all rows/controls within
([#6229](elastic/eui#6229))
- Added support for `onResizeStart` and `onResizeEnd` callbacks to
`EuiResizableContainer`
([#6236](elastic/eui#6236))
- Added optional case sensitive option matching to `EuiComboBox` with
the `isCaseSensitive` prop
([#6268](elastic/eui#6268))
- `EuiFlexItem` now supports `grow={0}`
([#6270](elastic/eui#6270))
- Added the `alignItems` prop to `EuiFlexGrid`
([#6281](elastic/eui#6281))
- Added `filter`, `filterExclude`, `filterIgnore`, `filterInclude`,
`indexTemporary`, `infinity`, `sortAscending`, and `sortDescending`
glyphs to `EuiIcon` ([#6282](elastic/eui#6282))

**Bug fixes**

- Fixed `EuiTextProps` to show the `color` type option `inherit` as
default ([#6267](elastic/eui#6267))
- `EuiFlexGroup` now correctly respects `gutterSize` when responsive
([#6270](elastic/eui#6270))
- Fixed the last breadcrumb in `EuiBreadcrumbs`'s `breadcrumbs` array
not respecting `truncate` overrides
([#6280](elastic/eui#6280))

**Breaking changes**

- `EuiFlexGrid` no longer supports `columns={0}`. Use `EuiFlexGroup`
instead for normal flex display
([#6270](elastic/eui#6270))
- `EuiFlexGrid` now uses modern `display: grid` CSS
([#6270](elastic/eui#6270))
- `EuiFlexGroup`, `EuiFlexGrid`, and `EuiFlexItem` now use modern `gap`
CSS instead of margins and negative margins
([#6270](elastic/eui#6270))
- `EuiFlexGroup` no longer applies responsive styles to `column` or
`columnReverse` directions
([#6270](elastic/eui#6270))

**CSS-in-JS conversions**

- Converted `EuiFlexGroup`, `EuiFlexGrid`, and `EuiFlexItem` to Emotion
([#6270](elastic/eui#6270))

## [`68.0.0`](https://github.com/elastic/eui/tree/v68.0.0)

- Added `beta` glyph to `EuiIcon`
([#6250](elastic/eui#6250))
- Added `launch` and `spaces` glyphs to `EuiIcon`
([#6260](elastic/eui#6260))
- Added the `fallbackDestination` prop to `EuiSkipLink`, which accepts a
string of query selectors to fall back to if the `destinationId` does
not have a valid target. Defaults to `main`
([#6261](elastic/eui#6261))
- `EuiSkipLink` is now always an `a` tag to ensure that it is always
placed within screen reader link menus.
([#6261](elastic/eui#6261))

**Bug fixes**

- Fixed `EuiSuperDatePicker` not correctly merging passed `className`s
([#6253](elastic/eui#6253))
- Fixed `EuiColorStops` not correctly merging in passed
`data-test-subj`s, `style`s, or `...rest`
([#6255](elastic/eui#6255))
- Fixed `EuiResizablePanel` incorrectly passing `style` to the wrapper
instead of the panel. Use `wrapperProps.style` to pass styles to the
wrapper. ([#6255](elastic/eui#6255))
- Fixed custom `onClick`s passed to `EuiSkipLink` overriding
`overrideLinkBehavior`
([#6261](elastic/eui#6261))

**Breaking changes**

- Removed `inherit` and `ghost` color from `EuiListGroupItem`
([#6207](elastic/eui#6207))
- Changed default color to `text` instead of `inherit`
([#6207](elastic/eui#6207))

**CSS-in-JS conversions**

- Converted `EuiListGroup` and `EuiListGroupItem` to Emotion; Removed
`$euiListGroupGutterTypes`, `$euiListGroupItemColorTypes` and
`$euiListGroupItemSizeTypes`;
([#6207](elastic/eui#6207))
- Converted `EuiBadgeGroup` to Emotion
([#6258](elastic/eui#6258))
- Converted `EuiBetaBadge` to Emotion
([#6258](elastic/eui#6258))
- Converted `EuiNotificationBadge` to Emotion
([#6258](elastic/eui#6258))

Co-authored-by: Elizabet Oliveira <elizabet.oliveira@elastic.co>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Fixes for quality problems that affect the customer experience Feature:Coordinate Map Feature:Visualizations Generic visualization features (in case no more specific feature label is available) v5.4.0 WIP Work in progress
Projects
None yet
Development

No branches or pull requests

7 participants