mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 13:29:49 +00:00
bitbake: toaster: Improve client side error handling
Make use of the toastermain.settings.DEBUG flag to toggle the client side error logging. Make the error logging consistent by using console.warn/error across the project, this adds traceability to the warnings. Also handles the case where console is not available by stubbing it in libtoaster. (Bitbake rev: c34ebc51a6cbf90c64ef1ac461e475c6341f0f2a) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
2e26745a13
commit
ed9fa17467
@@ -81,14 +81,14 @@ var libtoaster = (function (){
|
|||||||
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
||||||
success: function (_data) {
|
success: function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
console.log(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
if (onsuccess != undefined) onsuccess(_data);
|
if (onsuccess != undefined) onsuccess(_data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (_data) {
|
error: function (_data) {
|
||||||
console.log("Call failed");
|
console.warn("Call failed");
|
||||||
console.log(_data);
|
console.warn(_data);
|
||||||
if (onfail) onfail(data);
|
if (onfail) onfail(data);
|
||||||
} });
|
} });
|
||||||
};
|
};
|
||||||
@@ -102,13 +102,13 @@ var libtoaster = (function (){
|
|||||||
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
||||||
success: function (_data) {
|
success: function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
console.log(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
if (onsuccess != undefined) onsuccess(_data);
|
if (onsuccess != undefined) onsuccess(_data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (_data) {
|
error: function (_data) {
|
||||||
console.log(_data);
|
console.warn(_data);
|
||||||
if (onfail) onfail(data);
|
if (onfail) onfail(data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -168,6 +168,7 @@ var libtoaster = (function (){
|
|||||||
getProjectInfo: _getProjectInfo,
|
getProjectInfo: _getProjectInfo,
|
||||||
getLayerDepsForProject : _getLayerDepsForProject,
|
getLayerDepsForProject : _getLayerDepsForProject,
|
||||||
editProject : _editProject,
|
editProject : _editProject,
|
||||||
|
debug: false,
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
@@ -203,6 +204,15 @@ function reload_params(params) {
|
|||||||
/* Things that happen for all pages */
|
/* Things that happen for all pages */
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
/* If we don't have a console object which might be the case in some
|
||||||
|
* browsers, no-op it to avoid undefined errors.
|
||||||
|
*/
|
||||||
|
if (!window.console) {
|
||||||
|
window.console = {};
|
||||||
|
window.console.warn = function() {};
|
||||||
|
window.console.error = function() {};
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PrettyPrint plugin.
|
* PrettyPrint plugin.
|
||||||
*
|
*
|
||||||
@@ -320,4 +330,23 @@ $(document).ready(function() {
|
|||||||
if (location.href.search('#warnings') > -1) {
|
if (location.href.search('#warnings') > -1) {
|
||||||
$('#collapse-warnings').addClass('in');
|
$('#collapse-warnings').addClass('in');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_for_duplicate_ids () {
|
||||||
|
/* warn about duplicate element ids */
|
||||||
|
var ids = {};
|
||||||
|
$("[id]").each(function() {
|
||||||
|
if (this.id && ids[this.id]) {
|
||||||
|
console.warn('Duplicate element id #'+this.id);
|
||||||
|
}
|
||||||
|
ids[this.id] = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libtoaster.debug) {
|
||||||
|
check_for_duplicate_ids();
|
||||||
|
} else {
|
||||||
|
/* Debug is false so supress warnings by overriding the functions */
|
||||||
|
window.console.warn = function () {};
|
||||||
|
window.console.error = function () {};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
$http({method:"GET", url: $scope.urls.xhr_datatypeahead, params : { type: type, value: currentValue}})
|
$http({method:"GET", url: $scope.urls.xhr_datatypeahead, params : { type: type, value: currentValue}})
|
||||||
.success(function (_data) {
|
.success(function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
deffered.reject(_data.error);
|
deffered.reject(_data.error);
|
||||||
}
|
}
|
||||||
deffered.resolve(_data.list);
|
deffered.resolve(_data.list);
|
||||||
@@ -152,12 +152,12 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
if (inXHRcall) {
|
if (inXHRcall) {
|
||||||
if (callparams.data === undefined) {
|
if (callparams.data === undefined) {
|
||||||
// we simply skip the data refresh calls
|
// we simply skip the data refresh calls
|
||||||
console.log("race on XHR, aborted");
|
console.warn("race on XHR, aborted");
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
// we return a promise that we'll solve by reissuing the command later
|
// we return a promise that we'll solve by reissuing the command later
|
||||||
var delayed = $q.defer();
|
var delayed = $q.defer();
|
||||||
console.log("race on XHR, delayed");
|
console.warn("race on XHR, delayed");
|
||||||
$interval(function () {$scope._makeXHRCall(callparams).then(function (d) { delayed.resolve(d); });}, 100, 1);
|
$interval(function () {$scope._makeXHRCall(callparams).then(function (d) { delayed.resolve(d); });}, 100, 1);
|
||||||
|
|
||||||
return delayed.promise;
|
return delayed.promise;
|
||||||
@@ -171,7 +171,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
|
|
||||||
$http(callparams).success(function(_data, _status, _headers, _config) {
|
$http(callparams).success(function(_data, _status, _headers, _config) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert("Failed XHR request (" + _status + "): " + _data.error);
|
console.warn("Failed XHR request (" + _status + "): " + _data.error);
|
||||||
console.error("Failed XHR request: ", _data, _status, _headers, _config);
|
console.error("Failed XHR request: ", _data, _status, _headers, _config);
|
||||||
// stop refreshing hte page
|
// stop refreshing hte page
|
||||||
$interval.cancel($scope.pollHandle);
|
$interval.cancel($scope.pollHandle);
|
||||||
@@ -267,7 +267,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
deffered.resolve(_data);
|
deffered.resolve(_data);
|
||||||
}
|
}
|
||||||
}).error(function(_data, _status, _headers, _config) {
|
}).error(function(_data, _status, _headers, _config) {
|
||||||
alert("Failed HTTP XHR request (" + _status + ")" + _data);
|
console.warn("Failed HTTP XHR request (" + _status + ")" + _data);
|
||||||
console.error("Failed HTTP XHR request: ", _data, _status, _headers, _config);
|
console.error("Failed HTTP XHR request: ", _data, _status, _headers, _config);
|
||||||
inXHRcall = false;
|
inXHRcall = false;
|
||||||
deffered.reject(_data.error);
|
deffered.reject(_data.error);
|
||||||
@@ -298,7 +298,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
|
|
||||||
$scope.targetNamedBuild = function(target) {
|
$scope.targetNamedBuild = function(target) {
|
||||||
if ($scope.targetName === undefined && $scope.targetName1 === undefined){
|
if ($scope.targetName === undefined && $scope.targetName1 === undefined){
|
||||||
alert("No target defined, please type in a target name");
|
console.warn("No target defined, please type in a target name");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
targets: $scope.safeTargetName,
|
targets: $scope.safeTargetName,
|
||||||
}
|
}
|
||||||
}).then(function (data) {
|
}).then(function (data) {
|
||||||
console.log("received ", data);
|
console.warn("received ", data);
|
||||||
$scope.targetName = undefined;
|
$scope.targetName = undefined;
|
||||||
$scope.targetName1 = undefined;
|
$scope.targetName1 = undefined;
|
||||||
$location.hash('buildslist');
|
$location.hash('buildslist');
|
||||||
@@ -357,7 +357,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
$http({method:"GET", url: $scope.urls.xhr_datatypeahead, params : { type: "layerdeps", value: $scope.layerAddId }})
|
$http({method:"GET", url: $scope.urls.xhr_datatypeahead, params : { type: "layerdeps", value: $scope.layerAddId }})
|
||||||
.success(function (_data) {
|
.success(function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
if (_data.list.length > 0) {
|
if (_data.list.length > 0) {
|
||||||
// activate modal
|
// activate modal
|
||||||
@@ -369,7 +369,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
$scope.selectedItems = (function () { s = {}; for (var i = 0; i < items.length; i++) { s[items[i].id] = true; };return s; })();
|
$scope.selectedItems = (function () { s = {}; for (var i = 0; i < items.length; i++) { s[items[i].id] = true; };return s; })();
|
||||||
|
|
||||||
$scope.ok = function() {
|
$scope.ok = function() {
|
||||||
console.log("scope selected is ", $scope.selectedItems);
|
console.warn("scope selected is ", $scope.selectedItems);
|
||||||
$modalInstance.close(Object.keys($scope.selectedItems).filter(function (e) { return $scope.selectedItems[e];}));
|
$modalInstance.close(Object.keys($scope.selectedItems).filter(function (e) { return $scope.selectedItems[e];}));
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -378,7 +378,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
};
|
};
|
||||||
|
|
||||||
$scope.update = function() {
|
$scope.update = function() {
|
||||||
console.log("updated ", $scope.selectedItems);
|
console.warn("updated ", $scope.selectedItems);
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
@@ -393,7 +393,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
|
|
||||||
modalInstance.result.then(function (selectedArray) {
|
modalInstance.result.then(function (selectedArray) {
|
||||||
selectedArray.push($scope.layerAddId);
|
selectedArray.push($scope.layerAddId);
|
||||||
console.log("selected", selectedArray);
|
console.warn("selected", selectedArray);
|
||||||
|
|
||||||
$scope._makeXHRCall({
|
$scope._makeXHRCall({
|
||||||
method: "POST", url: $scope.urls.xhr_edit,
|
method: "POST", url: $scope.urls.xhr_edit,
|
||||||
@@ -473,7 +473,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
|
|
||||||
$scope.edit = function(elementid) {
|
$scope.edit = function(elementid) {
|
||||||
var data = {};
|
var data = {};
|
||||||
console.log("edit with ", elementid);
|
console.warn("edit with ", elementid);
|
||||||
var alertText = undefined;
|
var alertText = undefined;
|
||||||
var alertZone = undefined;
|
var alertZone = undefined;
|
||||||
var oldLayers = [];
|
var oldLayers = [];
|
||||||
@@ -675,7 +675,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
function test_diff_arrays() {
|
function test_diff_arrays() {
|
||||||
_diffArrays([1,2,3], [2,3,4], function(e,f) { return e==f; }, function(e) {console.log("added", e)}, function(e) {console.log("deleted", e);})
|
_diffArrays([1,2,3], [2,3,4], function(e,f) { return e==f; }, function(e) {console.warn("added", e)}, function(e) {console.warn("deleted", e);})
|
||||||
}
|
}
|
||||||
|
|
||||||
// test_diff_arrays();
|
// test_diff_arrays();
|
||||||
@@ -685,6 +685,6 @@ var s = undefined;
|
|||||||
function test_set_alert(text) {
|
function test_set_alert(text) {
|
||||||
s = angular.element("div#main").scope();
|
s = angular.element("div#main").scope();
|
||||||
s.displayAlert(s.zone3alerts, text);
|
s.displayAlert(s.zone3alerts, text);
|
||||||
console.log(s.zone3alerts);
|
console.warn(s.zone3alerts);
|
||||||
s.$digest();
|
s.$digest();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,11 @@
|
|||||||
</script>
|
</script>
|
||||||
<script src="{% static 'js/libtoaster.js' %}">
|
<script src="{% static 'js/libtoaster.js' %}">
|
||||||
</script>
|
</script>
|
||||||
|
{% if DEBUG %}
|
||||||
|
<script>
|
||||||
|
libtoaster.debug = true;
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
<script src="{% static 'js/base.js' %}"></script>
|
<script src="{% static 'js/base.js' %}"></script>
|
||||||
{%if MANAGED %}
|
{%if MANAGED %}
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -126,15 +126,15 @@ function _makeXHREditCall(data, onsuccess, onfail) {
|
|||||||
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
||||||
success: function (_data) {
|
success: function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
updateButtons(_data.layers.map(function (e) {return e.id}));
|
updateButtons(_data.layers.map(function (e) {return e.id}));
|
||||||
if (onsuccess != undefined) onsuccess(_data);
|
if (onsuccess != undefined) onsuccess(_data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (_data) {
|
error: function (_data) {
|
||||||
alert("Call failed");
|
console.warn("Call failed");
|
||||||
console.log(_data);
|
console.warn(_data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -215,7 +215,7 @@ function layerAdd(layerId, layerName, layerURL) {
|
|||||||
data: {'type': 'layerdeps','value':layerId},
|
data: {'type': 'layerdeps','value':layerId},
|
||||||
success: function(_data) {
|
success: function(_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
updateLayerCountLabels(_data.list.length+1);
|
updateLayerCountLabels(_data.list.length+1);
|
||||||
|
|
||||||
|
|||||||
@@ -79,21 +79,21 @@ function _makeXHRBuildCall(url, data, onsuccess, onfail) {
|
|||||||
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
||||||
success: function (_data) {
|
success: function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
if (onsuccess != undefined) onsuccess(_data);
|
if (onsuccess != undefined) onsuccess(_data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (_data) {
|
error: function (_data) {
|
||||||
alert("Call failed");
|
console.warn("Call failed");
|
||||||
console.log(_data);
|
console.warn(_data);
|
||||||
if (onfail) onfail(data);
|
if (onfail) onfail(data);
|
||||||
} });
|
} });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function scheduleBuild(url, projectName, buildlist) {
|
function scheduleBuild(url, projectName, buildlist) {
|
||||||
console.log("scheduleBuild");
|
console.warn("scheduleBuild");
|
||||||
_makeXHRBuildCall(url, {targets: buildlist.join(" ")}, function (_data) {
|
_makeXHRBuildCall(url, {targets: buildlist.join(" ")}, function (_data) {
|
||||||
|
|
||||||
$('#latest-builds').prepend('<div class="alert alert-info" style="padding-top:0px">' + '<span class="label label-info" style="font-weight: normal; margin-bottom: 5px; margin-left:-15px; padding-top:5px;">'+projectName+'</span><div class="row-fluid">' +
|
$('#latest-builds').prepend('<div class="alert alert-info" style="padding-top:0px">' + '<span class="label label-info" style="font-weight: normal; margin-bottom: 5px; margin-left:-15px; padding-top:5px;">'+projectName+'</span><div class="row-fluid">' +
|
||||||
|
|||||||
@@ -119,15 +119,15 @@ function _makeXHREditCall(data, onsuccess, onfail) {
|
|||||||
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
||||||
success: function (_data) {
|
success: function (_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
updateButtons(_data.layers.map(function (e) {return e.id}));
|
updateButtons(_data.layers.map(function (e) {return e.id}));
|
||||||
if (onsuccess != undefined) onsuccess(_data);
|
if (onsuccess != undefined) onsuccess(_data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (_data) {
|
error: function (_data) {
|
||||||
alert("Call failed");
|
console.warn("Call failed");
|
||||||
console.log(_data);
|
console.warn(_data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -202,7 +202,7 @@ function layerAdd(layerId, layerName, layerURL, pressedButtonId) {
|
|||||||
data: {'type': 'layerdeps','value':layerId},
|
data: {'type': 'layerdeps','value':layerId},
|
||||||
success: function(_data) {
|
success: function(_data) {
|
||||||
if (_data.error != "ok") {
|
if (_data.error != "ok") {
|
||||||
alert(_data.error);
|
console.warn(_data.error);
|
||||||
} else {
|
} else {
|
||||||
updateLayerCountLabels(_data.list.length+1);
|
updateLayerCountLabels(_data.list.length+1);
|
||||||
|
|
||||||
|
|||||||
@@ -1898,7 +1898,8 @@ if toastermain.settings.MANAGED:
|
|||||||
def managedcontextprocessor(request):
|
def managedcontextprocessor(request):
|
||||||
ret = {
|
ret = {
|
||||||
"projects": Project.objects.all(),
|
"projects": Project.objects.all(),
|
||||||
"MANAGED" : toastermain.settings.MANAGED
|
"MANAGED" : toastermain.settings.MANAGED,
|
||||||
|
"DEBUG" : toastermain.settings.DEBUG
|
||||||
}
|
}
|
||||||
if 'project_id' in request.session:
|
if 'project_id' in request.session:
|
||||||
try:
|
try:
|
||||||
@@ -2923,7 +2924,8 @@ else:
|
|||||||
def managedcontextprocessor(request):
|
def managedcontextprocessor(request):
|
||||||
return {
|
return {
|
||||||
"projects": [],
|
"projects": [],
|
||||||
"MANAGED" : toastermain.settings.MANAGED
|
"MANAGED" : toastermain.settings.MANAGED,
|
||||||
|
"DEBUG" : toastermain.settings.DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
def newproject(request):
|
def newproject(request):
|
||||||
|
|||||||
Reference in New Issue
Block a user