ui_bibz 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -25,9 +25,10 @@ module UiBibz::Ui::Ux
25
25
  # You can pass arguments in options attribute:
26
26
  # * +store+ - Store generate by '+table_search_pagination+' method
27
27
  # * +url+ - String
28
- # * tap - Boolean
29
- # * columns - Add column
30
- # * actions - Add action by row
28
+ # * +tap+ - Boolean
29
+ # * +actionable+ - Boolean
30
+ # * +sortable+ - Boolean
31
+ # * +searchable+ - Boolean
31
32
  #
32
33
  # ==== Signatures
33
34
  #
@@ -35,7 +36,7 @@ module UiBibz::Ui::Ux
35
36
  #
36
37
  # UiBibz::Ui::Ux::Table.new(store: @store, tap: true) do |t|
37
38
  # t.columns do |c|
38
- # c.column name: '#', data_index: '#'
39
+ # c.column :id, name: '#'
39
40
  # end
40
41
  # t.actions do |a|
41
42
  # a.action '', url: url, glyph: ''
@@ -48,10 +49,10 @@ module UiBibz::Ui::Ux
48
49
  #
49
50
  # UiBibz::Ui::Ux::Table.new(store: @users).tap do |t|
50
51
  # t.columns do |c|
51
- # c.column '#', { data_index: 'id' }
52
- # c.column 'Name fr', { data_index: 'name_fr', link: edit_user_path(:id), order: 2 }
53
- # c.column 'Name en', { data_index: 'name_en', order: 1 }
54
- # c.column 'Name en', { data_index: 'name_en', format: lambda{ |records, record| "name #{ record.id}"} }
52
+ # c.column :id, { name: '#' }
53
+ # c.column :name_fr', { link: edit_user_path(:id), order: 2 }
54
+ # c.column :name_en'
55
+ # c.column :status_id, { name: 'Status', format: lambda{ |records, record| "Test #{ record.id}"} }
55
56
  # end
56
57
  # t.actions do |a|
57
58
  # a.action 'toto', url: users_path(:id), glyph: 'eye'
@@ -82,24 +83,34 @@ module UiBibz::Ui::Ux
82
83
 
83
84
  attr_accessor :columns
84
85
 
86
+ # See UiBibz::Ui::Core::Component.initialize
85
87
  def initialize content = nil, options = nil, html_options = nil, &block
86
88
  super
87
89
  @columns = Columns.new
88
90
  @actions = Actions.new store
89
91
  end
90
92
 
93
+ # Add table columns items
91
94
  def columns &block
92
95
  @columns.tap(&block)
93
96
  end
94
97
 
98
+ # Add table actions items
95
99
  def actions &block
96
100
  @actions.tap(&block)
97
101
  end
98
102
 
103
+ # for test
104
+ def actions_list
105
+ @actions
106
+ end
107
+
108
+ # Render html tag
99
109
  def render
100
110
  table_html
101
111
  end
102
112
 
113
+ # Store must be generated by *table_search_pagination* method
103
114
  def store
104
115
  @store ||= if @options[:store].nil?
105
116
  raise 'Store is nil!'
@@ -27,16 +27,23 @@ module UiBibz::Ui::Ux
27
27
  class TablePagination < UiBibz::Ui::Base
28
28
  include WillPaginate::ActionView
29
29
 
30
+ # Initialize pagination with component item
31
+ # pagination require WillPaginate gem
30
32
  def initialize options = nil, html_options = nil
31
33
  @pagination = UiBibz::Ui::Core::Component.new nil, options, html_options
32
34
  end
33
35
 
36
+ # Render html tag with boostrap pagination theme
34
37
  def render
35
- will_paginate(store.records, params: { controller: store.controller }, renderer: BootstrapPagination::Rails)
38
+ paginate_parameters = { controller: store.controller }
39
+ paginate_parameters = paginate_parameters.merge({ store_id: store.id }) unless store.id.nil?
40
+ will_paginate(store.records, params: paginate_parameters, renderer: BootstrapPagination::Rails)
36
41
  end
