cm-admin 0.8.8 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/.stylelintrc.json +3 -0
- data/.github/workflows/linters.yml +31 -0
- data/Gemfile +5 -1
- data/Gemfile.lock +20 -9
- data/app/assets/stylesheets/cm_admin/base/auth.scss +1 -1
- data/app/assets/stylesheets/cm_admin/base/common.scss +3 -3
- data/app/assets/stylesheets/cm_admin/base/filters.scss +11 -17
- data/app/assets/stylesheets/cm_admin/base/form.scss +6 -12
- data/app/assets/stylesheets/cm_admin/base/main-nav.scss +3 -7
- data/app/assets/stylesheets/cm_admin/base/navbar.scss +3 -2
- data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +4 -6
- data/app/assets/stylesheets/cm_admin/base/scaffold.scss +45 -2
- data/app/assets/stylesheets/cm_admin/base/show.scss +11 -9
- data/app/assets/stylesheets/cm_admin/base/sidebar.scss +9 -19
- data/app/assets/stylesheets/cm_admin/base/table.scss +258 -325
- data/app/assets/stylesheets/cm_admin/base/tabs.scss +1 -2
- data/app/assets/stylesheets/cm_admin/components/_buttons.scss +19 -6
- data/app/assets/stylesheets/cm_admin/components/_drawer.scss +4 -8
- data/app/assets/stylesheets/cm_admin/components/_dropdown-popup.scss +1 -2
- data/app/assets/stylesheets/cm_admin/components/_input.scss +1 -1
- data/app/assets/stylesheets/cm_admin/components/_status-tag.scss +3 -2
- data/app/assets/stylesheets/cm_admin/helpers/_variable.scss +4 -0
- data/app/assets/stylesheets/cm_admin/scaffold.scss +2 -2
- data/app/controllers/cm_admin/resource_controller.rb +4 -2
- data/app/helpers/cm_admin/application_helper.rb +6 -0
- data/app/javascript/packs/cm_admin/filters.js +1 -1
- data/app/javascript/packs/cm_admin/scaffolds.js +4 -1
- data/app/models/concerns/cm_admin/file_import.rb +13 -7
- data/app/views/cm_admin/main/_actions_dropdown.html.slim +2 -2
- data/app/views/cm_admin/main/_associated_table.html.slim +25 -23
- data/app/views/cm_admin/main/_member_custom_action_modal.html.slim +1 -1
- data/app/views/cm_admin/main/_table.html.slim +14 -15
- data/app/views/cm_admin/main/associated_index.html.slim +4 -5
- data/app/views/cm_admin/main/index.html.slim +13 -14
- data/app/views/cm_admin/main/show.html.slim +2 -2
- data/app/views/layouts/cm_admin.html.slim +5 -5
- data/lib/cm_admin/model.rb +6 -1
- data/lib/cm_admin/models/action.rb +1 -1
- data/lib/cm_admin/models/column.rb +16 -3
- data/lib/cm_admin/models/dsl_method.rb +17 -4
- data/lib/cm_admin/models/field.rb +7 -1
- data/lib/cm_admin/models/utils/associations.rb +25 -0
- data/lib/cm_admin/version.rb +1 -1
- data/lib/cm_admin/view_helpers/field_display_helper.rb +25 -1
- data/lib/cm_admin/view_helpers/page_info_helper.rb +7 -3
- data/package-lock.json +2801 -158
- data/package.json +2 -0
- data/tmp/cache/webpacker/last-compilation-digest-development +1 -1
- data/yarn.lock +6949 -5133
- metadata +6 -3
@@ -1,9 +1,13 @@
|
|
1
|
+
require_relative 'utils/associations'
|
2
|
+
|
1
3
|
module CmAdmin
|
2
4
|
module Models
|
3
5
|
class Field
|
6
|
+
include Utils::Associations
|
4
7
|
|
5
8
|
attr_accessor :field_name, :label, :header, :field_type, :format, :precision, :height,
|
6
|
-
:width, :helper_method, :preview, :custom_link, :
|
9
|
+
:width, :helper_method, :preview, :custom_link, :prefix, :suffix, :tag_class,
|
10
|
+
:display_if, :association_name, :association_type
|
7
11
|
|
8
12
|
def initialize(field_name, attributes = {})
|
9
13
|
@field_name = field_name
|
@@ -14,6 +18,8 @@ module CmAdmin
|
|
14
18
|
self.height = 50 if self.field_type == :image && self.height.nil?
|
15
19
|
self.width = 50 if self.field_type == :image && self.width.nil?
|
16
20
|
self.display_if = lambda { |arg| return true } if self.display_if.nil?
|
21
|
+
|
22
|
+
validation_for_association
|
17
23
|
end
|
18
24
|
|
19
25
|
def set_default_values
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module CmAdmin
|
2
|
+
module Models
|
3
|
+
module Utils
|
4
|
+
module Associations
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
def validation_for_association
|
8
|
+
return unless field_type.to_s == "association"
|
9
|
+
|
10
|
+
raise ArgumentError, 'Expected association_name and association_type to be present' if association_name.nil? || association_type.nil?
|
11
|
+
|
12
|
+
if association_type.to_s == 'polymorphic'
|
13
|
+
raise ArgumentError, "Expected field_name - #{field_name} - to be an array of hash. Eg, [{table_name_1: 'column_name_1'}, {table_name_2: 'column_name_2'}]" unless field_name.is_a?(Array)
|
14
|
+
|
15
|
+
field_name.each do |element|
|
16
|
+
raise ArgumentError, "Expected element #{element} to be a hash. Eg, [{table_name_1: 'column_name_1'}, {table_name_2: 'column_name_2'}]" unless element.is_a?(Hash)
|
17
|
+
end
|
18
|
+
elsif ['belongs_to', 'has_one'].include? association_type.to_s
|
19
|
+
raise ArgumentError, "Expected field_name - #{field_name} to be a String or Symbol" unless field_name.is_a?(Symbol) || field_name.is_a?(String)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/cm_admin/version.rb
CHANGED
@@ -11,7 +11,14 @@ module CmAdmin
|
|
11
11
|
|
12
12
|
def show_field_label(ar_object, field)
|
13
13
|
content_tag(:div, class: "info-split__lhs") do
|
14
|
-
|
14
|
+
field_label = if field.label.present?
|
15
|
+
field.label.to_s
|
16
|
+
elsif field.association_type.to_s == "polymorphic"
|
17
|
+
ar_object.send(field.association_name).class.to_s.titleize
|
18
|
+
else
|
19
|
+
field.field_name.to_s.titleize
|
20
|
+
end
|
21
|
+
p = field_label
|
15
22
|
end
|
16
23
|
end
|
17
24
|
|
@@ -35,6 +42,9 @@ module CmAdmin
|
|
35
42
|
when :datetime
|
36
43
|
self.extend LocalTimeHelper
|
37
44
|
local_time(ar_object.send(field.field_name).strftime(field.format || "%d/%m/%Y").to_s) if ar_object.send(field.field_name)
|
45
|
+
when :date
|
46
|
+
self.extend LocalTimeHelper
|
47
|
+
local_date(ar_object.send(field.field_name), (field.format || '%B %e, %Y'))
|
38
48
|
when :text
|
39
49
|
ar_object.send(field.field_name)
|
40
50
|
when :custom
|
@@ -70,6 +80,14 @@ module CmAdmin
|
|
70
80
|
image_tag('https://cm-admin.s3.ap-south-1.amazonaws.com/gem_static_assets/image_not_available.png', height: 50, width: 50)
|
71
81
|
end
|
72
82
|
end
|
83
|
+
when :association
|
84
|
+
if field.association_type.to_s == 'polymorphic'
|
85
|
+
association_name = ar_object.send(field.association_name).class.to_s.underscore
|
86
|
+
field_name = find_field_name(field, association_name)
|
87
|
+
link_to ar_object.send(field.association_name).send(field_name), cm_admin.send("#{association_name}_show_path", ar_object.send(field.association_name).id)
|
88
|
+
elsif ['belongs_to', 'has_one'].include? field.association_type.to_s
|
89
|
+
link_to ar_object.send(field.association_name).send(field.field_name), cm_admin.send("#{field.association_name}_show_path", ar_object.send(field.association_name).id)
|
90
|
+
end
|
73
91
|
end
|
74
92
|
end
|
75
93
|
|
@@ -88,6 +106,12 @@ module CmAdmin
|
|
88
106
|
end
|
89
107
|
end
|
90
108
|
end
|
109
|
+
|
110
|
+
def find_field_name(field, association_name)
|
111
|
+
field.field_name.each do |hash|
|
112
|
+
return hash[association_name.to_sym] if hash.has_key?(association_name.to_sym)
|
113
|
+
end
|
114
|
+
end
|
91
115
|
end
|
92
116
|
end
|
93
117
|
end
|
@@ -71,14 +71,18 @@ module CmAdmin
|
|
71
71
|
|
72
72
|
def custom_action_button(custom_action, current_action_name)
|
73
73
|
if current_action_name == "index"
|
74
|
-
link_to custom_action
|
74
|
+
link_to custom_action_title(custom_action), @model.ar_model.table_name + '/' + custom_action.path, class: 'secondary-btn ml-2', method: custom_action.verb
|
75
75
|
elsif current_action_name == "show"
|
76
|
-
link_to custom_action
|
76
|
+
link_to custom_action_title(custom_action), custom_action.path.gsub(':id', params[:id]), class: 'secondary-btn ml-2', method: custom_action.verb
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
def custom_modal_button(custom_action)
|
81
|
-
link_to custom_action
|
81
|
+
link_to custom_action_title(custom_action), '', class: 'secondary-btn ml-2', data: { bs_toggle: "modal", bs_target: "##{custom_action.name.classify}Modal" }
|
82
|
+
end
|
83
|
+
|
84
|
+
def custom_action_title(custom_action)
|
85
|
+
custom_action.display_name.to_s.presence || custom_action.name.to_s.titleize
|
82
86
|
end
|
83
87
|
end
|
84
88
|
end
|