dynamic_scaffold 1.4.1 → 1.7.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.
- checksums.yaml +4 -4
 - data/README.md +5 -0
 - data/app/views/dynamic_scaffold/bootstrap/_list.html.erb +3 -3
 - data/app/views/dynamic_scaffold/bootstrap/form/_row.html.erb +2 -2
 - data/lib/dynamic_scaffold/controller.rb +21 -3
 - data/lib/dynamic_scaffold/form/item/base.rb +5 -1
 - data/lib/dynamic_scaffold/list_builder.rb +9 -0
 - data/lib/dynamic_scaffold/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ec4088a2da9e8c6667356e7adcbc51fca13dd76ab7be8c411b9217ebd052aa1b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 794a726dda7dde2485b0d3749e5d307f89e29c5724335e369fea0981b714c227
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 56db4471671b267e0387a3bdcd5e0c16b50551f8f3b1c73c947a1f7af8db0f9f5e0aca54762d9a7b76fb36bed3baa9bc8a71cc48f32098356cf213044248cd03
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 469fc969cf4b0126785538894f7cc97498d4f39d9d32c1b215c8d6733a576fae63104709fe3b997300004d251fe0e33db8e0abed45871c85169e3f1b690e0b01
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -170,6 +170,11 @@ class ShopController < ApplicationController 
     | 
|
| 
       170 
170 
     | 
    
         
             
                # config.list.title do |record|
         
     | 
| 
       171 
171 
     | 
    
         
             
                #   record.name
         
     | 
| 
       172 
172 
     | 
    
         
             
                # end
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                # You can add class to list page's each row.
         
     | 
| 
      
 175 
     | 
    
         
            +
                config.list.row_class do |record|
         
     | 
| 
      
 176 
     | 
    
         
            +
                  'disabled' unless record.active?
         
     | 
| 
      
 177 
     | 
    
         
            +
                end
         
     | 
| 
       173 
178 
     | 
    
         | 
| 
       174 
179 
     | 
    
         
             
                # First arg is attribute name of model.
         
     | 
| 
       175 
180 
     | 
    
         
             
                # Last hash arg is given to HTML attributes options.
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <%unless flash[:dynamic_scaffold_danger].nil? -%>
         
     | 
| 
       2 
2 
     | 
    
         
             
              <div class="alert alert-danger" role="alert">
         
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
      
 3 
     | 
    
         
            +
                <%== flash[:dynamic_scaffold_danger] %>
         
     | 
| 
       4 
4 
     | 
    
         
             
              </div>
         
     | 
| 
       5 
5 
     | 
    
         
             
            <%end%>
         
     | 
| 
       6 
6 
     | 
    
         
             
            <input type="hidden" class="authenticity_param_name" value="<%= request_forgery_protection_token %>">
         
     | 
| 
         @@ -30,8 +30,8 @@ 
     | 
|
| 
       30 
30 
     | 
    
         
             
                  data-confirm-cancel="<%= t('dynamic_scaffold.message.confirm_cancel') %>"
         
     | 
| 
       31 
31 
     | 
    
         
             
                  data-confirm-cancel-class="btn btn-outline-secondary btn-default btn-sm"
         
     | 
| 
       32 
32 
     | 
    
         
             
                >
         
     | 
| 
       33 
     | 
    
         
            -
                  <%@records. 
     | 
| 
       34 
     | 
    
         
            -
                    <li class="ds-list-row js-ds-list-row">
         
     | 
| 
      
 33 
     | 
    
         
            +
                  <%@records.each_with_index do |record, index|%>
         
     | 
| 
      
 34 
     | 
    
         
            +
                    <li class="<%= class_names('ds-list-row js-ds-list-row', dynamic_scaffold.list.row_class(record)) %>">
         
     | 
| 
       35 
35 
     | 
    
         
             
                      <% if dynamic_scaffold.list.title? %>
         
     | 
| 
       36 
