You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chukwa.apache.org by ey...@apache.org on 2009/03/31 00:37:36 UTC
svn commit: r760208 - in /hadoop/chukwa/trunk/src/web/hicc:
images/arrow_down.png images/arrow_right.png images/loading.gif
images/server_link.png js/flot.extend.js js/workspace/workspace.js
Author: eyang
Date: Mon Mar 30 22:37:36 2009
New Revision: 760208
URL: http://svn.apache.org/viewvc?rev=760208&view=rev
Log:
CHUKWA-14. Added permalink support to HICC GUI.
Added:
hadoop/chukwa/trunk/src/web/hicc/images/arrow_down.png (with props)
hadoop/chukwa/trunk/src/web/hicc/images/loading.gif (with props)
hadoop/chukwa/trunk/src/web/hicc/images/server_link.png (with props)
Modified:
hadoop/chukwa/trunk/src/web/hicc/images/arrow_right.png
hadoop/chukwa/trunk/src/web/hicc/js/flot.extend.js
hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js
Added: hadoop/chukwa/trunk/src/web/hicc/images/arrow_down.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/images/arrow_down.png?rev=760208&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/chukwa/trunk/src/web/hicc/images/arrow_down.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: hadoop/chukwa/trunk/src/web/hicc/images/arrow_right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/images/arrow_right.png?rev=760208&r1=760207&r2=760208&view=diff
==============================================================================
Binary files - no diff available.
Added: hadoop/chukwa/trunk/src/web/hicc/images/loading.gif
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/images/loading.gif?rev=760208&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/chukwa/trunk/src/web/hicc/images/loading.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: hadoop/chukwa/trunk/src/web/hicc/images/server_link.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/images/server_link.png?rev=760208&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/chukwa/trunk/src/web/hicc/images/server_link.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: hadoop/chukwa/trunk/src/web/hicc/js/flot.extend.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/js/flot.extend.js?rev=760208&r1=760207&r2=760208&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/js/flot.extend.js (original)
+++ hadoop/chukwa/trunk/src/web/hicc/js/flot.extend.js Mon Mar 30 22:37:36 2009
@@ -1,3 +1,5 @@
+var zoom=false;
+
function showTooltip(x, y, contents) {
if(x>document.body.clientWidth*.6) {
x=x-200;
@@ -16,12 +18,13 @@
}).appendTo("body").fadeIn(200);
}
-wholePeriod=function () {
+function wholePeriod() {
var cw = document.body.clientWidth-30;
- var ch = document.body.clientHeight-50;
+ var ch = height-$("#placeholderTitle").height()-10;
document.getElementById('placeholder').style.width=cw+'px';
document.getElementById('placeholder').style.height=ch+'px';
$.plot($("#placeholder"), _series, _options);
+ setIframeHeight(document.getElementById('boxId').value, height+$("#placeholderTitle").height()+$("#placeholderLegend").height());
};
options={
@@ -31,7 +34,7 @@
},
selection: { mode: "xy" },
grid: {
- hoverable: true,
+ hoverable: false,
clickable: true,
tickColor: "#C0C0C0",
backgroundColor:"#FFFFFF"
@@ -72,7 +75,8 @@
previousPoint = null;
}
});
- $("#placeholder").bind("selected", function (event, area) {
+ $("#placeholder").bind("selected", function (event, area) {
+ zoom = true;
plot = $.plot(
$("#placeholder"),
_series,
@@ -88,7 +92,6 @@
// addept iframe height to content height
function getDocHeight(doc) {
- alert("getDocHeight called!");
var docHt = 0, sh, oh;
if (doc.height) docHt = doc.height;
else if (doc.body) {
@@ -99,13 +102,34 @@
return docHt;
}
-function setIframeHeight(ifrm) {
+function setIframeHeight(ifrm, height) {
try {
frame = window.parent.document.getElementById(ifrm);
innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
objToResize = (frame.style) ? frame.style: frame;
- objToResize.height = innerDoc.body.scrollHeight;
+ if(height==0) {
+ objToResize.height = innerDoc.body.scrollHeight;
+ } else {
+ objToResize.height = height;
+ }
} catch(err) {
window.status = err.message;
}
}
+
+function refresh(url, parameters) {
+ if(zoom) {
+ wholePeriod();
+ zoom=false;
+ } else {
+ if(parameters.indexOf("render=stack")>0) {
+ throw "force iframe refresh";
+ }
+ var dataURL = url+"?"+parameters;
+ $.get(dataURL,{format: 'json'}, function(data){
+ eval(data);
+ wholePeriod();
+ document.getElementById('placeholderTitle').innerHTML=chartTitle;
+ });
+ }
+}
Modified: hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js?rev=760208&r1=760207&r2=760208&view=diff
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js (original)
+++ hadoop/chukwa/trunk/src/web/hicc/js/workspace/workspace.js Mon Mar 30 22:37:36 2009
@@ -21,18 +21,22 @@
function showView (request) {
_currentView.viewObj=request.responseText.evalJSON();
_currentView.createView();
- _currentView.pages[0].pageSelected();
+ _currentView.getCurrentPage().pageSelected();
}
portalView.prototype = {
- initialize: function(id) {
+ initialize: function(id,tab) {
// initialize values
this.baseURL='/hicc/Workspace';
this.id=id; // id of the view
this.pagesCount=0; // total number of pages
- this.currentPage=0; // current page id
+ if(tab) {
+ this.currentPage=tab; // current page id
+ } else {
+ this.currentPage=0; // current page id
+ }
this.pages=new Array(); // list of pages
this.description=''; // description of view
this.modified=0;
@@ -106,9 +110,8 @@
createView: function() {
if (this.viewObj != null) {
for (var j=0;j<this.viewObj.pages.length;j++) {
- this.currentPage=j;
// create a div
- page=this.addNewPage(this.viewObj.pages[this.currentPage].title, this.viewObj.pages[this.currentPage].columns, this.viewObj.pages[this.currentPage]);
+ page=this.addNewPage(this.viewObj.pages[j].title, this.viewObj.pages[j].columns, this.viewObj.pages[j]);
// page.setupPage();
}
}
@@ -260,9 +263,21 @@
this.pages[i].pageDeselected();
}
}
+ },
+
+ findPageByIndex: function(i) {
+ return this.pages[i].page_tag;
+ },
+
+ selectPageByIndex: function(i) {
+ this.selectPage(this.findPageByIndex(i));
}
}
+function set_current_page(i) {
+ setTimeout("_currentView.selectPage(_currentView.pages["+i+"].page_tag);",2000);
+}
+
function clickTab(evt) {
evt = (evt)?evt:((window.event)?window.event:"");
if (evt) {
@@ -377,7 +392,15 @@
},
getWidgetUrl: function() {
- return "/hicc/";
+ var url="/hicc/";
+ if(this.block_obj.module) {
+ if(this.block_obj.module.match(/^http:\/\//)) {
+ url=this.block_obj.module;
+ } else {
+ url=url+this.block_obj.module;
+ }
+ }
+ return url;
},
getConfigObj: function() {
@@ -414,6 +437,8 @@
content+='<tr><td>'+label+':<\/td><td>';
if (param.type=='string') {
content+='<input type="text" id="'+param_id+'" value="' + param.value + '" size="20" maxlength="255"\/>'
+ } else if (param.type=='text') {
+ content+='<textarea id="'+param_id+'" style="width: 300px; height: 100px">' + param.value + '</textarea>'
} else if (param.type=='checkbox') {
content+='<input type="checkbox" id="'+param_id+'" name="'+param_id+'" ' + ((param.value==1 || param.value == "on") ? "checked":"") + ' \/>'
} else if (param.type=='radio') {
@@ -578,6 +603,8 @@
}
if (param.type=='string') {
$(param_id).value=param.value;
+ } else if (param.type=='text') {
+ $(param_id).value=param.value;
} else if (param.type=='checkbox') {
$(param_id).checked=((param.value==1 || param.value == "on") ? 1:0);
} else if (param.type=='radio') {
@@ -740,6 +767,28 @@
textSpan = document.createElement('SPAN');
textSpan.innerHTML=' ';
ControlSpan.appendChild(textSpan);
+
+ var permaLink = document.createElement('A');
+ permaLink.id = 'permlink'+ this.pageid + "_" + this.boxIndex;
+ permaLink.style.border = '0';
+ permaLink.href = '';
+ permaLink.onmouseover = function() {
+ build_permlink(this.id);
+ }
+ ControlSpan.appendChild(permaLink);
+
+ image = document.createElement('IMG');
+ image.src = linkImage;
+ image.id = 'dragableBoxLink' + this.pageid+"_"+this.boxIndex;
+ image.style.border = '0';
+ image.style.visibility = 'hidden';
+ image.style.cursor = 'pointer';
+ image.setAttribute('alt','Permalink');
+ permaLink.appendChild(image);
+
+ textSpan = document.createElement('SPAN');
+ textSpan.innerHTML=' ';
+ ControlSpan.appendChild(textSpan);
image = document.createElement('IMG');
image.src = refreshImage;
@@ -835,20 +884,28 @@
},
reloadBoxData: function() {
-
this.showStatusBarMessage('<img src="/hicc/images/loading.gif">');
showHeader(this.pageid+"_"+this.boxIndex, 'visible');
var url=this.getWidgetUrl();
var parameters="";
- var d=new Date();
- if(this.block_obj.module) {
- if(this.block_obj.module.match(/^http:\/\//)) {
- url=this.block_obj.module;
- } else {
- url=this.getWidgetUrl()+this.block_obj.module;
- parameters=this.getParametersString()+"&_s="+(d.getTime());
+ var d=new Date();
+ parameters=this.getParametersString()+"&_s="+(d.getTime());
+ if(document.getElementById('iframe'+this.pageid+"_"+this.boxIndex)) {
+ var d = document.getElementById('iframe'+this.pageid+"_"+this.boxIndex);
+ try {
+ var new_url=url.replace(/iframe\//,"");
+ d.contentWindow.refresh(new_url, parameters);
+ var now=new Date();
+ $msg="<font style='font-size:9px;'>Updated: "+now.formatDate("H:i:s")+" </font>";
+ $('dragableBoxStatusBar'+this.pageid+"_"+this.boxIndex).innerHTML=$msg;
+ if($('dragableBoxRefreshSource'+this.pageid+"_"+this.boxIndex)) {
+ $('dragableBoxRefreshSource'+this.pageid+"_"+this.boxIndex).setAttribute('alt','Refresh Widget. '+$msg);
+ showHeader(this.pageid+"_"+this.boxIndex, 'hidden');
+ }
+ return false;
+ } catch(err) {
}
- }
+ }
var myAjax = new Ajax.Request(
url,
{ method: 'get',
@@ -859,10 +916,51 @@
}
}
+function build_permlink(id) {
+ current_date=new Date();
+ var current = current_date.getTime();
+ if(current-last_hover>2000) {
+ var origin="/hicc/index.jsp";
+ var pattern = /permlink(\d+)_(\d+)/;
+ var myArray = pattern.exec(id);
+ if(id) {
+ pageId=myArray[1];
+ boxId=myArray[2];
+ origin = _currentView.pages[pageId].dragableBoxesArray[boxId].getWidgetUrl()+"?"+_currentView.pages[pageId].dragableBoxesArray[boxId].getParametersString();
+ }
+ var regex = new RegExp(/\?/);
+ var delimit;
+ if(origin.match(regex)) {
+ delimit="&";
+ } else {
+ delimit="?";
+ }
+ if(id) {
+ var myAjax = new Ajax.Request('/hicc/jsp/permlink.jsp',
+ { method: 'get',
+ onSuccess: function(request) {
+ document.getElementById(id).href=origin+delimit+request.responseText;
+ last_hover=current;
+ }
+ });
+ } else {
+ var selected = _currentView.findPage(_currentView.getCurrentPage().page_tag);
+ var myAjax = new Ajax.Request('/hicc/jsp/permlink.jsp',
+ { method: 'get',
+ onSuccess: function(request) {
+ document.getElementById('permlink').href=origin+delimit+request.responseText+"&"+"_page="+selected;
+ last_hover=current;
+ }
+ });
+ }
+ }
+}
+
function showHeader(id, state) {
$('dragableBoxExpand' + id).style.visibility = state;
$('dragableBoxRefreshSource' + id).style.visibility = state;
$('dragableBoxEditSource' + id).style.visibility = state;
+ $('dragableBoxLink' + id).style.visibility = state;
$('dragableBoxCloseSource' + id).style.visibility = state;
$('dragableBoxStatusBar' + id).style.visibility = state;
}
@@ -1651,7 +1749,17 @@
this.dragableRuler[ruler.id]=new Draggable(ruler.id,{constraint:'horizontal',revert:moveRuler,
reverteffect: function(element, top_offset, left_offset) {
element._revert = new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: 0.001});
- }});
+ }, onDrag: function(element, draggable, event) {
+ if(navigator.userAgent.indexOf('Firefox')!=-1) {
+ var dh = getDocHeight(document)+500;
+ document.getElementById('firefox-bug').style.display='block';
+ document.getElementById('firefox-bug').style.height=dh+'px';
+ }
+ }, onEnd: function(element, draggable, event) {
+ if(navigator.userAgent.indexOf('Firefox')!=-1) {
+ document.getElementById('firefox-bug').style.display='none';
+ }
+ } });
var div = document.createElement('DIV');
columnWidth = 99 - sumWidth;
div.style.cssText = 'float:left;width:'+(columnWidth)+'%;padding:0px;margin:0px;';
@@ -1740,7 +1848,17 @@
this.dragableRuler[ruler.id]=new Draggable(ruler.id,{constraint:'horizontal',revert:moveRuler,
reverteffect: function(element, top_offset, left_offset) {
element._revert = new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: 0.001});
- }});
+ }, onDrag: function(element, draggable, event) {
+ if(navigator.userAgent.indexOf('Firefox')!=-1) {
+ var dh = getDocHeight(document)+500;
+ document.getElementById('firefox-bug').style.display='block';
+ document.getElementById('firefox-bug').style.height=dh+'px';
+ }
+ }, onEnd: function(element, draggable, event) {
+ if(navigator.userAgent.indexOf('Firefox')!=-1) {
+ document.getElementById('firefox-bug').style.display='none';
+ }
+ } });
}
}
@@ -1798,6 +1916,7 @@
}
function moveDragableElement(e) {
+
if(document.all)e = event;
if(dragDropCounter<10)return;
@@ -1840,6 +1959,11 @@
if(!okToMove)return;
okToMove = false;
+ if(navigator.userAgent.indexOf('Firefox')!=-1) {
+ var dh = getDocHeight(document)+500;
+ document.getElementById('firefox-bug').style.display='block';
+ document.getElementById('firefox-bug').style.height=dh+'px';
+ }
destinationObj = false;
rectangleDiv.style.display = 'none';
@@ -1913,6 +2037,9 @@
return;
}
dragDropCounter = -1;
+ if(navigator.userAgent.indexOf('Firefox')!=-1) {
+ document.getElementById('firefox-bug').style.display='none';
+ }
if(transparencyWhenDragging){
dragObject.style.filter = null;
dragObject.style.opacity = null;
@@ -1945,7 +2072,8 @@
destinationObj = false;
_currentView.setModified(1);
- documentHeight = getClientHeight();
+ documentHeight = getClientHeight();
+ _currentView.pages[idsplit[0]].dragableBoxesArray[idsplit[1]].reloadBoxData();
}
function cancelEvent() {
@@ -2793,10 +2921,11 @@
var dragObjectBorderWidth=1; // Border size of the RSS box
// images
-var rightArrowImage='/hicc/images/arrow_right.gif'; // for window open
-var downArrowImage='/hicc/images/arrow_down.gif'; // for window collpase
+var rightArrowImage='/hicc/images/arrow_right.png'; // for window open
+var downArrowImage='/hicc/images/arrow_down.png'; // for window collpase
var refreshImage='/hicc/images/refresh.png'; // refresh window
-var editImage='/hicc/images/info.png'; // edit window
+var linkImage='/hicc/images/server_link.png'; // permalink
+var editImage='/hicc/images/info.png'; // edit window
var closeImage='/hicc/images/close.png'; // close window
var smallRightArrow='/hicc/images/small_arrow.gif'; // for individual item inside window
@@ -2822,7 +2951,7 @@
}
// initialize the window
-function initScript(view_id) {
+function initScript(view_id,page) {
resetAll();
if (view_id == '') {
view_id='default';
@@ -2830,7 +2959,7 @@
//create view
_currentViewId=view_id;
- _currentView=new portalView(view_id);
+ _currentView=new portalView(view_id,page);
rectangleDiv=$('rectangleDiv');
}
@@ -3157,3 +3286,14 @@
}
}
+function getDocHeight(doc) {
+ var docHt = 0, sh, oh;
+ if (doc.height) docHt = doc.height;
+ else if (doc.body) {
+ if (doc.body.scrollHeight) docHt = sh = doc.body.scrollHeight;
+ if (doc.body.offsetHeight) docHt = oh = doc.body.offsetHeight;
+ if (sh && oh) docHt = Math.max(sh, oh);
+ }
+ return docHt;
+}
+