active_list 6.10.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/active_list.jquery.js.coffee +1 -1
- data/app/assets/stylesheets/active_list/theme.scss +1 -1
- data/lib/active_list.rb +1 -0
- data/lib/active_list/exporters/csv_exporter.rb +1 -1
- data/lib/active_list/exporters/excel_csv_exporter.rb +1 -1
- data/lib/active_list/exporters/open_document_spreadsheet_exporter.rb +1 -1
- data/lib/active_list/generator.rb +2 -1
- data/lib/active_list/renderers/simple_renderer.rb +38 -4
- data/lib/active_list/version.rb +1 -1
- data/test/dummy/Gemfile +5 -5
- data/test/dummy/db/migrate/20120510131331_create_people.rb +1 -1
- data/test/dummy/db/migrate/20120510134500_create_contacts.rb +1 -1
- data/test/dummy/db/schema.rb +13 -14
- data/test/people_controller_test.rb +7 -7
- data/test/test_helper.rb +16 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '022092abfbb1ef56a9e935ba1f815b5f13dd7fc4'
|
4
|
+
data.tar.gz: c15a78e14c48e10bfe281e2f735e5b3bc9084ea7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51bed46ba112355efe2aadbeae3e652296fbe9071d63d915a73d4189b87c21b933c44b3af2eefc14032827bcf13e5e370f6310f6f30dc66c30ddbaf658330013
|
7
|
+
data.tar.gz: edc59cfcb98fa9f621d67f1f6b593657ca2e1ede60c22631884c0ec749ed455e5ff0e8724c6559e2a2e8a915288d22311d8d72a6247aaea69687b7df29eb5fd5
|
@@ -23,7 +23,7 @@ ActiveList = {}
|
|
23
23
|
content = $(data)
|
24
24
|
list_data = content.find(".list-data")
|
25
25
|
list_control = content.find(".list-control")
|
26
|
-
for type in ["actions", "pagination", "settings"]
|
26
|
+
for type in ["actions", "pagination", "footer-pagination","settings"]
|
27
27
|
$("*[data-list-ref='#{list_id}'].list-#{type}").replaceWith list_control.find(".list-#{type}")
|
28
28
|
list.find(".list-data").html(list_data)
|
29
29
|
selection = list.prop('selection')
|
data/lib/active_list.rb
CHANGED
@@ -83,7 +83,8 @@ module ActiveList
|
|
83
83
|
|
84
84
|
def session_initialization_code
|
85
85
|
code = "options = {} unless options.is_a? Hash\n"
|
86
|
-
|
86
|
+
# For Rails 5
|
87
|
+
code << "options.update(params.to_unsafe_h)\n"
|
87
88
|
if defined?(User) && User.instance_methods.include?(:preference)
|
88
89
|
code << "#{var_name(:params)} = YAML::load(current_user.preference('list.#{view_method_name}', YAML::dump({})).value).symbolize_keys\n"
|
89
90
|
code << "#{var_name(:params)} = {} unless #{var_name(:params)}.is_a?(Hash)\n"
|
@@ -42,6 +42,8 @@ module ActiveList
|
|
42
42
|
extras = extras_codes
|
43
43
|
|
44
44
|
code = generator.select_data_code
|
45
|
+
# Hack for Rails 5
|
46
|
+
code << "__params = params.permit!\n"
|
45
47
|
code << "#{var_name(:tbody)} = '<tbody data-total=\"' + #{var_name(:count)}.to_s + '\""
|
46
48
|
if table.paginate?
|
47
49
|
code << " data-per-page=\"' + #{var_name(:limit)}.to_s + '\""
|
@@ -54,9 +56,9 @@ module ActiveList
|
|
54
56
|
code << " #{var_name(:attrs)}['data-' + options[:data].gsub('_', '-')] = #{record}.send(options[:data]) if options[:data]\n"
|
55
57
|
if table.options[:line_class]
|
56
58
|
code << " #{var_name(:attrs)}[:class] = (#{recordify!(table.options[:line_class], record)}).to_s\n"
|
57
|
-
code << " #{var_name(:attrs)}[:class] << ' focus' if
|
59
|
+
code << " #{var_name(:attrs)}[:class] << ' focus' if __params['#{table.name}-id'].to_i == #{record}.id\n"
|
58
60
|
else
|
59
|
-
code << " #{var_name(:attrs)}[:class] = 'focus' if
|
61
|
+
code << " #{var_name(:attrs)}[:class] = 'focus' if __params['#{table.name}-id'].to_i == #{record}.id\n"
|
60
62
|
end
|
61
63
|
code << " #{var_name(:tbody)} << content_tag(:tr, #{var_name(:attrs)}) do\n"
|
62
64
|
code << columns_to_cells(:body, record: record).dig(3)
|
@@ -108,6 +110,7 @@ module ActiveList
|
|
108
110
|
code << "options[:content_for] ||= {}\n"
|
109
111
|
code << "#{var_name(:extras)} = ''\n"
|
110
112
|
extras.each do |name, ecode|
|
113
|
+
next if name == :footer_pagination
|
111
114
|
code << "if options[:content_for][:#{name}]\n"
|
112
115
|
code << " content_for(options[:content_for][:#{name}], (#{ecode}).html_safe)\n"
|
113
116
|
code << "else\n"
|
@@ -128,10 +131,21 @@ module ActiveList
|
|
128
131
|
code << "end\n"
|
129
132
|
code << "#{var_name(:content)} << #{var_name(:tbody)}\n"
|
130
133
|
code << "#{var_name(:content)} << '</table></div>'\n"
|
134
|
+
|
135
|
+
if table.options[:footer_pagination]
|
136
|
+
code << " footer_code = ''\n"
|
137
|
+
code << " if options[:content_for][:footer_pagination]\n"
|
138
|
+
code << " footer_code << content_for(options[:content_for][:pagination])\n"
|
139
|
+
code << " else\n"
|
140
|
+
code << " footer_code << (#{extras[:footer_pagination]})\n"
|
141
|
+
code << " end\n"
|
142
|
+
code << " #{var_name(:content)} << content_tag(:div, (footer_code).html_safe, class: 'list-control') unless footer_code.blank?\n"
|
143
|
+
end
|
144
|
+
|
131
145
|
# code << "return #{var_name(:content)}.html_safe if options[:only] == 'content'\n"
|
132
146
|
|
133
147
|
# Build whole
|
134
|
-
code << "return ('<div id=\"#{uid}\" data-list-source=\"'+h(url_for(options.merge(:action => '#{generator.controller_method_name}')))+'\" data-list-redirect=\"' +
|
148
|
+
code << "return ('<div id=\"#{uid}\" data-list-source=\"'+h(url_for(options.merge(:action => '#{generator.controller_method_name}')))+'\" data-list-redirect=\"' + __params[:redirect].to_s + '\" class=\"active-list\">' + #{var_name(:content)} + '</div>').html_safe\n"
|
135
149
|
# File.open('debug-activelist', 'w') { |file| file.write code }
|
136
150
|
code
|
137
151
|
end
|
@@ -283,7 +297,7 @@ module ActiveList
|
|
283
297
|
menu << '<li class="separator"></li>'
|
284
298
|
# Exports
|
285
299
|
ActiveList.exporters.each do |format, _exporter|
|
286
|
-
menu << "<li class=\"export export-#{format}\">' + link_to(content_tag(:i) + h('list.export_as'.t(exported: :#{format}.t(scope: 'list.export.formats'))),
|
300
|
+
menu << "<li class=\"export export-#{format}\">' + link_to(content_tag(:i) + h('list.export_as'.t(exported: :#{format}.t(scope: 'list.export.formats'))), __params.merge(action: :#{generator.controller_method_name}, sort: #{var_name(:params)}[:sort], dir: #{var_name(:params)}[:dir], format: '#{format}')) + '</li>"
|
287
301
|
end
|
288
302
|
menu << '</ul></span>'
|
289
303
|
menu
|
@@ -369,6 +383,26 @@ module ActiveList
|
|
369
383
|
|
370
384
|
code << "'#{pagination}'"
|
371
385
|
codes[:pagination] = "'#{pagination}'"
|
386
|
+
|
387
|
+
if table.options[:footer_pagination]
|
388
|
+
pagination = ''
|
389
|
+
current_page = var_name(:page).to_s
|
390
|
+
last_page = var_name(:last).to_s
|
391
|
+
|
392
|
+
pagination << "<span class=\"list-footer-pagination\" data-list-ref=\"#{uid}\">"
|
393
|
+
pagination << "<span class=\"status\">' + 'list.pagination.x_to_y_of_total'.t(x: (#{var_name(:offset)} + (#{var_name(:count)} > 0 ? 1 : 0)), y: ((#{var_name(:last)} == #{var_name(:page)}) ? #{var_name(:count)} : #{var_name(:offset)} + #{var_name(:limit)}), total: #{var_name(:count)}) + '</span>"
|
394
|
+
|
395
|
+
pagination << '<span class="paginator">'
|
396
|
+
pagination << "<a href=\"#\" data-list-move-to-page=\"' + (#{current_page} - 1).to_s + '\" class=\"btn previous-page\"' + (#{current_page} != 1 ? '' : ' disabled=\"true\"') + '><i></i>' + ::I18n.translate('list.pagination.previous') + '</a>"
|
397
|
+
|
398
|
+
pagination << "<a href=\"#\" data-list-move-to-page=\"' + (#{current_page} + 1).to_s + '\" class=\"btn next-page\"' + (#{current_page} != #{last_page} ? '' : ' disabled=\"true\"') + '><i></i>' + ::I18n.translate('list.pagination.next')+'</a>"
|
399
|
+
pagination << '</span>'
|
400
|
+
|
401
|
+
pagination << '</span>'
|
402
|
+
|
403
|
+
code << "'#{pagination}'"
|
404
|
+
codes[:footer_pagination] = "'#{pagination}'"
|
405
|
+
end
|
372
406
|
end
|
373
407
|
codes
|
374
408
|
end
|
data/lib/active_list/version.rb
CHANGED
data/test/dummy/Gemfile
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rails', '
|
3
|
+
gem 'rails', '~> 5.0'
|
4
4
|
|
5
5
|
# Bundle edge Rails instead:
|
6
6
|
# gem 'rails', :git => 'git://github.com/rails/rails.git'
|
7
7
|
|
8
|
-
gem 'sqlite3'
|
8
|
+
gem 'sqlite3', '~> 1.3.6'
|
9
9
|
gem 'active_list', path: '../..'
|
10
10
|
|
11
11
|
# Gems used only for assets and not required
|
12
12
|
# in production environments by default.
|
13
13
|
group :assets do
|
14
|
-
gem 'sass-rails'
|
15
|
-
gem 'coffee-rails'
|
14
|
+
gem 'sass-rails'
|
15
|
+
gem 'coffee-rails'
|
16
16
|
|
17
17
|
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
18
18
|
gem 'therubyracer', platform: :ruby
|
19
19
|
|
20
|
-
gem 'uglifier'
|
20
|
+
gem 'uglifier'
|
21
21
|
end
|
22
22
|
|
23
23
|
gem 'jquery-rails'
|
data/test/dummy/db/schema.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
# This file is auto-generated from the current state of the database. Instead
|
3
2
|
# of editing this file, please use the migrations feature of Active Record to
|
4
3
|
# incrementally modify your database, and then regenerate this schema definition.
|
@@ -11,26 +10,26 @@
|
|
11
10
|
#
|
12
11
|
# It's strongly recommended that you check this file into your version control system.
|
13
12
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 2012_05_10_134500) do
|
15
14
|
|
16
15
|
create_table "contacts", force: :cascade do |t|
|
17
|
-
t.integer
|
18
|
-
t.text
|
19
|
-
t.string
|
20
|
-
t.string
|
21
|
-
t.string
|
16
|
+
t.integer "person_id"
|
17
|
+
t.text "address"
|
18
|
+
t.string "phone"
|
19
|
+
t.string "fax"
|
20
|
+
t.string "country"
|
22
21
|
t.datetime "created_at", null: false
|
23
22
|
t.datetime "updated_at", null: false
|
24
23
|
end
|
25
24
|
|
26
25
|
create_table "people", force: :cascade do |t|
|
27
|
-
t.string
|
28
|
-
t.date
|
29
|
-
t.decimal
|
30
|
-
t.decimal
|
31
|
-
t.string
|
32
|
-
t.datetime "created_at",
|
33
|
-
t.datetime "updated_at",
|
26
|
+
t.string "name"
|
27
|
+
t.date "born_on"
|
28
|
+
t.decimal "height"
|
29
|
+
t.decimal "balance_amount"
|
30
|
+
t.string "currency"
|
31
|
+
t.datetime "created_at", null: false
|
32
|
+
t.datetime "updated_at", null: false
|
34
33
|
end
|
35
34
|
|
36
35
|
end
|
@@ -5,10 +5,10 @@ class PeopleControllerTest < ActionController::TestCase
|
|
5
5
|
get :list
|
6
6
|
assert_response :success
|
7
7
|
|
8
|
-
get :list, format: :csv
|
8
|
+
get :list, params: {format: :csv}
|
9
9
|
assert_response :success
|
10
10
|
|
11
|
-
get :list, format: :ods
|
11
|
+
get :list, params: {format: :ods}
|
12
12
|
assert_response :success
|
13
13
|
end
|
14
14
|
|
@@ -18,19 +18,19 @@ class PeopleControllerTest < ActionController::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
test 'parameters' do
|
21
|
-
get :list, 'people-id' => 10
|
21
|
+
get :list, params: {'people-id' => 10}
|
22
22
|
assert_response :success
|
23
23
|
|
24
|
-
get :list, page: 0
|
24
|
+
get :list, params: {page: 0}
|
25
25
|
assert_response :success
|
26
26
|
|
27
|
-
get :list, page: 5, per_page: 25
|
27
|
+
get :list, params: {page: 5, per_page: 25}
|
28
28
|
assert_response :success
|
29
29
|
|
30
|
-
get :list, page: 50, per_page: 25
|
30
|
+
get :list, params: {page: 50, per_page: 25}
|
31
31
|
assert_response :success
|
32
32
|
|
33
|
-
get :list, page: 500, per_page: 25
|
33
|
+
get :list, params: {page: 500, per_page: 25}
|
34
34
|
assert_response :success
|
35
35
|
end
|
36
36
|
end
|
data/test/test_helper.rb
CHANGED
@@ -23,6 +23,22 @@ ActionMailer::Base.delivery_method = :test
|
|
23
23
|
ActionMailer::Base.perform_deliveries = true
|
24
24
|
ActionMailer::Base.default_url_options[:host] = 'test.com'
|
25
25
|
|
26
|
+
# Patch from https://github.com/rails/rails/issues/34790#issuecomment-450502805
|
27
|
+
if RUBY_VERSION >= '2.6.0'
|
28
|
+
if Rails.version < '5'
|
29
|
+
class ActionController::TestResponse < ActionDispatch::TestResponse
|
30
|
+
def recycle!
|
31
|
+
# hack to avoid MonitorMixin double-initialize error:
|
32
|
+
@mon_mutex_owner_object_id = nil
|
33
|
+
@mon_mutex = nil
|
34
|
+
initialize
|
35
|
+
end
|
36
|
+
end
|
37
|
+
else
|
38
|
+
puts "Monkeypatch for ActionController::TestResponse no longer needed"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
26
42
|
module ActionView
|
27
43
|
class Base
|
28
44
|
module Nomen
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brice Texier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '3.2'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '6'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '3.2'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '6'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: arel
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,16 +90,16 @@ dependencies:
|
|
90
90
|
name: sqlite3
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
95
|
+
version: 1.3.6
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
102
|
+
version: 1.3.6
|
103
103
|
description: Generates action methods to provide clean tables.
|
104
104
|
email: burisu@oneiros.fr
|
105
105
|
executables: []
|