37
42
 
38
43
  private
39
44
 
45
+
46
+ # Store must be generated by *table_search_pagination* method
40
47
  def store
41
48
  @store ||= if @pagination.options[:store].nil?
42
49
  raise 'Store is nil!'
@@ -25,13 +25,16 @@ module UiBibz::Ui::Ux
25
25
  class TablePaginationPerPage < UiBibz::Ui::Base
26
26
  include WillPaginate::ActionView
27
27
 
28
+ # Initialize per_page_field with component item
29
+ # per_page_field require WillPaginate gem
28
30
  def initialize options = nil, html_options = nil
29
31
  @per_page_field = UiBibz::Ui::Core::Component.new nil, options, html_options
30
32
  end
31
33
 
34
+ # Render html tag
32
35
  def render
33
36
  if @per_page_field.options[:wrap_form] != false
34
- form_tag(url_for(controller: store.controller, action: store.action), method: :get) do
37
+ form_tag(url_for(url_parameters), method: :get) do
35
38
  per_page_html
36
39
  end
37
40
  else
@@ -51,11 +54,16 @@ module UiBibz::Ui::Ux
51
54
  end
52
55
  end
53
56
 
57
+ def url_parameters
58
+ { controller: store.controller, action: store.action, id: store.param_id }
59
+ end
60
+
54
61
  def per_page_html
55
62
  content_tag :div, class: 'table-pagination-per-page' do
56
63
  concat results_count_html
57
64
  concat UiBibz::Utils::Internationalization.new("ui_bibz.table.pagination.per_page", default: "Per page: ").translate
58
- concat select_tag('per_page', options_for_select([25, 50, 100], store.per_page), class: 'form-control')
65
+ concat select_tag('per_page', options_for_select([5, 10, 20, 30, 50, 100, 200, 500], store.per_page), class: 'form-control')
66
+ concat tag(:input, type: 'hidden', name: 'store_id', value: store.id) unless store.id.nil? # If there is more 1 table in html page
59
67
  end
60
68
  end
61
69
 
@@ -16,9 +16,11 @@ module UiBibz::Ui::Ux
16
16
  # You can pass arguments in options attribute:
17
17
  # * +store+ - Store generate by '+table_search_pagination+' method
18
18
  # * +url+ - String
19
- # * tap - Boolean
20
- # * columns - Add column
21
- # * actions - Add action by row
19
+ # * +tap+ - Boolean
20
+ # * +table_options+ - Hash
21
+ # * +actionable+ - Boolean
22
+ # * +sortable+ - Boolean
23
+ # * +searchable+ - Boolean
22
24
  #
23
25
  # ==== Signatures
24
26
  #
@@ -35,15 +37,15 @@ module UiBibz::Ui::Ux
35
37
  #
36
38
  # ==== Examples
37
39
  #
38
- # UiBibz::Ui::Ux::TablePanel.new(store: @users, pagination).render
40
+ # UiBibz::Ui::Ux::TablePanel.new(store: @users, table_options: { actionable: false }).render
39
41
  #
40
42
  # UiBibz::Ui::Ux::TablePanel.new(store: @users).tap do |t|
41
43
  # t.header 'My Table panel'
42
44
  # t.columns do |c|
43
- # c.column '#', { data_index: 'id' }, { class: 'column-id' }
44
- # c.column 'Name fr', { data_index: 'name_fr', link: edit_user_path(:id), order: 2 }
45
- # c.column 'Name en', { data_index: 'name_en', order: 1 }
46
- # c.column 'Name en', { data_index: 'name_en', format: lambda{ |records, record| "name #{ record.id}"} }
45
+ # c.column :id, { name: '# }, { class: 'column-id' }
46
+ # c.column :name_fr, { name: 'Name FR', link: edit_user_path(:id), order: 2 }
47
+ # c.column :name_en
48
+ # c.column :status_id, { name: 'Status', format: lambda{ |records, record| "Test #{ record.id}"} }
47
49
  # end
