Commit 8ab0db4e authored by Mike Greiling's avatar Mike Greiling

Merge branch 'winh-issue-boards-addList-sort' into 'master'

Sort by position in issue boards store addList()

See merge request gitlab-org/gitlab-ce!28827
parents 5e88463d 02cc659e
<script> <script>
/* global ListLabel */ /* global ListLabel */
import _ from 'underscore';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import boardsStore from '../stores/boards_store'; import boardsStore from '../stores/boards_store';
...@@ -29,8 +28,6 @@ export default { ...@@ -29,8 +28,6 @@ export default {
}); });
}); });
boardsStore.state.lists = _.sortBy(boardsStore.state.lists, 'position');
// Save the labels // Save the labels
gl.boardService gl.boardService
.generateDefaultLists() .generateDefaultLists()
......
import $ from 'jquery'; import $ from 'jquery';
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import Flash from '~/flash'; import Flash from '~/flash';
...@@ -106,18 +105,23 @@ export default () => { ...@@ -106,18 +105,23 @@ export default () => {
gl.boardService gl.boardService
.all() .all()
.then(res => res.data) .then(res => res.data)
.then(data => { .then(lists => {
data.forEach(board => { lists.forEach(listObj => {
const list = boardsStore.addList(board, this.defaultAvatar); let { position } = listObj;
if (listObj.list_type === 'closed') {
if (list.type === 'closed') { position = Infinity;
list.position = Infinity; } else if (listObj.list_type === 'backlog') {
} else if (list.type === 'backlog') { position = -1;
list.position = -1;
} }
});
this.state.lists = _.sortBy(this.state.lists, 'position'); boardsStore.addList(
{
...listObj,
position,
},
this.defaultAvatar,
);
});
boardsStore.addBlankState(); boardsStore.addBlankState();
this.loading = false; this.loading = false;
......
...@@ -45,7 +45,7 @@ const boardsStore = { ...@@ -45,7 +45,7 @@ const boardsStore = {
}, },
addList(listObj, defaultAvatar) { addList(listObj, defaultAvatar) {
const list = new List(listObj, defaultAvatar); const list = new List(listObj, defaultAvatar);
this.state.lists.push(list); this.state.lists = _.sortBy([...this.state.lists, list], 'position');
return list; return list;
}, },
...@@ -82,8 +82,6 @@ const boardsStore = { ...@@ -82,8 +82,6 @@ const boardsStore = {
title: __('Welcome to your Issue Board!'), title: __('Welcome to your Issue Board!'),
position: 0, position: 0,
}); });
this.state.lists = _.sortBy(this.state.lists, 'position');
}, },
removeBlankState() { removeBlankState() {
this.removeList('blank'); this.removeList('blank');
......
...@@ -44,6 +44,15 @@ describe('Store', () => { ...@@ -44,6 +44,15 @@ describe('Store', () => {
expect(boardsStore.state.lists.length).toBe(0); expect(boardsStore.state.lists.length).toBe(0);
}); });
describe('addList', () => {
it('sorts by position', () => {
boardsStore.addList({ position: 2 });
boardsStore.addList({ position: 1 });
expect(boardsStore.state.lists[0].position).toBe(1);
});
});
describe('lists', () => { describe('lists', () => {
it('creates new list without persisting to DB', () => { it('creates new list without persisting to DB', () => {
boardsStore.addList(listObj); boardsStore.addList(listObj);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment