ui_bibz 1.1.0 → 1.1.1

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.
Files changed (150) hide show
  1. checksums.yaml +8 -8
  2. data/.yardoc/checksums +49 -46
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/Gemfile.lock +69 -56
  6. data/README.md +156 -61
  7. data/doc/UiBibz/Concerns/Models/Searchable/ClassMethods.html +6 -6
  8. data/doc/UiBibz/Concerns/Models/Searchable.html +2 -2
  9. data/doc/UiBibz/Concerns/Models.html +115 -0
  10. data/doc/UiBibz/Concerns.html +115 -0
  11. data/doc/UiBibz/Helpers/MetaHelper.html +75 -9
  12. data/doc/UiBibz/Helpers/UiCoreHelper.html +120 -68
  13. data/doc/UiBibz/Helpers/UiUxHelper.html +2 -2
  14. data/doc/UiBibz/Helpers/UtilsHelper.html +2 -2
  15. data/doc/UiBibz/Helpers.html +115 -0
  16. data/doc/UiBibz/Rails/Engine.html +1 -1
  17. data/doc/UiBibz/Rails.html +1 -1
  18. data/doc/UiBibz/Ui/Base.html +2 -2
  19. data/doc/UiBibz/Ui/Core/Alert.html +26 -13
  20. data/doc/UiBibz/Ui/Core/Bar.html +26 -13
  21. data/doc/UiBibz/Ui/Core/Breadcrumb.html +32 -19
  22. data/doc/UiBibz/Ui/Core/BreadcrumbLink.html +26 -13
  23. data/doc/UiBibz/Ui/Core/Button.html +26 -13
  24. data/doc/UiBibz/Ui/Core/ButtonDropdown.html +31 -18
  25. data/doc/UiBibz/Ui/Core/ButtonGroup.html +26 -13
  26. data/doc/UiBibz/Ui/Core/ButtonLink.html +26 -13
  27. data/doc/UiBibz/Ui/Core/ButtonSplitDropdown.html +27 -14
  28. data/doc/UiBibz/Ui/Core/Col.html +26 -13
  29. data/doc/UiBibz/Ui/Core/Component.html +166 -225
  30. data/doc/UiBibz/Ui/Core/Dropdown.html +61 -410
  31. data/doc/UiBibz/Ui/Core/DropdownLink.html +373 -0
  32. data/doc/UiBibz/Ui/Core/DropdownList.html +26 -13
  33. data/doc/UiBibz/Ui/Core/Glyph.html +26 -386
  34. data/doc/UiBibz/Ui/Core/Jumbotron.html +26 -13
  35. data/doc/UiBibz/Ui/Core/Label.html +29 -15
  36. data/doc/UiBibz/Ui/Core/List.html +64 -25
  37. data/doc/UiBibz/Ui/Core/ListGroup.html +47 -21
  38. data/doc/UiBibz/Ui/Core/Nav.html +64 -25
  39. data/doc/UiBibz/Ui/Core/NavDropdown.html +29 -16
  40. data/doc/UiBibz/Ui/Core/NavLink.html +30 -15
  41. data/doc/UiBibz/Ui/Core/Navbar.html +154 -45
  42. data/doc/UiBibz/Ui/Core/NavbarForm.html +58 -38
  43. data/doc/UiBibz/Ui/Core/NavbarNav.html +7 -7
  44. data/doc/UiBibz/Ui/Core/NavbarText.html +26 -13
  45. data/doc/UiBibz/Ui/Core/Panel.html +38 -237
  46. data/doc/UiBibz/Ui/Core/ProgressBar.html +45 -19
  47. data/doc/UiBibz/Ui/Core/Row.html +26 -13
  48. data/doc/UiBibz/Ui/Core/Stars.html +367 -0
  49. data/doc/UiBibz/Ui/Core.html +16 -5
  50. data/doc/UiBibz/Ui/Ux/Actionable.html +1 -1
  51. data/doc/UiBibz/Ui/Ux/Actions.html +198 -14
  52. data/doc/UiBibz/Ui/Ux/Column.html +4 -4
  53. data/doc/UiBibz/Ui/Ux/Columns.html +42 -16
  54. data/doc/UiBibz/Ui/Ux/Grid.html +31 -371
  55. data/doc/UiBibz/Ui/Ux/Paginable.html +22 -9
  56. data/doc/UiBibz/Ui/Ux/Searchable.html +22 -9
  57. data/doc/UiBibz/Ui/Ux/Sortable.html +18 -7
  58. data/doc/UiBibz/Ui/Ux/Store.html +160 -56
  59. data/doc/UiBibz/Ui/Ux/Table.html +109 -374
  60. data/doc/UiBibz/Ui/Ux/TableAction.html +2 -2
  61. data/doc/UiBibz/Ui/Ux/TablePagination.html +33 -14
  62. data/doc/UiBibz/Ui/Ux/TablePaginationPerPage.html +30 -15
  63. data/doc/UiBibz/Ui/Ux/TablePanel.html +139 -43
  64. data/doc/UiBibz/Ui/Ux/TableSearchField.html +26 -13
  65. data/doc/UiBibz/Ui/Ux.html +15 -4
  66. data/doc/UiBibz/Ui.html +4 -2
  67. data/doc/UiBibz/Utils/Internationalization.html +1 -1
  68. data/doc/UiBibz/Utils.html +1 -1
  69. data/doc/UiBibz.html +5 -5
  70. data/doc/_index.html +50 -7
  71. data/doc/class_list.html +1 -1
  72. data/doc/file.README.html +155 -63
  73. data/doc/images/stars.png +0 -0
  74. data/doc/index.html +155 -63
  75. data/doc/method_list.html +278 -398
  76. data/doc/top-level-namespace.html +1 -1
  77. data/lib/ui_bibz/concerns/models/searchable.rb +36 -13
  78. data/lib/ui_bibz/helpers/meta_helper.rb +22 -3
  79. data/lib/ui_bibz/helpers/ui_core_helper.rb +4 -0
  80. data/lib/ui_bibz/ui/core/alert.rb +2 -0
  81. data/lib/ui_bibz/ui/core/breadcrumb/breadcrumb.rb +3 -0
  82. data/lib/ui_bibz/ui/core/breadcrumb/components/breadcrumb_link.rb +2 -0
  83. data/lib/ui_bibz/ui/core/button/button.rb +2 -0
  84. data/lib/ui_bibz/ui/core/button/button_dropdown.rb +6 -4
  85. data/lib/ui_bibz/ui/core/button/button_group.rb +2 -0
  86. data/lib/ui_bibz/ui/core/button/button_link.rb +2 -0
  87. data/lib/ui_bibz/ui/core/button/button_split_dropdown.rb +2 -0
  88. data/lib/ui_bibz/ui/core/col.rb +2 -0
  89. data/lib/ui_bibz/ui/core/component.rb +23 -25
  90. data/lib/ui_bibz/ui/core/dropdown/components/dropdown_link.rb +57 -0
  91. data/lib/ui_bibz/ui/core/dropdown/components/dropdown_list.rb +2 -0
  92. data/lib/ui_bibz/ui/core/dropdown/dropdown.rb +22 -9
  93. data/lib/ui_bibz/ui/core/glyph.rb +10 -0
  94. data/lib/ui_bibz/ui/core/jumbotron.rb +2 -0
  95. data/lib/ui_bibz/ui/core/label.rb +3 -0
  96. data/lib/ui_bibz/ui/core/list/components/list.rb +4 -0
  97. data/lib/ui_bibz/ui/core/list/list_group.rb +4 -0
  98. data/lib/ui_bibz/ui/core/nav/components/nav_dropdown.rb +4 -2
  99. data/lib/ui_bibz/ui/core/nav/components/nav_link.rb +4 -1
  100. data/lib/ui_bibz/ui/core/nav/components/navbar_form.rb +39 -3
  101. data/lib/ui_bibz/ui/core/nav/components/navbar_nav.rb +1 -0
  102. data/lib/ui_bibz/ui/core/nav/components/navbar_text.rb +8 -0
  103. data/lib/ui_bibz/ui/core/nav/nav.rb +6 -0
  104. data/lib/ui_bibz/ui/core/nav/navbar.rb +31 -4
  105. data/lib/ui_bibz/ui/core/panel.rb +7 -5
  106. data/lib/ui_bibz/ui/core/progress_bar/components/bar.rb +2 -0
  107. data/lib/ui_bibz/ui/core/progress_bar/progress_bar.rb +4 -0
  108. data/lib/ui_bibz/ui/core/row.rb +2 -0
  109. data/lib/ui_bibz/ui/core/stars.rb +88 -0
  110. data/lib/ui_bibz/ui/ux/grid.rb +4 -0
  111. data/lib/ui_bibz/ui/ux/table/components/actions.rb +17 -2
  112. data/lib/ui_bibz/ui/ux/table/components/column.rb +2 -2
  113. data/lib/ui_bibz/ui/ux/table/components/columns.rb +4 -2
  114. data/lib/ui_bibz/ui/ux/table/components/store.rb +10 -1
  115. data/lib/ui_bibz/ui/ux/table/extensions/actionable.rb +3 -1
  116. data/lib/ui_bibz/ui/ux/table/extensions/paginable.rb +1 -0
  117. data/lib/ui_bibz/ui/ux/table/extensions/searchable.rb +1 -0
  118. data/lib/ui_bibz/ui/ux/table/extensions/sortable.rb +8 -2
  119. data/lib/ui_bibz/ui/ux/table/table.rb +19 -8
  120. data/lib/ui_bibz/ui/ux/table/table_pagination.rb +8 -1
  121. data/lib/ui_bibz/ui/ux/table/table_pagination_per_page.rb +10 -2
  122. data/lib/ui_bibz/ui/ux/table/table_panel.rb +28 -13
  123. data/lib/ui_bibz/ui/ux/table/table_search_field.rb +9 -1
  124. data/lib/ui_bibz/version.rb +1 -1
  125. data/lib/ui_bibz.rb +1 -0
  126. data/test/test_helper.rb +5 -0
  127. data/test/ui/dropdown_test.rb +4 -4
  128. data/test/ui/stars_test.rb +42 -0
  129. data/test/ui/table_test.rb +25 -6
  130. data/ui_bibz.gemspec +4 -1
  131. data/vendor/assets/fonts/FontAwesome.otf +0 -0
  132. data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
  133. data/vendor/assets/fonts/fontawesome-webfont.svg +640 -0
  134. data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
  135. data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
  136. data/vendor/assets/fonts/fontawesome-webfont.woff2 +0 -0
  137. data/vendor/assets/javascripts/bootstrap-datepicker.min.js +8 -0
  138. data/vendor/assets/javascripts/bootstrap-select.min.js +8 -0
  139. data/vendor/assets/javascripts/bootstrap-switch.min.js +22 -0
  140. data/vendor/assets/javascripts/bootstrap.min.js +7 -0
  141. data/vendor/assets/javascripts/jquery-2.1.4.min.js +4 -0
  142. data/vendor/assets/javascripts/ui_bibz.js.coffee +8 -0
  143. data/vendor/assets/stylesheets/bootstrap-datepicker3.min.css +8 -0
  144. data/vendor/assets/stylesheets/bootstrap-select.min.css +6 -0
  145. data/vendor/assets/stylesheets/bootstrap-switch.min.css +22 -0
  146. data/vendor/assets/stylesheets/bootstrap-theme.min.css +5 -0
  147. data/vendor/assets/stylesheets/bootstrap.min.css +5 -0
  148. data/vendor/assets/stylesheets/font-awesome.min.css +4 -0
  149. data/vendor/assets/stylesheets/ui_bibz.sass +23 -0
  150. metadata +71 -2
