diff --git a/app/assets/javascripts/components/pf_charts/aggregate-status-card.component.js b/app/assets/javascripts/components/pf_charts/aggregate-status-card.component.js index f2ad70b2b9eb..1e2f9fbe52a6 100644 --- a/app/assets/javascripts/components/pf_charts/aggregate-status-card.component.js +++ b/app/assets/javascripts/components/pf_charts/aggregate-status-card.component.js @@ -3,16 +3,16 @@ angular.module( 'patternfly.card' ).component('pfAggregateStatusCard', { status: '=', showTopBorder: '@?', altLayout: '@?', - layout: '@?' + layout: '@?', }, templateUrl: '/static/pf_charts/aggregate-status-card.html.haml', - controller: function () { + controller: function() { 'use strict'; var vm = this; - vm.$onInit = function () { + vm.$onInit = function() { vm.shouldShowTopBorder = (vm.showTopBorder === 'true'); vm.isAltLayout = (vm.altLayout === 'true' || vm.layout === 'tall'); vm.isMiniLayout = (vm.layout === 'mini'); }; - } + }, }); diff --git a/app/assets/javascripts/components/pf_charts/c3-chart.component.js b/app/assets/javascripts/components/pf_charts/c3-chart.component.js index 1e10c128b540..19fc2eff7f42 100644 --- a/app/assets/javascripts/components/pf_charts/c3-chart.component.js +++ b/app/assets/javascripts/components/pf_charts/c3-chart.component.js @@ -1,34 +1,35 @@ angular.module('patternfly.charts').component('pfC3Chart', { bindings: { config: '<', - getChartCallback: '<' + getChartCallback: '<', }, template: '
', - controller: c3ChartController + controller: c3ChartController, }); -c3ChartController.$inject = ['$timeout', '$attrs'] +c3ChartController.$inject = ['$timeout', '$attrs']; function c3ChartController($timeout, $attrs) { - var vm = this, prevConfig; + var vm = this; + var prevConfig; // store the chart object var chart; - vm.generateChart = function () { + vm.generateChart = function() { var chartData; // Need to deep watch changes in chart config prevConfig = angular.copy(vm.config); - $timeout(function () { + $timeout(function() { chartData = vm.config; if (chartData) { chartData.bindto = '#' + $attrs.id; // only re-generate donut pct chart if it has a threshold object // because it's colors will change based on data and thresholds - if (!chart || ($attrs.id.indexOf('donutPctChart') !== -1 && chartData.thresholds)) { + if (! chart || ($attrs.id.indexOf('donutPctChart') !== -1 && chartData.thresholds)) { chart = c3.generate(chartData); } else { - //if chart is already created, then we only need to re-load data + // if chart is already created, then we only need to re-load data chart.load(vm.config.data); } if (vm.getChartCallback) { @@ -39,9 +40,9 @@ function c3ChartController($timeout, $attrs) { }); }; - vm.$doCheck = function () { + vm.$doCheck = function() { // do a deep compare on config - if (!angular.equals(vm.config, prevConfig)) { + if (! angular.equals(vm.config, prevConfig)) { vm.generateChart(); } }; diff --git a/app/assets/javascripts/components/pf_charts/donut-chart.component.js b/app/assets/javascripts/components/pf_charts/donut-chart.component.js index 4024be357a2c..f38a20e7a7ea 100644 --- a/app/assets/javascripts/components/pf_charts/donut-chart.component.js +++ b/app/assets/javascripts/components/pf_charts/donut-chart.component.js @@ -2,115 +2,116 @@ angular.module('patternfly.charts').component('pfDonutChart', { bindings: { config: '<', data: '<', - chartHeight: ' 90%']; - vm.$onInit = function () { + vm.$onInit = function() { vm.updateAll(); }; - vm.updateAll = function () { + vm.updateAll = function() { var items = []; var index; - //Allow overriding of defaults - if (!vm.legendColors) { + // Allow overriding of defaults + if (! vm.legendColors) { vm.legendColors = heatmapColorPatternDefaults; } - if (!vm.legend) { + if (! vm.legend) { vm.legend = legendLabelDefaults; } for (index = vm.legend.length - 1; index >= 0; index--) { items.push({ text: vm.legend[index], - color: vm.legendColors[index] + color: vm.legendColors[index], }); } vm.legendItems = items; }; - vm.$onChanges = function (changesObj) { - if (changesObj.legend && !changesObj.legend.isFirstChange()) { + vm.$onChanges = function(changesObj) { + if (changesObj.legend && ! changesObj.legend.isFirstChange()) { vm.updateAll(); } - if (changesObj.legendColors && !changesObj.legendColors.isFirstChange()) { + if (changesObj.legendColors && ! changesObj.legendColors.isFirstChange()) { vm.updateAll(); } }; - } + }, }); diff --git a/app/assets/javascripts/components/pf_charts/heatmap.component.js b/app/assets/javascripts/components/pf_charts/heatmap.component.js index 89ab7a0cda1a..7e4f316125f2 100644 --- a/app/assets/javascripts/components/pf_charts/heatmap.component.js +++ b/app/assets/javascripts/components/pf_charts/heatmap.component.js @@ -14,250 +14,253 @@ angular.module('patternfly.charts').component('pfHeatmap', { clickAction: ' 90%']; - var rangeTooltipDefaults = ['< 70%', '70-80%' ,'80-90%', '> 90%']; - var heightDefault = 200; - - var setStyles = function () { - vm.containerStyles = { - height: vm.height + 'px', - display: vm.chartDataAvailable === false ? 'none' : 'block' - }; + 'use strict'; + var vm = this; + var prevData; + var containerWidth; + var containerHeight; + var blockSize; + var numberOfRows; + var thresholdDefaults = [0.7, 0.8, 0.9]; + var heatmapColorPatternDefaults = ['#d4f0fa', '#F9D67A', '#EC7A08', '#CE0000']; + var legendLabelDefaults = ['< 70%', '70-80%', '80-90%', '> 90%']; + var rangeTooltipDefaults = ['< 70%', '70-80%', '80-90%', '> 90%']; + var heightDefault = 200; + + var setStyles = function() { + vm.containerStyles = { + height: vm.height + 'px', + display: vm.chartDataAvailable === false ? 'none' : 'block', }; + }; - var setSizes = function () { - var parentContainer = $element[0].querySelector('.heatmap-container'); - containerWidth = parentContainer.clientWidth; - containerHeight = parentContainer.clientHeight; - blockSize = determineBlockSize(); + var setSizes = function() { + var parentContainer = $element[0].querySelector('.heatmap-container'); + containerWidth = parentContainer.clientWidth; + containerHeight = parentContainer.clientHeight; + blockSize = determineBlockSize(); - if ((blockSize - vm.padding) > vm.maxSize) { - blockSize = vm.padding + vm.maxSize; + if ((blockSize - vm.padding) > vm.maxSize) { + blockSize = vm.padding + vm.maxSize; - // Attempt to square off the area, check if square fits - numberOfRows = Math.ceil(Math.sqrt(vm.data.length)); - if (blockSize * numberOfRows > containerWidth || - blockSize * numberOfRows > containerHeight) { - numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); - } - } else if ((blockSize - vm.padding) < vm.minSize) { - blockSize = vm.padding + vm.minSize; - - // Attempt to square off the area, check if square fits - numberOfRows = Math.ceil(Math.sqrt(vm.data.length)); - if (blockSize * numberOfRows > containerWidth || - blockSize * numberOfRows > containerHeight) { - numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); - } - } else { + // Attempt to square off the area, check if square fits + numberOfRows = Math.ceil(Math.sqrt(vm.data.length)); + if (blockSize * numberOfRows > containerWidth || + blockSize * numberOfRows > containerHeight) { numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); } - }; - - var determineBlockSize = function () { - var x = containerWidth; - var y = containerHeight; - var n = vm.data ? vm.data.length : 0; - var px = Math.ceil(Math.sqrt(n * x / y)); - var py = Math.ceil(Math.sqrt(n * y / x)); - var sx, sy; + } else if ((blockSize - vm.padding) < vm.minSize) { + blockSize = vm.padding + vm.minSize; - if (Math.floor(px * y / x) * px < n) { - sx = y / Math.ceil(px * y / x); - } else { - sx = x / px; + // Attempt to square off the area, check if square fits + numberOfRows = Math.ceil(Math.sqrt(vm.data.length)); + if (blockSize * numberOfRows > containerWidth || + blockSize * numberOfRows > containerHeight) { + numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); } - - if (Math.floor(py * x / y) * py < n) { - sy = x / Math.ceil(x * py / y); - } else { - sy = y / py; + } else { + numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); + } + }; + + var determineBlockSize = function() { + var x = containerWidth; + var y = containerHeight; + var n = vm.data ? vm.data.length : 0; + var px = Math.ceil(Math.sqrt(n * x / y)); + var py = Math.ceil(Math.sqrt(n * y / x)); + var sx; + var sy; + + if (Math.floor(px * y / x) * px < n) { + sx = y / Math.ceil(px * y / x); + } else { + sx = x / px; + } + + if (Math.floor(py * x / y) * py < n) { + sy = x / Math.ceil(x * py / y); + } else { + sy = y / py; + } + return Math.max(sx, sy); + }; + + var redraw = function() { + var data = vm.data; + var color = d3.scale.threshold().domain(vm.thresholds).range(vm.heatmapColorPattern); + var rangeTooltip = d3.scale.threshold().domain(vm.thresholds).range(vm.rangeTooltips); + var blocks; + var fillSize = blockSize - vm.padding; + var highlightBlock = function(block, active) { + block.style('fill-opacity', active ? 1 : 0.4); + }; + var highlightBlockColor = function(block, fillColor) { + // Get fill color from given block + var blockColor = color(block.map(function(d) { + return d[0].__data__.value; + })); + // If given color matches, apply highlight + if (blockColor === fillColor) { + block.style('fill-opacity', 1); } - return Math.max(sx, sy); }; - var redraw = function () { - var data = vm.data; - var color = d3.scale.threshold().domain(vm.thresholds).range(vm.heatmapColorPattern); - var rangeTooltip = d3.scale.threshold().domain(vm.thresholds).range(vm.rangeTooltips); - var blocks; - var fillSize = blockSize - vm.padding; - var highlightBlock = function (block, active) { - block.style('fill-opacity', active ? 1 : 0.4); - }; - var highlightBlockColor = function (block, fillColor) { - // Get fill color from given block - var blockColor = color(block.map(function (d) { + var svg = window.d3.select(vm.thisComponent); + svg.selectAll('*').remove(); + blocks = svg.selectAll('rect').data(data).enter().append('rect'); + blocks.attr('x', function(d, i) { + return Math.floor(i / numberOfRows) * blockSize; + }).attr('y', function(d, i) { + return i % numberOfRows * blockSize; + }).attr('width', fillSize).attr('height', fillSize).style('fill', function(d) { + return color(d.value); + }).attr('uib-tooltip-html', function(d, i) { // tooltip-html is throwing an exception + if (vm.rangeOnHover && fillSize <= vm.rangeHoverSize) { + return '"' + rangeTooltip(d.value) + '"'; + } + return "'" + d.tooltip + "'"; + }).attr('tooltip-append-to-body', function(d, i) { + return true; + }).attr('tooltip-animation', function(d, i) { + return false; + }); + + // Adding events + blocks.on('mouseover', function() { + var fillColor; + blocks.call(highlightBlock, false); + if (vm.rangeOnHover && fillSize <= vm.rangeHoverSize) { + // Get fill color for current block + fillColor = color(d3.select(this).map(function(d) { return d[0].__data__.value; })); - // If given color matches, apply highlight - if (blockColor === fillColor) { - block.style('fill-opacity', 1); - } - }; - - var svg = window.d3.select(vm.thisComponent); - svg.selectAll('*').remove(); - blocks = svg.selectAll('rect').data(data).enter().append('rect'); - blocks.attr('x', function (d, i) { - return Math.floor(i / numberOfRows) * blockSize; - }).attr('y', function (d, i) { - return i % numberOfRows * blockSize; - }).attr('width', fillSize).attr('height', fillSize).style('fill', function (d) { - return color(d.value); - }).attr('uib-tooltip-html', function (d, i) { //tooltip-html is throwing an exception - if (vm.rangeOnHover && fillSize <= vm.rangeHoverSize) { - return '"' + rangeTooltip(d.value) + '"'; - } - return "'" + d.tooltip + "'"; - }).attr('tooltip-append-to-body', function (d, i) { - return true; - }).attr('tooltip-animation', function (d, i) { - return false; - }); - - //Adding events - blocks.on('mouseover', function () { - var fillColor; - blocks.call(highlightBlock, false); - if (vm.rangeOnHover && fillSize <= vm.rangeHoverSize) { - // Get fill color for current block - fillColor = color(d3.select(this).map(function (d) { - return d[0].__data__.value; - })); - // Highlight all blocks matching fill color - blocks[0].forEach(function (block) { - highlightBlockColor(d3.select(block), fillColor); - }); - } else { - d3.select(this).call(highlightBlock, true); - } - }); - blocks.on('click', function (d) { - if (vm.clickAction) { - vm.clickAction(d); - } - }); - - //Compiles the tooltips - angular.forEach(angular.element(blocks), function (block) { - var el = angular.element(block); - // TODO: get heatmap tooltips to work without using $compile or $scope - $compile(el)($scope); - }); - - svg.on('mouseleave', function () { - blocks.call(highlightBlock, true); - }); - }; - - vm.updateAll = function () { - // Need to deep watch changes in chart data - prevData = angular.copy(vm.data); - - //Allow overriding of defaults - if (vm.maxBlockSize === undefined || isNaN(vm.maxBlockSize)) { - vm.maxSize = 64; - } else { - vm.maxSize = parseInt(vm.maxBlockSize); - if (vm.maxSize < 5) { - vm.maxSize = 5; - } else if (vm.maxSize > 50) { - vm.maxSize = 50; - } - } - - if (vm.minBlockSize === undefined || isNaN(vm.minBlockSize)) { - vm.minSize = 2; + // Highlight all blocks matching fill color + blocks[0].forEach(function(block) { + highlightBlockColor(d3.select(block), fillColor); + }); } else { - vm.minSize = parseInt(vm.minBlockSize); + d3.select(this).call(highlightBlock, true); } - - if (vm.blockPadding === undefined || isNaN(vm.blockPadding)) { - vm.padding = 2; - } else { - vm.padding = parseInt(vm.blockPadding); + }); + blocks.on('click', function(d) { + if (vm.clickAction) { + vm.clickAction(d); } - - if (vm.rangeHoverSize === undefined || isNaN(vm.rangeHoverSize)) { - vm.rangeHoverSize = 15; - } else { - vm.rangeHoverSize = parseInt(vm.rangeHoverSize); - } - - vm.rangeOnHover = (vm.rangeOnHover === undefined || vm.rangeOnHover) ? true : false; - - if (!vm.rangeTooltips) { - vm.rangeTooltips = rangeTooltipDefaults; + }); + + // Compiles the tooltips + angular.forEach(angular.element(blocks), function(block) { + var el = angular.element(block); + // TODO: get heatmap tooltips to work without using $compile or $scope + $compile(el)($scope); + }); + + svg.on('mouseleave', function() { + blocks.call(highlightBlock, true); + }); + }; + + vm.updateAll = function() { + // Need to deep watch changes in chart data + prevData = angular.copy(vm.data); + + // Allow overriding of defaults + if (vm.maxBlockSize === undefined || isNaN(vm.maxBlockSize)) { + vm.maxSize = 64; + } else { + vm.maxSize = parseInt(vm.maxBlockSize); + if (vm.maxSize < 5) { + vm.maxSize = 5; + } else if (vm.maxSize > 50) { + vm.maxSize = 50; } + } + + if (vm.minBlockSize === undefined || isNaN(vm.minBlockSize)) { + vm.minSize = 2; + } else { + vm.minSize = parseInt(vm.minBlockSize); + } + + if (vm.blockPadding === undefined || isNaN(vm.blockPadding)) { + vm.padding = 2; + } else { + vm.padding = parseInt(vm.blockPadding); + } + + if (vm.rangeHoverSize === undefined || isNaN(vm.rangeHoverSize)) { + vm.rangeHoverSize = 15; + } else { + vm.rangeHoverSize = parseInt(vm.rangeHoverSize); + } + + vm.rangeOnHover = (vm.rangeOnHover === undefined || vm.rangeOnHover) ? true : false; + + if (! vm.rangeTooltips) { + vm.rangeTooltips = rangeTooltipDefaults; + } + + if (! vm.thresholds) { + vm.thresholds = thresholdDefaults; + } + + if (! vm.heatmapColorPattern) { + vm.heatmapColorPattern = heatmapColorPatternDefaults; + } + + if (! vm.legendLabels) { + vm.legendLabels = legendLabelDefaults; + } + vm.height = vm.height || heightDefault; + vm.showLegend = vm.showLegend || (vm.showLegend === undefined); + vm.loadingDone = false; + + angular.element($window).on('resize', function() { + setSizes(); + redraw(); + }); - if (!vm.thresholds) { - vm.thresholds = thresholdDefaults; - } - - if (!vm.heatmapColorPattern) { - vm.heatmapColorPattern = heatmapColorPatternDefaults; - } - - if (!vm.legendLabels) { - vm.legendLabels = legendLabelDefaults; - } - vm.height = vm.height || heightDefault; - vm.showLegend = vm.showLegend || (vm.showLegend === undefined); - vm.loadingDone = false; - - angular.element($window).on('resize', function () { - setSizes(); - redraw(); - }); - - vm.thisComponent = $element[0].querySelector('.heatmap-pf-svg'); - - $timeout(function () { - setStyles(); - setSizes(); - redraw(); - }); - }; - - vm.$onChanges = function (changesObj) { - if (changesObj.chartDataAvailable && !changesObj.chartDataAvailable.isFirstChange()) { - setStyles(); - } else { - vm.updateAll(); - vm.loadingDone = true; - } - }; - - vm.$doCheck = function () { - // do a deep compare on chartData and config - if (!angular.equals(vm.data, prevData)) { - setStyles(); - if (vm.chartDataAvailable !== false) { - setSizes(); - redraw(); - } - } - }; + vm.thisComponent = $element[0].querySelector('.heatmap-pf-svg'); - vm.$postLink = function () { + $timeout(function() { setStyles(); setSizes(); redraw(); - }; + }); + }; - } + vm.$onChanges = function(changesObj) { + if (changesObj.chartDataAvailable && ! changesObj.chartDataAvailable.isFirstChange()) { + setStyles(); + } else { + vm.updateAll(); + vm.loadingDone = true; + } + }; + + vm.$doCheck = function() { + // do a deep compare on chartData and config + if (! angular.equals(vm.data, prevData)) { + setStyles(); + if (vm.chartDataAvailable !== false) { + setSizes(); + redraw(); + } + } + }; + + vm.$postLink = function() { + setStyles(); + setSizes(); + redraw(); + }; +} diff --git a/app/assets/javascripts/components/pf_charts/line-chart.component.js b/app/assets/javascripts/components/pf_charts/line-chart.component.js index 6af3788963ff..84e79b82a745 100644 --- a/app/assets/javascripts/components/pf_charts/line-chart.component.js +++ b/app/assets/javascripts/components/pf_charts/line-chart.component.js @@ -4,18 +4,19 @@ angular.module('patternfly.charts').component('pfLineChart', { chartData: '<', showXAxis: '' + ' ' + ' ' + @@ -108,9 +109,9 @@ function sparklineChartController(pfUtils) { ''; }; - vm.sparklineTooltip = function () { + vm.sparklineTooltip = function() { return { - contents: function (d) { + contents: function(d) { var tipRows; var percentUsed = 0; @@ -151,7 +152,7 @@ function sparklineChartController(pfUtils) { } return vm.getTooltipTableHTML(tipRows); }, - position: function (data, width, height, element) { + position: function(data, width, height, element) { var center; var top; var chartBox; @@ -167,21 +168,21 @@ function sparklineChartController(pfUtils) { return { top: top - height, - left: Math.min(x, chartBox.width - width) + left: Math.min(x, chartBox.width - width), }; } catch (e) { } - } + }, }; }; - vm.$onChanges = function (changesObj) { + vm.$onChanges = function(changesObj) { vm.updateAll(); }; - vm.$doCheck = function () { + vm.$doCheck = function() { // do a deep compare on chartData - if (!angular.equals(vm.chartData, prevChartData)) { + if (! angular.equals(vm.chartData, prevChartData)) { vm.updateAll(); } }; diff --git a/app/assets/javascripts/components/pf_charts/utilization-trend-chart.component.js b/app/assets/javascripts/components/pf_charts/utilization-trend-chart.component.js index ab2b5ea17d8e..f14ec301b80b 100644 --- a/app/assets/javascripts/components/pf_charts/utilization-trend-chart.component.js +++ b/app/assets/javascripts/components/pf_charts/utilization-trend-chart.component.js @@ -7,55 +7,56 @@ angular.module('patternfly.charts').component('pfUtilizationTrendChart', { sparklineConfig: '<', sparklineChartHeight: '<%- col1 %> <%- col2 %>')({ col1: theMoment.format('MM/DD/YYYY'), - col2: data[0].value + ' ' + data[0].name + col2: data[0].value + ' ' + data[0].name, }); }; @@ -39,12 +39,12 @@ angular.module('miq.util').factory('chartsMixin', ['pfUtils', function(pfUtils) usageDataName: __('Used'), legendLeftText: __('Last 30 Days'), legendRightText: '', - numDays: 30 + numDays: 30, }, cpuUsageSparklineConfig: { tooltipFn: dailyTimeTooltip, chartId: 'cpuSparklineChart', - units: __('Cores') + units: __('Cores'), }, cpuUsageDonutConfig: { chartId: 'cpuDonutChart', @@ -57,48 +57,48 @@ angular.module('miq.util').factory('chartsMixin', ['pfUtils', function(pfUtils) usageDataName: __('Used'), legendLeftText: __('Last 30 Days'), legendRightText: '', - numDays: 30 + numDays: 30, }, memoryUsageSparklineConfig: { tooltipFn: dailyTimeTooltip, chartId: 'memorySparklineChart', - units: __('GB') + units: __('GB'), }, memoryUsageDonutConfig: { chartId: 'memoryDonutChart', thresholds: { 'warning': '60', 'error': '90' }, }, recentHostsConfig: { - chartId : 'recentHostsChart', - headTitle : __('Recent Hosts'), + chartId: 'recentHostsChart', + headTitle: __('Recent Hosts'), label: __('Hosts'), - tooltip : { + tooltip: { contents: dailyTimeTooltip, position: lineChartTooltipPositionFactory('recentHostsChart'), }, - point : {r: 1}, - size : {height: 145}, - grid : {y: {show: false}}, - setAreaChart: true + point: {r: 1}, + size: {height: 145}, + grid: {y: {show: false}}, + setAreaChart: true, }, recentVmsConfig: { - chartId : 'recentVmsChart', - headTitle : __('Recent VMs'), + chartId: 'recentVmsChart', + headTitle: __('Recent VMs'), label: __('VMs'), - tooltip : { + tooltip: { contents: dailyTimeTooltip, position: lineChartTooltipPositionFactory('recentVmsChart'), }, - point : {r: 1}, - size : {height: 145}, - grid : {y: {show: false}}, - setAreaChart: true + point: {r: 1}, + size: {height: 145}, + grid: {y: {show: false}}, + setAreaChart: true, }, }; var processData = function(data, xDataLabel, yDataLabel) { - if (!data) { - return { dataAvailable: false } + if (! data) { + return { dataAvailable: false }; } data.xData.unshift(xDataLabel); data.yData.unshift(yDataLabel); @@ -110,6 +110,6 @@ angular.module('miq.util').factory('chartsMixin', ['pfUtils', function(pfUtils) nodeHeatMapUsageLegendLabels: ['< 70%', '70-80%', '80-90%', '> 90%'], chartConfig: chartConfig, processData: processData, - dailyTimeTooltip: dailyTimeTooltip + dailyTimeTooltip: dailyTimeTooltip, }; }]); diff --git a/app/assets/javascripts/controllers/ems_infra_dashboard/heatmap_controller.js b/app/assets/javascripts/controllers/ems_infra_dashboard/heatmap_controller.js index 21f78be41da0..cafa087c225d 100644 --- a/app/assets/javascripts/controllers/ems_infra_dashboard/heatmap_controller.js +++ b/app/assets/javascripts/controllers/ems_infra_dashboard/heatmap_controller.js @@ -1,6 +1,6 @@ /* global miqHttpInject */ -angular.module( 'patternfly.charts' ).controller('heatmapController', ['$scope', '$q', 'providerId','API', '$http', 'miqService', function($scope, $q, providerId, API, $http, miqService) { +angular.module( 'patternfly.charts' ).controller('heatmapController', ['$q', 'providerId', '$http', function($q, providerId, $http) { var vm = this; vm.data = {}; @@ -9,70 +9,62 @@ angular.module( 'patternfly.charts' ).controller('heatmapController', ['$scope', var url = '/ems_infra_dashboard/cluster_metrics_data/' + providerId; var heatmapPromise = $http.get(url).then(function(response) { vm.heatmapData = response.data.data; - }) + }); $q.all([heatmapPromise]).then(function() { vm.title = vm.heatmapData.heatmaps.title; - vm.data = processHeatmapData(vm.data, vm.heatmapData.heatmaps) + vm.data = processHeatmapData(vm.data, vm.heatmapData.heatmaps); }); vm.dataAvailable = true; vm.titleAlt = 'Utilization - Overriding Defaults'; - vm.legendLabels = ['< 60%','70%', '70-80%' ,'80-90%', '> 90%']; + vm.legendLabels = ['< 60%', '70%', '70-80%', '80-90%', '> 90%']; vm.rangeTooltips = ['Memory Utilization < 70%40 Nodes', 'Memory Utilization 70-80%4 Nodes', 'Memory Utilization 80-90%4 Nodes', 'Memory Utilization > 90%4 Nodes']; vm.thresholds = [0.6, 0.7, 0.8, 0.9]; vm.heatmapColorPattern = ['#d4f0fa', '#F9D67A', '#EC7A08', '#CE0000', '#f00']; vm.showLegends = true; - - var clickAction = function (block) { - console.log(block); - }; - vm.clickAction = clickAction; }; var heatmapTitles = { "clusterCpuUsage": "CPU", - "clusterMemoryUsage": "Memory" - } + "clusterMemoryUsage": "Memory", + }; var processHeatmapData = function(heatmapsStruct, data) { heatmapsStruct.data = {}; + var heatmapsStructData = []; if (data) { var keys = Object.keys(data); - for (i in keys) { - if (keys[i] == 'title') { continue; } + for (var i in keys) { + if (keys[i] === 'title') { continue; } if (data[keys[i]] === null) { - var heatmapsStructData = []; heatmapsStruct.data[heatmapTitles[keys[i]]] = []; vm.dataAvailable = false; } else { - var heatmapsStructData = data[keys[i]].map(function (d) { + heatmapsStructData = data[keys[i]].map(function(d) { var percent = -1; - var tooltip = __("Cluster: ") + d.node + "
" + __("Provider: ") + d.provider + var tooltip = __("Cluster: ") + d.node + "
" + __("Provider: ") + d.provider; if (d.percent === null || d.total === null) { tooltip += "
" + __("Usage: Unknown"); - } - else { - percent = d.percent + } else { + percent = d.percent; tooltip += "
" + __("Usage: ") + sprintf(__("%d%% in use of %d %s total"), (percent * 100).toFixed(0), d.total, d.unit); } return { "id": d.id, "tooltip": tooltip, - "value": percent + "value": percent, }; - }) + }); } - heatmapsStruct.data[heatmapTitles[keys[i]]] = _.sortBy(heatmapsStructData, 'value').reverse() + heatmapsStruct.data[heatmapTitles[keys[i]]] = _.sortBy(heatmapsStructData, 'value').reverse(); } + } else { + heatmapsStruct.data = []; + vm.dataAvailable = false; } - else - { - heatmapsStruct.data = []; - vm.dataAvailable = false - } - return heatmapsStruct.data + return heatmapsStruct.data; }; init(); diff --git a/app/assets/javascripts/controllers/ems_infra_dashboard/line_chart_controller.js b/app/assets/javascripts/controllers/ems_infra_dashboard/line_chart_controller.js index 7c201705d4b1..59155ede07fc 100644 --- a/app/assets/javascripts/controllers/ems_infra_dashboard/line_chart_controller.js +++ b/app/assets/javascripts/controllers/ems_infra_dashboard/line_chart_controller.js @@ -1,9 +1,8 @@ /* global miqHttpInject */ -angular.module( 'patternfly.charts' ).controller( 'lineChartController', ['$scope', 'pfUtils', '$q', 'providerId', '$http', 'chartsMixin', 'objectType', function( $scope, pfUtils, $q, providerId, $http, chartsMixin, objectType ) { +angular.module( 'patternfly.charts' ).controller( 'lineChartController', ['$q', 'providerId', '$http', 'chartsMixin', 'objectType', function($q, providerId, $http, chartsMixin, objectType ) { var vm = this; var init = function() { - alert(objectType) ManageIQ.angular.scope = vm; vm.config = chartsMixin.chartConfig['recent' + objectType + 'Config']; var url = '/ems_infra_dashboard/recent_objects_data/' + providerId + '?object_type=' + objectType; @@ -12,13 +11,13 @@ angular.module( 'patternfly.charts' ).controller( 'lineChartController', ['$scop }); $q.all([dataPromise]).then(function() { - vm.data = chartsMixin.processData(vm.data.recentData, 'dates', vm.data.recentData.config.label) + vm.data = chartsMixin.processData(vm.data.recentData, 'dates', vm.data.recentData.config.label); }); vm.custShowXAxis = false; vm.custShowYAxis = false; vm.custAreaChart = true; - } + }; init(); }]); diff --git a/app/assets/javascripts/controllers/ems_infra_dashboard/recent_hosts_line_chart_controller.js b/app/assets/javascripts/controllers/ems_infra_dashboard/recent_hosts_line_chart_controller.js index 2b16b901e8fe..804a9ef3638f 100644 --- a/app/assets/javascripts/controllers/ems_infra_dashboard/recent_hosts_line_chart_controller.js +++ b/app/assets/javascripts/controllers/ems_infra_dashboard/recent_hosts_line_chart_controller.js @@ -1,26 +1,27 @@ /* global miqHttpInject */ -angular.module( 'patternfly.charts' ).controller( 'recentHostsLineChartController', ['$scope', 'pfUtils', '$q', 'providerId', '$http', 'chartsMixin', function( $scope, pfUtils, $q, providerId, $http, chartsMixin ) { +angular.module( 'patternfly.charts' ).controller( 'recentHostsLineChartController', ['$q', 'providerId', '$http', 'chartsMixin', function($q, providerId, $http, chartsMixin ) { var vm = this; var init = function() { ManageIQ.angular.scope = vm; - vm.config = chartsMixin.chartConfig['recentHostsConfig']; + vm.config = chartsMixin.chartConfig.recentHostsConfig; var url = '/ems_infra_dashboard/recent_hosts_data/' + providerId; var hostsDataPromise = $http.get(url).then(function(response) { vm.data = response.data.data; }); $q.all([hostsDataPromise]).then(function() { - if (vm.data.recentHosts.dataAvailable === false) + if (vm.data.recentHosts.dataAvailable === false) { vm.data.dataAvailable = false; - else - vm.data = chartsMixin.processData(vm.data.recentHosts, 'dates', vm.data.recentHosts.config.label) + } else { + vm.data = chartsMixin.processData(vm.data.recentHosts, 'dates', vm.data.recentHosts.config.label); + } }); vm.custShowXAxis = false; vm.custShowYAxis = false; vm.custAreaChart = true; - } + }; init(); }]); diff --git a/app/assets/javascripts/controllers/ems_infra_dashboard/recent_vms_line_chart_controller.js b/app/assets/javascripts/controllers/ems_infra_dashboard/recent_vms_line_chart_controller.js index 2aef1ea90b20..ac31527ae747 100644 --- a/app/assets/javascripts/controllers/ems_infra_dashboard/recent_vms_line_chart_controller.js +++ b/app/assets/javascripts/controllers/ems_infra_dashboard/recent_vms_line_chart_controller.js @@ -1,26 +1,27 @@ /* global miqHttpInject */ -angular.module( 'patternfly.charts' ).controller( 'recentVmsLineChartController', ['$scope', 'pfUtils', '$q', 'providerId', '$http', 'chartsMixin', function( $scope, pfUtils, $q, providerId, $http, chartsMixin ) { +angular.module( 'patternfly.charts' ).controller( 'recentVmsLineChartController', ['$q', 'providerId', '$http', 'chartsMixin', function($q, providerId, $http, chartsMixin ) { var vm = this; var init = function() { ManageIQ.angular.scope = vm; - vm.config = chartsMixin.chartConfig['recentVmsConfig']; + vm.config = chartsMixin.chartConfig.recentVmsConfig; var url = '/ems_infra_dashboard/recent_vms_data/' + providerId; var vmsDataPromise = $http.get(url).then(function(response) { vm.data = response.data.data; }); $q.all([vmsDataPromise]).then(function() { - if (vm.data.recentVms.dataAvailable === false) + if (vm.data.recentVms.dataAvailable === false) { vm.data.dataAvailable = false; - else - vm.data = chartsMixin.processData(vm.data.recentVms, 'dates', vm.data.recentVms.config.label) + } else { + vm.data = chartsMixin.processData(vm.data.recentVms, 'dates', vm.data.recentVms.config.label); + } }); vm.custShowXAxis = false; vm.custShowYAxis = false; vm.custAreaChart = true; - } + }; init(); }]); diff --git a/app/assets/javascripts/controllers/ems_infra_dashboard/utilization_trend_chart_controller.js b/app/assets/javascripts/controllers/ems_infra_dashboard/utilization_trend_chart_controller.js index 52f3ce607b47..3ba6cb1798c2 100644 --- a/app/assets/javascripts/controllers/ems_infra_dashboard/utilization_trend_chart_controller.js +++ b/app/assets/javascripts/controllers/ems_infra_dashboard/utilization_trend_chart_controller.js @@ -1,4 +1,4 @@ -angular.module( 'patternfly.charts' ).controller('utilizationTrendChartController', ['$scope', '$q', 'providerId', 'chartsMixin', '$http', function($scope, $q, providerId, chartsMixin, $http) { +angular.module( 'patternfly.charts' ).controller('utilizationTrendChartController', ['$q', 'providerId', 'chartsMixin', '$http', function($q, providerId, chartsMixin, $http) { var vm = this; var init = function() { @@ -8,10 +8,10 @@ angular.module( 'patternfly.charts' ).controller('utilizationTrendChartControlle var url = '/ems_infra_dashboard/ems_utilization_data/' + providerId; var metricsPromise = $http.get(url).then(function(response) { vm.metricsData = response.data.data; - }) + }); $q.all([metricsPromise]).then(function() { - vm.data = processMetricsData(vm.data, vm.metricsData.ems_utilization) + vm.data = processMetricsData(vm.data, vm.metricsData.ems_utilization); }); vm.title = "Global Utilization"; @@ -21,7 +21,7 @@ angular.module( 'patternfly.charts' ).controller('utilizationTrendChartControlle vm.custChartHeight = 60; vm.dataAvailable = false; - vm.addDataPoint = function () { + vm.addDataPoint = function() { var newData = Math.round(Math.random() * 100); var newDate = new Date(vm.data.xData[vm.data.xData.length - 1].getTime() + (24 * 60 * 60 * 1000)); vm.data.used = newData; @@ -34,31 +34,30 @@ angular.module( 'patternfly.charts' ).controller('utilizationTrendChartControlle metricsDataStruct.data = {}; if (data) { var keys = Object.keys(data); - for (i in keys) { + for (var i in keys) { if (data[keys[i]] === null) { - var metricsDataStructData = []; metricsDataStruct.data[keys[i]] = { 'data': {dataAvailable: false}, 'config': { - 'title': chartsMixin.chartConfig[keys[i] + 'UsageConfig'].title - } + 'title': chartsMixin.chartConfig[keys[i] + 'UsageConfig'].title, + }, }; } else { metricsDataStruct.data[keys[i]] = { 'data': chartsMixin.processData(data[keys[i]], 'dates', chartsMixin.chartConfig[keys[i] + 'UsageConfig'].units), 'config': { 'title': chartsMixin.chartConfig[keys[i] + 'UsageConfig'].title, - 'units': chartsMixin.chartConfig[keys[i] + 'UsageConfig'].units + 'units': chartsMixin.chartConfig[keys[i] + 'UsageConfig'].units, }, 'donutConfig': chartsMixin.chartConfig[keys[i] + 'UsageDonutConfig'], - 'sparklineConfig': chartsMixin.chartConfig[keys[i] + 'UsageSparklineConfig'] - } + 'sparklineConfig': chartsMixin.chartConfig[keys[i] + 'UsageSparklineConfig'], + }; } } } else { metricsDataStruct.data = {dataAvailable: false}; } - return metricsDataStruct.data + return metricsDataStruct.data; }; init();