flipper-ui 0.2.0.beta2 → 0.2.0.beta3

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 (218) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +12 -11
  3. data/README.md +5 -7
  4. data/examples/basic.ru +27 -26
  5. data/flipper-ui.gemspec +5 -3
  6. data/lib/flipper-ui.rb +1 -0
  7. data/lib/flipper/ui.rb +11 -2
  8. data/lib/flipper/ui/action.rb +45 -4
  9. data/lib/flipper/ui/actions/actors_gate.rb +48 -0
  10. data/lib/flipper/ui/actions/add_feature.rb +20 -0
  11. data/lib/flipper/ui/actions/boolean_gate.rb +26 -0
  12. data/lib/flipper/ui/actions/feature.rb +32 -0
  13. data/lib/flipper/ui/actions/features.rb +23 -3
  14. data/lib/flipper/ui/actions/file.rb +1 -1
  15. data/lib/flipper/ui/actions/gate.rb +11 -117
  16. data/lib/flipper/ui/actions/groups_gate.rb +43 -0
  17. data/lib/flipper/ui/actions/{index.rb → home.rb} +3 -3
  18. data/lib/flipper/ui/actions/percentage_of_actors_gate.rb +27 -0
  19. data/lib/flipper/ui/actions/percentage_of_time_gate.rb +27 -0
  20. data/lib/flipper/ui/actor.rb +13 -0
  21. data/lib/flipper/ui/assets/javascripts/application.coffee +0 -305
  22. data/lib/flipper/ui/assets/stylesheets/_bootstrap-compass.scss +9 -0
  23. data/lib/flipper/ui/assets/stylesheets/_bootstrap-mincer.scss +19 -0
  24. data/lib/flipper/ui/assets/stylesheets/_bootstrap-sprockets.scss +9 -0
  25. data/lib/flipper/ui/assets/stylesheets/_bootstrap.scss +50 -0
  26. data/lib/flipper/ui/assets/stylesheets/application.scss +33 -216
  27. data/lib/flipper/ui/assets/stylesheets/bootstrap/_alerts.scss +73 -0
  28. data/lib/flipper/ui/assets/stylesheets/bootstrap/_badges.scss +68 -0
  29. data/lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumbs.scss +26 -0
  30. data/lib/flipper/ui/assets/stylesheets/bootstrap/_button-groups.scss +243 -0
  31. data/lib/flipper/ui/assets/stylesheets/bootstrap/_buttons.scss +160 -0
  32. data/lib/flipper/ui/assets/stylesheets/bootstrap/_carousel.scss +269 -0
  33. data/lib/flipper/ui/assets/stylesheets/bootstrap/_close.scss +36 -0
  34. data/lib/flipper/ui/assets/stylesheets/bootstrap/_code.scss +69 -0
  35. data/lib/flipper/ui/assets/stylesheets/bootstrap/_component-animations.scss +37 -0
  36. data/lib/flipper/ui/assets/stylesheets/bootstrap/_dropdowns.scss +214 -0
  37. data/lib/flipper/ui/assets/stylesheets/bootstrap/_forms.scss +578 -0
  38. data/lib/flipper/ui/assets/stylesheets/bootstrap/_glyphicons.scss +305 -0
  39. data/lib/flipper/ui/assets/stylesheets/bootstrap/_grid.scss +84 -0
  40. data/lib/flipper/ui/assets/stylesheets/bootstrap/_input-groups.scss +166 -0
  41. data/lib/flipper/ui/assets/stylesheets/bootstrap/_jumbotron.scss +50 -0
  42. data/lib/flipper/ui/assets/stylesheets/bootstrap/_labels.scss +66 -0
  43. data/lib/flipper/ui/assets/stylesheets/bootstrap/_list-group.scss +124 -0
  44. data/lib/flipper/ui/assets/stylesheets/bootstrap/_media.scss +61 -0
  45. data/lib/flipper/ui/assets/stylesheets/bootstrap/_mixins.scss +39 -0
  46. data/lib/flipper/ui/assets/stylesheets/bootstrap/_modals.scss +150 -0
  47. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navbar.scss +662 -0
  48. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navs.scss +242 -0
  49. data/lib/flipper/ui/assets/stylesheets/bootstrap/_normalize.scss +427 -0
  50. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pager.scss +54 -0
  51. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pagination.scss +88 -0
  52. data/lib/flipper/ui/assets/stylesheets/bootstrap/_panels.scss +265 -0
  53. data/lib/flipper/ui/assets/stylesheets/bootstrap/_popovers.scss +135 -0
  54. data/lib/flipper/ui/assets/stylesheets/bootstrap/_print.scss +107 -0
  55. data/lib/flipper/ui/assets/stylesheets/bootstrap/_progress-bars.scss +87 -0
  56. data/lib/flipper/ui/assets/stylesheets/bootstrap/_responsive-embed.scss +35 -0
  57. data/lib/flipper/ui/assets/stylesheets/bootstrap/_responsive-utilities.scss +177 -0
  58. data/lib/flipper/ui/assets/stylesheets/bootstrap/_scaffolding.scss +162 -0
  59. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tables.scss +234 -0
  60. data/lib/flipper/ui/assets/stylesheets/bootstrap/_theme.scss +273 -0
  61. data/lib/flipper/ui/assets/stylesheets/bootstrap/_thumbnails.scss +38 -0
  62. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tooltip.scss +102 -0
  63. data/lib/flipper/ui/assets/stylesheets/bootstrap/_type.scss +298 -0
  64. data/lib/flipper/ui/assets/stylesheets/bootstrap/_utilities.scss +55 -0
  65. data/lib/flipper/ui/assets/stylesheets/bootstrap/_variables.scss +866 -0
  66. data/lib/flipper/ui/assets/stylesheets/bootstrap/_wells.scss +29 -0
  67. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alerts.scss +14 -0
  68. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_background-variant.scss +11 -0
  69. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
  70. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_buttons.scss +52 -0
  71. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
  72. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
  73. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_forms.scss +88 -0
  74. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_gradients.scss +58 -0
  75. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +81 -0
  76. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid.scss +122 -0
  77. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
  78. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_image.scss +33 -0
  79. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
  80. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_list-group.scss +31 -0
  81. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
  82. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  83. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_opacity.scss +8 -0
  84. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_pagination.scss +23 -0
  85. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_panels.scss +24 -0
  86. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +10 -0
  87. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
  88. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
  89. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +21 -0
  90. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
  91. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
  92. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
  93. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +11 -0
  94. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
  95. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  96. data/lib/flipper/ui/assets/stylesheets/primer/.scss-lint.yml +446 -0
  97. data/lib/flipper/ui/assets/stylesheets/primer/_alerts.scss +106 -0
  98. data/lib/flipper/ui/assets/stylesheets/primer/_avatars.scss +36 -0
  99. data/lib/flipper/ui/assets/stylesheets/primer/_base.scss +40 -0
  100. data/lib/flipper/ui/assets/stylesheets/primer/_blankslate.scss +96 -0
  101. data/lib/flipper/ui/assets/stylesheets/primer/_buttons.scss +404 -0
  102. data/lib/flipper/ui/assets/stylesheets/primer/_counter.scss +10 -0
  103. data/lib/flipper/ui/assets/stylesheets/primer/_filter-list.scss +68 -0
  104. data/lib/flipper/ui/assets/stylesheets/primer/_flex-table.scss +20 -0
  105. data/lib/flipper/ui/assets/stylesheets/primer/_forms.scss +756 -0
  106. data/lib/flipper/ui/assets/stylesheets/primer/_layout.scss +69 -0
  107. data/lib/flipper/ui/assets/stylesheets/primer/_menu.scss +113 -0
  108. data/lib/flipper/ui/assets/stylesheets/primer/_mixins.scss +53 -0
  109. data/lib/flipper/ui/assets/stylesheets/primer/_normalize.scss +425 -0
  110. data/lib/flipper/ui/assets/stylesheets/primer/_states.scss +32 -0
  111. data/lib/flipper/ui/assets/stylesheets/primer/_tabnav.scss +65 -0
  112. data/lib/flipper/ui/assets/stylesheets/primer/_tooltips.scss +255 -0
  113. data/lib/flipper/ui/assets/stylesheets/primer/_truncate.scss +27 -0
  114. data/lib/flipper/ui/assets/stylesheets/primer/_type.scss +92 -0
  115. data/lib/flipper/ui/assets/stylesheets/primer/_utility.scss +73 -0
  116. data/lib/flipper/ui/assets/stylesheets/primer/_variables.scss +34 -0
  117. data/lib/flipper/ui/assets/stylesheets/primer/primer.scss +39 -0
  118. data/lib/flipper/ui/decorators/feature.rb +37 -4
  119. data/lib/flipper/ui/middleware.rb +12 -3
  120. data/lib/flipper/ui/public/css/application.css +2563 -144
  121. data/lib/flipper/ui/public/css/primer.css +1 -0
  122. data/lib/flipper/ui/public/css/primer/primer.css +1933 -0
  123. data/lib/flipper/ui/public/css/scss/primer.css +1933 -0
  124. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  125. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  126. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  127. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  128. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  129. data/lib/flipper/ui/public/js/application.js +0 -539
  130. data/lib/flipper/ui/public/js/bootstrap-sprockets.js +12 -0
  131. data/lib/flipper/ui/public/js/bootstrap.js +2317 -0
  132. data/lib/flipper/ui/public/js/bootstrap.min.js +7 -0
  133. data/lib/flipper/ui/public/js/bootstrap/affix.js +162 -0
  134. data/lib/flipper/ui/public/js/bootstrap/alert.js +94 -0
  135. data/lib/flipper/ui/public/js/bootstrap/button.js +116 -0
  136. data/lib/flipper/ui/public/js/bootstrap/carousel.js +237 -0
  137. data/lib/flipper/ui/public/js/bootstrap/collapse.js +211 -0
  138. data/lib/flipper/ui/public/js/bootstrap/dropdown.js +161 -0
  139. data/lib/flipper/ui/public/js/bootstrap/modal.js +339 -0
  140. data/lib/flipper/ui/public/js/bootstrap/popover.js +108 -0
  141. data/lib/flipper/ui/public/js/bootstrap/scrollspy.js +172 -0
  142. data/lib/flipper/ui/public/js/bootstrap/tab.js +153 -0
  143. data/lib/flipper/ui/public/js/bootstrap/tooltip.js +476 -0
  144. data/lib/flipper/ui/public/js/bootstrap/transition.js +59 -0
  145. data/lib/flipper/ui/public/octicons/LICENSE.txt +9 -0
  146. data/lib/flipper/ui/public/octicons/README.md +1 -0
  147. data/lib/flipper/ui/public/octicons/octicons-local.ttf +0 -0
  148. data/lib/flipper/ui/public/octicons/octicons.css +236 -0
  149. data/lib/flipper/ui/public/octicons/octicons.eot +0 -0
  150. data/lib/flipper/ui/public/octicons/octicons.less +235 -0
  151. data/lib/flipper/ui/public/octicons/octicons.svg +200 -0
  152. data/lib/flipper/ui/public/octicons/octicons.ttf +0 -0
  153. data/lib/flipper/ui/public/octicons/octicons.woff +0 -0
  154. data/lib/flipper/ui/public/octicons/sprockets-octicons.scss +232 -0
  155. data/lib/flipper/ui/util.rb +4 -0
  156. data/lib/flipper/ui/version.rb +1 -1
  157. data/lib/flipper/ui/views/add_actor.erb +22 -0
  158. data/lib/flipper/ui/views/add_feature.erb +18 -0
  159. data/lib/flipper/ui/views/add_group.erb +31 -0
  160. data/lib/flipper/ui/views/feature.erb +209 -0
  161. data/lib/flipper/ui/views/features.erb +46 -0
  162. data/lib/flipper/ui/views/layout.erb +31 -149
  163. data/script/release +15 -0
  164. data/spec/flipper/ui/actions/actors_gate_spec.rb +68 -0
  165. data/spec/flipper/ui/actions/add_feature_spec.rb +17 -0
  166. data/spec/flipper/ui/actions/boolean_gate_spec.rb +41 -0
  167. data/spec/flipper/ui/actions/feature_spec.rb +59 -0
  168. data/spec/flipper/ui/actions/features_spec.rb +37 -0
  169. data/spec/flipper/ui/actions/file_spec.rb +43 -0
  170. data/spec/flipper/ui/actions/gate_spec.rb +24 -0
  171. data/spec/flipper/ui/actions/groups_gate_spec.rb +80 -0
  172. data/spec/flipper/ui/actions/home_spec.rb +16 -0
  173. data/spec/flipper/ui/actions/percentage_of_actors_gate_spec.rb +40 -0
  174. data/spec/flipper/ui/actions/percentage_of_time_gate_spec.rb +39 -0
  175. data/spec/flipper/ui/decorators/feature_spec.rb +38 -1
  176. data/spec/flipper/ui/decorators/gate_spec.rb +1 -1
  177. data/spec/flipper/ui_spec.rb +18 -441
  178. data/spec/helper.rb +22 -7
  179. metadata +199 -52
  180. data/examples/flipper.html +0 -14
  181. data/examples/flipper.png +0 -0
  182. data/lib/flipper/ui/assets/javascripts/spine/ajax.coffee +0 -223
  183. data/lib/flipper/ui/assets/javascripts/spine/list.coffee +0 -43
  184. data/lib/flipper/ui/assets/javascripts/spine/local.coffee +0 -16
  185. data/lib/flipper/ui/assets/javascripts/spine/manager.coffee +0 -83
  186. data/lib/flipper/ui/assets/javascripts/spine/relation.coffee +0 -148
  187. data/lib/flipper/ui/assets/javascripts/spine/route.coffee +0 -146
  188. data/lib/flipper/ui/assets/javascripts/spine/spine.coffee +0 -542
  189. data/lib/flipper/ui/assets/javascripts/spine/version +0 -1
  190. data/lib/flipper/ui/public/css/images/animated-overlay.gif +0 -0
  191. data/lib/flipper/ui/public/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  192. data/lib/flipper/ui/public/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  193. data/lib/flipper/ui/public/css/images/ui-bg_flat_10_000000_40x100.png +0 -0
  194. data/lib/flipper/ui/public/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  195. data/lib/flipper/ui/public/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  196. data/lib/flipper/ui/public/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  197. data/lib/flipper/ui/public/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  198. data/lib/flipper/ui/public/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  199. data/lib/flipper/ui/public/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  200. data/lib/flipper/ui/public/css/images/ui-icons_222222_256x240.png +0 -0
  201. data/lib/flipper/ui/public/css/images/ui-icons_228ef1_256x240.png +0 -0
  202. data/lib/flipper/ui/public/css/images/ui-icons_ef8c08_256x240.png +0 -0
  203. data/lib/flipper/ui/public/css/images/ui-icons_ffd27a_256x240.png +0 -0
  204. data/lib/flipper/ui/public/css/images/ui-icons_ffffff_256x240.png +0 -0
  205. data/lib/flipper/ui/public/css/jquery-ui-1.10.3.slider.min.css +0 -5
  206. data/lib/flipper/ui/public/js/handlebars.js +0 -1992
  207. data/lib/flipper/ui/public/js/jquery-ui-1.10.3.slider.min.js +0 -6
  208. data/lib/flipper/ui/public/js/jquery.js +0 -9555
  209. data/lib/flipper/ui/public/js/jquery.min.js +0 -4
  210. data/lib/flipper/ui/public/js/jquery.min.map +0 -1
  211. data/lib/flipper/ui/public/js/spine/ajax.js +0 -320
  212. data/lib/flipper/ui/public/js/spine/list.js +0 -72
  213. data/lib/flipper/ui/public/js/spine/local.js +0 -29
  214. data/lib/flipper/ui/public/js/spine/manager.js +0 -157
  215. data/lib/flipper/ui/public/js/spine/relation.js +0 -260
  216. data/lib/flipper/ui/public/js/spine/route.js +0 -223
  217. data/lib/flipper/ui/public/js/spine/spine.js +0 -927
  218. data/lib/flipper/ui/views/index.erb +0 -9
