voluntary_ranking 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +29 -0
- data/app/assets/javascripts/voluntary_ranking/app.js +11 -0
- data/app/assets/javascripts/voluntary_ranking/application.js +4 -0
- data/app/assets/javascripts/voluntary_ranking/base.js.coffee +3 -0
- data/app/assets/javascripts/voluntary_ranking/components/modal_dialog_component.js.coffee +6 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/arguments/index_controller.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/arguments/new_controller.js.coffee +16 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/compare_things/arguments_controller.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/compare_things_controller.js.coffee +8 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/controller.js.coffee +1 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/index_controller.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/profile/rankings_controller.js.coffee +3 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/ranking_item_controller.js.coffee +7 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/rankings/index_controller.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/rankings/show_controller.js.coffee +6 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/thing_controller.js.coffee +10 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/user/rankings/show_controller.js.coffee +92 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/user_controller.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/controllers/user_ranking_controller.js.coffee +2 -0
- data/app/assets/javascripts/voluntary_ranking/helpers/name_with_apostrophe_helper.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/helpers/stars_html_helper.js.coffee +29 -0
- data/app/assets/javascripts/voluntary_ranking/mixins/has_current_user.js.coffee +4 -0
- data/app/assets/javascripts/voluntary_ranking/mixins/pagination_controller.js.coffee +51 -0
- data/app/assets/javascripts/voluntary_ranking/mixins/ranking_controller.js.coffee +31 -0
- data/app/assets/javascripts/voluntary_ranking/mixins/singleton.js.coffee +17 -0
- data/app/assets/javascripts/voluntary_ranking/models/argument.js.coffee +7 -0
- data/app/assets/javascripts/voluntary_ranking/models/movie.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/models/ranking.js.coffee +5 -0
- data/app/assets/javascripts/voluntary_ranking/models/ranking_item.js.coffee +26 -0
- data/app/assets/javascripts/voluntary_ranking/models/thing.js.coffee +2 -0
- data/app/assets/javascripts/voluntary_ranking/models/user.js.coffee +18 -0
- data/app/assets/javascripts/voluntary_ranking/models/user/ranking_item.js.coffee +33 -0
- data/app/assets/javascripts/voluntary_ranking/router.js.coffee +30 -0
- data/app/assets/javascripts/voluntary_ranking/routes/arguments/index_route.js.coffee +24 -0
- data/app/assets/javascripts/voluntary_ranking/routes/compare_things/arguments_route.js.coffee +16 -0
- data/app/assets/javascripts/voluntary_ranking/routes/compare_things/compare_things_route.js.coffee +9 -0
- data/app/assets/javascripts/voluntary_ranking/routes/profile/rankings_route.js.coffee +29 -0
- data/app/assets/javascripts/voluntary_ranking/routes/ranking_item_route.js.coffee +25 -0
- data/app/assets/javascripts/voluntary_ranking/routes/rankings/index_route.js.coffee +10 -0
- data/app/assets/javascripts/voluntary_ranking/routes/rankings/show_route.js.coffee +19 -0
- data/app/assets/javascripts/voluntary_ranking/routes/thing_route.js.coffee +7 -0
- data/app/assets/javascripts/voluntary_ranking/routes/user_ranking_route.js.coffee +27 -0
- data/app/assets/javascripts/voluntary_ranking/routes/user_route.js.coffee +20 -0
- data/app/assets/javascripts/voluntary_ranking/templates/application.handlebars.erb +16 -0
- data/app/assets/javascripts/voluntary_ranking/templates/arguments.js.handlebars +1 -0
- data/app/assets/javascripts/voluntary_ranking/templates/arguments/index.js.handlebars +27 -0
- data/app/assets/javascripts/voluntary_ranking/templates/arguments/new.js.handlebars +17 -0
- data/app/assets/javascripts/voluntary_ranking/templates/compare_things.js.handlebars +22 -0
- data/app/assets/javascripts/voluntary_ranking/templates/compare_things/arguments.js.handlebars +26 -0
- data/app/assets/javascripts/voluntary_ranking/templates/components/modal-dialog.js.handlebars +9 -0
- data/app/assets/javascripts/voluntary_ranking/templates/components/rankings-component.handlebars +17 -0
- data/app/assets/javascripts/voluntary_ranking/templates/index.js.handlebars +1 -0
- data/app/assets/javascripts/voluntary_ranking/templates/navigation.js.handlebars +28 -0
- data/app/assets/javascripts/voluntary_ranking/templates/ranking_item.js.handlebars +31 -0
- data/app/assets/javascripts/voluntary_ranking/templates/ranking_items/_collection.js.handlebars +84 -0
- data/app/assets/javascripts/voluntary_ranking/templates/ranking_items/_form.js.handlebars +30 -0
- data/app/assets/javascripts/voluntary_ranking/templates/rankings/_form.js.handlebars +38 -0
- data/app/assets/javascripts/voluntary_ranking/templates/rankings/index.js.handlebars +3 -0
- data/app/assets/javascripts/voluntary_ranking/templates/rankings/show.js.handlebars +3 -0
- data/app/assets/javascripts/voluntary_ranking/templates/shared/_pagination.js.handlebars +23 -0
- data/app/assets/javascripts/voluntary_ranking/templates/shared/_stars.js.handlebars +3 -0
- data/app/assets/javascripts/voluntary_ranking/templates/thing.js.handlebars +13 -0
- data/app/assets/javascripts/voluntary_ranking/templates/thing/index.js.handlebars +0 -0
- data/app/assets/javascripts/voluntary_ranking/templates/things/show.arguments.js.handlebars +1 -0
- data/app/assets/javascripts/voluntary_ranking/templates/things/show.js.handlebars +1 -0
- data/app/assets/javascripts/voluntary_ranking/templates/user.js.handlebars +5 -0
- data/app/assets/javascripts/voluntary_ranking/templates/user/rankings/details.js.handlebars +7 -0
- data/app/assets/javascripts/voluntary_ranking/views/application/index_view.js.coffee +1 -0
- data/app/assets/javascripts/voluntary_ranking/views/arguments/new_view.js.coffee +9 -0
- data/app/assets/javascripts/voluntary_ranking/views/index_view.js.coffee +1 -0
- data/app/assets/javascripts/voluntary_ranking/views/ranking_items/colllection_view.js.coffee +25 -0
- data/app/assets/javascripts/voluntary_ranking/views/shared/pagination.js +4 -0
- data/app/assets/stylesheets/voluntary_ranking/application.css +17 -0
- data/app/assets/stylesheets/voluntary_ranking/base.css.sass +6 -0
- data/app/assets/stylesheets/voluntary_ranking/bootstrap_and_overrides.css.sass +0 -0
- data/app/assets/stylesheets/voluntary_ranking/stars.css.sass +31 -0
- data/app/assets/stylesheets/voluntary_ranking/twitter-typeahead.css.sass +29 -0
- data/app/controllers/api/v1/argument_topics_controller.rb +12 -0
- data/app/controllers/api/v1/arguments_controller.rb +32 -0
- data/app/controllers/api/v1/ranking_items_controller.rb +43 -0
- data/app/controllers/api/v1/rankings_controller.rb +29 -0
- data/app/controllers/api/v1/things/arguments_controller.rb +40 -0
- data/app/controllers/api/v1/things_controller.rb +26 -0
- data/app/controllers/api/v1/user_ranking_items_controller.rb +94 -0
- data/app/controllers/api/v1/users_controller.rb +9 -0
- data/app/controllers/product/ranking_controller.rb +16 -0
- data/app/models/argument.rb +48 -0
- data/app/models/argument_topic.rb +7 -0
- data/app/models/product/ranking.rb +2 -0
- data/app/models/ranking.rb +97 -0
- data/app/models/ranking_item.rb +30 -0
- data/app/models/user_ranking_item.rb +136 -0
- data/app/serializers/argument_serializer.rb +11 -0
- data/app/serializers/base_ranking_item_serializer.rb +23 -0
- data/app/serializers/ranking_item_serializer.rb +2 -0
- data/app/serializers/user_ranking_item_serializer.rb +7 -0
- data/app/views/product/ranking/index.html.erb +0 -0
- data/config/locales/en.yml +10 -0
- data/config/locales/resources/ranking/en.yml +10 -0
- data/config/routes.rb +41 -0
- data/db/migrate/20130817115303_add_ranking_product.rb +50 -0
- data/db/migrate/20140926102943_create_arguments.rb +20 -0
- data/lib/concerns/controller/base_ranking_items_controller.rb +10 -0
- data/lib/concerns/model/base_ranking_item.rb +29 -0
- data/lib/concerns/model/user/ranking.rb +48 -0
- data/lib/tasks/voluntary_ranking_tasks.rake +4 -0
- data/lib/voluntary_ranking.rb +12 -0
- data/lib/voluntary_ranking/ability.rb +11 -0
- data/lib/voluntary_ranking/engine.rb +16 -0
- data/lib/voluntary_ranking/version.rb +3 -0
- metadata +436 -0
@@ -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,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'
|
data/app/assets/javascripts/voluntary_ranking/routes/compare_things/compare_things_route.js.coffee
ADDED
@@ -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 @@
|
|
1
|
+
{{outlet}}
|
@@ -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">×</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}}
|
data/app/assets/javascripts/voluntary_ranking/templates/compare_things/arguments.js.handlebars
ADDED
@@ -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'}}
|