X-Git-Url: https://git.ozlabs.org/?p=patchwork;a=blobdiff_plain;f=htdocs%2Fjs%2Fbundle.js;h=0bdf41aeade11c6ac9ab57b73ca68e8d892195c8;hp=dc4fb9c5958da97b3d1dbfcfba6dee694d624944;hb=6ce62d26739ebf0dd81ecff5284adf3fbe2aed23;hpb=6cf8d6e128b9117f10431eb9b534e9c8b1024cdf diff --git a/htdocs/js/bundle.js b/htdocs/js/bundle.js index dc4fb9c..0bdf41a 100644 --- a/htdocs/js/bundle.js +++ b/htdocs/js/bundle.js @@ -1,41 +1,82 @@ -function parse_patch_id(id_str) + +var editing_order = false; +var dragging = false; + +function order_button_click(node) { - var i; + var rows, form; - i = id_str.indexOf(':'); - if (i == -1) - return null; + form = $("#reorderform"); + rows = $("#patchlist").get(0).tBodies[0].rows; - return id_str.substring(i + 1); -} + if (rows.length < 1) + return; -function bundle_handle_drop(table, row) -{ - var relative, relation, current; - var relative_id, current_id; + if (editing_order) { - current = $(row); - relative = $(current).prev(); - relation = 'after'; + /* disable the save button */ + node.disabled = true; - /* if we have no previous row, position ourselves before the next - * row instead */ - if (!relative.length) { - relative = current.next(); - relation = 'before'; + /* add input elements as the sequence of patches */ + for (var i = 0; i < rows.length; i++) { + form.append(''); + } - if (!relative) - return; + form.get(0).submit(); + } else { + + /* store the first order value */ + start_order = row_to_patch_id(rows[0]); + $("input[name='order_start']").attr("value", start_order); + + /* update buttons */ + node.setAttribute("value", "Save order"); + $("#reorder\\-cancel").css("display", "inline"); + + /* show help text */ + $("#reorderhelp").text('Drag & drop rows to reorder'); + + /* enable drag & drop on the patches list */ + $("#patchlist").tableDnD({ + onDragClass: 'dragging', + onDragStart: function() { dragging = true; }, + onDrop: function() { dragging = false; } + }); + + /* replace zebra striping with hover */ + $("#patchlist tbody tr").css("background", "inherit"); + $("#patchlist tbody tr").hover(drag_hover_in, drag_hover_out); } - current_id = parse_patch_id(current.attr('id')); - relative_id = parse_patch_id(relative.attr('id')); + editing_order = !editing_order; +} - alert("put patch " + current_id + " " + relation + " " + relative_id); +function order_cancel_click(node) +{ + node.form.submit(); } -$(document).ready(function() { - $("#patchlist").tableDnD({ - onDrop: bundle_handle_drop - }); -}); +/* dragging helper functions */ +function drag_hover_in() +{ + if (!dragging) + $(this).addClass("draghover"); +} +function drag_hover_out() +{ + $(this).removeClass("draghover"); +} + +function row_to_patch_id(node) +{ + var id_str, i; + + id_str = node.getAttribute("id"); + + i = id_str.indexOf(':'); + if (i == -1) + return null; + + return id_str.substring(i + 1); +}