@@ -26,7 +26,7 @@ module UiBibz::Ui::Core
26
26
  #
27
27
  # ==== Signatures
28
28
  #
29
- # UiBibz::Ui::Core::Dropdown.new(options = nil, html_options = nil).tap do |d|
29
+ # UiBibz::Ui::Core::NavDropdown.new(options = nil, html_options = nil).tap do |d|
30
30
  # ...
31
31
  # d.list content = nil, options = nil, html_options = nil, &block
32
32
  # d.list content = nil, options = nil, html_options = nil, &block
@@ -36,17 +36,19 @@ module UiBibz::Ui::Core
36
36
  #
37
37
  # ==== Examples
38
38
  #
39
- # UiBibz::Ui::Core::Dropdown.new(name, state: :success).tap do |d|
39
+ # UiBibz::Ui::Core::NavDropdown.new(name, state: :success).tap do |d|
40
40
  # d.list link_to('test', '#')
41
41
  # d.list link_to('test2', '#')
42
42
  # end.render
43
43
  #
44
44
  class NavDropdown < Dropdown
45
45
 
46
+ # See UiBibz::Ui::Core::Component.initialize
46
47
  def initialize content, options = nil, html_options = nil, &block
47
48
  super
48
49
  end
49
50
 
51
+ # Render html tag
50
52
  def render
