voluntary_ranking 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/javascripts/voluntary_ranking/app.js +11 -0
  6. data/app/assets/javascripts/voluntary_ranking/application.js +4 -0
  7. data/app/assets/javascripts/voluntary_ranking/base.js.coffee +3 -0
  8. data/app/assets/javascripts/voluntary_ranking/components/modal_dialog_component.js.coffee +6 -0
  9. data/app/assets/javascripts/voluntary_ranking/controllers/arguments/index_controller.js.coffee +5 -0
  10. data/app/assets/javascripts/voluntary_ranking/controllers/arguments/new_controller.js.coffee +16 -0
  11. data/app/assets/javascripts/voluntary_ranking/controllers/compare_things/arguments_controller.js.coffee +5 -0
  12. data/app/assets/javascripts/voluntary_ranking/controllers/compare_things_controller.js.coffee +8 -0
  13. data/app/assets/javascripts/voluntary_ranking/controllers/controller.js.coffee +1 -0
  14. data/app/assets/javascripts/voluntary_ranking/controllers/index_controller.js.coffee +5 -0
  15. data/app/assets/javascripts/voluntary_ranking/controllers/profile/rankings_controller.js.coffee +3 -0
  16. data/app/assets/javascripts/voluntary_ranking/controllers/ranking_item_controller.js.coffee +7 -0
  17. data/app/assets/javascripts/voluntary_ranking/controllers/rankings/index_controller.js.coffee +5 -0
  18. data/app/assets/javascripts/voluntary_ranking/controllers/rankings/show_controller.js.coffee +6 -0
  19. data/app/assets/javascripts/voluntary_ranking/controllers/thing_controller.js.coffee +10 -0
  20. data/app/assets/javascripts/voluntary_ranking/controllers/user/rankings/show_controller.js.coffee +92 -0
  21. data/app/assets/javascripts/voluntary_ranking/controllers/user_controller.js.coffee +5 -0
  22. data/app/assets/javascripts/voluntary_ranking/controllers/user_ranking_controller.js.coffee +2 -0
  23. data/app/assets/javascripts/voluntary_ranking/helpers/name_with_apostrophe_helper.js.coffee +5 -0
  24. data/app/assets/javascripts/voluntary_ranking/helpers/stars_html_helper.js.coffee +29 -0
  25. data/app/assets/javascripts/voluntary_ranking/mixins/has_current_user.js.coffee +4 -0
  26. data/app/assets/javascripts/voluntary_ranking/mixins/pagination_controller.js.coffee +51 -0
  27. data/app/assets/javascripts/voluntary_ranking/mixins/ranking_controller.js.coffee +31 -0
  28. data/app/assets/javascripts/voluntary_ranking/mixins/singleton.js.coffee +17 -0
  29. data/app/assets/javascripts/voluntary_ranking/models/argument.js.coffee +7 -0
  30. data/app/assets/javascripts/voluntary_ranking/models/movie.js.coffee +5 -0
  31. data/app/assets/javascripts/voluntary_ranking/models/ranking.js.coffee +5 -0
  32. data/app/assets/javascripts/voluntary_ranking/models/ranking_item.js.coffee +26 -0
  33. data/app/assets/javascripts/voluntary_ranking/models/thing.js.coffee +2 -0
  34. data/app/assets/javascripts/voluntary_ranking/models/user.js.coffee +18 -0
  35. data/app/assets/javascripts/voluntary_ranking/models/user/ranking_item.js.coffee +33 -0
  36. data/app/assets/javascripts/voluntary_ranking/router.js.coffee +30 -0
  37. data/app/assets/javascripts/voluntary_ranking/routes/arguments/index_route.js.coffee +24 -0
  38. data/app/assets/javascripts/voluntary_ranking/routes/compare_things/arguments_route.js.coffee +16 -0
  39. data/app/assets/javascripts/voluntary_ranking/routes/compare_things/compare_things_route.js.coffee +9 -0
  40. data/app/assets/javascripts/voluntary_ranking/routes/profile/rankings_route.js.coffee +29 -0
  41. data/app/assets/javascripts/voluntary_ranking/routes/ranking_item_route.js.coffee +25 -0
  42. data/app/assets/javascripts/voluntary_ranking/routes/rankings/index_route.js.coffee +10 -0
  43. data/app/assets/javascripts/voluntary_ranking/routes/rankings/show_route.js.coffee +19 -0
  44. data/app/assets/javascripts/voluntary_ranking/routes/thing_route.js.coffee +7 -0
  45. data/app/assets/javascripts/voluntary_ranking/routes/user_ranking_route.js.coffee +27 -0
  46. data/app/assets/javascripts/voluntary_ranking/routes/user_route.js.coffee +20 -0
  47. data/app/assets/javascripts/voluntary_ranking/templates/application.handlebars.erb +16 -0
  48. data/app/assets/javascripts/voluntary_ranking/templates/arguments.js.handlebars +1 -0
  49. data/app/assets/javascripts/voluntary_ranking/templates/arguments/index.js.handlebars +27 -0
  50. data/app/assets/javascripts/voluntary_ranking/templates/arguments/new.js.handlebars +17 -0
  51. data/app/assets/javascripts/voluntary_ranking/templates/compare_things.js.handlebars +22 -0
  52. data/app/assets/javascripts/voluntary_ranking/templates/compare_things/arguments.js.handlebars +26 -0
  53. data/app/assets/javascripts/voluntary_ranking/templates/components/modal-dialog.js.handlebars +9 -0
  54. data/app/assets/javascripts/voluntary_ranking/templates/components/rankings-component.handlebars +17 -0
  55. data/app/assets/javascripts/voluntary_ranking/templates/index.js.handlebars +1 -0
  56. data/app/assets/javascripts/voluntary_ranking/templates/navigation.js.handlebars +28 -0
  57. data/app/assets/javascripts/voluntary_ranking/templates/ranking_item.js.handlebars +31 -0
  58. data/app/assets/javascripts/voluntary_ranking/templates/ranking_items/_collection.js.handlebars +84 -0
  59. data/app/assets/javascripts/voluntary_ranking/templates/ranking_items/_form.js.handlebars +30 -0
  60. data/app/assets/javascripts/voluntary_ranking/templates/rankings/_form.js.handlebars +38 -0
  61. data/app/assets/javascripts/voluntary_ranking/templates/rankings/index.js.handlebars +3 -0
  62. data/app/assets/javascripts/voluntary_ranking/templates/rankings/show.js.handlebars +3 -0
  63. data/app/assets/javascripts/voluntary_ranking/templates/shared/_pagination.js.handlebars +23 -0
  64. data/app/assets/javascripts/voluntary_ranking/templates/shared/_stars.js.handlebars +3 -0
  65. data/app/assets/javascripts/voluntary_ranking/templates/thing.js.handlebars +13 -0
  66. data/app/assets/javascripts/voluntary_ranking/templates/thing/index.js.handlebars +0 -0
  67. data/app/assets/javascripts/voluntary_ranking/templates/things/show.arguments.js.handlebars +1 -0
  68. data/app/assets/javascripts/voluntary_ranking/templates/things/show.js.handlebars +1 -0
  69. data/app/assets/javascripts/voluntary_ranking/templates/user.js.handlebars +5 -0
  70. data/app/assets/javascripts/voluntary_ranking/templates/user/rankings/details.js.handlebars +7 -0
  71. data/app/assets/javascripts/voluntary_ranking/views/application/index_view.js.coffee +1 -0
  72. data/app/assets/javascripts/voluntary_ranking/views/arguments/new_view.js.coffee +9 -0
  73. data/app/assets/javascripts/voluntary_ranking/views/index_view.js.coffee +1 -0
  74. data/app/assets/javascripts/voluntary_ranking/views/ranking_items/colllection_view.js.coffee +25 -0
  75. data/app/assets/javascripts/voluntary_ranking/views/shared/pagination.js +4 -0
  76. data/app/assets/stylesheets/voluntary_ranking/application.css +17 -0
  77. data/app/assets/stylesheets/voluntary_ranking/base.css.sass +6 -0
  78. data/app/assets/stylesheets/voluntary_ranking/bootstrap_and_overrides.css.sass +0 -0
  79. data/app/assets/stylesheets/voluntary_ranking/stars.css.sass +31 -0
  80. data/app/assets/stylesheets/voluntary_ranking/twitter-typeahead.css.sass +29 -0
  81. data/app/controllers/api/v1/argument_topics_controller.rb +12 -0
  82. data/app/controllers/api/v1/arguments_controller.rb +32 -0
  83. data/app/controllers/api/v1/ranking_items_controller.rb +43 -0
  84. data/app/controllers/api/v1/rankings_controller.rb +29 -0
  85. data/app/controllers/api/v1/things/arguments_controller.rb +40 -0
  86. data/app/controllers/api/v1/things_controller.rb +26 -0
  87. data/app/controllers/api/v1/user_ranking_items_controller.rb +94 -0
  88. data/app/controllers/api/v1/users_controller.rb +9 -0
  89. data/app/controllers/product/ranking_controller.rb +16 -0
  90. data/app/models/argument.rb +48 -0
  91. data/app/models/argument_topic.rb +7 -0
  92. data/app/models/product/ranking.rb +2 -0
  93. data/app/models/ranking.rb +97 -0
  94. data/app/models/ranking_item.rb +30 -0
  95. data/app/models/user_ranking_item.rb +136 -0
  96. data/app/serializers/argument_serializer.rb +11 -0
  97. data/app/serializers/base_ranking_item_serializer.rb +23 -0
  98. data/app/serializers/ranking_item_serializer.rb +2 -0
  99. data/app/serializers/user_ranking_item_serializer.rb +7 -0
  100. data/app/views/product/ranking/index.html.erb +0 -0
  101. data/config/locales/en.yml +10 -0
  102. data/config/locales/resources/ranking/en.yml +10 -0
  103. data/config/routes.rb +41 -0
  104. data/db/migrate/20130817115303_add_ranking_product.rb +50 -0
  105. data/db/migrate/20140926102943_create_arguments.rb +20 -0
  106. data/lib/concerns/controller/base_ranking_items_controller.rb +10 -0
  107. data/lib/concerns/model/base_ranking_item.rb +29 -0
  108. data/lib/concerns/model/user/ranking.rb +48 -0
  109. data/lib/tasks/voluntary_ranking_tasks.rake +4 -0
  110. data/lib/voluntary_ranking.rb +12 -0
  111. data/lib/voluntary_ranking/ability.rb +11 -0
  112. data/lib/voluntary_ranking/engine.rb +16 -0
  113. data/lib/voluntary_ranking/version.rb +3 -0
  114. metadata +436 -0
