cloudrider 0.1.2 → 0.1.3

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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -1
  3. data/cloudrider.gemspec +0 -3
  4. data/generica/app/assets/javascripts/adapters/admin/taxon.js.em +2 -0
  5. data/generica/app/assets/javascripts/components/hero-splash.js.em +1 -15
  6. data/generica/app/assets/javascripts/components/products-showcase.js.em +6 -0
  7. data/generica/app/assets/javascripts/components/select-locale.js.em +2 -2
  8. data/generica/app/assets/javascripts/components/tr-span.js.em +1 -0
  9. data/generica/app/assets/javascripts/components/tree/taxon-li.js.em +27 -2
  10. data/generica/app/assets/javascripts/components/tree/taxon-wrapper.js.em +5 -18
  11. data/generica/app/assets/javascripts/config/i18n-translations.js.ls +6 -2
  12. data/generica/app/assets/javascripts/config/router.js.ls +4 -1
  13. data/generica/app/assets/javascripts/controllers/admin/messages/index_controller.js.em +10 -0
  14. data/generica/app/assets/javascripts/controllers/admin/product/edit_controller.js.em +10 -1
  15. data/generica/app/assets/javascripts/controllers/admin/products/new_controller.js.em +6 -0
  16. data/generica/app/assets/javascripts/controllers/admin/taxon/edit_controller.js.em +17 -0
  17. data/generica/app/assets/javascripts/controllers/admin/taxons/new_controller.js.em +25 -0
  18. data/generica/app/assets/javascripts/controllers/messages/new_controller.js.em +16 -0
  19. data/generica/app/assets/javascripts/controllers/products/index_controller.js.em +5 -8
  20. data/generica/app/assets/javascripts/helpers/hash_ex.js.ls +6 -0
  21. data/generica/app/assets/javascripts/helpers/string_ex.js.ls +1 -1
  22. data/generica/app/assets/javascripts/models/admin/product.js.em +2 -0
  23. data/generica/app/assets/javascripts/models/admin/taxon.js.em +4 -1
  24. data/generica/app/assets/javascripts/models/message.js.em +7 -0
  25. data/generica/app/assets/javascripts/models/product.js.em +7 -2
  26. data/generica/app/assets/javascripts/models/taxon.js.em +3 -5
  27. data/generica/app/assets/javascripts/routes/admin/messages/index_route.js.em +1 -0
  28. data/generica/app/assets/javascripts/routes/admin/taxon_route.js.em +3 -0
  29. data/generica/app/assets/javascripts/routes/admin/taxons/index_route.js.em +1 -1
  30. data/generica/app/assets/javascripts/routes/admin/taxons/new_route.js.em +2 -0
  31. data/generica/app/assets/javascripts/routes/index_route.js.em +3 -2
  32. data/generica/app/assets/javascripts/routes/products/index_route.js.em +1 -1
  33. data/generica/app/assets/javascripts/templates/admin.emblem +17 -5
  34. data/generica/app/assets/javascripts/templates/admin/messages/index.emblem +19 -0
  35. data/generica/app/assets/javascripts/templates/admin/messages/slice.emblem +12 -0
  36. data/generica/app/assets/javascripts/templates/admin/product/edit.emblem +23 -6
  37. data/generica/app/assets/javascripts/templates/admin/products/new.emblem +17 -0
  38. data/generica/app/assets/javascripts/templates/admin/products/slice.emblem +6 -1
  39. data/generica/app/assets/javascripts/templates/admin/taxon/edit.emblem +36 -0
  40. data/generica/app/assets/javascripts/templates/admin/taxons/index.emblem +1 -1
  41. data/generica/app/assets/javascripts/templates/admin/taxons/new.emblem +40 -0
  42. data/generica/app/assets/javascripts/templates/admin/translations/index.emblem +1 -1
  43. data/generica/app/assets/javascripts/templates/components/product-display.emblem +4 -0
  44. data/generica/app/assets/javascripts/templates/components/product-listing.emblem +9 -0
  45. data/generica/app/assets/javascripts/templates/components/search-and-filter.emblem +1 -1
  46. data/generica/app/assets/javascripts/templates/components/site-nav/_top-nav.emblem +1 -1
  47. data/generica/app/assets/javascripts/templates/components/table-booths.emblem +3 -65
  48. data/generica/app/assets/javascripts/templates/components/tree-taxon-li.emblem +11 -3
  49. data/generica/app/assets/javascripts/templates/components/tree-taxon-ul.emblem +6 -7
  50. data/generica/app/assets/javascripts/templates/components/tree-taxon-wrapper.emblem +2 -2
  51. data/generica/app/assets/javascripts/templates/employees/index.emblem +32 -0
  52. data/generica/app/assets/javascripts/templates/index.emblem +2 -1
  53. data/generica/app/assets/javascripts/templates/messages/new.emblem +43 -0
  54. data/generica/app/assets/javascripts/templates/products/product/show.emblem +8 -0
  55. data/generica/app/assets/javascripts/transforms/form_data_transformer.js.ls +4 -0
  56. data/generica/app/assets/stylesheets/apiv1/_admin.css.scss +1 -0
  57. data/generica/app/assets/stylesheets/apiv1/admin/messages/_index.css.scss +34 -0
  58. data/generica/app/assets/stylesheets/apiv1/components/_product-display.css.scss +24 -0
  59. data/generica/app/assets/stylesheets/apiv1/components/_product-listing.css.scss +27 -2
  60. data/generica/app/assets/stylesheets/apiv1/components/_table-booths.css.scss +10 -0
  61. data/generica/app/assets/stylesheets/apiv1/components/_tree-taxon-wrapper.css.scss +37 -22
  62. data/generica/app/assets/stylesheets/apiv1/products/product/_show.css.scss +24 -0
  63. data/generica/app/assets/stylesheets/apiv1/shared/_constants.css.scss +2 -2
  64. data/generica/app/controllers/admin/taxons/create_controller.rb +26 -0
  65. data/generica/app/controllers/apiv1/i18n_translations/index_controller.rb +9 -5
  66. data/generica/app/controllers/apiv1/messages/create_controller.rb +17 -0
  67. data/generica/app/controllers/apiv1/messages/index_controller.rb +18 -0
  68. data/generica/app/controllers/apiv1/products/index_controller.rb +1 -1
  69. data/generica/app/controllers/apiv1/taxons/destroy_controller.rb +9 -0
  70. data/generica/app/controllers/apiv1/taxons/index_controller.rb +1 -0
  71. data/generica/app/controllers/apiv1/taxons/update_controller.rb +28 -0
  72. data/generica/app/controllers/apiv1/translations/create_controller.rb +5 -4
  73. data/generica/app/controllers/apiv1/translations/update_controller.rb +2 -2
  74. data/generica/app/models/admin/product_modifier.rb +16 -3
  75. data/generica/app/models/admin/taxon_factory.rb +23 -0
  76. data/generica/app/models/admin/taxon_relationships_factory.rb +32 -0
  77. data/generica/app/models/apiv1/employee.rb +1 -2
  78. data/generica/app/models/apiv1/message.rb +24 -0
  79. data/generica/app/models/apiv1/messages_machine.rb +31 -0
  80. data/generica/app/models/apiv1/product.rb +33 -13
  81. data/generica/app/models/apiv1/products_machine.rb +9 -1
  82. data/generica/app/models/apiv1/taxon.rb +8 -2
  83. data/generica/app/models/apiv1/translation.rb +73 -14
  84. data/generica/app/models/i18n/backend/active_record.rb +49 -0
  85. data/generica/app/varissets/javascripts/templates/components/introductory-lobby.emblem.erb +15 -1
  86. data/generica/app/varissets/javascripts/templates/components/table-booths.emblem.erb +39 -0
  87. data/generica/app/varissets/stylesheets/apiv1/components/_introductory-lobby.css.scss.erb +15 -1
  88. data/generica/app/varissets/stylesheets/apiv1/components/_table-booths.css.scss.erb +71 -0
  89. data/generica/config/initializers/i18n_backend.rb +7 -0
  90. data/generica/config/routes.rb +5 -2
  91. data/generica/db/migrate/20141010215459_create_apiv1_translations.rb +3 -1
  92. data/generica/db/migrate/20141105231548_add_showcase_priority_to_apiv1_products.rb +5 -0
  93. data/generica/db/migrate/20141107174821_create_apiv1_messages.rb +12 -0
  94. data/generica/db/schema.rb +11 -16
  95. data/generica/lib/tasks/production.rake +2 -1
  96. data/generica/spec/controllers/admin/taxons/create_controller_spec.rb +44 -0
  97. data/generica/spec/controllers/apiv1/messages/index_controller_spec.rb +5 -0
  98. data/generica/spec/controllers/apiv1/taxons/index_controller_spec.rb +59 -0
  99. data/generica/spec/controllers/apiv1/taxons/update_controller_spec.rb +54 -0
  100. data/generica/spec/controllers/apiv1/translations/create_controller_spec.rb +50 -0
  101. data/generica/spec/controllers/apiv1/translations/update_controller_spec.rb +54 -0
  102. data/generica/spec/factories/apiv1/product_factory.rb +12 -11
  103. data/generica/spec/models/admin/product_modifier_spec.rb +32 -0
  104. data/generica/spec/models/admin/taxon_relationships_factory_spec.rb +49 -0
  105. data/generica/spec/models/apiv1/message_spec.rb +16 -0
  106. data/generica/spec/models/apiv1/product_spec.rb +13 -12
  107. data/generica/spec/models/apiv1/translation_spec.rb +41 -0
  108. data/generica/spec/models/i18n/backend/active_record_spec.rb +27 -0
  109. data/lib/cloudrider/apiv1/base.rb +4 -4
  110. data/lib/cloudrider/apiv1/introductory_lobby_component.rb +1 -0
  111. data/lib/cloudrider/apiv1/introductory_lobby_sass.rb +9 -0
  112. data/lib/cloudrider/apiv1/table_booths_component.rb +6 -0
  113. data/lib/cloudrider/master_context.rb +105 -0
  114. data/lib/cloudrider/version.rb +1 -1
  115. metadata +43 -31
  116. data/generica/app/assets/javascripts/components/products-showcase.js.ls +0 -5
  117. data/generica/config/locales/ar.yml +0 -78
  118. data/generica/config/locales/ca.yml +0 -78
  119. data/generica/config/locales/cs.yml +0 -78
  120. data/generica/config/locales/da.yml +0 -78
  121. data/generica/config/locales/de.yml +0 -78
  122. data/generica/config/locales/el.yml +0 -78
  123. data/generica/config/locales/en.yml +0 -78
  124. data/generica/config/locales/es.yml +0 -78
  125. data/generica/config/locales/fi.yml +0 -78
  126. data/generica/config/locales/fr.yml +0 -78
  127. data/generica/config/locales/hu.yml +0 -78
  128. data/generica/config/locales/id.yml +0 -78
  129. data/generica/config/locales/is.yml +0 -78
  130. data/generica/config/locales/it.yml +0 -78
  131. data/generica/config/locales/ja.yml +0 -78
  132. data/generica/config/locales/ko.yml +0 -78
  133. data/generica/config/locales/ms.yml +0 -78
  134. data/generica/config/locales/nl.yml +0 -78
  135. data/generica/config/locales/no.yml +0 -78
  136. data/generica/config/locales/pl.yml +0 -78
  137. data/generica/config/locales/pt.yml +0 -78
  138. data/generica/config/locales/ru.yml +0 -78
  139. data/generica/config/locales/sv.yml +0 -78
  140. data/generica/config/locales/th.yml +0 -78
  141. data/generica/config/locales/tr.yml +0 -78
  142. data/generica/config/locales/zh-CN.yml +0 -78
  143. data/generica/config/locales/zh-TW.yml +0 -78
  144. data/lib/cloudrider/file_orders_maker.rb +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05a29639cf08f4f2e7362d0cc0237aad78986877