48
50
  # t.actions do |a|
49
51
  # a.action 'toto', url: users_path(:id), glyph: 'eye'
@@ -92,6 +94,7 @@ module UiBibz::Ui::Ux
92
94
 
93
95
  attr_accessor :columns
94
96
 
97
+ # See UiBibz::Ui::Core::Component.initialize
95
98
  def initialize content = nil, options = nil, html_options = nil, &block
96
99
  super
97
100
  @store = @options.delete(:store) if @options[:store]
@@ -99,30 +102,42 @@ module UiBibz::Ui::Ux
99
102
  @table = UiBibz::Ui::Ux::Table.new(table_options, @options[:table_html_options])
100
103
  end
101
104
 
105
+ # Render html tag
102
106
  def render
103
107
  initialize_header
104
108
  initialize_footer
105
109
 
106
110
  content_tag :div, class_and_html_options(panel_classes) do |f|
107
- form_tag(url_for(controller: @store.controller, action: @store.action), method: :get) do
108
- concat(header_html) unless @header.nil?
109
- concat(body_html) unless @body.nil?
110
- concat(table_html) unless @store.nil?
111
- concat(footer_html) unless @footer.nil?
111
+ form_tag(url_for(url_parameters), method: :get) do
112
+ concat(header_html) unless @header.nil?
113
+ concat(body_html) unless @body.nil?
114
+ concat(table_html) unless @store.nil?
115
+ concat(footer_html) unless @footer.nil?
112
116
  end
113
117
  end
114
118
  end
115
119
 
120
+ # Add table columns item
116
121
  def columns &block
117
122
  @table.columns &block
118
123
  end
119
124
 
125
+ # Add table actions item
120
126
  def actions &block
121
127
  @table.actions &block
122
128
  end
123
129
 
130
+ # for test
131
+ def actions_list
132
+ @table.actions_list
133
+ end
134
+
124
135
  private
125
136
 
137
+ def url_parameters
138
+ { controller: @store.controller, action: @store.action, id: @store.param_id }
139
+ end
140
+
126
141
  def table_html
127
142
  content_tag :div, @table.render, class: 'panel-table'
128
143
  end
@@ -2,13 +2,15 @@ require "ui_bibz/ui/ux/table/components/store"
2
2
  module UiBibz::Ui::Ux
3
3
  class TableSearchField < UiBibz::Ui::Base
4
4
 
5
+ # Initialize search_field with component item
5
6
  def initialize options = nil, html_options = nil
6
7
  @search_field = UiBibz::Ui::Core::Component.new nil, options, html_options
7
8
  end
8
9
 
10
+ # Render html tag
9
11
  def render
10
12
  if @search_field.options[:wrap_form] != false
11
- form_tag(url_for(controller: store.controller, action: store.action), method: :get, class: 'form-table-search-field') do
13
+ form_tag(url_for(url_parameters), method: :get, class: 'form-table-search-field') do
12
14
  search_field_html
13
15
  end
14
16
  else
@@ -18,6 +20,11 @@ module UiBibz::Ui::Ux
18
20
 
19
21
  private
20
22
 
23
+ def url_parameters
24
+ { controller: store.controller, action: store.action, id: store.param_id }
25
+ end
26
+
27
+ # Store must be generated by *table_search_pagination* method
21
28
  def store
22
29
  @store ||= if @search_field.options[:store].nil?
23
30
  raise 'Store is nil!'
@@ -32,6 +39,7 @@ module UiBibz::Ui::Ux
32
39
  content_tag :div, @search_field.class_and_html_options(div_class) do
33
40
  concat content_tag(:span, UiBibz::Ui::Core::Glyph.new('search').render, class: 'input-group-addon')
