cm-admin 0.2.0 → 0.3.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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +6 -1
  6. data/Gemfile.lock +118 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +6 -40
  9. data/app/assets/images/logo.png +0 -0
  10. data/{lib/generators/cm_admin/templates/assets/stylesheets → app/assets/stylesheets/cm_admin}/base/auth.scss +16 -6
  11. data/app/assets/stylesheets/cm_admin/base/common.scss +237 -0
  12. data/app/assets/stylesheets/cm_admin/base/filters.scss +199 -0
  13. data/app/assets/stylesheets/cm_admin/base/form.scss +262 -0
  14. data/app/assets/stylesheets/cm_admin/base/main-nav.scss +47 -0
  15. data/app/assets/stylesheets/cm_admin/base/navbar.scss +67 -0
  16. data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +69 -0
  17. data/app/assets/stylesheets/cm_admin/base/scaffold.scss +61 -0
  18. data/app/assets/stylesheets/cm_admin/base/show.scss +54 -0
  19. data/app/assets/stylesheets/cm_admin/base/sidebar.scss +225 -0
  20. data/app/assets/stylesheets/cm_admin/base/table.scss +303 -0
  21. data/app/assets/stylesheets/cm_admin/base/tabs.scss +26 -0
  22. data/app/assets/stylesheets/cm_admin/cm_admin.css.scss +26 -0
  23. data/app/assets/stylesheets/cm_admin/components/_alerts.scss +101 -0
  24. data/app/assets/stylesheets/cm_admin/components/_buttons.scss +135 -0
  25. data/app/assets/stylesheets/cm_admin/components/_dropdown-popup.scss +141 -0
  26. data/app/assets/stylesheets/cm_admin/components/_input.scss +274 -0
  27. data/app/assets/stylesheets/cm_admin/components/_modal.scss +34 -0
  28. data/app/assets/stylesheets/cm_admin/components/_range.scss +20 -0
  29. data/app/assets/stylesheets/cm_admin/components/_status-tag.scss +67 -0
  30. data/app/assets/stylesheets/cm_admin/components/index.scss +7 -0
  31. data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +7 -0
  32. data/app/assets/stylesheets/cm_admin/helpers/_mixins.scss +20 -0
  33. data/app/assets/stylesheets/cm_admin/helpers/_variable.scss +86 -0
  34. data/app/assets/stylesheets/cm_admin/helpers/index.scss +2 -0
  35. data/app/controllers/cm_admin/application_controller.rb +6 -0
  36. data/app/controllers/cm_admin/exports_controller.rb +16 -0
  37. data/app/controllers/cm_admin/main_controller.rb +8 -0
  38. data/app/helpers/cm_admin/application_helper.rb +11 -0
  39. data/app/javascript/packs/cm_admin/application.js +9 -0
  40. data/app/javascript/packs/cm_admin/filters.js +32 -0
  41. data/app/javascript/packs/cm_admin/scaffolds.js +14 -0
  42. data/app/views/cm_admin/main/_cm_pagy_nav.html.slim +23 -0
  43. data/app/views/cm_admin/main/_filters.html.slim +10 -0
  44. data/app/views/cm_admin/main/_table.html.slim +59 -0
  45. data/app/views/cm_admin/main/_top_navbar.html.slim +25 -0
  46. data/app/views/cm_admin/main/dashboard.html.slim +1 -0
  47. data/app/views/cm_admin/main/edit.html.slim +19 -0
  48. data/app/views/cm_admin/main/index.html.slim +9 -0
  49. data/app/views/cm_admin/main/new.html.slim +22 -0
  50. data/app/views/cm_admin/main/show.html.slim +13 -0
  51. data/app/views/layouts/_left_sidebar_nav.html.slim +30 -0
  52. data/app/views/layouts/cm_admin.html.slim +18 -0
  53. data/bin/console +1 -0
  54. data/bin/webpack +18 -0
  55. data/bin/webpack-dev-server +18 -0
  56. data/cm_admin.gemspec +20 -31
  57. data/{lib → config}/.DS_Store +0 -0
  58. data/config/initializers/active_record_extension.rb +9 -0
  59. data/config/routes.rb +18 -0
  60. data/config/webpack/development.js +5 -0
  61. data/config/webpack/environment.js +12 -0
  62. data/config/webpack/production.js +5 -0
  63. data/config/webpack/test.js +5 -0
  64. data/config/webpacker.yml +92 -0
  65. data/lib/c.png +0 -0
  66. data/lib/cm_admin.rb +31 -2
  67. data/lib/cm_admin/constants.rb +33 -0
  68. data/lib/cm_admin/engine.rb +38 -0
  69. data/lib/cm_admin/model.rb +262 -0
  70. data/lib/cm_admin/models/action.rb +22 -0
  71. data/lib/cm_admin/models/actions/blocks.rb +25 -0
  72. data/lib/cm_admin/models/blocks.rb +19 -0
  73. data/lib/cm_admin/models/column.rb +16 -0
  74. data/lib/cm_admin/models/export.rb +43 -0
  75. data/lib/cm_admin/models/field.rb +14 -0
  76. data/lib/cm_admin/models/filter.rb +30 -0
  77. data/lib/cm_admin/utils.rb +67 -0
  78. data/lib/cm_admin/version.rb +1 -1
  79. data/lib/cm_admin/view_helpers.rb +72 -0
  80. data/lib/cm_admin/view_helpers/field_column_helper.rb +23 -0
  81. data/lib/cm_admin/view_helpers/form_field_helper.rb +16 -0
  82. data/lib/cm_admin/view_helpers/form_helper.rb +55 -0
  83. data/lib/cm_admin/view_helpers/navigation_helper.rb +18 -0
  84. data/lib/cm_admin/view_helpers/page_info_helper.rb +21 -0
  85. data/lib/generators/cm_admin/install_generator.rb +10 -32
  86. data/lib/generators/cm_admin/templates/cm_admin_initializer.rb +4 -0
  87. data/lib/tasks/webpack_install.rake +63 -0
  88. data/package.json +18 -0
  89. data/postcss.config.js +12 -0
  90. data/yarn-error.log +44 -0
  91. data/yarn.lock +6903 -0
  92. metadata +123 -48
  93. data/CODE_OF_CONDUCT.md +0 -74
  94. data/lib/generators/cm_admin/USAGE +0 -8
  95. data/lib/generators/cm_admin/templates/assets/images/cm.png +0 -0
  96. data/lib/generators/cm_admin/templates/assets/stylesheets/application.css.scss +0 -33
  97. data/lib/generators/cm_admin/templates/assets/stylesheets/base/_variable.scss +0 -14
  98. data/lib/generators/cm_admin/templates/assets/stylesheets/base/form.scss +0 -125
  99. data/lib/generators/cm_admin/templates/assets/stylesheets/base/input-styles.scss +0 -72
  100. data/lib/generators/cm_admin/templates/assets/stylesheets/base/main-nav.scss +0 -79
  101. data/lib/generators/cm_admin/templates/assets/stylesheets/base/scaffold.scss +0 -95
  102. data/lib/generators/cm_admin/templates/assets/stylesheets/base/show.scss +0 -88
  103. data/lib/generators/cm_admin/templates/assets/stylesheets/base/sidebar.scss +0 -69
  104. data/lib/generators/cm_admin/templates/assets/stylesheets/base/table.scss +0 -246
  105. data/lib/generators/cm_admin/templates/layouts/_navbar.html.slim +0 -8
  106. data/lib/generators/cm_admin/templates/layouts/_side_navbar.html.slim +0 -12
  107. data/lib/generators/cm_admin/templates/layouts/application.html.slim +0 -20
  108. data/lib/generators/cm_admin/templates/layouts/initializer.rb +0 -2
  109. data/lib/generators/cm_admin/templates/views/_form.erb +0 -67
  110. data/lib/generators/cm_admin/templates/views/_table.erb +0 -22
  111. data/lib/generators/cm_admin/templates/views/edit.erb +0 -10
  112. data/lib/generators/cm_admin/templates/views/index.erb +0 -11
  113. data/lib/generators/cm_admin/templates/views/new.erb +0 -10
  114. data/lib/generators/cm_admin/templates/views/reset_password.erb +0 -12
  115. data/lib/generators/cm_admin/templates/views/show.erb +0 -18
  116. data/lib/generators/cm_admin/templates/views/sign_in.erb +0 -18
  117. data/lib/generators/cm_admin/view_generator.rb +0 -78
