Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: tools/bug_chomper/templates/bug_chomper.html

Issue 274693002: BugChomper utility - rewrite in Go (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Use securecookie, add --public flag Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..b3b347aab21ffbe4d2981ea1c66993b933c6e78f
--- /dev/null
+++ b/tools/bug_chomper/templates/bug_chomper.html
@@ -0,0 +1,118 @@
+<html>
+<head>
+<title>{{ .Title }}</title>
jcgregorio 2014/05/13 16:28:12 Convention is to not put spaces, i.e. {{.Title}}.
borenet 2014/05/13 17:43:20 Done.
+<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]));
jcgregorio 2014/05/13 16:28:12 Shouldn't JSON.parse(JSON.stringify be a NOP?
borenet 2014/05/13 17:43:20 This is effectively a deep copy.
+ }
+ 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>

Powered by Google App Engine
This is Rietveld 408576698