Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/monitoring/components/refresh_button.vue')
-rw-r--r--app/assets/javascripts/monitoring/components/refresh_button.vue168
1 files changed, 0 insertions, 168 deletions
diff --git a/app/assets/javascripts/monitoring/components/refresh_button.vue b/app/assets/javascripts/monitoring/components/refresh_button.vue
deleted file mode 100644
index 55c602db33d..00000000000
--- a/app/assets/javascripts/monitoring/components/refresh_button.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-<script>
-import {
- GlButtonGroup,
- GlButton,
- GlDropdown,
- GlDropdownItem,
- GlDropdownDivider,
- GlTooltipDirective,
-} from '@gitlab/ui';
-import Visibility from 'visibilityjs';
-import { mapActions } from 'vuex';
-import { n__, __, s__ } from '~/locale';
-
-const makeInterval = (length = 0, unit = 's') => {
- const shortLabel = `${length}${unit}`;
- switch (unit) {
- case 'd':
- return {
- interval: length * 24 * 60 * 60 * 1000,
- shortLabel,
- label: n__('%d day', '%d days', length),
- };
- case 'h':
- return {
- interval: length * 60 * 60 * 1000,
- shortLabel,
- label: n__('%d hour', '%d hours', length),
- };
- case 'm':
- return {
- interval: length * 60 * 1000,
- shortLabel,
- label: n__('%d minute', '%d minutes', length),
- };
- case 's':
- default:
- return {
- interval: length * 1000,
- shortLabel,
- label: n__('%d second', '%d seconds', length),
- };
- }
-};
-
-export default {
- i18n: {
- refreshDashboard: s__('Metrics|Refresh dashboard'),
- },
- components: {
- GlButtonGroup,
- GlButton,
- GlDropdown,
- GlDropdownItem,
- GlDropdownDivider,
- },
- directives: {
- GlTooltip: GlTooltipDirective,
- },
- data() {
- return {
- refreshInterval: null,
- timeoutId: null,
- };
- },
- computed: {
- dropdownText() {
- return this.refreshInterval?.shortLabel ?? __('Off');
- },
- },
- watch: {
- refreshInterval() {
- if (this.refreshInterval !== null) {
- this.startAutoRefresh();
- } else {
- this.stopAutoRefresh();
- }
- },
- },
- destroyed() {
- this.stopAutoRefresh();
- },
- methods: {
- ...mapActions('monitoringDashboard', ['fetchDashboardData']),
-
- refresh() {
- this.fetchDashboardData();
- },
- startAutoRefresh() {
- const schedule = () => {
- if (this.refreshInterval) {
- this.timeoutId = setTimeout(this.startAutoRefresh, this.refreshInterval.interval);
- }
- };
-
- this.stopAutoRefresh();
-
- if (Visibility.hidden()) {
- // Inactive tab? Skip fetch and schedule again
- schedule();
- } else {
- // Active tab! Fetch data and then schedule when settled
- // eslint-disable-next-line promise/catch-or-return
- this.fetchDashboardData().finally(schedule);
- }
- },
- stopAutoRefresh() {
- clearTimeout(this.timeoutId);
- this.timeoutId = null;
- },
-
- setRefreshInterval(option) {
- this.refreshInterval = option;
- },
- removeRefreshInterval() {
- this.refreshInterval = null;
- },
- isChecked(option) {
- if (this.refreshInterval) {
- return option.interval === this.refreshInterval.interval;
- }
- return false;
- },
- },
-
- refreshIntervals: [
- makeInterval(5),
- makeInterval(10),
- makeInterval(30),
- makeInterval(5, 'm'),
- makeInterval(30, 'm'),
- makeInterval(1, 'h'),
- makeInterval(2, 'h'),
- makeInterval(12, 'h'),
- makeInterval(1, 'd'),
- ],
-};
-</script>
-
-<template>
- <gl-button-group>
- <gl-button
- v-gl-tooltip
- class="gl-flex-grow-1"
- variant="default"
- :title="$options.i18n.refreshDashboard"
- :aria-label="$options.i18n.refreshDashboard"
- icon="retry"
- @click="refresh"
- />
- <gl-dropdown v-gl-tooltip :title="s__('Metrics|Set refresh rate')" :text="dropdownText">
- <gl-dropdown-item
- is-check-item
- :is-checked="refreshInterval === null"
- @click="removeRefreshInterval()"
- >{{ __('Off') }}</gl-dropdown-item
- >
- <gl-dropdown-divider />
- <gl-dropdown-item
- v-for="(option, i) in $options.refreshIntervals"
- :key="i"
- is-check-item
- :is-checked="isChecked(option)"
- @click="setRefreshInterval(option)"
- >{{ option.label }}</gl-dropdown-item
- >
- </gl-dropdown>
- </gl-button-group>
-</template>