voluntary-ember_js 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/voluntary/ember_js/app.js.coffee +40 -2
  3. data/app/assets/javascripts/voluntary/ember_js/components/like_or_dislike_component.js.coffee +73 -0
  4. data/app/assets/javascripts/voluntary/ember_js/components/modal_dialog_component.js.coffee +6 -0
  5. data/app/assets/javascripts/voluntary/ember_js/components/toggle_text_component.js.coffee +11 -0
  6. data/app/assets/javascripts/voluntary/ember_js/controllers/application_controller.js.coffee +3 -2
  7. data/app/assets/javascripts/voluntary/ember_js/controllers/controller.js.coffee +1 -0
  8. data/app/assets/javascripts/voluntary/ember_js/helpers/name_with_apostrophe_helper.js.coffee +7 -0
  9. data/app/assets/javascripts/voluntary/ember_js/helpers/t_helper.js.coffee +10 -0
  10. data/app/assets/javascripts/voluntary/ember_js/mixins/has_current_user.js.coffee +4 -0
  11. data/app/assets/javascripts/voluntary/ember_js/mixins/singleton.js.coffee +17 -0
  12. data/app/assets/javascripts/voluntary/ember_js/models/argument.js.coffee +14 -0
  13. data/app/assets/javascripts/voluntary/ember_js/models/user.js.coffee +1 -0
  14. data/app/assets/javascripts/voluntary/ember_js/router.js.coffee +3 -0
  15. data/app/assets/javascripts/voluntary/ember_js/routes/application_route.js.coffee +2 -5
  16. data/app/assets/javascripts/voluntary/ember_js/templates/components/like-or-dislike.js.handlebars +12 -0
  17. data/app/assets/javascripts/voluntary/ember_js/templates/components/modal-dialog.js.handlebars +9 -0
  18. data/app/assets/javascripts/voluntary/ember_js/templates/components/toggle-text.js.handlebars +7 -0
  19. data/app/views/layouts/voluntary/ember_js.html.erb +4 -0
  20. data/lib/voluntary/ember_js/version.rb +1 -1
  21. metadata +15 -21
  22. data/app/serializers/application_serializer.rb +0 -3
  23. data/app/serializers/basic_user_serializer.rb +0 -3
  24. data/app/serializers/current_user_serializer.rb +0 -3
  25. data/app/serializers/user_serializer.rb +0 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 757dbdd5f35b39bd54b73bc1d6972a1820c729c6
4
- data.tar.gz: bc3ca252f712fe8b6d87d16db36ce0292543e052
3
+ metadata.gz: 9da223c770795b529aac20b85d4c97e37f2c6310
4
+ data.tar.gz: eec2022b526439cad03fb2191e5dad492dbf7163
5
5
  SHA512:
6
- metadata.gz: 9eae05cd6bd9ce64c8bad280a5d45168430cdf4a2698de516195a1d2096c0d2121b7ed85406f48c2f613ae6cc09297438486247299aaf12a59af5759a4552830
7
- data.tar.gz: fcf83e0e14d2e6f01cba0e9bff7374c21a63cac1ed9900e44b1b0b61d35015b0f47969863619de583fb05c1c88518dc9250c1560937a9f0fa4391c5f21076516
6
+ metadata.gz: d5d91d9553c161be75096767cb0da82f0f0c2eab0880159fcf5f59513d2665c5d0ef9d8832fd801071e29423e6e87cfc020f79d73e36332bd6b1bda977f42039
7
+ data.tar.gz: 6f518f01d1a064f515520e7b662ea0129fb374347157548c0c026d9da52d943ddee23965f5d14ad528fbf83067a106ed01b410856c83224d64500e5ea7c60fa6
@@ -1,10 +1,48 @@
1
+ #= require_tree ./mixins
1
2
  #= require_tree ./adapters
2
3
  #= require_tree ./serializers
3
4
  #= require_tree ./models
4
5
  #= require_tree ./controllers
5
6
  #= require_tree ./views
6
- #= require_tree ./helpers
7
7
  #= require_tree ./templates
8
8
  #= require_tree ./routes
9
+ #= require_tree ./helpers
10
+ #= require_tree ./components
9
11
  #= require ./router
