active_scaffold 4.0.0.rc2 → 4.0.0.rc3
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/CHANGELOG.rdoc +10 -0
- data/app/assets/javascripts/jquery/active_scaffold.js +52 -31
- data/app/assets/stylesheets/active_scaffold.scss +3 -2
- data/app/assets/stylesheets/active_scaffold_layout.css +9 -4
- data/app/views/active_scaffold_overrides/_list.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list_inline_adapter.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_new_record.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_popup_adapter.html.erb +20 -0
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_row.html.erb +1 -1
- data/app/views/active_scaffold_overrides/add_existing.js.erb +1 -1
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +1 -1
- data/app/views/active_scaffold_overrides/on_update.js.erb +2 -2
- data/app/views/active_scaffold_overrides/row.js.erb +1 -1
- data/app/views/active_scaffold_overrides/update_row.js.erb +1 -1
- data/lib/active_scaffold/config/core.rb +2 -0
- data/lib/active_scaffold/data_structures/action_link.rb +5 -2
- data/lib/active_scaffold/data_structures/action_link_separator.rb +11 -9
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +9 -9
- data/lib/active_scaffold/helpers/list_column_helpers.rb +4 -0
- data/lib/active_scaffold/tableless.rb +3 -7
- data/lib/active_scaffold/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ce97fc27fd6db228fc8c934c9559a9af750b0e19837c5eb30e6bb868fc108ef
|
4
|
+
data.tar.gz: d3568381187bb6ab2fb1245d5588063a09db42057704d0645abd5e04139f2cf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 445f89948894b2989ce7f20efb69ce649b1bbd045a124b7c0243e1ea8e4168922a54b901ee653a51fde2ad7b61b3014fa47521d62fa17120ab58671032a7afb4
|
7
|
+
data.tar.gz: ab62a6b00a0c403eeaa4bc94c346fa46871350d4b9a5ebcbe7d6d9c63c7e8d8b862f5083ba5c3045ff3ce533ea015e441f8adea9d35c7d6807d876a88202043f
|
data/CHANGELOG.rdoc
CHANGED
@@ -5,7 +5,17 @@
|
|
5
5
|
- Action links can't be changed, added or removed, add all links and use ignore_method to control when they are displayed
|
6
6
|
- Require using active_scaffold_config.override_columns to exclude or add columns
|
7
7
|
- Thread safety enabled by default, can't be disabled, deprecate ActiveScaffold.threadsafe!
|
8
|
+
|
9
|
+
= 3.7.11 (not released yet)
|
10
|
+
- Add partial list_messages_content to reduce code duplication, and better support replacing list view with other way to render records
|
11
|
+
- Support selector for records body in create_record_row JS method, better support replacing list view with other way to render records
|
12
|
+
- Improve detection of member action links when list view is replaced with other structure, based on 'record' html class, instead of tags
|
13
|
+
- Support :table position for member action links, replacing the whole table
|
14
|
+
- Support changing the view partial used to render a record, default to 'list_record', better support refreshing a record when list view is replaced with other way to render records
|
8
15
|
- Support separators in action links
|
16
|
+
- Support :popup position, using jquery-ui dialog, but can be replaced with other library overriding ActiveScaffold.open_popup and ActiveScaffold.close_popup JS functions
|
17
|
+
- Use column.label in human conditions, same as form
|
18
|
+
- Don't overlap 'click to reset' with long human conditions message
|
9
19
|
|
10
20
|
= 3.7.10
|
11
21
|
- Move code from on_create.js.erb to partials, so it's easier to change parts, e.g. how new record is rendered
|
@@ -800,7 +800,7 @@
|
|
800
800
|
|
801
801
|
create_record_row: function(active_scaffold_id, html, options) {
|
802
802
|
if (typeof(active_scaffold_id) == 'string') active_scaffold_id = '#' + active_scaffold_id;
|
803
|
-
var tbody = jQuery(active_scaffold_id).find('tbody.records').first(), new_row;
|
803
|
+
var tbody = jQuery(active_scaffold_id).find(options.body_selector || 'tbody.records').first(), new_row;
|
804
804
|
|
805
805
|
if (options.insert_at == 'top') {
|
806
806
|
tbody.prepend(html);
|
@@ -840,10 +840,10 @@
|
|
840
840
|
});
|
841
841
|
},
|
842
842
|
|
843
|
-
delete_record_row: function(row, page_reload_url) {
|
843
|
+
delete_record_row: function(row, page_reload_url, body_selector) {
|
844
844
|
if (typeof(row) == 'string') row = '#' + row;
|
845
845
|
row = jQuery(row);
|
846
|
-
var tbody = row.closest('tbody.records');
|
846
|
+
var tbody = row.closest(body_selector || 'tbody.records');
|
847
847
|
|
848
848
|
row.find('a.disabled').each(function() {;
|
849
849
|
var action_link = ActiveScaffold.ActionLink.get(this);
|
@@ -1229,8 +1229,21 @@
|
|
1229
1229
|
$footer.removeClass('floating');
|
1230
1230
|
if ($form.visible(true) && !$footer.visible(true)) $footer.addClass('floating');
|
1231
1231
|
});
|
1232
|
-
}
|
1232
|
+
},
|
1233
|
+
|
1234
|
+
open_popup: function(content, link) {
|
1235
|
+
var element = jQuery(content).dialog({
|
1236
|
+
modal: true,
|
1237
|
+
close: function() { link.close(); },
|
1238
|
+
width: ActiveScaffold.config.popup_width || '80%'
|
1239
|
+
});
|
1240
|
+
link.set_adapter(element);
|
1241
|
+
},
|
1233
1242
|
|
1243
|
+
close_popup: function(link, callback) {
|
1244
|
+
link.adapter.dialog('close');
|
1245
|
+
if (callback) callback();
|
1246
|
+
}
|
1234
1247
|
}
|
1235
1248
|
|
1236
1249
|
|
@@ -1285,18 +1298,15 @@
|
|
1285
1298
|
if (element.length > 0) {
|
1286
1299
|
element.data(); // $ 1.4.2 workaround
|
1287
1300
|
if (typeof(element.data('action_link')) === 'undefined' && !element.hasClass('as_adapter')) {
|
1288
|
-
var parent = element.closest('.
|
1289
|
-
if (parent.length === 0
|
1290
|
-
|
1291
|
-
parent = element.closest('tr.record');
|
1292
|
-
}
|
1293
|
-
if (parent.is('tr')) {
|
1301
|
+
var parent = element.closest('.record');
|
1302
|
+
if (parent.length === 0) parent = element.closest('.actions');
|
1303
|
+
if (parent.is('.record')) {
|
1294
1304
|
// record action
|
1295
1305
|
var target = parent.find('a.as_action');
|
1296
|
-
var loading_indicator = parent.find('
|
1306
|
+
var loading_indicator = parent.find('.actions .loading-indicator');
|
1297
1307
|
if (!loading_indicator.length) loading_indicator = element.parent().find('.loading-indicator');
|
1298
1308
|
new ActiveScaffold.Actions.Record(target, parent, loading_indicator);
|
1299
|
-
} else if (parent
|
1309
|
+
} else if (parent.is('.active-scaffold-header .actions')) {
|
1300
1310
|
//table action
|
1301
1311
|
new ActiveScaffold.Actions.Table(parent.find('a.as_action'), parent.closest('div.active-scaffold').find('tbody.before-header').first(), parent.find('.loading-indicator').first());
|
1302
1312
|
}
|
@@ -1333,14 +1343,18 @@
|
|
1333
1343
|
},
|
1334
1344
|
|
1335
1345
|
close: function() {
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1346
|
+
var link = this, callback = function() {
|
1347
|
+
link.enable();
|
1348
|
+
if (link.hide_target) link.target.show();
|
1349
|
+
if (link.hide_content) link.content.show();
|
1350
|
+
if (ActiveScaffold.config.scroll_on_close) {
|
1351
|
+
ActiveScaffold.scroll_to(link.target.attr('id'), ActiveScaffold.config.scroll_on_close === 'checkInViewport');
|
1352
|
+
}
|
1353
|
+
};
|
1354
|
+
if (this.position === 'popup') {
|
1355
|
+
ActiveScaffold.close_popup(this, callback);
|
1356
|
+
} else if (this.adapter) {
|
1357
|
+
ActiveScaffold.remove(this.adapter, callback);
|
1344
1358
|
}
|
1345
1359
|
},
|
1346
1360
|
|
@@ -1401,7 +1415,7 @@
|
|
1401
1415
|
if (refresh) l.refresh_url = this.target.closest('.records').data('refresh-record').replace('--ID--', refresh);
|
1402
1416
|
|
1403
1417
|
if (l.position) {
|
1404
|
-
l.url = l.url.append_params({adapter: '_list_inline_adapter'});
|
1418
|
+
l.url = l.url.append_params({adapter: l.position == 'popup' ? '_popup_adapter' : '_list_inline_adapter'});
|
1405
1419
|
l.tag.attr('href', l.url);
|
1406
1420
|
}
|
1407
1421
|
l.set = this;
|
@@ -1422,9 +1436,13 @@
|
|
1422
1436
|
insert: function(content) {
|
1423
1437
|
this.close_previous_adapter();
|
1424
1438
|
|
1425
|
-
if (this.position
|
1439
|
+
if (this.position === 'replace') {
|
1426
1440
|
this.position = 'after';
|
1427
1441
|
this.hide_target = true;
|
1442
|
+
} else if (this.position === 'table') {
|
1443
|
+
this.hide_content = true;
|
1444
|
+
} else if (this.position === 'popup') {
|
1445
|
+
return ActiveScaffold.open_popup(content, this);
|
1428
1446
|
}
|
1429
1447
|
|
1430
1448
|
var colspan = this.target.children().length;
|
@@ -1432,15 +1450,17 @@
|
|
1432
1450
|
content = jQuery(content);
|
1433
1451
|
content.find('.inline-adapter-cell:first').attr('colspan', colspan);
|
1434
1452
|
}
|
1435
|
-
if (this.position
|
1453
|
+
if (this.position === 'after') {
|
1436
1454
|
this.target.after(content);
|
1437
1455
|
this.set_adapter(this.target.next());
|
1438
|
-
}
|
1439
|
-
else if (this.position == 'before') {
|
1456
|
+
} else if (this.position === 'before') {
|
1440
1457
|
this.target.before(content);
|
1441
1458
|
this.set_adapter(this.target.prev());
|
1442
|
-
}
|
1443
|
-
|
1459
|
+
} else if (this.position === 'table') {
|
1460
|
+
var content_parent = this.target.closest('div.active-scaffold').find('tbody.before-header').first()
|
1461
|
+
content_parent.prepend(content);
|
1462
|
+
this.set_adapter(content_parent.children().first())
|
1463
|
+
} else {
|
1444
1464
|
return false;
|
1445
1465
|
}
|
1446
1466
|
ActiveScaffold.highlight(this.adapter.find('td'));
|
@@ -1478,10 +1498,10 @@
|
|
1478
1498
|
},
|
1479
1499
|
|
1480
1500
|
set_opened: function() {
|
1481
|
-
if (this.position
|
1501
|
+
if (this.position === 'after') {
|
1482
1502
|
this.set_adapter(this.target.next());
|
1483
1503
|
}
|
1484
|
-
else if (this.position
|
1504
|
+
else if (this.position === 'before') {
|
1485
1505
|
this.set_adapter(this.target.prev());
|
1486
1506
|
}
|
1487
1507
|
this.disable();
|
@@ -1507,13 +1527,14 @@
|
|
1507
1527
|
if (this.position == 'replace') {
|
1508
1528
|
this.position = 'top';
|
1509
1529
|
this.hide_content = true;
|
1530
|
+
} else if (this.position == 'popup') {
|
1531
|
+
return ActiveScaffold.open_popup(content, this);
|
1510
1532
|
}
|
1511
1533
|
|
1512
1534
|
if (this.position == 'top') {
|
1513
1535
|
this.target.prepend(content);
|
1514
1536
|
this.set_adapter(this.target.children().first());
|
1515
|
-
}
|
1516
|
-
else {
|
1537
|
+
} else {
|
1517
1538
|
throw 'Unknown position "' + this.position + '"'
|
1518
1539
|
}
|
1519
1540
|
ActiveScaffold.highlight(this.adapter.find('td').first().children().not('script'));
|
@@ -5,9 +5,10 @@
|
|
5
5
|
ActiveScaffold is freely distributable under the terms of an MIT-style license.
|
6
6
|
|
7
7
|
For details, see the ActiveScaffold web site: https://github.com/activescaffold/active_scaffold
|
8
|
+
*= require_self
|
9
|
+
*= require "active_scaffold_jquery_ui"
|
10
|
+
*= require "active_scaffold_extensions"
|
8
11
|
*/
|
9
|
-
//= require "active_scaffold_jquery_ui"
|
10
|
-
//= require "active_scaffold_extensions"
|
11
12
|
|
12
13
|
@import 'active_scaffold_layout';
|
13
14
|
@import 'active_scaffold_images';
|
@@ -497,6 +497,12 @@ padding: 4px;
|
|
497
497
|
text-align: center;
|
498
498
|
position: relative;
|
499
499
|
}
|
500
|
+
.active-scaffold .filtered-message {
|
501
|
+
display: flex;
|
502
|
+
}
|
503
|
+
.active-scaffold .filtered-message > * {
|
504
|
+
flex-grow: 1;
|
505
|
+
}
|
500
506
|
|
501
507
|
.active-scaffold .message, .active-scaffold-component .message {
|
502
508
|
font-size: 11px;
|
@@ -512,10 +518,9 @@ display: inline;
|
|
512
518
|
}
|
513
519
|
|
514
520
|
.active-scaffold .filtered-message .reset {
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
top: 4px;
|
521
|
+
margin-right: 5px;
|
522
|
+
white-space: nowrap;
|
523
|
+
flex-grow: 0;
|
519
524
|
padding: 0;
|
520
525
|
}
|
521
526
|
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<%= render 'list_messages', columns: columns %>
|
20
20
|
<tbody class="records" id="<%= active_scaffold_tbody_id %>" data-refresh-record="<%= url_for(params_for(action: :index, id: '--ID--')) %>">
|
21
21
|
<% if !@page.empty? -%>
|
22
|
-
<%= render partial:
|
22
|
+
<%= render partial: list_record_view, collection: @page.items, locals: {hidden: false, columns: columns, action_links: active_scaffold_config.action_links.member} %>
|
23
23
|
<% end -%>
|
24
24
|
</tbody>
|
25
25
|
<% if columns.any?(&:calculation?) -%>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%# nested_id, allows us to remove a nested scaffold programmatically %>
|
2
|
-
<tr class="inline-adapter" id="<%= element_row_id action: :nested %>">
|
2
|
+
<tr class="inline-adapter" id="<%= nested_id = element_row_id action: :nested %>">
|
3
3
|
<td class="inline-adapter-cell">
|
4
4
|
<% if successful? %>
|
5
5
|
<div class="<%= "#{params[:action]}-view" if params[:action] %> <%= "#{nested? ? nested.name : id_from_controller(params[:controller])}-view" %> view">
|
@@ -9,9 +9,9 @@
|
|
9
9
|
<% end %>
|
10
10
|
<%= javascript_tag do %>
|
11
11
|
setTimeout(function() {
|
12
|
-
var action_link = ActiveScaffold.ActionLink.get('<%=
|
12
|
+
var action_link = ActiveScaffold.ActionLink.get('<%= nested_id %>');
|
13
13
|
if (action_link) {
|
14
|
-
action_link.update_flash_messages('<%= escape_javascript(render('messages')
|
14
|
+
action_link.update_flash_messages('<%= escape_javascript(render('messages')) %>');
|
15
15
|
<% unless successful? %>
|
16
16
|
action_link.close();
|
17
17
|
ActiveScaffold.scroll_to(action_link.scaffold(), ActiveScaffold.config.scroll_on_close == 'checkInViewport');
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<%= content_tag :div, class: 'filtered-message',
|
7
7
|
style: ('display:none;' unless @filtered),
|
8
8
|
data: ({search: search_params || ''} if active_scaffold_config.store_user_settings && respond_to?(:search_params)) do %>
|
9
|
-
|
9
|
+
<div><%= @filtered.is_a?(Array) ? render('human_conditions', columns: @filtered) : as_(active_scaffold_config.list.filtered_message) %></div>
|
10
10
|
<% if active_scaffold_config.list.show_search_reset && @filtered -%>
|
11
11
|
<div class="reset">
|
12
12
|
<%= loading_indicator_tag(action: :record, id: nil) %>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
<% elsif active_scaffold_config.create.refresh_list %>
|
10
10
|
<%= render 'refresh_list', no_history: true %>
|
11
11
|
<% elsif params[:parent_controller].nil? %>
|
12
|
-
<% new_row = render
|
12
|
+
<% new_row = render list_record_view, record: @saved_record || @record %>
|
13
13
|
ActiveScaffold.create_record_row(action_link ? action_link.scaffold() : '<%= active_scaffold_id %>', '<%= escape_javascript(new_row) %>', <%= {insert_at: insert_at}.to_json.html_safe %>);
|
14
14
|
<%= render 'update_calculations' %>
|
15
15
|
<% end %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%# nested_id, allows us to remove a nested scaffold programmatically %>
|
2
|
+
<div class="active-scaffold" id="<%= nested_id = element_row_id action: :nested %>">
|
3
|
+
<% if successful? %>
|
4
|
+
<div class="<%= "#{params[:action]}-view" if params[:action] %> <%= "#{nested? ? nested.name : id_from_controller(params[:controller])}-view" %> view">
|
5
|
+
<%= payload -%>
|
6
|
+
</div>
|
7
|
+
<% end %>
|
8
|
+
<%= javascript_tag do %>
|
9
|
+
setTimeout(function() {
|
10
|
+
var action_link = ActiveScaffold.ActionLink.get('<%= nested_id %>');
|
11
|
+
if (action_link) {
|
12
|
+
action_link.update_flash_messages('<%= escape_javascript(render('messages')) %>');
|
13
|
+
<% unless successful? %>
|
14
|
+
action_link.close();
|
15
|
+
ActiveScaffold.scroll_to(action_link.scaffold(), ActiveScaffold.config.scroll_on_close == "checkInViewport");
|
16
|
+
<% end %>
|
17
|
+
}
|
18
|
+
}, 10);
|
19
|
+
<% end %>
|
20
|
+
</div>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% if @auto_pagination -%>
|
2
2
|
<% if @page.items.present? -%>
|
3
|
-
ActiveScaffold.append('<%= active_scaffold_tbody_id %>', '<%= escape_javascript(render(partial:
|
3
|
+
ActiveScaffold.append('<%= active_scaffold_tbody_id %>', '<%= escape_javascript(render(partial: list_record_view, collection: @page.items, locals: {hidden: false, columns: list_columns, action_links: active_scaffold_config.action_links.member})) %>');
|
4
4
|
|
5
5
|
<% if @page.pager.infinite? || @page.number < @page.pager.number_of_pages -%>
|
6
6
|
ActiveScaffold.auto_load_page('<%= url_for main_path_to_return %>', {auto_pagination: true, page: <%= @page.number + 1 %>});
|
@@ -1 +1 @@
|
|
1
|
-
<%= render
|
1
|
+
<%= render list_record_view, record: record %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% new_row = render
|
1
|
+
<% new_row = render list_record_view, record: @record %>
|
2
2
|
ActiveScaffold.create_record_row('<%= active_scaffold_id %>', '<%= escape_javascript(new_row) %>', <%= {insert_at: :top}.to_json.html_safe %>);
|
3
3
|
|
4
4
|
<%= render 'update_calculations' %>
|
@@ -5,7 +5,7 @@ link = ActiveScaffold.find_action_link('<%= element_form_id(action: action_name)
|
|
5
5
|
<% if successful? %>
|
6
6
|
<% if @record %>
|
7
7
|
<%= render 'update_messages' %>
|
8
|
-
<% row = escape_javascript(render(
|
8
|
+
<% row = escape_javascript(render(list_record_view, record: @record)) -%>
|
9
9
|
<% if @action_link&.position %>
|
10
10
|
if (link) link.close('<%= row %>');
|
11
11
|
<% else %>
|
@@ -5,7 +5,7 @@ if (action_link) action_link.update_flash_messages('<%= escape_javascript(render
|
|
5
5
|
<% if successful? %>
|
6
6
|
<% if params[:dont_close] %>
|
7
7
|
<% row_selector = element_row_id(action: :list, id: @record.id) %>
|
8
|
-
ActiveScaffold.update_row('<%= row_selector %>', '<%= escape_javascript(render(
|
8
|
+
ActiveScaffold.update_row('<%= row_selector %>', '<%= escape_javascript(render(list_record_view, record: @record)) %>');
|
9
9
|
if (action_link) action_link.target = $('#<%= row_selector %>');
|
10
10
|
<%= render 'update_calculations' %>
|
11
11
|
<% if params[:iframe] == 'true' %>
|
@@ -22,7 +22,7 @@ if (action_link) action_link.update_flash_messages('<%= escape_javascript(render
|
|
22
22
|
<%= render 'refresh_list', no_history: true %>
|
23
23
|
<% else %>
|
24
24
|
<% if @record %>
|
25
|
-
if (action_link) action_link.close('<%= escape_javascript(render(
|
25
|
+
if (action_link) action_link.close('<%= escape_javascript(render(list_record_view, record: @record)) %>');
|
26
26
|
<% else %>
|
27
27
|
if (action_link) action_link.close();
|
28
28
|
ActiveScaffold.delete_record_row('<%= element_row_id(action: :list, id: params[:id]) %>');
|
@@ -1,2 +1,2 @@
|
|
1
|
-
ActiveScaffold.update_row('<%= element_row_id(action: :list, id: @record&.id) %>', '<%= escape_javascript render(
|
1
|
+
ActiveScaffold.update_row('<%= element_row_id(action: :list, id: @record&.id) %>', '<%= escape_javascript render(list_record_view, record: @record) %>');
|
2
2
|
<%= render 'update_calculations' %>
|
@@ -1 +1 @@
|
|
1
|
-
ActiveScaffold.update_row('<%=element_row_id(action: 'list', id: @record.id)%>','<%=escape_javascript(render(
|
1
|
+
ActiveScaffold.update_row('<%=element_row_id(action: 'list', id: @record.id)%>','<%=escape_javascript(render(list_record_view, record: @record))%>');
|
@@ -195,6 +195,8 @@ module ActiveScaffold::Config
|
|
195
195
|
|
196
196
|
# To be called before freezing
|
197
197
|
def _cache_lazy_values
|
198
|
+
action_links.collection # ensure the collection group exist although it's empty
|
199
|
+
action_links.member # ensure the collection group exist although it's empty
|
198
200
|
action_links.each(&:name_to_cache) if cache_action_link_urls
|
199
201
|
columns.select(&:sortable?).each(&:sort)
|
200
202
|
columns.select(&:searchable?).each(&:search_sql)
|
@@ -189,12 +189,15 @@ module ActiveScaffold::DataStructures
|
|
189
189
|
# where the result of this action should insert in the display.
|
190
190
|
# for type: :collection, supported values are:
|
191
191
|
# :top
|
192
|
-
# :replace (
|
192
|
+
# :replace (to hide the entire table)
|
193
|
+
# :popup (popup with JS library)
|
193
194
|
# false (no attempt at positioning)
|
194
195
|
# for type: :member, supported values are:
|
195
196
|
# :before
|
196
|
-
# :replace
|
197
|
+
# :replace (to hide the record row)
|
197
198
|
# :after
|
199
|
+
# :table (to hide the entire table)
|
200
|
+
# :popup (popup with JS library)
|
198
201
|
# false (no attempt at positioning)
|
199
202
|
attr_writer :position
|
200
203
|
|
@@ -1,13 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
module ActiveScaffold::DataStructures
|
2
|
+
class ActionLinkSeparator
|
3
|
+
def initialize(weight)
|
4
|
+
@weight = weight
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
+
attr_reader :weight
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
def ==(other)
|
10
|
+
other == :separator
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
+
def name_to_cache; end # :nodoc:
|
14
|
+
end
|
13
15
|
end
|
@@ -24,7 +24,7 @@ module ActiveScaffold
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def format_human_condition(column, opt, from = nil, to = nil)
|
27
|
-
attribute = column.
|
27
|
+
attribute = column.label
|
28
28
|
opt ||= :between if from && to
|
29
29
|
opt ||= from ? '>=' : '<='
|
30
30
|
from = to = nil if opt&.in? %w[null not_null]
|
@@ -52,15 +52,15 @@ module ActiveScaffold
|
|
52
52
|
range_type, range = value['range'].downcase.split('_')
|
53
53
|
format = active_scaffold_human_condition_datetime_range_format(range_type, range)
|
54
54
|
from, = controller.class.datetime_from_to(column, value)
|
55
|
-
"#{column.
|
56
|
-
when 'PAST', 'FUTURE'
|
55
|
+
"#{column.label} = #{as_(value['range'].downcase).downcase} (#{I18n.l(from, format: format)})"
|
56
|
+
when 'PAST', 'FUTURE', 'BETWEEN'
|
57
57
|
from, to = controller.class.datetime_from_to(column, value)
|
58
|
-
"#{column.
|
58
|
+
"#{column.label} #{as_('between').downcase} #{I18n.l(from)} - #{I18n.l(to)}"
|
59
59
|
when 'null', 'not_null'
|
60
|
-
"#{column.
|
60
|
+
"#{column.label} #{as_(value['opt'].downcase).downcase}"
|
61
61
|
else
|
62
|
-
from,
|
63
|
-
"#{column.
|
62
|
+
from, = controller.class.datetime_from_to(column, value)
|
63
|
+
"#{column.label} #{as_(value['opt'].downcase).downcase} #{I18n.l(from)}"
|
64
64
|
end
|
65
65
|
end
|
66
66
|
alias active_scaffold_human_condition_time active_scaffold_human_condition_datetime
|
@@ -94,7 +94,7 @@ module ActiveScaffold
|
|
94
94
|
# end
|
95
95
|
|
96
96
|
def active_scaffold_human_condition_boolean(column, value)
|
97
|
-
attribute = column.
|
97
|
+
attribute = column.label
|
98
98
|
as_(:boolean, scope: :human_conditions, column: attribute, value: as_(value))
|
99
99
|
end
|
100
100
|
alias active_scaffold_human_condition_checkbox active_scaffold_human_condition_boolean
|
@@ -104,7 +104,7 @@ module ActiveScaffold
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def active_scaffold_human_condition_select(column, associated)
|
107
|
-
attribute = column.
|
107
|
+
attribute = column.label
|
108
108
|
if associated.is_a?(Hash)
|
109
109
|
return active_scaffold_human_condition_range(column, associated) unless associated['opt'] == '='
|
110
110
|
|
@@ -2,6 +2,10 @@ module ActiveScaffold
|
|
2
2
|
module Helpers
|
3
3
|
# Helpers that assist with the rendering of a List Column
|
4
4
|
module ListColumnHelpers
|
5
|
+
def list_record_view
|
6
|
+
'list_record'
|
7
|
+
end
|
8
|
+
|
5
9
|
def get_column_value(record, column)
|
6
10
|
record = record.send(column.delegated_association.name) if column.delegated_association
|
7
11
|
if record
|
@@ -1,11 +1,4 @@
|
|
1
1
|
class ActiveScaffold::Tableless < ActiveRecord::Base # rubocop:disable Rails/ApplicationRecord
|
2
|
-
class AssociationScope < ActiveRecord::Associations::AssociationScope
|
3
|
-
INSTANCE = create
|
4
|
-
def self.scope(association, connection)
|
5
|
-
INSTANCE.scope association, connection
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
2
|
class Connection < ActiveRecord::ConnectionAdapters::AbstractAdapter
|
10
3
|
attr_reader :klass
|
11
4
|
|
@@ -150,8 +143,11 @@ class ActiveScaffold::Tableless < ActiveRecord::Base # rubocop:disable Rails/App
|
|
150
143
|
|
151
144
|
class Relation < ::ActiveRecord::Relation
|
152
145
|
include RelationExtension
|
146
|
+
|
147
|
+
delegate :connection_pool, to: :model
|
153
148
|
end
|
154
149
|
class << self
|
150
|
+
delegate :schema_cache, to: :connection
|
155
151
|
def find(*ids)
|
156
152
|
ids.length == 1 ? all.find(*ids[0]) : super # rubocop:disable Rails/RedundantActiveRecordAllMethod
|
157
153
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Many, see README
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- app/views/active_scaffold_overrides/_list_with_header.html.erb
|
137
137
|
- app/views/active_scaffold_overrides/_messages.html.erb
|
138
138
|
- app/views/active_scaffold_overrides/_new_record.js.erb
|
139
|
+
- app/views/active_scaffold_overrides/_popup_adapter.html.erb
|
139
140
|
- app/views/active_scaffold_overrides/_refresh_create_form.js.erb
|
140
141
|
- app/views/active_scaffold_overrides/_refresh_list.js.erb
|
141
142
|
- app/views/active_scaffold_overrides/_render_field.js.erb
|