diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-29 21:08:26 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-29 21:08:26 +0300 |
commit | b64a8161c9442d82897a341d6bf935dd3e748b06 (patch) | |
tree | b9953db8607d1393aa8ac588a15f184dd8e183f6 /app/assets/javascripts/jira_import | |
parent | 6e33325c1458cb31b4d36a7eec817fa00ec3faaf (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/jira_import')
4 files changed, 30 insertions, 13 deletions
diff --git a/app/assets/javascripts/jira_import/components/jira_import_app.vue b/app/assets/javascripts/jira_import/components/jira_import_app.vue index d1570f52c8c..e5083f01a8a 100644 --- a/app/assets/javascripts/jira_import/components/jira_import_app.vue +++ b/app/assets/javascripts/jira_import/components/jira_import_app.vue @@ -4,7 +4,7 @@ import { last } from 'lodash'; import { __ } from '~/locale'; import getJiraImportDetailsQuery from '../queries/get_jira_import_details.query.graphql'; import initiateJiraImportMutation from '../queries/initiate_jira_import.mutation.graphql'; -import { IMPORT_STATE, isInProgress } from '../utils'; +import { IMPORT_STATE, isInProgress, extractJiraProjectsOptions } from '../utils'; import JiraImportForm from './jira_import_form.vue'; import JiraImportProgress from './jira_import_progress.vue'; import JiraImportSetup from './jira_import_setup.vue'; @@ -36,10 +36,6 @@ export default { type: String, required: true, }, - jiraProjects: { - type: Array, - required: true, - }, projectPath: { type: String, required: true, @@ -51,6 +47,7 @@ export default { }, data() { return { + jiraImportDetails: {}, errorMessage: '', showAlert: false, selectedProject: undefined, @@ -65,6 +62,7 @@ export default { }; }, update: ({ project }) => ({ + projects: extractJiraProjectsOptions(project.services.nodes[0].projects.nodes), status: project.jiraImportStatus, imports: project.jiraImports.nodes, }), @@ -75,17 +73,14 @@ export default { }, computed: { isImportInProgress() { - return isInProgress(this.jiraImportDetails?.status); - }, - jiraProjectsOptions() { - return this.jiraProjects.map(([text, value]) => ({ text, value })); + return isInProgress(this.jiraImportDetails.status); }, mostRecentImport() { // The backend returns JiraImports ordered by created_at asc in app/models/project.rb - return last(this.jiraImportDetails?.imports); + return last(this.jiraImportDetails.imports); }, numberOfPreviousImportsForProject() { - return this.jiraImportDetails?.imports?.reduce?.( + return this.jiraImportDetails.imports?.reduce?.( (acc, jiraProject) => (jiraProject.jiraProjectKey === this.selectedProject ? acc + 1 : acc), 0, ); @@ -202,7 +197,7 @@ export default { v-model="selectedProject" :import-label="importLabel" :issues-path="issuesPath" - :jira-projects="jiraProjectsOptions" + :jira-projects="jiraImportDetails.projects" @initiateJiraImport="initiateJiraImport" /> </div> diff --git a/app/assets/javascripts/jira_import/index.js b/app/assets/javascripts/jira_import/index.js index b576668fe7c..924cc7e6864 100644 --- a/app/assets/javascripts/jira_import/index.js +++ b/app/assets/javascripts/jira_import/index.js @@ -28,7 +28,6 @@ export default function mountJiraImportApp() { isJiraConfigured: parseBoolean(el.dataset.isJiraConfigured), issuesPath: el.dataset.issuesPath, jiraIntegrationPath: el.dataset.jiraIntegrationPath, - jiraProjects: el.dataset.jiraProjects ? JSON.parse(el.dataset.jiraProjects) : [], projectPath: el.dataset.projectPath, setupIllustration: el.dataset.setupIllustration, }, diff --git a/app/assets/javascripts/jira_import/queries/get_jira_import_details.query.graphql b/app/assets/javascripts/jira_import/queries/get_jira_import_details.query.graphql index aa8d03c7f17..2aacc5cf668 100644 --- a/app/assets/javascripts/jira_import/queries/get_jira_import_details.query.graphql +++ b/app/assets/javascripts/jira_import/queries/get_jira_import_details.query.graphql @@ -8,5 +8,17 @@ query($fullPath: ID!) { ...JiraImport } } + services(active: true, type: JIRA_SERVICE) { + nodes { + ... on JiraService { + projects { + nodes { + key + name + } + } + } + } + } } } diff --git a/app/assets/javascripts/jira_import/utils.js b/app/assets/javascripts/jira_import/utils.js index aa10dfc8099..e82a3f44a29 100644 --- a/app/assets/javascripts/jira_import/utils.js +++ b/app/assets/javascripts/jira_import/utils.js @@ -14,6 +14,17 @@ export const isInProgress = state => export const isFinished = state => state === IMPORT_STATE.FINISHED; /** + * Converts the list of Jira projects into a format consumable by GlFormSelect. + * + * @param {Object[]} projects - List of Jira projects + * @param {string} projects[].key - Jira project key + * @param {string} projects[].name - Jira project name + * @returns {Object[]} - List of Jira projects in a format consumable by GlFormSelect + */ +export const extractJiraProjectsOptions = projects => + projects.map(({ key, name }) => ({ text: `${name} (${key})`, value: key })); + +/** * Calculates the label title for the most recent Jira import. * * @param {Object[]} jiraImports - List of Jira imports |