storm_linear_time.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. App.StormLinearTimeChartMixin = Em.Mixin.create({
  20. ajaxIndex: 'service.metrics.storm.nimbus',
  21. metricsTemplate: 'metrics/storm/nimbus/{0}[{1},{2},{3}]',
  22. getDataForAjaxRequest: function() {
  23. var currentTime = Math.round(App.dateTime() / 1000);
  24. var metricTemplate = [];
  25. this.get('stormChartDefinition').forEach(function(chartInfo) {
  26. metricTemplate.push(
  27. this.get('metricsTemplate').format(chartInfo.field, currentTime - this.get('timeUnitSeconds'), currentTime, 15)
  28. );
  29. }, this);
  30. return {
  31. metricsTemplate: metricTemplate.join(',')
  32. };
  33. },
  34. transformToSeries: function (jsonData) {
  35. var seriesArray = [];
  36. var pathKeys = ['metrics','storm','nimbus'];
  37. var validPath = true;
  38. pathKeys.forEach(function(key) {
  39. if (!jsonData[key]) {
  40. validPath = false;
  41. } else {
  42. jsonData = jsonData[key];
  43. }
  44. });
  45. if (!validPath) {
  46. return seriesArray;
  47. }
  48. this.get('stormChartDefinition').forEach(function(chart){
  49. seriesArray.push(this.transformData(jsonData[chart.field], chart.name));
  50. }, this);
  51. return seriesArray;
  52. }
  53. });