4
- data.tar.gz: 13ef20006e8fdb367f1eaa3d641c7e464b413a62
3
+ metadata.gz: 8089b05ad8f64c7e4231319c59277a353bb9c072
4
+ data.tar.gz: 3ff73833851a4ef90e8fbe2ec65cc5a587102852
5
5
  SHA512:
6
- metadata.gz: 0f39683895a5950e036f581782a6e4bcce630d43bf1f1bbc0a5146b0a218bebd86bafe02145157411fb79e29cade52ff5a4d5d4dca0a9ebd342d732a5aac7cda
7
- data.tar.gz: f5bc75eb145b4e79e7c2fd53f7ae8c385e907f2516fa38fcc43cbd7f2fd1b076a436530890fb7d4a5053f710d60476eff115528b9ed734c95dbea28d972c36dc
6
+ metadata.gz: bff68fc4f0b417ed0453239b886af096d3fd776197c5d592e94cd29b08cc88690809e7e87db07a2bf77ade75f0d8fd015c2f4e7897dc188e9f4fb9fa03b8f33c
7
+ data.tar.gz: 21db8a52a1ef9f4848c6232a6ae29c4db346fcaab124ae293bfe443bb2d0b5601c48152aaf0226536d41d304bfe9806982da07b56a8520ad4e337950343addea
data/README.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # Cloudrider
2
2
 
