diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-06 15:07:34 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-06 15:07:34 +0300 |
commit | 4958d96e262f6b31b2850123e4949536555b2d29 (patch) | |
tree | 28fe9a1fed009a569806c705e4810a33979cbd6a /app | |
parent | 95de7177f2d5844e4aa399fea9a59d4ba6b4b1f1 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
23 files changed, 142 insertions, 190 deletions
diff --git a/app/assets/javascripts/admin/abuse_report/components/report_actions.vue b/app/assets/javascripts/admin/abuse_report/components/report_actions.vue index 25b22afbf84..57d5d46ceb4 100644 --- a/app/assets/javascripts/admin/abuse_report/components/report_actions.vue +++ b/app/assets/javascripts/admin/abuse_report/components/report_actions.vue @@ -13,6 +13,7 @@ import { getContentWrapperHeight } from '~/lib/utils/dom_utils'; import { DRAWER_Z_INDEX } from '~/lib/utils/constants'; import { ACTIONS_I18N, + NO_ACTION, USER_ACTION_OPTIONS, REASON_OPTIONS, STATUS_OPEN, @@ -40,6 +41,10 @@ export default { GlDrawer, }, props: { + user: { + type: Object, + required: true, + }, report: { type: Object, required: true, @@ -66,6 +71,12 @@ export default { isOpen() { return this.report.status === STATUS_OPEN; }, + isNotCurrentUser() { + return this.user.username !== gon.current_username; + }, + userActionOptions() { + return this.isNotCurrentUser ? USER_ACTION_OPTIONS : [NO_ACTION]; + }, }, methods: { toggleActionsDrawer() { @@ -111,7 +122,6 @@ export default { }, }, i18n: ACTIONS_I18N, - userActionOptions: USER_ACTION_OPTIONS, reasonOptions: REASON_OPTIONS, DRAWER_Z_INDEX, }; @@ -144,7 +154,7 @@ export default { id="action" v-model="form.user_action" data-testid="action-select" - :options="$options.userActionOptions" + :options="userActionOptions" :state="validationState.action" @change="validateAction" /> diff --git a/app/assets/javascripts/admin/abuse_report/components/report_header.vue b/app/assets/javascripts/admin/abuse_report/components/report_header.vue index 1b9a6a1df6a..624dcd47650 100644 --- a/app/assets/javascripts/admin/abuse_report/components/report_header.vue +++ b/app/assets/javascripts/admin/abuse_report/components/report_header.vue @@ -81,6 +81,7 @@ export default { {{ $options.i18n.adminProfile }} </gl-button> <report-actions + :user="user" :report="report" class="gl-sm-ml-3 gl-mt-3 gl-sm-mt-0" @closeReport="closeReport" diff --git a/app/assets/javascripts/admin/abuse_report/constants.js b/app/assets/javascripts/admin/abuse_report/constants.js index fb2acd5921d..b290581598a 100644 --- a/app/assets/javascripts/admin/abuse_report/constants.js +++ b/app/assets/javascripts/admin/abuse_report/constants.js @@ -24,8 +24,10 @@ export const ACTIONS_I18N = { requiredFieldFeedback: __('This field is required.'), }; +export const NO_ACTION = { value: '', text: s__('AbuseReport|No action') }; + export const USER_ACTION_OPTIONS = [ - { value: '', text: s__('AbuseReport|No action') }, + NO_ACTION, { value: 'block_user', text: s__('AbuseReport|Block user') }, { value: 'ban_user', text: s__('AbuseReport|Ban user') }, { value: 'delete_user', text: s__('AbuseReport|Delete user') }, diff --git a/app/assets/javascripts/diffs/components/diff_content.vue b/app/assets/javascripts/diffs/components/diff_content.vue index d7b63d205dc..676944ee86a 100644 --- a/app/assets/javascripts/diffs/components/diff_content.vue +++ b/app/assets/javascripts/diffs/components/diff_content.vue @@ -1,5 +1,5 @@ <script> -import { GlLoadingIcon } from '@gitlab/ui'; +import { GlLoadingIcon, GlButton } from '@gitlab/ui'; import { mapActions, mapGetters, mapState } from 'vuex'; import { mapParallel } from 'ee_else_ce/diffs/components/diff_row_utils'; import DiffFileDrafts from '~/batch_comments/components/diff_file_drafts.vue'; @@ -21,6 +21,7 @@ import ImageDiffOverlay from './image_diff_overlay.vue'; export default { components: { GlLoadingIcon, + GlButton, DiffView, DiffViewer, NoteForm, @@ -59,7 +60,10 @@ export default { return this.diffFile.viewer.name; }, isTextFile() { - return this.diffViewerMode === diffViewerModes.text; + return this.diffViewerMode === diffViewerModes.text && !this.diffFile.viewer.whitespace_only; + }, + isWhitespaceOnly() { + return this.diffFile.viewer.whitespace_only; }, noPreview() { return this.diffViewerMode === diffViewerModes.no_preview; @@ -122,6 +126,23 @@ export default { /> <gl-loading-icon v-if="diffFile.renderingLines" size="lg" class="mt-3" /> </template> + <div + v-else-if="isWhitespaceOnly" + class="gl-bg-gray-10 gl--flex-center gl-h-13" + data-testid="diff-whitespace-only-state" + > + {{ __('Contains only whitespace changes.') }} + <gl-button + category="tertiary" + variant="info" + size="small" + class="gl-ml-3" + data-testid="diff-load-file-button" + @click="$emit('load-file', { w: '0' })" + > + {{ __('Show changes') }} + </gl-button> + </div> <not-diffable-viewer v-else-if="notDiffable" /> <no-preview-viewer v-else-if="noPreview" /> <diff-viewer diff --git a/app/assets/javascripts/diffs/components/diff_file.vue b/app/assets/javascripts/diffs/components/diff_file.vue index 596381f1de4..430c67abced 100644 --- a/app/assets/javascripts/diffs/components/diff_file.vue +++ b/app/assets/javascripts/diffs/components/diff_file.vue @@ -278,12 +278,12 @@ export default { this.requestDiff(); } }, - requestDiff() { + requestDiff(params = {}) { const { idState, file } = this; idState.isLoadingCollapsedDiff = true; - this.loadCollapsedDiff(file) + this.loadCollapsedDiff({ file, params }) .then(() => { idState.isLoadingCollapsedDiff = false; idState.hasLoadedCollapsedDiff = true; @@ -461,6 +461,7 @@ export default { :class="hasBodyClasses.content" :diff-file="file" :help-page-path="helpPagePath" + @load-file="requestDiff" /> </template> </div> diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 9fd816b971b..3d27bb180e6 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -525,11 +525,12 @@ export const scrollToLineIfNeededParallel = (_, line) => { } }; -export const loadCollapsedDiff = ({ commit, getters, state }, file) => { +export const loadCollapsedDiff = ({ commit, getters, state }, { file, params = {} }) => { const versionPath = state.mergeRequestDiff?.version_path; const loadParams = { commit_id: getters.commitId, w: state.showWhitespace ? '0' : '1', + ...params, }; if (versionPath) { @@ -830,7 +831,7 @@ export const toggleFullDiff = ({ dispatch, commit, getters, state }, filePath) = commit(types.REQUEST_FULL_DIFF, filePath); if (file.isShowingFullFile) { - dispatch('loadCollapsedDiff', file) + dispatch('loadCollapsedDiff', { file }) .then(() => dispatch('assignDiscussionsToDiff', getters.getDiffFileDiscussions(file))) .catch(() => dispatch('receiveFullDiffError', filePath)); } else { diff --git a/app/assets/javascripts/groups/components/app.vue b/app/assets/javascripts/groups/components/app.vue index 82eddf5603f..ebfffdaaf50 100644 --- a/app/assets/javascripts/groups/components/app.vue +++ b/app/assets/javascripts/groups/components/app.vue @@ -41,10 +41,6 @@ export default { type: Object, required: true, }, - hideProjects: { - type: Boolean, - required: true, - }, }, data() { return { diff --git a/app/assets/javascripts/groups/components/overview_tabs.vue b/app/assets/javascripts/groups/components/overview_tabs.vue index 79a2e11b0bb..982dab45117 100644 --- a/app/assets/javascripts/groups/components/overview_tabs.vue +++ b/app/assets/javascripts/groups/components/overview_tabs.vue @@ -176,7 +176,7 @@ export default { :title="title" :lazy="lazy" > - <groups-app :action="key" :service="service" :store="store" :hide-projects="false"> + <groups-app :action="key" :service="service" :store="store"> <template v-if="emptyStateComponent" #empty-state> <component :is="emptyStateComponent" /> </template> diff --git a/app/assets/javascripts/groups/index.js b/app/assets/javascripts/groups/index.js index f4981c020cd..df2a23dc0f7 100644 --- a/app/assets/javascripts/groups/index.js +++ b/app/assets/javascripts/groups/index.js @@ -73,17 +73,15 @@ export default (containerId = 'js-groups-tree', endpoint, action = '') => { }, data() { const { dataset } = dataEl || this.$options.el; - const hideProjects = parseBoolean(dataset.hideProjects); const showSchemaMarkup = parseBoolean(dataset.showSchemaMarkup); const renderEmptyState = parseBoolean(dataset.renderEmptyState); const service = new GroupsService(endpoint || dataset.endpoint); - const store = new GroupsStore({ hideProjects, showSchemaMarkup }); + const store = new GroupsStore({ hideProjects: true, showSchemaMarkup }); return { action, store, service, - hideProjects, renderEmptyState, loading: true, containerId, @@ -120,7 +118,6 @@ export default (containerId = 'js-groups-tree', endpoint, action = '') => { action: this.action, store: this.store, service: this.service, - hideProjects: this.hideProjects, renderEmptyState: this.renderEmptyState, containerId: this.containerId, }, diff --git a/app/assets/javascripts/notes/mixins/diff_line_note_form.js b/app/assets/javascripts/notes/mixins/diff_line_note_form.js index 0509ff24959..20ffcda282a 100644 --- a/app/assets/javascripts/notes/mixins/diff_line_note_form.js +++ b/app/assets/javascripts/notes/mixins/diff_line_note_form.js @@ -15,7 +15,7 @@ export default { }), ...mapGetters('diffs', ['getDiffFileByHash']), ...mapGetters('batchComments', ['shouldRenderDraftRowInDiscussion', 'draftForDiscussion']), - ...mapState('diffs', ['commit']), + ...mapState('diffs', ['commit', 'showWhitespace']), }, methods: { ...mapActions('diffs', ['cancelCommentForm']), @@ -67,6 +67,7 @@ export default { positionType, ...this.diffFileCommentForm, lineRange, + showWhitespace: this.showWhitespace, }); const diffFileHeadSha = this.commit && this?.diffFile?.diff_refs?.head_sha; diff --git a/app/assets/javascripts/repository/components/fork_info.vue b/app/assets/javascripts/repository/components/fork_info.vue index e4a10784bd5..42108e8dfba 100644 --- a/app/assets/javascripts/repository/components/fork_info.vue +++ b/app/assets/javascripts/repository/components/fork_info.vue @@ -3,7 +3,6 @@ import { GlIcon, GlLink, GlSkeletonLoader, GlLoadingIcon, GlSprintf, GlButton } import { s__, sprintf, n__ } from '~/locale'; import { createAlert, VARIANT_INFO } from '~/alert'; import syncForkMutation from '~/repository/mutations/sync_fork.mutation.graphql'; -import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import eventHub from '../event_hub'; import { POLLING_INTERVAL_DEFAULT, @@ -43,7 +42,6 @@ export default { ConflictsModal, GlLoadingIcon, }, - mixins: [glFeatureFlagMixin()], apollo: { project: { query: forkDetailsQuery, @@ -198,7 +196,6 @@ export default { }, hasUpdateButton() { return ( - this.glFeatures.synchronizeFork && this.canSyncBranch && ((this.sourceName && this.forkDetails && this.behind) || this.isUnknownDivergence) ); diff --git a/app/assets/javascripts/work_items/components/work_item_description.vue b/app/assets/javascripts/work_items/components/work_item_description.vue index 988a28704d4..61dec21cae4 100644 --- a/app/assets/javascripts/work_items/components/work_item_description.vue +++ b/app/assets/javascripts/work_items/components/work_item_description.vue @@ -1,5 +1,5 @@ <script> -import { GlAlert, GlButton, GlFormGroup } from '@gitlab/ui'; +import { GlAlert, GlButton, GlForm, GlFormGroup } from '@gitlab/ui'; import * as Sentry from '@sentry/browser'; import { helpPagePath } from '~/helpers/help_page_helper'; import { getDraft, clearDraft, updateDraft } from '~/lib/utils/autosave'; @@ -7,8 +7,6 @@ import { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_m import { __, s__ } from '~/locale'; import EditedAt from '~/issues/show/components/edited.vue'; import Tracking from '~/tracking'; -import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; -import MarkdownField from '~/vue_shared/components/markdown/field.vue'; import MarkdownEditor from '~/vue_shared/components/markdown/markdown_editor.vue'; import { autocompleteDataSources, markdownPreviewPath } from '../utils'; import workItemDescriptionSubscription from '../graphql/work_item_description.subscription.graphql'; @@ -22,12 +20,12 @@ export default { EditedAt, GlAlert, GlButton, + GlForm, GlFormGroup, MarkdownEditor, - MarkdownField, WorkItemDescriptionRendered, }, - mixins: [glFeatureFlagMixin(), Tracking.mixin()], + mixins: [Tracking.mixin()], inject: ['fullPath'], props: { workItemId: { @@ -227,111 +225,84 @@ export default { <template> <div> - <gl-form-group - v-if="isEditing" - class="gl-mb-5 gl-border-t gl-pt-6 common-note-form" - :label="__('Description')" - label-for="work-item-description" - > - <markdown-editor - v-if="glFeatures.workItemsMvc" - class="gl-my-5" - :value="descriptionText" - :render-markdown-path="markdownPreviewPath" - :markdown-docs-path="$options.markdownDocsPath" - :form-field-props="formFieldProps" - :quick-actions-docs-path="$options.quickActionsDocsPath" - :autocomplete-data-sources="autocompleteDataSources" - enable-autocomplete - supports-quick-actions - autofocus - @input="setDescriptionText" - @keydown.meta.enter="updateWorkItem" - @keydown.ctrl.enter="updateWorkItem" - /> - <markdown-field - v-else - can-attach-file - :textarea-value="descriptionText" - :is-submitting="isSubmitting" - :markdown-preview-path="markdownPreviewPath" - :markdown-docs-path="$options.markdownDocsPath" - :quick-actions-docs-path="$options.quickActionsDocsPath" - :autocomplete-data-sources="autocompleteDataSources" - class="gl-my-5" + <gl-form v-if="isEditing" @submit.prevent="updateWorkItem" @reset.prevent="cancelEditing"> + <gl-form-group + class="gl-mb-5 gl-border-t gl-pt-6 common-note-form" + :label="__('Description')" + label-for="work-item-description" > - <template #textarea> - <textarea - v-bind="formFieldProps" - ref="textarea" - v-model="descriptionText" - :disabled="isSubmitting" - class="note-textarea js-gfm-input js-autosize markdown-area" - dir="auto" - data-supports-quick-actions="true" - @keydown.meta.enter="updateWorkItem" - @keydown.ctrl.enter="updateWorkItem" - @keydown.exact.esc.stop="cancelEditing" - @input="onInput" - ></textarea> - </template> - </markdown-field> - <div class="gl-display-flex"> - <gl-alert - v-if="hasConflicts" - :dismissible="false" - variant="danger" - class="gl-w-full" - data-testid="work-item-description-conflicts" - > - <p> - {{ - s__( - "WorkItem|Someone edited the description at the same time you did. If you save it will overwrite their changes. Please confirm you'd like to save your edits.", - ) - }} - </p> - <details class="gl-mb-5"> - <summary class="gl-text-blue-500">{{ s__('WorkItem|View current version') }}</summary> - <textarea - class="note-textarea js-gfm-input js-autosize markdown-area gl-p-3" - readonly - :value="conflictedDescription" - ></textarea> - </details> - <template #actions> + <markdown-editor + class="gl-my-5" + :value="descriptionText" + :render-markdown-path="markdownPreviewPath" + :markdown-docs-path="$options.markdownDocsPath" + :form-field-props="formFieldProps" + :quick-actions-docs-path="$options.quickActionsDocsPath" + :autocomplete-data-sources="autocompleteDataSources" + enable-autocomplete + supports-quick-actions + autofocus + @input="setDescriptionText" + @keydown.meta.enter="updateWorkItem" + @keydown.ctrl.enter="updateWorkItem" + /> + <div class="gl-display-flex"> + <gl-alert + v-if="hasConflicts" + :dismissible="false" + variant="danger" + class="gl-w-full" + data-testid="work-item-description-conflicts" + > + <p> + {{ + s__( + "WorkItem|Someone edited the description at the same time you did. If you save it will overwrite their changes. Please confirm you'd like to save your edits.", + ) + }} + </p> + <details class="gl-mb-5"> + <summary class="gl-text-blue-500">{{ s__('WorkItem|View current version') }}</summary> + <textarea + class="note-textarea js-gfm-input js-autosize markdown-area gl-p-3" + readonly + :value="conflictedDescription" + ></textarea> + </details> + <template #actions> + <gl-button + category="primary" + variant="confirm" + :loading="isSubmitting" + data-testid="save-description" + @click="updateWorkItem" + >{{ s__('WorkItem|Save and overwrite') }} + </gl-button> + <gl-button + category="secondary" + class="gl-ml-3" + data-testid="cancel" + @click="cancelEditing" + >{{ s__('WorkItem|Discard changes') }} + </gl-button> + </template> + </gl-alert> + <template v-else> <gl-button category="primary" variant="confirm" :loading="isSubmitting" data-testid="save-description" - @click="updateWorkItem" - >{{ s__('WorkItem|Save and overwrite') }} + type="submit" + >{{ __('Save') }} </gl-button> - <gl-button - category="secondary" - class="gl-ml-3" - data-testid="cancel" - @click="cancelEditing" - >{{ s__('WorkItem|Discard changes') }} + <gl-button category="tertiary" class="gl-ml-3" data-testid="cancel" type="reset" + >{{ __('Cancel') }} </gl-button> </template> - </gl-alert> - <template v-else> - <gl-button - category="primary" - variant="confirm" - :loading="isSubmitting" - data-testid="save-description" - @click="updateWorkItem" - >{{ __('Save') }} - </gl-button> - <gl-button category="tertiary" class="gl-ml-3" data-testid="cancel" @click="cancelEditing" - >{{ __('Cancel') }} - </gl-button> - </template> - </div> - </gl-form-group> + </div> + </gl-form-group> + </gl-form> <work-item-description-rendered v-else :work-item-description="workItemDescription" diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb index 727a4e0251d..28393e1f365 100644 --- a/app/controllers/projects/blob_controller.rb +++ b/app/controllers/projects/blob_controller.rb @@ -49,7 +49,6 @@ class Projects::BlobController < Projects::ApplicationController before_action do push_frontend_feature_flag(:highlight_js, @project) - push_frontend_feature_flag(:synchronize_fork, @project&.fork_source) push_frontend_feature_flag(:explain_code_chat, current_user) push_licensed_feature(:file_locks) if @project.licensed_feature_available?(:file_locks) end diff --git a/app/controllers/projects/tree_controller.rb b/app/controllers/projects/tree_controller.rb index 495241df912..c8f698d6193 100644 --- a/app/controllers/projects/tree_controller.rb +++ b/app/controllers/projects/tree_controller.rb @@ -18,7 +18,6 @@ class Projects::TreeController < Projects::ApplicationController before_action do push_frontend_feature_flag(:highlight_js, @project) - push_frontend_feature_flag(:synchronize_fork, @project.fork_source) push_frontend_feature_flag(:explain_code_chat, current_user) push_licensed_feature(:file_locks) if @project.licensed_feature_available?(:file_locks) end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index e925e16c004..81f205a6457 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -38,7 +38,6 @@ class ProjectsController < Projects::ApplicationController before_action do push_frontend_feature_flag(:highlight_js, @project) - push_frontend_feature_flag(:synchronize_fork, @project&.fork_source) push_frontend_feature_flag(:remove_monitor_metrics, @project) push_frontend_feature_flag(:explain_code_chat, current_user) push_frontend_feature_flag(:ci_namespace_catalog_experimental, @project) diff --git a/app/finders/template_finder.rb b/app/finders/template_finder.rb index c9b5711949f..a8dd2cde20f 100644 --- a/app/finders/template_finder.rb +++ b/app/finders/template_finder.rb @@ -27,14 +27,9 @@ class TemplateFinder end def type_allowed?(type) - case type.to_s - when 'licenses' - true - when 'metrics_dashboard_ymls' - !Feature.enabled?(:remove_monitor_metrics) - else - VENDORED_TEMPLATES.key?(type) - end + return true if type.to_s == 'licenses' + + VENDORED_TEMPLATES.key?(type) end end diff --git a/app/graphql/mutations/projects/sync_fork.rb b/app/graphql/mutations/projects/sync_fork.rb index 4520f6388c5..6a4ec4a26b8 100644 --- a/app/graphql/mutations/projects/sync_fork.rb +++ b/app/graphql/mutations/projects/sync_fork.rb @@ -22,9 +22,6 @@ module Mutations def resolve(project_path:, target_branch:) project = authorized_find!(project_path, target_branch) - return respond(nil, ['Feature flag is disabled']) unless Feature.enabled?(:synchronize_fork, - project.fork_source) - return respond(nil, ['Target branch does not exist']) unless project.repository.branch_exists?(target_branch) details_resolver = Resolvers::Projects::ForkDetailsResolver.new(object: project, context: context, field: nil) diff --git a/app/helpers/avatars_helper.rb b/app/helpers/avatars_helper.rb index 17f995ec0ad..d62498aea0b 100644 --- a/app/helpers/avatars_helper.rb +++ b/app/helpers/avatars_helper.rb @@ -27,11 +27,17 @@ module AvatarsHelper end end - def avatar_icon_for_email(email = nil, size = nil, scale = 2, only_path: true) + def avatar_icon_for_email(email = nil, size = nil, scale = 2, only_path: true, by_commit_email: false) return default_avatar if email.blank? Gitlab::AvatarCache.by_email(email, size, scale, only_path) do - avatar_icon_by_user_email_or_gravatar(email, size, scale, only_path: only_path) + avatar_icon_by_user_email_or_gravatar( + email, + size, + scale, + only_path: only_path, + by_commit_email: by_commit_email + ) end end @@ -115,8 +121,13 @@ module AvatarsHelper private - def avatar_icon_by_user_email_or_gravatar(email, size, scale, only_path:) - user = User.with_public_email(email).first + def avatar_icon_by_user_email_or_gravatar(email, size, scale, only_path:, by_commit_email: false) + user = + if by_commit_email + User.find_by_any_email(email) + else + User.with_public_email(email).first + end if user avatar_icon_for_user(user, size, scale, only_path: only_path) diff --git a/app/models/blob.rb b/app/models/blob.rb index 20d7c230aa2..e6496e21175 100644 --- a/app/models/blob.rb +++ b/app/models/blob.rb @@ -54,7 +54,6 @@ class Blob < SimpleDelegator BlobViewer::License, BlobViewer::Contributing, BlobViewer::Changelog, - BlobViewer::MetricsDashboardYml, BlobViewer::CargoToml, BlobViewer::Cartfile, diff --git a/app/models/blob_viewer/metrics_dashboard_yml.rb b/app/models/blob_viewer/metrics_dashboard_yml.rb deleted file mode 100644 index b63f3022198..00000000000 --- a/app/models/blob_viewer/metrics_dashboard_yml.rb +++ /dev/null @@ -1,45 +0,0 @@ -# frozen_string_literal: true - -module BlobViewer - class MetricsDashboardYml < Base - include ServerSide - include Gitlab::Utils::StrongMemoize - include Auxiliary - - self.partial_name = 'metrics_dashboard_yml' - self.loading_partial_name = 'metrics_dashboard_yml_loading' - self.file_types = %i(metrics_dashboard) - self.binary = false - - def self.can_render?(blob, verify_binary: true) - super && !Feature.enabled?(:remove_monitor_metrics) - end - - def valid? - errors.blank? - end - - def errors - strong_memoize(:errors) do - prepare! - parse_blob_data - end - end - - private - - def parse_blob_data - old_metrics_dashboard_validation - end - - def old_metrics_dashboard_validation - yaml = ::Gitlab::Config::Loader::Yaml.new(blob.data).load_raw! - ::PerformanceMonitoring::PrometheusDashboard.from_json(yaml) - [] - rescue Gitlab::Config::Loader::FormatError => e - ["YAML syntax: #{e.message}"] - rescue ActiveModel::ValidationError => e - e.model.errors.messages.map { |messages| messages.join(': ') } - end - end -end diff --git a/app/views/dashboard/groups/_groups.html.haml b/app/views/dashboard/groups/_groups.html.haml index 601b6a8b1a7..ea7cd75152d 100644 --- a/app/views/dashboard/groups/_groups.html.haml +++ b/app/views/dashboard/groups/_groups.html.haml @@ -1,2 +1,2 @@ .js-groups-list-holder - #js-groups-tree{ data: { hide_projects: 'true', endpoint: dashboard_groups_path(format: :json), path: dashboard_groups_path, form_sel: 'form#group-filter-form', filter_sel: '.js-groups-list-filter', holder_sel: '.js-groups-list-holder', dropdown_sel: '.js-group-filter-dropdown-wrap' } } + #js-groups-tree{ data: { endpoint: dashboard_groups_path(format: :json), path: dashboard_groups_path, form_sel: 'form#group-filter-form', filter_sel: '.js-groups-list-filter', holder_sel: '.js-groups-list-holder', dropdown_sel: '.js-group-filter-dropdown-wrap' } } diff --git a/app/views/explore/groups/_groups.html.haml b/app/views/explore/groups/_groups.html.haml index bb2bd193565..3291129fd69 100644 --- a/app/views/explore/groups/_groups.html.haml +++ b/app/views/explore/groups/_groups.html.haml @@ -1,3 +1,3 @@ .js-groups-list-holder - #js-groups-tree{ data: { hide_projects: 'true', endpoint: explore_groups_path(format: :json), path: explore_groups_path, form_sel: 'form#group-filter-form', filter_sel: '.js-groups-list-filter', holder_sel: '.js-groups-list-holder', dropdown_sel: '.js-group-filter-dropdown-wrap' } } + #js-groups-tree{ data: { endpoint: explore_groups_path(format: :json), path: explore_groups_path, form_sel: 'form#group-filter-form', filter_sel: '.js-groups-list-filter', holder_sel: '.js-groups-list-holder', dropdown_sel: '.js-group-filter-dropdown-wrap' } } = gl_loading_icon(size: 'md', css_class: 'gl-mt-6') diff --git a/app/views/projects/network/show.json.erb b/app/views/projects/network/show.json.erb index 93b3c9911e2..7b5119d92e4 100644 --- a/app/views/projects/network/show.json.erb +++ b/app/views/projects/network/show.json.erb @@ -9,7 +9,7 @@ author: { name: c.author_name, email: c.author_email, - icon: image_path(avatar_icon_for_email(c.author_email, 20)) + icon: image_path(avatar_icon_for_email(c.author_email, 20, by_commit_email: true)) }, time: c.time, space: c.spaces.first, |