diff options
author | Mike Greiling <mike@pixelcog.com> | 2017-09-01 11:49:47 -0500 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2017-09-01 11:49:47 -0500 |
commit | f69ad38910cde87eec6e249b555018ec2524f689 (patch) | |
tree | 6a1f3922fb6be8af3423adff3570b2041633e35f | |
parent | a4d3ac40670abf853f531cc99284859a0941b2ca (diff) | |
download | gitlab-ce-f69ad38910cde87eec6e249b555018ec2524f689.tar.gz |
refactor monitoring_store.js
-rw-r--r-- | app/assets/javascripts/monitoring/stores/monitoring_store.js | 78 |
1 files changed, 37 insertions, 41 deletions
diff --git a/app/assets/javascripts/monitoring/stores/monitoring_store.js b/app/assets/javascripts/monitoring/stores/monitoring_store.js index 47ac8c5ff78..5dc414158fd 100644 --- a/app/assets/javascripts/monitoring/stores/monitoring_store.js +++ b/app/assets/javascripts/monitoring/stores/monitoring_store.js @@ -1,53 +1,51 @@ import _ from 'underscore'; -const sortMetrics = metrics => _.chain(metrics).sortBy('weight').sortBy('title').value(); +function sortMetrics(metrics) { + return _.chain(metrics).sortBy('weight').sortBy('title').value(); +} + +function normalizeMetrics(metrics) { + return metrics.map(metric => ({ + ...metric, + queries: metric.queries.map(query => ({ + ...query, + result: query.result.map(result => ({ + ...result, + values: result.values.map(([timestamp, value]) => ({ + time: new Date(timestamp * 1000), + value, + })), + })), + })), + })); +} + +function collate(array, rows = 2) { + const collatedArray = []; + let row = []; + array.forEach((value, index) => { + row.push(value); + if (index % rows === 0) { + collatedArray.push(row); + row = []; + } + }); + if (row.length > 0) { + collatedArray.push(row); + } + return collatedArray; +} -class MonitoringStore { +export default class MonitoringStore { constructor() { this.groups = []; this.deploymentData = []; } - // eslint-disable-next-line class-methods-use-this - createArrayRows(metrics = []) { - const currentMetrics = metrics; - const availableMetrics = []; - let metricsRow = []; - let index = 1; - Object.keys(currentMetrics).forEach((key) => { - const metricValues = currentMetrics[key].queries[0].result; - if (metricValues != null) { - currentMetrics[key].queries[0].result = metricValues.map((series) => { - let convertedValues = []; - if (series != null) { - convertedValues = series.values.map(metric => ({ - time: new Date(metric[0] * 1000), - value: metric[1], - })); - } - return { - metric: series.metric, - values: convertedValues, - }; - }); - metricsRow.push(currentMetrics[key]); - if (index % 2 === 0) { - availableMetrics.push(metricsRow); - metricsRow = []; - } - index = index += 1; - } - }); - if (metricsRow.length > 0) { - availableMetrics.push(metricsRow); - } - return availableMetrics; - } - storeMetrics(groups = []) { this.groups = groups.map(group => ({ ...group, - metrics: this.createArrayRows(sortMetrics(group.metrics)), + metrics: collate(normalizeMetrics(sortMetrics(group.metrics))), })); } @@ -65,5 +63,3 @@ class MonitoringStore { return metricsCount; } } - -export default MonitoringStore; |