51
53
  content_tag :li, class_and_html_options(type) do
52
54
  concat link_html
@@ -18,6 +18,7 @@ module UiBibz::Ui::Core
18
18
  # (+:active+)
19
19
  # * +url+ - String
20
20
  # * +badge+ - String
21
+ # * +link_html_options+ - Hash
21
22
  #
22
23
  # ==== Signatures
23
24
  #
@@ -29,7 +30,7 @@ module UiBibz::Ui::Core
29
30
  #
30
31
  # ==== Examples
31
32
  #
32
- # UiBibz::Ui::Core::NavLink.new(content, { badge: 15, url: '/', status: :active },{ class: 'test' }).render
33
+ # UiBibz::Ui::Core::NavLink.new(content, { badge: 15, url: '/', status: :active, link_html_options: { class: 'link1' }},{ class: 'test' }).render
33
34
  #
34
35
  # UiBibz::Ui::Core::NavLink.new({glyph: { name: 'eye', size: 3 }, { class: 'test' }) do
35
36
  # 'Home'
@@ -37,10 +38,12 @@ module UiBibz::Ui::Core
37
38
  #
38
39
  class NavLink < Component
39
40
 
41
+ # See UiBibz::Ui::Core::Component.initialize
40
42
  def initialize content = nil, options = nil, html_options = nil, &block
