From 1549ec0bea9ff7668d3e7c4932bdf34a88e4f52e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 18 2015 11:04:27 +0000 Subject: Add JS logic to the issue page to start supporting eventsource This adds eventsource support for: - Adding/Removing a tag of an issue - Assigning/Resetting the assignee of an issue - Adding a comment to an issue --- diff --git a/pagure/templates/issue.html b/pagure/templates/issue.html index e2d0d9d..a3f8cfe 100644 --- a/pagure/templates/issue.html +++ b/pagure/templates/issue.html @@ -53,11 +53,13 @@
Tags: + {% for tag in issue.tags %} - {{ tag.tag }}{%- if not loop.last -%},{%- endif -%} + repo=repo.name, tags=tag.tag) }}">{{ tag.tag }} + {%- if not loop.last -%},{%- endif -%} {% endfor %} + {% if authenticated and repo_admin %} @@ -66,11 +68,13 @@
Assigned: + {% if issue.assignee %} {{ issue.assignee.username }} {% endif %} + {% if authenticated %} @@ -113,11 +117,13 @@ {{ show_comment(issue, 0, repo, username, issueid, form) }} +
{% if issue.comments %} {% for comment in issue.comments %} {{ show_comment(comment, loop.index, repo, username, issueid, form, repo_admin) }} {% endfor %} {% endif %} +
{% if authenticated and form %} @@ -234,14 +240,14 @@ $(function() { $( ".reply" ).click( function() { - var _section = $(this).parent().parent().parent(); - var _comment = _section.find('.comment_body'); - var _text = _comment.text().split("\n"); - var _output = new Array(); - for (cnt = 0; cnt < _text.length - 1; cnt ++) { - _output[cnt] = '> ' + jQuery.trim(_text[cnt + 1]); - } - $( "#comment" ).val(_output.join("\n")); + var _section = $(this).parent().parent().parent(); + var _comment = _section.find('.comment_body'); + var _text = _comment.text().split("\n"); + var _output = new Array(); + for (cnt = 0; cnt < _text.length - 1; cnt ++) { + _output[cnt] = '> ' + jQuery.trim(_text[cnt + 1]); + } + $( "#comment" ).val(_output.join("\n")); } ); @@ -317,6 +323,85 @@ $(function() { }); }); + +if (!!window.EventSource) { + var source = new EventSource('{{ + url_for("stream_issue", username=username, + repo=repo.name, issueid=issueid) }}'); +} else { + // Result to xhr polling :( +} +source.addEventListener('message', function(e) { + console.log(e.data); + var data = $.parseJSON(e.data); + console.log(data); + if (data.added_tags){ + console.log('adding ' + data.added_tags); + var field = $('#taglist'); + var _data = field.html(); + var _url =''; + for (i=0; i'; + } + } + if (data.removed_tags){ + console.log('removing ' + data.removed_tags); + var field = $('#taglist'); + var _data = field.html(); + var _url =''; + for (i=0; i', ''); + } + field.html(_data); + } + if (data.assigned){ + console.log('assigning ' + data.assigned); + var field = $('#assigneduser'); + var _data = field.html(); + var _url =''; + _data = _url.replace('--', data.assigned.name) + data.assigned.name + ''; + field.html(_data); + field = $('#assignee'); + field.val(data.assigned.name); + } + if (data.unassigned){ + console.log('un-assigning '); + var field = $('#assigneduser'); + field.html(' '); + field = $('#assignee'); + field.val(''); + } + if (data.comment_added){ + console.log('Adding comment ' + data.comment_added); + var field = $('#comments'); + var _data = '
\ +
\ + \ + \ + ' + data.comment_user + '\ + - seconds ago \ + ΒΆ \ + \ +
\ +
\ +

' + data.comment_added + '

\ +
\ +
'; + field.html(field.html() + _data); + } + +}, false); + {% endblock %}