34
41
  concat tag(:input, type: 'search', value: store.search, name: 'search', class: 'form-control', placeholder: search_placeholder_field)
42
+ concat tag(:input, type: 'hidden', name: 'store_id', value: store.id) unless store.id.nil? # if there is more one table in html page
35
43
  concat content_tag(:span, UiBibz::Ui::Core::Glyph.new('times-circle').render, class: 'clear-search-btn input-group-addon')
36
44
  end
37
45
  end
@@ -1,3 +1,3 @@
1
1
  module UiBibz
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
data/lib/ui_bibz.rb CHANGED
@@ -31,6 +31,7 @@ module UiBibz
31
31
  autoload :Panel, "ui_bibz/ui/core/panel"
32
32
  autoload :ProgressBar, "ui_bibz/ui/core/progress_bar/progress_bar"
33
33
  autoload :Row, "ui_bibz/ui/core/row"
34
+ autoload :Stars, "ui_bibz/ui/core/stars"
34
35
  autoload :Tab, "ui_bibz/ui/core/nav/tab"
35
36
  end
36
37
 
data/test/test_helper.rb CHANGED
@@ -2,6 +2,11 @@
2
2
  require "codeclimate-test-reporter"
3
3
  CodeClimate::TestReporter.start
4
4
 
5
+ #require 'color_pound_spec_reporter'
6
+
7
+ #Minitest::Reporters.use! [ColorPoundSpecReporter.new]
8
+ require 'minitest/line/describe_track'
9
+
5
10
  # Configure Rails Environment
6
11
  ENV["RAILS_ENV"] = "test"
7
12
 
@@ -4,13 +4,13 @@ class DropdownTest < ActionView::TestCase
4
4
 
5
5
  test 'Dropdown' do
6
6
  actual = UiBibz::Ui::Core::Dropdown.new("Dropdown", type: :dropup, state: :success).tap do |d|
7
- d.list 'toto'
7
+ d.link 'Link 1', url: '#link1', glyph: 'eye'
8
8
  d.list 'header', type: :header
9
- d.list 'momo'
9
+ d.link 'Link 2', url: '#link2'
10
10
  d.list '---'
11
- d.list 'lolo'
11
+ d.link 'Link3', url: '#link3'
12
12
  end.render
13
- expected = "<div class=\"dropup\"><button class=\"btn btn-success dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown <span class=\"caret\"></span></button><ul class=\"dropdown-menu dropdown-menu-left\" role=\"menu\"><li role=\"presentation\">toto</li><li class=\"dropdown-header\" role=\"presentation\">header</li><li role=\"presentation\">momo</li><li class=\"divider\" role=\"presentation\"></li><li role=\"presentation\">lolo</li></ul></div>"
13
+ expected = "<div class=\"dropup\"><button class=\"btn btn-success dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\" aria-expanded=\"false\">Dropdown <span class=\"caret\"></span></button><ul class=\"dropdown-menu dropdown-menu-left\" role=\"menu\"><li role=\"presentation\"><a href=\"#link1\"><i class=\"glyph fa fa-eye\"></i> Link 1</a></li><li class=\"dropdown-header\" role=\"presentation\">header</li><li role=\"presentation\"><a href=\"#link2\">Link 2</a></li><li class=\"divider\" role=\"presentation\"></li><li role=\"presentation\"><a href=\"#link3\">Link3</a></li></ul></div>"
14
14
 
15
15
  assert_equal expected, actual
16
16
  end
