cm-admin 0.2.0 → 0.3.0

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