-
Notifications
You must be signed in to change notification settings - Fork 8.5k
render-counter directive
#9206
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
render-counter directive
#9206
Conversation
de75deb to
641f9af
Compare
|
jenkins, test this |
|
LGTM |
src/ui/public/doc_table/doc_table.js
Outdated
| $el.attr('has-render-count', 'true'); | ||
| $el.attr('render-count', '0'); | ||
| $el.on('renderComplete', () => { | ||
| $el.attr('render-count', parseInt($el.attr('render-count'), 10) + 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe a dumb micro-optimization, but reading this off the DOM every time isn't free. Why not store the value in the directive?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤷
|
@spalger |
|
LGTM! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
src/ui/public/doc_table/doc_table.js
Outdated
| filter: '=?', | ||
| }, | ||
| link: function ($scope) { | ||
| link: function ($scope, $el) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
$el isn't needed anymore
Backports PR #9206 **Commit 1:** [docTable/row] delay first render until watchers initialize * Original sha: 4945e08 * Authored by spalger <[email protected]> on 2016-11-23T18:57:22Z **Commit 2:** [docTable/row] emit a renderComplete event, count in table directive * Original sha: 641f9af * Authored by spalger <[email protected]> on 2016-11-23T18:58:21Z **Commit 3:** [renderCounter] unify render counting login into directive * Original sha: 0c084ac * Authored by spalger <[email protected]> on 2016-11-23T21:26:44Z **Commit 4:** [docTable] remove unused var * Original sha: 275bf70 * Authored by spalger <[email protected]> on 2016-11-23T22:00:52Z
Backports PR #9206 **Commit 1:** [docTable/row] delay first render until watchers initialize * Original sha: 4945e08 * Authored by spalger <[email protected]> on 2016-11-23T18:57:22Z **Commit 2:** [docTable/row] emit a renderComplete event, count in table directive * Original sha: 641f9af * Authored by spalger <[email protected]> on 2016-11-23T18:58:21Z **Commit 3:** [renderCounter] unify render counting login into directive * Original sha: 0c084ac * Authored by spalger <[email protected]> on 2016-11-23T21:26:44Z **Commit 4:** [docTable] remove unused var * Original sha: 275bf70 * Authored by spalger <[email protected]> on 2016-11-23T22:00:52Z
Backports PR #9206 **Commit 1:** [docTable/row] delay first render until watchers initialize * Original sha: 4945e08 * Authored by spalger <[email protected]> on 2016-11-23T18:57:22Z **Commit 2:** [docTable/row] emit a renderComplete event, count in table directive * Original sha: 641f9af * Authored by spalger <[email protected]> on 2016-11-23T18:58:21Z **Commit 3:** [renderCounter] unify render counting login into directive * Original sha: 0c084ac * Authored by spalger <[email protected]> on 2016-11-23T21:26:44Z **Commit 4:** [docTable] remove unused var * Original sha: 275bf70 * Authored by spalger <[email protected]> on 2016-11-23T22:00:52Z
Backports PR #9206 **Commit 1:** [docTable/row] delay first render until watchers initialize * Original sha: 4945e08 * Authored by spalger <[email protected]> on 2016-11-23T18:57:22Z **Commit 2:** [docTable/row] emit a renderComplete event, count in table directive * Original sha: 641f9af * Authored by spalger <[email protected]> on 2016-11-23T18:58:21Z **Commit 3:** [renderCounter] unify render counting login into directive * Original sha: 0c084ac * Authored by spalger <[email protected]> on 2016-11-23T21:26:44Z **Commit 4:** [docTable] remove unused var * Original sha: 275bf70 * Authored by spalger <[email protected]> on 2016-11-23T22:00:52Z
Backports PR elastic#9206 **Commit 1:** [docTable/row] delay first render until watchers initialize * Original sha: 4945e08 * Authored by spalger <[email protected]> on 2016-11-23T18:57:22Z **Commit 2:** [docTable/row] emit a renderComplete event, count in table directive * Original sha: 641f9af * Authored by spalger <[email protected]> on 2016-11-23T18:58:21Z **Commit 3:** [renderCounter] unify render counting login into directive * Original sha: 0c084ac * Authored by spalger <[email protected]> on 2016-11-23T21:26:44Z **Commit 4:** [docTable] remove unused var * Original sha: 275bf70 * Authored by spalger <[email protected]> on 2016-11-23T22:00:52Z Former-commit-id: 4617e09
- `@elastic/eui`: `v109.0.0` ⏩ `v109.1.0` - `@elastic/eslint-plugin-eui`: `v2.5.0` ⏩ `v2.6.0` --- ## Changes - Updated i18n EUI mapping 6cc95b0 - Updated test in Unified Search 668948f ## Package updates ### `@elastic/eui` [`v109.1.0`](https://github.com/elastic/eui/releases/v109.1.0) - Added `--euiBottomBarOffset` CSS variable to `EuiBottomBar` for positioning other fixed elements relative to the bottom bar's height ([#9211](elastic/eui#9211)) - Updated `boxesVertical` icon and restored `checkInCircleFilled`, `errorFilled`, and `warningFilled` icons. ([#9194](elastic/eui#9194)) - Updated `EuiSuperDatePicker` with new time zone information, opt-in via `timeZoneDisplayProps`. ([#9191](elastic/eui#9191)) - Updated the position of `EuiModal` by removing bottom padding in `EuiOverlayMask` ([#9190](elastic/eui#9190)) - Added `EuiPopover` and `EuiToolTip`'s `repositionOnScroll` to `componentDefaults` ([#9152](elastic/eui#9152)) - Updated `EuiSuperDatePicker` with new time window buttons for time shifting and zoom out, opt-in via `showTimeWindowButtons` boolean prop. ([#9151](elastic/eui#9151)) - Added beta prop `hasAriaDisabled` to all base button components: `EuiButton`, `EuiButtonEmpty`, `EuiButtonIcon`, `EuibuttonGroup`, `EuiFilterButton` ([#9201](elastic/eui#9201)) - Added `euiDisabledSelector` variable that combines CSS selectors `:disabled` and `[aria-disabled="true"]` ([#9201](elastic/eui#9201)) - Added custom test matchers that check for both `disabled` and `aria-disabled` attributes: ([#9201](elastic/eui#9201)) - React testing Library: `.toBeEuiDisabled()` - Enzyme: `.toHaveEuiDisabledProp()` - Cypress: `should('be.euiDisabled)` **Bug fixes** - Fixed unexpected duplicate columns in `EuiDataGrid` crashing the column sorting by removing duplicate columns entirely ([#9209](elastic/eui#9209)) - Fixed a visual bug in `EuiTable` where long table row content would be cut off on mobile screens ([#9206](elastic/eui#9206)) - Fixed virtualized `EuiCodeBlock` rendering blank lines when content updates if scrolled. ([#9196](elastic/eui#9196)) - Fixed `EuiButtonGroup` button sizing to ensure square buttons when used with `isIconOnly=true` ([#9170](elastic/eui#9170)) **Accessibility** - Fixed an issue where portalled components like `EuiPopover` were not included in `EuiFlyout`'s focus trap through `includeSelectorInFocusTrap`, making them inaccessible to keyboard users ([#9103](elastic/eui#9103)) ### `@elastic/eslint-plugin-eui` [`v2.6.0`](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2025.md#v260) - Added new `require-table-caption` rule. ([#9168](elastic/eui#9168)) --------- Co-authored-by: Elastic Machine <[email protected]>
- `@elastic/eui`: `v109.0.0` ⏩ `v109.1.0` - `@elastic/eslint-plugin-eui`: `v2.5.0` ⏩ `v2.6.0` --- ## Changes - Updated i18n EUI mapping 6cc95b0 - Updated test in Unified Search 668948f ## Package updates ### `@elastic/eui` [`v109.1.0`](https://github.com/elastic/eui/releases/v109.1.0) - Added `--euiBottomBarOffset` CSS variable to `EuiBottomBar` for positioning other fixed elements relative to the bottom bar's height ([elastic#9211](elastic/eui#9211)) - Updated `boxesVertical` icon and restored `checkInCircleFilled`, `errorFilled`, and `warningFilled` icons. ([elastic#9194](elastic/eui#9194)) - Updated `EuiSuperDatePicker` with new time zone information, opt-in via `timeZoneDisplayProps`. ([elastic#9191](elastic/eui#9191)) - Updated the position of `EuiModal` by removing bottom padding in `EuiOverlayMask` ([elastic#9190](elastic/eui#9190)) - Added `EuiPopover` and `EuiToolTip`'s `repositionOnScroll` to `componentDefaults` ([elastic#9152](elastic/eui#9152)) - Updated `EuiSuperDatePicker` with new time window buttons for time shifting and zoom out, opt-in via `showTimeWindowButtons` boolean prop. ([elastic#9151](elastic/eui#9151)) - Added beta prop `hasAriaDisabled` to all base button components: `EuiButton`, `EuiButtonEmpty`, `EuiButtonIcon`, `EuibuttonGroup`, `EuiFilterButton` ([elastic#9201](elastic/eui#9201)) - Added `euiDisabledSelector` variable that combines CSS selectors `:disabled` and `[aria-disabled="true"]` ([elastic#9201](elastic/eui#9201)) - Added custom test matchers that check for both `disabled` and `aria-disabled` attributes: ([elastic#9201](elastic/eui#9201)) - React testing Library: `.toBeEuiDisabled()` - Enzyme: `.toHaveEuiDisabledProp()` - Cypress: `should('be.euiDisabled)` **Bug fixes** - Fixed unexpected duplicate columns in `EuiDataGrid` crashing the column sorting by removing duplicate columns entirely ([elastic#9209](elastic/eui#9209)) - Fixed a visual bug in `EuiTable` where long table row content would be cut off on mobile screens ([elastic#9206](elastic/eui#9206)) - Fixed virtualized `EuiCodeBlock` rendering blank lines when content updates if scrolled. ([elastic#9196](elastic/eui#9196)) - Fixed `EuiButtonGroup` button sizing to ensure square buttons when used with `isIconOnly=true` ([elastic#9170](elastic/eui#9170)) **Accessibility** - Fixed an issue where portalled components like `EuiPopover` were not included in `EuiFlyout`'s focus trap through `includeSelectorInFocusTrap`, making them inaccessible to keyboard users ([elastic#9103](elastic/eui#9103)) ### `@elastic/eslint-plugin-eui` [`v2.6.0`](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2025.md#v260) - Added new `require-table-caption` rule. ([elastic#9168](elastic/eui#9168)) --------- Co-authored-by: Elastic Machine <[email protected]>
- `@elastic/eui`: `v109.0.0` ⏩ `v109.1.0` - `@elastic/eslint-plugin-eui`: `v2.5.0` ⏩ `v2.6.0` --- ## Changes - Updated i18n EUI mapping 6cc95b0 - Updated test in Unified Search 668948f ## Package updates ### `@elastic/eui` [`v109.1.0`](https://github.com/elastic/eui/releases/v109.1.0) - Added `--euiBottomBarOffset` CSS variable to `EuiBottomBar` for positioning other fixed elements relative to the bottom bar's height ([elastic#9211](elastic/eui#9211)) - Updated `boxesVertical` icon and restored `checkInCircleFilled`, `errorFilled`, and `warningFilled` icons. ([elastic#9194](elastic/eui#9194)) - Updated `EuiSuperDatePicker` with new time zone information, opt-in via `timeZoneDisplayProps`. ([elastic#9191](elastic/eui#9191)) - Updated the position of `EuiModal` by removing bottom padding in `EuiOverlayMask` ([elastic#9190](elastic/eui#9190)) - Added `EuiPopover` and `EuiToolTip`'s `repositionOnScroll` to `componentDefaults` ([elastic#9152](elastic/eui#9152)) - Updated `EuiSuperDatePicker` with new time window buttons for time shifting and zoom out, opt-in via `showTimeWindowButtons` boolean prop. ([elastic#9151](elastic/eui#9151)) - Added beta prop `hasAriaDisabled` to all base button components: `EuiButton`, `EuiButtonEmpty`, `EuiButtonIcon`, `EuibuttonGroup`, `EuiFilterButton` ([elastic#9201](elastic/eui#9201)) - Added `euiDisabledSelector` variable that combines CSS selectors `:disabled` and `[aria-disabled="true"]` ([elastic#9201](elastic/eui#9201)) - Added custom test matchers that check for both `disabled` and `aria-disabled` attributes: ([elastic#9201](elastic/eui#9201)) - React testing Library: `.toBeEuiDisabled()` - Enzyme: `.toHaveEuiDisabledProp()` - Cypress: `should('be.euiDisabled)` **Bug fixes** - Fixed unexpected duplicate columns in `EuiDataGrid` crashing the column sorting by removing duplicate columns entirely ([elastic#9209](elastic/eui#9209)) - Fixed a visual bug in `EuiTable` where long table row content would be cut off on mobile screens ([elastic#9206](elastic/eui#9206)) - Fixed virtualized `EuiCodeBlock` rendering blank lines when content updates if scrolled. ([elastic#9196](elastic/eui#9196)) - Fixed `EuiButtonGroup` button sizing to ensure square buttons when used with `isIconOnly=true` ([elastic#9170](elastic/eui#9170)) **Accessibility** - Fixed an issue where portalled components like `EuiPopover` were not included in `EuiFlyout`'s focus trap through `includeSelectorInFocusTrap`, making them inaccessible to keyboard users ([elastic#9103](elastic/eui#9103)) ### `@elastic/eslint-plugin-eui` [`v2.6.0`](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2025.md#v260) - Added new `require-table-caption` rule. ([elastic#9168](elastic/eui#9168)) --------- Co-authored-by: Elastic Machine <[email protected]>
Implements a
render-counterdirective that listens forrenderCompleteevents on it's element and tracks the number of events it sees.This directive is attached to elements where we want to capture the render count, including the
<doc-table>and<visualize>directives in discover and visualize.If the render counter should be disabled, access it's controller and call it's disabled method like the
<visualize>directive does.