41
43
  super
42
44
  end
43
45
 
46
+ # Render html tag
44
47
  def render
45
48
  content_tag :li, content_htm, class_and_html_options.merge({ role: 'presentation' })
46
49
  end
@@ -1,3 +1,4 @@
1
+ require 'haml'
1
2
  module UiBibz::Ui::Core
2
3
 
3
4
  # Create a NavbarForm
@@ -16,6 +17,8 @@ module UiBibz::Ui::Core
16
17
  # You can pass arguments in options attribute:
17
18
  #
18
19
  # http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for
20
+ # # and
21
+ # http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag
19
22
  #
20
23
  # ==== Signatures
21
24
  #
@@ -31,15 +34,48 @@ module UiBibz::Ui::Core
31
34
  # f.submit 'Submit'
32
35
  # end.render
33
36
  #
34
- class NavbarForm < Component
37
+ # UiBibz::Ui::Core::NavbarForm.new('/search', type: :form_tag) do
38
+ # text_field_tag :field
39
+ # submit_tag 'Submit'
40
+ # end.render
41
+ #
42
+ class NavbarForm < UiBibz::Ui::Base
43
+ include Haml::Helpers
44
+ include ActionView::Helpers#::FormHelper
35
45
 
36
- def initialize content = nil, options = nil, html_options = nil, &block
37
- @form = form_for(content, options, html_options, &block)
46
+ # See UiBibz::Ui::Core::Component.initialize
47
+ def initialize model_or_url, options = {}, &block
48
+ init_haml_helpers
49
+ @options = options
50
+ if type == :form_for
51
+ @form = form_for(model_or_url, options, &block)
52
+ else
53
+ @form = form_tag(model_or_url, class: "navbar-form #{ position }", &block)
54
+ end
38
55
  end
39
56
 
57
+ # Render html tag
40
58
  def render
41
59
  @form
42
60
  end
43
61
 
62
+ private
63
+
64
+ def protect_against_forgery?
65
+ false
66
+ end
67
+
68
+ def url
69
+ @options[:url]
70
+ end
71
+
72
+ def type
73
+ @options[:type] || :form_for
74
+ end
75
+
76
+ def position
77
+ "navbar-#{ @options[:position] }" unless @options[:position].nil?
78
+ end
79
+
44
80
  end
45
81
  end
@@ -38,6 +38,7 @@ module UiBibz::Ui::Core
38
38
  #
39
39
  class NavbarNav < Nav
40
40
 
41
+ # See UiBibz::Ui::Core::Component.initialize
41
42
  def initialize content = nil, options = nil, html_options = nil, &block
42
43
  super
43
44
  end
@@ -33,13 +33,21 @@ module UiBibz::Ui::Core
33
33
  #
34
34
  class NavbarText < Component
35
35
 
36
+ # See UiBibz::Ui::Core::Component.initialize
36
37
  def initialize content = nil, options = nil, html_options = nil, &block
37
38
  super
38
39
  end
39
40
 
41
+ # Render html tag
40
42
  def render
41
43
  content_tag :ul, @content, class_and_html_options(["navbar-text", position])
42
44
  end
43
45
 
46
+ private
47
+
48
+ def position
49
+ "navbar-#{ @options[:position] }" unless @options[:position].nil?
50
+ end
51
+
44
52
  end
45
53
  end
@@ -58,19 +58,25 @@ module UiBibz::Ui::Core
58
58
  #
59
59
  class Nav < Component
60
60
 
61
+ # See UiBibz::Ui::Core::Component.initialize
61
62
  def initialize content = nil, options = nil, html_options = nil, &block
62
63
  super
63
64
  @items = []
64
65
  end
65
66
 
67
+ # Render html tag
66
68
  def render
67
69
  content_tag :ul, @items.join.html_safe, class_and_html_options(["nav", type, position])
68
70
  end
69
71
 
72
+ # Add nav link items
73
+ # See UiBibz::Ui::Core::NavLink
70
74
  def link content = nil, options = {}, html_options = nil, &block
71
75
  @items << NavLink.new(content, options.merge({ nav_type: type }), html_options, &block).render
72
76
  end
73
77
 
78
+ # Add nav dropdown items
79
+ # See UiBibz::Ui::Core::NavDropdown
74
80
  def dropdown content = nil, options = {}, html_options = nil, &block
75
81
  @items << NavDropdown.new(content, options, html_options).tap(&block).render
76
82
  end
@@ -1,4 +1,6 @@
1
1
  require 'ui_bibz/ui/core/nav/components/navbar_nav'
2
+ require 'ui_bibz/ui/core/nav/components/navbar_text'
3
+ require 'ui_bibz/ui/core/nav/components/navbar_form'
2
4
  module UiBibz::Ui::Core
3
5
 
4
6
  # Create a Navbar
@@ -41,6 +43,11 @@ module UiBibz::Ui::Core
41
43
  # n.link 'Link 1', "#"
42
44
  # n.link 'Link 2', "#"
43
45
  # end
46
+ # nb.form(url: 'search/', type: :form_tag) do
47
+ # text_field_tag 'search', nil, { class: 'form-control', placeholder: 'Search' }
48
+ # button 'Submit', type: :submit
49
+ # end
50
+ # nb.text 'My text'
44
51
  # end.render
45
52
  #
46
53
  # ==== Helper
@@ -56,11 +63,13 @@ module UiBibz::Ui::Core
56
63
  #
57
64
  class Navbar < Component
58
65
 
66
+ # See UiBibz::Ui::Core::Component.initialize
59
67
  def initialize content = nil, options = nil, html_options = nil, &block
60
68
  super
61
69
  @items = []
62
70
  end
63
71
 
72
+ # Render html tag
64
73
  def render
65
74
  content_tag :nav, class_and_html_options(['navbar', type, position]) do
66
75
  content_tag :div, class: 'container-fluid' do
@@ -70,17 +79,27 @@ module UiBibz::Ui::Core
70
79
  end
71
80
  end
72
81
 
82
+ # Add navbar nav items
83
+ # See UiBibz::Ui::Core::NavbarNav
73
84
  def nav content = nil, options = nil, html_options = nil, &block
74
85
  options = options || {}
75
86
  @items << UiBibz::Ui::Core::NavbarNav.new(content, options, html_options).tap(&block).render
76
87
  end
77
88
 
78
- def form content = nil, options = nil, html_options = nil, &block
79
- # @items << UiBibz::Ui::Core::Form.new(content, options, html_options).tap(&block)
89
+ # Add navbar form items
90
+ # See UiBibz::Ui::Core::NavbarForm
91
+ def form model_or_url, options = {}, &block
92
+ @items << UiBibz::Ui::Core::NavbarForm.new(model_or_url, options, &block).render
80
93
  end
81
94
 
95
+ # Add navbar text items
96
+ # See UiBibz::Ui::Core::NavbarText
82
97
  def text content = nil, options = nil, html_options = nil, &block
83
- # @items << UiBibz::Ui::Core::Text.new(content, options, html_options).tap(&block)
98
+ @items << UiBibz::Ui::Core::NavbarText.new(content, options, html_options, &block).render
99
+ end
100
+
101
+ def brand content = nil, options = nil, html_options = nil, &block
102
+ @brand = UiBibz::Ui::Core::Component.new(content, options, html_options, &block)
84
103
  end
85
104
 
86
105
  private
@@ -88,7 +107,15 @@ module UiBibz::Ui::Core
88
107
  def header_html
89
108
  content_tag :div, class: 'navbar-header' do
90
109
  concat navbar_toggle_button_html
91
- concat link_to [glyph_with_space, @options[:title]].compact.join.html_safe, '#', class: 'navbar-brand'
110
+ concat link_to title.content, title.options[:url], title.class_and_html_options('navbar-brand') unless title.nil?
111
+ end
112
+ end
113
+
114
+ def title
115
+ @title ||= if @brand.nil?
116
+ brand(@options[:title], url: '/') unless @options[:title].nil?
117
+ else
118
+ @brand
92
119
  end
93
120
  end
94
121
 
@@ -78,25 +78,27 @@ module UiBibz::Ui::Core
78
78
  #
79
79
  class Panel < Component
80
80
 
81
+ # See UiBibz::Ui::Core::Component.initialize
81
82
  def initialize content = nil, options = nil, html_options = nil, &block
82
83
  super
83
84
  end
84
85
 
85
- # Header is a component element
86
+ # Add Header which is a component
86
87
  def header content = nil, options = nil, html_options = nil, &block
87
88
  @header = Component.new content, options, html_options, &block
88
89
  end
89
90
 
90
- # Body is a component element
91
+ # Add Body which is a component
91
92
  def body content = nil, options = nil, html_options = nil, &block
92
93
  @body = Component.new content, options, html_options, &block
93
94
  end
94
95
 
95
- # Footer is a component element
96
+ # Add Footer which is a component
96
97
  def footer content = nil, options = nil, html_options = nil, &block
97
98
  @footer = Component.new content, options, html_options, &block
98
99
  end
99
100
 
101
+ # Render html tag
100
102
  def render
101
103
  content_tag :div, class_and_html_options("panel") do
102
104
  concat(header_html) unless @header.nil?
@@ -105,13 +107,13 @@ module UiBibz::Ui::Core
105
107
  end
106
108
  end
107
109
 
110
+ protected
111
+
108
112
  def state
109
113
  sym = @options[:state] || :default
110
114
  "panel-#{ states[sym] }"
111
115
  end
112
116
 
113
- protected
114
-
115
117
  def header_html
116
118
  content_tag :div, @header.render, @header.class_and_html_options("panel-heading")
117
119
  end
@@ -43,10 +43,12 @@ module UiBibz::Ui::Core
43
43
  #
44
44
  class Bar < Component
45
45
 
46
+ # See UiBibz::Ui::Core::Component.initialize
46
47
  def initialize content = nil, options = nil, html_options = nil, &block
47
48
  super
48
49
  end
49
50
 
51
+ # Render html tag
50
52
  def render
51
53
  content_tag :div, progressbar_inner_html, class_and_html_options(['progress-bar', type]).merge(bar_html_options)
52
54
  end
@@ -67,15 +67,19 @@ module UiBibz::Ui::Core
67
67
  #
68
68
  class ProgressBar < Component
69
69
 
70
+ # See UiBibz::Ui::Core::Component.initialize
70
71
  def initialize content = nil, options = nil, html_options = nil, &block
71
72
  super
72
73
  @bars = []
73
74
  end
74
75
 
76
+ # Render html tag
75
77
  def render
76
78
  content_tag :div, content, class: 'progress'
77
79
  end
78
80
 
81
+ # Add progressbar bar items
82
+ # See UiBibz::Ui::Core::Bar
79
83
  def bar content = nil, options = nil, html_options = nil, &block
80
84
  @bars << Bar.new(content, options, html_options, &block).render
81
85
  end
@@ -28,10 +28,12 @@ module UiBibz::Ui::Core
28
28
  #
29
29
  class Row < Component
30
30
 
31
+ # See UiBibz::Ui::Core::Component.initialize
31
32
  def initialize content = nil, options = nil, html_options = nil, &block
32
33
  super
33
34
  end
34
35
 
36
+ # Render html tag
35
37
  def render
36
38
  content_tag :div, @content, class_and_html_options('row')
37
39
  end