3
- TODO: Write a gem description
3
+ FUTURE TODO:
4
+ switch I18n translations to a key-value storage basis with a redis cluster
5
+
6
+ Questions that lead to building a website
7
+ 1. What is your company's name
8
+ 2. Give me some taglines / slogans for your company
9
+ 3. Tell me about your company
10
+ 4. How would a customer contact your company?
11
+ 5. Give me some showcase pictures of your company
12
+
13
+
4
14
 
5
15
  ## Installation
6
16
 
data/cloudrider.gemspec CHANGED
@@ -24,7 +24,4 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency "functional_support", '>=0.0.12'
25
25
  spec.add_dependency "tilt", ">=1.4"
26
26
  spec.add_dependency "activesupport", '>=3'
27
- # spec.add_dependency "actionpack", '>=3'
28
- # spec.add_dependency "actionview", '>=3'
29
- # spec.add_dependency "mime-types", ">=1.25.1"
30
27
  end
@@ -0,0 +1,2 @@
1
+ class Apiv1.AdminTaxonAdapter extends DS.ActiveModelAdapter
2
+ namespace: "admin"
@@ -1,17 +1,3 @@
1
1
  class Apiv1.HeroSplashComponent extends Ember.Component
2
- KnownTypes: [
3
- "fluid-by-tall",
4
- "fluid-by-short",
5
- "fluid-by-sliver",
6
- "contained-by-tall",
7
- "contained-by-short",
8
- "contained-by-sliver"
9
- ]
10
- KnownStyles: [
11
- "static",
12
- "carousel",
13
- "verticals",
14
- "slice-and-dice",
15
- "gradient"
16
- ]
2
+ attributeBindings: ["id"]
17
3
  classNames: ['hero-splash']
