~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/code/javascript/branch.bugspeclinks.js

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-08-03 01:21:39 UTC
  • mfrom: (13564.1.4 bug-809511)
  • Revision ID: launchpad@pqm.canonical.com-20110803012139-0te2a224h5zrb8r7
[r=gary][bug=809511] use a heuristic to guess the likely bug ID from
        the branch name when associating

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
var error_handler;
19
19
 
20
20
/*
 
21
 * Extract the best candidate for a bug number from the branch name.
 
22
 */
 
23
function extract_candidate_bug_id(branch_name) {
 
24
    // Extract all the runs of numbers in the branch name and sort by
 
25
    // descending length.
 
26
    var chunks = branch_name.split(/\D/g).sort(function (a, b) {
 
27
        return b.length - a.length;
 
28
    });
 
29
    var chunk, i;
 
30
    for (i=0; i<chunks.length; i++) {
 
31
        chunk = chunks[i];
 
32
        // Bugs with fewer than six digits aren't being created any more (by
 
33
        // Canonical's LP at least), but there are lots of open five digit
 
34
        // bugs so ignore runs of fewer than five digits in the branch name.
 
35
        if (chunk.length < 5) {
 
36
            break;
 
37
        }
 
38
        // Bug IDs don't start with a zero.
 
39
        if (chunk[0] !== '0') {
 
40
            return chunk;
 
41
        }
 
42
    }
 
43
    return null;
 
44
}
 
45
// Expose in the namespace so we can test it.
 
46
namespace._extract_candidate_bug_id = extract_candidate_bug_id;
 
47
 
 
48
/*
21
49
 * Connect the links to the javascript events.
22
50
 */
23
51
namespace.connect_branchlinks = function() {
50
78
    linkbug_handle.on('click', function(e) {
51
79
        e.preventDefault();
52
80
        link_bug_overlay.show();
53
 
        Y.DOM.byId('field.bug').focus();
 
81
        var field = Y.DOM.byId('field.bug');
 
82
        field.focus();
 
83
        var guessed_bug_id = extract_candidate_bug_id(LP.cache.context.name);
 
84
        if (Y.Lang.isValue(guessed_bug_id)) {
 
85
            field.value = guessed_bug_id;
 
86
            // Select the pre-filled bug number (if any) so that it will be
 
87
            // replaced by anything the user types (getting the guessed bug
 
88
            // number out of the way quickly if we guessed incorrectly).
 
89
            field.selectionStart = 0;
 
90
            field.selectionEnd = 999;
 
91
        }
54
92
    });
55
93
    connect_remove_links();
56
 
 
57
94
};
58
95
 
59
96
/*
123
160
        on: {
124
161
            success: function(id, response) {
125
162
                destroy_temporary_spinner();
126
 
                Y.one('#linkbug').set(
127
 
                    'innerHTML', 'Link to another bug report');
128
 
                Y.one('#buglink-list').set('innerHTML', response.responseText);
 
163
                Y.one('#linkbug')
 
164
                    .set('innerHTML', 'Link to another bug report');
 
165
                Y.one('#buglink-list')
 
166
                    .set('innerHTML', response.responseText);
129
167
                var new_buglink = Y.one('#buglink-' + bug.get('id'));
130
168
                var anim = Y.lazr.anim.green_flash({node: new_buglink});
131
169
                anim.on('end', connect_remove_links);