moved the collapsing method into a store action

normalized the data into a nicer format
This commit is contained in:
Phil Hughes 2018-05-25 17:03:09 +01:00
parent aca0d610fd
commit f59b9778d9
No known key found for this signature in database
GPG key ID: 32245528C52E0F9F
6 changed files with 41 additions and 30 deletions

View file

@ -29,7 +29,7 @@ export default {
<span class="prepend-left-8"> <span class="prepend-left-8">
{{ job.name }} {{ job.name }}
<a <a
:href="job.build_path" :href="job.path"
target="_blank" target="_blank"
v-text="jobId" v-text="jobId"
> >

View file

@ -47,7 +47,7 @@ export default {
this.showTooltip = stageTitle.scrollWidth > stageTitle.offsetWidth; this.showTooltip = stageTitle.scrollWidth > stageTitle.offsetWidth;
}, },
methods: { methods: {
...mapActions('pipelines', ['fetchJobs']), ...mapActions('pipelines', ['fetchJobs', 'toggleStageCollapsed']),
}, },
}; };
</script> </script>
@ -58,7 +58,7 @@ export default {
> >
<div <div
class="panel-heading" class="panel-heading"
@click="() => stage.isCollapsed = !stage.isCollapsed" @click="toggleStageCollapsed(stage.id)"
> >
<ci-icon <ci-icon
:status="stage.status" :status="stage.status"

View file

@ -65,9 +65,12 @@ export const fetchJobs = ({ dispatch }, stage) => {
dispatch('requestJobs', stage.id); dispatch('requestJobs', stage.id);
axios axios
.get(stage.dropdown_path) .get(stage.dropdownPath)
.then(({ data }) => dispatch('receiveJobsSuccess', { id: stage.id, data })) .then(({ data }) => dispatch('receiveJobsSuccess', { id: stage.id, data }))
.catch(() => dispatch('receiveJobsError', stage.id)); .catch(() => dispatch('receiveJobsError', stage.id));
}; };
export const toggleStageCollapsed = ({ commit }, stageId) =>
commit(types.TOGGLE_STAGE_COLLAPSE, stageId);
export default () => {}; export default () => {};

View file

@ -5,3 +5,5 @@ export const RECEIVE_LASTEST_PIPELINE_SUCCESS = 'RECEIVE_LASTEST_PIPELINE_SUCCES
export const REQUEST_JOBS = 'REQUEST_JOBS'; export const REQUEST_JOBS = 'REQUEST_JOBS';
export const RECEIVE_JOBS_ERROR = 'RECEIVE_JOBS_ERROR'; export const RECEIVE_JOBS_ERROR = 'RECEIVE_JOBS_ERROR';
export const RECEIVE_JOBS_SUCCESS = 'RECEIVE_JOBS_SUCCESS'; export const RECEIVE_JOBS_SUCCESS = 'RECEIVE_JOBS_SUCCESS';
export const TOGGLE_STAGE_COLLAPSE = 'TOGGLE_STAGE_COLLAPSE';

View file

@ -23,8 +23,10 @@ export default {
state.stages = pipeline.details.stages.map((stage, i) => { state.stages = pipeline.details.stages.map((stage, i) => {
const foundStage = state.stages.find(s => s.id === i); const foundStage = state.stages.find(s => s.id === i);
return { return {
...stage,
id: i, id: i,
dropdownPath: stage.dropdown_path,
name: stage.name,
status: stage.status,
isCollapsed: foundStage ? foundStage.isCollapsed : false, isCollapsed: foundStage ? foundStage.isCollapsed : false,
isLoading: foundStage ? foundStage.isLoading : false, isLoading: foundStage ? foundStage.isLoading : false,
jobs: foundStage ? foundStage.jobs : [], jobs: foundStage ? foundStage.jobs : [],
@ -33,34 +35,35 @@ export default {
} }
}, },
[types.REQUEST_JOBS](state, id) { [types.REQUEST_JOBS](state, id) {
state.stages = state.stages.reduce( state.stages = state.stages.map(stage => ({
(acc, stage) =>
acc.concat({
...stage, ...stage,
isLoading: id === stage.id ? true : stage.isLoading, isLoading: id === stage.id ? true : stage.isLoading,
}), }));
[],
);
}, },
[types.RECEIVE_JOBS_ERROR](state, id) { [types.RECEIVE_JOBS_ERROR](state, id) {
state.stages = state.stages.reduce( state.stages = state.stages.map(stage => ({
(acc, stage) =>
acc.concat({
...stage, ...stage,
isLoading: id === stage.id ? false : stage.isLoading, isLoading: id === stage.id ? true : stage.isLoading,
}), }));
[],
);
}, },
[types.RECEIVE_JOBS_SUCCESS](state, { id, data }) { [types.RECEIVE_JOBS_SUCCESS](state, { id, data }) {
state.stages = state.stages.reduce( const normalizeData = job => ({
(acc, stage) => id: job.id,
acc.concat({ name: job.name,
status: job.status,
path: job.build_path,
});
state.stages = state.stages.map(stage => ({
...stage, ...stage,
isLoading: id === stage.id ? false : stage.isLoading, isLoading: id === stage.id ? false : stage.isLoading,
jobs: id === stage.id ? data.latest_statuses : stage.jobs, jobs: id === stage.id ? data.latest_statuses.map(normalizeData) : stage.jobs,
}), }));
[], },
); [types.TOGGLE_STAGE_COLLAPSE](state, id) {
state.stages = state.stages.map(stage => ({
...stage,
isCollapsed: stage.id === id ? !stage.isCollapsed : stage.isCollapsed,
}));
}, },
}; };

View file

@ -911,6 +911,9 @@
} }
&.is-right { &.is-right {
padding-right: $gl-padding;
padding-left: $gl-padding + 1px;
&::after { &::after {
right: auto; right: auto;
left: -1px; left: -1px;