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,14 +120,19 @@ if Backbone? ...@@ -120,14 +120,19 @@ 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
@showed = true $elem: $elem
@updateShowComments() $loading: $(event.target) if event
@$showComments().addClass("retrieved") type: "GET"
@$el.children(".comments").replaceWith response.html url: url
@model.resetComments response.content.children success: (response, textStatus) =>
@initCommentViews() @showed = true
DiscussionUtil.bulkUpdateContentInfo response.annotated_content_info @updateShowComments()
@$showComments().addClass("retrieved")
@$el.children(".comments").replaceWith response.html
@model.resetComments response.content.children
@initCommentViews()
DiscussionUtil.bulkUpdateContentInfo response.annotated_content_info
toggleSingleThread: (event) -> toggleSingleThread: (event) ->
if @showed if @showed
...@@ -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,16 +203,24 @@ if Backbone? ...@@ -197,16 +203,24 @@ 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
@model.set('voted', '') $elem: $elem
@model.set('votes_point', response.votes.point) url: url
type: "POST"
success: (response, textStatus) =>
@model.set('voted', '')
@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
@model.set('voted', value) $elem: $elem
@model.set('votes_point', response.votes.point) url: url
type: "POST"
success: (response, textStatus) =>
@model.set('voted', value)
@model.set('votes_point', response.votes.point)
toggleVote: (event) -> toggleVote: (event) ->
$elem = $(event.target) $elem = $(event.target)
...@@ -221,8 +235,13 @@ if Backbone? ...@@ -221,8 +235,13 @@ 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
@model.set('endorsed', not endorsed) $elem: $elem
url: url
data: data
type: "POST"
success: (response, textStatus) =>
@model.set('endorsed', not endorsed)
toggleFollow: (event) -> toggleFollow: (event) ->
$elem = $(event.target) $elem = $(event.target)
...@@ -231,16 +250,25 @@ if Backbone? ...@@ -231,16 +250,25 @@ 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
@model.set('subscribed', not subscribed) $elem: $elem
url: url
type: "POST"
success: (response, textStatus) =>
@model.set('subscribed', not subscribed)
toggleClosed: (event) -> toggleClosed: (event) ->
$elem = $(event.target) $elem = $(event.target)
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
@model.set('closed', not closed) $elem: $elem
url: url
type: "POST"
data: data
success: (response, textStatus) =>
@model.set('closed', not closed)
edit: (event) -> edit: (event) ->
@$(".discussion-content-wrapper").hide() @$(".discussion-content-wrapper").hide()
...@@ -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,9 +327,12 @@ if Backbone? ...@@ -298,9 +327,12 @@ if Backbone?
if not c if not c
return return
$elem = $(event.target) $elem = $(event.target)
DiscussionUtil.post $elem, url, {}, (response, textStatus) => DiscussionUtil.safeAjax
@$el.remove() $elem: $elem
@model.get('thread').removeComment(@model) url: url
success: (response, textStatus) =>
@$el.remove()
@model.get('thread').removeComment(@model)
events: events:
"click .discussion-follow-thread": "toggleFollow" "click .discussion-follow-thread": "toggleFollow"
......
...@@ -39,14 +39,19 @@ if Backbone? ...@@ -39,14 +39,19 @@ 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
$parent = @$el.parent() $elem: $elem
@$el.replaceWith(response.html) $loading: $elem
$discussion = $parent.find("section.discussion") url: url
@model.reset(response.discussionData, { silent: false }) type: "GET"
view = new DiscussionView el: $discussion[0], model: @model success: (response, textStatus) =>
DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) $parent = @$el.parent()
$("html, body").animate({ scrollTop: 0 }, 0) @$el.replaceWith(response.html)
$discussion = $parent.find("section.discussion")
@model.reset(response.discussionData, { silent: false })
view = new DiscussionView el: $discussion[0], model: @model
DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info)
$("html, body").animate({ scrollTop: 0 }, 0)
loadSimilarPost: (event) -> loadSimilarPost: (event) ->
console.log "loading similar" console.log "loading similar"
...@@ -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
$elem.attr("disabled", "disabled") params["beforeSend"] = ->
$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