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