@@ -5,8 +5,9 @@ require 'bundler'
5
5
  Bundler.setup :default
6
6
 
7
7
  require 'flipper-ui'
8
-
9
8
  require 'flipper/instrumentation/log_subscriber'
9
+ require 'flipper/adapters/memory'
10
+ require 'rack/test'
10
11
  require 'logger'
11
12
  require 'json'
12
13
 
@@ -18,18 +19,32 @@ logger = Logger.new(log_path.join('test.log'))
18
19
  logger.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" }
19
20
  Flipper::Instrumentation::LogSubscriber.logger = logger
20
21
 
21
- module JsonHelpers
22
+ module SpecHelpers
23
+ def self.included(base)
24
+ base.let(:flipper) { build_flipper }
25
+ base.let(:app) { build_app(flipper) }
26
+ end
27
+
28
+ def build_app(flipper)
29
+ Flipper::UI.app(flipper, secret: "test")
30
+ end
31
+
32
+ def build_flipper(adapter = build_memory_adapter)
33
+ Flipper.new(adapter)
34
+ end
35
+
36
+ def build_memory_adapter
37
+ Flipper::Adapters::Memory.new
38
+ end
39
+
22
40
  def json_response
23
41
  JSON.load(last_response.body)
24
42
  end
25
43
  end
