mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
- Removes old/dead files - Refactors file path/location, backward compatible to filepaths in systemvm.isoa - Fixes failures around apache2
338 lines
8.0 KiB
JavaScript
338 lines
8.0 KiB
JavaScript
/*
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
*/
|
|
|
|
// Version: 1.9.1.152
|
|
|
|
//
|
|
// Javascript logger utility
|
|
// Author
|
|
// Kelven Yang
|
|
// 2/25/2010
|
|
//
|
|
|
|
function Logger() {
|
|
this.bDockEnabled = true;
|
|
|
|
this.logWin = null;
|
|
this.logger = null;
|
|
this.header = null;
|
|
|
|
this.bEnabled = true;
|
|
this.level = 0;
|
|
|
|
this.bMoving = false;
|
|
this.offsetStart = {left: 0, top: 0};
|
|
this.ptStart = {x: 0, y: 0};
|
|
}
|
|
|
|
Logger.DEFAULT_WIN_HEIGHT = 500;
|
|
Logger.LEVEL_TRACE = 0;
|
|
Logger.LEVEL_DEBUG = 1;
|
|
Logger.LEVEL_INFO = 2;
|
|
Logger.LEVEL_WARN = 3;
|
|
Logger.LEVEL_ERROR = 4;
|
|
Logger.LEVEL_FATAL = 5;
|
|
Logger.LEVEL_SYS = 100;
|
|
|
|
Logger.prototype = {
|
|
|
|
open: function() {
|
|
if(this.logWin) {
|
|
this.logWin.show();
|
|
|
|
this.log(Logger.LEVEL_SYS, "Logger is open in browser: " + this.objectToString($.browser));
|
|
return;
|
|
}
|
|
|
|
var logger = this;
|
|
var logWinMarkup = [
|
|
'<div class="logwin">',
|
|
'<div class="logwin_title">',
|
|
'<div class="logwin_title_actionbox">',
|
|
'<a class="logwin_playbutton" href="#" cmd="1"></a>',
|
|
'<a class="logwin_stopbutton" href="#" cmd="2"></a>',
|
|
'<a class="logwin_clrbutton" href="#" cmd="3"></a>',
|
|
'<form action="#">',
|
|
'<select class="select" id="template_type">',
|
|
'<option value="0">TRACE</option>',
|
|
'<option value="1">DEBUG</option>',
|
|
'<option value="2">INFO</option>',
|
|
'<option value="3">WARN</option>',
|
|
'<option value="4">ERROR</option>',
|
|
'<option value="5">FATAL</option>',
|
|
'</select>',
|
|
'</form>',
|
|
'</div>',
|
|
'<div class="logwin_title_rgtactionbox">',
|
|
'<a class="logwin_minimizebutton" href="#" cmd="4"></a>',
|
|
'<a class="logwin_shrinkbutton" href="#" cmd="5"></a>',
|
|
'</div>',
|
|
'</div>',
|
|
'<div class="logwin_content"></div>',
|
|
'</div>'
|
|
].join('');
|
|
|
|
this.logWin = $(logWinMarkup).appendTo(document.body);
|
|
this.header = $('.logwin_title:first', this.logWin);
|
|
this.logger = $('.logwin_content:first', this.logWin);
|
|
|
|
$(".logwin_title", this.logWin).mousedown(function(e) {
|
|
if($(e.target).attr('cmd'))
|
|
return true;
|
|
|
|
if(!logger.bMoving) {
|
|
logger.bMoving = true;
|
|
logger.offsetStart = logger.logWin.offset();
|
|
logger.ptStart = {x: e.pageX, y: e.pageY};
|
|
|
|
$(document).bind("mousemove", function(e) {
|
|
if(logger.bMoving) {
|
|
logger.enableDocking(false);
|
|
|
|
var logWinNewLeft = logger.offsetStart.left + e.pageX - logger.ptStart.x;
|
|
var logWinNewTop = logger.offsetStart.top + e.pageY - logger.ptStart.y;
|
|
|
|
logger.logWin.css("left", logWinNewLeft + "px").css("top", logWinNewTop + "px");
|
|
}
|
|
return false;
|
|
});
|
|
|
|
$(document).bind("mouseup", function(e) {
|
|
if(logger.bMoving) {
|
|
logger.bMoving = false;
|
|
$(document).unbind("mousemove", arguments.callee.name);
|
|
$(document).unbind("mouseup", arguments.callee.name);
|
|
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
}
|
|
|
|
// prevent default handling
|
|
return false;
|
|
}).dblclick(function(e) {
|
|
logger.expand(!logger.isExpanded());
|
|
});
|
|
|
|
this.logWin.click(function(e) {
|
|
if($(e.target).attr('cmd')) {
|
|
switch($(e.target).attr('cmd')) {
|
|
case '1' :
|
|
logger.enable(true);
|
|
break;
|
|
|
|
case '2' :
|
|
logger.enable(false);
|
|
break;
|
|
|
|
case '3' :
|
|
logger.clear();
|
|
break;
|
|
|
|
case '4' :
|
|
logger.enableDocking(true);
|
|
logger.dockIn();
|
|
break;
|
|
|
|
case '5' :
|
|
logger.expand(!logger.isExpanded());
|
|
break;
|
|
|
|
default :
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
|
|
$("#template_type", this.logWin).change(function(e) {
|
|
logger.setLevel(parseInt($(this).val()));
|
|
});
|
|
|
|
this.logWin.css("left", (($(document.body).width() - this.logWin.width()) / 2) + "px");
|
|
this.dockIn();
|
|
|
|
this.log(Logger.LEVEL_SYS, "Logger is open in browser: " + this.objectToString($.browser));
|
|
},
|
|
|
|
close: function() {
|
|
if(this.logWin)
|
|
this.logWin.hide();
|
|
},
|
|
|
|
isOpen: function() {
|
|
if(this.logWin)
|
|
return this.logWin.is(":visible");
|
|
return false;
|
|
},
|
|
|
|
dockIn: function() {
|
|
var logger = this;
|
|
var offset = this.logWin.offset();
|
|
var bottom = offset.top + this.logWin.height();
|
|
var delta = bottom - 2;
|
|
|
|
this.logWin.animate({top: (offset.top - delta) + "px"}, 200,
|
|
function() {
|
|
logger.logWin.unbind("mouseleave");
|
|
logger.logWin.bind("mouseenter", function(e) {
|
|
if(logger.bDockEnabled)
|
|
logger.dockOut();
|
|
});
|
|
}
|
|
);
|
|
},
|
|
|
|
dockOut: function() {
|
|
var logger = this;
|
|
this.logWin.animate({top: "0px"}, 200,
|
|
function() {
|
|
logger.logWin.unbind("mouseenter");
|
|
logger.logWin.bind("mouseleave", function(e) {
|
|
if(logger.bDockEnabled) {
|
|
var xPosInLogWin = e.pageX - logger.logWin.offset().left;
|
|
var yPosInLogWin = e.pageY - logger.logWin.offset().top;
|
|
|
|
if(xPosInLogWin < 0 || yPosInLogWin < 0 ||
|
|
xPosInLogWin > logger.logWin.width() || yPosInLogWin > logger.logWin.height()) {
|
|
logger.dockIn();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
);
|
|
},
|
|
|
|
enableDocking: function(bEnable) {
|
|
this.bDockEnabled = bEnable;
|
|
},
|
|
|
|
log: function(level, message) {
|
|
// Note : LEVEL_SYS message will always be logged
|
|
if(this.logger && (level == Logger.LEVEL_SYS || this.bEnabled && level >= this.level)) {
|
|
var curTime = new Date();
|
|
var curTimeString = [
|
|
'', curTime.getMonth(),
|
|
'/', curTime.getDate(),
|
|
'/', curTime.getYear(),
|
|
' ',
|
|
curTime.getHours(),
|
|
':', curTime.getMinutes(),
|
|
":", curTime.getSeconds(),
|
|
".", curTime.getMilliseconds()].join('');
|
|
|
|
this.logger.append(this.getLevelDisplayString(level) + " - " + curTimeString + " - " + message + '<br>');
|
|
}
|
|
},
|
|
|
|
clear: function() {
|
|
if(this.logger) {
|
|
this.logger.empty();
|
|
this.log(Logger.LEVEL_SYS, "Logger is cleared");
|
|
}
|
|
},
|
|
|
|
setLevel: function(level) {
|
|
this.level = level;
|
|
|
|
this.log(Logger.LEVEL_SYS, "Set logger trace level to " + this.getLevelDisplayString(level));
|
|
},
|
|
|
|
enable: function(bEnabled) {
|
|
this.bEnabled = bEnabled;
|
|
|
|
if(bEnabled)
|
|
this.log(Logger.LEVEL_SYS, "Logger is enabled");
|
|
else
|
|
this.log(Logger.LEVEL_SYS, "Logger is disabled");
|
|
},
|
|
|
|
expand: function(bExpand) {
|
|
if(bExpand) {
|
|
this.logWin.height(Logger.DEFAULT_WIN_HEIGHT);
|
|
this.logger.height(Logger.DEFAULT_WIN_HEIGHT - this.header.height());
|
|
} else {
|
|
this.logWin.height(this.header.height());
|
|
this.logger.height(0);
|
|
}
|
|
},
|
|
|
|
isExpanded: function() {
|
|
return this.logWin.height() > this.header.height();
|
|
},
|
|
|
|
getLevelDisplayString: function(level) {
|
|
switch(level) {
|
|
case Logger.LEVEL_TRACE :
|
|
return "TRACE";
|
|
|
|
case Logger.LEVEL_DEBUG :
|
|
return "DEBUG";
|
|
|
|
case Logger.LEVEL_INFO :
|
|
return "INFO";
|
|
|
|
case Logger.LEVEL_WARN :
|
|
return "WARN";
|
|
|
|
case Logger.LEVEL_ERROR :
|
|
return "ERROR";
|
|
|
|
case Logger.LEVEL_FATAL :
|
|
return "FATAL";
|
|
|
|
case Logger.LEVEL_SYS :
|
|
return "SYSINFO";
|
|
}
|
|
|
|
return "LEVEL " + level;
|
|
},
|
|
|
|
// this is a util function which actually can be put elsewhere instead of in this class
|
|
objectToString : function(object) {
|
|
if(object) {
|
|
if(object instanceof Object) {
|
|
var sb = ['{' ];
|
|
|
|
$.each(object, function(name, val) {
|
|
sb.push('' + name + ': ');
|
|
|
|
if(val instanceof Object) {
|
|
sb.push(this.objectToString(val));
|
|
} else {
|
|
sb.push('' + val);
|
|
}
|
|
|
|
sb.push(',');
|
|
});
|
|
|
|
if(sb[sb.length - 1] == ',' )
|
|
sb.length = sb.length - 1;
|
|
|
|
sb.push('}');
|
|
return sb.join("");
|
|
} else {
|
|
return '' + object;
|
|
}
|
|
} else {
|
|
return 'label.na';
|
|
}
|
|
}
|
|
};
|