cloud-8.x-2.0-beta1/modules/cloud_service_providers/k8s/js/k8s_entity_metrics.js

modules/cloud_service_providers/k8s/js/k8s_entity_metrics.js
(function ($) {
  'use strict';

  if (!drupalSettings.k8s || !drupalSettings.k8s.metrics_enable) {
    $("#k8s_entity_metrics").parent().parent().hide();
    return;
  }

  var color = Chart.helpers.color;
  var formatMemory = function(value) {
    var mb = value / 1024 / 1024;
    mb = Math.round(mb);

    var gb = mb / 1024;
    gb = Math.round(gb * 100) / 100;

    if (gb >= 1) {
      return gb + " Gi"
    }
    else {
      return mb + " Mi"
    }
  };

  var updateCharts = function() {
    $.get(window.location.pathname + '/metrics', function(json) {
      var cpu_data = [],
          memory_data = [];
      $.each(json, function() {
        cpu_data.push({
          t: this.timestamp * 1000,
          y: this.cpu
        });

        memory_data.push({
          t: this.timestamp * 1000,
          y: this.memory
        });
      });

      cpu_chart.data.datasets[0].data = cpu_data;
      cpu_chart.update();

      memory_chart.data.datasets[0].data = memory_data;
      memory_chart.update();
    });
  }

  // Build CPU chart.
  $("#k8s_entity_metrics").append('<div class="col-sm-6"><canvas id="cpu_chart"></canvas></div>');
  var cpu_ctx = document.getElementById('cpu_chart').getContext('2d');
  var cpu_cfg = {
    type: 'bar',
    data: {
      datasets: [{
        label: 'CPU Usage',
        backgroundColor: color("green").alpha(0.5).rgbString(),
        borderColor: "green",
        data: [],
        type: 'line',
        pointRadius: 0,
        fill: false,
        lineTension: 0,
        borderWidth: 2
      }]
    },
    options: {
      scales: {
        xAxes: [{
          type: 'time',
          distribution: 'linear',
          bounds: 'ticks',
          ticks: {
            source: 'ticks',
            autoSkip: false
          }
        }],
        yAxes: [{
          scaleLabel: {
            display: true,
            labelString: 'CPU (Cores)'
          },
        }]
      },
      tooltips: {
        intersect: false,
        mode: 'index',
        callbacks: {
          label: function(tooltipItem, myData) {
            var label = myData.datasets[tooltipItem.datasetIndex].label || '';
            if (label) {
              label += ': ';
            }
            label += parseFloat(tooltipItem.value).toFixed(2);
            return label;
          }
        }
      }
    }
  };

  var cpu_chart = new Chart(cpu_ctx, cpu_cfg);

  // Build Memory chart.
  $("#k8s_entity_metrics").append('<div class="col-sm-6"><canvas id="memory_chart"></canvas></div>');
  var memory_ctx = document.getElementById('memory_chart').getContext('2d');
  var memory_cfg = {
    type: 'bar',
    data: {
      datasets: [{
        label: 'Memory Usage',
        backgroundColor: color("blue").alpha(0.5).rgbString(),
        borderColor: "blue",
        data: [],
        type: 'line',
        pointRadius: 0,
        fill: false,
        lineTension: 0,
        borderWidth: 2
      }]
    },
    options: {
      scales: {
        xAxes: [{
          type: 'time',
          distribution: 'linear',
          bounds: 'ticks',
          ticks: {
            source: 'ticks',
            autoSkip: false,
          }
        }],
        yAxes: [{
          scaleLabel: {
            display: true,
            labelString: 'Memory (Bytes)'
          },
          ticks: {
            callback: function(value, index, values) {
              return formatMemory(value);
            },
          }
        }]
      },
      tooltips: {
        intersect: false,
        mode: 'index',
        callbacks: {
          label: function(tooltipItem, myData) {
            var label = myData.datasets[tooltipItem.datasetIndex].label || '';
            if (label) {
              label += ': ';
            }
            label += formatMemory(tooltipItem.value);
            return label;
          }
        }
      }
    }
  };

  var memory_chart = new Chart(memory_ctx, memory_cfg);

  updateCharts();

  var interval = drupalSettings.k8s.k8s_js_refresh_interval || 10;
  setInterval(function() {
    updateCharts();
  }, interval * 1000);

})(jQuery);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc