summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-08-05 14:00:06 +0100
committerPhil Hughes <me@iamphill.com>2016-08-17 17:12:47 +0100
commit0fa57599a5a6fdd25711276f9fab72ca934502ab (patch)
tree160fd870018437cadd7180c946df63bc189b768b
parent0b351d5538e47d233a273e2729691fccc006a09c (diff)
downloadgitlab-ce-0fa57599a5a6fdd25711276f9fab72ca934502ab.tar.gz
Hides the welcome board forever after it being hidden by the user
-rw-r--r--app/assets/javascripts/boards/boards_bundle.js.es614
-rw-r--r--app/assets/javascripts/boards/components/board_blank_state.js.es64
-rw-r--r--app/assets/javascripts/boards/models/list.js.es612
-rw-r--r--app/assets/javascripts/boards/stores/boards_store.js.es625
-rw-r--r--app/views/projects/boards/components/_blank_state.html.haml2
-rw-r--r--app/views/projects/boards/components/_board.html.haml7
6 files changed, 42 insertions, 22 deletions
diff --git a/app/assets/javascripts/boards/boards_bundle.js.es6 b/app/assets/javascripts/boards/boards_bundle.js.es6
index 9b6331d54d8..bae7fa153d7 100644
--- a/app/assets/javascripts/boards/boards_bundle.js.es6
+++ b/app/assets/javascripts/boards/boards_bundle.js.es6
@@ -7,15 +7,23 @@
//= require_tree ./components
$(function () {
- window.service = new BoardService($('#board-app').data('endpoint'));
+ if (!window.gl) {
+ window.gl = {};
+ }
+ gl.boardService = new BoardService($('#board-app').data('endpoint'));
- new Vue({
+ if (gl.IssueBoardsApp) {
+ gl.IssueBoardsApp.$destroy(true);
+ BoardsStore.reset();
+ }
+
+ gl.IssueBoardsApp = new Vue({
el: '#board-app',
data: {
state: BoardsStore.state
},
ready: function () {
- service.all()
+ gl.boardService.all()
.then((resp) => {
const boards = resp.json();
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 6208a8e039a..61cf3282c02 100644
--- a/app/assets/javascripts/boards/components/board_blank_state.js.es6
+++ b/app/assets/javascripts/boards/components/board_blank_state.js.es6
@@ -2,10 +2,10 @@
const BoardBlankState = Vue.extend({
methods: {
addDefaultLists: function () {
-
+
},
clearBlankState: function () {
- BoardsStore.removeList('blank');
+ BoardsStore.removeBlankState();
}
}
});
diff --git a/app/assets/javascripts/boards/models/list.js.es6 b/app/assets/javascripts/boards/models/list.js.es6
index 6482eda828c..0e62987dbb8 100644
--- a/app/assets/javascripts/boards/models/list.js.es6
+++ b/app/assets/javascripts/boards/models/list.js.es6
@@ -12,7 +12,7 @@ class List {
if (this.type !== 'blank') {
this.loading = true;
- service.getIssuesForList(this.id)
+ gl.boardService.getIssuesForList(this.id)
.then((resp) => {
const data = resp.json();
this.loading = false;
@@ -25,7 +25,7 @@ class List {
}
save () {
- service.createList(this.label.id)
+ gl.boardService.createList(this.label.id)
.then((resp) => {
const data = resp.json();
@@ -36,11 +36,13 @@ class List {
}
destroy () {
- service.destroyList(this.id);
+ if (this.type !== 'blank') {
+ gl.boardService.destroyList(this.id);
+ }
}
update () {
- service.updateList(this);
+ gl.boardService.updateList(this);
}
canSearch () {
@@ -52,7 +54,7 @@ class List {
issue.addLabel(this.label);
- service.moveIssue(issue.id, listFrom.id, this.id);
+ gl.boardService.moveIssue(issue.id, listFrom.id, this.id);
}
findIssue (id) {
diff --git a/app/assets/javascripts/boards/stores/boards_store.js.es6 b/app/assets/javascripts/boards/stores/boards_store.js.es6
index 9612d82788a..4d430f2a77b 100644
--- a/app/assets/javascripts/boards/stores/boards_store.js.es6
+++ b/app/assets/javascripts/boards/stores/boards_store.js.es6
@@ -9,6 +9,15 @@
label: []
}
},
+ reset: function () {
+ this.state.lists = [];
+ this.state.filters = {
+ author: {},
+ assignee: {},
+ milestone: {},
+ label: []
+ };
+ },
new: function (board, persist = true) {
const doneList = this.getDoneList(),
list = new List(board);
@@ -35,6 +44,8 @@
return addBlankState;
},
addBlankState: function () {
+ if ($.cookie('issue_board_welcome_hidden') === 'true') return;
+
const doneList = this.getDoneList(),
addBlankState = this.shouldAddBlankState();
@@ -49,24 +60,22 @@
},
removeBlankState: function () {
this.removeList('blank');
+
+ $.cookie('issue_board_welcome_hidden', 'true', {
+ path: '/',
+ expires: 365 * 10
+ });
},
getDoneList: function () {
return this.findList('type', 'done');
},
removeList: function (id) {
const list = this.findList('id', id);
-
- if (id !== 'blank') {
- list.destroy();
- }
+ list.destroy();
this.state.lists = _.reject(this.state.lists, (list) => {
return list.id === id;
});
-
- if (id !== 'blank') {
- this.addBlankState();
- }
},
moveList: function (oldIndex, newIndex) {
const listFrom = this.findList('position', oldIndex),
diff --git a/app/views/projects/boards/components/_blank_state.html.haml b/app/views/projects/boards/components/_blank_state.html.haml
index 6e25aa966e1..1379a295912 100644
--- a/app/views/projects/boards/components/_blank_state.html.haml
+++ b/app/views/projects/boards/components/_blank_state.html.haml
@@ -11,4 +11,4 @@
%button.btn.btn-create.btn-inverted.btn-block{ type: "button", "@click" => "addDefaultLists" }
Add default lists
%button.btn.btn-default.btn-block{ type: "button", "@click" => "clearBlankState" }
- Nevermind, i'll use my own
+ Nevermind, I'll use my own
diff --git a/app/views/projects/boards/components/_board.html.haml b/app/views/projects/boards/components/_board.html.haml
index 31b2305edca..318050d5850 100644
--- a/app/views/projects/boards/components/_board.html.haml
+++ b/app/views/projects/boards/components/_board.html.haml
@@ -4,13 +4,13 @@
%header.board-inner-container.board-header{ ":class" => "{ 'has-border': board.label }", ":style" => "{ borderTopColor: board.label.color }" }
%h3.board-title
{{ board.title }}
- %span.pull-right
+ %span.pull-right{ "v-if" => "board.type !== 'blank'" }
{{ board.issues.length }}
%board-delete{ "inline-template" => true, "v-if" => "!isPreset", ":board-id" => "board.id" }
%button.board-delete.has-tooltip.pull-right{ type: "button", title: "Delete board", "aria-label" => "Delete board", data: { placement: "bottom" }, "@click" => "deleteBoard" }
= icon("trash")
.board-inner-container.board-search-container{ "v-if" => "board.canSearch()" }
- %input.form-control{ type: "text", placeholder: "Search issues", "v-model" => "query" }
+ %input.form-control{ type: "text", placeholder: "Search issues", "v-model" => "query", "debounce" => "250" }
= icon("search", class: "board-search-icon", "v-show" => "!query")
%button.board-search-clear-btn{ type: "button", role: "button", "aria-label" => "Clear search", "@click" => "clearSearch", "v-show" => "query" }
= icon("times", class: "board-search-clear")
@@ -29,4 +29,5 @@
"v-show" => "!loading",
":data-board" => "boardId" }
= render "projects/boards/components/card"
- = render "projects/boards/components/blank_state"
+ - if current_user
+ = render "projects/boards/components/blank_state"