From f4726e9f5029931fc74aee9d5eff93d6a762dcff Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 4 Feb 2021 21:09:06 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../components/alert_mapping_builder.vue | 39 +++--- .../components/alerts_settings_form.vue | 13 +- .../components/alerts_settings_wrapper.vue | 8 ++ .../components/mocks/gitlabFields.json | 123 ------------------- .../components/mocks/parsedMapping.json | 26 ++-- app/assets/javascripts/alerts_settings/index.js | 10 +- .../utils/mapping_transformations.js | 8 +- .../members/components/avatars/user_avatar.vue | 5 +- app/assets/javascripts/milestone_select.js | 19 +-- .../pipelines/components/pipelines_list/stage.vue | 136 +++++++++++++-------- app/assets/stylesheets/page_bundles/pipelines.scss | 11 +- app/assets/stylesheets/page_bundles/signup.scss | 4 + app/controllers/concerns/service_params.rb | 1 + app/controllers/projects/commit_controller.rb | 3 + .../projects/merge_requests_controller.rb | 1 + app/controllers/projects/pipelines_controller.rb | 1 + .../projects/security/configuration_controller.rb | 23 ++++ app/graphql/mutations/alert_management/base.rb | 2 +- app/graphql/mutations/todos/create.rb | 2 +- app/graphql/mutations/todos/mark_all_done.rb | 6 +- app/graphql/mutations/todos/mark_done.rb | 4 +- app/graphql/mutations/todos/restore.rb | 4 +- app/graphql/mutations/todos/restore_many.rb | 8 +- app/graphql/types/alert_management/alert_type.rb | 2 +- app/graphql/types/current_user_todos.rb | 4 +- app/graphql/types/todo_type.rb | 18 +-- app/graphql/types/user_type.rb | 2 +- app/helpers/projects_helper.rb | 31 +++++ app/helpers/users_helper.rb | 21 ++++ app/models/concerns/triggerable_hooks.rb | 3 +- .../project_services/chat_notification_service.rb | 26 +++- app/models/u2f_registration.rb | 16 ++- app/policies/project_policy.rb | 4 + .../resource_events/base_change_timebox_service.rb | 7 +- .../resource_events/change_milestone_service.rb | 4 +- app/views/admin/users/_users.html.haml | 6 +- .../nav/sidebar/_project_security_link.html.haml | 21 ++++ app/views/layouts/welcome.html.haml | 2 +- .../projects/security/configuration/show.html.haml | 4 + app/views/registrations/welcome/show.html.haml | 1 + app/views/shared/web_hooks/_form.html.haml | 1 + 41 files changed, 371 insertions(+), 259 deletions(-) delete mode 100644 app/assets/javascripts/alerts_settings/components/mocks/gitlabFields.json create mode 100644 app/controllers/projects/security/configuration_controller.rb create mode 100644 app/views/layouts/nav/sidebar/_project_security_link.html.haml create mode 100644 app/views/projects/security/configuration/show.html.haml (limited to 'app') diff --git a/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue b/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue index 02b1d08f9c3..66d6af6f0a4 100644 --- a/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue +++ b/app/assets/javascripts/alerts_settings/components/alert_mapping_builder.vue @@ -8,17 +8,14 @@ import { GlSearchBoxByType, GlTooltipDirective as GlTooltip, } from '@gitlab/ui'; +import { cloneDeep } from 'lodash'; import { s__, __ } from '~/locale'; -// Mocks will be removed when integrating with BE is ready -// data format is defined and will be the same as mocked (maybe with some minor changes) -// feature rollout plan - https://gitlab.com/gitlab-org/gitlab/-/issues/262707#note_442529171 import { capitalizeFirstCharacter } from '~/lib/utils/text_utility'; import { getMappingData, getPayloadFields, transformForSave, } from '../utils/mapping_transformations'; -import gitlabFieldsMock from './mocks/gitlabFields.json'; export const i18n = { columns: { @@ -46,12 +43,19 @@ export default { directives: { GlTooltip, }, - inject: { - gitlabAlertFields: { - default: gitlabFieldsMock, - }, - }, props: { + alertFields: { + type: Array, + required: true, + validator: (fields) => { + return ( + fields.length && + fields.every(({ name, types, label }) => { + return typeof name === 'string' && Array.isArray(types) && typeof label === 'string'; + }) + ); + }, + }, parsedPayload: { type: Array, required: false, @@ -65,7 +69,7 @@ export default { }, data() { return { - gitlabFields: this.gitlabAlertFields, + gitlabFields: cloneDeep(this.alertFields), }; }, computed: { @@ -75,6 +79,9 @@ export default { mappingData() { return getMappingData(this.gitlabFields, this.payloadFields, this.savedMapping); }, + hasFallbackColumn() { + return this.gitlabFields.some(({ numberOfFallbacks }) => Boolean(numberOfFallbacks)); + }, }, methods: { setMapping(gitlabKey, mappingKey, valueKey) { @@ -101,10 +108,10 @@ export default { this.$options.i18n.makeSelection ); }, - getFieldValue({ label, type }) { - const types = type.map((t) => capitalizeFirstCharacter(t.toLowerCase())).join(__(' or ')); + getFieldValue({ label, types }) { + const type = types.map((t) => capitalizeFirstCharacter(t.toLowerCase())).join(__(' or ')); - return `${label} (${types})`; + return `${label} (${type})`; }, noResults(searchTerm, fields) { return !this.filterFields(searchTerm, fields).length; @@ -123,7 +130,11 @@ export default {
{{ $options.i18n.columns.payloadKeyTitle }}
-
+
{{ $options.i18n.columns.fallbackKeyTitle }} diff --git a/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue b/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue index def84f3ed94..71d094dbe6e 100644 --- a/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue +++ b/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue @@ -57,6 +57,13 @@ export default { default: false, }, }, + props: { + alertFields: { + type: Array, + required: false, + default: null, + }, + }, apollo: { integrations: { fetchPolicy: fetchPolicies.CACHE_AND_NETWORK, @@ -312,6 +319,7 @@ export default { { url, projectPath, multiIntegrations, + alertFields, } = el.dataset; return new Vue({ @@ -60,7 +61,14 @@ export default (el) => { }, apolloProvider, render(createElement) { - return createElement('alert-settings-wrapper'); + return createElement('alert-settings-wrapper', { + props: { + alertFields: + gon.features?.multipleHttpIntegrationsCustomMapping && parseBoolean(multiIntegrations) + ? JSON.parse(alertFields) + : null, + }, + }); }, }); }; diff --git a/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js b/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js index a7e43c93fbf..a86103540c0 100644 --- a/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js +++ b/app/assets/javascripts/alerts_settings/utils/mapping_transformations.js @@ -10,9 +10,7 @@ export const getMappingData = (gitlabFields, payloadFields, savedMapping) => { return gitlabFields.map((gitlabField) => { // find fields from payload that match gitlab alert field by type - const mappingFields = payloadFields.filter(({ type }) => - gitlabField.compatibleTypes.includes(type), - ); + const mappingFields = payloadFields.filter(({ type }) => gitlabField.types.includes(type)); // find the mapping that was previously stored const foundMapping = savedMapping.find(({ fieldName }) => fieldName === gitlabField.name); @@ -42,9 +40,9 @@ export const transformForSave = (mappingData) => { if (mapped) { const { path, type, label } = mapped; acc.push({ - fieldName: field.name, + fieldName: field.name.toUpperCase(), path, - type, + type: type.toUpperCase(), label, }); } diff --git a/app/assets/javascripts/members/components/avatars/user_avatar.vue b/app/assets/javascripts/members/components/avatars/user_avatar.vue index ee2d5eba8e9..991f77cf3da 100644 --- a/app/assets/javascripts/members/components/avatars/user_avatar.vue +++ b/app/assets/javascripts/members/components/avatars/user_avatar.vue @@ -69,7 +69,10 @@ export default { >