Index: tools/bug_chomper/templates/bug_chomper.html |
diff --git a/tools/bug_chomper/templates/bug_chomper.html b/tools/bug_chomper/templates/bug_chomper.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..df08570b8653370ab93d1d3af936bb88407f159a |
--- /dev/null |
+++ b/tools/bug_chomper/templates/bug_chomper.html |
@@ -0,0 +1,118 @@ |
+<html> |
+<head> |
+<title>{{.Title}}</title> |
+<link rel="stylesheet" type="text/css" href="res/style.css" /> |
+<link rel="icon" type="image/ico" href="res/favicon.ico" /> |
+<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> |
+<script type="text/javascript" src="res/third_party/jquery.tablednd.js"></script> |
+<script type="text/javascript"> |
+"use strict"; |
+ |
+var issues = {{.BugsJson}}; |
+var edited = {}; |
+ |
+function edit_label(bug_id, old_value, new_value) { |
+ console.log("issue[" + bug_id + "]: " + old_value + " -> " + new_value); |
+ if (!edited[bug_id]) { |
+ edited[bug_id] = JSON.parse(JSON.stringify(issues[bug_id])); |
+ } |
+ var old_index = edited[bug_id]["labels"].indexOf(old_value); |
+ if (old_index > -1) { |
+ edited[bug_id]["labels"][old_index] = new_value; |
+ } else { |
+ edited[bug_id]["labels"].push(new_value) |
+ } |
+ if (JSON.stringify(issues[bug_id]) == JSON.stringify(edited[bug_id])) { |
+ console.log("Not changing " + bug_id); |
+ delete edited[bug_id] |
+ } |
+ document.getElementById("all_edits").value = JSON.stringify(edited); |
+} |
+ |
+</script> |
+</head> |
+<body> |
+<h1>BugChomper</h1> |
+ |
+<form method="post"> |
+<input type="hidden" name="all_edits" id="all_edits" value="{}" /> |
+<input type="submit" value="Submit changes to issue tracker" /> |
+</form> |
+<table id="buglist"> |
+ <thead> |
+ <tr id="table_header" class="nodrag tr_head"> |
+ <td colspan=3><h2>Open bugs for {{.User}}</h2></td> |
+ </tr> |
+ <tr id="table_subheader" class="nodrag tr_head"> |
+ <td>ID</td> |
+ <td>Priority</td> |
+ <td>Title</td> |
+ </tr> |
+ </thead> |
+ <tbody> |
+ {{with $all_data := .}} |
+ {{range $index, $priority := index $all_data.Priorities}} |
+ <tr id="priority_{{$priority}}" |
+ class="{{if eq $index 0}}nodrop{{else}}{{end}} nodrag priority_row priority_{{$priority}}" |
+ > |
+ <td colspan=3 class="priority_td">Priority {{$priority}}</td> |
+ </tr> |
+ {{range $index, $bug := index $all_data.BugsByPriority $priority}} |
+ <tr id="{{$bug.Id}}" class="priority_{{$priority}}"> |
+ <td id="id_{{$bug.Id}}"> |
+ <a href="{{$bug.URL}}" target="_blank">{{$bug.Id}}</a> |
+ </td> |
+ <td id="priority_{{$bug.Id}}">{{$priority}}</td> |
+ <td id="title_{{$bug.Id}}">{{$bug.Title}}</td> |
+ </tr> |
+ {{end}} |
+ {{end}} |
+ {{end}} |
+ </tbody> |
+</table> |
+ |
+<script type="text/javascript"> |
+$(document).ready(function() { |
+ $("#buglist").tableDnD({ |
+ onDrop: function(table, dropped_row) { |
+ var id = dropped_row.id; |
+ var css_priority_prefix = "priority_" |
+ var new_priority = null; |
+ var dropped_index = null; |
+ var thead_rows = table.tHead.rows; |
+ var tbody_rows = table.tBodies[0].rows; |
+ var all_rows = []; |
+ for (var i = 0; i < thead_rows.length; i++) { |
+ all_rows.push(thead_rows[i]); |
+ } |
+ for (var i = 0; i < tbody_rows.length; i++) { |
+ all_rows.push(tbody_rows[i]); |
+ } |
+ for (var i = 0; i < all_rows.length; i++) { |
+ if (all_rows[i].id) { |
+ if (all_rows[i].id.indexOf(css_priority_prefix) == 0) { |
+ new_priority = all_rows[i].id.substring(css_priority_prefix.length); |
+ } |
+ if (all_rows[i].id == id) { |
+ break; |
+ } |
+ } else { |
+ console.warn("No id for:"); |
+ console.warn(all_rows[i]); |
+ } |
+ } |
+ if (new_priority) { |
+ priority_td = document.getElementById(css_priority_prefix + id); |
+ old_priority = priority_td.innerHTML; |
+ if (priority_td && new_priority != old_priority) { |
+ priority_td.innerHTML = new_priority; |
+ document.getElementById(id).className = css_priority_prefix + new_priority; |
+ edit_label(id, "{{.PriorityPrefix}}" + old_priority, "{{.PriorityPrefix}}" + new_priority); |
+ } |
+ } |
+ } |
+ }); |
+}); |
+</script> |
+</body> |
+</html> |