@@ -0,0 +1,6 @@
1
+ class Apiv1.ProductsShowcaseComponent extends Ember.Component
2
+ classNames: ["products-showcase"]
3
+
4
+ +computed products.content.meta.count
5
+ productsCount: ->
6
+ @get "products.content.meta.count"
@@ -5,8 +5,8 @@ class Apiv1.SelectLocaleComponent extends Ember.Component
5
5
 
6
6
  +computed I18n.locale
7
7
  locale: (key, value) ->
8
- if arguments.length > 1
9
- I18n.locale = value
8
+ if arguments.length > 1 && I18n.locale? && I18n.locale isnt value
9
+ I18n.changeLocale value
10
10
  I18n.locale
11
11
 
12
12
  +computed KnownLanguages
@@ -4,6 +4,7 @@ class Apiv1.TrSpanComponent extends Ember.Component
4
4
  opts: {}
5
5
  +computed I18n.locale, key, opts
6
6
  translated: ->
7
+ return "" if Ember.isBlank I18n.locale
7
8
  Ember.assert "Translations require string keys, not null", @key?
8
9
  if tld = I18n.lookup @key, @opts
9
10
  delete I18n.missingKeys[@key] if I18n.missingKeys?
@@ -2,10 +2,32 @@ class Apiv1.TreeTaxonLiComponent extends Ember.Component
2
2
  tagName: 'li'
