From 01de2ea25707953e17d45999f31fbeea1552675a Mon Sep 17 00:00:00 2001 From: Michael Lange Date: Tue, 6 Mar 2018 14:16:43 -0800 Subject: [PATCH] Toggle polling in components when switching away from the tab --- ui/app/components/client-node-row.js | 14 +++++++++++++- ui/app/components/job-row.js | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ui/app/components/client-node-row.js b/ui/app/components/client-node-row.js index 7d9d7f828..d1e7f1b2a 100644 --- a/ui/app/components/client-node-row.js +++ b/ui/app/components/client-node-row.js @@ -2,8 +2,9 @@ import { inject as service } from '@ember/service'; import Component from '@ember/component'; import { lazyClick } from '../helpers/lazy-click'; import { watchRelationship } from 'nomad-ui/utils/properties/watch'; +import WithVisibilityDetection from 'nomad-ui/mixins/with-component-visibility-detection'; -export default Component.extend({ +export default Component.extend(WithVisibilityDetection, { store: service(), tagName: 'tr', @@ -27,6 +28,17 @@ export default Component.extend({ } }, + visibilityHandler() { + if (!document.visible) { + this.get('watch').cancelAll(); + } else { + const node = this.get('node'); + if (node) { + this.get('watch').perform(node, 100); + } + } + }, + willDestroy() { this.get('watch').cancelAll(); this._super(...arguments); diff --git a/ui/app/components/job-row.js b/ui/app/components/job-row.js index 8a09f51c0..6b0872825 100644 --- a/ui/app/components/job-row.js +++ b/ui/app/components/job-row.js @@ -2,8 +2,9 @@ import { inject as service } from '@ember/service'; import Component from '@ember/component'; import { lazyClick } from '../helpers/lazy-click'; import { watchRelationship } from 'nomad-ui/utils/properties/watch'; +import WithVisibilityDetection from 'nomad-ui/mixins/with-component-visibility-detection'; -export default Component.extend({ +export default Component.extend(WithVisibilityDetection, { store: service(), tagName: 'tr', @@ -27,6 +28,17 @@ export default Component.extend({ } }, + visibilityHandler() { + if (!document.visible) { + this.get('watch').cancelAll(); + } else { + const job = this.get('job'); + if (job && !job.get('isLoading')) { + this.get('watch').perform(job, 100); + } + } + }, + willDestroy() { this.get('watch').cancelAll(); this._super(...arguments);