From c657078ecb4bff69e58f6911713e143c99f2c71f Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 3 Dec 2021 03:14:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../javascripts/google_cloud/components/app.vue | 59 ++++++++++++++++ .../javascripts/google_cloud/components/home.vue | 41 +++++++++++ .../google_cloud/components/screens/app.vue | 50 ------------- .../components/screens/service_accounts_form.vue | 81 ---------------------- .../components/service_accounts_form.vue | 70 +++++++++++++++++++ app/assets/javascripts/google_cloud/index.js | 44 +++--------- app/assets/javascripts/integrations/constants.js | 1 - app/assets/javascripts/integrations/edit/api.js | 9 +++ .../edit/components/integration_form.vue | 10 +++ .../edit/components/jira_issues_fields.vue | 10 +-- .../javascripts/integrations/edit/store/actions.js | 27 +++++++- .../integrations/integration_settings_form.js | 40 +---------- .../projects/google_cloud/base_controller.rb | 2 +- .../google_cloud/service_accounts_controller.rb | 5 +- .../projects/google_cloud_controller.rb | 1 + app/models/ci/job_artifact.rb | 4 ++ .../google_cloud/errors/gcp_error.html.haml | 2 +- .../google_cloud/errors/no_gcp_projects.html.haml | 2 +- .../google_cloud/service_accounts/index.html.haml | 2 +- 19 files changed, 239 insertions(+), 221 deletions(-) create mode 100644 app/assets/javascripts/google_cloud/components/app.vue create mode 100644 app/assets/javascripts/google_cloud/components/home.vue delete mode 100644 app/assets/javascripts/google_cloud/components/screens/app.vue delete mode 100644 app/assets/javascripts/google_cloud/components/screens/service_accounts_form.vue create mode 100644 app/assets/javascripts/google_cloud/components/service_accounts_form.vue create mode 100644 app/assets/javascripts/integrations/edit/api.js (limited to 'app') diff --git a/app/assets/javascripts/google_cloud/components/app.vue b/app/assets/javascripts/google_cloud/components/app.vue new file mode 100644 index 00000000000..64784755b66 --- /dev/null +++ b/app/assets/javascripts/google_cloud/components/app.vue @@ -0,0 +1,59 @@ + + + diff --git a/app/assets/javascripts/google_cloud/components/home.vue b/app/assets/javascripts/google_cloud/components/home.vue new file mode 100644 index 00000000000..05f39de66ee --- /dev/null +++ b/app/assets/javascripts/google_cloud/components/home.vue @@ -0,0 +1,41 @@ + + + diff --git a/app/assets/javascripts/google_cloud/components/screens/app.vue b/app/assets/javascripts/google_cloud/components/screens/app.vue deleted file mode 100644 index 52c9b478916..00000000000 --- a/app/assets/javascripts/google_cloud/components/screens/app.vue +++ /dev/null @@ -1,50 +0,0 @@ - - - diff --git a/app/assets/javascripts/google_cloud/components/screens/service_accounts_form.vue b/app/assets/javascripts/google_cloud/components/screens/service_accounts_form.vue deleted file mode 100644 index 6aead296918..00000000000 --- a/app/assets/javascripts/google_cloud/components/screens/service_accounts_form.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/app/assets/javascripts/google_cloud/components/service_accounts_form.vue b/app/assets/javascripts/google_cloud/components/service_accounts_form.vue new file mode 100644 index 00000000000..e7a09668473 --- /dev/null +++ b/app/assets/javascripts/google_cloud/components/service_accounts_form.vue @@ -0,0 +1,70 @@ + + + diff --git a/app/assets/javascripts/google_cloud/index.js b/app/assets/javascripts/google_cloud/index.js index ba67877e005..ab9e8227812 100644 --- a/app/assets/javascripts/google_cloud/index.js +++ b/app/assets/javascripts/google_cloud/index.js @@ -1,40 +1,12 @@ import Vue from 'vue'; -import { __ } from '~/locale'; -import App from './components/screens/app.vue'; -import ServiceAccountsForm from './components/screens/service_accounts_form.vue'; -import ErrorNoGcpProjects from './components/errors/no_gcp_projects.vue'; -import ErrorGcpError from './components/errors/gcp_error.vue'; - -const elementRenderer = (element, props = {}) => (createElement) => - createElement(element, { props }); - -const rootComponentMap = [ - { - root: '#js-google-cloud-error-no-gcp-projects', - component: ErrorNoGcpProjects, - }, - { - root: '#js-google-cloud-error-gcp-error', - component: ErrorGcpError, - }, - { - root: '#js-google-cloud-service-accounts', - component: ServiceAccountsForm, - }, - { - root: '#js-google-cloud', - component: App, - }, -]; +import App from './components/app.vue'; export default () => { - for (let i = 0; i < rootComponentMap.length; i += 1) { - const { root, component } = rootComponentMap[i]; - const element = document.querySelector(root); - if (element) { - const props = JSON.parse(element.getAttribute('data')); - return new Vue({ el: root, render: elementRenderer(component, props) }); - } - } - throw new Error(__('Unknown root')); + const root = '#js-google-cloud'; + const element = document.querySelector(root); + const { screen, ...attrs } = JSON.parse(element.getAttribute('data')); + return new Vue({ + el: element, + render: (createElement) => createElement(App, { props: { screen }, attrs }), + }); }; diff --git a/app/assets/javascripts/integrations/constants.js b/app/assets/javascripts/integrations/constants.js index d214ee4ded6..977811f81a4 100644 --- a/app/assets/javascripts/integrations/constants.js +++ b/app/assets/javascripts/integrations/constants.js @@ -2,7 +2,6 @@ import { s__, __ } from '~/locale'; export const TEST_INTEGRATION_EVENT = 'testIntegration'; export const SAVE_INTEGRATION_EVENT = 'saveIntegration'; -export const GET_JIRA_ISSUE_TYPES_EVENT = 'getJiraIssueTypes'; export const TOGGLE_INTEGRATION_EVENT = 'toggleIntegration'; export const VALIDATE_INTEGRATION_FORM_EVENT = 'validateIntegrationForm'; diff --git a/app/assets/javascripts/integrations/edit/api.js b/app/assets/javascripts/integrations/edit/api.js new file mode 100644 index 00000000000..7bce5604f9d --- /dev/null +++ b/app/assets/javascripts/integrations/edit/api.js @@ -0,0 +1,9 @@ +import axios from '~/lib/utils/axios_utils'; + +/** + * Test the validity of [integrationFormData]. + * @return Promise<{ issuetypes: []String }> - issuetypes contains valid Jira issue types. + */ +export const testIntegrationSettings = (testPath, integrationFormData) => { + return axios.put(testPath, integrationFormData); +}; diff --git a/app/assets/javascripts/integrations/edit/components/integration_form.vue b/app/assets/javascripts/integrations/edit/components/integration_form.vue index ba1aeb28616..767810950b1 100644 --- a/app/assets/javascripts/integrations/edit/components/integration_form.vue +++ b/app/assets/javascripts/integrations/edit/components/integration_form.vue @@ -69,6 +69,10 @@ export default { return this.isInstanceOrGroupLevel && this.propsSource.resetPath; }, }, + mounted() { + // this form element is defined in Haml + this.form = document.querySelector('.js-integration-settings-form'); + }, methods: { ...mapActions([ 'setOverride', @@ -76,6 +80,7 @@ export default { 'setIsTesting', 'setIsResetting', 'fetchResetIntegration', + 'requestJiraIssueTypes', ]), onSaveClick() { this.setIsSaving(true); @@ -88,6 +93,10 @@ export default { onResetClick() { this.fetchResetIntegration(); }, + onRequestJiraIssueTypes() { + const formData = new FormData(this.form); + this.requestJiraIssueTypes(formData); + }, }, helpHtmlConfig: { ADD_ATTR: ['target'], // allow external links, can be removed after https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1427 is implemented @@ -135,6 +144,7 @@ export default { v-if="isJira && !isInstanceOrGroupLevel" :key="`${currentKey}-jira-issues-fields`" v-bind="propsSource.jiraIssuesProps" + @request-jira-issue-types="onRequestJiraIssueTypes" />