From 6b8040dc25fdc5fe614c3796a147517dd50bc7d8 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 11 Dec 2019 09:08:12 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../components/error_tracking_list.vue | 210 ++++++++++++++------- .../error_tracking/store/list/actions.js | 16 ++ .../error_tracking/store/list/mutation_types.js | 4 + .../error_tracking/store/list/mutations.js | 36 ++++ .../javascripts/error_tracking/store/list/state.js | 2 + .../monitoring/components/dashboard.vue | 99 ++++++---- .../javascripts/monitoring/components/embed.vue | 7 +- .../monitoring/components/empty_state.vue | 9 + .../monitoring/components/graph_group.vue | 29 ++- .../javascripts/monitoring/stores/actions.js | 38 ++-- .../javascripts/monitoring/stores/getters.js | 32 ++++ app/assets/javascripts/monitoring/stores/index.js | 2 + .../javascripts/monitoring/stores/mutations.js | 1 - app/assets/javascripts/monitoring/stores/state.js | 1 - .../components/mr_widget_pipeline.vue | 22 +++ .../components/mr_widget_pipeline_container.vue | 1 + .../stores/mr_widget_store.js | 1 + app/assets/stylesheets/framework/common.scss | 6 + app/assets/stylesheets/framework/filters.scss | 2 +- app/assets/stylesheets/pages/prometheus.scss | 1 - app/helpers/environments_helper.rb | 1 + app/models/application_setting.rb | 3 - app/models/merge_request.rb | 6 + .../merge_request_poll_widget_entity.rb | 4 + .../projects/merge_requests/_widget.html.haml | 2 +- ...eletions-via-soft-delete-for-groups-workers.yml | 5 + ...ent-searches-to-sentry-error-list-in-gitlab.yml | 5 + .../unreleased/34121-group-level-no-data-store.yml | 5 + .../unreleased/34261-service-desk-to-api.yml | 5 + .../feat-merge-request-coverage-delta.yml | 5 + config/initializers/1_settings.rb | 3 + ...update_group_deletion_schedules_foreign_keys.rb | 29 +++ db/schema.rb | 2 +- doc/api/projects.md | 52 +++++ locale/gitlab.pot | 9 + .../security/project/internal_access_spec.rb | 16 +- .../security/project/private_access_spec.rb | 18 +- .../security/project/public_access_spec.rb | 16 +- .../components/error_tracking_list_spec.js | 68 ++++++- .../error_tracking/store/list/mutation_spec.js | 82 ++++++++ .../frontend/monitoring/charts/time_series_spec.js | 5 +- spec/frontend/monitoring/dashboard_state_spec.js | 1 + spec/frontend/monitoring/embed/embed_spec.js | 11 +- spec/frontend/monitoring/embed/mock_data.js | 6 +- spec/frontend/monitoring/mock_data.js | 29 +++ spec/frontend/monitoring/store/actions_spec.js | 133 ++++++++----- spec/frontend/monitoring/store/getters_spec.js | 99 ++++++++++ spec/frontend/monitoring/store/mutations_spec.js | 83 ++++---- .../monitoring/components/dashboard_spec.js | 78 +++++--- .../monitoring/components/graph_group_spec.js | 107 ++++++++--- .../jobs/index/components/stop_jobs_modal_spec.js | 3 +- .../labels/components/promote_label_modal_spec.js | 2 +- .../components/delete_milestone_modal_spec.js | 3 +- .../components/promote_milestone_modal_spec.js | 2 +- spec/javascripts/pdf/index_spec.js | 2 +- spec/javascripts/pdf/page_spec.js | 2 +- spec/javascripts/performance_bar/index_spec.js | 3 +- spec/javascripts/persistent_user_callout_spec.js | 2 +- .../pipelines/graph/job_group_dropdown_spec.js | 2 +- .../graph/linked_pipelines_column_spec.js | 2 +- .../pipelines/graph/stage_column_component_spec.js | 2 +- .../pipelines/pipelines_actions_spec.js | 4 +- spec/javascripts/pipelines/pipelines_spec.js | 2 +- spec/javascripts/pipelines/stage_spec.js | 2 +- .../components/delete_account_modal_spec.js | 3 +- .../account/components/update_username_spec.js | 4 +- .../related_merge_requests/store/actions_spec.js | 2 +- .../releases/list/components/app_spec.js | 4 +- .../releases/list/store/actions_spec.js | 2 +- .../reports/components/modal_open_name_spec.js | 2 +- .../reports/components/summary_row_spec.js | 2 +- spec/javascripts/reports/store/actions_spec.js | 4 +- .../mr_widget_pipeline_container_spec.js | 2 + .../components/mr_widget_pipeline_spec.js | 40 ++++ spec/javascripts/vue_mr_widget/mock_data.js | 1 + spec/models/merge_request_spec.rb | 57 ++++++ 76 files changed, 1207 insertions(+), 356 deletions(-) create mode 100644 app/assets/javascripts/monitoring/stores/getters.js create mode 100644 changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-workers.yml create mode 100644 changelogs/unreleased/34067-add-recent-searches-to-sentry-error-list-in-gitlab.yml create mode 100644 changelogs/unreleased/34121-group-level-no-data-store.yml create mode 100644 changelogs/unreleased/34261-service-desk-to-api.yml create mode 100644 changelogs/unreleased/feat-merge-request-coverage-delta.yml create mode 100644 db/migrate/20191203121729_update_group_deletion_schedules_foreign_keys.rb create mode 100644 spec/frontend/monitoring/store/getters_spec.js diff --git a/app/assets/javascripts/error_tracking/components/error_tracking_list.vue b/app/assets/javascripts/error_tracking/components/error_tracking_list.vue index 9d8e5396dea..5cd68687329 100644 --- a/app/assets/javascripts/error_tracking/components/error_tracking_list.vue +++ b/app/assets/javascripts/error_tracking/components/error_tracking_list.vue @@ -3,11 +3,17 @@ import { mapActions, mapState } from 'vuex'; import { GlEmptyState, GlButton, + GlIcon, GlLink, GlLoadingIcon, GlTable, - GlSearchBoxByClick, + GlFormInput, + GlDropdown, + GlDropdownItem, + GlDropdownDivider, + GlTooltipDirective, } from '@gitlab/ui'; +import AccessorUtils from '~/lib/utils/accessor'; import Icon from '~/vue_shared/components/icon.vue'; import TimeAgo from '~/vue_shared/components/time_ago_tooltip.vue'; import { __ } from '~/locale'; @@ -24,14 +30,19 @@ export default { components: { GlEmptyState, GlButton, + GlDropdown, + GlDropdownItem, + GlDropdownDivider, + GlIcon, GlLink, GlLoadingIcon, GlTable, - GlSearchBoxByClick, + GlFormInput, Icon, TimeAgo, }, directives: { + GlTooltip: GlTooltipDirective, TrackEvent: TrackEventDirective, }, props: { @@ -56,13 +67,14 @@ export default { required: true, }, }, + hasLocalStorage: AccessorUtils.isLocalStorageAccessSafe(), data() { return { errorSearchQuery: '', }; }, computed: { - ...mapState('list', ['errors', 'externalUrl', 'loading']), + ...mapState('list', ['errors', 'externalUrl', 'loading', 'recentSearches']), }, created() { if (this.errorTrackingEnabled) { @@ -70,9 +82,23 @@ export default { } }, methods: { - ...mapActions('list', ['startPolling', 'restartPolling']), + ...mapActions('list', [ + 'startPolling', + 'restartPolling', + 'addRecentSearch', + 'clearRecentSearches', + 'loadRecentSearches', + 'setIndexPath', + ]), filterErrors() { - this.startPolling(`${this.indexPath}?search_term=${this.errorSearchQuery}`); + const searchTerm = this.errorSearchQuery.trim(); + this.addRecentSearch(searchTerm); + + this.startPolling(`${this.indexPath}?search_term=${searchTerm}`); + }, + setSearchText(text) { + this.errorSearchQuery = text; + this.filterErrors(); }, trackViewInSentryOptions, getDetailsLink(errorId) { @@ -85,81 +111,119 @@ export default {