From 7c59f45d10a791e790f55821ca501d9cdeddbabf Mon Sep 17 00:00:00 2001
From: Phil Hughes <me@iamphill.com>
Date: Tue, 4 Oct 2016 15:27:02 +0100
Subject: [PATCH] Added markup for sidebar

---
 .../javascripts/boards/boards_bundle.js.es6   |  4 +-
 .../boards/components/board_card.js.es6       |  4 ++
 .../boards/components/board_sidebar.js.es6    | 25 ++++++++++++
 .../boards/stores/boards_store.js.es6         |  4 +-
 .../boards/components/_card.html.haml         |  3 +-
 .../boards/components/_sidebar.html.haml      | 40 +++++++++++++++++++
 app/views/projects/boards/show.html.haml      | 10 +++--
 7 files changed, 83 insertions(+), 7 deletions(-)
 create mode 100644 app/assets/javascripts/boards/components/board_sidebar.js.es6
 create mode 100644 app/views/projects/boards/components/_sidebar.html.haml

diff --git a/app/assets/javascripts/boards/boards_bundle.js.es6 b/app/assets/javascripts/boards/boards_bundle.js.es6
index 91c12570e09..b3a2386bbf3 100644
--- a/app/assets/javascripts/boards/boards_bundle.js.es6
+++ b/app/assets/javascripts/boards/boards_bundle.js.es6
@@ -6,6 +6,7 @@
 //= require_tree ./services
 //= require_tree ./mixins
 //= require ./components/board
+//= require ./components/board_sidebar
 //= require ./components/new_list_dropdown
 //= require ./vue_resource_interceptor
 
