#1080 Offset & limit

This commit is contained in:
Karel Pičman 2020-03-17 13:31:15 +01:00
parent c38f900de0
commit 1cb464c4f6
8 changed files with 37 additions and 9 deletions

View File

@ -75,7 +75,9 @@ class DmsfController < ApplicationController
@dmsf_pages = Paginator.new @dmsf_count, per_page_option, params['page']
render layout: !request.xhr?
}
format.api
format.api {
@offset, @limit = api_offset_and_limit
}
format.csv {
send_data query_to_csv(@query.dmsf_nodes, @query), type: 'text/csv; header=present', filename: 'dmsf.csv'
}

View File

@ -41,7 +41,7 @@
</tr>
</thead>
<tbody>
<%= render partial: 'query_rows', locals: { query: query } %>
<%= render partial: 'query_rows', locals: { query: query, dmsf_pages: dmsf_pages } %>
</tbody>
</table>
</div>

View File

@ -20,7 +20,12 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
%>
<% query.dmsf_nodes.each do |node| %>
<% options = {} %>
<% if dmsf_pages %>
<% options[:offset] = dmsf_pages.offset %>
<% options[:limit] = dmsf_pages.per_page %>
<% end %>
<% query.dmsf_nodes(options).each do |node| %>
<% system = node.title =~ /^\./ %>
<% @idnt ||= 0 %>
<tr id="<%= node.id %>span" class="<%= cycle('odd', 'even') %> <%= node.css_classes(query.deleted) %> <%= params[:classes] %> <%= @idnt > 0 ? "idnt idnt-#{@idnt}" : nil %>">

View File

@ -1,2 +1,2 @@
// Add rows
$('#<%= params[:row_id] %>').after('<%= escape_javascript(render(partial: 'dmsf/query_rows', locals: { query: @query })) %>');
$('#<%= params[:row_id] %>').after('<%= escape_javascript(render(partial: 'dmsf/query_rows', locals: { query: @query, dmsf_pages: nil })) %>');

View File

@ -1,7 +1,7 @@
api.dmsf do
api.array :dmsf_nodes, api_meta(total_count: @query.dmsf_nodes.count) do
@query.dmsf_nodes.each do |node|
api.array :dmsf_nodes, api_meta(total_count: @query.dmsf_nodes(offset: @offset, limit: @limit).count) do
@query.dmsf_nodes(offset: @offset, limit: @limit).each do |node|
api.node do
api.id node.id
api.title node.title

View File

@ -94,7 +94,7 @@
<%= form_tag(dmsf_folder_path(d: @project, folder_id: @folder), method: :get, id: 'query_form') do %>
<%= render partial: 'queries/query_form' %>
<% end %>
<%= render partial: 'query_list', locals: { query: @query } %>
<%= render partial: 'query_list', locals: { query: @query, dmsf_pages: @dmsf_pages } %>
<span class="pagination"><%= pagination_links_full @dmsf_pages, @dmsf_count %></span>
<%= context_menu %>

View File

@ -218,9 +218,28 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_show
@role.add_permission! :view_dmsf_files
@role.add_permission! :view_dmsf_folders
@role.add_permission! :file_manipulation
get :show, params: { id: @project.id }
assert_response :success
assert_select 'tr.dmsf_tree'
# New file link
assert_select 'a.icon-add'
# Filters
assert_select 'fieldset#filters'
# Options
assert_select 'fieldset#options'
# The main table
assert_select 'table.dmsf'
# CSV export
assert_select 'a.csv'
end
def test_show_without_file_manipulation
@role.add_permission! :view_dmsf_files
@role.add_permission! :view_dmsf_folders
get :show, params: { id: @project.id }
assert_response :success
# New file link should be missing
assert_select 'a.icon-add', false, 'Adding files is not allowed'
end
def test_show_csv

View File

@ -92,6 +92,7 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&limit=1&offset=2"
assert_response :success
assert_equal 'application/xml', @response.content_type
puts response.body
# <?xml version="1.0" encoding="UTF-8"?>
# <dmsf>
# <dmsf_nodes total_count="1" type="array">
@ -99,10 +100,11 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
# <id>7</id>
# <title>folder7</title>
# <type>folder</type>
# <filename/>
# </node>
# </dmsf_nodes>
# </dmsf>
assert_select 'dmsf > dmsf_nodes', count: 1
assert_select 'dmsf > dmsf_nodes > node', count: 1
assert_select 'dmsf > dmsf_nodes > node > id', text: @folder7.id.to_s
assert_select 'dmsf > dmsf_nodes > node > title', text: @folder7.title
end