card-mod-rules 0.11.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 +7 -0
- data/lib/javascript/script_rules.js.coffee +23 -0
- data/set/right/self.rb +3 -0
- data/set/right/type_plus_right.rb +4 -0
- data/set/rstar/rule_user.rb +8 -0
- data/set/rule/bar_view.rb +92 -0
- data/set/rule/bridge_rules_editor.rb +28 -0
- data/set/rule/editor.rb +110 -0
- data/set/rule/html_views.rb +13 -0
- data/set/rule/quick_editor.rb +39 -0
- data/set/rule/quick_editor/quick_edit.haml +8 -0
- data/set/rule/quick_editor/set_info.haml +10 -0
- data/set/rule/rule_form.rb +57 -0
- data/set/rule/rule_form/buttons.rb +46 -0
- data/set/rule/rule_form/form_elements.rb +52 -0
- data/set/rule/rule_form/rule_form.haml +20 -0
- data/set/rule/rule_form/rule_set_radio.rb +83 -0
- data/set/rule/rule_form/set_selection.rb +39 -0
- data/set/rule/rules.rb +109 -0
- data/set/self/cardtype.rb +42 -0
- data/set/self/recent_settings.rb +7 -0
- data/set/self/script_rules.rb +3 -0
- data/set/type/set.rb +107 -0
- data/set/type/set/html_views.rb +51 -0
- data/set/type/set/html_views/group_panel.haml +14 -0
- data/set/type/set/html_views/rule_lists.rb +42 -0
- data/set/type/set/html_views/template.rb +12 -0
- data/set/type/set/rules_filter.rb +60 -0
- data/set/type/set/setting_lists.rb +76 -0
- data/set/type/setting.rb +79 -0
- metadata +117 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
format :html do
|
2
|
+
before :open do
|
3
|
+
voo.hide :template_closer
|
4
|
+
end
|
5
|
+
|
6
|
+
view :core, cache: :never do
|
7
|
+
filtered_rule_list :bar_rule_list
|
8
|
+
end
|
9
|
+
|
10
|
+
view :nest_rules, cache: :never, unknown: true, wrap: :slot do
|
11
|
+
filtered_rule_list :quick_edit_rule_list, :field_related_rules, :related, mark: ""
|
12
|
+
end
|
13
|
+
|
14
|
+
view :modal_nest_rules, cache: :never, unknown: true,
|
15
|
+
wrap: { modal: { title: "Rules for nest" } } do
|
16
|
+
filtered_rule_list :quick_edit_rule_list, :field_related_rules, :self
|
17
|
+
end
|
18
|
+
|
19
|
+
view :bridge_rules_tab, cache: :never do
|
20
|
+
filtered_rule_list :pill_rule_list, :common, :related, mark: ""
|
21
|
+
end
|
22
|
+
|
23
|
+
def filtered_rule_list view, *filter_args
|
24
|
+
[rules_filter(view, *filter_args),
|
25
|
+
render(view)]
|
26
|
+
end
|
27
|
+
|
28
|
+
view :set_label do
|
29
|
+
wrap_with :strong, card.label, class: "set-label"
|
30
|
+
end
|
31
|
+
|
32
|
+
Card::Setting.groups.each_key do |group_key|
|
33
|
+
view group_key.to_sym do
|
34
|
+
next unless card.visible_settings(group_key).present?
|
35
|
+
|
36
|
+
haml :group_panel, group_key: group_key
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def setting_group default=:common
|
41
|
+
voo&.filter&.to_sym || params[:group]&.to_sym || default
|
42
|
+
end
|
43
|
+
|
44
|
+
view :input do
|
45
|
+
"Cannot currently edit Sets" # LOCALIZE
|
46
|
+
end
|
47
|
+
|
48
|
+
view :one_line_content, wrap: {} do
|
49
|
+
""
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
- heading_id = "heading-#{group_key}"
|
2
|
+
- collapse_id = "collapse-#{card.name.safe_key}-#{group_key}"
|
3
|
+
.card
|
4
|
+
.card-header{ role: "tab", id: heading_id }
|
5
|
+
%h5.mb-0
|
6
|
+
= link_to (Card::Setting.group_names[group_key] || group_key.to_s),
|
7
|
+
href: "##{collapse_id}",
|
8
|
+
"data-toggle": "collapse", "aria-expanded": "false",
|
9
|
+
"data-parent": "#accordion", "aria-controls": collapse_id
|
10
|
+
.panel-collapse.collapse{ id: collapse_id,
|
11
|
+
role: "tabpanel",
|
12
|
+
"aria-labelledby": heading_id }
|
13
|
+
.card-body
|
14
|
+
= bar_rule_list card.visible_settings(group_key).map(&:codename)
|
@@ -0,0 +1,42 @@
|
|
1
|
+
format :html do
|
2
|
+
view :quick_edit_rule_list, cache: :never, wrap: { slot: { class: "rule-list" } } do
|
3
|
+
quick_edit_rule_list setting_list_from_params(:field_related)
|
4
|
+
end
|
5
|
+
|
6
|
+
view :bar_rule_list, cache: :never, wrap: { slot: { class: "rule-list" } } do
|
7
|
+
bar_rule_list setting_list_from_params
|
8
|
+
end
|
9
|
+
|
10
|
+
view :pill_rule_list, cache: :never, wrap: { slot: { class: "rule-list" } } do
|
11
|
+
pill_rule_list setting_list_from_params
|
12
|
+
end
|
13
|
+
|
14
|
+
def quick_edit_rule_list settings
|
15
|
+
list_tag class: "nav nav-pills flex-column bridge-pills" do
|
16
|
+
settings.map { |setting| rule_list_item setting, :quick_edit }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def pill_rule_list settings
|
21
|
+
list_items =
|
22
|
+
settings.map { |setting| rule_list_item setting, :rule_bridge_link }
|
23
|
+
bridge_pills list_items
|
24
|
+
end
|
25
|
+
|
26
|
+
def bar_rule_list settings
|
27
|
+
list_items =
|
28
|
+
settings.map { |setting| rule_list_item setting, :bar, hide: :full_name }
|
29
|
+
list_items.join("\n").html_safe
|
30
|
+
end
|
31
|
+
|
32
|
+
def rule_list_item setting, view, opts={}
|
33
|
+
return "" unless show_view? setting
|
34
|
+
|
35
|
+
rule_card = card.fetch setting, new: {}
|
36
|
+
nest(rule_card, opts.merge(view: view)).html_safe
|
37
|
+
end
|
38
|
+
|
39
|
+
def setting_list_from_params default=:common
|
40
|
+
setting_list setting_group(default)
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
format :html do
|
2
|
+
def rules_filter view, selected_setting=nil, set_options=nil, path_opts={}
|
3
|
+
form_tag path(path_opts.merge(view: view)),
|
4
|
+
remote: true, method: "get", role: "filter",
|
5
|
+
"data-slot-selector": ".card-slot.rule-list",
|
6
|
+
class: classy("nodblclick slotter form-inline slim-select2 m-2") do
|
7
|
+
output [
|
8
|
+
label_tag(:view, icon_tag("filter_list"), class: "mr-2"),
|
9
|
+
setting_select(selected_setting),
|
10
|
+
set_select(set_options)
|
11
|
+
].flatten
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def set_select set_options
|
16
|
+
return filter_text.html_safe unless set_options
|
17
|
+
|
18
|
+
[content_tag(:span, "rules that apply to set ...", class: "mx-2 small"),
|
19
|
+
set_select_tag(set_options)]
|
20
|
+
end
|
21
|
+
|
22
|
+
def setting_select selected=nil
|
23
|
+
select_tag(:group, grouped_options_for_select(setting_options, selected),
|
24
|
+
class: "_submit-on-select form-control",
|
25
|
+
"data-select2-id": "#{unique_id}-#{Time.now.to_i}")
|
26
|
+
end
|
27
|
+
|
28
|
+
def filter_text
|
29
|
+
wrap_with :span, class: "mx-2 small" do
|
30
|
+
"rules that apply to #{_render_set_label.downcase}" # LOCALIZE
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def set_select_tag set_options=:related
|
35
|
+
select_tag(:mark, set_select_options(set_options),
|
36
|
+
class: "_submit-on-select form-control _close-rule-overlay-on-select",
|
37
|
+
"data-minimum-results-for-search": "Infinity",
|
38
|
+
"data-select2-id": "#{unique_id}-#{Time.now.to_i}")
|
39
|
+
end
|
40
|
+
|
41
|
+
def selected_set
|
42
|
+
params[:set]
|
43
|
+
end
|
44
|
+
|
45
|
+
def set_select_options set_options
|
46
|
+
options =
|
47
|
+
if set_options == :related
|
48
|
+
related_set_options
|
49
|
+
else
|
50
|
+
[[card.label, card.name.url_key]]
|
51
|
+
end
|
52
|
+
options_for_select(options, selected_set)
|
53
|
+
end
|
54
|
+
|
55
|
+
def related_set_options
|
56
|
+
card.related_sets(true).map do |name, label|
|
57
|
+
[label, name.to_name.url_key]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
format :html do
|
2
|
+
SETTING_OPTIONS = [["Common", :common_rules],
|
3
|
+
["All", :all_rules],
|
4
|
+
["Field", :field_related_rules],
|
5
|
+
["Recent", :recent_rules]].freeze
|
6
|
+
|
7
|
+
COMMON_SETTINGS = %i[create read update delete structure default guide].freeze
|
8
|
+
FIELD_SETTINGS = %i[default help].freeze
|
9
|
+
|
10
|
+
def setting_options
|
11
|
+
[["Categories", SETTING_OPTIONS],
|
12
|
+
["Groups", Card::Setting.group_names.keys],
|
13
|
+
["Single rules", card.visible_setting_codenames]]
|
14
|
+
end
|
15
|
+
|
16
|
+
def field_settings
|
17
|
+
%i[default help input_type content_options content_option_view]
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param val setting category, setting group or single setting
|
21
|
+
def setting_list val
|
22
|
+
category_setting_list(val) || group_setting_list(val) || [val]
|
23
|
+
end
|
24
|
+
|
25
|
+
def group_setting_list group
|
26
|
+
card.visible_settings(group).map(&:codename) if Card::Setting.groups[group]
|
27
|
+
end
|
28
|
+
|
29
|
+
def category_setting_list cat
|
30
|
+
case cat
|
31
|
+
when :all, :all_rules
|
32
|
+
card.visible_setting_codenames.sort
|
33
|
+
when :recent, :recent_rules
|
34
|
+
recent_settings
|
35
|
+
when :common, :common_rules
|
36
|
+
card.visible_setting_codenames & COMMON_SETTINGS
|
37
|
+
when :field_related, :field_related_rules
|
38
|
+
field_related_settings
|
39
|
+
when :nest_editor_field_related
|
40
|
+
nest_editor_field_related_settings
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def nest_editor_field_related_settings
|
45
|
+
field_settings
|
46
|
+
# & card.visible_settings(nil, card.prototype_default_type_id).map(&:codename)
|
47
|
+
end
|
48
|
+
|
49
|
+
def field_related_settings
|
50
|
+
field_settings # card.visible_setting_codenames &
|
51
|
+
end
|
52
|
+
|
53
|
+
def recent_settings
|
54
|
+
recent_settings = Card[:recent_settings].item_cards.map(&:codename)
|
55
|
+
recent_settings.map(&:to_sym) & card.visible_setting_codenames
|
56
|
+
end
|
57
|
+
|
58
|
+
view :all_rules_list do
|
59
|
+
pill_rule_list card.visible_setting_codenames.sort
|
60
|
+
end
|
61
|
+
|
62
|
+
view :recent_rules_list do
|
63
|
+
recent_settings = Card[:recent_settings].item_cards.map(&:codename)
|
64
|
+
settings = recent_settings.map(&:to_sym) & card.visible_setting_codenames
|
65
|
+
pill_rule_list settings
|
66
|
+
end
|
67
|
+
|
68
|
+
view :common_rules_list do
|
69
|
+
settings = card.visible_setting_codenames & COMMON_SETTINGS # "&" = set intersection
|
70
|
+
pill_rule_list settings
|
71
|
+
end
|
72
|
+
|
73
|
+
view :field_related_rules_list do
|
74
|
+
pill_rule_list field_related_settings
|
75
|
+
end
|
76
|
+
end
|
data/set/type/setting.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# require "json"
|
2
|
+
|
3
|
+
def self.member_names
|
4
|
+
@@member_names ||= begin
|
5
|
+
Card.search(
|
6
|
+
{ type_id: SettingID, return: "key" },
|
7
|
+
"all setting cards"
|
8
|
+
).each_with_object({}) do |card_key, hash|
|
9
|
+
hash[card_key] = true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
format :data do
|
15
|
+
view :core do
|
16
|
+
cql = { left: { type: SetID },
|
17
|
+
right: card.id,
|
18
|
+
limit: 0 }
|
19
|
+
Card.search(cql).compact.map { |c| nest c }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def count
|
24
|
+
Card.search left: { type: SetID }, right: id, limit: 0, return: :count
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_classes_with_rules
|
28
|
+
Card.set_patterns.reverse.map do |set_class|
|
29
|
+
rules = rules_for_set_class set_class
|
30
|
+
[set_class, rules] unless rules.empty?
|
31
|
+
end.compact
|
32
|
+
end
|
33
|
+
|
34
|
+
def rules_for_set_class set_class
|
35
|
+
cql = { left: { type: SetID }, right: id, sort: %w[content name], limit: 0 }
|
36
|
+
cql[:left][(set_class.anchorless? ? :id : :right_id)] = set_class.pattern_id
|
37
|
+
Card.search cql
|
38
|
+
end
|
39
|
+
|
40
|
+
format :html do
|
41
|
+
def rule_link rule, text
|
42
|
+
link_to_card rule, text, path: { view: :modal_rule },
|
43
|
+
slotter: true, "data-modal-class": "modal-lg"
|
44
|
+
end
|
45
|
+
|
46
|
+
view :core do
|
47
|
+
haml do
|
48
|
+
<<-'HAML'.strip_heredoc
|
49
|
+
= _render_rule_help
|
50
|
+
%h3 All #{card.name.tr "*", ""} rules that apply to
|
51
|
+
- card.set_classes_with_rules.each do |klass, rules|
|
52
|
+
%p
|
53
|
+
%h5
|
54
|
+
= klass.generic_label.downcase
|
55
|
+
- if klass.anchorless?
|
56
|
+
= nest rules.first, view: :bar, show: :full_name
|
57
|
+
- else
|
58
|
+
- rules.each do |rule|
|
59
|
+
= nest rule, view: :bar
|
60
|
+
HAML
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Because +*help content renders in "template" mode when you render its content
|
65
|
+
# directly, we render the help text in the context of the *all+<setting> card
|
66
|
+
view :rule_help do
|
67
|
+
nest [:all, card.name], view: :rule_help
|
68
|
+
end
|
69
|
+
|
70
|
+
view :one_line_content do
|
71
|
+
render_rule_help
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
format :json do
|
76
|
+
def items_for_export
|
77
|
+
Card.search left: { type: SetID }, right: card.id, limit: 0
|
78
|
+
end
|
79
|
+
end
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: card-mod-rules
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.11.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ethan McCutchen
|
8
|
+
- Philipp Kühl
|
9
|
+
- Gerry Gleason
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2020-12-24 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: card
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.101.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 1.101.0
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: card-mod-format
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 0.11.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.11.0
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: card-mod-search
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.11.0
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.11.0
|
57
|
+
description: ''
|
58
|
+
email:
|
59
|
+
- info@decko.org
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- lib/javascript/script_rules.js.coffee
|
65
|
+
- set/right/self.rb
|
66
|
+
- set/right/type_plus_right.rb
|
67
|
+
- set/rstar/rule_user.rb
|
68
|
+
- set/rule/bar_view.rb
|
69
|
+
- set/rule/bridge_rules_editor.rb
|
70
|
+
- set/rule/editor.rb
|
71
|
+
- set/rule/html_views.rb
|
72
|
+
- set/rule/quick_editor.rb
|
73
|
+
- set/rule/quick_editor/quick_edit.haml
|
74
|
+
- set/rule/quick_editor/set_info.haml
|
75
|
+
- set/rule/rule_form.rb
|
76
|
+
- set/rule/rule_form/buttons.rb
|
77
|
+
- set/rule/rule_form/form_elements.rb
|
78
|
+
- set/rule/rule_form/rule_form.haml
|
79
|
+
- set/rule/rule_form/rule_set_radio.rb
|
80
|
+
- set/rule/rule_form/set_selection.rb
|
81
|
+
- set/rule/rules.rb
|
82
|
+
- set/self/cardtype.rb
|
83
|
+
- set/self/recent_settings.rb
|
84
|
+
- set/self/script_rules.rb
|
85
|
+
- set/type/set.rb
|
86
|
+
- set/type/set/html_views.rb
|
87
|
+
- set/type/set/html_views/group_panel.haml
|
88
|
+
- set/type/set/html_views/rule_lists.rb
|
89
|
+
- set/type/set/html_views/template.rb
|
90
|
+
- set/type/set/rules_filter.rb
|
91
|
+
- set/type/set/setting_lists.rb
|
92
|
+
- set/type/setting.rb
|
93
|
+
homepage: http://decko.org
|
94
|
+
licenses:
|
95
|
+
- GPL-3.0
|
96
|
+
metadata:
|
97
|
+
card-mod: rules
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '2.5'
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubygems_version: 3.0.3
|
114
|
+
signing_key:
|
115
|
+
specification_version: 4
|
116
|
+
summary: rules
|
117
|
+
test_files: []
|