diff --git a/app/assets/javascripts/boards/boards_bundle.js.es6 b/app/assets/javascripts/boards/boards_bundle.js.es6 index e965255f6da731f2b1fefc932833f4b677deb853..6a83785aa50ac6b72efaf7258ce00b05272ed098 100644 --- a/app/assets/javascripts/boards/boards_bundle.js.es6 +++ b/app/assets/javascripts/boards/boards_bundle.js.es6 @@ -10,9 +10,7 @@ $(() => { const $boardApp = $('#board-app'); - if (!window.gl) { - window.gl = {}; - } + window.gl = window.gl || {}; if (gl.IssueBoardsApp) { gl.IssueBoardsApp.$destroy(true); @@ -21,14 +19,14 @@ $(() => { gl.IssueBoardsApp = new Vue({ el: $boardApp.get(0), data: { - state: BoardsStore.state, + state: gl.issueBoards.BoardsStore.state, loading: true, endpoint: $boardApp.data('endpoint'), disabled: $boardApp.data('disabled'), issueLinkBase: $boardApp.data('issue-link-base') }, init () { - BoardsStore.create(); + gl.issueBoards.BoardsStore.create(); }, created () { this.loading = true; @@ -40,14 +38,14 @@ $(() => { .removeAttr('data-issue-link-base'); }, ready () { - BoardsStore.disabled = this.disabled; + gl.issueBoards.BoardsStore.disabled = this.disabled; gl.boardService.all() .then((resp) => { const boards = resp.json(); for (let i = 0, boardsLength = boards.length; i < boardsLength; i++) { const board = boards[i], - list = BoardsStore.addList(board); + list = gl.issueBoards.BoardsStore.addList(board); if (list.type === 'done') { list.position = Infinity; @@ -56,7 +54,7 @@ $(() => { } } - BoardsStore.addBlankState(); + gl.issueBoards.BoardsStore.addBlankState(); this.loading = false; }); } diff --git a/app/assets/javascripts/boards/components/board.js.es6 b/app/assets/javascripts/boards/components/board.js.es6 index 79727b96874ebab63ea34c0ecf9d1fc83dace7b0..6f9f054f346e6eaf8eee2e8d01d6acbce14e42ae 100644 --- a/app/assets/javascripts/boards/components/board.js.es6 +++ b/app/assets/javascripts/boards/components/board.js.es6 @@ -8,7 +8,7 @@ data () { return { query: '', - filters: BoardsStore.state.filters + filters: gl.issueBoards.BoardsStore.state.filters }; }, watch: { @@ -53,7 +53,7 @@ draggable: '.is-draggable', handle: '.js-board-handle', onUpdate (e) { - BoardsStore.moveList(e.oldIndex, e.newIndex); + gl.issueBoards.BoardsStore.moveList(e.oldIndex, e.newIndex); } }); diff --git a/app/assets/javascripts/boards/components/board_blank_state.js.es6 b/app/assets/javascripts/boards/components/board_blank_state.js.es6 index 0f8e4b1b1f703e6bd29ebc60932afebffb5c849a..5a189f5b4a9bb3e15634c360c4297b0233d36adc 100644 --- a/app/assets/javascripts/boards/components/board_blank_state.js.es6 +++ b/app/assets/javascripts/boards/components/board_blank_state.js.es6 @@ -12,12 +12,12 @@ }, methods: { addDefaultLists () { - BoardsStore.removeBlankState(); + gl.issueBoards.BoardsStore.removeBlankState(); for (let i = 0, labelsLength = this.predefinedLabels.length; i < labelsLength; i++) { const label = this.predefinedLabels[i]; - BoardsStore.addList({ + gl.issueBoards.BoardsStore.addList({ title: label.title, position: i, list_type: 'label', @@ -36,7 +36,7 @@ for (let i = 0, dataLength = data.length; i < dataLength; i++) { const listObj = data[i], - list = BoardsStore.findList('title', listObj.title); + list = gl.issueBoards.BoardsStore.findList('title', listObj.title); list.id = listObj.id; list.label.id = listObj.label.id; @@ -45,7 +45,7 @@ }); }, clearBlankState () { - BoardsStore.removeBlankState(); + gl.issueBoards.BoardsStore.removeBlankState(); } } }); diff --git a/app/assets/javascripts/boards/components/board_card.js.es6 b/app/assets/javascripts/boards/components/board_card.js.es6 index 411415e46a4235c484ffd8e053fe87d3796d82e3..481116d21d27721a10a478614513bcd23c53fd0c 100644 --- a/app/assets/javascripts/boards/components/board_card.js.es6 +++ b/app/assets/javascripts/boards/components/board_card.js.es6 @@ -9,19 +9,19 @@ methods: { filterByLabel (label, e) { let labelToggleText = label.title; - const labelIndex = BoardsStore.state.filters['label_name'].indexOf(label.title); + const labelIndex = gl.issueBoards.BoardsStore.state.filters['label_name'].indexOf(label.title); $(e.target).tooltip('hide'); if (labelIndex === -1) { - BoardsStore.state.filters['label_name'].push(label.title); + gl.issueBoards.BoardsStore.state.filters['label_name'].push(label.title); $('.labels-filter').prepend(`<input type="hidden" name="label_name[]" value="${label.title}" />`); } else { - BoardsStore.state.filters['label_name'].splice(labelIndex, 1); - labelToggleText = BoardsStore.state.filters['label_name'][0]; + gl.issueBoards.BoardsStore.state.filters['label_name'].splice(labelIndex, 1); + labelToggleText = gl.issueBoards.BoardsStore.state.filters['label_name'][0]; $(`.labels-filter input[name="label_name[]"][value="${label.title}"]`).remove(); } - const selectedLabels = BoardsStore.state.filters['label_name']; + const selectedLabels = gl.issueBoards.BoardsStore.state.filters['label_name']; if (selectedLabels.length === 0) { labelToggleText = 'Label'; } else if (selectedLabels.length > 1) { @@ -30,7 +30,7 @@ $('.labels-filter .dropdown-toggle-text').text(labelToggleText); - BoardsStore.updateFiltersUrl(); + gl.issueBoards.BoardsStore.updateFiltersUrl(); } } }); diff --git a/app/assets/javascripts/boards/components/board_list.js.es6 b/app/assets/javascripts/boards/components/board_list.js.es6 index df5fc51339a7327e44450661ed39c1d5fc1f77ad..f6675107afeeb70e0847c931a9f87caa6f32b142 100644 --- a/app/assets/javascripts/boards/components/board_list.js.es6 +++ b/app/assets/javascripts/boards/components/board_list.js.es6 @@ -10,7 +10,7 @@ data () { return { scrollOffset: 250, - filters: BoardsStore.state.filters + filters: gl.issueBoards.BoardsStore.state.filters }; }, watch: { @@ -57,7 +57,7 @@ // Remove the new dom element & let vue add the element card.parentNode.removeChild(card); - BoardsStore.moveCardToList(fromListId, toListId, issueId); + gl.issueBoards.BoardsStore.moveCardToList(fromListId, toListId, issueId); } }); diff --git a/app/assets/javascripts/boards/components/new_list_dropdown.js.es6 b/app/assets/javascripts/boards/components/new_list_dropdown.js.es6 index e02591e4bf6cfb32283c069c700a12f344bdaf9b..4d69f8cdabc410d91028948b2a7c1b32297e3ae3 100644 --- a/app/assets/javascripts/boards/components/new_list_dropdown.js.es6 +++ b/app/assets/javascripts/boards/components/new_list_dropdown.js.es6 @@ -13,7 +13,7 @@ $(() => { }); }, renderRow (label) { - const active = BoardsStore.findList('title', label.title), + const active = gl.issueBoards.BoardsStore.findList('title', label.title), $li = $('<li />',), $a = $('<a />', { class: (active ? `is-active js-board-list-${active.id}` : ''), @@ -35,10 +35,10 @@ $(() => { clicked (label, $el, e) { e.preventDefault(); - if (!BoardsStore.findList('title', label.title)) { - BoardsStore.new({ + if (!gl.issueBoards.BoardsStore.findList('title', label.title)) { + gl.issueBoards.BoardsStore.new({ title: label.title, - position: BoardsStore.state.lists.length - 1, + position: gl.issueBoards.BoardsStore.state.lists.length - 1, list_type: 'label', label: { id: label.id, diff --git a/app/assets/javascripts/boards/models/issue.js.es6 b/app/assets/javascripts/boards/models/issue.js.es6 index c2aff84a4d9dfcf6fb02df500e4cbc6c3b8e0dbd..9d918b1d79a396c2f37f715dec6e623f5830321b 100644 --- a/app/assets/javascripts/boards/models/issue.js.es6 +++ b/app/assets/javascripts/boards/models/issue.js.es6 @@ -52,7 +52,7 @@ class ListIssue { } getLists () { - return BoardsStore.state.lists.filter((list) => { + return gl.issueBoards.BoardsStore.state.lists.filter((list) => { return list.findIssue(this.id); }); } diff --git a/app/assets/javascripts/boards/models/list.js.es6 b/app/assets/javascripts/boards/models/list.js.es6 index 928663971e62eaaa673ef292566106b47f8f7b11..1183c23f2d7307112b08aecc82605cbbebdfe67f 100644 --- a/app/assets/javascripts/boards/models/list.js.es6 +++ b/app/assets/javascripts/boards/models/list.js.es6 @@ -4,7 +4,7 @@ class List { this.position = obj.position; this.title = obj.title; this.type = obj.list_type; - this.filters = BoardsStore.state.filters; + this.filters = gl.issueBoards.BoardsStore.state.filters; this.page = 1; this.loading = true; this.loadingMore = false; @@ -34,10 +34,10 @@ class List { destroy () { if (this.type !== 'blank') { - BoardsStore.state.lists = BoardsStore.state.lists.filter((list) => { + gl.issueBoards.BoardsStore.state.lists = gl.issueBoards.BoardsStore.state.lists.filter((list) => { return list.id !== this.id; }); - BoardsStore.updateNewListDropdown(this.id); + gl.issueBoards.BoardsStore.updateNewListDropdown(this.id); gl.boardService.destroyList(this.id); } diff --git a/app/assets/javascripts/boards/stores/boards_store.js.es6 b/app/assets/javascripts/boards/stores/boards_store.js.es6 index cddedb35509bdd31d01a8e55a22208e14271c146..675e37d1375ee246e5c3fd6ed57199254e871a1c 100644 --- a/app/assets/javascripts/boards/stores/boards_store.js.es6 +++ b/app/assets/javascripts/boards/stores/boards_store.js.es6 @@ -1,5 +1,8 @@ -((w) => { - w.BoardsStore = { +(() => { + window.gl = window.gl || {}; + window.gl.issueBoards = window.gl.issueBoards || {}; + + gl.issueBoards.BoardsStore = { disabled: false, state: {}, create () { @@ -126,4 +129,4 @@ history.pushState(null, null, `?${$.param(this.state.filters)}`); } }; -}(window)); +})(); diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js index 31762d72bc0619ec23a8c8ba98817f25d60721c7..0526430989f277f87cb8e01437a54f387b961ee1 100644 --- a/app/assets/javascripts/labels_select.js +++ b/app/assets/javascripts/labels_select.js @@ -246,18 +246,18 @@ isMRIndex = page === 'projects:merge_requests:index'; if (page === 'projects:boards:show') { if (label.isAny) { - BoardsStore.state.filters['label_name'] = []; + gl.issueBoards.BoardsStore.state.filters['label_name'] = []; } else if (label.title) { - BoardsStore.state.filters['label_name'].push(label.title); + gl.issueBoards.BoardsStore.state.filters['label_name'].push(label.title); } else { - var filters = BoardsStore.state.filters['label_name']; + var filters = gl.issueBoards.BoardsStore.state.filters['label_name']; filters = filters.filter(function (label) { return label !== $el.text().trim(); }); - BoardsStore.state.filters['label_name'] = filters; + gl.issueBoards.BoardsStore.state.filters['label_name'] = filters; } - BoardsStore.updateFiltersUrl(); + gl.issueBoards.BoardsStore.updateFiltersUrl(); e.preventDefault(); return; } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) { diff --git a/app/assets/javascripts/milestone_select.js b/app/assets/javascripts/milestone_select.js index 9093098359eddc8b02c8af9a766deae0572dde02..e897ebdf6304bcdc337fae6d2a60c4d6f3ff779d 100644 --- a/app/assets/javascripts/milestone_select.js +++ b/app/assets/javascripts/milestone_select.js @@ -103,8 +103,8 @@ return; } if (page === 'projects:boards:show') { - BoardsStore.state.filters[$dropdown.data('field-name')] = selected.name; - BoardsStore.updateFiltersUrl(); + gl.issueBoards.BoardsStore.state.filters[$dropdown.data('field-name')] = selected.name; + gl.issueBoards.BoardsStore.updateFiltersUrl(); e.preventDefault(); } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) { if (selected.name != null) { diff --git a/app/assets/javascripts/users_select.js b/app/assets/javascripts/users_select.js index aa157749443aab9249073826e577b84317386157..bad82868ab045dbdcd18e83ee6610336757c917a 100644 --- a/app/assets/javascripts/users_select.js +++ b/app/assets/javascripts/users_select.js @@ -151,8 +151,8 @@ } if (page === 'projects:boards:show') { selectedId = user.id; - BoardsStore.state.filters[$dropdown.data('field-name')] = user.id; - BoardsStore.updateFiltersUrl(); + gl.issueBoards.BoardsStore.state.filters[$dropdown.data('field-name')] = user.id; + gl.issueBoards.BoardsStore.updateFiltersUrl(); e.preventDefault(); } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) { selectedId = user.id; diff --git a/spec/javascripts/boards/boards_store_spec.js.es6 b/spec/javascripts/boards/boards_store_spec.js.es6 index c185fd71c0d74d139768d5ee40bf736cb3c4b0e7..e1b1abe011002facc9b2e63a3b12870665ab9e49 100644 --- a/spec/javascripts/boards/boards_store_spec.js.es6 +++ b/spec/javascripts/boards/boards_store_spec.js.es6 @@ -15,54 +15,54 @@ (() => { beforeEach(() => { gl.boardService = new BoardService('/test/issue-boards/board'); - BoardsStore.create(); + gl.issueBoards.BoardsStore.create(); $.cookie('issue_board_welcome_hidden', 'false'); }); describe('Store', () => { it('starts with a blank state', () => { - expect(BoardsStore.state.lists.length).toBe(0); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); }); describe('lists', () => { it('creates new list without persisting to DB', () => { - BoardsStore.addList(listObj); + gl.issueBoards.BoardsStore.addList(listObj); - expect(BoardsStore.state.lists.length).toBe(1); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); }); it('finds list by ID', () => { - BoardsStore.addList(listObj); - const list = BoardsStore.findList('id', 1); + gl.issueBoards.BoardsStore.addList(listObj); + const list = gl.issueBoards.BoardsStore.findList('id', 1); expect(list.id).toBe(1); }); it('finds list by type', () => { - BoardsStore.addList(listObj); - const list = BoardsStore.findList('type', 'label'); + gl.issueBoards.BoardsStore.addList(listObj); + const list = gl.issueBoards.BoardsStore.findList('type', 'label'); expect(list).toBeDefined(); }); it('finds list limited by type', () => { - BoardsStore.addList({ + gl.issueBoards.BoardsStore.addList({ id: 1, position: 0, title: 'Test', list_type: 'backlog' }); - const list = BoardsStore.findList('id', 1, 'backlog'); + const list = gl.issueBoards.BoardsStore.findList('id', 1, 'backlog'); expect(list).toBeDefined(); }); it('gets issue when new list added', (done) => { - BoardsStore.addList(listObj); - const list = BoardsStore.findList('id', 1); + gl.issueBoards.BoardsStore.addList(listObj); + const list = gl.issueBoards.BoardsStore.findList('id', 1); - expect(BoardsStore.state.lists.length).toBe(1); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); setTimeout(() => { expect(list.issues.length).toBe(1); @@ -72,7 +72,7 @@ }); it('persists new list', (done) => { - BoardsStore.new({ + gl.issueBoards.BoardsStore.new({ title: 'Test', type: 'label', label: { @@ -82,10 +82,10 @@ description: 'testing;' } }); - expect(BoardsStore.state.lists.length).toBe(1); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); setTimeout(() => { - const list = BoardsStore.findList('id', 1); + const list = gl.issueBoards.BoardsStore.findList('id', 1); expect(list).toBeDefined(); expect(list.id).toBe(1); expect(list.position).toBe(0); @@ -94,68 +94,68 @@ }); it('check for blank state adding', () => { - expect(BoardsStore.shouldAddBlankState()).toBe(true); + expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true); }); it('check for blank state not adding', () => { - BoardsStore.addList(listObj); - expect(BoardsStore.shouldAddBlankState()).toBe(false); + gl.issueBoards.BoardsStore.addList(listObj); + expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(false); }); it('check for blank state adding when backlog & done list exist', () => { - BoardsStore.addList({ + gl.issueBoards.BoardsStore.addList({ list_type: 'backlog' }); - BoardsStore.addList({ + gl.issueBoards.BoardsStore.addList({ list_type: 'done' }); - expect(BoardsStore.shouldAddBlankState()).toBe(true); + expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true); }); it('adds the blank state', () => { - BoardsStore.addBlankState(); + gl.issueBoards.BoardsStore.addBlankState(); - const list = BoardsStore.findList('type', 'blank', 'blank'); + const list = gl.issueBoards.BoardsStore.findList('type', 'blank', 'blank'); expect(list).toBeDefined(); }); it('removes list from state', () => { - BoardsStore.addList(listObj); + gl.issueBoards.BoardsStore.addList(listObj); - expect(BoardsStore.state.lists.length).toBe(1); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - BoardsStore.removeList(1); + gl.issueBoards.BoardsStore.removeList(1); - expect(BoardsStore.state.lists.length).toBe(0); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); }); it('moves the position of lists', () => { - BoardsStore.addList(listObj); - BoardsStore.addList(listObjDuplicate); + gl.issueBoards.BoardsStore.addList(listObj); + gl.issueBoards.BoardsStore.addList(listObjDuplicate); - expect(BoardsStore.state.lists.length).toBe(2); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); - BoardsStore.moveList(0, 1); + gl.issueBoards.BoardsStore.moveList(0, 1); - const list = BoardsStore.findList('id', 1); + const list = gl.issueBoards.BoardsStore.findList('id', 1); expect(list.position).toBe(1); }); it('moves an issue from one list to another', (done) => { - BoardsStore.addList(listObj); - BoardsStore.addList(listObjDuplicate); + gl.issueBoards.BoardsStore.addList(listObj); + gl.issueBoards.BoardsStore.addList(listObjDuplicate); - expect(BoardsStore.state.lists.length).toBe(2); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); - const list = BoardsStore.findList('id', 1), - listTwo = BoardsStore.findList('id', 2); + const list = gl.issueBoards.BoardsStore.findList('id', 1), + listTwo = gl.issueBoards.BoardsStore.findList('id', 2); setTimeout(() => { expect(list.issues.length).toBe(1); expect(listTwo.issues.length).toBe(1); - BoardsStore.moveCardToList(1, 2, 1); + gl.issueBoards.BoardsStore.moveCardToList(1, 2, 1); expect(list.issues.length).toBe(0); expect(listTwo.issues.length).toBe(1); diff --git a/spec/javascripts/boards/issue_spec.js.es6 b/spec/javascripts/boards/issue_spec.js.es6 index b53be896872af5c13f365d9dc3b05445f821adc3..3569d1b98bd12f0b3ab042d8b82b281113044d82 100644 --- a/spec/javascripts/boards/issue_spec.js.es6 +++ b/spec/javascripts/boards/issue_spec.js.es6 @@ -17,7 +17,7 @@ describe('Issue model', () => { beforeEach(() => { gl.boardService = new BoardService('/test/issue-boards/board'); - BoardsStore.create(); + gl.issueBoards.BoardsStore.create(); issue = new ListIssue({ title: 'Testing', diff --git a/spec/javascripts/boards/list_spec.js.es6 b/spec/javascripts/boards/list_spec.js.es6 index 3773fd22c26d9b657f87a47e3c32bd8d8d2a80c2..c206b794442f913c71a96290381e839cd0730ea8 100644 --- a/spec/javascripts/boards/list_spec.js.es6 +++ b/spec/javascripts/boards/list_spec.js.es6 @@ -17,7 +17,7 @@ describe('List model', () => { beforeEach(() => { gl.boardService = new BoardService('/test/issue-boards/board'); - BoardsStore.create(); + gl.issueBoards.BoardsStore.create(); list = new List(listObj); }); @@ -49,13 +49,13 @@ describe('List model', () => { }); it('destroys the list', (done) => { - BoardsStore.addList(listObj); - list = BoardsStore.findList('id', 1); - expect(BoardsStore.state.lists.length).toBe(1); + gl.issueBoards.BoardsStore.addList(listObj); + list = gl.issueBoards.BoardsStore.findList('id', 1); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); list.destroy(); setTimeout(() => { - expect(BoardsStore.state.lists.length).toBe(0); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); done(); }, 0); });