Permalink
Please sign in to comment.
Showing
with
333 additions
and 65 deletions.
- +4 −1 app/assets/javascripts/base.js
- +63 −13 app/assets/javascripts/mocks.js
- +36 −0 app/assets/stylesheets/mocks.scss
- +18 −2 app/controllers/duckrails/mocks_controller.rb
- +8 −1 app/models/duckrails/mock.rb
- +5 −0 app/views/duckrails/mocks/index.html.erb
- +29 −0 app/views/duckrails/mocks/sort_index.html.erb
- +1 −1 config/environments/production.rb
- +4 −0 config/routes.rb
- +2 −2 db/schema.rb
- +11 −5 lib/duckrails/router.rb
- +1 −1 lib/route_validator.rb
- +56 −12 spec/controllers/duckrails/mocks_controller_spec.rb
- +3 −2 spec/factories/duckrails/mocks.rb
- +9 −10 spec/lib/duckrails/router_spec.rb
- +43 −15 spec/models/duckrails/mock_spec.rb
- +40 −0 spec/views/duckrails/mocks/sort_index.erb_spec.rb
| @@ -1 +1,4 @@ | ||
| -$(function(){ $(document).foundation(); }); | ||
| +$(function(){ | ||
| + $(document).foundation(); | ||
| + $('.sortable').sortable(); | ||
| +}); |
| @@ -1,21 +1,71 @@ | ||
| -var first_error_tab = null; | ||
| +setMockPositions = function () { | ||
| + $('div.mock').each(function(i) { | ||
| + $(this).data('new-pos', i); | ||
| + }); | ||
| +} | ||
| -$(function(){ | ||
| - $('form.mock-form').find('.tabs-content .content').each(function(index, element) { | ||
| - var $element = $(element); | ||
| - var elementId = $element.prop('id'); | ||
| - var $tabLink = $('a[href="#' + elementId + '"]'); | ||
| +updateMocksOrder = function (event) { | ||
| + event.preventDefault(); | ||
| + | ||
| + setMockPositions(); | ||
| - if ($element.find('small.error').length) { | ||
| - $tabLink.addClass('error'); | ||
| + var $sortable = $('.sortable'); | ||
| - if (!first_error_tab) { | ||
| - first_error_tab = $tabLink; | ||
| - } | ||
| + var updates = []; | ||
| + | ||
| + $('div.mock').each(function(i) { | ||
| + var $element = $(this), | ||
| + old_pos = $element.data('old-pos'), | ||
| + new_pos = $element.data('new-pos'); | ||
| + | ||
| + console.log(old_pos, new_pos); | ||
| + | ||
| + if (old_pos != new_pos) { | ||
| + updates.push({id: $element.data('mock-id'), order: new_pos}); | ||
| } | ||
| }); | ||
| - if (first_error_tab) { | ||
| - first_error_tab.trigger('click'); | ||
| + var success_url = $sortable.data('mock-success-url'); | ||
| + | ||
| + if (updates.length > 0) { | ||
| + var url = $sortable.data('mock-url'), | ||
| + method = $sortable.data('mock-method'); | ||
| + | ||
| + $.ajax({ | ||
| + type: method, | ||
| + url: url, | ||
| + data: { order: updates }, | ||
| + success: function () { | ||
| + document.location = success_url; | ||
| + } | ||
| + }); | ||
| + } else { | ||
| + document.location = success_url; | ||
| } | ||
| +} | ||
| + | ||
| +$(function(){ | ||
| + if ($('form.mock-form').find('.tabs-content .content').length > 0) { | ||
| + var first_error_tab = null; | ||
| + | ||
| + $('form.mock-form').find('.tabs-content .content').each(function(index, element) { | ||
| + var $element = $(element); | ||
| + var elementId = $element.prop('id'); | ||
| + var $tabLink = $('a[href="#' + elementId + '"]'); | ||
| + | ||
| + if ($element.find('small.error').length) { | ||
| + $tabLink.addClass('error'); | ||
| + | ||
| + if (!first_error_tab) { | ||
| + first_error_tab = $tabLink; | ||
| + } | ||
| + } | ||
| + }); | ||
| + | ||
| + if (first_error_tab) { | ||
| + first_error_tab.trigger('click'); | ||
| + } | ||
| + } | ||
| + | ||
| + $('.update-mocks-order').on('click', updateMocksOrder); | ||
| }); |
| @@ -0,0 +1,29 @@ | ||
| +<%= content_tag :div, | ||
| + class: 'sortable', | ||
| + data: { | ||
| + mock_url: update_order_duckrails_mocks_path, | ||
| + mock_method: :put, | ||
| + mock_success_url: duckrails_mocks_path | ||
| + } do %> | ||
| + <% @mocks.each do |mock| %> | ||
| + <%= content_tag :div, data: { mock_id: mock.id, old_pos: mock.mock_order }, class: 'mock' do %> | ||
| + <div class="left mock-name"> | ||
| + <%= mock.name %> | ||
| + </div> | ||
| + | ||
| + <div class="right mock-path"> | ||
| + <%= mock.route_path %> | ||
| + </div> | ||
| + | ||
| + <div class="right mock-request-method"> | ||
| + <%= mock.request_method %> | ||
| + </div> | ||
| + <% end %> | ||
| + <% end %> | ||
| +<% end %> | ||
| + | ||
| +<div class="page-actions"> | ||
| + <%= link_to t(:cancel), duckrails_mocks_path, class: 'button secondary' %> | ||
| + | ||
| + <%= link_to t(:save), '#', class: 'button success update-mocks-order' %> | ||
| +</div> |
Oops, something went wrong.
0 comments on commit
0244b41