@@ -1,8 +0,0 @@
1
- .main-nav
2
- .main-nav__lhs
3
- = yield :bread_crumb
4
- .main-nav__rhs
5
- .profile-avatar
6
- span CM
7
- .auth-popup
8
- p = link_to "Log out", '/sign-out', method: :delete
@@ -1,12 +0,0 @@
1
- .sidebar-menu
2
-
3
- .sidebar-menu__logo-header
4
- = image_tag('cm.png', alt: 'logo image')
5
-
6
-
7
- .sidebar-menu__tabs-wrapper
8
-
9
-
10
- .sidebar-menu__footer
11
- = link_to '/sign-out', method: :delete, class: 'auth-link'
12
- span.p-4.f14 Logout
@@ -1,20 +0,0 @@
1
- doctype html
2
- html
3
- head
4
- title
5
- | CM Admin panel
6
- = csrf_meta_tags
7
- = csp_meta_tag
8
- = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
9
- = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
10
-
11
- body
12
- - unless controller_path.include?('devise')
13
- .admin-panel
14
- = render 'layouts/side_navbar'
15
- .main
16
- .main-container
17
- = render 'layouts/navbar'
18
- = yield
19
- - else
20
- = yield
@@ -1,2 +0,0 @@
1
-
2
- # Add initialization content here
@@ -1,67 +0,0 @@
1
- .cm-admin-form
2
- = simple_form_for([:admin, @<%= name.singularize %>]) do |f|
3
- = f.error_notification
4
- .custom-validations.error-color
5
- <% options[:column_names].each do |column_name| %>
6
- <% column_name_arr = column_name.split(':') %>
7
- <% case column_name_arr[1]
8
- when 'input-integer' %>
9
- .form-field
10
- .form-label
11
- | <%= column_name_arr[0].titleize %>
12
- .form-input
13
- = f.input :<%= column_name_arr[0] %>, label: false, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, placeholder: '<%= column_name_arr[0].gsub('_', ' ').titleize %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
14
- .<%= column_name_arr[0] %>.error-color.hidden
15
- p Please fill height
16
- <% when 'input-string' %>
17
- .form-field
18
- .form-label
19
- | <%= column_name_arr[0].titleize %>
20
- .form-input
21
- = f.input :<%= column_name_arr[0] %>, label: false, input_html: { data: {class_name: '<%= column_name_arr[0] %>'}, placeholder: '<%= column_name_arr[0].gsub('_', ' ').titleize %>' }
22
- .<%= column_name_arr[0] %>.error-color.hidden
23
- p Please fill height
24
- <% when 'single-select' %>
25
- .form-field
26
- .form-label
27
- | <%= column_name_arr[0].titleize %>
28
- .form-input
29
- = f.input :<%= column_name_arr[0] %>, as: :select, label: false, collection: [], input_html: { class: "select2-single"}, include_blank: "Select <%= column_name_arr[0].gsub('_', ' ').titleize %>"
30
- .<%= column_name_arr[0] %>.error-color.hidden
31
- p Please fill height
32
- <% when 'multi-select' %>
33
- .form-field
34
- .form-label
35
- | <%= column_name_arr[0].titleize %>
36
- .form-input
37
- = f.input :<%= column_name_arr[0] %>, as: :select, label: false, collection: [], input_html: { class: "select2-single"}, include_blank: "Select <%= column_name_arr[0].gsub('_', ' ').titleize %>", multiple: true
38
- .<%= column_name_arr[0] %>.error-color.hidden
39
- p Please fill height
40
- <% when 'checkbox' %>
41
- .form-field
42
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, placeholder: '<%= column_name_arr[0].gsub('_', ' ').titleize %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
43
- label.radio-label for="male" Male
44
- <% when 'radio' %>
45
- .form-field
46
- = f.input :<%= column_name_arr[0] %>, input_html: { data: {class_name: '<%= column_name_arr[0] %>'} }, placeholder: '<%= column_name_arr[0].gsub('_', ' ').titleize %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
47
- label.radio-label for="male" Male
48
- <% when 'datepicker' %>
49
- .form-field
50
- .form-label
51
- | <%= column_name_arr[0].titleize %>
52
- .form-input
53
- = f.input :<%= column_name_arr[0] %>, as: :string, label: false, input_html: { data: {class_name: '<%= column_name_arr[0] %>'}, class: 'datepicker', value: @<%= name.singularize %>.<%= column_name_arr[0] %>&.strftime('%d/%m/%Y') }, placeholder: '<%= column_name_arr[0].gsub('_', ' ').titleize %>', required: true, error_message_html: {class: "<%= column_name_arr[0] %>"}
54
- .<%= column_name_arr[0] %>.error-color.hidden
55
- p Please fill height
56
- <% when 'file' %>
57
- .form-field
58
- .form-label
59
- | Upload file
60
- .file-upload
61
- = f.file_field :<%= column_name_arr[0] %>, input_html: {}
62
- <% end %>
63
- <% end %>
64
-
65
- .form-actions
66
- = f.button :submit, "Create new <%= name.singularize %>"
67
- / # f.button :submit, "Create new <%= name.singularize %>", class: "float-right", data: {class_name: 'product_template-form',path_name: "admin/products/#{@product.id}/templates", button_name: 'Create new template'}
@@ -1,22 +0,0 @@
1
- .admin-table
2
- .record-found
3
- | #{@filtered_result.facets.total_count} <%= name %> found
4
-
5
- table.cm-table
6
- thead.cm-table__header
7
- tr
8
- <% options[:column_names].each do |column_name| %>
9
- th <%= column_name.titleize %>
10
- <% end %>
11
- th
12
-
13
- tbody.cm-table__body
14
- - @filtered_result.data.each do |<%= name.singularize %>|
15
- tr
16
- <% options[:column_names].each do |column_name| %>
17
- td = <%= name.singularize %>.<%= column_name %>
18
- <% end %>
19
- td
20
- = link_to edit_admin_<%= name.singularize %>_path(<%= name.singularize %>) do
21
- i.fa.fa-pencil.edit-icon
22
- = cm_paginate(@filtered_result.facets)
@@ -1,10 +0,0 @@
1
- .form-wrapper
2
- .form-wrapper__top-bar
3
- = link_to admin_<%= name.singularize %>_path(@<%= name.singularize %>) do
4
- .back-btn
5
- span
6
- i.fa.fa-arrow-left aria-hidden="true"
7
- | Back
8
- .form-wrapper__inner
9
- .paper
10
- == render 'form', <%= name.singularize %>: @<%= name.singularize %>
@@ -1,11 +0,0 @@
1
- - content_for :bread_crumb do
2
- h6.text-light.breadcrumb-nav
3
- = link_to "Home ", admin_<%= name %>_path
4
- '/
5
- span.active = link_to "<%= name.titleize %>", admin_<%= name %>_path
6
-
7
- .main-body
8
- .top-bar
9
- == render 'filters'
10
- .table-container.<%= name %>-table
11
- == render 'table'
@@ -1,10 +0,0 @@
1
- .form-wrapper
2
- .form-wrapper__top-bar
3
- = link_to admin_<%= name %>_path do
4
- .back-btn
5
- span
6
- i.fa.fa-arrow-left aria-hidden="true"
7
- | Back
8
- .form-wrapper__inner
9
- .paper
10
- == render 'form', <%= name.singularize %>: @<%= name.singularize %>
@@ -1,12 +0,0 @@
1
- .auth
2
- .auth__form-inner
3
- .header-log
4
- = image_tag('cm.png', alt: 'logo image')
5
- h2.header-title FORGOT YOUR PASSWORD
6
- = simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
7
- .field-100
8
- .field-100__item
9
- = f.input :email, required: true, autofocus: true,
10
- input_html: { autocomplete: "email" }
11
- .field-100
12
- = f.button :submit, "Send me reset password instructions", class: 'btn btn-primary get-start-btn'
@@ -1,18 +0,0 @@
1
- .show-wrapper
2
- .show-wrapper__tab-bar
3
- .tab-menu
4
- .tab-item.active OVERVIEW
5
- .tab-item COMMUTATUS
6
-
7
- = link_to edit_admin_<%= name.singularize %>_path(@<%= name.singularize %>) do
8
- .edit-btn
9
- i.fa.fa-pencil
10
- .show-wrapper__info-inner
11
- .paper
12
- <% options[:column_names].each do |column_name| %>
13
- .info-flex
14
- .info-flex__lhs
15
- p <%= column_name.titleize %>
16
- .info-flex__rhs
17
- p = @<%= name.singularize %>.<%= column_name %>
18
- <% end %>
@@ -1,18 +0,0 @@
1
- .auth
2
- .auth__form-inner
3
- .header-log
4
- = image_tag('cm.png', alt: 'logo image')
5
- h2.header-title LOG IN
6
- = simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
7
- .field-100
8
- .field-100__item
9
- = f.input :email, required: false, autofocus: true, label: false,
10
- input_html: { autocomplete: "email", placeholder: 'Email' }
11
- .field-100
12
- .field-100__item
13
- = f.input :password, required: false, label: false,
14
- input_html: { autocomplete: "current-password", placeholder: 'Password' }
15
- .forgot-password
16
- a href="/reset_password" Forgot your password?
17
- .field-100
18
- = f.button :submit, "Log in", class: 'btn btn-primary get-start-btn'
@@ -1,78 +0,0 @@
1
- module CmAdmin
2
- module ViewActionTemplate
3
- def copy_index_files
4
- template "views/index.erb", "app/views/admin/#{name}/index.html.slim"
5
- template "views/_table.erb", "app/views/admin/#{name}/_table.html.slim"
6
- inject_into_file 'app/views/layouts/_side_navbar.html.slim', after: ".sidebar-menu__tabs-wrapper" do
7
- "\n
8
- = link_to '/admin/#{name}', class: 'tab-link'
9
- .tab-item class=\"\#{(controller_name == '#{name}' ) ? 'active' : ''}\"
10
- span.p-4.tab-name.f14 #{name.titleize}\n"
11
- end
12
- puts "
13
- -------------------------------------------------------------------
14
- # Important
15
- Run the spotlight filter generator which will generate the filter
16
- partial and controller file. Run the following with required filter option.
17
- rails g spotlight_search:filter #{name} --filters scope:datatype
18
- -------------------------------------------------------------------------"
19
- end
20
-
21
- def copy_show_files
22
- template "views/show.erb", "app/views/admin/#{name}/show.html.slim"
23
- end
24
-
25
- def copy_form_files
26
- template "views/new.erb", "app/views/admin/#{name}/new.html.slim"
27
- template "views/edit.erb", "app/views/admin/#{name}/edit.html.slim"
28
- template "views/_form.erb", "app/views/admin/#{name}/_form.html.slim"
29
- end
30
-
31
- def copy_devise_files
32
- template "views/reset_password.erb", "app/views/devise/passwords/new.html.slim"
33
- template "views/sign_in.erb", "app/views/devise/sessions/new.html.slim"
34
- end
35
- end
36
-
37
- class ViewGenerator < Rails::Generators::NamedBase
38
- include ViewActionTemplate
39
- desc <<-DESC.strip_heredoc
40
- Generate views for specific action of the model in admin
41
- Use -c to specify which column names you want to be present on page.
42
- Atleast one option is mandatory.
43
- For example:
44
- rails g cm_admin:view NAME page_type -c options
45
- rails g cm_admin:view products form -c title:string price:integer
46
- rails g cm_admin:view products index -c title price
47
-
48
- NAME is the table name
49
- page_type is the page you want to copy files. It can be the following
50
- index, show, form.
51
-
52
- This will create a files respectively at app/views/admin/#{name}/***.html.slim
53
-
54
- DESC
55
-
56
- source_root File.expand_path('templates', __dir__)
57
-
58
- argument :page_type, required: true, default: nil,
59
- desc: "The scope to copy views to"
60
- class_option :column_names, aliases: "-c", type: :array, required: true,
61
- desc: "Select specific columns in the files to be be added."
62
-
63
- def create_new_file
64
- if page_type == 'index'
65
- copy_index_files
66
- elsif page_type == 'form'
67
- copy_form_files
68
- elsif page_type == 'show'
69
- copy_show_files
70
- elsif page_type == 'devise'
71
- copy_devise_files
72
- else
73
- puts "Wrong page_type provided. It can be either index or show"
74
- end
75
- end
76
-
77
- end
78
- end