3
3
  classNames: ['tree-taxon-li']
4
4
  classNameBindings: ['isSelected:selected', 'isExpanded:expanded']
5
- isExpanded: false
6
- isSelected: false
7
5
  adminMode: false
8
6
 
7
+ +computed taxon, activeTaxons.@each, isExpandable
8
+ isExpanded: (key, expand) ->
9
+ return false unless @isExpandable
10
+ if arguments.length > 1
11
+ @expansionCoefficient = expand
12
+ unless @expansionCoefficient?
13
+ @expansionCoefficient = @isExpandable and @activeTaxons.contains @taxon
14
+ @expansionCoefficient
15
+
16
+ +computed taxon.hasChildren
17
+ isExpandable: -> @get("taxon.hasChildren")
18
+
19
+ +computed taxon.hasChildren
20
+ isSelectable: -> not @get("taxon.hasChildren")
21
+
22
+ +computed taxon, activeTaxons.@each, isSelectable
23
+ isSelected: (key, select) ->
24
+ return false unless @isSelectable
25
+ if arguments.length > 1
26
+ @selectionCoefficient = select
27
+ unless @selectionCoefficient?
28
+ @selectionCoefficient = @isSelectable and @activeTaxons.contains @taxon
29
+ @selectionCoefficient
30
+
9
31
  +computed adminMode
10
32
  adminModeReasonable: ->
11
33
  @adminMode && @taxon.id
@@ -39,6 +61,9 @@ class Apiv1.TreeTaxonLiComponent extends Ember.Component
39
61
  @isSelected = true
40
62
 
41
63
  actions:
64
+ killTaxon: ->
65
+ @taxon.destroyRecord().then -> Apiv1.Flash.register "success", "taxon destroyed", 2000
66
+
42
67
  interactWithTaxon: ->
43
68
  if @taxon.hasChildren
44
69
  @toggleExpansion()
@@ -2,21 +2,8 @@ class Apiv1.TreeTaxonWrapperComponent extends Ember.Component
2
2
  classNames: ['tree-taxon-wrapper']
3
3
  activeTaxons: []
4
4
 
5
- +computed taxonGroups.length
6
- rootGenuses: ->
7
- return [] unless @taxonGroups
8
- _.map @taxonGroups, (taxons, rootGenus) ->
9
- Ember.Object.create
10
- taxonName: rootGenus
11
- children: taxons
12
- hasChildren: taxons.length > 0
13
-
14
- +computed taxons.@each.rootGenus
15
- taxonGroups: ->
16
- @taxons.reduce @_groupReducer, {}
17
-
18
- _groupReducer: (groups, taxon) ->
19
- return groups if taxon.get "parentId"
20
- groups[taxon.get "rootGenus"] ||= []
21
- groups[taxon.get "rootGenus"].push taxon
22
- groups
5
+ +computed taxons
6
+ rootTaxon: ->
7
+ Ember.Object.create
8
+ children: @taxons
9
+ hasChildren: true
@@ -1,3 +1,7 @@
1
- $.get "apiv1/i18n_translations.js", (data) ->
1
+ throttler = (fun) -> _.throttle fun, 1250
2
+ window.I18n.changeLocale = throttler (locale) ->
3
+ (data) <- $.get "apiv1/i18n_translations.js?locale=#{locale}"
2
4
  Ember.set window.I18n, "translations", data.translations
