diff --git a/Gemfile b/Gemfile index 12296c9..cc3499d 100644 --- a/Gemfile +++ b/Gemfile @@ -42,6 +42,8 @@ gem 'pry' # FactoryGirl for testing gem 'factory_girl_rails', '~> 4.0' +gem 'jquery-ui-rails' + group :doc do # bundle exec rake doc:rails generates the API under doc/api. diff --git a/Gemfile.lock b/Gemfile.lock index 3b91a00..f69eeee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -67,6 +67,8 @@ GEM jquery-rails (3.1.3) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) + jquery-ui-rails (5.0.5) + railties (>= 3.2.16) json (1.8.3) mail (2.5.4) mime-types (~> 1.16) @@ -161,6 +163,7 @@ DEPENDENCIES factory_girl_rails (~> 4.0) jbuilder (~> 1.2) jquery-rails + jquery-ui-rails pg pry rails (= 4.0.1) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index b3de8c8..15f8281 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -15,3 +15,5 @@ //= require jquery_ujs //= require turbolinks //= require_tree . + +//= require jquery-ui \ No newline at end of file diff --git a/app/assets/javascripts/move_piece.js b/app/assets/javascripts/move_piece.js new file mode 100644 index 0000000..58c920b --- /dev/null +++ b/app/assets/javascripts/move_piece.js @@ -0,0 +1,39 @@ +$(document).ready(function() { + if ($(".chess-board").length == 0) { + return; + } + + $( ".draggable" ).draggable(); + + + $( "td" ).droppable({ + drop: function( event, ui ) { + //these are where the piece is moving to + var startRow = $(this).data("square-row"); + var startCol = $(this).data("square-col"); + + //these are the draggable pieces + var pieceId = $(ui.draggable).data("piece-id"); + var newRow = $(ui.draggable).data("piece-start-row"); + var newCol = $(ui.draggable).data("piece-start-col"); + var piece = $(ui.draggable); + var newSquare = $(this); + + console.debug("The piece to move has an id of: "+pieceId+"."); + console.debug("The square to move to is on row: "+startRow+" and col: "+startCol+"."); + + $.ajax({ + method: 'put', + url: "/pieces/" + pieceId, + data: { y_position: startRow, x_position: startCol } + }).done(function() { + console.debug("it worked! valid move") + newSquare.append(piece.css('position','static')); + }).fail(function() { + // console.debug("the world really really hates me") + // move piece back - invalid move + }); + + } //drop + }); //droppable +}); \ No newline at end of file diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 3c9f313..e916cb0 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -10,10 +10,13 @@ * *= require_self *= require_tree . + *= require jquery-ui */ @import "bootstrap-sprockets"; @import "bootstrap"; + + .hilite { background: rgba(255, 230, 0, 0.5); padding: 3px 2px; diff --git a/app/assets/stylesheets/pieces.css.scss b/app/assets/stylesheets/pieces.css.scss index 4ece9bb..29898c6 100644 --- a/app/assets/stylesheets/pieces.css.scss +++ b/app/assets/stylesheets/pieces.css.scss @@ -1,3 +1,13 @@ -// Place all the styles related to the pieces controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ +div.piece.color_0 { +/* dark */ + color: red; +} + +div.piece.color_1 { +/* light */ + color: blue; +} + +div.piece.ui-draggable-dragging { + background-color: yellow; +} \ No newline at end of file diff --git a/app/views/shared/_chessboard.html.erb b/app/views/shared/_chessboard.html.erb index 053b4b2..33b0e10 100644 --- a/app/views/shared/_chessboard.html.erb +++ b/app/views/shared/_chessboard.html.erb @@ -8,13 +8,14 @@ <% 8.downto(1) do |row| %> <% 1.upto(8) do |col| %> - - <%= link_to '', piece_path(id: @select_pc.id, x_position: col, y_position: row), :class => square_link(@select_pc), method: :put %> - <% @pieces.detect do |piece| %> - <% if piece.x_position == col && piece.y_position == row && piece.active == 1 %> - <%= link_to piece_color(piece), piece_path(piece.id), :class => hilite(piece) %> - <% end %> - <% end %> + + <% @pieces.detect do |piece| %> + <% if piece.x_position == col && piece.y_position == row %> +
+ <%= piece_color(piece) %> +
+ <% end %> + <% end %> <% end %>