@@ -0,0 +1,88 @@
1
+ module UiBibz::Ui::Core
2
+
3
+ # Create stars notation
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
+ # * +state+ - State of élement with symbol value:
18
+ # (+:default+, +:primary+, +:info+, +:warning+, +:danger+)
19
+ # * +num+ - Integer, number of stars
20
+ #
21
+ # ==== Signatures
22
+ #
23
+ # UiBibz::Ui::Core::Stars.new(content, options = nil, html_options = nil)
24
+ #
25
+ # UiBibz::Ui::Core::Stars.new(options = nil, html_options = nil) do
26
+ # content
27
+ # end
28
+ #
29
+ # ==== Examples
30
+ #
31
+ # UiBibz::Ui::Core::Stars.new(content, state: :success).render
32
+ #
33
+ # UiBibz::Ui::Core::Stars.new({ num: 10 }) do
34
+ # #content
35
+ # end.render
36
+ #
37
+ # ==== Helper
38
+ #
39
+ # stars(content, options = {}, html_options = {})
40
+ #
41
+ # stars(options = {}, html_options = {}) do
42
+ # content
43
+ # end
44
+ #
45
+ class Stars < Component
46
+
47
+ # See UiBibz::Ui::Core::Component.initialize
48
+ def initialize content = nil, options = nil, html_options = nil, &block
49
+ super
50
+ end
51
+
52
+ # Render html tag
53
+ def render
54
+ content_tag :span, stars_notation.join(' ').html_safe, class_and_html_options('stars-notation')
55
+ end
56
+
57
+ private
58
+
59
+ def number
60
+ @options[:num] || 5
61
+ end
62
+
63
+ def stars_notation
64
+ stars = []
65
+ number.to_i.times do |star|
66
+ star = star + 1
67
+ name = star_name(star)
68
+ stars << UiBibz::Ui::Core::Glyph.new(name, glyph_opts).render
69
+ end
70
+ stars
71
+ end
72
+
73
+ def glyph_opts
74
+ { state: @options[:state] } unless @options[:state].nil?
75
+ end
76
+
77
+ def star_name star
78
+ if star <= @content
79
+ 'star'
80
+ elsif star > @content && !@content.is_a?(Integer) && star < @content + 1
81
+ 'star-half-o'
82
+ else
83
+ 'star-o'
84
+ end
85
+ end
86
+
87
+ end
88
+ end
@@ -61,6 +61,7 @@ module UiBibz::Ui::Ux
61
61
  @views = {}
62
62
  end
63
63
 
64
+ # Add grid view items
64
65
  def view content = nil, options = nil, html_options = nil, &block
65
66
  o = content.kind_of?(Hash) ? content : options
66
67
  c = UiBibz::Ui::Core::Component.new content, options, html_options, &block
@@ -68,6 +69,7 @@ module UiBibz::Ui::Ux
68
69
  @views = @views.merge(h)
69
70
  end
70
71
 
72
+ # Render html tag
71
73
  def render
72
74
  define_col_nums
73
75
  UiBibz::Ui::Core::Row.new(class: 'grid') do
@@ -84,6 +86,8 @@ module UiBibz::Ui::Ux
84
86
  end.render
85
87
  end
86
88
 
89
+ private
90
+
87
91
  def view_by_num c, num, item_class
88
92
  UiBibz::Ui::Core::Col.new(c.content, c.options.merge({ num: num }), c.class_and_html_options(['col', item_class])).render
89
93
  end
@@ -3,18 +3,33 @@ module UiBibz::Ui::Ux
3
3
  class Actions
4
4
 
5
5
  def initialize store
6
- @store = store
7
- @actions = []
6
+ @store = store
7
+ @actions = []
8
+ @action_order = -1
8
9
  end
9
10
 
11
+ # Add action in table
10
12
  def action content = nil, options = nil, html_options = nil, &block
11
13
  @actions << TableAction.new(content, options, html_options, &block).render
12
14
  end
13
15
 
16
+ def reset
17
+ @actions = []
18
+ end
19
+
20
+ def format &block
21
+ @format_action = block
22
+ end
23
+
24
+ # Get all actions
14
25
  def list
15
26
  @actions.empty? ? defaults_actions : @actions
16
27
  end
17
28
 
29
+ def format_action
30
+ @format_action
31
+ end
32
+
18
33
  private
19
34
 
20
35
  def defaults_actions
@@ -5,10 +5,10 @@ module UiBibz::Ui::Ux
5
5
 
6
6
  def initialize content = nil, options = nil, html_options = nil, &block
7
7
  super
8
- @name = @content
8
+ @data_index = @content
9
+ @name = @options[:name]
9
10
  @link = @options[:link] # for show or edit action
10
11
  @order = @options[:order]
11
- @data_index = @options[:data_index]
12
12
  @date_format = @options[:date_format]
13
13
  @sort = @options[:sort]
14
14
  @custom_sort = @options[:custom_sort]
@@ -5,10 +5,12 @@ module UiBibz::Ui::Ux
5
5
  @columns = columns || []
6
6
  end