10
- #= require_self
12
+ #= require_self
13
+
14
+ Ember.TextField.reopen attributeBindings: [
15
+ 'data-autocomplete', 'data-append-autocomplete', 'data-append-to'
16
+ ]
17
+
18
+ Volontariat.alert = (type, message) ->
19
+ $('#alert_message').text message
20
+ $('#alert').addClass "alert-#{type}"
21
+ $("#alert").slideDown()
22
+
23
+ setTimeout (->
24
+ $("#alert").slideUp(400, ->
25
+ $('#alert').removeClass "alert-#{type}"
26
+ )
27
+ ), 5000
28
+
29
+ Volontariat.reload_alert = (message) ->
30
+ $('#reload_alert_message').text message
31
+ $('#reload_alert').slideDown()
32
+
33
+ Volontariat.t = (key) ->
34
+ keyArray = key.split('.')
35
+ text = Volontariat.translations[keyArray.shift()]
36
+
37
+ unless text == undefined || typeof(text) == 'string'
38
+ $.each keyArray, (index, value) ->
39
+ if text[value] == undefined
40
+ text = undefined
41
+
42
+ return false
43
+
44
+ text = text[value]
45
+
46
+ return false if typeof(text) == 'string'
47
+
48
+ text
@@ -0,0 +1,73 @@
1
+ Volontariat.LikeOrDislikeComponent = Ember.Component.extend
2
+ likesCount: (->
3
+ if @get('likes') == null
4
+ 0
5
+ else
6
+ @get('likes')
7
+ ).property('likes')
8
+
9
+ dislikesCount: (->
10
+ if @get('dislikes') == null
11
+ 0
12
+ else
13
+ @get('dislikes')
14
+ ).property('dislikes')
15
+
16
+ liked: (-> @get('positive') == true).property('positive')
17
+ disliked: (-> @get('positive') == false).property('positive')
18
+
19
+ actions:
20
+ like: ->
21
+ positiveWas = @get 'positive'
22
+ @set 'dislikesCount', @get('dislikesCount') - 1 if positiveWas == false
23
+ @set 'positive', true
24
+ @set 'likesCount', @get('likesCount') + 1
25
+
26
+ $.post("/like/#{@get('targetType')}/#{@get('targetId')}").done(=>
27
+ ).fail(->
28
+ alert Volontariat.t('likes.create.like_failed')
29
+ @set 'positive', positiveWas
30
+ @set 'likesCount', @get('likesCount') - 1
31
+ )
32
+
33
+ unlike: ->
34
+ @set 'positive', null
35
+ @set 'likesCount', @get('likesCount') - 1
36
+
37
+ $.post("/unlike/#{@get('targetType')}/#{@get('targetId')}").done(=>
38
+ ).fail(->
39
+ alert Volontariat.t('likes.destroy.unlike_failed')
40
+ @set 'positive', true
41
+ @set 'likesCount', @get('likesCount') + 1
42
+ )
43
+
44
+ dislike: ->
45
+ positiveWas = @get 'positive'
46
+ @set 'positive', false
47
+
48
+ if positiveWas == true
49
+ @set 'likesCount', @get('likesCount') - 1
50
+
51
+ @set 'dislikesCount', @get('dislikesCount') + 1
52
+
53
+ $.post("/dislike/#{@get('targetType')}/#{@get('targetId')}").done(=>
54
+ ).fail(->
55
+ alert Volontariat.t('likes.create.dislike_failed')
56
+ @set 'positive', positiveWas
57
+
58
+ if positiveWas == true
59
+ @set 'likesCount', @get('likesCount') + 1
60
+
61
+ @set 'dislikesCount', @get('dislikesCount') - 1
62
+ )
63
+
64
+ undoDislike: ->
65
+ @set 'positive', null
66
+ @set 'dislikesCount', @get('dislikesCount') - 1
67
+
68
+ $.post("/unlike/#{@get('targetType')}/#{@get('targetId')}").done(=>
69
+ ).fail(->
70
+ alert Volontariat.t('likes.destroy.undo_dislike_failed')
71
+ @set 'positive', false
72
+ @set 'dislikesCount', @get('dislikesCount') + 1
73
+ )
@@ -0,0 +1,6 @@
1
+ Volontariat.ModalDialogComponent = Ember.Component.extend(
2
+ actions:
3
+
4
+ close: ->
5
+ @sendAction()
6
+ )
@@ -0,0 +1,11 @@
1
+ Volontariat.ToggleTextComponent = Ember.Component.extend
2
+ length: 140
3
+ collapsed: 'more'
4
+
5
+ currentText: (-> if @get('collapsed') == 'more' then @get('text').truncate(@get('length')) else @get('text')).property('text', 'collapsed', 'length')
6
+ tooLong: (-> @get('text').length > @get('length')).property('text', 'length')
7
+
8
+ actions:
9
+
10
+ toggle: ->
11
+ @set 'collapsed', if @get('collapsed') == 'more' then 'less' else 'more'
@@ -1,4 +1,4 @@
1
- Volontariat.ApplicationController = Ember.Controller.extend
1
+ Volontariat.ApplicationController = Ember.Controller.extend(Volontariat.HasCurrentUser,
2
2
 
3
3
  actions:
4
4
 
@@ -7,4 +7,5 @@ Volontariat.ApplicationController = Ember.Controller.extend
7
7
  window.location.reload()
8
8
  ).fail((data) ->
9
9
  alert 'Signing out failed!'
10
- )
10
+ )
11
+ )
@@ -0,0 +1 @@
1
+ Volontariat.Controller = Ember.Controller.extend(Volontariat.HasCurrentUser)
@@ -0,0 +1,7 @@
1
+ Ember.Handlebars.helper 'name-with-apostrophe', (name, options) ->
2
+ if name == undefined || name[name.length - 1] == undefined
3
+ name
4
+ else if name[name.length - 1].toLowerCase() == 's'
5
+ "#{name}'"
6
+ else
7
+ "#{name}'s"
@@ -0,0 +1,10 @@
1
+ Ember.Handlebars.helper 't', (key, no_html, options) ->
2
+ text = Volontariat.t key
3
+
4
+ if text == undefined
5
+ if no_html == true
6
+ "Missing translation: #{key}"
7
+ else
8
+ new (Ember.Handlebars.SafeString)('<span class="translation_missing" title="translation missing: ' + Volontariat.locale + '.' + key + '">' + key + '</span>')
9
+ else
10
+ text
@@ -0,0 +1,4 @@
1
+ Volontariat.HasCurrentUser = Em.Mixin.create
2
+ currentUser: (->
3
+ Volontariat.User.current()
4
+ ).property().volatile()
@@ -0,0 +1,17 @@
1
+ Volontariat.Singleton = Em.Mixin.create(
2
+ current: ->
3
+ @_current = @createCurrent() unless @_current
4
+ @_current
5
+
6
+ createCurrent: ->
7
+ @create {}
8
+
9
+ currentProp: (property, value) ->
10
+ instance = @current()
11
+ return unless instance
12
+ if typeof (value) isnt "undefined"
13
+ instance.set property, value
14
+ value
15
+ else
16
+ instance.get property
17
+ )
@@ -0,0 +1,14 @@
1
+ Volontariat.Argument = DS.Model.extend
2
+ vote: DS.attr('boolean')
3
+ topicId: DS.attr('number')
4
+ topicName: DS.attr('string')
5
+ argumentableType: DS.attr('string')
6
+ argumentableId: DS.attr('number')
7
+ argumentableName: DS.attr('string')
8
+ value: DS.attr('string')
9
+
10
+ pro: (-> @get('vote') == true).property('vote')
11
+ contra: (-> @get('vote') == false).property('vote')
12
+ neutral: (-> @get('vote') == null).property('vote')
13
+
14
+
@@ -1,3 +1,4 @@
1
1
  Volontariat.User = DS.Model.extend
