diff options
author | Phil Hughes <me@iamphill.com> | 2018-05-30 12:56:06 +0100 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-05-30 12:56:06 +0100 |
commit | c9d676c1069e6e88b4eeeea2246cc5706b56f2ab (patch) | |
tree | c7d88b9d025964d4973eb80764d03d6f6c4d0e3f /app/assets/javascripts/ide/stores/modules | |
parent | 6c9844c10e23e939a08a9ba3e8972dd3f112f206 (diff) | |
download | gitlab-ce-c9d676c1069e6e88b4eeeea2246cc5706b56f2ab.tar.gz |
changed mutations, update single object instead of returning new array
bunch of i18n stuff :see_no_evil:
Diffstat (limited to 'app/assets/javascripts/ide/stores/modules')
4 files changed, 29 insertions, 32 deletions
diff --git a/app/assets/javascripts/ide/stores/modules/pipelines/constants.js b/app/assets/javascripts/ide/stores/modules/pipelines/constants.js new file mode 100644 index 00000000000..f5b96327e40 --- /dev/null +++ b/app/assets/javascripts/ide/stores/modules/pipelines/constants.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line import/prefer-default-export +export const states = { + failed: 'failed', +}; diff --git a/app/assets/javascripts/ide/stores/modules/pipelines/getters.js b/app/assets/javascripts/ide/stores/modules/pipelines/getters.js index d6f10e0d71e..f545453806f 100644 --- a/app/assets/javascripts/ide/stores/modules/pipelines/getters.js +++ b/app/assets/javascripts/ide/stores/modules/pipelines/getters.js @@ -1,18 +1,22 @@ +import { states } from './constants'; + export const hasLatestPipeline = state => !state.isLoadingPipeline && !!state.latestPipeline; export const pipelineFailed = state => - state.latestPipeline && state.latestPipeline.details.status.text === 'failed'; + state.latestPipeline && state.latestPipeline.details.status.text === states.failed; export const failedStages = state => - state.stages.filter(stage => stage.status.text.toLowerCase() === 'failed').map(stage => ({ + state.stages.filter(stage => stage.status.text.toLowerCase() === states.failed).map(stage => ({ ...stage, - jobs: stage.jobs.filter(job => job.status.text.toLowerCase() === 'failed'), + jobs: stage.jobs.filter(job => job.status.text.toLowerCase() === states.failed), })); export const failedJobsCount = state => state.stages.reduce( - (acc, stage) => acc + stage.jobs.filter(j => j.status.text === 'failed').length, + (acc, stage) => acc + stage.jobs.filter(j => j.status.text === states.failed).length, 0, ); export const jobsCount = state => state.stages.reduce((acc, stage) => acc + stage.jobs.length, 0); + +export default () => {}; diff --git a/app/assets/javascripts/ide/stores/modules/pipelines/mutations.js b/app/assets/javascripts/ide/stores/modules/pipelines/mutations.js index 78ac12c7026..38459dfbe77 100644 --- a/app/assets/javascripts/ide/stores/modules/pipelines/mutations.js +++ b/app/assets/javascripts/ide/stores/modules/pipelines/mutations.js @@ -1,5 +1,6 @@ /* eslint-disable no-param-reassign */ import * as types from './mutation_types'; +import { normalizeJob } from './utils'; export default { [types.REQUEST_LATEST_PIPELINE](state) { @@ -38,39 +39,20 @@ export default { } }, [types.REQUEST_JOBS](state, id) { - state.stages = state.stages.map(stage => - Object.assign(stage, { - isLoading: id === stage.id ? true : stage.isLoading, - }), - ); + const stage = state.stages.find(s => s.id === id); + stage.isLoading = true; }, [types.RECEIVE_JOBS_ERROR](state, id) { - state.stages = state.stages.map(stage => - Object.assign(stage, { - isLoading: id === stage.id ? false : stage.isLoading, - }), - ); + const stage = state.stages.find(s => s.id === id); + stage.isLoading = false; }, [types.RECEIVE_JOBS_SUCCESS](state, { id, data }) { - const normalizeData = job => ({ - id: job.id, - name: job.name, - status: job.status, - path: job.build_path, - }); - - state.stages = state.stages.map(stage => - Object.assign(stage, { - isLoading: id === stage.id ? false : stage.isLoading, - jobs: id === stage.id ? data.latest_statuses.map(normalizeData) : stage.jobs, - }), - ); + const stage = state.stages.find(s => s.id === id); + stage.isLoading = false; + stage.jobs = data.latest_statuses.map(normalizeJob); }, [types.TOGGLE_STAGE_COLLAPSE](state, id) { - state.stages = state.stages.map(stage => - Object.assign(stage, { - isCollapsed: stage.id === id ? !stage.isCollapsed : stage.isCollapsed, - }), - ); + const stage = state.stages.find(s => s.id === id); + stage.isCollapsed = !stage.isCollapsed; }, }; diff --git a/app/assets/javascripts/ide/stores/modules/pipelines/utils.js b/app/assets/javascripts/ide/stores/modules/pipelines/utils.js new file mode 100644 index 00000000000..9f4b0d7d726 --- /dev/null +++ b/app/assets/javascripts/ide/stores/modules/pipelines/utils.js @@ -0,0 +1,7 @@ +// eslint-disable-next-line import/prefer-default-export +export const normalizeJob = job => ({ + id: job.id, + name: job.name, + status: job.status, + path: job.build_path, +}); |