@@ -0,0 +1,42 @@
1
+ require 'test_helper'
2
+
3
+ include UiBibz::Helpers
4
+ class StarsTest < ActionView::TestCase
5
+
6
+ test "stars with 1" do
7
+ actual = UiBibz::Ui::Core::Stars.new(1).render
8
+ expected = "<span class=\"stars-notation\"><i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i></span>"
9
+ assert_equal expected, actual
10
+ end
11
+
12
+ test "stars with 2.1" do
13
+ actual = UiBibz::Ui::Core::Stars.new(2.1).render
14
+ expected = "<span class=\"stars-notation\"><i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star-half-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i></span>"
15
+ assert_equal expected, actual
16
+ end
17
+
18
+ test "stars with 3.6 with state danger" do
19
+ actual = UiBibz::Ui::Core::Stars.new(3.6, { state: :danger }).render
20
+ expected = "<span class=\"stars-notation\"><i class=\"glyph-danger glyph fa fa-star\"></i> <i class=\"glyph-danger glyph fa fa-star\"></i> <i class=\"glyph-danger glyph fa fa-star\"></i> <i class=\"glyph-danger glyph fa fa-star-half-o\"></i> <i class=\"glyph-danger glyph fa fa-star-o\"></i></span>"
21
+ assert_equal expected, actual
22
+ end
23
+
24
+ test "stars with 4.9" do
25
+ actual = UiBibz::Ui::Core::Stars.new(4.9).render
26
+ expected = "<span class=\"stars-notation\"><i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star-half-o\"></i></span>"
27
+ assert_equal expected, actual
28
+ end
29
+
30
+ test "stars with 5" do
31
+ actual = UiBibz::Ui::Core::Stars.new(5).render
32
+ expected = "<span class=\"stars-notation\"><i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i></span>"
33
+ assert_equal expected, actual
34
+ end
35
+
36
+ test "stars with number options 11.2" do
37
+ actual = UiBibz::Ui::Core::Stars.new(2.5, { num: 11.2 }).render
38
+ expected = "<span class=\"stars-notation\"><i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star\"></i> <i class=\"glyph fa fa-star-half-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i> <i class=\"glyph fa fa-star-o\"></i></span>"
39
+ assert_equal expected, actual
40
+ end
41
+
42
+ end
@@ -65,9 +65,14 @@ class TableTest < ActionView::TestCase
65
65
  options = { paginable: true }
66
66
  pagination = UiBibz::Ui::Ux::Paginable.new(@store, options)
67
67
  actual = pagination.render if pagination.paginable?
68
- expected = "<div><ul class=\"pagination pagination\"><li class=\"prev disabled\"><span>&#8592; Previous</span></li> <li class=\"active\"><span>1</span></li> <li><a rel=\"next\" href=\"/users?page=2\">2</a></li> <li><a href=\"/users?page=3\">3</a></li> <li><a href=\"/users?page=4\">4</a></li> <li><a href=\"/users?page=5\">5</a></li> <li><a href=\"/users?page=6\">6</a></li> <li><a href=\"/users?page=7\">7</a></li> <li><a href=\"/users?page=8\">8</a></li> <li><a href=\"/users?page=9\">9</a></li> <li class=\"disabled\"><span>&hellip;</span></li> <li><a href=\"/users?page=12\">12</a></li> <li><a href=\"/users?page=13\">13</a></li> <li class=\"next\"><a rel=\"next\" href=\"/users?page=2\">Next &#8594;</a></li></ul><form action=\"/users\" accept-charset=\"UTF-8\" method=\"get\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><div class=\"table-pagination-per-page\">Displaying User <b>1&nbsp;-&nbsp;2</b> of <b>25</b> in total | Per page: <select name=\"per_page\" id=\"per_page\" class=\"form-control\"><option value=\"25\">25</option>
68
+ expected = "<div><ul class=\"pagination pagination\"><li class=\"prev disabled\"><span>&#8592; Previous</span></li> <li class=\"active\"><span>1</span></li> <li><a rel=\"next\" href=\"/users?page=2\">2</a></li> <li><a href=\"/users?page=3\">3</a></li> <li><a href=\"/users?page=4\">4</a></li> <li><a href=\"/users?page=5\">5</a></li> <li><a href=\"/users?page=6\">6</a></li> <li><a href=\"/users?page=7\">7</a></li> <li><a href=\"/users?page=8\">8</a></li> <li><a href=\"/users?page=9\">9</a></li> <li class=\"disabled\"><span>&hellip;</span></li> <li><a href=\"/users?page=12\">12</a></li> <li><a href=\"/users?page=13\">13</a></li> <li class=\"next\"><a rel=\"next\" href=\"/users?page=2\">Next &#8594;</a></li></ul><form action=\"/users\" accept-charset=\"UTF-8\" method=\"get\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><div class=\"table-pagination-per-page\">Displaying User <b>1&nbsp;-&nbsp;2</b> of <b>25</b> in total | Per page: <select name=\"per_page\" id=\"per_page\" class=\"form-control\"><option value=\"5\">5</option>
69
+ <option value=\"10\">10</option>
70
+ <option value=\"20\">20</option>
71
+ <option value=\"30\">30</option>
69
72
  <option value=\"50\">50</option>