26
44
 
27
45
  RSpec.configure do |config|
28
- config.filter_run :focused => true
29
- config.alias_example_to :fit, :focused => true
30
- config.alias_example_to :xit, :pending => true
31
- config.run_all_when_everything_filtered = true
32
46
  config.fail_fast = true
33
47
 
34
- config.include JsonHelpers
48
+ config.include Rack::Test::Methods
49
+ config.include SpecHelpers
35
50
  end
metadata CHANGED
@@ -1,29 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flipper-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.beta2
4
+ version: 0.2.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-04 00:00:00.000000000 Z
11
+ date: 2015-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '0'
22
+ version: '1.7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ">="
27
+ - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: '1.5'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.7'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rack-protection
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.5.3
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 1.5.3
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: flipper
29
49
  requirement: !ruby/object:Gem::Requirement
@@ -42,17 +62,18 @@ dependencies:
42
62
  name: erubis
43
63
  requirement: !ruby/object:Gem::Requirement
44
64
  requirements:
45
- - - ">="
65
+ - - "~>"
46
66
  - !ruby/object:Gem::Version
47
- version: '0'
67
+ version: 2.7.0
48
68
  type: :runtime
49
69
  prerelease: false
50
70
  version_requirements: !ruby/object:Gem::Requirement
51
71
  requirements:
