ui_bibz 2.0.0.alpha6 → 2.0.0.alpha7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -7
- data/app/assets/javascripts/form.coffee +42 -4
- data/app/assets/javascripts/formula.coffee +69 -0
- data/app/assets/javascripts/ui_bibz.coffee +1 -0
- data/app/assets/stylesheets/ui_bibz.sass +30 -1
- data/app/inputs/custom_inputs/dropdown_select_input.rb +46 -4
- data/app/inputs/custom_inputs/formula_input.rb +11 -0
- data/lib/ui_bibz.rb +1 -0
- data/lib/ui_bibz/helpers/ui_core_helper.rb +4 -0
- data/lib/ui_bibz/ui/core/button/button_group.rb +0 -4
- data/lib/ui_bibz/ui/core/input/autocomplete_field.rb +0 -5
- data/lib/ui_bibz/ui/core/input/formula_field.rb +93 -0
- data/lib/ui_bibz/ui/ux/table/components/as.rb +32 -0
- data/lib/ui_bibz/ui/ux/table/components/column.rb +3 -1
- data/lib/ui_bibz/ui/ux/table/table.rb +4 -2
- data/lib/ui_bibz/version.rb +1 -1
- data/test/ui/button_test.rb +3 -3
- data/test/ui/inputs_test.rb +7 -0
- data/ui_bibz-2.0.0.alpha.gem +0 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9892158649dce637c38ca278b77b54e985e8987b
|
4
|
+
data.tar.gz: 10c26c09a4b67c10536e278c090d19fcdcdd5159
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d621fcfe794989895cc5d9bb25973162ad74eee6f55a8800eff197ef387d53f1ab2fb10d7452d42008859cdce642aaf076f2ae31882fdf4c190cb5de46245aa
|
7
|
+
data.tar.gz: 34a4451f9708d3b8d877f21a5941ac4bbaf112a455feb4b9ebba8d57425875e7b863d97b9dde481b0fbb0f4db50133658a30521893f9fcf418a8f56afd1d28e0
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ui_bibz (2.0.0.
|
4
|
+
ui_bibz (2.0.0.alpha7)
|
5
5
|
bootstrap (< 4.0.0.alpha3)
|
6
6
|
bundler (>= 1.8.4)
|
7
7
|
font-awesome-sass
|
@@ -52,7 +52,7 @@ GEM
|
|
52
52
|
thread_safe (~> 0.3, >= 0.3.4)
|
53
53
|
tzinfo (~> 1.1)
|
54
54
|
arel (6.0.3)
|
55
|
-
autoprefixer-rails (6.3.6)
|
55
|
+
autoprefixer-rails (6.3.6.1)
|
56
56
|
execjs
|
57
57
|
awesome_print (1.6.1)
|
58
58
|
bootstrap (4.0.0.alpha2)
|
@@ -61,7 +61,7 @@ GEM
|
|
61
61
|
builder (3.2.2)
|
62
62
|
codeclimate-test-reporter (0.5.0)
|
63
63
|
simplecov (>= 0.7.1, < 1.0.0)
|
64
|
-
concurrent-ruby (1.0.
|
64
|
+
concurrent-ruby (1.0.2)
|
65
65
|
docile (1.1.5)
|
66
66
|
erubis (2.7.0)
|
67
67
|
execjs (2.6.0)
|
@@ -70,7 +70,7 @@ GEM
|
|
70
70
|
factory_girl_rails (4.7.0)
|
71
71
|
factory_girl (~> 4.7.0)
|
72
72
|
railties (>= 3.0.0)
|
73
|
-
font-awesome-sass (4.
|
73
|
+
font-awesome-sass (4.6.2)
|
74
74
|
sass (>= 3.2)
|
75
75
|
globalid (0.3.6)
|
76
76
|
activesupport (>= 4.1.0)
|
@@ -97,7 +97,7 @@ GEM
|
|
97
97
|
mime-types-data (~> 3.2015)
|
98
98
|
mime-types-data (3.2016.0221)
|
99
99
|
mini_portile2 (2.0.0)
|
100
|
-
minitest (5.
|
100
|
+
minitest (5.9.0)
|
101
101
|
nokogiri (1.6.7.2)
|
102
102
|
mini_portile2 (~> 2.0.0.rc2)
|
103
103
|
rack (1.6.4)
|
@@ -130,7 +130,7 @@ GEM
|
|
130
130
|
rake (11.1.2)
|
131
131
|
rdoc (4.2.2)
|
132
132
|
json (~> 1.4)
|
133
|
-
ruby_parser (3.8.
|
133
|
+
ruby_parser (3.8.2)
|
134
134
|
sexp_processor (~> 4.1)
|
135
135
|
sass (3.4.22)
|
136
136
|
sass-rails (5.0.4)
|
@@ -155,7 +155,7 @@ GEM
|
|
155
155
|
sqlite3 (1.3.11)
|
156
156
|
thor (0.19.1)
|
157
157
|
thread_safe (0.3.5)
|
158
|
-
tilt (2.0.
|
158
|
+
tilt (2.0.4)
|
159
159
|
tzinfo (1.2.2)
|
160
160
|
thread_safe (~> 0.1)
|
161
161
|
will-paginate-i18n (0.1.15)
|
@@ -1,10 +1,11 @@
|
|
1
1
|
@UiBibzForm = class Form
|
2
2
|
|
3
3
|
constructor: ->
|
4
|
-
@
|
5
|
-
@
|
6
|
-
@multiSelect()
|
7
|
-
@multiColumn()
|
4
|
+
@switch() if $('input.switch').length > 0
|
5
|
+
@selectPicker() if $('select.selectpicker').length > 0
|
6
|
+
@multiSelect() if $('.multi-select').length > 0
|
7
|
+
@multiColumn() if $('.multi-column').length > 0
|
8
|
+
@formula() if $('.formula_field_input').length > 0
|
8
9
|
|
9
10
|
selectPicker: ->
|
10
11
|
$('select.selectpicker').selectpicker
|
@@ -23,6 +24,43 @@
|
|
23
24
|
data = Object.assign({ inheritClass: true }, data)
|
24
25
|
$(this).multiselect(data)
|
25
26
|
|
27
|
+
formula: ->
|
28
|
+
me = this
|
29
|
+
formula_input_field = $('.formula_field_input')
|
30
|
+
me.updateFormulaField(formula_input_field)
|
31
|
+
|
32
|
+
formula_input_field.on 'keyup', ->
|
33
|
+
me.updateFormulaField($(this))
|
34
|
+
|
35
|
+
updateFormulaField: (field) ->
|
36
|
+
formulaInputField = field
|
37
|
+
formulaSignField = formulaInputField.siblings('.formula_field_sign')
|
38
|
+
formulaResultField = formulaInputField.siblings('.formula_field_result')
|
39
|
+
formulaAlert = formulaInputField.siblings('.formula_field_alert')
|
40
|
+
|
41
|
+
f = new window.UiBibzFormula()
|
42
|
+
result = f.go(formulaInputField.val())
|
43
|
+
error = result[0]
|
44
|
+
response = result[1]
|
45
|
+
|
46
|
+
if !!error
|
47
|
+
formulaAlert.attr('data-original-title', error)
|
48
|
+
formulaAlert.attr('style', 'display: table-cell;')
|
49
|
+
formulaResultField.addClass('fix-border-right')
|
50
|
+
else
|
51
|
+
formulaAlert.hide()
|
52
|
+
formulaResultField.val(eval(response))
|
53
|
+
formulaResultField.removeClass('fix-border-right')
|
54
|
+
|
55
|
+
if isNaN(response)
|
56
|
+
formulaSignField.attr('style', 'display: table-cell;')
|
57
|
+
formulaResultField.attr('style', 'display: table-cell; visible: visible')
|
58
|
+
formulaInputField.addClass('fix-border-right')
|
59
|
+
else
|
60
|
+
formulaSignField.hide()
|
61
|
+
formulaResultField.attr('style', 'visible: hidden;')
|
62
|
+
formulaInputField.removeClass('fix-border-right')
|
63
|
+
|
26
64
|
multiColumn: ->
|
27
65
|
$('.multi-column').each ->
|
28
66
|
data = $(this).data()
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# http://www.developpez.net/forums/d940195-2/webmasters-developpement-web/general-conception-web/contribuez/eval-calcul-risque/
|
2
|
+
@UiBibzFormula = class Formula
|
3
|
+
|
4
|
+
contructor: ->
|
5
|
+
|
6
|
+
res: ''
|
7
|
+
|
8
|
+
suite: (q) ->
|
9
|
+
me = this
|
10
|
+
par1 = q.match(/\(/g)
|
11
|
+
par2 = q.match(/\)/g)
|
12
|
+
if (par1? and par2? and par1.length isnt par2.length) or (not par1? and par2?) or (par1? and not par2?)
|
13
|
+
me.res = "Unclosed parenthesis."
|
14
|
+
else if /.*[\+x\*\/\-]$/.test(q)
|
15
|
+
me.res = "Formula ending with an operator."
|
16
|
+
else
|
17
|
+
me.res = "Undefined Error."
|
18
|
+
|
19
|
+
go: (ch) ->
|
20
|
+
me = this
|
21
|
+
flag = 0
|
22
|
+
for i of me.rg2
|
23
|
+
ch = ch.replace(eval(i), me.rg2[i])
|
24
|
+
finalvalue = ch
|
25
|
+
try
|
26
|
+
op = String(ch).match(/[\+x\*\/\-]{2,}/g)
|
27
|
+
ch = ch.toUpperCase()
|
28
|
+
ch = eval(ch)
|
29
|
+
me.res = "Multiple Operators in a row. <br/> Result is probably wrong." if op?
|
30
|
+
dec = (if not isNaN(ch) then ch.toFixed(3) else "It is a string.")
|
31
|
+
me.res = (if String(dec).search(/\.0+$/) isnt -1 then String(dec).substring(0, String(dec).indexOf(".")) else dec)
|
32
|
+
me.res = ''
|
33
|
+
catch er
|
34
|
+
for i of me.rg
|
35
|
+
if ch.match(eval(i))?
|
36
|
+
me.res = me.rg[i]
|
37
|
+
break
|
38
|
+
flag++
|
39
|
+
me.suite ch if flag is 5
|
40
|
+
return [me.res, finalvalue]
|
41
|
+
|
42
|
+
t:
|
43
|
+
x: "*"
|
44
|
+
X: "*"
|
45
|
+
":": "/"
|
46
|
+
|
47
|
+
rg:
|
48
|
+
"/[^\\+\\*\\/\\-\\(\\)\\s\\d\\.]/": "It is not a number"
|
49
|
+
"/[\\+\\*\\/\\-\\(]\\)/": "Parenthesis ending with a incorrect expression."
|
50
|
+
"/([\\+\\x\\*\\/\\-]{2,})|([\\+\\x\\*\\/\\-]\\s[\\+\\x\\*\\/\\-])/i": "Multiple Operators in a row."
|
51
|
+
"/(\\D\\.)|(\\.[\\D\\s]+)|(\\.\\d+\\.)/": "Wrong Decimal."
|
52
|
+
"/\\d\\s+\\d/": "Cut Integer."
|
53
|
+
"/\\([\\/\\*]/": "First operator within parenthesis is wrong."
|
54
|
+
"/^[\\*\\/]+/": "First operator within string is wrong"
|
55
|
+
|
56
|
+
rg2:
|
57
|
+
"/\\s+/g": " "
|
58
|
+
"/([^\\.\\,\\;\\d]|^)0+([\\,\\.\\;\\d])/g": "$10$2"
|
59
|
+
"/[,;]/g": "."
|
60
|
+
"/([^\\d\\.\\,\\;])0+(\\d)/g": "$1$2"
|
61
|
+
"/^(0)(\\d)/g": "$2"
|
62
|
+
"/[\\[\\]\\|\\&\\=\\!]/g": ""
|
63
|
+
"/([\\d\\)])(\\()/g": "$1*$2"
|
64
|
+
"/(\\))([\\d\\(])/g": "$1*$2"
|
65
|
+
"/\\/+/g": "/"
|
66
|
+
"/[xX:]/g": (o) ->
|
67
|
+
t[o]
|
68
|
+
|
69
|
+
"/\\/+/g": "/"
|
@@ -3,7 +3,7 @@
|
|
3
3
|
@import font-awesome
|
4
4
|
|
5
5
|
// Bootstrap
|
6
|
-
@import bootstrap/
|
6
|
+
@import bootstrap/_variables
|
7
7
|
//@import bootstrap-sprockets
|
8
8
|
@import bootstrap
|
9
9
|
@import tether.min
|
@@ -58,3 +58,32 @@ select.form-control
|
|
58
58
|
.multiselect-container
|
59
59
|
.filter
|
60
60
|
margin: 5px
|
61
|
+
|
62
|
+
.formula_field
|
63
|
+
input
|
64
|
+
border-bottom-right-radius: 0.25rem !important
|
65
|
+
border-top-right-radius: 0.25rem !important
|
66
|
+
.fix-border-right
|
67
|
+
border-bottom-right-radius: 0 !important
|
68
|
+
border-top-right-radius: 0 !important
|
69
|
+
width: 100%
|
70
|
+
.formula_field_sign
|
71
|
+
width: auto
|
72
|
+
min-width: 16px
|
73
|
+
padding: 4px 5px
|
74
|
+
font-weight: 400
|
75
|
+
line-height: 1.42857143
|
76
|
+
text-align: center
|
77
|
+
text-shadow: 0 1px 0 #fff
|
78
|
+
vertical-align: middle
|
79
|
+
background-color: #eee
|
80
|
+
border: solid #ccc
|
81
|
+
border-width: 1px 0
|
82
|
+
margin-left: -5px
|
83
|
+
margin-right: -5px
|
84
|
+
border-left: none
|
85
|
+
border-right: none
|
86
|
+
.form-control[readonly]
|
87
|
+
background-color: white
|
88
|
+
.formula_field_alert, .formula_field_result, .formula_field_sign
|
89
|
+
display: none
|
@@ -6,10 +6,52 @@ module CustomInputs
|
|
6
6
|
label_method, value_method = detect_collection_methods
|
7
7
|
i = UiBibz::Ui::Core::DropdownSelectField.new(attribute_name, options, input_html_options)
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
input_options.delete(:prompt)
|
10
|
+
input_options.merge!({include_blank: false})
|
11
|
+
|
12
|
+
if options[:grouped] == true
|
13
|
+
@builder.grouped_collection_select(
|
14
|
+
attribute_name, grouped_collection,
|
15
|
+
group_method, group_label_method,
|
16
|
+
value_method, label_method,
|
17
|
+
input_options, i.html_options
|
18
|
+
)
|
19
|
+
else
|
20
|
+
@builder.collection_select(
|
21
|
+
attribute_name, collection, value_method, label_method,
|
22
|
+
input_options, i.html_options
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def grouped_collection
|
28
|
+
@grouped_collection ||= begin
|
29
|
+
grouped_collection = options.delete(:collection)
|
30
|
+
grouped_collection.respond_to?(:call) ? grouped_collection.call : grouped_collection.to_a
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def collection
|
35
|
+
if options[:grouped]
|
36
|
+
@collection ||= grouped_collection.map { |collection| collection.try(:send, group_method) }.detect(&:present?) || []
|
37
|
+
else
|
38
|
+
@collection ||= options[:collection]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def group_method
|
43
|
+
@group_method ||= options.delete(:group_method)
|
44
|
+
end
|
45
|
+
|
46
|
+
def group_label_method
|
47
|
+
label = options.delete(:group_label_method)
|
48
|
+
|
49
|
+
unless label
|
50
|
+
common_method_for = detect_common_display_methods(detect_collection_classes(grouped_collection))
|
51
|
+
label = common_method_for[:label]
|
52
|
+
end
|
53
|
+
|
54
|
+
label
|
13
55
|
end
|
14
56
|
end
|
15
57
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module CustomInputs
|
2
|
+
class FormulaInput < SimpleForm::Inputs::StringInput
|
3
|
+
include UiBibz::Ui::Core
|
4
|
+
|
5
|
+
def input(wrapper_options)
|
6
|
+
options = @options.merge({ builder: @builder })
|
7
|
+
UiBibz::Ui::Core::FormulaField.new(attribute_name, options, input_html_options).render
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
data/lib/ui_bibz.rb
CHANGED
@@ -30,6 +30,7 @@ module UiBibz
|
|
30
30
|
autoload :AutocompleteField, "ui_bibz/ui/core/input/autocomplete_field"
|
31
31
|
autoload :DatePickerField, "ui_bibz/ui/core/input/date_picker_field"
|
32
32
|
autoload :DropdownSelectField, "ui_bibz/ui/core/input/dropdown_select_field"
|
33
|
+
autoload :FormulaField, "ui_bibz/ui/core/input/formula_field"
|
33
34
|
autoload :MultiColumnField, "ui_bibz/ui/core/input/multi_column_field"
|
34
35
|
autoload :MultiSelectField, "ui_bibz/ui/core/input/multi_select_field"
|
35
36
|
autoload :SurroundField, "ui_bibz/ui/core/input/surround_field"
|
@@ -61,6 +61,10 @@ module UiBibz::Helpers::UiCoreHelper
|
|
61
61
|
UiBibz::Ui::Core::MultiSelectField.new(content, options, html_options, &block).render
|
62
62
|
end
|
63
63
|
|
64
|
+
def formula_field content = nil, options = nil, html_options = nil, &block
|
65
|
+
UiBibz::Ui::Core::FormulaField.new(content, options, html_options, &block).render
|
66
|
+
end
|
67
|
+
|
64
68
|
def surround_field content = nil, options = nil, html_options = nil, &block
|
65
69
|
UiBibz::Ui::Core::SurroundField.new(content, options, html_options, &block).render
|
66
70
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module UiBibz::Ui::Core
|
2
|
+
|
3
|
+
# Create a FormulaField
|
4
|
+
#
|
5
|
+
# This element is an extend of UiBibz::Ui::Core::Component.
|
6
|
+
#
|
7
|
+
# ==== Attributes
|
8
|
+
#
|
9
|
+
# * +content+ - Content of element
|
10
|
+
# * +options+ - Options of element
|
11
|
+
# * +html_options+ - Html Options of element
|
12
|
+
#
|
13
|
+
# ==== Options
|
14
|
+
#
|
15
|
+
# You can add HTML attributes using the +html_options+.
|
16
|
+
# You can pass arguments in options attribute:
|
17
|
+
# * - formula_field_name, String || Symbol (default: "#{content}_formula")
|
18
|
+
#
|
19
|
+
# ==== Signatures
|
20
|
+
#
|
21
|
+
# UiBibz::Ui::Core::FormulaField.new(content, options = {}, html_options = {}).render
|
22
|
+
#
|
23
|
+
# UiBibz::Ui::Core::FormulaField.new(options = {}, html_options = {}) do
|
24
|
+
# content
|
25
|
+
# end.render
|
26
|
+
#
|
27
|
+
# ==== Examples
|
28
|
+
#
|
29
|
+
# UiBibz::Ui::Core::FormulaField.new('value', { formula_field_name: :formula }, { class: 'test' })
|
30
|
+
#
|
31
|
+
# UiBibz::Ui::Core::FormulaField.new do
|
32
|
+
# 'value'
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# ==== Helper
|
36
|
+
#
|
37
|
+
# formula_field(value, options = {}, html_options = {})
|
38
|
+
#
|
39
|
+
class FormulaField < Component
|
40
|
+
|
41
|
+
# See UiBibz::Ui::Core::Component.initialize
|
42
|
+
def initialize content = nil, options = nil, html_options = nil, &block
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
# Render html tag
|
47
|
+
def render
|
48
|
+
content_tag :div, class: 'input-group formula_field' do
|
49
|
+
concat text_field_formula_input_tag
|
50
|
+
concat formula_field_sign
|
51
|
+
concat text_field_input_tag
|
52
|
+
concat formula_field_alert
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def text_field_input_tag
|
59
|
+
if options[:builder].nil?
|
60
|
+
text_field_tag content, html_options[:value], readonly: true, class: 'formula_field_result form-control'
|
61
|
+
else
|
62
|
+
options[:builder].text_field content, readonly: true, class: 'formula_field_result form-control'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def text_field_formula_input_tag
|
67
|
+
if options[:builder].nil?
|
68
|
+
text_field_tag formula_field_name, '', html_options
|
69
|
+
else
|
70
|
+
options[:builder].text_field formula_field_name, html_options
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def component_html_classes
|
75
|
+
'formula_field_input form-control'
|
76
|
+
end
|
77
|
+
|
78
|
+
def formula_field_alert
|
79
|
+
content_tag :span, class: 'formula_field_alert input-group-addon', data: { toggle: 'tooltip' } do
|
80
|
+
UiBibz::Ui::Core::Glyph.new('exclamation-triangle', state: :danger ).render
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def formula_field_name
|
85
|
+
options[:formula_field_name] || "#{ content }_formula"
|
86
|
+
end
|
87
|
+
|
88
|
+
def formula_field_sign
|
89
|
+
content_tag :span, '=', class: 'formula_field_sign input-group-addon'
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module UiBibz::Ui::Ux
|
2
|
+
|
3
|
+
# As
|
4
|
+
#
|
5
|
+
class As
|
6
|
+
|
7
|
+
def initialize col, record, content
|
8
|
+
@col = col
|
9
|
+
@record = record
|
10
|
+
@content = content
|
11
|
+
end
|
12
|
+
|
13
|
+
def render
|
14
|
+
case @col.as
|
15
|
+
when :boolean
|
16
|
+
boolean_render
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def boolean_render
|
23
|
+
if @content == true
|
24
|
+
glyph = UiBibz::Ui::Core::Glyph.new('check-circle', state: :success)
|
25
|
+
else
|
26
|
+
glyph = UiBibz::Ui::Core::Glyph.new('minus-circle', state: :danger)
|
27
|
+
end
|
28
|
+
glyph.render
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module UiBibz::Ui::Ux
|
2
2
|
class Column < UiBibz::Ui::Core::Component
|
3
3
|
|
4
|
-
attr_accessor :hidden, :link, :name, :data_index, :date_format, :sort, :format, :date_format, :count, :custom_sort, :parent, :id
|
4
|
+
attr_accessor :hidden, :link, :name, :class, :as, :data_index, :date_format, :sort, :format, :date_format, :count, :custom_sort, :parent, :id
|
5
5
|
|
6
6
|
def initialize content = nil, options = nil, html_options = nil, &block
|
7
7
|
super
|
@@ -15,7 +15,9 @@ module UiBibz::Ui::Ux
|
|
15
15
|
@custom_sort = @options[:custom_sort]
|
16
16
|
@parent = @options[:parent]
|
17
17
|
@count = @options[:count]
|
18
|
+
@as = @options[:as]
|
18
19
|
@format = @options[:format]
|
20
|
+
@class = @options[:class]
|
19
21
|
@hidden = @options[:hidden]
|
20
22
|
end
|
21
23
|
|
@@ -3,6 +3,7 @@ require "ui_bibz/ui/ux/table/components/columns"
|
|
3
3
|
require "ui_bibz/ui/ux/table/components/column"
|
4
4
|
require "ui_bibz/ui/ux/table/components/actions"
|
5
5
|
require "ui_bibz/ui/ux/table/components/thead"
|
6
|
+
require "ui_bibz/ui/ux/table/components/as"
|
6
7
|
require "ui_bibz/ui/ux/table/extensions/paginable"
|
7
8
|
require "ui_bibz/ui/ux/table/extensions/paginable"
|
8
9
|
require "ui_bibz/ui/ux/table/extensions/searchable"
|
@@ -157,7 +158,7 @@ module UiBibz::Ui::Ux
|
|
157
158
|
content_tag(:table, html_options) do
|
158
159
|
|
159
160
|
ths = cols.collect do |col|
|
160
|
-
content_tag(:th, sort.header(col)) unless col.hidden?
|
161
|
+
content_tag(:th, sort.header(col), class: col.class) unless col.hidden?
|
161
162
|
end
|
162
163
|
|
163
164
|
ths = action.header ths
|
@@ -165,7 +166,7 @@ module UiBibz::Ui::Ux
|
|
165
166
|
|
166
167
|
trs = store.records.collect do |record|
|
167
168
|
tds = cols.collect do |col|
|
168
|
-
content_tag(:td, td_content(record, col)) unless col.hidden?
|
169
|
+
content_tag(:td, td_content(record, col), class: col.class) unless col.hidden?
|
169
170
|
end
|
170
171
|
|
171
172
|
tds = action.body record, tds
|
@@ -183,6 +184,7 @@ module UiBibz::Ui::Ux
|
|
183
184
|
content = content.strftime(col.date_format) unless col.date_format.nil?
|
184
185
|
content = link_to content, action.inject_url(col.link, record) unless col.link.nil?
|
185
186
|
content = col.format.call(@store.records, record) unless col.format.nil?
|
187
|
+
content = As.new(col, record, content).render unless col.as.nil?
|
186
188
|
content
|
187
189
|
end
|
188
190
|
end
|
data/lib/ui_bibz/version.rb
CHANGED
data/test/ui/button_test.rb
CHANGED
@@ -14,7 +14,7 @@ class ButtonTest < ActionView::TestCase
|
|
14
14
|
actual = UiBibz::Ui::Core::ButtonGroup.new position: :vertical do
|
15
15
|
UiBibz::Ui::Core::Button.new('toto').render
|
16
16
|
end.render
|
17
|
-
expected = "<div
|
17
|
+
expected = "<div class=\"btn-group btn-group-vertical\" role=\"group\"><button class=\"btn-primary btn\">toto</button></div>"
|
18
18
|
|
19
19
|
assert_equal expected, actual
|
20
20
|
end
|
@@ -52,7 +52,7 @@ class ButtonTest < ActionView::TestCase
|
|
52
52
|
concat UiBibz::Ui::Core::ButtonChoice.new('Toto1').render
|
53
53
|
concat UiBibz::Ui::Core::ButtonChoice.new('Toto2').render
|
54
54
|
end.render
|
55
|
-
expected = "<div
|
55
|
+
expected = "<div class=\"btn-group\" role=\"group\"><label class=\"btn-primary btn\"><input type=\"checkbox\" autocomplete=\"off\" />Toto1</label><label class=\"btn-primary btn\"><input type=\"checkbox\" autocomplete=\"off\" />Toto2</label></div>"
|
56
56
|
|
57
57
|
assert_equal expected, actual
|
58
58
|
end
|
@@ -62,7 +62,7 @@ class ButtonTest < ActionView::TestCase
|
|
62
62
|
concat UiBibz::Ui::Core::ButtonChoice.new('Toto1', type: :radio).render
|
63
63
|
concat UiBibz::Ui::Core::ButtonChoice.new('Toto2', type: :radio).render
|
64
64
|
end.render
|
65
|
-
expected = "<div
|
65
|
+
expected = "<div class=\"btn-group\" role=\"group\"><label class=\"btn-primary btn\"><input type=\"radio\" autocomplete=\"off\" />Toto1</label><label class=\"btn-primary btn\"><input type=\"radio\" autocomplete=\"off\" />Toto2</label></div>"
|
66
66
|
|
67
67
|
assert_equal expected, actual
|
68
68
|
end
|
data/test/ui/inputs_test.rb
CHANGED
@@ -86,4 +86,11 @@ class InputsTest < ActionView::TestCase
|
|
86
86
|
|
87
87
|
assert_equal expected, actual
|
88
88
|
end
|
89
|
+
|
90
|
+
test 'formula_field' do
|
91
|
+
actual = UiBibz::Ui::Core::FormulaField.new('value').render
|
92
|
+
expected = "<div class=\"input-group formula_field\"><input type=\"text\" name=\"value_formula\" id=\"value_formula\" value=\"\" class=\"formula_field_input form-control\" /><span class=\"formula_field_sign input-group-addon\">=</span><input type=\"text\" name=\"value\" id=\"value\" readonly=\"readonly\" class=\"formula_field_result form-control\" /><span class=\"formula_field_alert input-group-addon\" data-toggle=\"tooltip\"><i class=\"glyph-danger glyph fa fa-exclamation-triangle\"></i></span></div>"
|
93
|
+
|
94
|
+
assert_equal expected, actual
|
95
|
+
end
|
89
96
|
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ui_bibz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.alpha7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thooams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -237,6 +237,7 @@ files:
|
|
237
237
|
- Rakefile
|
238
238
|
- app/assets/javascripts/fix_bootstrap.coffee
|
239
239
|
- app/assets/javascripts/form.coffee
|
240
|
+
- app/assets/javascripts/formula.coffee
|
240
241
|
- app/assets/javascripts/interface.coffee
|
241
242
|
- app/assets/javascripts/table.coffee
|
242
243
|
- app/assets/javascripts/ui_bibz.coffee
|
@@ -248,6 +249,7 @@ files:
|
|
248
249
|
- app/inputs/custom_inputs/autocomplete_input.rb
|
249
250
|
- app/inputs/custom_inputs/date_picker_input.rb
|
250
251
|
- app/inputs/custom_inputs/dropdown_select_input.rb
|
252
|
+
- app/inputs/custom_inputs/formula_input.rb
|
251
253
|
- app/inputs/custom_inputs/multi_column_input.rb
|
252
254
|
- app/inputs/custom_inputs/multi_select_input.rb
|
253
255
|
- app/inputs/custom_inputs/surround_input.rb
|
@@ -397,6 +399,7 @@ files:
|
|
397
399
|
- lib/ui_bibz/ui/core/input/autocomplete_field.rb
|
398
400
|
- lib/ui_bibz/ui/core/input/date_picker_field.rb
|
399
401
|
- lib/ui_bibz/ui/core/input/dropdown_select_field.rb
|
402
|
+
- lib/ui_bibz/ui/core/input/formula_field.rb
|
400
403
|
- lib/ui_bibz/ui/core/input/multi_column_field.rb
|
401
404
|
- lib/ui_bibz/ui/core/input/multi_select_field.rb
|
402
405
|
- lib/ui_bibz/ui/core/input/surround_field.rb
|
@@ -427,6 +430,7 @@ files:
|
|
427
430
|
- lib/ui_bibz/ui/core/progress.rb
|
428
431
|
- lib/ui_bibz/ui/core/stars.rb
|
429
432
|
- lib/ui_bibz/ui/ux/table/components/actions.rb
|
433
|
+
- lib/ui_bibz/ui/ux/table/components/as.rb
|
430
434
|
- lib/ui_bibz/ui/ux/table/components/column.rb
|
431
435
|
- lib/ui_bibz/ui/ux/table/components/columns.rb
|
432
436
|
- lib/ui_bibz/ui/ux/table/components/store.rb
|
@@ -509,6 +513,7 @@ files:
|
|
509
513
|
- test/ui/table_test.rb
|
510
514
|
- test/ui_bibz_test.rb
|
511
515
|
- test/ui_helper_test.rb
|
516
|
+
- ui_bibz-2.0.0.alpha.gem
|
512
517
|
- ui_bibz.gemspec
|
513
518
|
- vendor/assets/images/switch.png
|
514
519
|
- vendor/assets/javascripts/bootstrap-datepicker.min.js
|