~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/javascript/bugtask_index.js

[r=sinzui][bug=904890] When an attempt is made to delete a
        non-existent bugtask,
        inform the user and delete the affected table row in the ui.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
var bug_repr;
32
32
 
33
33
// Overlay related vars.
34
 
var error_overlay;
35
34
var submit_button_html =
36
35
    '<button type="submit" name="field.actions.change" ' +
37
36
    'value="Change" class="lazr-pos lazr-btn" >OK</button>';
784
783
        row_fade_out.run();
785
784
    };
786
785
 
 
786
    // If the bugtask has already been deleted, the HTTP response status will
 
787
    // be 404. In this case, we remove the affected row and display a
 
788
    // informational message to the user.
 
789
    if( response.status === 404) {
 
790
        var message = Y.Lang.substitute(
 
791
            "Bug task affecting {targetname} has already been deleted.",
 
792
            {targetname: LP.cache.bugtask_data[bugtask_id].targetname});
 
793
        var notification = Y.Lang.substitute(
 
794
                '[[20, "{message}"]]', {message: message});
 
795
        Y.lp.client.display_notifications(notification);
 
796
        animate_deletion(function() {
 
797
            var tr = Y.one('#' + row_id);
 
798
            if( tr !== null ) {
 
799
                tr.remove(true);
 
800
            }
 
801
            delete LP.cache.bugtask_data[bugtask_id];
 
802
        });
 
803
        return;
 
804
    }
 
805
 
787
806
    // If the result is json, then we need to perform a redirect to a new
788
807
    // bugtask URL. This happens when the current bugtask is deleted and we
789
808
    // need to ensure all link URLS are correctly reset.
818
837
namespace.delete_bugtask = function (delete_link, conf) {
819
838
    Y.lp.client.remove_notifications();
820
839
    var error_handler = new Y.lp.client.ErrorHandler();
 
840
    var module = this;
821
841
    error_handler.showError = Y.bind(function (error_msg) {
822
842
        namespace._hideDeleteSpinner(delete_link, true);
823
843
        Y.lp.app.errors.display_error(undefined, error_msg);
824
844
    }, this);
 
845
    error_handler.handleError = Y.bind(function(id, response) {
 
846
        if( response.status === 404 ) {
 
847
            module._process_bugtask_delete_response(
 
848
                    response, conf.id, conf.row_id, delete_link);
 
849
            return true;
 
850
        }
 
851
        return false;
 
852
    }, this);
825
853
 
826
854
    var submit_url = delete_link.get('href');
827
855
    var qs = Y.lp.client.append_qs(