70
- <option value=\"100\">100</option></select></div></form><br class=\"ui-bibz-clear\" /></div>"
73
+ <option value=\"100\">100</option>
74
+ <option value=\"200\">200</option>
75
+ <option value=\"500\">500</option></select></div></form><br class=\"ui-bibz-clear\" /></div>"
71
76
 
72
77
  assert_equal expected, actual
73
78
  end
@@ -161,10 +166,10 @@ class TableTest < ActionView::TestCase
161
166
  'Test body'
162
167
  end
163
168
  pane.columns do |c|
164
- c.column('#', { data_index: 'id' })
165
- c.column('Name fr', { data_index: 'name_fr', link: edit_user_path(:id), order: 2 })
166
- c.column('Name en', { data_index: 'name_en', order: 1 })
167
- c.column('Name en', { data_index: 'name_en', format: lambda{ |records, record| "name #{ record.id}"}})
169
+ c.column(:id, { name: '#' })
170
+ c.column(:name_fr, { name: 'Name fr', link: edit_user_path(:id), order: 2 })
171
+ c.column(:name_en, { name: 'Name en', order: 1 })
172
+ c.column(:name_en, { name: 'Name en', format: lambda{ |records, record| "name #{ record.id}"}})
168
173
  end
169
174
  pane.actions do |a|
170
175
  a.action 'toto', url: users_path(:id), glyph: 'eye'
@@ -174,4 +179,18 @@ class TableTest < ActionView::TestCase
174
179
  end.render
175
180
  end
176
181
 
182
+ test 'format action' do
183
+ actual = UiBibz::Ui::Ux::TablePanel.new(store: @users, tap: true).tap do |pane|
184
+ pane.columns do |cls|
185
+ cls.column :id, name: '#'
186
+ end
187
+ pane.actions do |acs|
188
+ acs.format do |record|
189
+ acs.action 'Action statique', url: '#'
190
+ acs.action "Action dynamique #{record.id}", url: '#'
191
+ end
192
+ end
193
+ end
194
+ end
195
+
177
196
  end
data/ui_bibz.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.files = `git ls-files`.split("\n")
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- s.require_paths = ["lib"]
20
+ s.require_paths = ["lib", "vendor"]
21
21
 
22
22
  # rails
23
23
  s.add_dependency 'rails', '~> 4.2.0'
@@ -29,6 +29,9 @@ Gem::Specification.new do |s|
29
29
  s.add_dependency 'sass-rails', '~> 5.0.1'
30
30
 
31
31
  s.add_development_dependency "minitest"
32
+ s.add_development_dependency "minitest-line"
33
+ s.add_development_dependency "minitest-reporters"
34
+ s.add_development_dependency "color_pound_spec_reporter"
32
35
  s.add_development_dependency "rdoc"
33
36
  s.add_development_dependency "sqlite3"
34
37
  s.add_development_dependency "factory_girl_rails", "~> 4.0"
Binary file