# HG changeset patch # User Mads Kiilerich # Date 2015-08-26 17:28:59 # Node ID 07bfe091845e42d6fc0dbc3099d997057a8b14f9 # Parent a4b8148042637a00ad46998b246d63beb6de49f2 changelog: improved UI for selection of ranges Show an extra checkbox next to the first selected checkbox to be able to specify single revision ranges (which is different from the start of an open range). When two revisions are selected, hide all other checkboxes to make it impossible to select more. diff --git a/kallithea/public/css/style.css b/kallithea/public/css/style.css --- a/kallithea/public/css/style.css +++ b/kallithea/public/css/style.css @@ -2390,7 +2390,7 @@ BIN_FILENODE = 6 } #graph_content .container .checkbox { - width: 12px; + width: 14px; font-size: 0.85em; } @@ -2435,6 +2435,7 @@ BIN_FILENODE = 6 position: relative; } +#graph_content .container #singlerange, #graph_content .container .changeset_range { float: left; margin: 6px 3px; diff --git a/kallithea/templates/changelog/changelog.html b/kallithea/templates/changelog/changelog.html --- a/kallithea/templates/changelog/changelog.html +++ b/kallithea/templates/changelog/changelog.html @@ -154,6 +154,8 @@ ${self.repo_context_bar('changelog', c.f + +
@@ -171,16 +173,18 @@ ${self.repo_context_bar('changelog', c.f var checkbox_checker = function(e) { var $checked_checkboxes = $checkboxes.filter(':checked'); + var $singlerange = $('#singlerange'); + + $('#rev_range_container').hide(); + $checkboxes.show(); + $singlerange.show(); + if ($checked_checkboxes.length > 0) { + $checked_checkboxes.first().parent('td').append($singlerange); + var singlerange = $singlerange.prop('checked'); var rev_end = $checked_checkboxes.first().prop('name').substr(0, 12); - var rev_start = $checked_checkboxes.last().prop('name').substr(0, 12); - if (rev_start == rev_end) { - $('#rev_range_container').hide(); - $('#open_new_pr').prop('href', pyroutes.url('pullrequest_home', - {'repo_name': '${c.repo_name}', - 'rev_end': rev_end})); - $('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format(rev_end)); - } else { + if ($checked_checkboxes.length > 1 || singlerange) { + var rev_start = $checked_checkboxes.last().prop('name').substr(0, 12); $('#rev_range_container').prop('href', pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}', 'revision': rev_start + '...' + rev_end})); @@ -192,31 +196,46 @@ ${self.repo_context_bar('changelog', c.f 'rev_start': rev_start, 'rev_end': rev_end})); $('#open_new_pr').html(_TM['Open New Pull Request for {0} → {1}'].format(rev_start, rev_end)); + } else { + $('#open_new_pr').prop('href', pyroutes.url('pullrequest_home', + {'repo_name': '${c.repo_name}', + 'rev_end': rev_end})); + $('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format(rev_end)); } $('#rev_range_clear').show(); $('#compare_fork').hide(); + var disabled = true; $checkboxes.each(function(){ var $this = $(this); if (disabled) { - if ($this.prop('checked')) - disabled = false; - $this.closest('tr').toggleClass('out-of-range', disabled); + if ($this.prop('checked')) { + $this.closest('tr').removeClass('out-of-range'); + disabled = singlerange; + } else { + $this.closest('tr').addClass('out-of-range'); + } } else { - $this.closest('tr').toggleClass('out-of-range', false); - if ($this.prop('checked')) - disabled = true; + $this.closest('tr').removeClass('out-of-range'); + disabled = $this.prop('checked'); } }); + + if ($checked_checkboxes.length + (singlerange ? 1 : 0) >= 2) { + $checkboxes.hide(); + $checked_checkboxes.show(); + if (!singlerange) + $singlerange.hide(); + } } else { - $('#rev_range_container').hide(); + $('#singlerange').hide().prop('checked', false); $('#rev_range_clear').hide(); %if c.revision: $('#open_new_pr').prop('href', pyroutes.url('pullrequest_home', {'repo_name': '${c.repo_name}', 'rev_end':'${c.first_revision.raw_id}'})); - $('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format(c.revision)); + $('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format('${c.revision}')); %else: $('#open_new_pr').prop('href', pyroutes.url('pullrequest_home', {'repo_name': '${c.repo_name}', @@ -228,11 +247,16 @@ ${self.repo_context_bar('changelog', c.f } }; checkbox_checker(); - $checkboxes.click(checkbox_checker); + $checkboxes.click(function() { + checkbox_checker(); + r.render(jsdata,100); + }); + $('#singlerange').click(checkbox_checker); $('#rev_range_clear').click(function(e){ $checkboxes.prop('checked', false); checkbox_checker(); + r.render(jsdata,100); }); var $msgs = $('.message');