Dialog boxes for AJAX, HTTP, and IPA errors.

The ipa_cmd() has been modified to identity the type of the error
it has received and display the error using the right dialog box.
The dialog box can be customized further to display the appropriate
amount of information for each type of error.
This commit is contained in:
Endi S. Dewata
2010-10-28 09:50:34 -05:00
committed by Adam Young
parent 528145d5df
commit de3cc334ed
5 changed files with 61 additions and 35 deletions

View File

@@ -321,7 +321,7 @@ function ipa_association_facet(spec) {
function refresh_on_error(xhr, text_status, error_thrown) {
var search_results = $('.search-results', container).empty();
search_results.append('<p>Error: '+error_thrown.name+'</p>');
search_results.append('<p>URL: '+this.url+'</p>');
search_results.append('<p>'+error_thrown.title+'</p>');
search_results.append('<p>'+error_thrown.message+'</p>');
}

View File

@@ -335,7 +335,7 @@ function ipa_details_load(container, pkey, on_win, on_fail)
var details = $('.details', container).empty();
details.append('<p>Error: '+error_thrown.name+'</p>');
details.append('<p>URL: '+this.url+'</p>');
details.append('<p>'+error_thrown.title+'</p>');
details.append('<p>'+error_thrown.message+'</p>');
}

View File

@@ -109,35 +109,7 @@ var IPA = function() {
* objname - name of an IPA object (optional) */
function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
{
function ipa_success_handler(data, text_status, xhr) {
if (!data) {
var error_thrown = {
name: 'HTTP Error '+xhr.status,
message: data ? xhr.statusText : "No response"
};
ipa_error_handler.call(this, xhr, text_status, error_thrown);
} else if (data.error) {
var error_thrown = {
name: 'IPA Error '+data.error.code,
message: data.error.message
};
ipa_error_handler.call(this, xhr, text_status, error_thrown);
} else if (win_callback) {
win_callback.call(this, data, text_status, xhr);
}
}
function ipa_error_handler(xhr, text_status, error_thrown) {
IPA.error_dialog.empty();
IPA.error_dialog.attr('title', 'Error: '+error_thrown.name);
IPA.error_dialog.append('<p>URL: '+this.url+'</p>');
if (error_thrown.message) {
IPA.error_dialog.append('<p>'+error_thrown.message+'</p>');
}
function dialog_open(xhr, text_status, error_thrown) {
var that = this;
IPA.error_dialog.dialog({
@@ -156,6 +128,60 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
});
}
function success_handler(data, text_status, xhr) {
if (!data) {
var error_thrown = {
title: 'HTTP Error '+xhr.status,
message: data ? xhr.statusText : "No response"
};
http_error_handler.call(this, xhr, text_status, error_thrown);
} else if (data.error) {
var error_thrown = {
title: 'IPA Error '+data.error.code,
message: data.error.message
};
ipa_error_handler.call(this, xhr, text_status, error_thrown);
} else if (win_callback) {
win_callback.call(this, data, text_status, xhr);
}
}
function error_handler(xhr, text_status, error_thrown) {
error_thrown.title = 'AJAX Error: '+error_thrown.name;
ajax_error_handler.call(this, xhr, text_status, error_thrown);
}
function ajax_error_handler(xhr, text_status, error_thrown) {
IPA.error_dialog.empty();
IPA.error_dialog.attr('title', error_thrown.title);
IPA.error_dialog.append('<p>URL: '+this.url+'</p>');
IPA.error_dialog.append('<p>'+error_thrown.message+'</p>');
dialog_open.call(this, xhr, text_status, error_thrown);
}
function http_error_handler(xhr, text_status, error_thrown) {
IPA.error_dialog.empty();
IPA.error_dialog.attr('title', error_thrown.title);
IPA.error_dialog.append('<p>URL: '+this.url+'</p>');
IPA.error_dialog.append('<p>'+error_thrown.message+'</p>');
dialog_open.call(this, xhr, text_status, error_thrown);
}
function ipa_error_handler(xhr, text_status, error_thrown) {
IPA.error_dialog.empty();
IPA.error_dialog.attr('title', error_thrown.title);
IPA.error_dialog.append('<p>'+error_thrown.message+'</p>');
dialog_open.call(this, xhr, text_status, error_thrown);
}
var id = ipa_jsonrpc_id++;
var method_name = name;
@@ -180,8 +206,8 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
var request = {
url: url,
data: JSON.stringify(data),
success: ipa_success_handler,
error: ipa_error_handler
success: success_handler,
error: error_handler
};
$.ajax(request);

View File

@@ -296,7 +296,7 @@ function search_load(container, criteria, on_win, on_fail)
var search_results = $('.search-results', container);
search_results.append('<p>Error: '+error_thrown.name+'</p>');
search_results.append('<p>URL: '+this.url+'</p>');
search_results.append('<p>'+error_thrown.title+'</p>');
search_results.append('<p>'+error_thrown.message+'</p>');
}

View File

@@ -94,7 +94,7 @@ $(function() {
function init_on_error(xhr, text_status, error_thrown) {
var navigation = $('#navigation').empty();
navigation.append('<p>Error: '+error_thrown.name+'</p>');
navigation.append('<p>URL: '+this.url+'</p>');
navigation.append('<p>'+error_thrown.title+'</p>');
navigation.append('<p>'+error_thrown.message+'</p>');
}