52
- - - ">="
72
+ - - "~>"
53
73
  - !ruby/object:Gem::Version
54
- version: '0'
55
- description: UI for the Flipper gem
74
+ version: 2.7.0
75
+ description: Rack middleware that provides a fully featured web interface for the
76
+ flipper gem.
56
77
  email:
57
78
  - nunemaker@gmail.com
58
79
  executables: []
@@ -67,78 +88,193 @@ files:
67
88
  - README.md
68
89
  - Rakefile
69
90
  - examples/basic.ru
70
- - examples/flipper.html
71
- - examples/flipper.png
72
91
  - flipper-ui.gemspec
73
92
  - lib/flipper-ui.rb
74
93
  - lib/flipper/ui.rb
75
94
  - lib/flipper/ui/action.rb
76
95
  - lib/flipper/ui/action_collection.rb
96
+ - lib/flipper/ui/actions/actors_gate.rb
97
+ - lib/flipper/ui/actions/add_feature.rb
98
+ - lib/flipper/ui/actions/boolean_gate.rb
99
+ - lib/flipper/ui/actions/feature.rb
77
100
  - lib/flipper/ui/actions/features.rb
78
101
  - lib/flipper/ui/actions/file.rb
79
102
  - lib/flipper/ui/actions/gate.rb