2
+ slug: DS.attr('string')
2
3
  name: DS.attr('string'),
3
4
  email: DS.attr('string')
@@ -1,5 +1,8 @@
1
1
  Volontariat.Router.map ->
2
2
  @resource 'users'
3
+
4
+ # This route will be used to reload the current route by going to this route and then back to the current route
5
+ @route 'no_data'
3
6
 
4
7
  Volontariat.Router.reopen
5
8
  location: 'hash'
@@ -13,10 +13,7 @@ Volontariat.ApplicationRoute = Ember.Route.extend
13
13
  else
14
14
  alert "Something went wrong: HTTP status code #{error.status}!"
15
15
 
16
- if error.status == undefined
17
- return true
18
- else
19
- @transitionTo('index')
20
-
16
+ return true if error.status == undefined
17
+
21
18
  renderTemplate: ->
22
19
  @render 'application'
@@ -0,0 +1,12 @@
1
+ {{#if liked}}
2
+ <a {{action 'unlike'}}><span class="glyphicon glyphicon-thumbs-up"></span> {{t 'likes.actions.undo_like'}}</a>
3
+ {{else}}
4
+ <a {{action 'like'}}><span class="glyphicon glyphicon-thumbs-up"></span> {{t 'likes.actions.like'}}</a>
5
+ {{/if}}
6
+ {{likesCount}}
7
+ {{#if disliked}}
8
+ <a {{action 'undoDislike'}}><span class="glyphicon glyphicon-thumbs-down"></span> {{t 'likes.actions.undo_dislike'}}</a>
9
+ {{else}}
10
+ <a {{action 'dislike'}}><span class="glyphicon glyphicon-thumbs-down"></span> {{t 'likes.actions.dislike'}}</a>
11
+ {{/if}}
12
+ {{dislikesCount}}
@@ -0,0 +1,9 @@
1
+ <div id="modal" class="modal fade">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content">
4
+ <div class="modal-body">
5
+ {{yield}}
6
+ </div>
7
+ </div>
8
+ </div>
9
+ </div>
@@ -0,0 +1,7 @@
1
+ {{#if text}}
2
+ {{currentText}}
3
+
4
+ {{#if tooLong}}
5
+ <a {{action 'toggle'}}>{{collapsed}}</a>
6
+ {{/if}}
7
+ {{/if}}
@@ -59,6 +59,10 @@
59
59
  #= javascript_include_tag *voluntary_ember_js_javascripts %>
60
60
  -->
61
61
  <%= javascript_include_tag *voluntary_ember_js_javascripts %>
62
+ <script type="text/javascript">
63
+ Volontariat.locale = '<%= I18n.locale.to_s %>';
64
+ Volontariat.translations = <%= I18n.backend.send(:translations)[I18n.locale].to_json.html_safe %>;
65
+ </script>
62
66
  <%= javascript_tag do %>
63
67
  <%= yield :top_javascript %>
64
68
 
@@ -1,5 +1,5 @@
1
1
  module Voluntary
2
2
  module EmberJs
3
- VERSION = "0.0.1"
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voluntary-ember_js
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Gawlista
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-17 00:00:00.000000000 Z
11
+ date: 2015-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: voluntary
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.13.8
69
- - !ruby/object:Gem::Dependency
70
- name: active_model_serializers
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.9.3
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.9.3
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: letter_opener
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -332,7 +318,7 @@ dependencies:
332
318
  - - "~>"
333
319
  - !ruby/object:Gem::Version
334
320
  version: 0.7.1
335
- description: 'Ember.js support for #crowdsourcing management system voluntary: bit.ly/vej-0-0-1'
321
+ description: 'Ember.js support for #crowdsourcing management system voluntary: bit.ly/vej-0-0-2'
336
322
  email:
337
323
  - gawlista@gmail.com
338
324
  executables: []
@@ -346,19 +332,27 @@ files:
346
332
  - app/assets/javascripts/voluntary/ember_js/adapters/application_adapter.js.coffee
347
333
  - app/assets/javascripts/voluntary/ember_js/app.js.coffee
348
334
  - app/assets/javascripts/voluntary/ember_js/application.js
335
+ - app/assets/javascripts/voluntary/ember_js/components/like_or_dislike_component.js.coffee
336
+ - app/assets/javascripts/voluntary/ember_js/components/modal_dialog_component.js.coffee
337
+ - app/assets/javascripts/voluntary/ember_js/components/toggle_text_component.js.coffee
349
338
  - app/assets/javascripts/voluntary/ember_js/controllers/application_controller.js.coffee
339
+ - app/assets/javascripts/voluntary/ember_js/controllers/controller.js.coffee
350
340
  - app/assets/javascripts/voluntary/ember_js/external/preload_store.js
341
+ - app/assets/javascripts/voluntary/ember_js/helpers/name_with_apostrophe_helper.js.coffee
342
+ - app/assets/javascripts/voluntary/ember_js/helpers/t_helper.js.coffee
343
+ - app/assets/javascripts/voluntary/ember_js/mixins/has_current_user.js.coffee
344
+ - app/assets/javascripts/voluntary/ember_js/mixins/singleton.js.coffee
345
+ - app/assets/javascripts/voluntary/ember_js/models/argument.js.coffee
351
346
  - app/assets/javascripts/voluntary/ember_js/models/user.js.coffee
352
347
  - app/assets/javascripts/voluntary/ember_js/router.js.coffee
353
348
  - app/assets/javascripts/voluntary/ember_js/routes/application_route.js.coffee
354
349
  - app/assets/javascripts/voluntary/ember_js/serializers/application_serializer.js.coffee
350
+ - app/assets/javascripts/voluntary/ember_js/templates/components/like-or-dislike.js.handlebars
351
+ - app/assets/javascripts/voluntary/ember_js/templates/components/modal-dialog.js.handlebars
352
+ - app/assets/javascripts/voluntary/ember_js/templates/components/toggle-text.js.handlebars
355
353
  - app/assets/javascripts/voluntary/ember_js/views/application_view.js.coffee
356
354
  - app/assets/stylesheets/voluntary/ember_js/application.css
357
355
  - app/controllers/voluntary/ember_js/application_controller.rb
358
- - app/serializers/application_serializer.rb
359
- - app/serializers/basic_user_serializer.rb
360
- - app/serializers/current_user_serializer.rb
361
- - app/serializers/user_serializer.rb
362
356
  - app/views/layouts/voluntary/ember_js.html.erb
363
357
  - config/routes.rb
364
358
  - lib/voluntary/ember_js.rb
@@ -1,3 +0,0 @@
1
- class ApplicationSerializer < ActiveModel::Serializer
2
- embed :ids, include: true
3
- end
@@ -1,3 +0,0 @@
1
- class BasicUserSerializer < ApplicationSerializer
2
- attributes :id, :name, :email
3
- end
@@ -1,3 +0,0 @@
1
- class CurrentUserSerializer < BasicUserSerializer
2
- #attributes :admin?
3
- end
@@ -1,2 +0,0 @@
1
- class UserSerializer < BasicUserSerializer
2
- end