36 
     | 
    
         
             
                        <div class="ds-list-heading"><%= dynamic_scaffold.list.title(record) %></div>
         
     | 
| 
       37 
37 
     | 
    
         
             
                      <% end %>
         
     | 
| 
         @@ -3,9 +3,9 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
                <%= elem.render(self, form) %>
         
     | 
| 
       4 
4 
     | 
    
         
             
              <% else %>
         
     | 
| 
       5 
5 
     | 
    
         
             
                <%- errors = elem.errors(form) -%>
         
     | 
| 
       6 
     | 
    
         
            -
                <div class="<%= class_names('form-group', 'has-error': errors.present?) %>">
         
     | 
| 
      
 6 
     | 
    
         
            +
                <div class="<%= class_names('form-group', 'has-error': errors.present?) %>" data-name="<%= elem.unique_name %>">
         
     | 
| 
       7 
7 
     | 
    
         
             
                  <%= elem.render_label(self, depth) %>
         
     | 
| 
       8 
     | 
    
         
            -
                  <div>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  <div class="ds-form-item">
         
     | 
| 
       9 
9 
     | 
    
         
             
                    <%- elem.insert(:before).each do |block| -%>
         
     | 
| 
       10 
10 
     | 
    
         
             
                      <%= self.instance_exec(@record, &block) %>
         
     | 
| 
       11 
11 
     | 
    
         
             
                    <%-end-%>
         
     | 
| 
         @@ -77,10 +77,25 @@ module DynamicScaffold 
     | 
|
| 
       77 
77 
     | 
    
         
             
                  end
         
     | 
| 
       78 
78 
     | 
    
         
             
                end
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
                def update # rubocop:disable Metrics/AbcSize
         
     | 
| 
      
 80 
     | 
    
         
            +
                def update # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
         
     | 
| 
       81 
81 
     | 
    
         
             
                  values = update_values
         
     | 
| 
       82 
82 
     | 
    
         
             
                  @record = find_record(dynamic_scaffold.model.primary_key => params['id'])
         
     | 
| 
       83 
     | 
    
         
            -
                   
     | 
| 
      
 83 
     | 
    
         
            +
                  datetime_select_keys = []
         
     | 
| 
      
 84 
     | 
    
         
            +
                  prev_values = values.keys.map do |k|
         
     | 
| 
      
 85 
     | 
    
         
            +
                    # handle paramters like `start_time(1i)`
         
     | 
| 
      
 86 
     | 
    
         
            +
                    match = k.match(/(.*?)\(\d+i\)/)
         
     | 
| 
      
 87 
     | 
    
         
            +
                    if match
         
     | 
| 
      
 88 
     | 
    
         
            +
                      next if datetime_select_keys.include?(match[1])
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                      datetime_select_keys << k = match[1]
         
     | 
| 
      
 91 
     | 
    
         
            +
                    end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                    # globalize
         
     | 
| 
      
 94 
     | 
    
         
            +
                    next [:translations_attributes, @record.translations] if k == 'translations_attributes'
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                    [k, @record.public_send(k)]
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end.compact.to_h.with_indifferent_access
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
       84 
99 
     | 
    
         
             
                  @record.attributes = values
         
     | 
| 
       85 
100 
     | 
    
         
             
                  dynamic_scaffold.model.transaction do
         
     | 
| 
       86 
101 
     | 
    
         
             
                    yield(@record, prev_values) if block_given?
         
     | 
| 
         @@ -92,7 +107,7 @@ module DynamicScaffold 
     | 
|
| 
       92 
107 
     | 
    
         
             
                  end
         
     | 
| 
       93 
108 
     | 
    
         
             
                end
         
     | 
| 
       94 
109 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
                def destroy
         
     | 
| 
      
 110 
     | 
    
         
            +
                def destroy # rubocop:disable Metrics/AbcSize
         
     | 
| 
       96 