80
- - lib/flipper/ui/actions/index.rb
103
+ - lib/flipper/ui/actions/groups_gate.rb
104
+ - lib/flipper/ui/actions/home.rb
105
+ - lib/flipper/ui/actions/percentage_of_actors_gate.rb
106
+ - lib/flipper/ui/actions/percentage_of_time_gate.rb
107
+ - lib/flipper/ui/actor.rb
81
108
  - lib/flipper/ui/assets/javascripts/application.coffee
82
- - lib/flipper/ui/assets/javascripts/spine/ajax.coffee
83
- - lib/flipper/ui/assets/javascripts/spine/list.coffee
84
- - lib/flipper/ui/assets/javascripts/spine/local.coffee
85
- - lib/flipper/ui/assets/javascripts/spine/manager.coffee
86
- - lib/flipper/ui/assets/javascripts/spine/relation.coffee
87
- - lib/flipper/ui/assets/javascripts/spine/route.coffee
88
- - lib/flipper/ui/assets/javascripts/spine/spine.coffee
89
- - lib/flipper/ui/assets/javascripts/spine/version
109
+ - lib/flipper/ui/assets/stylesheets/_bootstrap-compass.scss
110
+ - lib/flipper/ui/assets/stylesheets/_bootstrap-mincer.scss
111
+ - lib/flipper/ui/assets/stylesheets/_bootstrap-sprockets.scss
112
+ - lib/flipper/ui/assets/stylesheets/_bootstrap.scss
90
113
  - lib/flipper/ui/assets/stylesheets/application.scss
114
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_alerts.scss
115
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_badges.scss
116
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumbs.scss
117
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_button-groups.scss
118
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_buttons.scss
119
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_carousel.scss
120
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_close.scss
121
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_code.scss
122
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_component-animations.scss
123
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_dropdowns.scss
124
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_forms.scss
125
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_glyphicons.scss
126
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_grid.scss
127
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_input-groups.scss
128
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_jumbotron.scss
129
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_labels.scss
130
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_list-group.scss
131
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_media.scss
132
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_mixins.scss
133
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_modals.scss
134
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_navbar.scss
135
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_navs.scss
136
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_normalize.scss
137
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_pager.scss
138
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_pagination.scss
139
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_panels.scss
140
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_popovers.scss
141
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_print.scss
142
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_progress-bars.scss
143
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_responsive-embed.scss
144
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_responsive-utilities.scss
145
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_scaffolding.scss
146
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_tables.scss
147
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_theme.scss
148
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_thumbnails.scss
149
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_tooltip.scss
150
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_type.scss
151
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_utilities.scss
152
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_variables.scss
153
+ - lib/flipper/ui/assets/stylesheets/bootstrap/_wells.scss
154
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alerts.scss
155
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_background-variant.scss
156
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_border-radius.scss
157
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_buttons.scss
158
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_center-block.scss
159
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_clearfix.scss
160
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_forms.scss
161
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_gradients.scss
162
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid-framework.scss
163
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid.scss
164
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hide-text.scss
165
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_image.scss
166
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_labels.scss
167
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_list-group.scss
168
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-divider.scss
169
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss
170
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_opacity.scss
171
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_pagination.scss
172
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_panels.scss
173
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_progress-bar.scss
174
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-filter.scss
175
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_resize.scss
176
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss
177
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_size.scss
178
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_tab-focus.scss
179
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_table-row.scss
180
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss
181
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-overflow.scss
182
+ - lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss
183
+ - lib/flipper/ui/assets/stylesheets/primer/.scss-lint.yml
184
+ - lib/flipper/ui/assets/stylesheets/primer/_alerts.scss
185
+ - lib/flipper/ui/assets/stylesheets/primer/_avatars.scss
186
+ - lib/flipper/ui/assets/stylesheets/primer/_base.scss
187
+ - lib/flipper/ui/assets/stylesheets/primer/_blankslate.scss
188
+ - lib/flipper/ui/assets/stylesheets/primer/_buttons.scss
189
+ - lib/flipper/ui/assets/stylesheets/primer/_counter.scss
190
+ - lib/flipper/ui/assets/stylesheets/primer/_filter-list.scss
191
+ - lib/flipper/ui/assets/stylesheets/primer/_flex-table.scss
192
+ - lib/flipper/ui/assets/stylesheets/primer/_forms.scss
193
+ - lib/flipper/ui/assets/stylesheets/primer/_layout.scss
194
+ - lib/flipper/ui/assets/stylesheets/primer/_menu.scss
195
+ - lib/flipper/ui/assets/stylesheets/primer/_mixins.scss
196
+ - lib/flipper/ui/assets/stylesheets/primer/_normalize.scss
197
+ - lib/flipper/ui/assets/stylesheets/primer/_states.scss
198
+ - lib/flipper/ui/assets/stylesheets/primer/_tabnav.scss
199
+ - lib/flipper/ui/assets/stylesheets/primer/_tooltips.scss
200
+ - lib/flipper/ui/assets/stylesheets/primer/_truncate.scss
201
+ - lib/flipper/ui/assets/stylesheets/primer/_type.scss
202
+ - lib/flipper/ui/assets/stylesheets/primer/_utility.scss
203
+ - lib/flipper/ui/assets/stylesheets/primer/_variables.scss
204
+ - lib/flipper/ui/assets/stylesheets/primer/primer.scss
91
205
  - lib/flipper/ui/decorators/feature.rb
