card-mod-rules 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|