effective_bootstrap 0.9.49 → 0.10.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/app/assets/javascripts/effective_bootstrap.js +1 -0
- data/app/assets/javascripts/effective_scale/initialize.js.coffee +38 -0
- data/app/assets/javascripts/effective_scale/input.js +1 -0
- data/app/models/effective/form_builder.rb +4 -0
- data/app/models/effective/form_inputs/scale_field.rb +40 -0
- data/lib/effective_bootstrap/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ceade458f70f2cd3a3c1d5ad375c1566b0183ddabf337093b9035ea745a7808
|
4
|
+
data.tar.gz: 2863661e098dafb3c666ec157f4d0a956878b100b18ca1dda676f0e7b98ec4bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4771d8f0397d03c4f839a6b6dca9967f5caa019c48a83dd5536fe9537b2a047bdeeb7f932865f6fc09b1e8df6901bbfe557f47fe3283a7c79746849448d28415
|
7
|
+
data.tar.gz: 3cfd9be8fc0dbb42f046a2361b00344812dd888723a6f08efdded2ddbf8d3b58e1c53d33bd3f2fe1dbbbfe88b0b8dcb6b9b0b7f7b82f67263abb2cf809f13477
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Prevent non-numeric buttons from being pressed
|
2
|
+
$(document).on 'keydown', "input[type='text'].effective_scale", (event) ->
|
3
|
+
allowed = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '.']
|
4
|
+
|
5
|
+
if event.key && event.key.length == 1 && event.metaKey == false && allowed.indexOf(event.key) == -1
|
6
|
+
event.preventDefault()
|
7
|
+
|
8
|
+
# Assign the hidden input a value of ScaleX value
|
9
|
+
$(document).on 'change keyup', "input[type='text'].effective_scale", (event) ->
|
10
|
+
$input = $(event.target)
|
11
|
+
|
12
|
+
value = $input.val().replace(/,/g, '')
|
13
|
+
scale = parseInt($input.data('scale'))
|
14
|
+
|
15
|
+
unless value == ''
|
16
|
+
value = (parseFloat(value || 0.0) * (10.0 ** scale)).toFixed(0)
|
17
|
+
|
18
|
+
$input.siblings("input[type='hidden']").first().val(value)
|
19
|
+
|
20
|
+
# Format the value for display as currency (USD)
|
21
|
+
$(document).on 'change', "input[type='text'].effective_scale", (event) ->
|
22
|
+
$input = $(event.target)
|
23
|
+
|
24
|
+
value = $input.siblings("input[type='hidden']").first().val()
|
25
|
+
scale = parseInt($input.data('scale'))
|
26
|
+
|
27
|
+
unless value == ''
|
28
|
+
value = parseInt(value || 0)
|
29
|
+
|
30
|
+
if isNaN(value) == false && value != ''
|
31
|
+
value = (value / (10.0 ** scale)) if value != 0
|
32
|
+
|
33
|
+
value = value.toFixed(scale).toString()
|
34
|
+
value = value.replace(('.' + '0'.repeat(scale)), '')
|
35
|
+
else
|
36
|
+
value = ''
|
37
|
+
|
38
|
+
$input.val(value)
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./initialize
|
@@ -145,6 +145,10 @@ module Effective
|
|
145
145
|
Effective::FormInputs::Save.new(name, options, builder: self).to_html { super(name, options) }
|
146
146
|
end
|
147
147
|
|
148
|
+
def scale_field(name, options = {})
|
149
|
+
Effective::FormInputs::ScaleField.new(name, options, builder: self).to_html
|
150
|
+
end
|
151
|
+
|
148
152
|
def select(name, choices = nil, *args)
|
149
153
|
options = args.extract_options!.merge!(collection: choices)
|
150
154
|
Effective::FormInputs::Select.new(name, options, builder: self).to_html
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Effective
|
4
|
+
module FormInputs
|
5
|
+
class ScaleField < Effective::FormInput
|
6
|
+
|
7
|
+
def build_input(&block)
|
8
|
+
@builder.hidden_field(name, value: scale_to_integer, id: tag_id + '_value_as_integer') +
|
9
|
+
@template.text_field_tag(name, scale_to_s, options[:input].merge(id: tag_id, name: nil))
|
10
|
+
end
|
11
|
+
|
12
|
+
def input_html_options
|
13
|
+
{ class: 'form-control effective_scale', autocomplete: 'off', id: tag_id, 'data-scale': scale }
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def scale
|
19
|
+
@scale ||= (options.delete(:scale) || 2)
|
20
|
+
end
|
21
|
+
|
22
|
+
def scaled(value)
|
23
|
+
"%.#{scale}f" % (value / (10.0 ** scale))
|
24
|
+
end
|
25
|
+
|
26
|
+
def scale_to_integer
|
27
|
+
return nil unless value
|
28
|
+
value.kind_of?(Integer) ? value : scaled(value)
|
29
|
+
end
|
30
|
+
|
31
|
+
def scale_to_s
|
32
|
+
return nil unless value
|
33
|
+
|
34
|
+
str = (value.kind_of?(Integer) ? scaled(value) : value).to_s
|
35
|
+
str.gsub('.' + ('0' * scale), '')
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -473,6 +473,8 @@ files:
|
|
473
473
|
- app/assets/javascripts/effective_rich_text_area/extensions.js
|
474
474
|
- app/assets/javascripts/effective_rich_text_area/initialize.js
|
475
475
|
- app/assets/javascripts/effective_rich_text_area/input.js
|
476
|
+
- app/assets/javascripts/effective_scale/initialize.js.coffee
|
477
|
+
- app/assets/javascripts/effective_scale/input.js
|
476
478
|
- app/assets/javascripts/effective_select/initialize.js.coffee
|
477
479
|
- app/assets/javascripts/effective_select/input.js
|
478
480
|
- app/assets/javascripts/effective_select/overrides.js.coffee
|
@@ -675,6 +677,7 @@ files:
|
|
675
677
|
- app/models/effective/form_inputs/reset.rb
|
676
678
|
- app/models/effective/form_inputs/rich_text_area.rb
|
677
679
|
- app/models/effective/form_inputs/save.rb
|
680
|
+
- app/models/effective/form_inputs/scale_field.rb
|
678
681
|
- app/models/effective/form_inputs/search_field.rb
|
679
682
|
- app/models/effective/form_inputs/select.rb
|
680
683
|
- app/models/effective/form_inputs/select_or_text.rb
|