92
206
  - lib/flipper/ui/decorators/gate.rb
93
207
  - lib/flipper/ui/error.rb
94
208
  - lib/flipper/ui/eruby.rb
95
209
  - lib/flipper/ui/middleware.rb
96
210
  - lib/flipper/ui/public/css/application.css
97
- - lib/flipper/ui/public/css/images/animated-overlay.gif
98
- - lib/flipper/ui/public/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png
99
- - lib/flipper/ui/public/css/images/ui-bg_diagonals-thick_20_666666_40x40.png
100
- - lib/flipper/ui/public/css/images/ui-bg_flat_10_000000_40x100.png
101
- - lib/flipper/ui/public/css/images/ui-bg_glass_100_f6f6f6_1x400.png
102
- - lib/flipper/ui/public/css/images/ui-bg_glass_100_fdf5ce_1x400.png
103
- - lib/flipper/ui/public/css/images/ui-bg_glass_65_ffffff_1x400.png
104
- - lib/flipper/ui/public/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png
105
- - lib/flipper/ui/public/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
106
- - lib/flipper/ui/public/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
107
- - lib/flipper/ui/public/css/images/ui-icons_222222_256x240.png
108
- - lib/flipper/ui/public/css/images/ui-icons_228ef1_256x240.png
109
- - lib/flipper/ui/public/css/images/ui-icons_ef8c08_256x240.png
110
- - lib/flipper/ui/public/css/images/ui-icons_ffd27a_256x240.png
111
- - lib/flipper/ui/public/css/images/ui-icons_ffffff_256x240.png
112
- - lib/flipper/ui/public/css/jquery-ui-1.10.3.slider.min.css
211
+ - lib/flipper/ui/public/css/primer.css
212
+ - lib/flipper/ui/public/css/primer/primer.css
213
+ - lib/flipper/ui/public/css/scss/primer.css
214
+ - lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.eot
215
+ - lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.svg
216
+ - lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.ttf
217
+ - lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff
218
+ - lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff2
113
219
  - lib/flipper/ui/public/images/logo.png
114
220
  - lib/flipper/ui/public/images/remove.png
115
221
  - lib/flipper/ui/public/js/application.js
116
- - lib/flipper/ui/public/js/handlebars.js
117
- - lib/flipper/ui/public/js/jquery-ui-1.10.3.slider.min.js
118
- - lib/flipper/ui/public/js/jquery.js
119
- - lib/flipper/ui/public/js/jquery.min.js
120
- - lib/flipper/ui/public/js/jquery.min.map
121
- - lib/flipper/ui/public/js/spine/ajax.js
122
- - lib/flipper/ui/public/js/spine/list.js
123
- - lib/flipper/ui/public/js/spine/local.js
124
- - lib/flipper/ui/public/js/spine/manager.js
125
- - lib/flipper/ui/public/js/spine/relation.js
126
- - lib/flipper/ui/public/js/spine/route.js
127
- - lib/flipper/ui/public/js/spine/spine.js
222
+ - lib/flipper/ui/public/js/bootstrap-sprockets.js
223
+ - lib/flipper/ui/public/js/bootstrap.js
224
+ - lib/flipper/ui/public/js/bootstrap.min.js
225
+ - lib/flipper/ui/public/js/bootstrap/affix.js
226
+ - lib/flipper/ui/public/js/bootstrap/alert.js
227
+ - lib/flipper/ui/public/js/bootstrap/button.js
228
+ - lib/flipper/ui/public/js/bootstrap/carousel.js
229
+ - lib/flipper/ui/public/js/bootstrap/collapse.js
230
+ - lib/flipper/ui/public/js/bootstrap/dropdown.js
231
+ - lib/flipper/ui/public/js/bootstrap/modal.js
232
+ - lib/flipper/ui/public/js/bootstrap/popover.js
233
+ - lib/flipper/ui/public/js/bootstrap/scrollspy.js
234
+ - lib/flipper/ui/public/js/bootstrap/tab.js
235
+ - lib/flipper/ui/public/js/bootstrap/tooltip.js
236
+ - lib/flipper/ui/public/js/bootstrap/transition.js
237
+ - lib/flipper/ui/public/octicons/LICENSE.txt
238
+ - lib/flipper/ui/public/octicons/README.md
239
+ - lib/flipper/ui/public/octicons/octicons-local.ttf
240
+ - lib/flipper/ui/public/octicons/octicons.css
241
+ - lib/flipper/ui/public/octicons/octicons.eot
242
+ - lib/flipper/ui/public/octicons/octicons.less
243
+ - lib/flipper/ui/public/octicons/octicons.svg
244
+ - lib/flipper/ui/public/octicons/octicons.ttf
245
+ - lib/flipper/ui/public/octicons/octicons.woff
246
+ - lib/flipper/ui/public/octicons/sprockets-octicons.scss
128
247
  - lib/flipper/ui/util.rb
