diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-07-19 17:16:28 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-07-19 17:16:28 +0300 |
commit | e4384360a16dd9a19d4d2d25d0ef1f2b862ed2a6 (patch) | |
tree | 2fcdfa7dcdb9db8f5208b2562f4b4e803d671243 /app/assets/javascripts/monitoring/stores/getters.js | |
parent | ffda4e7bcac36987f936b4ba515995a6698698f0 (diff) |
Add latest changes from gitlab-org/gitlab@16-2-stable-eev16.2.0-rc42
Diffstat (limited to 'app/assets/javascripts/monitoring/stores/getters.js')
-rw-r--r-- | app/assets/javascripts/monitoring/stores/getters.js | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/app/assets/javascripts/monitoring/stores/getters.js b/app/assets/javascripts/monitoring/stores/getters.js deleted file mode 100644 index d6a04006264..00000000000 --- a/app/assets/javascripts/monitoring/stores/getters.js +++ /dev/null @@ -1,174 +0,0 @@ -import { NOT_IN_DB_PREFIX } from '../constants'; -import { - addPrefixToCustomVariableParams, - addDashboardMetaDataToLink, - normalizeCustomDashboardPath, -} from './utils'; - -const metricsIdsInPanel = (panel) => - panel.metrics - .filter((metric) => metric.metricId && metric.result) - .map((metric) => metric.metricId); - -/** - * Returns a reference to the currently selected dashboard - * from the list of dashboards. - * - * @param {Object} state - */ -export const selectedDashboard = (state, getters) => { - const { allDashboards } = state; - return ( - allDashboards.find((d) => d.path === getters.fullDashboardPath) || - allDashboards.find((d) => d.default) || - null - ); -}; - -/** - * Get all state for metric in the dashboard or a group. The - * states are not repeated so the dashboard or group can show - * a global state. - * - * @param {Object} state - * @returns {Function} A function that returns an array of - * states in all the metric in the dashboard or group. - */ -export const getMetricStates = (state) => (groupKey) => { - let groups = state.dashboard.panelGroups; - if (groupKey) { - groups = groups.filter((group) => group.key === groupKey); - } - - const metricStates = groups.reduce((acc, group) => { - group.panels.forEach((panel) => { - panel.metrics.forEach((metric) => { - if (metric.state) { - acc.push(metric.state); - } - }); - }); - return acc; - }, []); - - // Deduplicate and sort array - return Array.from(new Set(metricStates)).sort(); -}; - -/** - * Getter to obtain the list of metric ids that have data - * - * Useful to understand which parts of the dashboard should - * be displayed. It is a Vuex Method-Style Access getter. - * - * @param {Object} state - * @returns {Function} A function that returns an array of - * metrics in the dashboard that contain results, optionally - * filtered by group key. - */ -export const metricsWithData = (state) => (groupKey) => { - let groups = state.dashboard.panelGroups; - if (groupKey) { - groups = groups.filter((group) => group.key === groupKey); - } - - const res = []; - groups.forEach((group) => { - group.panels.forEach((panel) => { - res.push(...metricsIdsInPanel(panel)); - }); - }); - - return res; -}; - -/** - * Metrics loaded from project-defined dashboards do not have a metric_id. - * This getter checks which metrics are stored in the db (have a metric id) - * This is hopefully a temporary solution until BE processes metrics before passing to FE - * - * Related: - * https://gitlab.com/gitlab-org/gitlab/-/issues/28241 - * https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27447 - */ -export const metricsSavedToDb = (state) => { - const metricIds = []; - state.dashboard.panelGroups.forEach(({ panels }) => { - panels.forEach(({ metrics }) => { - const metricIdsInDb = metrics - .filter(({ metricId }) => !metricId.startsWith(NOT_IN_DB_PREFIX)) - .map(({ metricId }) => metricId); - - metricIds.push(...metricIdsInDb); - }); - }); - return metricIds; -}; - -/** - * Filter environments by names. - * - * This is used in the environments dropdown with searchable input. - * - * @param {Object} state - * @returns {Array} List of environments - */ -export const filteredEnvironments = (state) => - state.environments.filter((env) => - env.name.toLowerCase().includes((state.environmentsSearchTerm || '').trim().toLowerCase()), - ); - -/** - * User-defined links from the yml file can have other - * dashboard-related metadata baked into it. This method - * returns modified links which will get rendered in the - * metrics dashboard - * - * @param {Object} state - * @returns {Array} modified array of links - */ -export const linksWithMetadata = (state) => { - const metadata = { - timeRange: state.timeRange, - }; - return state.links?.map(addDashboardMetaDataToLink(metadata)); -}; - -/** - * Maps a variables array to an object for replacement in - * prometheus queries. - * - * This method outputs an object in the below format - * - * { - * variables[key1]=value1, - * variables[key2]=value2, - * } - * - * This is done so that the backend can identify the custom - * user-defined variables coming through the URL and differentiate - * from other variables used for Prometheus API endpoint. - * - * @param {Object} state - State containing variables provided by the user - * @returns {Array} The custom variables object to be send to the API - * in the format of {variables[key1]=value1, variables[key2]=value2} - */ - -export const getCustomVariablesParams = (state) => - state.variables.reduce((acc, variable) => { - const { name, value } = variable; - if (value !== null) { - acc[addPrefixToCustomVariableParams(name)] = value; - } - return acc; - }, {}); - -/** - * For a given custom dashboard file name, this method - * returns the full file path. - * - * @param {Object} state - * @returns {String} full dashboard path - */ -export const fullDashboardPath = (state) => - normalizeCustomDashboardPath(state.currentDashboard, state.customDashboardBasePath); |