diff options
author | Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home> | 2016-02-24 20:06:47 -0500 |
---|---|---|
committer | Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home> | 2016-02-24 20:06:47 -0500 |
commit | 6e22ce275c6e1693ce3e7249e6c3adb3bb11654a (patch) | |
tree | 360ead1f86739059c017d4f83818cf8be53e4124 | |
parent | af6c7cfd069a81aca9a0f07fe8b98f27956c9dc6 (diff) | |
download | gitlab-ce-6e22ce275c6e1693ce3e7249e6c3adb3bb11654a.tar.gz |
Add serializers to create custom JSON data.
-rw-r--r-- | Gemfile | 1 | ||||
-rw-r--r-- | Gemfile.lock | 3 | ||||
-rw-r--r-- | app/assets/javascripts/Todos.js.coffee | 37 | ||||
-rw-r--r-- | app/controllers/dashboard/todos_controller.rb | 6 | ||||
-rw-r--r-- | app/helpers/page_layout_helper.rb | 2 | ||||
-rw-r--r-- | app/serializers/project_serializer.rb | 5 | ||||
-rw-r--r-- | app/serializers/todo_serializer.rb | 5 | ||||
-rw-r--r-- | app/views/dashboard/todos/_todo.html.haml | 2 | ||||
-rw-r--r-- | app/views/layouts/_page.html.haml | 2 | ||||
-rw-r--r-- | app/views/layouts/header/_default.html.haml | 2 |
10 files changed, 60 insertions, 5 deletions
@@ -67,6 +67,7 @@ gem "github-linguist", "~> 4.7.0", require: "linguist" gem 'grape', '~> 0.13.0' gem 'grape-entity', '~> 0.4.2' gem 'rack-cors', '~> 0.4.0', require: 'rack/cors' +gem 'active_model_serializers', '~> 0.9.4' # Pagination gem "kaminari", "~> 0.16.3" diff --git a/Gemfile.lock b/Gemfile.lock index e2e290b3dc2..14d727b95e3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -23,6 +23,8 @@ GEM erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) + active_model_serializers (0.9.4) + activemodel (>= 3.2) activejob (4.2.5.1) activesupport (= 4.2.5.1) globalid (>= 0.3.0) @@ -876,6 +878,7 @@ PLATFORMS DEPENDENCIES RedCloth (~> 4.2.9) ace-rails-ap (~> 2.0.1) + active_model_serializers (~> 0.9.4) activerecord-deprecated_finders (~> 1.0.3) activerecord-session_store (~> 0.1.0) acts-as-taggable-on (~> 3.4) diff --git a/app/assets/javascripts/Todos.js.coffee b/app/assets/javascripts/Todos.js.coffee index 5c75fa5e43a..6c5c323545b 100644 --- a/app/assets/javascripts/Todos.js.coffee +++ b/app/assets/javascripts/Todos.js.coffee @@ -1,5 +1,38 @@ class @Todos constructor: -> + @service = new TodosService() + @service.getTodos() new Vue( - - )
\ No newline at end of file + el: '#todos' + data:{} + methods: + doneClicked: (e) -> + e.preventDefault() + e.stopImmediatePropagation() + console.log('done clicked'); + ) + +class @TodosService + constructor: -> + console.log('todos service') + + deleteTodo: () -> + $.ajax + type: 'POST' + url: doneURL + dataType: 'json' + data: '_method': 'delete' + error: (data, textStatus, jqXHR) -> + new Flash('Unable to update your todos.', 'alert') + _this.clearDone($this.closest('li')) + return + + success: (data, textStatus, jqXHR) -> + new Flash(data.notice, 'success') + _this.clearDone($this.closest('li')) + return + + getTodos: () -> + $.getJSON '/dashboard/todos', (data) -> + console.log 'data', data + return
\ No newline at end of file diff --git a/app/controllers/dashboard/todos_controller.rb b/app/controllers/dashboard/todos_controller.rb index 43cf8fa71af..7e67819116b 100644 --- a/app/controllers/dashboard/todos_controller.rb +++ b/app/controllers/dashboard/todos_controller.rb @@ -3,6 +3,12 @@ class Dashboard::TodosController < Dashboard::ApplicationController def index @todos = @todos.page(params[:page]).per(PER_PAGE) + respond_to do |format| + format.html + format.json do + render json: @todos.group_by(&:project) + end + end end def destroy diff --git a/app/helpers/page_layout_helper.rb b/app/helpers/page_layout_helper.rb index 54083b64d9b..decde78406d 100644 --- a/app/helpers/page_layout_helper.rb +++ b/app/helpers/page_layout_helper.rb @@ -37,6 +37,8 @@ module PageLayoutHelper def container_id(title=nil) if title @container_id = title + else + @container_id end end diff --git a/app/serializers/project_serializer.rb b/app/serializers/project_serializer.rb new file mode 100644 index 00000000000..5c0e53f41b6 --- /dev/null +++ b/app/serializers/project_serializer.rb @@ -0,0 +1,5 @@ +class ProjectSerializer < ActiveModel::Serializer + attributes :id, :name + + has_many :todos +end
\ No newline at end of file diff --git a/app/serializers/todo_serializer.rb b/app/serializers/todo_serializer.rb new file mode 100644 index 00000000000..a9f97e8a009 --- /dev/null +++ b/app/serializers/todo_serializer.rb @@ -0,0 +1,5 @@ +class TodoSerializer < ActiveModel::Serializer + attributes :id, :project, :note + + has_one :project +end
\ No newline at end of file diff --git a/app/views/dashboard/todos/_todo.html.haml b/app/views/dashboard/todos/_todo.html.haml index 6975f6ed0db..3f7025f938e 100644 --- a/app/views/dashboard/todos/_todo.html.haml +++ b/app/views/dashboard/todos/_todo.html.haml @@ -13,7 +13,7 @@ - if todo.pending? .todo-actions.pull-right - = link_to 'Done', [:dashboard, todo], method: :delete, class: 'btn' + = link_to 'Done', [:dashboard, todo], method: :delete, class: 'btn', '@click' => 'doneClicked($event)' .todo-body .todo-note diff --git a/app/views/layouts/_page.html.haml b/app/views/layouts/_page.html.haml index e53d5b07801..0c209a8aeba 100644 --- a/app/views/layouts/_page.html.haml +++ b/app/views/layouts/_page.html.haml @@ -1,4 +1,4 @@ -.page-with-sidebar{ class: "#{page_sidebar_class} #{page_gutter_class}" } +.page-with-sidebar{ class: "#{page_sidebar_class} #{page_gutter_class}", id: container_id } = render "layouts/broadcast" .sidebar-wrapper.nicescroll{ class: nav_sidebar_class } .header-logo diff --git a/app/views/layouts/header/_default.html.haml b/app/views/layouts/header/_default.html.haml index 580ecbb2599..1520d004b65 100644 --- a/app/views/layouts/header/_default.html.haml +++ b/app/views/layouts/header/_default.html.haml @@ -1,5 +1,5 @@ %header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class } - %div{ class: "container-fluid #{container_id}" } + %div.container-fluid .header-content %button.navbar-toggle{type: 'button'} %span.sr-only Toggle navigation |