111 
     | 
    
         
             
                  # `Destroy` also does not support multiple primary keys too.
         
     | 
| 
       97 
112 
     | 
    
         
             
                  record = find_record(dynamic_scaffold.model.primary_key => params['id'])
         
     | 
| 
       98 
113 
     | 
    
         
             
                  begin
         
     | 
| 
         @@ -107,6 +122,9 @@ module DynamicScaffold 
     | 
|
| 
       107 
122 
     | 
    
         
             
                    flash[:dynamic_scaffold_danger] = I18n.t('dynamic_scaffold.alert.destroy.failed')
         
     | 
| 
       108 
123 
     | 
    
         
             
                    logger.error(e)
         
     | 
| 
       109 
124 
     | 
    
         
             
                  end
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
                  flash[:dynamic_scaffold_danger] = record.errors[:base].join('<br>') if record.errors[:base].any?
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
       110 
128 
     | 
    
         
             
                  redirect_to dynamic_scaffold_path(:index, request_queries)
         
     | 
| 
       111 
129 
     | 
    
         
             
                end
         
     | 
| 
       112 
130 
     | 
    
         | 
| 
         @@ -31,6 +31,10 @@ module DynamicScaffold 
     | 
|
| 
       31 
31 
     | 
    
         
             
                      @label_block = nil
         
     | 
| 
       32 
32 
     | 
    
         
             
                    end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
                    def unique_name
         
     | 
| 
      
 35 
     | 
    
         
            +
                      "#{@config.model.table_name}_#{name}"
         
     | 
| 
      
 36 
     | 
    
         
            +
                    end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       34 
38 
     | 
    
         
             
                    def notes?
         
     | 
| 
       35 
39 
     | 
    
         
             
                      !@notes.empty?
         
     | 
| 
       36 
40 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -95,7 +99,7 @@ module DynamicScaffold 
     | 
|
| 
       95 
99 
     | 
    
         
             
                      #   return label unless label.nil?
         
     | 
| 
       96 
100 
     | 
    
         
             
                      # end
         
     | 
| 
       97 
101 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
                      view.tag.label(proxy_field.label, label_attrs)
         
     | 
| 
      
 102 
     | 
    
         
            +
                      view.tag.label(proxy_field.label, label_attrs) if proxy_field.label.present?
         
     | 
| 
       99 
103 
     | 
    
         
             
                    end
         
     | 
| 
       100 
104 
     | 
    
         | 
| 
       101 
105 
     | 
    
         
             
                    def extract_parameters(permitting)
         
     | 
| 
         @@ -7,6 +7,7 @@ module DynamicScaffold 
     | 
|
| 
       7 
7 
     | 
    
         
             
                  @order = []
         
     | 
| 
       8 
8 
     | 
    
         
             
                  @title = nil
         
     | 
| 
       9 
9 
     | 
    
         
             
                  @filter = nil
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @row_class_block = nil
         
     | 
| 
       10 
11 
     | 
    
         
             
                end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                def pagination(options = nil)
         
     | 
| 
         @@ -88,5 +89,13 @@ module DynamicScaffold 
     | 
|
| 
       88 
89 
     | 
    
         
             
                  @filter = block if block_given?
         
     | 
| 
       89 
90 
     | 
    
         
             
                  @filter
         
     | 
| 
       90 
91 
     | 
    
         
             
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                def row_class(record = nil, &block)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  if block_given?
         
     | 
| 
      
 95 
     | 
    
         
            +
                    @row_class_block = block
         
     | 
| 
      
 96 
     | 
    
         
            +
                  elsif record.present? && @row_class_block
         
     | 
| 
      
 97 
     | 
    
         
            +
                    @config.controller.view_context.instance_exec(record, &@row_class_block)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
       91 
100 
     | 
    
         
             
              end
         
     | 
| 
       92 
101 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dynamic_scaffold
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.7.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Masamoto Miyata
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-01-25 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: classnames-rails-view
         
     |