Commit 01b80dfb authored by Jose Ivan Vargas's avatar Jose Ivan Vargas Committed by Clement Ho

Changes initial state for disabled prometheus integrations

parent cef19348
...@@ -8,6 +8,10 @@ document.addEventListener('DOMContentLoaded', () => { ...@@ -8,6 +8,10 @@ document.addEventListener('DOMContentLoaded', () => {
const prometheusSettingsWrapper = document.querySelector('.js-prometheus-metrics-monitoring'); const prometheusSettingsWrapper = document.querySelector('.js-prometheus-metrics-monitoring');
if (prometheusSettingsWrapper) { if (prometheusSettingsWrapper) {
const prometheusMetrics = new PrometheusMetrics('.js-prometheus-metrics-monitoring'); const prometheusMetrics = new PrometheusMetrics('.js-prometheus-metrics-monitoring');
prometheusMetrics.loadActiveCustomMetrics(); if (prometheusMetrics.isServiceActive) {
prometheusMetrics.loadActiveCustomMetrics();
} else {
prometheusMetrics.setNoIntegrationActiveState();
}
} }
}); });
import PANEL_STATE from '~/prometheus_metrics/constants';
const PANEL_STATE_EE = {
NO_INTEGRATION: 'no-integration',
};
export default Object.assign({}, PANEL_STATE, PANEL_STATE_EE);
import $ from 'jquery'; import $ from 'jquery';
import _ from 'underscore'; import _ from 'underscore';
import PrometheusMetrics from '~/prometheus_metrics/prometheus_metrics'; import PrometheusMetrics from '~/prometheus_metrics/prometheus_metrics';
import PANEL_STATE from '~/prometheus_metrics/constants'; import PANEL_STATE from './constants';
import axios from '~/lib/utils/axios_utils'; import axios from '~/lib/utils/axios_utils';
import { s__ } from '~/locale'; import { s__ } from '~/locale';
import { capitalizeFirstCharacter } from '~/lib/utils/text_utility'; import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
...@@ -9,8 +9,12 @@ import { capitalizeFirstCharacter } from '~/lib/utils/text_utility'; ...@@ -9,8 +9,12 @@ import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
export default class EEPrometheusMetrics extends PrometheusMetrics { export default class EEPrometheusMetrics extends PrometheusMetrics {
constructor(wrapperSelector) { constructor(wrapperSelector) {
super(wrapperSelector); super(wrapperSelector);
this.customMetrics = [];
this.environmentsData = [];
this.$els = [];
this.$wrapperCustomMetrics = $(wrapperSelector); this.$wrapperCustomMetrics = $(wrapperSelector);
this.$monitoredCustomMetricsPanel = this.$wrapperCustomMetrics.find( this.$monitoredCustomMetricsPanel = this.$wrapperCustomMetrics.find(
'.js-panel-custom-monitored-metrics', '.js-panel-custom-monitored-metrics',
); );
...@@ -26,10 +30,23 @@ export default class EEPrometheusMetrics extends PrometheusMetrics { ...@@ -26,10 +30,23 @@ export default class EEPrometheusMetrics extends PrometheusMetrics {
this.$monitoredCustomMetricsList = this.$monitoredCustomMetricsPanel.find( this.$monitoredCustomMetricsList = this.$monitoredCustomMetricsPanel.find(
'.js-custom-metrics-list', '.js-custom-metrics-list',
); );
this.$monitoredCustomMetricsNoIntegrationText = this.$monitoredCustomMetricsPanel.find(
'.js-no-active-integration-text',
);
this.$newCustomMetricButton = this.$monitoredCustomMetricsPanel.find('.js-new-metric-button'); this.$newCustomMetricButton = this.$monitoredCustomMetricsPanel.find('.js-new-metric-button');
this.$newCustomMetricButtonBody = this.$monitoredCustomMetricsPanel.find(
'.js-new-metric-body-button',
);
this.$flashCustomMetricsContainer = this.$wrapperCustomMetrics.find('.flash-container'); this.$flashCustomMetricsContainer = this.$wrapperCustomMetrics.find('.flash-container');
this.customMetrics = [];
this.environmentsData = []; this.$els = [
this.$monitoredCustomMetricsLoading,
this.$monitoredCustomMetricsList,
this.$newCustomMetricButton,
this.$newCustomMetricButtonBody,
this.$monitoredCustomMetricsNoIntegrationText,
this.$monitoredCustomMetricsEmpty,
];
this.activeCustomMetricsEndpoint = this.$monitoredCustomMetricsPanel.data( this.activeCustomMetricsEndpoint = this.$monitoredCustomMetricsPanel.data(
'active-custom-metrics', 'active-custom-metrics',
...@@ -37,27 +54,40 @@ export default class EEPrometheusMetrics extends PrometheusMetrics { ...@@ -37,27 +54,40 @@ export default class EEPrometheusMetrics extends PrometheusMetrics {
this.environmentsDataEndpoint = this.$monitoredCustomMetricsPanel.data( this.environmentsDataEndpoint = this.$monitoredCustomMetricsPanel.data(
'environments-data-endpoint', 'environments-data-endpoint',
); );
this.isServiceActive = this.$monitoredCustomMetricsPanel.data('service-active');
}
// eslint-disable-next-line class-methods-use-this
setHidden(els) {
els.forEach(el => el.addClass('hidden'));
}
setVisible(...els) {
this.setHidden(_.difference(this.$els, els));
els.forEach(el => el.removeClass('hidden'));
} }
showMonitoringCustomMetricsPanelState(stateName) { showMonitoringCustomMetricsPanelState(stateName) {
switch (stateName) { switch (stateName) {
case PANEL_STATE.LOADING: case PANEL_STATE.LOADING:
this.$monitoredCustomMetricsLoading.removeClass('hidden'); this.setVisible(this.$monitoredCustomMetricsLoading);
this.$monitoredCustomMetricsEmpty.addClass('hidden');
this.$monitoredCustomMetricsList.addClass('hidden');
this.$newCustomMetricButton.addClass('hidden');
break; break;
case PANEL_STATE.LIST: case PANEL_STATE.LIST:
this.$monitoredCustomMetricsLoading.addClass('hidden'); this.setVisible(this.$newCustomMetricButton, this.$monitoredCustomMetricsList);
this.$monitoredCustomMetricsEmpty.addClass('hidden');
this.$newCustomMetricButton.removeClass('hidden'); break;
this.$monitoredCustomMetricsList.removeClass('hidden'); case PANEL_STATE.NO_INTEGRATION:
this.setVisible(
this.$monitoredCustomMetricsNoIntegrationText,
this.$monitoredCustomMetricsEmpty,
);
break; break;
default: default:
this.$monitoredCustomMetricsLoading.addClass('hidden'); this.setVisible(
this.$monitoredCustomMetricsEmpty.removeClass('hidden'); this.$monitoredCustomMetricsEmpty,
this.$monitoredCustomMetricsList.addClass('hidden'); this.$newCustomMetricButton,
this.$newCustomMetricButton.addClass('hidden'); this.$newCustomMetricButtonBody,
);
break; break;
} }
} }
...@@ -90,6 +120,11 @@ export default class EEPrometheusMetrics extends PrometheusMetrics { ...@@ -90,6 +120,11 @@ export default class EEPrometheusMetrics extends PrometheusMetrics {
this.$flashCustomMetricsContainer.find('.flash-text').text(message); this.$flashCustomMetricsContainer.find('.flash-text').text(message);
} }
setNoIntegrationActiveState() {
this.showMonitoringCustomMetricsPanelState(PANEL_STATE.NO_INTEGRATION);
this.showMonitoringMetricsPanelState(PANEL_STATE.EMPTY);
}
loadActiveCustomMetrics() { loadActiveCustomMetrics() {
super.loadActiveMetrics(); super.loadActiveMetrics();
Promise.all([ Promise.all([
......
- project = local_assigns.fetch(:project) - project = local_assigns.fetch(:project)
.card.custom-monitored-metrics.js-panel-custom-monitored-metrics{ data: { active_custom_metrics: project_prometheus_metrics_path(project), environments_data: environments_list_data } } .card.custom-monitored-metrics.js-panel-custom-monitored-metrics{ data: { active_custom_metrics: project_prometheus_metrics_path(project), environments_data: environments_list_data, service_active: "#{@service.active}" } }
.card-header .card-header
%h3.card-title %h3.card-title
= s_('PrometheusService|Custom metrics') = s_('PrometheusService|Custom metrics')
...@@ -15,7 +15,9 @@ ...@@ -15,7 +15,9 @@
= icon('spinner spin', class: 'metrics-load-spinner') = icon('spinner spin', class: 'metrics-load-spinner')
= s_('PrometheusService|Finding custom metrics...') = s_('PrometheusService|Finding custom metrics...')
.empty-metrics.hidden.js-empty-custom-metrics .empty-metrics.hidden.js-empty-custom-metrics
= link_to s_('PrometheusService|New metric'), new_project_prometheus_metric_path(project), class: 'btn btn-success prepend-top-10 prepend-left-10 append-bottom-10' %p.text-tertiary.prepend-top-10.prepend-left-10.js-no-active-integration-text.hidden
= s_('PrometheusService|Enable Prometheus to define custom metrics, using either option above')
= link_to s_('PrometheusService|New metric'), new_project_prometheus_metric_path(project), class: 'btn btn-success prepend-top-10 prepend-left-10 append-bottom-10 js-new-metric-body-button hidden'
%ul.list-unstyled.metrics-list.hidden.js-custom-metrics-list %ul.list-unstyled.metrics-list.hidden.js-custom-metrics-list
= render_ce 'projects/services/prometheus/metrics', project: project = render_ce 'projects/services/prometheus/metrics', project: project
---
title: Changes initial state for disabled prometheus integrations
merge_request: 8434
author:
type: fixed
...@@ -51,6 +51,12 @@ describe('PrometheusMetrics EE', () => { ...@@ -51,6 +51,12 @@ describe('PrometheusMetrics EE', () => {
expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toEqual(false); expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toEqual(false);
expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toBeTruthy();
expect(
prometheusMetrics.$monitoredCustomMetricsNoIntegrationText.hasClass('hidden'),
).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButton.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButtonBody.hasClass('hidden')).toBeTruthy();
}); });
it('should show metrics list when called with `list`', () => { it('should show metrics list when called with `list`', () => {
...@@ -59,6 +65,12 @@ describe('PrometheusMetrics EE', () => { ...@@ -59,6 +65,12 @@ describe('PrometheusMetrics EE', () => {
expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toEqual(false); expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toEqual(false);
expect(
prometheusMetrics.$monitoredCustomMetricsNoIntegrationText.hasClass('hidden'),
).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButton.hasClass('hidden')).toEqual(false);
expect(prometheusMetrics.$newCustomMetricButtonBody.hasClass('hidden')).toBeTruthy();
}); });
it('should show empty state when called with `empty`', () => { it('should show empty state when called with `empty`', () => {
...@@ -67,6 +79,12 @@ describe('PrometheusMetrics EE', () => { ...@@ -67,6 +79,12 @@ describe('PrometheusMetrics EE', () => {
expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toEqual(false); expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toEqual(false);
expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toBeTruthy();
expect(
prometheusMetrics.$monitoredCustomMetricsNoIntegrationText.hasClass('hidden'),
).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButton.hasClass('hidden')).toEqual(false);
expect(prometheusMetrics.$newCustomMetricButtonBody.hasClass('hidden')).toEqual(false);
}); });
it('should show monitored metrics list', () => { it('should show monitored metrics list', () => {
...@@ -77,8 +95,28 @@ describe('PrometheusMetrics EE', () => { ...@@ -77,8 +95,28 @@ describe('PrometheusMetrics EE', () => {
expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy(); expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toEqual(false); expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toEqual(false);
expect(
prometheusMetrics.$monitoredCustomMetricsNoIntegrationText.hasClass('hidden'),
).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButton.hasClass('hidden')).toEqual(false);
expect(prometheusMetrics.$newCustomMetricButtonBody.hasClass('hidden')).toBeTruthy();
expect($metricsListLi.length).toEqual(metrics.length); expect($metricsListLi.length).toEqual(metrics.length);
}); });
it('should show the NO-INTEGRATION empty state', () => {
prometheusMetrics.setNoIntegrationActiveState();
expect(prometheusMetrics.$monitoredCustomMetricsEmpty.hasClass('hidden')).toEqual(false);
expect(prometheusMetrics.$monitoredCustomMetricsNoIntegrationText.hasClass('hidden')).toEqual(
false,
);
expect(prometheusMetrics.$monitoredCustomMetricsLoading.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$monitoredCustomMetricsList.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButton.hasClass('hidden')).toBeTruthy();
expect(prometheusMetrics.$newCustomMetricButtonBody.hasClass('hidden')).toBeTruthy();
});
}); });
}); });
...@@ -6778,6 +6778,9 @@ msgstr "" ...@@ -6778,6 +6778,9 @@ msgstr ""
msgid "PrometheusService|Custom metrics" msgid "PrometheusService|Custom metrics"
msgstr "" msgstr ""
msgid "PrometheusService|Enable Prometheus to define custom metrics, using either option above"
msgstr ""
msgid "PrometheusService|Finding and configuring metrics..." msgid "PrometheusService|Finding and configuring metrics..."
msgstr "" msgstr ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment