cm-admin 0.8.2 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2780b742a110c19ffb2b34edccb2de176672532dcaa02859cb5aa6879c348d4f
4
- data.tar.gz: bcb172023f05ab0ca8457b4363568e6c0868441a3a7532f1b34ae73fb79a3175
3
+ metadata.gz: a8341533113fd9b7a9192af76438144a864b42449e6a2a6f6f805a36b187bae7
4
+ data.tar.gz: 4a48bf48899e59f0734f81a836eb22534f39528c5d007abd9ec5c62aba6de7bf
5
5
  SHA512:
6
- metadata.gz: cb66380de78d2dacb2796fa26afa2326a257ab3f4fd502aadbc38a02f504bd146042a1527616f3191a8889416d48af555abfb8e9e76db7d6502acf108ac0ad48
7
- data.tar.gz: 59b5bcccee416299cd8b8c2794d96a92f00ce6fd6313eac26f31e29262fc62ff17bebef421646ee90bbaf25a3d3cf589fc7a51960f799535c0b6d0fbf5242103
6
+ metadata.gz: b7f866ab3ecdca38fe1296549271b69d49745f001c57f3119d96af0626cd1d966da51a4f0a3d0ac31c034a3fbb4ee788072c8278d8c63697230fce034e7e6002
7
+ data.tar.gz: 42a81533540eadfc057d86d199a1cf8116e7cdb5e18a37a1a8a3c0ecb44e4d63c2e76c65061a196b3a25ef9bef5f99d9aeb1fe82a0a01d860d43fa429300d2ba
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cm-admin (0.8.2)
4
+ cm-admin (0.8.4)
5
5
  caxlsx_rails
6
6
  cocoon (~> 1.2.15)
7
7
  csv-importer (~> 0.8.2)
@@ -146,7 +146,7 @@ GEM
146
146
  rack-proxy (>= 0.6.1)
147
147
  railties (>= 5.2)
148
148
  semantic_range (>= 2.3.0)
149
- zeitwerk (2.6.0)
149
+ zeitwerk (2.6.1)
150
150
 
151
151
  PLATFORMS
152
152
  ruby