129
248
  - lib/flipper/ui/version.rb
130
- - lib/flipper/ui/views/index.erb
249
+ - lib/flipper/ui/views/add_actor.erb
250
+ - lib/flipper/ui/views/add_feature.erb
251
+ - lib/flipper/ui/views/add_group.erb
252
+ - lib/flipper/ui/views/feature.erb
253
+ - lib/flipper/ui/views/features.erb
131
254
  - lib/flipper/ui/views/layout.erb
132
255
  - script/bootstrap
256
+ - script/release
133
257
  - script/server
134
258
  - script/test
259
+ - spec/flipper/ui/actions/actors_gate_spec.rb
260
+ - spec/flipper/ui/actions/add_feature_spec.rb
261
+ - spec/flipper/ui/actions/boolean_gate_spec.rb
262
+ - spec/flipper/ui/actions/feature_spec.rb
263
+ - spec/flipper/ui/actions/features_spec.rb
264
+ - spec/flipper/ui/actions/file_spec.rb
265
+ - spec/flipper/ui/actions/gate_spec.rb
266
+ - spec/flipper/ui/actions/groups_gate_spec.rb
267
+ - spec/flipper/ui/actions/home_spec.rb
268
+ - spec/flipper/ui/actions/percentage_of_actors_gate_spec.rb
269
+ - spec/flipper/ui/actions/percentage_of_time_gate_spec.rb
135
270
  - spec/flipper/ui/decorators/feature_spec.rb
136
271
  - spec/flipper/ui/decorators/gate_spec.rb
137
272
  - spec/flipper/ui/util_spec.rb
138
273
  - spec/flipper/ui_spec.rb
139
274
  - spec/helper.rb
140
275
  homepage: https://github.com/jnunemaker/flipper-ui
141
- licenses: []
276
+ licenses:
277
+ - MIT
142
278
  metadata: {}
143
279
  post_install_message:
144
280
  rdoc_options: []
@@ -161,6 +297,17 @@ signing_key:
161
297
  specification_version: 4
162
298
  summary: UI for the Flipper gem
163
299
  test_files:
300
+ - spec/flipper/ui/actions/actors_gate_spec.rb
301
+ - spec/flipper/ui/actions/add_feature_spec.rb
302
+ - spec/flipper/ui/actions/boolean_gate_spec.rb
303
+ - spec/flipper/ui/actions/feature_spec.rb
304
+ - spec/flipper/ui/actions/features_spec.rb
305
+ - spec/flipper/ui/actions/file_spec.rb
306
+ - spec/flipper/ui/actions/gate_spec.rb
307
+ - spec/flipper/ui/actions/groups_gate_spec.rb
308
+ - spec/flipper/ui/actions/home_spec.rb
309
+ - spec/flipper/ui/actions/percentage_of_actors_gate_spec.rb
310
+ - spec/flipper/ui/actions/percentage_of_time_gate_spec.rb
164
311
  - spec/flipper/ui/decorators/feature_spec.rb
165
312
  - spec/flipper/ui/decorators/gate_spec.rb