7
7
 
8
- def column name = nil, options = nil, html_options = nil, &block
9
- @columns << Column.new(name, options, html_options, &block)
8
+ # Add column in table
9
+ def column data_index = nil, options = nil, html_options = nil, &block
10
+ @columns << Column.new(data_index, options, html_options, &block)
10
11
  end
11
12
 
13
+ # Get all columns
12
14
  def list
13
15
  @columns
14
16
  end
@@ -5,6 +5,7 @@ module UiBibz::Ui::Ux
5
5
 
6
6
  attr_accessor :records
7
7
 
8
+ # Store Use WillPaginate store methods
8
9
  def initialize store
9
10
  @records = store.records
10
11
  @store = store
@@ -23,6 +24,10 @@ module UiBibz::Ui::Ux
23
24
  @records.total_entries
24
25
  end
25
26
 
27
+ def id
28
+ @store.id
29
+ end
30
+
26
31
  def sort
27
32
  @store.sort
28
33
  end
@@ -44,7 +49,7 @@ module UiBibz::Ui::Ux
44
49
  end
45
50
 
46
51
  def columns
47
- @columns ||= Columns.new model.new.attributes.keys.map{ |record| Column.new(record.humanize, { data_index: record }) }
52
+ @columns ||= Columns.new model.new.attributes.keys.map{ |record| Column.new(record, { name: record.humanize }) }
48
53
  end
49
54
 
50
55
  def model
@@ -63,5 +68,9 @@ module UiBibz::Ui::Ux
63
68
  @store.action
64
69
  end
65
70
 
71
+ def param_id
72
+ @store.param_id
73
+ end
74
+
66
75
  end
67
76
  end
@@ -31,9 +31,11 @@ module UiBibz::Ui::Ux
31
31
  def dropdown_action record
32
32
  UiBibz::Ui::Core::Dropdown.new(dropdown_action_name, { position: :right, glyph: actions_glyph }, class: 'btn-group-xs dropdown-action').tap do |d|
33
33
  unless @actions.nil?
34
+ @actions.format_action.call(record) unless @actions.format_action.nil?
34
35
  actions_links(record).each do |l|
35
- d.list l.html_safe
36
+ d.list l.to_s.html_safe
36
37
  end
38
+ @actions.reset
37
39
  end
38
40
  end.render
39
41
  end
@@ -7,6 +7,7 @@ module UiBibz::Ui::Ux
7
7
  @options = options
8
8
  end
9
9
 
10
+ # Render html tag
10
11
  def render
11
12
  content_tag :div do
12
13
  concat UiBibz::Ui::Ux::TablePagination.new(store: @store).render
@@ -6,6 +6,7 @@ module UiBibz::Ui::Ux
6
6
  @options = options
7
7
  end
8
8
 
9
+ # Render html tag
9
10
  def render
10
11
  content_tag :div do
11
12
  concat content_tag(:div, table_name, class: 'title')
@@ -6,10 +6,10 @@ module UiBibz::Ui::Ux
6
6
  @options = options
7
7
  end
8
8
 
9
+ # header use i18n
9
10
  def header column, name = nil
10
11
  @column = column
11
- name = name || @column.name.try('titleize')
12
- defaults = [translate_headers_by_defaults, translate_headers_by_defaults_active_record, translate_headers_by_active_record, name]
12
+ defaults = [translate_headers_by_defaults, translate_headers_by_defaults_active_record, translate_headers_by_active_record, header_name(name)]
13
13
  @name = UiBibz::Utils::Internationalization.new(translate_headers_by_model, default: defaults).translate
14
14
  sortable? ? sortable_link : title
15
15
  end
@@ -20,6 +20,11 @@ module UiBibz::Ui::Ux
20
20
  link_to title.html_safe, url_options, { class: cls }
21
21
  end
22
22
 
23
+ def header_name name
24
+ name = name || @column.name.try('titleize')
25
+ name || @column.data_index.to_s.try('titleize')
26
+ end
27
+
23
28
  def translate_headers_by_model
24
29
  "ui_bibz.grid.headers.#{ @store.model.to_s.underscore }.#{ @column.data_index }"
25
30
  end
@@ -39,6 +44,7 @@ module UiBibz::Ui::Ux
39
44
  def url_options
40
45
  args = {
41
46
  controller: @store.controller,
47
+ id: @store.param_id,
42
48
  action: @store.action,
43
49
  search: @store.search,
44
50
  sort: sort_name,