@@ -22,7 +23,8 @@ $(() => {
   gl.IssueBoardsApp = new Vue({
     el: $boardApp,
     components: {
-      'board': gl.issueBoards.Board
+      'board': gl.issueBoards.Board,
+      'board-sidebar': gl.issueBoards.BoardSidebar
     },
     data: {
       state: Store.state,
diff --git a/app/assets/javascripts/boards/components/board_card.js.es6 b/app/assets/javascripts/boards/components/board_card.js.es6
index 4a7cfeaeab2..1bd0b19b6da 100644
--- a/app/assets/javascripts/boards/components/board_card.js.es6
+++ b/app/assets/javascripts/boards/components/board_card.js.es6
@@ -37,6 +37,10 @@
         $('.labels-filter .dropdown-toggle-text').text(labelToggleText);
 
         Store.updateFiltersUrl();
+      },
+      showIssue () {
+        Store.state.detailIssue = this.issue;
+        console.log(Store.state.detailIssue);
       }
     }
   });
diff --git a/app/assets/javascripts/boards/components/board_sidebar.js.es6 b/app/assets/javascripts/boards/components/board_sidebar.js.es6
new file mode 100644
index 00000000000..e26c8209b69
--- /dev/null
+++ b/app/assets/javascripts/boards/components/board_sidebar.js.es6
@@ -0,0 +1,25 @@
+(() => {
+  const Store = gl.issueBoards.BoardsStore;
+
+  window.gl = window.gl || {};
+  window.gl.issueBoards = window.gl.issueBoards || {};
+
+  gl.issueBoards.BoardSidebar = Vue.extend({
+    data() {
+      return {
+        issue: Store.state.detailIssue
+      };
+    },
+    ready: function () {
+      console.log(this.issue);
+    },
+    watch: {
+      issue: {
+        handler () {
+          console.log('a');
+        },
+        deep: true
+      }
+    }
+  });
+})();
diff --git a/app/assets/javascripts/boards/stores/boards_store.js.es6 b/app/assets/javascripts/boards/stores/boards_store.js.es6
index bd07ee0c161..126e3f49fc8 100644
--- a/app/assets/javascripts/boards/stores/boards_store.js.es6
+++ b/app/assets/javascripts/boards/stores/boards_store.js.es6
@@ -4,7 +4,9 @@
 
   gl.issueBoards.BoardsStore = {
     disabled: false,
-    state: {},
+    state: {
+      detailIssue: {}
+    },
     moving: {
       issue: {},
       list: {}
diff --git a/app/views/projects/boards/components/_card.html.haml b/app/views/projects/boards/components/_card.html.haml
index d8f16022407..71f64d7827c 100644
--- a/app/views/projects/boards/components/_card.html.haml
+++ b/app/views/projects/boards/components/_card.html.haml
@@ -8,7 +8,8 @@
   ":disabled" => "disabled",
   "track-by" => "id" }
   %li.card{ ":class" => "{ 'user-can-drag': !disabled && issue.id, 'is-disabled': disabled || !issue.id }",
-    ":index" => "index" }
+    ":index" => "index",
+    "@click" => "showIssue" }
     %h4.card-title
       = icon("eye-slash", class: "confidential-icon", "v-if" => "issue.confidential")
       %a{ ":href" => "issueLinkBase + '/' + issue.id",
diff --git a/app/views/projects/boards/components/_sidebar.html.haml b/app/views/projects/boards/components/_sidebar.html.haml
new file mode 100644
index 00000000000..6cec833d6dc
--- /dev/null
+++ b/app/views/projects/boards/components/_sidebar.html.haml
@@ -0,0 +1,40 @@
+%board-sidebar{ "inline-template" => true }
+  %aside.right-sidebar.right-sidebar-expanded{ "v-if" => "showSidebar" }
+    .issuable-sidebar
+      .block.issuable-sidebar-header
+        %span.issuable-header-text.hide-collapsed.pull-left
+          %strong Test
+          %br/
+          %span #13
+        %a.gutter-toggle.pull-right.js-sidebar-toggle{ role: "button", href: "#", aria: { label: "Toggle sidebar" } }
+          = icon("times")
+      .block.assignee
+        .title.hide-collapsed
+          Assignee
+          = icon("spinner spin", class: "block-loading")
+          = link_to "Edit", "#", class: "edit-link pull-right"
+        .value.hide-collapsed
+          %span.assign-yourself.no-value
+            No assignee
+            \-
+            %a.js-assign-yourself{ href: "#" }
+              assign yourself
+      .block.milestone
+        .title.hide-collapsed
+          Milestone
+          = icon("spinner spin", class: "block-loading")
+        .value.hide-collapsed
+          %span.no-value
+            None
+      .block.due_date
+        .title.hide-collapsed
+          Due date
+          = icon("spinner spin", class: "block-loading")
+        .value.hide-collapsed
+          %span.no-value No due date
+      .block.labels
+        .title.hide-collapsed
+          Labels
+          = icon("spinner spin", class: "block-loading")
+        .value.issuable-show-labels.hide-collapsed
+          %span.no-value None
diff --git a/app/views/projects/boards/show.html.haml b/app/views/projects/boards/show.html.haml
index edbbd3f3d2a..10b495363a6 100644
--- a/app/views/projects/boards/show.html.haml
+++ b/app/views/projects/boards/show.html.haml
@@ -10,10 +10,12 @@
 
 = render 'shared/issuable/filter', type: :boards
 
-.boards-list#board-app{ "v-cloak" => true,
+#board-app{ "v-cloak" => true,
   "data-endpoint" => "#{namespace_project_board_path(@project.namespace, @project)}",
   "data-disabled" => "#{!can?(current_user, :admin_list, @project)}",
   "data-issue-link-base" => "#{namespace_project_issues_path(@project.namespace, @project)}" }
-  .boards-app-loading.text-center{ "v-if" => "loading" }
-    = icon("spinner spin")
-  = render "projects/boards/components/board"
+  .boards-list
+    .boards-app-loading.text-center{ "v-if" => "loading" }
+      = icon("spinner spin")
+    = render "projects/boards/components/board"
+  = render "projects/boards/components/sidebar"
-- 
GitLab