From fff7e5928958e05b007db215795cb38f9565d6bc Mon Sep 17 00:00:00 2001 From: Ivan Lan <lanyifan@tallty.com> Date: Sat, 21 Nov 2020 12:45:57 +0800 Subject: [PATCH] Add excel pagination --- lib/tallty_import_export/excel.rb | 20 ++++++++++++++++++++ lib/tallty_import_export/import.rb | 6 +++++- lib/tallty_import_export/importable.rb | 4 ++++ spec/excel_spec.rb | 8 ++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/tallty_import_export/excel.rb b/lib/tallty_import_export/excel.rb index bfdbda8..46eff6d 100644 --- a/lib/tallty_import_export/excel.rb +++ b/lib/tallty_import_export/excel.rb @@ -46,6 +46,10 @@ module TalltyImportExport cache.all end + def records_pagination page: 1, per_page: 15 + Pagination.new(rows, page: page, per_page: per_page) + end + class Rows < Array # excel_hash { key => excel name } def each_with_excel_hash excel_hash @@ -59,5 +63,21 @@ module TalltyImportExport end end end + + class Pagination < Array + attr_reader :current_page, :total_pages + + def initialize ary, page: ,per_page: + @raw_ary = ary + @current_page = page + @total_pages = (@raw_ary.count / per_page.to_f).ceil + parsed_ary = @raw_ary[(page - 1) * per_page ... (page) * per_page] + super(parsed_ary) + end + + def count + @raw_ary.count + end + end end end diff --git a/lib/tallty_import_export/import.rb b/lib/tallty_import_export/import.rb index 39e9902..d1b4710 100644 --- a/lib/tallty_import_export/import.rb +++ b/lib/tallty_import_export/import.rb @@ -28,7 +28,7 @@ module TalltyImportExport h end - if TalltyImportExport::Excel === xlsx_file + if tallty_excel === xlsx_file xlsx_file.rows.each_with_excel_hash(excel_hash) do |line_info| process_line_info(line_info, associations) end @@ -44,6 +44,10 @@ module TalltyImportExport end end + def tallty_excel + TalltyImportExport::Excel + end + def process_line_info line_info, associations # 转换处理导入的数据格式 line_info = convert_data(line_info) diff --git a/lib/tallty_import_export/importable.rb b/lib/tallty_import_export/importable.rb index 266e88f..ea62744 100644 --- a/lib/tallty_import_export/importable.rb +++ b/lib/tallty_import_export/importable.rb @@ -16,6 +16,10 @@ module TalltyImportExport def import_xlsx *args import_instance.import_xlsx(*args) end + + def import_excel_klass + import_instance.tallty_excel + end end end end diff --git a/spec/excel_spec.rb b/spec/excel_spec.rb index f19fbe1..c4078a0 100644 --- a/spec/excel_spec.rb +++ b/spec/excel_spec.rb @@ -6,4 +6,12 @@ RSpec.describe TalltyImportExport::Excel do expect(@excel.titles).to eq(["名称", "学号", "副学号", "meta字段1", "meta字段2", "累加值"]) expect(@excel.rows[0]).to eq({"名称"=>1, "学号"=>20070101, "副学号"=>1, "meta字段1"=>"meta1", "meta字段2"=>"metaA", "累加值"=>1}) end + + it 'Excel::Pagination' do + pagination = TalltyImportExport::Excel::Pagination.new([1,2,3,4,5,6], page: 2, per_page: 2) + expect(pagination.count).to eq(6) + expect(pagination.current_page).to eq(2) + expect(pagination.total_pages).to eq(3) + expect(pagination).to eq([3, 4]) + end end -- libgit2 0.27.1