3
- Ember.set window.I18n, "locale", data.locale
5
+ Ember.set window.I18n, "locale", data.locale
6
+
7
+ I18n.changeLocale ""
@@ -26,4 +26,7 @@ Apiv1.Router.map ->
26
26
  @route "index"
27
27
  @route "new"
28
28
  @resource "admin.employee", path: "/employee/:employee_id", ->
29
- @route "edit"
29
+ @route "edit"
30
+
31
+ @resource "admin.messages", path: "/messages", ->
32
+ @route "index"
@@ -0,0 +1,10 @@
1
+ class Apiv1.AdminMessagesIndexController extends Ember.ObjectController
2
+ queryParams: ["page", "per"]
3
+ page: 1
4
+ per: 15
5
+ +computed page, per
6
+ messages: ->
7
+ @store.find "message", page: @page, per: @per
8
+
9
+ +computed messages.content.meta
10
+ metadatum: -> @get("messages.content.meta")
@@ -1,8 +1,15 @@
1
1
  class Apiv1.AdminProductEditController extends Ember.ObjectController
2
+ +computed model.taxons.@each
3
+ activeTaxons: ->
4
+ @get("model.taxons") or []
5
+
6
+ +computed model
7
+ rootTaxons: ->
8
+ @store.find "taxon", parent_id: null
9
+
2
10
  +computed model.coreAttributes
3
11
  adminProduct: ->
4
12
  return if Ember.isBlank @model.id
5
- window.product = @model
6
13
  @store.push "admin_product", @model.get("coreAttributes")
7
14
 
8
15
  redirectToIndex: ->
@@ -18,4 +25,6 @@ class Apiv1.AdminProductEditController extends Ember.ObjectController
18
25
 
19
26
  actions:
20
27
  formSubmitted: ->
28
+ @failureReason = null
29
+ @adminProduct.taxons = @activeTaxons.map (t) -> t.get("id")
21
30
  @adminProduct.save().then(_.bind @successUpdate, @).catch(_.bind @failedUpdate, @)
@@ -1,4 +1,9 @@
1
1
  class Apiv1.AdminProductsNewController extends Ember.ObjectController
2
+ activeTaxons: []
3
+ +computed model
4
+ rootTaxons: ->
5
+ @store.find "taxon", parent_id: null
6
+
2
7
  redirectToIndex: ->
3
8
  @transitionToRoute 'admin.products.index'
4
9
  notifySuccess: ->
@@ -13,4 +18,5 @@ class Apiv1.AdminProductsNewController extends Ember.ObjectController
13
18
  actions:
14
19
  formSubmitted: ->
15
20
  @failureReason = null
21
+ @model.taxons = @activeTaxons.map (t) -> t.get("id")
16
22
  @model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
