active_scaffold_kanban 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|