166
313
  - spec/flipper/ui/util_spec.rb
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <title>Flipper</title>
5
- <link rel="stylesheet" type="text/css" href="/css/application.css">
6
- <style type="text/css">
7
- * { margin:0; padding:0; }
8
- body {text-align:center;}
9
- </style>
10
- </head>
11
- <body>
12
- <img src="flipper.png" />
13
- </body>
14
- </html>
Binary file
@@ -1,223 +0,0 @@
1
- Spine = @Spine or require('spine')
2
- $ = Spine.$
3
- Model = Spine.Model
4
- Queue = $({})
5
-
6
- Ajax =
7
- getURL: (object) ->
8
- object and object.url?() or object.url
9
-
10
- enabled: true
11
-
12
- disable: (callback) ->
13
- if @enabled
14
- @enabled = false
15
- try
16
- do callback
17
- catch e
18
- throw e
19
- finally
20
- @enabled = true
21
- else
22
- do callback
23
-
24
- queue: (request) ->
25
- if request then Queue.queue(request) else Queue.queue()
26
-
27
- clearQueue: ->
28
- @queue []
29
-
30
- class Base
31
- defaults:
32
- contentType: 'application/json'
33
- dataType: 'json'
34
- processData: false
35
- headers: {'X-Requested-With': 'XMLHttpRequest'}
36
-
37
- queue: Ajax.queue
38
-
39
- ajax: (params, defaults) ->
40
- $.ajax @ajaxSettings(params, defaults)
41
-
42
- ajaxQueue: (params, defaults) ->
43
- jqXHR = null
44
- deferred = $.Deferred()
45
-
46
- promise = deferred.promise()
47
- return promise unless Ajax.enabled
48
-
49
- settings = @ajaxSettings(params, defaults)
50
-
51
- request = (next) ->
52
- jqXHR = $.ajax(settings)
53
- .done(deferred.resolve)
54
- .fail(deferred.reject)
55
- .then(next, next)
56
-
57
- promise.abort = (statusText) ->
58
- return jqXHR.abort(statusText) if jqXHR
59
- index = $.inArray(request, @queue())
60
- @queue().splice(index, 1) if index > -1
61
-
62
- deferred.rejectWith(
63
- settings.context or settings,
64
- [promise, statusText, '']
65
- )
66
- promise
67
-
68
- @queue request
69
- promise
70
-
71
- ajaxSettings: (params, defaults) ->
72
- $.extend({}, @defaults, defaults, params)
73
-
74
- class Collection extends Base
75
- constructor: (@model) ->
76
-
77
- find: (id, params) ->
78
- record = new @model(id: id)
79
- @ajaxQueue(
80
- params,
81
- type: 'GET',
82
- url: Ajax.getURL(record)
83
- ).done(@recordsResponse)
84
- .fail(@failResponse)
85
-
86
- all: (params) ->
87
- @ajaxQueue(
88
- params,
89
- type: 'GET',
90
- url: Ajax.getURL(@model)
91
- ).done(@recordsResponse)
92
- .fail(@failResponse)
93
-
94
- fetch: (params = {}, options = {}) ->
95
- if id = params.id
96
- delete params.id
97
- @find(id, params).done (record) =>
98
- @model.refresh(record, options)
99
- else
100
- @all(params).done (records) =>
101
- @model.refresh(records, options)
102
-
103
- # Private
104
-
105
- recordsResponse: (data, status, xhr) =>
106
- @model.trigger('ajaxSuccess', null, status, xhr)
107
-
108
- failResponse: (xhr, statusText, error) =>
109
- @model.trigger('ajaxError', null, xhr, statusText, error)
110
-
111
- class Singleton extends Base
112
- constructor: (@record) ->
113
- @model = @record.constructor
114
-
115
- reload: (params, options) ->
116
- @ajaxQueue(
117
- params,
118
- type: 'GET'
119
- url: Ajax.getURL(@record)
120
- ).done(@recordResponse(options))
121
- .fail(@failResponse(options))
122
-
123
- create: (params, options) ->
124
- @ajaxQueue(
125
- params,
126
- type: 'POST'
127
- data: JSON.stringify(@record)
128
- url: Ajax.getURL(@model)
129
- ).done(@recordResponse(options))
130
- .fail(@failResponse(options))
131
-
132
- update: (params, options) ->
133
- @ajaxQueue(
134
- params,
135
- type: 'PUT'
136
- data: JSON.stringify(@record)
137
- url: Ajax.getURL(@record)
138
- ).done(@recordResponse(options))
139
- .fail(@failResponse(options))
140
-
141
- destroy: (params, options) ->
142
- @ajaxQueue(
143
- params,
144
- type: 'DELETE'
145
- url: Ajax.getURL(@record)
146
- ).done(@recordResponse(options))
147
- .fail(@failResponse(options))
148
-
149
- # Private
150
-
151
- recordResponse: (options = {}) =>
152
- (data, status, xhr) =>
153
- if Spine.isBlank(data) or @record.destroyed
154
- data = false
155
- else
156
- data = @model.fromJSON(data)
157
-
158
- Ajax.disable =>
159
- if data
160
- # ID change, need to do some shifting
161
- if data.id and @record.id isnt data.id
162
- @record.changeID(data.id)
163
-
164
- # Update with latest data
165
- @record.updateAttributes(data.attributes())
166
-
167
- @record.trigger('ajaxSuccess', data, status, xhr)
168
- options.success?.apply(@record) # Deprecated
169
- options.done?.apply(@record)
170
-
171
- failResponse: (options = {}) =>
172
- (xhr, statusText, error) =>
173
- @record.trigger('ajaxError', xhr, statusText, error)
174
- options.error?.apply(@record) # Deprecated
175
- options.fail?.apply(@record)
176
-
177
- # Ajax endpoint
178
- Model.host = ''
179
-
180
- Include =
181
- ajax: -> new Singleton(this)
182
-
183
- url: (args...) ->
184
- url = Ajax.getURL(@constructor)
185
- url += '/' unless url.charAt(url.length - 1) is '/'
186
- url += encodeURIComponent(@id)
187
- args.unshift(url)
188
- args.join('/')
189
-
190
- Extend =
191
- ajax: -> new Collection(this)
192
-
193
- url: (args...) ->
194
- args.unshift(@className.toLowerCase() + 's')
195
- args.unshift(Model.host)
196
- args.join('/')
197
-
198
- Model.Ajax =
199
- extended: ->
200
- @fetch @ajaxFetch
201
- @change @ajaxChange
202
-
203
- @extend Extend
204
- @include Include
205
-
206
- # Private
207
-
208
- ajaxFetch: ->
209
- @ajax().fetch(arguments...)
210
-
211
- ajaxChange: (record, type, options = {}) ->
212
- return if options.ajax is false
213
- record.ajax()[type](options.ajax, options)
214
-
215
- Model.Ajax.Methods =
216
- extended: ->
217
- @extend Extend
218
- @include Include
219
-
220
- # Globals
221
- Ajax.defaults = Base::defaults
222
- Spine.Ajax = Ajax
223
- module?.exports = Ajax