@@ -193,6 +193,7 @@ $(document).on('click', '[data-behaviour="select-option"]', function(e) {
193
193
 
194
194
  if (filterType == 'single_select') {
195
195
  var filterValue = $(this).data('value')
196
+ var filterText = $(this).text()
196
197
  if (!this.classList.contains('selected')) {
197
198
  if (this.parentNode.querySelector('.list-item.selected') != null) {
198
199
  this.parentNode.querySelector('.list-item.selected').classList.remove('selected');
@@ -200,7 +201,7 @@ $(document).on('click', '[data-behaviour="select-option"]', function(e) {
200
201
  $(this).addClass('selected')
201
202
  }
202
203
 
203
- $(this).parents(':nth(4)').children(':first').children(':nth(1)').text(filterValue)
204
+ $(this).parents(':nth(4)').children(':first').children(':nth(1)').text(filterText)
204
205
  $(this).parents(':nth(4)').children(':first').children(':last').removeClass('hidden')
205
206
 
206
207
  // Clear the search value post selection and regenerate the dropdown elements.
@@ -216,16 +217,15 @@ $(document).on('click', '[data-behaviour="select-option"]', function(e) {
216
217
  var checkboxElement = $(this).find('.cm-checkbox')
217
218
  checkboxElement.prop('checked', !checkboxElement.prop('checked'))
218
219
  var checkedCount = $(this).parent().find('.cm-checkbox').filter(':checked').length
219
-
220
220
  if (checkboxElement.prop('checked')) {
221
221
  var chip = $('<div class="chip"></div>')
222
- var firstSpan = $('<span></span>').text($(this).data('value'))
222
+ var firstSpan = $('<span></span>').text($(this).text())
223
223
  var secondSpan = $('<span data-behaviour="selected-chip"><i class="fa fa-times"></i></span>')
224
224
  parentChip.prepend(chip.append(firstSpan).append(secondSpan))
225
225
  } else {
226
226
  var chipElement = parentChip.find('.chip')
227
227
  for(var i = 0; i < chipElement.length; i++) {
228
- if ($(chipElement[i]).text() == $(this).data('value')) {
228
+ if ($(chipElement[i]).text() == $(this).text()) {
229
229
  $(chipElement[i]).remove()
230
230
  break
231
231
  }
@@ -248,6 +248,7 @@ $(document).on('click', '.apply-area', function(e) {
248
248
  var filterType = filterInputElement.data('filter-type')
249
249
  var filterColumn = filterInputElement.data('db-column')
250
250
  var filterValue = []
251
+ var filterValueText = []
251
252
 
252
253
  var selectFilterElement = $('[data-behaviour="select-option"][data-filter-type=' + filterType + '][data-db-column=' + filterColumn + ']')
253
254
  var checkedElements = selectFilterElement.find('.cm-checkbox').filter(':checked')
@@ -255,9 +256,10 @@ $(document).on('click', '.apply-area', function(e) {
255
256
  if (checkedElements.length > 0) {
256
257
  for(var i = 0; i < checkedElements.length; i++) {
257
258
  filterValue.push($(checkedElements[i]).parent().data('value'))
259
+ filterValueText.push($(checkedElements[i]).parent().text())
258
260
  }
259
261
 
260
- truncatedFilterValue = filterValue[0]
262
+ truncatedFilterValue = filterValueText[0]
261
263
  if (filterValue.length > 1) {
262
264
  truncatedFilterValue += ' + ' + (filterValue.length - 1) + ' more'
263
265
  }
@@ -335,8 +337,6 @@ CmFilter = {
335
337
  var filter = element.val().toUpperCase();
336
338
  var searchElements = element.parents(':nth(3)').find('.list-area').children();
337
339
  searchElements.removeClass('visible').addClass('hidden')
338
- console.log("Filter is ", filter)
339
- console.log("Search elements are ", searchElements)
340
340
  for (var i = 0; i < searchElements.length; i++) {
341
341
  txtValue = $(searchElements[i]).children().text();
342
342
  if (txtValue.toUpperCase().indexOf(filter) > -1) {
@@ -4,7 +4,7 @@ module CmAdmin::FileImport
4
4
  cm_admin do
5
5
  STATUS_TAG_COLOR = { in_progress: 'yellow-tag', success: 'success'}
6
6
  actions only: [:index, :show]
7
- set_icon 'fa fa-user'
7
+ set_icon 'fa fa-file-upload'
8
8
  cm_index do
9
9
  page_title 'File Import'
10
10
  page_description 'Manage all file import progress here'
@@ -26,7 +26,7 @@
26
26
  - @model.available_fields[:index].each_with_index do |column, index|
27
27
  td.text-ellipsis
28
28
  span class="#{column.field_type.to_s} #{column.cm_css_class} "
29
- - if index == 0
29
+ - if index == 0 && !([:link, :custom, :attachment, :drawer, :image].include?(column.field_type))
30
30
  = link_to ar_object.send(column.field_name), cm_admin.send("#{ar_object.model_name.singular}_show_path", ar_object.id)
31
31
  - else
32
32
  = show_field_value(ar_object, column)
@@ -9,19 +9,20 @@
9
9
  p.title-sub-text = action_description
10
10
  .cm-navbar__rhs
11
11
  - if @model.current_action.name == 'index'
12
- .export-container
13
- .dropdown
14
- button.secondary-btn data-bs-toggle='dropdown'
15
- span
16
- i.fa.fa-arrow-down
17
- span
18
- | Export
19
- span
20
- i.fa.fa-angle-down
21
- ul.dropdown-menu.export-popup
22
- li
23
- .popup-option.pointer data-bs-toggle='modal' data-bs-target='#exportmodal'
24
- span Export
12
+ - if has_valid_policy(@model.name, :exportable)
13
+ .export-container
14
+ .dropdown
15
+ button.secondary-btn data-bs-toggle='dropdown'
16
+ span
17
+ i.fa.fa-arrow-down
18
+ span
19
+ | Export
20
+ span
21
+ i.fa.fa-angle-down
22
+ ul.dropdown-menu.export-popup
23
+ li
24
+ .popup-option.pointer data-bs-toggle='modal' data-bs-target='#exportmodal'
25
+ span Export
25
26
  - if @model.importer
26
27
  = link_to 'Import', cm_admin.send(:"#{@model.name.underscore}_import_path"), class: 'primary-btn ml-2'
27
28
  - new_action = @model.available_actions.select{|act| act if act.action_type.eql?(:default) && act.name.eql?('new')}
@@ -14,7 +14,6 @@ module CmAdmin
14
14
  cm_admin/cm_admin.css
15
15
  cm_admin/custom.js
16
16
  cm_admin/custom.css
17
- *.png
18
17
  )
19
18
  end
20
19
 
@@ -1,7 +1,7 @@
1
1
  module CmAdmin
2
2
  module Models
3
3
  class FormField
4
- attr_accessor :field_name, :label, :header, :input_type, :collection, :disabled, :helper_method
4
+ attr_accessor :field_name, :label, :header, :input_type, :collection, :disabled, :helper_method, :placeholder
5
5
  VALID_INPUT_TYPES = [:integer, :decimal, :string, :single_select, :multi_select, :date, :date_time, :text, :single_file_upload, :multi_file_upload, :hidden, :rich_text].freeze
6
6
 
7
7
  def initialize(field_name, input_type, attributes = {})
@@ -17,6 +17,7 @@ module CmAdmin
17
17
  self.disabled = false
18
18
  self.label = self.field_name.to_s.titleize
19
19
  self.input_type = :string
20
+ self.placeholder = "Enter #{self.field_name.to_s.downcase.gsub('_', ' ')}"
20
21
  end
21
22
  end
22
23
  end
@@ -1,3 +1,3 @@
1
1
  module CmAdmin
2
- VERSION = "0.8.2"
2
+ VERSION = "0.8.4"
3
3
  end
@@ -71,7 +71,7 @@ module CmAdmin
71
71
 
72
72
  if value && filter.filter_type.to_s.eql?('multi_select')
73
73
  truncated_value = value[0]
74
- truncated_value += " + #{value.size - 1} more" if truncated_value.size > 1
74
+ truncated_value += " + #{value.size - 1} more" if value.size > 1
75
75
  end
76
76
 
77
77
  concat(content_tag(:div, class: "filter-chip #{filter.filter_type.to_s.eql?('single_select') ? 'dropdown' : ''}", data: data_hash) do
@@ -126,7 +126,12 @@ module CmAdmin
126
126
  def add_single_select_filter(filter)
127
127
  value = params.dig(:filters, :"#{filter.filter_type}", :"#{filter.db_column_name}")
128
128
  concat(content_tag(:div, class: "position-relative mr-3 #{value ? '' : 'hidden'}") do
129
- concat filter_chip(value, filter)
129
+ if value && filter.collection[0].class == Array
130
+ selected_value_text = filter.collection.map{|collection| collection[0] if collection[1].to_s.eql?(value) }.compact.join(', ')
131
+ else
132
+ selected_value_text = value
133
+ end
134
+ concat filter_chip(selected_value_text, filter)
130
135
 
131
136
  concat(content_tag(:div, class: 'dropdown-menu dropdown-popup') do
132
137
  concat(content_tag(:div, class: 'popup-base') do
@@ -136,8 +141,14 @@ module CmAdmin
136
141
  end)
137
142
  concat(content_tag(:div, class: 'list-area') do
138
143
  filter.collection.each do |val|
139
- concat(content_tag(:div, class: "pointer list-item #{(value.present? && value.eql?(val)) ? 'selected' : ''}", data: {behaviour: 'select-option', filter_type: "#{filter.filter_type}", db_column: "#{filter.db_column_name}", value: val}) do
140
- concat tag.span val.to_s
144
+ if val.class.eql?(Array)
145
+ filter_value = val[1]
146
+ filter_text = val[0]
147
+ elsif val.class.eql?(String)
148
+ filter_value = filter_text = val
149
+ end
150
+ concat(content_tag(:div, class: "pointer list-item #{(value.present? && value.eql?(filter_value.to_s)) ? 'selected' : ''}", data: {behaviour: 'select-option', filter_type: "#{filter.filter_type}", db_column: "#{filter.db_column_name}", value: filter_value}) do
151
+ concat tag.span filter_text.to_s
141
152
  end)
142
153
  end
143
154
  end)
@@ -150,16 +161,24 @@ module CmAdmin
150
161
 
151
162
  def add_multi_select_filter(filter)
152
163
  value = params.dig(:filters, :"#{filter.filter_type}", :"#{filter.db_column_name}")
153
-
164
+ if value && filter.collection[0].class == Array
165
+ value_mapped_text = []
166
+ filter.collection.each do |array|
167
+ value_mapped_text << array[0].titleize if value.include?(array[1].to_s)
168
+ end
169
+ else
170
+ value_mapped_text = value
171
+ end
172
+
154
173
  concat(content_tag(:div, class: "position-relative mr-3 #{value ? '' : 'hidden'}") do
155
- concat filter_chip(value, filter)
174
+ concat filter_chip(value_mapped_text, filter)
156
175
 
157
176
  concat(content_tag(:div, class: 'position-absolute mt-2 dropdown-popup hidden') do
158
177
  concat(content_tag(:div, class: 'popup-base') do
159
178
  concat(content_tag(:div, class: 'popup-inner') do
160
179
  concat(content_tag(:div, class: "#{value ? 'search-with-chips' : 'search-area'}") do
161
- if value
162
- value.each do |val|
180
+ if value_mapped_text
181
+ value_mapped_text.each do |val|
163
182
  concat(content_tag(:div, class: 'chip') do
164
183
  concat tag.span val
165
184
  concat(content_tag(:span, data: { behaviour: 'selected-chip' }) do
@@ -172,9 +191,15 @@ module CmAdmin
172
191
  end)
173
192
  concat(content_tag(:div, class: 'list-area') do
174
193
  filter.collection.each do |val|
175
- concat(content_tag(:div, class: "pointer list-item #{(value && value.eql?(val)) ? 'selected' : ''}", data: {behaviour: 'select-option', filter_type: "#{filter.filter_type}", db_column: "#{filter.db_column_name}", value: val}) do
176
- concat tag.input class: 'cm-checkbox', type: 'checkbox', checked: value ? value.include?(val) : false
177
- concat tag.label val.to_s.titleize, class: 'pointer'
194
+ if val.class.eql?(Array)
195
+ filter_value = val[1]
196
+ filter_text = val[0]
197
+ elsif val.class.eql?(String)
198
+ filter_value = filter_text = val
199
+ end
200
+ concat(content_tag(:div, class: "pointer list-item #{(value && (value.eql?(val) || value.include?(filter_value.to_s))) ? 'selected' : ''}", data: {behaviour: 'select-option', filter_type: "#{filter.filter_type}", db_column: "#{filter.db_column_name}", value: filter_value}) do
201
+ concat tag.input class: 'cm-checkbox', type: 'checkbox', checked: value ? value.include?(filter_value.to_s) : false
202
+ concat tag.label filter_text.to_s.titleize, class: 'pointer'
178
203
  end)
179
204
  end
180
205
  end)
@@ -13,7 +13,7 @@ module CmAdmin
13
13
  when :string
14
14
  return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
15
15
  when :single_select
16
- return f.select field.field_name, options_for_select(select_collection_value(field), f.object.send(field.field_name)), {include_blank: "Select #{field.field_name.to_s.downcase.gsub('_', ' ')}"}, class: "normal-input #{required_class} select-2", disabled: field.disabled
16
+ return f.select field.field_name, options_for_select(select_collection_value(field), f.object.send(field.field_name)), {include_blank: field.placeholder.to_s}, class: "normal-input #{required_class} select-2", disabled: field.disabled
17
17
  when :multi_select
18
18
  return f.select field.field_name, options_for_select(select_collection_value(field), f.object.send(field.field_name)), {include_blank: "Select #{field.field_name.to_s.downcase.gsub('_', ' ')}"}, class: "normal-input #{required_class} select-2", disabled: field.disabled, multiple: true
19
19
  when :date
data/lib/cm_admin.rb CHANGED
@@ -35,8 +35,7 @@ module CmAdmin
35
35
  def initialize_model(entity, &block)
36
36
  if entity.is_a?(Class)
37
37
  return if CmAdmin::Model.find_by({name: entity.name})
38
- cm_model = CmAdmin::Model.new(entity, &block)
39
- config.cm_admin_models << cm_model
38
+ config.cm_admin_models << CmAdmin::Model.new(entity, &block)
40
39
  end
41
40
  end
42
41
  end
@@ -1 +1 @@
1
- 31533361827c4faa12bf892403c629479a81246a
1
+ 41eaf97f2fb017cf52d8df48e6d8d6d35f997b2e
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cm-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - sajinmp
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-10-14 00:00:00.000000000 Z
13
+ date: 2022-10-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: caxlsx_rails