cloudrider 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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