@@ -0,0 +1,17 @@
1
+ class Apiv1.AdminTaxonEditController extends Ember.ObjectController
2
+
3
+ redirectToIndex: ->
4
+ @transitionToRoute 'admin.taxons.index'
5
+ notifySuccess: ->
6
+ Apiv1.Flash.register "success", "category updated! You may need to refresh the page"
7
+ successfulSave: (taxon) ->
8
+ @notifySuccess()
9
+ @redirectToIndex()
10
+ failedSave: (reason) ->
11
+ Apiv1.Flash.register "warning", "something went wrong with the server", 5000 if reason.status is 500
12
+ @failureReason = reason.responseJSON if reason.responseJSON
13
+
14
+ actions:
15
+ formSubmitted: ->
16
+ @failureReason = null
17
+ @model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
@@ -0,0 +1,25 @@
1
+ class Apiv1.AdminTaxonsNewController extends Ember.ObjectController
2
+ queryParams: ['parent']
3
+ parent: null
4
+
5
+ +computed parent
6
+ parentTaxon: ->
7
+ return if Ember.isBlank @parent
8
+ @store.find "taxon", @parent
9
+
10
+ redirectToIndex: ->
11
+ @transitionToRoute 'admin.taxons.index'
12
+ notifySuccess: ->
13
+ Apiv1.Flash.register "success", "category created! You may need to refresh the page"
14
+ successfulSave: (taxon) ->
15
+ @notifySuccess()
16
+ @redirectToIndex()
17
+ failedSave: (reason) ->
18
+ Apiv1.Flash.register "warning", "something went wrong with the server", 5000 if reason.status is 500
19
+ @failureReason = reason.responseJSON if reason.responseJSON
20
+
21
+ actions:
22
+ formSubmitted: ->
23
+ @failureReason = null
24
+ @model.parentId = @parent
25
+ @model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
@@ -0,0 +1,16 @@
1
+ class Apiv1.MessagesNewController extends Ember.ObjectController
2
+ notifySuccess: ->
3
+ Apiv1.Flash.register "success", "message sent!", 5000
4
+ successfulSave: (product) ->
5
+ @swapOutForm()
6
+ @notifySuccess()
7
+ swapOutForm: ->
8
+ @alreadySubmitted = true
9
+ failedSave: (reason) ->
10
+ Apiv1.Flash.register "warning", "uh-oh, the server is down", 5000 if reason.status is 500
11
+ @failureReason = Apiv1.HashEx.camelize reason.responseJSON if reason.responseJSON
12
+
13
+ actions:
14
+ formSubmitted: ->
15
+ @failureReason = null
16
+ @model.save().then(_.bind @successfulSave, @).catch(_.bind @failedSave, @)
@@ -1,8 +1,9 @@
1
1
  class Apiv1.ProductsIndexController extends Ember.ObjectController
2
- queryParams: ["per", "page", "query"]
2
+ queryParams: ["per", "page", "query", "ati"]
3
3
  per: 15
4
4
  page: 1
5
5
  query: null
6
+ ati: []
6
7
 
7
8
  +computed model.taxons.@each.parentId
8
9
  taxons: -> @get("model.taxons")
@@ -10,19 +11,15 @@ class Apiv1.ProductsIndexController extends Ember.ObjectController
10
11
  +computed products.content.meta
11
12
  metadatum: -> @get("products.content.meta")
12
13
 
13
- +computed activeTaxons.@each, query, per, page
14
+ +computed ati.@each, query, per, page
14
15
  products: ->
15
- @store.find("product", taxons: @activeTaxonIds, query: @query, per: @per, page: @page)
16
+ @store.find("product", taxons: @ati, query: @query, per: @per, page: @page)
16
17
 
17
18
  +computed searchParams.searchQuery
18
19
  searchQuery: -> @get "searchParams.searchQuery"
19
20
 
20
- +computed activeTaxons.@each.id
21
- activeTaxonIds: ->
22
- _.map @get("activeTaxons"), (t) -> t.get "id"
23
-
24
21
  actions:
25
22
  search: (opts) ->
26
23
  @page = 1
27
24
  @query = opts.searchQuery
28
- @activeTaxons = opts.activeTaxons
25
+ @ati = opts.activeTaxons.mapBy "id"
@@ -0,0 +1,6 @@
1
+ class Apiv1.HashEx
2
+ @camelize = (hash) ->
3
+ output = {}
4
+ for key, value of hash
5
+ output[Ember.String.camelize key] = value
6
+ output
@@ -1,6 +1,6 @@
1
1
  class Apiv1.StringEx
2
2
  @keyify = (s) ->
3
- s
3
+ (s || "")
4
4
  |> ( .trim! )
5
5
  |> Apiv1.StringEx.wordify-comma
6
6
  |> Apiv1.StringEx.wordify-period
@@ -7,6 +7,8 @@ class Apiv1.AdminProduct extends DS.Model
7
7
  place: DS.attr "string"
8
8
  others: DS.attr "string"
9
9
 
10
+ showcaseOrder: DS.attr "number"
11
+
10
12
  taxons: DS.attr "strings"
11
13
  attachments: DS.attr "files"
12
14
  pictures: DS.attr "files"
@@ -1 +1,4 @@
1
- class Apiv1.AdminTaxon extends DS.Model
1
+ class Apiv1.AdminTaxon extends DS.Model
2
+ taxonName: DS.attr "string"
3
+ explanation: DS.attr "string"
4
+ parentId: DS.attr "string"
@@ -0,0 +1,7 @@
1
+ class Apiv1.Message extends DS.Model
2
+ fromCompany: DS.attr "string"
3
+ senderEmail: DS.attr "string"
4
+ subjectText: DS.attr "string"
5
+ message: DS.attr "string"
6
+ createdAt: DS.attr "date"
7
+ updatedAt: DS.attr "date"
@@ -6,6 +6,7 @@ class Apiv1.Product extends DS.Model
6
6
  place: DS.attr "string"
7
7
  quality: DS.attr "string"
8
8
  others: DS.attr "string"
9
+ showcaseOrder: DS.attr "number"
9
10
  createdAt: DS.attr "date"
10
11
  updatedAt: DS.attr "date"
11
12
  attachments: DS.hasMany "attachment", async: true
@@ -17,7 +18,7 @@ class Apiv1.Product extends DS.Model
17
18
  "#{@price || 'no price'} #{@material || 'unknown material'} #{@amount || 'unknown quantity'} @ #{@place || 'unknown place'} - #{@sku || 'no sku'}"
18
19
 
19
20
 
20
- +computed id, sku, material, price, amount, place, quality, others
21
+ +computed id, sku, material, price, amount, place, quality, others, showcaseOrder, taxonIds
21
22
  coreAttributes: ->
22
23
  id: @get("id")
23
24
  sku: @get("sku")
@@ -26,4 +27,8 @@ class Apiv1.Product extends DS.Model
26
27
  amount: @get("amount")
27
28
  place: @get("place")
28
29
  quality: @get("quality")
29
- others: @get("others")
30
+ others: @get("others")
31
+ showcaseOrder: @get("showcaseOrder")
32
+
33
+ +computed showcaseOrder
34
+ hasShowOrder: -> not Ember.isBlank @showcaseOrder
@@ -1,17 +1,15 @@
1
1
  class Apiv1.Taxon extends DS.Model
2
+ permalink: DS.attr "string"
2
3
  rootGenus: DS.attr "string"
3
4
  taxonName: DS.attr "string"
4
- permalink: DS.attr "string"
5
5
  explanation: DS.attr "string"
6
+ parentId: DS.attr "string"
6
7
  firstChildAt: DS.attr "date"
7
8
  createdAt: DS.attr "date"
8
9
  updatedAt: DS.attr "date"
9
- parentId: DS.attr "string"
10
10
 
11
11
  +computed id
12
- children: ->
13
- @store.filter "taxon", (taxon) =>
14
- taxon.get("parentId") is @id
12
+ children: -> @store.find "taxon", parent_id: @id
15
13
 
16
14
  +computed parentId
17
15
  parent: -> @parentId && @store.find("taxon", @parentId)
@@ -0,0 +1 @@
1
+ class Apiv1.AdminMessagesIndexRoute extends Ember.Route
@@ -0,0 +1,3 @@
1
+ class Apiv1.AdminTaxonRoute extends Ember.Route
2
+ model: (params) ->
3
+ @store.find("taxon", params.taxon_id)
@@ -1,2 +1,2 @@
1
1
  class Apiv1.AdminTaxonsIndexRoute extends Ember.Route
2
- model: -> @store.find "taxon"
2
+ model: -> @store.find "taxon", parent_id: null