@@ -0,0 +1,7 @@
1
+ Volontariat.Argument = DS.Model.extend
2
+ #topic: DS.belongsTo('topic')
3
+ topicId: DS.attr('number')
4
+ topicName: DS.attr('string')
5
+ thing: DS.belongsTo('thing')
6
+ thingId: DS.attr('number')
7
+ value: DS.attr('string')
@@ -0,0 +1,5 @@
1
+ Volontariat.Movie = DS.Model.extend
2
+ #rankings: DS.hasMany('ranking')
3
+ userRankingItems: DS.hasMany('userRankingItem')
4
+
5
+ name: DS.attr('string')
@@ -0,0 +1,5 @@
1
+ Volontariat.Ranking = DS.Model.extend
2
+ adjective: DS.attr('string')
3
+ negativeAdjective: DS.attr('string')
4
+ topic: DS.attr('string')
5
+ scope: DS.attr('string')
@@ -0,0 +1,26 @@
1
+ Volontariat.RankingItem = DS.Model.extend
2
+ ranking: DS.belongsTo('ranking')
3
+ thing: DS.belongsTo('thing', { polymorphic: true })
4
+ thingId: DS.attr('number')
5
+ thingName: DS.attr('string')
6
+ position: DS.attr('number')
7
+ best: DS.attr('boolean')
8
+ stars: DS.attr('number')
9
+ is1StarClass: (-> @get('stars') >= 1).property('stars')
10
+ is2StarClass: (-> @get('stars') >= 2).property('stars')
11
+ is3StarClass: (-> @get('stars') >= 3).property('stars')
12
+ is4StarClass: (-> @get('stars') >= 4).property('stars')
13
+ is5StarClass: (-> @get('stars') == 5).property('stars')
14
+ topic: DS.attr('string')
15
+ scope: DS.attr('string')
16
+ rankingAdjective: DS.attr('string')
17
+ rankingNegativeAdjective: DS.attr('string')
18
+ rankingTopic: DS.attr('string')
19
+ rankingScope: DS.attr('string')
20
+
21
+ positiveOrNegativeAdjective: Ember.computed('rankingAdjective', 'rankingNegativeAdjective', 'best', ->
22
+ if @get('best')
23
+ @get('rankingAdjective')
24
+ else
25
+ @get('rankingNegativeAdjective')
26
+ )
@@ -0,0 +1,2 @@
1
+ Volontariat.Thing = DS.Model.extend
2
+ name: DS.attr('string')
@@ -0,0 +1,18 @@
1
+ Volontariat.User.reopenClass Volontariat.Singleton,
2
+ createCurrent: ->
3
+ userJson = PreloadStore.get("currentUser")
4
+
5
+ return userJson
6
+
7
+ # TODO: build record from JSON to save find query without posting it after next store commit
8
+ #return Volontariat.__container__.lookup('store:main').createRecord(userJson) if userJson
9
+
10
+ if userJson
11
+ return Volontariat.__container__.lookup('store:main').query('user', userJson.id)
12
+
13
+ Volontariat.__container__.lookup('store:main').query('user', userJson.id).then (current_user) ->
14
+ Volontariat.currentUser = current_user
15
+
16
+ return Volontariat.currentUser
17
+
18
+ null
@@ -0,0 +1,33 @@
1
+ Volontariat.UserRankingItem = DS.Model.extend
2
+ user: DS.belongsTo('user')
3
+
4
+ position: DS.attr('number')
5
+ thingId: DS.attr('number')
6
+ thingName: DS.attr('string')
7
+ best: DS.attr('boolean')
8
+ stars: DS.attr('number')
9
+ is1StarClass: (-> @get('stars') >= 1).property('stars')
10
+ is2StarClass: (-> @get('stars') >= 2).property('stars')
11
+ is3StarClass: (-> @get('stars') >= 3).property('stars')
12
+ is4StarClass: (-> @get('stars') >= 4).property('stars')
13
+ is5StarClass: (-> @get('stars') == 5).property('stars')
14
+ adjective: DS.attr('string')
15
+ negativeAdjective: DS.attr('string')
16
+ topic: DS.attr('string')
17
+ scope: DS.attr('string')
18
+ rankingAdjective: DS.attr('string')
19
+ rankingNegativeAdjective: DS.attr('string')
20
+ rankingTopic: DS.attr('string')
21
+ rankingScope: DS.attr('string')
22
+ userName: DS.attr('string')
23
+
24
+ url: (->
25
+ '/users/' + @get('user.id') + '/ranking_items'
26
+ ).property('user')
27
+
28
+ positiveOrNegativeAdjective: Ember.computed('rankingAdjective', 'rankingNegativeAdjective', 'best', ->
29
+ if @get('best')
30
+ @get('rankingAdjective')
31
+ else
32
+ @get('rankingNegativeAdjective')
33
+ )
@@ -0,0 +1,30 @@
1
+ Volontariat.Router.reopen location: 'hash'
2
+
3
+ Volontariat.Router.map ->
4
+ @_super
5
+
6
+ @resource 'profile', ->
7
+ @route 'rankings', path: 'rankings/:adjective/and/:negative_adjective/:topic/:scope/page/:page'
8
+
9
+ @resource 'user', path: '/users/:name/page/:page'
10
+
11
+ @route 'user_ranking', path: '/users/:user_name/rankings/:adjective/and/:negative_adjective/:topic/:scope/page/:page'
12
+
13
+ @resource 'rankings', ->
14
+ @route 'show', path: ':adjective/and/:negative_adjective/:topic/:scope/page/:page'
15
+
16
+ @resource 'thing', path: '/things/:name', ->
17
+ @resource 'rankings', ->
18
+ @route 'index', path: 'page/:page'
19
+ @route 'new'
20
+ @resource 'arguments', ->
21
+ @route 'index', path: 'page/:page'
22
+ @route 'new'
23
+
24
+ @resource 'compare_things', path: '/things/:left_thing_name/vs/:right_thing_name', ->
25
+ @route 'arguments', path: ':side/arguments/page/:page'
26
+
27
+ @resource 'ranking_item', path: '/things/:thing_name/is_one_of_the/:adjective/:topic/:scope/page/:page'
28
+
29
+ # This route will be used to reload the current route by going to this route and then back to the current route
30
+ @route 'no_data'
@@ -0,0 +1,24 @@
1
+ Volontariat.ArgumentsIndexRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('arguments.index').set 'page', parseInt(params.page)
4
+ @controllerFor('arguments.index').set 'thingName', @modelFor('thing')._internalModel._data.name
5
+
6
+ @store.query 'argument', thing_id: @modelFor('thing').id, page: params.page
7
+
8
+ setupController: (controller, model) ->
9
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
10
+ controller.set('model', model)
11
+
12
+ actions:
13
+
14
+ openModal: (modalName) ->
15
+ @render modalName,
16
+ into: "arguments.index"
17
+ $('#modal').modal('show')
18
+ $('#modal').removeClass('hide')
19
+
20
+ closeModal: ->
21
+ $('#modal').modal('hide')
22
+ $('#modal').addClass('hide')
23
+ $('body').removeClass('modal-open')
24
+ $('.modal-backdrop').remove()
@@ -0,0 +1,16 @@
1
+ Volontariat.CompareThingsArgumentsRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('compare_things.arguments').set 'leftThingName', @modelFor('compare_things').leftThingName
4
+ @controllerFor('compare_things.arguments').set 'rightThingName', @modelFor('compare_things').rightThingName
5
+ @controllerFor('compare_things.arguments').set 'page', parseInt(params.page)
6
+
7
+ Ember.$.getJSON("/api/v1/things/#{@modelFor('compare_things').leftThingName}/vs/#{@modelFor('compare_things').rightThingName}/arguments.json?page=#{params.page}&side=#{params.side}").then (json) =>
8
+ @controllerFor('compare_things.arguments').set('metadata', json.meta)
9
+ json.arguments
10
+
11
+ setupController: (controller, model) ->
12
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
13
+ controller.set('model', model)
14
+
15
+ renderTemplate: ->
16
+ @render 'compare_things.arguments'
@@ -0,0 +1,9 @@
1
+ Volontariat.CompareThingsRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('compare_things').set 'leftThingName', params.left_thing_name
4
+ @controllerFor('compare_things').set 'rightThingName', params.right_thing_name
5
+
6
+ unless window.top.location.hash.indexOf('/both/arguments/') > -1 || window.top.location.hash.indexOf('/left/arguments/') > -1 || window.top.location.hash.indexOf('/right/arguments/') > -1
7
+ @transitionTo('compare_things.arguments', params.left_thing_name, params.right_thing_name, 'both', 1)
8
+
9
+ { leftThingName: params.left_thing_name, rightThingName: params.right_thing_name }
@@ -0,0 +1,29 @@
1
+ Volontariat.ProfileRankingsRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('profile.rankings').set('yourRanking', true); @controllerFor('profile.rankings').set('yourRankingClass', 'your_ranking_button btn btn-default active');
4
+ @controllerFor('profile.rankings').set('globalRankingClass', 'global_ranking_button btn btn-default')
5
+ @controllerFor('profile.rankings').set('adjective', params.adjective)
6
+ @controllerFor('profile.rankings').set('negativeAdjective', params.negative_adjective)
7
+ @controllerFor('profile.rankings').set('topic', params.topic)
8
+ @controllerFor('profile.rankings').set('scope', params.scope)
9
+ @controllerFor('profile.rankings').set('page', parseInt(params.page))
10
+
11
+ if Volontariat.User.current() == undefined
12
+ @transitionTo 'index'
13
+ alert 'Please sign in to see your ranking!'
14
+ else
15
+ @store.query(
16
+ 'user_ranking_item',
17
+ user_id: Volontariat.User.current().id, adjective: params.adjective,
18
+ negative_adjective: params.negative_adjective, topic: params.topic,
19
+ scope: params.scope, page: params.page
20
+ )
21
+
22
+ setupController: (controller, model) ->
23
+ unless Volontariat.User.current() == undefined
24
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
25
+
26
+ controller.set('content', model)
27
+
28
+ renderTemplate: ->
29
+ @render 'user/rankings/details'
@@ -0,0 +1,25 @@
1
+ Volontariat.RankingItemRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('ranking_item').set 'thingName', params.thing_name
4
+ @controllerFor('ranking_item').set 'positiveOrNegativeAdjective', params.adjective
5
+ @controllerFor('ranking_item').set 'page', parseInt(params.page)
6
+
7
+ Ember.$.getJSON(
8
+ "/api/v1/user_ranking_items?thing_name=#{params.thing_name}&adjective=#{params.adjective}&" +
9
+ "scope=#{params.scope}&topic=#{params.topic}&page=#{params.page}"
10
+ ).then (json) =>
11
+ @controllerFor('ranking_item').set 'metadata', json.meta
12
+ @controllerFor('ranking_item').set 'userRankingItems', json.user_ranking_items
13
+
14
+ Ember.$.getJSON("/api/v1/things/#{params.thing_name}/is_one_of_the/#{params.adjective}/#{params.topic}/#{params.scope}.json").then (json) =>
15
+ @controllerFor('ranking_item').set 'rankingItemThingName', json.ranking_item.thing_name
16
+ @controllerFor('ranking_item').set 'position', json.ranking_item.position
17
+ @controllerFor('ranking_item').set('adjective', json.ranking_item.ranking_adjective)
18
+ @controllerFor('ranking_item').set('negativeAdjective', json.ranking_item.ranking_negative_adjective)
19
+ @controllerFor('ranking_item').set('topic', json.ranking_item.ranking_topic)
20
+ @controllerFor('ranking_item').set('scope', json.ranking_item.ranking_scope)
21
+ json.ranking_item
22
+
23
+ setupController: (controller, model) ->
24
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
25
+ controller.set('model', model)
@@ -0,0 +1,10 @@
1
+ Volontariat.RankingsIndexRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('rankings.index').set 'page', parseInt(params.page)
4
+ @controllerFor('rankings.index').set 'thingName', @modelFor('thing').get('name')
5
+
6
+ @store.query 'ranking', thing_id: @modelFor('thing').id, page: params.page
7
+
8
+ setupController: (controller, model) ->
9
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
10
+ controller.set('model', model)
@@ -0,0 +1,19 @@
1
+ Volontariat.RankingsShowRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('rankings.show').set('yourRanking', false); @controllerFor('rankings.show').set('yourRankingClass', 'your_ranking_button btn btn-default');
4
+ @controllerFor('rankings.show').set('globalRankingClass', 'global_ranking_button btn btn-default active')
5
+ @controllerFor('rankings.show').set('adjective', params.adjective)
6
+ @controllerFor('rankings.show').set('negativeAdjective', params.negative_adjective)
7
+ @controllerFor('rankings.show').set('topic', params.topic)
8
+ @controllerFor('rankings.show').set('scope', params.scope)
9
+ @controllerFor('rankings.show').set('page', parseInt(params.page))
10
+
11
+ @store.query(
12
+ 'ranking_item',
13
+ adjective: params.adjective, negative_adjective: params.negative_adjective, topic: params.topic,
14
+ scope: params.scope, page: params.page
15
+ )
16
+
17
+ setupController: (controller, model) ->
18
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
19
+ controller.set('model', model)
@@ -0,0 +1,7 @@
1
+ Volontariat.ThingRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ unless window.top.location.hash.indexOf('/rankings/page/') > -1 || window.top.location.hash.indexOf('/arguments/page/') > -1
4
+ @transitionTo('rankings.index', params.name, 1)
5
+
6
+ @controllerFor('thing').set 'name', params.name
7
+ @store.find('thing', params.name)
@@ -0,0 +1,27 @@
1
+ Volontariat.UserRankingRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ if Volontariat.User.current() != undefined && Volontariat.User.current().name.toLowerCase() == params.user_name.toLowerCase()
4
+ @controllerFor('user_ranking').set('yourRanking', true)
5
+ else
6
+ @controllerFor('user_ranking').set('yourRanking', false)
7
+
8
+ @controllerFor('user_ranking').set 'userName', params.user_name
9
+ @controllerFor('user_ranking').set 'adjective', params.adjective
10
+ @controllerFor('user_ranking').set 'negativeAdjective', params.negative_adjective
11
+ @controllerFor('user_ranking').set 'topic', params.topic
12
+ @controllerFor('user_ranking').set 'scope', params.scope
13
+ @controllerFor('user_ranking').set 'page', parseInt(params.page)
14
+
15
+ @store.query(
16
+ 'user_ranking_item',
17
+ user_name: params.user_name, adjective: params.adjective,
18
+ negative_adjective: params.negative_adjective, topic: params.topic,
19
+ scope: params.scope, page: params.page
20
+ )
21
+
22
+ setupController: (controller, model) ->
23
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
24
+ controller.set('content', model)
25
+
26
+ renderTemplate: ->
27
+ @render 'user/rankings/details'
@@ -0,0 +1,20 @@
1
+ Volontariat.UserRoute = Ember.Route.extend
2
+ model: (params) ->
3
+ @controllerFor('user').set 'metadata', {}
4
+ @controllerFor('user').set 'name', params.name
5
+ @controllerFor('user').set 'page', params.page
6
+
7
+ Ember.$.getJSON(
8
+ "/api/v1/rankings?user_name=#{params.name}&page=#{params.page}"
9
+ ).then (json) =>
10
+ @controllerFor('user').set 'metadata', json.meta
11
+
12
+ @controllerFor('user').set 'rankings', $.map json.rankings, (ranking, i) ->
13
+ ranking.negativeAdjective = ranking.negative_adjective
14
+ ranking
15
+
16
+ { name: params.name }
17
+
18
+ setupController: (controller, model) ->
19
+ controller.send('goToPageWithoutRedirect', controller.get('page'))
20
+ controller.set('model', model)
@@ -0,0 +1,16 @@
1
+ {{render 'navigation'}}
2
+
3
+ <section id="dialog">
4
+ <img alt="Ajax-loader-small" class="hide " id="dialog_body_spinner" src="<%=asset_path('voluntary/ember_js/spinner.gif')%>"/>
5
+ <div id="dialog_body"/>
6
+ </section>
7
+
8
+ <div class='container-fluid'>
9
+ <div class="row">
10
+ <div class="col-md-12">
11
+ {{outlet}}
12
+ </div>
13
+ </div>
14
+ </div>
15
+
16
+ {{!render modal}}
@@ -0,0 +1,27 @@
1
+ {{input id="thing_name" type="hidden" value=thingName}}
2
+
3
+ {{#if anyItems}}
4
+ <table class="table table-striped" style="margin-top:15px;">
5
+ <tbody>
6
+ {{#each model as |argument|}}
7
+ <tr>
8
+ <td>
9
+ {{argument.topicName}}
10
+ </td>
11
+ <td>
12
+ {{argument.value}}
13
+ </td>
14
+ </tr>
15
+ {{/each}}
16
+ </tbody>
17
+ </table>
18
+ {{else}}
19
+ <span style="position:relative; top:10px;">No arguments found.</span>
20
+ {{/if}}
21
+
22
+ {{partial 'shared/pagination'}}
23
+
24
+ <button class="add_argument_button" {{action 'openModal' 'arguments.new'}}><i class="icon-plus"></i> Add argument</button>
25
+
26
+ {{outlet}}
27
+ {{outlet modal}}
@@ -0,0 +1,17 @@
1
+ {{#modal-dialog action="close"}}
2
+ <form class="form-inline" id="new_argument_form">
3
+ <div class="modal-header">
4
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
5
+ <h3>New Argument</h3>
6
+ </div>
7
+ <div style="padding:25px">
8
+ {{input type="text" value=topicName placeholder="Topic" data-append-autocomplete="/api/v1/argument_topics/autocomplete"}}
9
+ {{input type="text" value=value placeholder="Value" class="moveToBottom4px"}}
10
+ <p id="topic_suggestions">
11
+ </p>
12
+ </div>
13
+ <div class="modal-footer">
14
+ <button class="save_argument_button" {{action 'create'}}>Submit</button>
15
+ </div>
16
+ </form>
17
+ {{/modal-dialog}}
@@ -0,0 +1,22 @@
1
+ <h1>
2
+ {{input type="text" size="50" value=leftThingName placeholder="One thing" data-autocomplete="/api/v1/things/autocomplete"}}
3
+ {{#link-to 'thing' leftThingName}}<span aria-hidden="true" class="glyphicon glyphicon-link"></span>{{/link-to}}
4
+ vs
5
+ {{#link-to 'thing' rightThingName}}<span aria-hidden="true" class="glyphicon glyphicon-link"></span>{{/link-to}}
6
+ {{input type="text" size="50" value=rightThingName placeholder="Other thing" data-autocomplete="/api/v1/things/autocomplete"}}
7
+ <button class="compare_button" {{action 'compare'}}>Compare</button>
8
+ </h1>
9
+
10
+ <ul class="nav nav-pills">
11
+ {{#link-to 'compare_things.arguments' leftThingName rightThingName 'both' 1 tagName="li"}}
12
+ <a href="{{view.href}}">Both Arguments</a>
13
+ {{/link-to}}
14
+ {{#link-to 'compare_things.arguments' leftThingName rightThingName 'left' 1 tagName="li"}}
15
+ <a href="{{view.href}}">Left's only Arguments</a>
16
+ {{/link-to}}
17
+ {{#link-to 'compare_things.arguments' leftThingName rightThingName 'right' 1 tagName="li"}}
18
+ <a href="{{view.href}}">Right's only Arguments</a>
19
+ {{/link-to}}
20
+ </ul>
21
+
22
+ {{outlet}}
@@ -0,0 +1,26 @@
1
+ {{#if anyItems}}
2
+ <table class="table table-striped" style="margin-top:15px;">
3
+ <tbody>
4
+ {{#each model as |argument|}}
5
+ <tr>
6
+ <td>
7
+ {{argument.topic.name}}
8
+ </td>
9
+ <td>
10
+ {{argument.left.value}}
11
+ </td>
12
+ <td>
13
+ vs
14
+ </td>
15
+ <td>
16
+ {{argument.right.value}}
17
+ </td>
18
+ </tr>
19
+ {{/each}}
20
+ </tbody>
21
+ </table>
22
+ {{else}}
23
+ <span style="position:relative; top:10px;">No arguments found.</span>
24
+ {{/if}}
25
+
26
+ {{partial 'shared/pagination'}}