##// END OF EJS Templates
Update thread by time, not post id. This will help with getting updated posts
neko259 -
r363:69d0a4bf thread_autoupdate
parent child Browse files
Show More
@@ -77,4 +77,5 b' function addQuickReply(postId) {'
77
77
78 $(document).ready(function(){
78 $(document).ready(function(){
79 addGalleryPanel();
79 addGalleryPanel();
80 initAutoupdate();
80 });
81 });
@@ -1,6 +1,17 b''
1 var THREAD_UPDATE_DELAY = 10000;
1 var THREAD_UPDATE_DELAY = 10000;
2
2
3 var loading = false;
3 var loading = false;
4 var lastUpdateTime = null;
5
6 function blink(node) {
7 var blinkCount = 2;
8 var blinkDelay = 250;
9
10 var nodeToAnimate = node;
11 for (var i = 0; i < blinkCount; i++) {
12 nodeToAnimate = nodeToAnimate.fadeOut(blinkDelay).fadeIn(blinkDelay);
13 }
14 }
4
15
5 function updateThread() {
16 function updateThread() {
6 if (loading) {
17 if (loading) {
@@ -13,9 +24,8 b' function updateThread() {'
13
24
14 var lastPost = threadPosts.last();
25 var lastPost = threadPosts.last();
15 var threadId = threadPosts.first().attr('id');
26 var threadId = threadPosts.first().attr('id');
16 var lastPostId = lastPost.attr('id');
17
27
18 var diffUrl = '/api/diff_thread/' + threadId + '/' + lastPostId + '/';
28 var diffUrl = '/api/diff_thread/' + threadId + '/' + lastUpdateTime + '/';
19 $.getJSON(diffUrl)
29 $.getJSON(diffUrl)
20 .success(function(data) {
30 .success(function(data) {
21 var addedPosts = data.added;
31 var addedPosts = data.added;
@@ -23,15 +33,31 b' function updateThread() {'
23 for (var i = 0; i < addedPosts.length; i++) {
33 for (var i = 0; i < addedPosts.length; i++) {
24 var postText = addedPosts[i];
34 var postText = addedPosts[i];
25
35
26 var post = $(postText).hide();
36 var post = $(postText);
27 post.appendTo(lastPost.parent()).show('slow');
37 post.appendTo(lastPost.parent());
28 addRefLinkPreview(post[0]);
38 addRefLinkPreview(post[0]);
29
39
30 lastPost = post;
40 lastPost = post;
41 blink(post);
42
31 }
43 }
32
44
45 // TODO Process updated and deleted posts
46
47 lastUpdateTime = data.last_update;
48 loading = false;
49 })
50 .error(function(data) {
51 // TODO Show error message that server is unavailable?
52
33 loading = false;
53 loading = false;
34 });
54 });
35 }
55 }
36
56
37 setInterval(updateThread, THREAD_UPDATE_DELAY);
57 function initAutoupdate() {
58 loading = false;
59
60 lastUpdateTime = $('.metapanel').attr('data-last-update');
61
62 setInterval(updateThread, THREAD_UPDATE_DELAY);
63 }
@@ -152,7 +152,7 b''
152
152
153 {% get_current_language as LANGUAGE_CODE %}
153 {% get_current_language as LANGUAGE_CODE %}
154
154
155 <span class="metapanel">
155 <span class="metapanel" data-last-update="{{ last_update }}">
156 {% cache 600 thread_meta posts.0.last_edit_time moderator LANGUAGE_CODE %}
156 {% cache 600 thread_meta posts.0.last_edit_time moderator LANGUAGE_CODE %}
157 {{ posts.0.get_reply_count }} {% trans 'replies' %},
157 {{ posts.0.get_reply_count }} {% trans 'replies' %},
158 {{ posts.0.get_images_count }} {% trans 'images' %}.
158 {{ posts.0.get_images_count }} {% trans 'images' %}.
@@ -53,6 +53,6 b" urlpatterns = patterns('',"
53
53
54 # API
54 # API
55 url(r'^api/post/(?P<post_id>\w+)/$', views.get_post, name="get_post"),
55 url(r'^api/post/(?P<post_id>\w+)/$', views.get_post, name="get_post"),
56 url(r'^api/diff_thread/(?P<thread_id>\w+)/(?P<last_post_id>\w+)/$',
56 url(r'^api/diff_thread/(?P<thread_id>\w+)/(?P<last_update_time>\w+)/$',
57 views.api_get_threaddiff, name="get_thread_diff"),
57 views.api_get_threaddiff, name="get_thread_diff"),
58 )
58 )
@@ -1,6 +1,10 b''
1 import hashlib
1 import hashlib
2 import json
2 import json
3 import string
3 import string
4 import time
5
6 from datetime import datetime
7
4 from django.core import serializers
8 from django.core import serializers
5 from django.core.urlresolvers import reverse
9 from django.core.urlresolvers import reverse
6 from django.http import HttpResponseRedirect
10 from django.http import HttpResponseRedirect
@@ -211,6 +215,7 b' def thread(request, post_id):'
211 context['bumplimit_progress'] = str(
215 context['bumplimit_progress'] = str(
212 float(context['posts_left']) /
216 float(context['posts_left']) /
213 neboard.settings.MAX_POSTS_PER_THREAD * 100)
217 neboard.settings.MAX_POSTS_PER_THREAD * 100)
218 context["last_update"] = int(time.time() * 1000)
214
219
215 return render(request, 'boards/thread.html', context)
220 return render(request, 'boards/thread.html', context)
216
221
@@ -409,14 +414,17 b' def api_get_post(request, post_id):'
409 return HttpResponse(content=json)
414 return HttpResponse(content=json)
410
415
411
416
412 def api_get_threaddiff(request, thread_id, last_post_id):
417 def api_get_threaddiff(request, thread_id, last_update_time):
413 thread = get_object_or_404(Post, id=thread_id)
418 thread = get_object_or_404(Post, id=thread_id)
414 posts = Post.objects.filter(thread=thread, id__gt=last_post_id)
419
420 filter_time = datetime.fromtimestamp(float(last_update_time) / 1000)
421 added_posts = Post.objects.filter(thread=thread, pub_time__gt=filter_time)
415
422
416 json_data = {
423 json_data = {
417 'added': []
424 'added': [],
425 'last_update' : int(time.time() * 1000),
418 }
426 }
419 for post in posts:
427 for post in added_posts:
420 json_data['added'].append(get_post(request, post.id).content.strip())
428 json_data['added'].append(get_post(request, post.id).content.strip())
421
429
422 return HttpResponse(content=json.dumps(json_data))
430 return HttpResponse(content=json.dumps(json_data))
General Comments 0
You need to be logged in to leave comments. Login now