active_scaffold_kanban 0.1.1 → 0.1.3
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/views/active_scaffold_overrides/_kanban.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_kanban_card.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_list.html.erb +14 -0
- data/app/views/active_scaffold_overrides/_new_record.js.erb +1 -2
- data/lib/active_scaffold/actions/kanban.rb +1 -1
- data/lib/active_scaffold/config/kanban.rb +8 -1
- data/lib/active_scaffold/helpers/kanban_helpers.rb +19 -2
- data/lib/active_scaffold_kanban/config_list.rb +53 -0
- data/lib/active_scaffold_kanban/engine.rb +8 -0
- data/lib/active_scaffold_kanban/version.rb +1 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61f58e6990ca639f1f8f43cdfc1e614a32e73814a8238314ec9315673d6c1e63
|
4
|
+
data.tar.gz: fc874facb5a174965796350f54b70cf8a045e9730706b534baff2273f12d333d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0e202bd9f684561fcd84cf71e3e6fd09def878a3867b76bf9de2d397fe5cb9a5f24b0471b2d7576e31a671711d4f71c56a08f237199ffcd136192eef4311564
|
7
|
+
data.tar.gz: 2521cca6b1fa2ae2a1e81e9631d3c0097bde43fbe3f3c1623d1c9aa9474bd92e89b562b29ca8e0fe547abbef4ec2aab073cff111e3190633ea6043133cb2f5de
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% column_receive_only_method = override_helper_per_model(:kanban_column_receive_only?, active_scaffold_config.model) %>
|
2
2
|
<%= content_tag :div, class: 'kanban', data: kanban_data_attrs do %>
|
3
|
-
<%
|
3
|
+
<% user_kanban_columns.each do |label, value| %>
|
4
4
|
<%
|
5
5
|
id = value.id if @kanban_column.association
|
6
6
|
column_data = {value: id || value}
|
@@ -3,6 +3,7 @@
|
|
3
3
|
<div class="card-title">
|
4
4
|
<%= record.send(active_scaffold_config.kanban.title_method) %>
|
5
5
|
<div class="actions">
|
6
|
+
<%= loading_indicator_tag(action: :record, id: record.id) %>
|
6
7
|
<%= display_action_links(active_scaffold_config.action_links.member, record, for: record) %>
|
7
8
|
</div>
|
8
9
|
</div>
|
@@ -1,4 +1,18 @@
|
|
1
1
|
<% if @kanban_view %>
|
2
|
+
<% if active_scaffold_config.list.messages_above_header %>
|
3
|
+
<table>
|
4
|
+
<tbody>
|
5
|
+
<tr>
|
6
|
+
<td class="messages-container">
|
7
|
+
<%= render 'list_messages_content' %>
|
8
|
+
</td>
|
9
|
+
</tr>
|
10
|
+
</tbody>
|
11
|
+
</table>
|
12
|
+
<% end %>
|
13
|
+
<table>
|
14
|
+
<%= render 'list_messages', column_count: 1 %>
|
15
|
+
</table>
|
2
16
|
<%= render 'kanban' %>
|
3
17
|
<% else %>
|
4
18
|
<%= render :super %>
|
@@ -1,7 +1,6 @@
|
|
1
1
|
<% if @kanban_view %>
|
2
2
|
<% selector = ".kanban-column[data-value=\"#{@record.send(@kanban_column.name)}\"] .cards" %>
|
3
|
-
|
4
|
-
jQuery(<%=raw selector.to_json %>).prepend('<%= escape_javascript render('kanban_card', record: @record) %>');
|
3
|
+
ActiveScaffold.create_record_row('<%= active_scaffold_id %>', '<%= escape_javascript render('kanban_card', record: @record) %>', <%= {insert_at: insert_at, body_selector: selector}.to_json.html_safe %>);
|
5
4
|
jQuery(<%=raw selector.to_json %>).sortable('refresh');
|
6
5
|
<% else %>
|
7
6
|
<%= render :super %>
|
@@ -4,7 +4,7 @@ module ActiveScaffold
|
|
4
4
|
module Actions
|
5
5
|
module Kanban
|
6
6
|
def self.included(base)
|
7
|
-
base.before_action :setup_kanban
|
7
|
+
base.before_action :setup_kanban
|
8
8
|
base.after_action :reorder_cards, only: :update_column
|
9
9
|
base.after_action :set_error_status_code, only: [:update_column, :reorder]
|
10
10
|
end
|
@@ -10,6 +10,7 @@ module ActiveScaffold
|
|
10
10
|
@title_method = self.class.title_method
|
11
11
|
@description_method = self.class.description_method
|
12
12
|
@replace_list_view = self.class.replace_list_view
|
13
|
+
@links_position = self.class.links_position
|
13
14
|
end
|
14
15
|
|
15
16
|
# global level configuration
|
@@ -24,6 +25,10 @@ module ActiveScaffold
|
|
24
25
|
# enable it to replace list view with kanban, instead of being optional with view=kanban param
|
25
26
|
cattr_accessor :replace_list_view, instance_accessor: false
|
26
27
|
|
28
|
+
# the position to set on actions used in kanban cards
|
29
|
+
cattr_accessor :links_position, instance_accessor: false
|
30
|
+
@@links_position = :table
|
31
|
+
|
27
32
|
# the model's method used for card's title
|
28
33
|
attr_accessor :title_method
|
29
34
|
|
@@ -36,8 +41,10 @@ module ActiveScaffold
|
|
36
41
|
# the model's column used for kanban columns
|
37
42
|
attr_accessor :group_by_column
|
38
43
|
|
44
|
+
attr_accessor :links_position
|
45
|
+
|
39
46
|
UserSettings.class_eval do
|
40
|
-
user_attr :title_method, :description_method, :group_by_column, :replace_list_view
|
47
|
+
user_attr :title_method, :description_method, :group_by_column, :replace_list_view, :links_position
|
41
48
|
end
|
42
49
|
end
|
43
50
|
end
|
@@ -1,6 +1,23 @@
|
|
1
1
|
module ActiveScaffold
|
2
2
|
module Helpers
|
3
3
|
module KanbanHelpers
|
4
|
+
def list_record_view
|
5
|
+
@kanban_view ? 'kanban_card' : 'list_record'
|
6
|
+
end
|
7
|
+
|
8
|
+
def user_kanban_columns
|
9
|
+
if active_scaffold_config.actions.include?(:config_list) && config_list_params
|
10
|
+
columns = available_kanban_columns.index_by { |_, value| (@kanban_column.association ? value.id : value).to_s.to_sym }
|
11
|
+
config_list_params.map { |value| columns[value] }
|
12
|
+
else
|
13
|
+
available_kanban_columns
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def available_kanban_columns
|
18
|
+
@available_kanban_columns ||= send(override_helper_per_model(:kanban_columns, active_scaffold_config.model))
|
19
|
+
end
|
20
|
+
|
4
21
|
def kanban_columns
|
5
22
|
record = active_scaffold_config.model.new
|
6
23
|
if @kanban_column.association
|
@@ -39,8 +56,8 @@ module ActiveScaffold
|
|
39
56
|
|
40
57
|
def action_link_html_options(link, record, options)
|
41
58
|
options = super
|
42
|
-
if @kanban_view && link.
|
43
|
-
options[:data][:position] =
|
59
|
+
if @kanban_view && link.type == :member && link.position.in?(%i[after replace before])
|
60
|
+
options[:data][:position] = active_scaffold_config.kanban.links_position
|
44
61
|
end
|
45
62
|
options
|
46
63
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveScaffoldKanban
|
4
|
+
module ConfigListAction
|
5
|
+
def config_list_session_storage_key
|
6
|
+
@kanban_view ? "#{super}:kanban" : super
|
7
|
+
end
|
8
|
+
|
9
|
+
def config_list_controller_name
|
10
|
+
@kanban_view ? "#{super}:kanban" : super
|
11
|
+
end
|
12
|
+
|
13
|
+
def config_list_session_storage(storage = false)
|
14
|
+
if @kanban_view
|
15
|
+
hsh = super()
|
16
|
+
return hsh if storage
|
17
|
+
hsh['kanban'] || {}
|
18
|
+
else
|
19
|
+
super()
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_config_list_params
|
24
|
+
super
|
25
|
+
config_list_session_storage(true).delete 'kanban' if @kanban_view
|
26
|
+
end
|
27
|
+
|
28
|
+
def save_config_list_params(...)
|
29
|
+
unless active_scaffold_config.config_list.save_to_user && active_scaffold_current_user
|
30
|
+
config_list_session_storage(true)['kanban'] ||= {} if @kanban_view
|
31
|
+
end
|
32
|
+
super
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module ConfigListHelpers
|
37
|
+
def config_list_sorting?
|
38
|
+
super unless @kanban_view
|
39
|
+
end
|
40
|
+
|
41
|
+
def config_list_columns
|
42
|
+
if @kanban_view
|
43
|
+
columns = user_kanban_columns # get selected columns first, to keep sorting
|
44
|
+
columns += available_kanban_columns - columns # add not selected columns if user has selected some
|
45
|
+
columns.map do |label, value|
|
46
|
+
[label, (@kanban_column.association ? value.id : value).to_s.to_sym]
|
47
|
+
end
|
48
|
+
else
|
49
|
+
super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -5,5 +5,13 @@ module ActiveScaffoldKanban
|
|
5
5
|
ActionView::Base.send :include, ActiveScaffold::Helpers::KanbanHelpers
|
6
6
|
end
|
7
7
|
end
|
8
|
+
|
9
|
+
initializer 'active_scaffold_kanban.config_list' do
|
10
|
+
ActiveSupport.on_load :active_scaffold_config_list do
|
11
|
+
require 'active_scaffold_kanban/config_list'
|
12
|
+
ActiveScaffold::Actions::ConfigList.prepend(ActiveScaffoldKanban::ConfigListAction)
|
13
|
+
ActiveScaffold::Helpers::ConfigListHelpers.prepend(ActiveScaffoldKanban::ConfigListHelpers)
|
14
|
+
end
|
15
|
+
end
|
8
16
|
end
|
9
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold_kanban
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergio Cambra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_scaffold
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.7.
|
19
|
+
version: 3.7.11
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.7.
|
26
|
+
version: 3.7.11
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: active_scaffold_sortable
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.2.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: active_scaffold_config_list
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.6.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.6.0
|
41
55
|
description: User may reorder records and change to a different column
|
42
56
|
email: activescaffold@googlegroups.com
|
43
57
|
executables: []
|
@@ -58,6 +72,7 @@ files:
|
|
58
72
|
- lib/active_scaffold/config/kanban.rb
|
59
73
|
- lib/active_scaffold/helpers/kanban_helpers.rb
|
60
74
|
- lib/active_scaffold_kanban.rb
|
75
|
+
- lib/active_scaffold_kanban/config_list.rb
|
61
76
|
- lib/active_scaffold_kanban/engine.rb
|
62
77
|
- lib/active_scaffold_kanban/version.rb
|
63
78
|
homepage: https://activescaffold.eu
|