Commit dc13ff81 by David Ormsbee

Merge pull request #521 from MITx/feature/rocky/loading

added a loading icon when retrieving ajax
parents 26536902 2b6a0928
...@@ -120,7 +120,12 @@ if Backbone? ...@@ -120,7 +120,12 @@ if Backbone?
else else
$elem = $.merge @$(".thread-title"), @$showComments() $elem = $.merge @$(".thread-title"), @$showComments()
url = @model.urlFor('retrieve') url = @model.urlFor('retrieve')
DiscussionUtil.get $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
$loading: $(event.target) if event
type: "GET"
url: url
success: (response, textStatus) =>
@showed = true @showed = true
@updateShowComments() @updateShowComments()
@$showComments().addClass("retrieved") @$showComments().addClass("retrieved")
...@@ -169,6 +174,7 @@ if Backbone? ...@@ -169,6 +174,7 @@ if Backbone?
DiscussionUtil.safeAjax DiscussionUtil.safeAjax
$elem: $(event.target) $elem: $(event.target)
$loading: $(event.target) if event
url: url url: url
type: "POST" type: "POST"
dataType: 'json' dataType: 'json'
...@@ -197,14 +203,22 @@ if Backbone? ...@@ -197,14 +203,22 @@ if Backbone?
unvote: (event) -> unvote: (event) ->
url = @model.urlFor('unvote') url = @model.urlFor('unvote')
$elem = @$(".discussion-vote") $elem = @$(".discussion-vote")
DiscussionUtil.post $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
url: url
type: "POST"
success: (response, textStatus) =>
@model.set('voted', '') @model.set('voted', '')
@model.set('votes_point', response.votes.point) @model.set('votes_point', response.votes.point)
vote: (event, value) -> vote: (event, value) ->
url = @model.urlFor("#{value}vote") url = @model.urlFor("#{value}vote")
$elem = @$(".discussion-vote") $elem = @$(".discussion-vote")
DiscussionUtil.post $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
url: url
type: "POST"
success: (response, textStatus) =>
@model.set('voted', value) @model.set('voted', value)
@model.set('votes_point', response.votes.point) @model.set('votes_point', response.votes.point)
...@@ -221,7 +235,12 @@ if Backbone? ...@@ -221,7 +235,12 @@ if Backbone?
url = @model.urlFor('endorse') url = @model.urlFor('endorse')
endorsed = @model.get('endorsed') endorsed = @model.get('endorsed')
data = { endorsed: not endorsed } data = { endorsed: not endorsed }
DiscussionUtil.post $elem, url, data, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
url: url
data: data
type: "POST"
success: (response, textStatus) =>
@model.set('endorsed', not endorsed) @model.set('endorsed', not endorsed)
toggleFollow: (event) -> toggleFollow: (event) ->
...@@ -231,7 +250,11 @@ if Backbone? ...@@ -231,7 +250,11 @@ if Backbone?
url = @model.urlFor('unfollow') url = @model.urlFor('unfollow')
else else
url = @model.urlFor('follow') url = @model.urlFor('follow')
DiscussionUtil.post $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
url: url
type: "POST"
success: (response, textStatus) =>
@model.set('subscribed', not subscribed) @model.set('subscribed', not subscribed)
toggleClosed: (event) -> toggleClosed: (event) ->
...@@ -239,7 +262,12 @@ if Backbone? ...@@ -239,7 +262,12 @@ if Backbone?
url = @model.urlFor('close') url = @model.urlFor('close')
closed = @model.get('closed') closed = @model.get('closed')
data = { closed: not closed } data = { closed: not closed }
DiscussionUtil.post $elem, url, data, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
url: url
type: "POST"
data: data
success: (response, textStatus) =>
@model.set('closed', not closed) @model.set('closed', not closed)
edit: (event) -> edit: (event) ->
...@@ -274,6 +302,7 @@ if Backbone? ...@@ -274,6 +302,7 @@ if Backbone?
data.body = DiscussionUtil.getWmdContent @$el, $.proxy(@$, @), "comment-body-edit" data.body = DiscussionUtil.getWmdContent @$el, $.proxy(@$, @), "comment-body-edit"
DiscussionUtil.safeAjax DiscussionUtil.safeAjax
$elem: $(event.target) $elem: $(event.target)
$loading: $(event.target) if event
url: url url: url
type: "POST" type: "POST"
dataType: 'json' dataType: 'json'
...@@ -298,7 +327,10 @@ if Backbone? ...@@ -298,7 +327,10 @@ if Backbone?
if not c if not c
return return
$elem = $(event.target) $elem = $(event.target)
DiscussionUtil.post $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
url: url
success: (response, textStatus) =>
@$el.remove() @$el.remove()
@model.get('thread').removeComment(@model) @model.get('thread').removeComment(@model)
......
...@@ -39,7 +39,12 @@ if Backbone? ...@@ -39,7 +39,12 @@ if Backbone?
reload: ($elem, url) -> reload: ($elem, url) ->
if not url then return if not url then return
DiscussionUtil.get $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
$elem: $elem
$loading: $elem
url: url
type: "GET"
success: (response, textStatus) =>
$parent = @$el.parent() $parent = @$el.parent()
@$el.replaceWith(response.html) @$el.replaceWith(response.html)
$discussion = $parent.find("section.discussion") $discussion = $parent.find("section.discussion")
...@@ -115,6 +120,7 @@ if Backbone? ...@@ -115,6 +120,7 @@ if Backbone?
url = DiscussionUtil.urlFor('create_thread', @model.id) url = DiscussionUtil.urlFor('create_thread', @model.id)
DiscussionUtil.safeAjax DiscussionUtil.safeAjax
$elem: $(event.target) $elem: $(event.target)
$loading: $(event.target) if event
url: url url: url
type: "POST" type: "POST"
dataType: 'json' dataType: 'json'
......
...@@ -18,6 +18,7 @@ if Backbone? ...@@ -18,6 +18,7 @@ if Backbone?
url = DiscussionUtil.urlFor 'retrieve_discussion', discussion_id url = DiscussionUtil.urlFor 'retrieve_discussion', discussion_id
DiscussionUtil.safeAjax DiscussionUtil.safeAjax
$elem: $elem $elem: $elem
$loading: $elem
url: url url: url
type: "GET" type: "GET"
dataType: 'json' dataType: 'json'
......
$ ->
$.fn.extend
loading: ->
$(this).after("<span class='discussion-loading'></span>")
loaded: ->
$(this).parent().children(".discussion-loading").remove()
class @DiscussionUtil class @DiscussionUtil
@wmdEditors: {} @wmdEditors: {}
...@@ -62,9 +69,16 @@ class @DiscussionUtil ...@@ -62,9 +69,16 @@ class @DiscussionUtil
$elem = params.$elem $elem = params.$elem
if $elem.attr("disabled") if $elem.attr("disabled")
return return
params["beforeSend"] = ->
$elem.attr("disabled", "disabled") $elem.attr("disabled", "disabled")
if params["$loading"]
console.log "loading"
params["$loading"].loading()
$.ajax(params).always -> $.ajax(params).always ->
$elem.removeAttr("disabled") $elem.removeAttr("disabled")
if params["$loading"]
console.log "loaded"
params["$loading"].loaded()
@get: ($elem, url, data, success) -> @get: ($elem, url, data, success) ->
@safeAjax @safeAjax
......
...@@ -35,7 +35,13 @@ $tag-text-color: #5b614f; ...@@ -35,7 +35,13 @@ $tag-text-color: #5b614f;
} }
} }
.discussion-loading {
background-image: url(../images/discussion/loading.gif);
width: 15px;
height: 15px;
margin-left: 2px;
display: inline-block;
}
/*** Discussions ***/ /*** Discussions ***/
...@@ -49,8 +55,6 @@ $tag-text-color: #5b614f; ...@@ -49,8 +55,6 @@ $tag-text-color: #5b614f;
margin-top: 0; margin-top: 0;
} }
/*** Sidebar ***/ /*** Sidebar ***/
.sidebar-module { .sidebar-module {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment