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

log_advanced_filters.vue « components « logs « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9159ca5b9dc33ecde015871c18c5e062a69114d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<script>
import { GlFilteredSearch } from '@gitlab/ui';
import { mapActions, mapState } from 'vuex';
import { __, s__ } from '~/locale';
import DateTimePicker from '~/vue_shared/components/date_time_picker/date_time_picker.vue';
import { timeRanges } from '~/vue_shared/constants';
import { TOKEN_TYPE_POD_NAME } from '../constants';
import TokenWithLoadingState from './tokens/token_with_loading_state.vue';

export default {
  components: {
    GlFilteredSearch,
    DateTimePicker,
  },
  props: {
    disabled: {
      type: Boolean,
      required: false,
      default: false,
    },
  },
  data() {
    return {
      timeRanges,
    };
  },
  computed: {
    ...mapState('environmentLogs', ['timeRange', 'pods', 'logs']),

    timeRangeModel: {
      get() {
        return this.timeRange.selected;
      },
      set(val) {
        this.setTimeRange(val);
      },
    },
    /**
     * Token options.
     *
     * Returns null when no pods are present, so suggestions are displayed in the token
     */
    podOptions() {
      if (this.pods.options.length) {
        return this.pods.options.map((podName) => ({ value: podName, title: podName }));
      }
      return null;
    },

    tokens() {
      return [
        {
          icon: 'pod',
          type: TOKEN_TYPE_POD_NAME,
          title: s__('Environments|Pod name'),
          token: TokenWithLoadingState,
          operators: [{ value: '=', description: __('is'), default: 'true' }],
          unique: true,
          options: this.podOptions,
          loading: this.logs.isLoading,
          noOptionsText: s__('Environments|No pods to display'),
        },
      ];
    },
  },
  methods: {
    ...mapActions('environmentLogs', ['showFilteredLogs', 'setTimeRange']),

    filteredSearchSubmit(filters) {
      this.showFilteredLogs(filters);
    },
  },
};
</script>
<template>
  <div>
    <div class="mb-2 pr-2 flex-grow-1 min-width-0">
      <gl-filtered-search
        :placeholder="__('Search')"
        :clear-button-title="__('Clear')"
        :close-button-title="__('Close')"
        class="gl-h-32"
        :disabled="disabled || logs.isLoading"
        :available-tokens="tokens"
        @submit="filteredSearchSubmit"
      />
    </div>

    <date-time-picker
      ref="dateTimePicker"
      v-model="timeRangeModel"
      :disabled="disabled"
      :options="timeRanges"
      class="mb-2 gl-h-32 pr-2 d-block date-time-picker-wrapper"
      right
    />
  </div>
</template>