34 var ViewerRoot = ViewerRoot || {};
41 ViewerRoot.launch =
function() {
43 Debug.log(
"ViewerRoot.launch");
45 document.getElementById(
"omni").innerHTML =
"<div id='omniHistogramViewer'></div>";
46 ViewerRoot.omni = document.getElementById(
"omniHistogramViewer");
49 var w = ViewerRoot.w = window.innerWidth;
50 var h = ViewerRoot.h = window.innerHeight;
52 ViewerRoot.omni.style.position =
"absolute";
53 ViewerRoot.omni.style.left = 0 +
"px";
54 ViewerRoot.omni.style.top = 0 +
"px";
55 ViewerRoot.omni.style.width = w +
"px";
56 ViewerRoot.omni.style.height = h +
"px";
57 ViewerRoot.omni.style.backgroundColor =
"rgb(30,30,30)";
59 ViewerRoot.omni.innerHTML =
"<center><div id='loaderStatus' style='margin-top:" + (h/2-8) +
"px'>Loading Root Viewer...</div></center>";
66 loadScript(source_dir+
'ViewerRootHud.js',
function(){
67 loadScript(source_dir+
'JsRoot/scripts/JSRootCore.js',
function(){
68 JSROOT.AssertPrerequisites(
'2d;io;3d;',ViewerRoot.init);
95 var source_dir =
"/WebPath/js/visualizers_lib/ViewerRoot_lib/";
104 ViewerRoot.STREAMER_INFO_FILE_PATH =
"/WebPath/js/visualizers_lib/ViewerRoot_lib/streamerInfo.root";
106 ViewerRoot.LOAD_STREAMER_INFO_CHECK_PERIOD = 100;
107 ViewerRoot.DISPLAY_MIN_WIDTH = 450;
108 ViewerRoot.DISPLAY_MIN_HEIGHT = 300;
109 ViewerRoot.HUD_WIDTH = 300;
110 ViewerRoot.HUD_MARGIN_RIGHT = 0;
111 ViewerRoot.HUD_DROP_DOWN_SPEED = 40;
112 ViewerRoot.ROOT_CONTAINER_OFFY = 20;
113 ViewerRoot.ROOT_HEADER_HEIGHT = 20;
115 ViewerRoot.TILE_MODE = 0;
116 ViewerRoot.REPLACE_MODE = 1;
117 ViewerRoot.SUPERIMPOSE_MODE = 2;
119 ViewerRoot.ADMIN_PERMISSIONS_THRESHOLD = 1;
120 ViewerRoot.userPermissions = 0;
123 ViewerRoot.rootContainer;
127 ViewerRoot.rootElArr;
128 ViewerRoot.rootPosArr;
129 ViewerRoot.rootObjArr;
130 ViewerRoot.rootObjIndexArr;
131 ViewerRoot.rootHeaderElArr;
132 ViewerRoot.rootObjNameArr;
133 ViewerRoot.rootIsTransparentArr;
134 ViewerRoot.rootIsAutoRefreshArr;
136 ViewerRoot.numPositionsTiled;
137 ViewerRoot.rootTargetIndex;
142 ViewerRoot.hudAutoHide =
false;
143 ViewerRoot.nextObjectMode = 1;
144 ViewerRoot.clearEachRequest =
true;
145 ViewerRoot.autoRefreshDefault =
false;
146 ViewerRoot.autoRefreshPeriod = 1000;
147 ViewerRoot.pauseRefresh =
false;
148 ViewerRoot.hardRefresh =
true;
150 ViewerRoot.autoRefreshTimer = 0;
153 ViewerRoot.iterLoading =
false;
154 ViewerRoot.iterNumberRemaining;
155 ViewerRoot.iterNumPositionsTiled;
156 ViewerRoot.iterRunWildcard;
157 ViewerRoot.iterRootObjNameArr;
158 ViewerRoot.iterRootPosArr;
159 ViewerRoot.iterRootIsTransparentArr;
160 ViewerRoot.iterRootIsAutoRefreshArr;
161 ViewerRoot.iterSaveNextObjectMode;
162 ViewerRoot.iterSaveAutoRefreshDefault;
188 ViewerRoot.init =
function() {
189 Debug.log(
"ViewerRoot.init");
193 ViewerRoot.rootElArr = [];
194 ViewerRoot.rootPosArr = [];
195 ViewerRoot.rootObjArr = [];
196 ViewerRoot.rootObjIndexArr = [];
197 ViewerRoot.rootObjNameArr = [];
198 ViewerRoot.rootObjTitleArr = [];
199 ViewerRoot.rootHeaderElArr = [];
200 ViewerRoot.rootIsTransparentArr = [];
201 ViewerRoot.rootIsAutoRefreshArr = [];
203 ViewerRoot.numPositionsTiled = 0;
204 ViewerRoot.rootTargetIndex = -1;
206 obj_list =
new Array();
207 ViewerRoot.objIndex = 0;
209 function_list =
new Array();
210 func_list =
new Array();
215 ViewerRoot.rootContainer = document.createElement(
'div');
216 ViewerRoot.rootContainer.setAttribute(
"id",
"reportContainer");
217 ViewerRoot.rootContainer.onmouseup =
function(){
218 Debug.log(
"Deselect all root containers");
219 ViewerRoot.rootTargetIndex = -1;
220 ViewerRoot.resizeRootObjects();
222 ViewerRoot.omni.appendChild(ViewerRoot.rootContainer);
224 ViewerRoot.hud =
new ViewerRoot.createHud();
225 window.onresize = ViewerRoot.handleWindowResize;
226 ViewerRoot.handleWindowResize();
228 ViewerRoot.autoRefreshTimer = window.setInterval(ViewerRoot.autoRefreshTick,
229 ViewerRoot.autoRefreshPeriod);
231 document.getElementById(
"loaderStatus").innerHTML =
"Root Viewer Loaded.<br>Use drop-down to make selections.";
232 ViewerRoot.getDirectoryContents(
"/");
235 ViewerRoot.autoRefreshMatchArr = [];
243 ViewerRoot.autoRefreshTick =
function() {
246 if(ViewerRoot.pauseRefresh)
return;
248 if(ViewerRoot.autoRefreshMatchArr.length)
250 Debug.log(
"ViewerRoot autoRefreshTick not done yet! Refresh period too short.");
254 ViewerRoot.autoRefreshMatchArr = [];
255 for(var j=0;j<ViewerRoot.rootPosArr.length;++j)
256 if(ViewerRoot.rootIsAutoRefreshArr[j])
259 ViewerRoot.autoRefreshMatchArr.push([j, ViewerRoot.rootObjNameArr[j]]);
260 ViewerRoot.rootReq(ViewerRoot.rootObjNameArr[j]);
269 ViewerRoot.prepareNextLocation =
function(objName, objTitle) {
270 Debug.log(
"ViewerRoot prepareNextLocation for ViewerRoot.objIndex " +
"mode " + ViewerRoot.nextObjectMode +
271 ": " + ViewerRoot.objIndex +
": " + objName);
274 if(ViewerRoot.rootTargetIndex > ViewerRoot.numPositionsTiled) ViewerRoot.rootTargetIndex = -1;
277 var ri = ViewerRoot.rootElArr.length;
278 ViewerRoot.rootElArr.push(document.createElement(
'div'));
279 ViewerRoot.rootElArr[ri].setAttribute(
"class",
"rootObjectContainer");
281 var tmpdiv = document.createElement(
'div');
282 tmpdiv.setAttribute(
"id",
"histogram"+ViewerRoot.objIndex);
283 tmpdiv.setAttribute(
"class",
"rootObjectContainerTarget");
284 ViewerRoot.rootElArr[ri].appendChild(tmpdiv);
287 ViewerRoot.rootContainer.appendChild(ViewerRoot.rootElArr[ri]);
289 var drawTransparently =
false;
290 if(!ViewerRoot.numPositionsTiled || ViewerRoot.nextObjectMode == ViewerRoot.TILE_MODE)
293 ViewerRoot.rootPosArr.push(ViewerRoot.numPositionsTiled++);
295 else if(ViewerRoot.nextObjectMode == ViewerRoot.REPLACE_MODE)
298 var repi = ViewerRoot.rootTargetIndex == -1? ViewerRoot.numPositionsTiled-1:ViewerRoot.rootTargetIndex;
299 ViewerRoot.removeAllAtPosition(repi);
301 ViewerRoot.rootPosArr.push(repi);
303 else if(ViewerRoot.nextObjectMode == ViewerRoot.SUPERIMPOSE_MODE)
306 var supi = ViewerRoot.rootTargetIndex == -1? ViewerRoot.numPositionsTiled-1:ViewerRoot.rootTargetIndex;
308 ViewerRoot.rootPosArr.push(supi);
309 drawTransparently =
true;
312 ViewerRoot.rootIsTransparentArr.push(drawTransparently);
313 ViewerRoot.rootIsAutoRefreshArr.push(ViewerRoot.autoRefreshDefault);
314 ViewerRoot.rootObjNameArr.push(objName);
315 ViewerRoot.rootObjTitleArr.push(objTitle);
317 ViewerRoot.manageRootHeaders();
318 ViewerRoot.resizeRootObjects(
true);
326 ViewerRoot.removeAllAtPosition =
function(posi, isClosingPosition) {
327 Debug.log(
"ViewerRoot removeAllAtPosition " + posi);
329 for(var i=0;i<ViewerRoot.rootPosArr.length;++i)
330 if(ViewerRoot.rootPosArr[i] == posi)
332 ViewerRoot.rootElArr[i].parentNode.removeChild(ViewerRoot.rootElArr[i]);
333 ViewerRoot.rootElArr.splice(i,1);
334 ViewerRoot.rootPosArr.splice(i,1);
335 delete ViewerRoot.rootObjArr[i]; ViewerRoot.rootObjArr[i] = null;
336 ViewerRoot.rootObjArr.splice(i,1);
337 ViewerRoot.rootObjIndexArr.splice(i,1);
338 ViewerRoot.rootObjNameArr.splice(i,1);
339 ViewerRoot.rootObjTitleArr.splice(i,1);
340 ViewerRoot.rootIsTransparentArr.splice(i,1);
341 ViewerRoot.rootIsAutoRefreshArr.splice(i,1);
345 else if(isClosingPosition && ViewerRoot.rootPosArr[i] > posi)
346 --ViewerRoot.rootPosArr[i];
348 if(isClosingPosition)
350 --ViewerRoot.numPositionsTiled;
351 ViewerRoot.manageRootHeaders();
352 if(ViewerRoot.rootTargetIndex > posi) --ViewerRoot.rootTargetIndex;
353 else if(ViewerRoot.rootTargetIndex >= ViewerRoot.numPositionsTiled) ViewerRoot.rootTargetIndex = -1;
354 ViewerRoot.resizeRootObjects(
true);
360 ViewerRoot.manageRootHeaders =
function() {
361 Debug.log(
"ViewerRoot manageRootHeaders");
364 while(ViewerRoot.numPositionsTiled > ViewerRoot.rootHeaderElArr.length)
366 tmpdiv = document.createElement(
'div');
367 tmpdiv.setAttribute(
"id",
"rootContainerHeader-"+ViewerRoot.rootHeaderElArr.length);
368 tmpdiv.setAttribute(
"class",
"rootContainerHeader");
369 tmpdiv.onmouseup = ViewerRoot.handleRootPositionSelect;
370 ViewerRoot.rootContainer.appendChild(tmpdiv);
371 ViewerRoot.rootHeaderElArr.push(tmpdiv);
374 while(ViewerRoot.numPositionsTiled < ViewerRoot.rootHeaderElArr.length)
376 tmpdiv = ViewerRoot.rootHeaderElArr[ViewerRoot.rootHeaderElArr.length-1];
377 tmpdiv.parentNode.removeChild(tmpdiv);
378 ViewerRoot.rootHeaderElArr.splice(ViewerRoot.rootHeaderElArr.length-1,1);
385 var isAtLeastOneRefreshing;
386 for(var i=0;i<ViewerRoot.rootHeaderElArr.length;++i)
389 isAtLeastOneRefreshing =
false;
390 for(var j=0;j<ViewerRoot.rootPosArr.length;++j)
391 if(ViewerRoot.rootPosArr[j] == i) { ++found; fullPath = ViewerRoot.rootObjNameArr[j];
393 name=ViewerRoot.rootObjTitleArr[j];
394 if(ViewerRoot.rootIsAutoRefreshArr[j]) isAtLeastOneRefreshing =
true;
400 str +=
"<div title='" + fullPath +
"' class='rootContainerHeader-name'>" + (found == 1?name:
"Multiple Files...") +
"</div>";
403 str +=
"<a title='Close' href='Javascript:ViewerRoot.removeAllAtPosition("+i+
",true);' onmouseup='event.cancelBubble=true;' " +
404 "class='rootContainerHeader-closeBtn'>X</a>";
410 str +=
"<a title='Close' href='Javascript:ViewerRoot.toggleAllAtPositionAutoRefresh(" + i +
411 ");' onmouseup='event.cancelBubble=true;' " +
412 "class='rootContainerHeader-refreshBtn'><img id='rootContainerHeaderRefreshImg" + i +
413 "'src='/WebPath/images/iconImages/icon-rootAutoRefresh" + (isAtLeastOneRefreshing?
"On":
"Off") +
".png'></a>";
422 ViewerRoot.rootHeaderElArr[i].innerHTML = str;
431 ViewerRoot.toggleAllAtPositionAutoRefresh =
function(i)
433 Debug.log(
"ViewerRoot toggleAllAtPositionAutoRefresh " + i);
439 for(var j=0;j<ViewerRoot.rootPosArr.length;++j)
440 if(ViewerRoot.rootPosArr[j] == i)
442 if(!doover && ViewerRoot.rootIsAutoRefreshArr[j]) v =
false;
443 ViewerRoot.rootIsAutoRefreshArr[j] = v;
445 Debug.log(
"ViewerRoot toggleAllAtPositionAutoRefresh rootObj " + j +
" to " + v);
447 var tmp = document.getElementById(
"rootContainerHeaderRefreshImg" + i );
448 tmp.src =
"/WebPath/images/iconImages/icon-rootAutoRefresh" + (v?
"On":
"Off") +
".png";
449 if(lastv != v ){++found; lastv = v;}
451 if(!doover && found>1) doover =
true;
458 ViewerRoot.handleRootPositionSelect =
function(event) {
459 event.cancelBubble =
true;
460 var i = parseInt(this.
id.substr(this.
id.indexOf(
"-")+1))
461 Debug.log("ViewerRoot handleRootPositionSelect " + i);
462 ViewerRoot.rootTargetIndex = i;
463 ViewerRoot.resizeRootObjects();
468 ViewerRoot.clearAll = function() {
469 Debug.log(
"ViewerRoot clearAll");
471 ViewerRoot.rootTargetIndex = -1;
473 for(ViewerRoot.numPositionsTiled; ViewerRoot.numPositionsTiled>0; --ViewerRoot.numPositionsTiled)
474 ViewerRoot.removeAllAtPosition(ViewerRoot.numPositionsTiled-1);
475 ViewerRoot.manageRootHeaders();
476 ViewerRoot.resizeRootObjects();
480 ViewerRoot.handleWindowResize =
function() {
482 var w = ViewerRoot.w = window.innerWidth < ViewerRoot.DISPLAY_MIN_WIDTH? ViewerRoot.DISPLAY_MIN_WIDTH:window.innerWidth;
483 var h = ViewerRoot.h = window.innerHeight < ViewerRoot.DISPLAY_MIN_HEIGHT? ViewerRoot.DISPLAY_MIN_HEIGHT:window.innerHeight;
485 if(!ViewerRoot.hudAutoHide)
486 ViewerRoot.w = w -= ViewerRoot.HUD_WIDTH + ViewerRoot.HUD_MARGIN_RIGHT + (5*2);
488 Debug.log(
"ViewerRoot handleWindowResize " + w +
"-" + h);
490 ViewerRoot.omni.style.width = w +
"px";
491 ViewerRoot.omni.style.height = h +
"px";
493 ViewerRoot.hud.handleWindowResize();
494 ViewerRoot.resizeRootObjects(
true);
503 ViewerRoot.resizeRootObjects =
function(needToRedraw) {
505 ViewerRoot.rootContainer.style.width = ViewerRoot.w +
"px";
506 ViewerRoot.rootContainer.style.height = ViewerRoot.h +
"px";
508 if(ViewerRoot.numPositionsTiled < 1)
510 ViewerRoot.rootContainer.style.backgroundColor =
"rgba(0,0,0,0)";
513 ViewerRoot.rootContainer.style.backgroundColor =
"white";
516 var w = ViewerRoot.w;
517 var h = ViewerRoot.h - ViewerRoot.ROOT_CONTAINER_OFFY;
520 var r = Math.round(Math.sqrt(h*ViewerRoot.numPositionsTiled/aspect/w));
522 var c = Math.ceil(ViewerRoot.numPositionsTiled/r);
524 Debug.log(
"ViewerRoot resizeRootObjects " + r +
"-" + c +
" for " + ViewerRoot.numPositionsTiled);
530 Debug.log(
"ViewerRoot resizeRootObjects size " + w +
"-" + h );
533 var rootAspect = 3/4;
534 var rootw = h/w < rootAspect?h/rootAspect:w;
537 for(var i=0;i<ViewerRoot.rootElArr.length;++i)
539 ViewerRoot.rootElArr[i].style.width = rootw +
"px";
540 ViewerRoot.rootElArr[i].style.height = (h - ViewerRoot.ROOT_HEADER_HEIGHT) +
"px";
541 ViewerRoot.rootElArr[i].style.left = w*(ViewerRoot.rootPosArr[i]%c) + (w-rootw)/2 +
"px";
542 ViewerRoot.rootElArr[i].style.top = ViewerRoot.ROOT_CONTAINER_OFFY + ViewerRoot.ROOT_HEADER_HEIGHT +
543 h*Math.floor(ViewerRoot.rootPosArr[i]/c) +
"px";
548 if(needToRedraw && ViewerRoot.rootObjArr[i])
552 JSROOT.redraw(
'histogram'+
553 ViewerRoot.rootObjIndexArr[i],
554 ViewerRoot.rootObjArr[i],
"colz");
555 ViewerRoot.refreshTransparency(i);
560 for(var i=0;i<ViewerRoot.rootHeaderElArr.length;++i)
562 ViewerRoot.rootHeaderElArr[i].style.width = w-2 +
"px";
563 ViewerRoot.rootHeaderElArr[i].style.height = ViewerRoot.ROOT_HEADER_HEIGHT +
"px";
564 ViewerRoot.rootHeaderElArr[i].style.left = w*(i%c) +
"px";
565 ViewerRoot.rootHeaderElArr[i].style.top = ViewerRoot.ROOT_CONTAINER_OFFY + h*Math.floor(i/c) +
"px";
567 ViewerRoot.rootHeaderElArr[i].style.borderColor =
568 ViewerRoot.rootTargetIndex==i?
'rgb(68,156,44)':
'black';
569 ViewerRoot.rootHeaderElArr[i].style.backgroundColor =
570 ViewerRoot.rootTargetIndex==i?
'rgb(178,222,166)':
'rgba(0,0,0,0)';
576 ViewerRoot.refreshTransparency =
function(i) {
578 if(ViewerRoot.rootIsTransparentArr[i])
582 ViewerRoot.rootElArr[i].children[0].style.backgroundColor =
"rgba(0,0,0,0)";
584 var svg = ViewerRoot.rootElArr[i].children[0].getElementsByTagName(
'svg')[0];
585 svg.style.backgroundColor =
"rgba(0,0,0,0)";
587 if(svg.getElementsByTagName(
'rect')[0])
588 svg.getElementsByTagName(
'rect')[0].style.fill =
"rgba(0,0,0,0)";
602 ViewerRoot.checkStreamerInfoLoaded =
function() {
603 if(ViewerRoot.sFile &&
604 ViewerRoot.sFile.fStreamerInfo &&
605 gFile.fStreamerInfo.fClassMap &&
606 gFile.fStreamerInfo.fClassMap.length > 0)
608 document.getElementById(
"loaderStatus").innerHTML =
"Root Viewer Loaded.<br>Use drop-down to make selections.";
609 ViewerRoot.getDirectoryContents(
"/");
612 window.setTimeout(ViewerRoot.checkStreamerInfoLoaded,ViewerRoot.LOAD_STREAMER_INFO_CHECK_PERIOD);
617 ViewerRoot.getDirectoryContents =
function(path) {
619 Debug.log(
"ViewerRoot getDirectoryContents " + path);
621 if(path.indexOf(
".root/") >=0)
622 DesktopContent.XMLHttpRequest(
"Request?RequestType=getRoot",
"RootPath="+path, ViewerRoot.getDirContentsHandler);
624 DesktopContent.XMLHttpRequest(
"Request?RequestType=getDirectoryContents",
"Path="+path, ViewerRoot.getDirContentsHandler);
628 ViewerRoot.getDirContentsHandler =
function(req) {
629 Debug.log(
"ViewerRoot getDirContentsHandler " + req.responseText);
631 var permissions = DesktopContent.getXMLValue(req,
'permissions');
633 Debug.log(
"ViewerRoot getDirContentsHandler permissions missing");
634 else if(ViewerRoot.userPermissions != permissions)
636 Debug.log(
"ViewerRoot getDirContentsHandler user permissions = " + permissions);
637 ViewerRoot.userPermissions = permissions;
638 ViewerRoot.hud.handleWindowResize();
641 ViewerRoot.hud.handleDirContents(req);
646 ViewerRoot.rootReq =
function(rootPath) {
648 Debug.log(
"ViewerRoot.rootReq " + rootPath );
649 DesktopContent.XMLHttpRequest(
"Request?RequestType=getRoot",
"RootPath="+rootPath,
651 ViewerRoot.getRootDataHandler);
655 ViewerRoot.rootConfigReq =
function(rootConfigPath) {
657 DesktopContent.XMLHttpRequest(
"Request?RequestType=getRootConfig",
"RootConfigPath="+rootConfigPath,
658 ViewerRoot.getRootConfigHandler);
663 ViewerRoot.getRootConfigHandler =
function(req) {
664 Debug.log(
"ViewerRoot getRootConfigHandler " + req.responseText );
666 var status = DesktopContent.getXMLValue(req,
"status");
668 { alert(
"Loading Root Pre-Made Configuration Failed: " + status);
return }
670 ViewerRoot.iterNumPositionsTiled = DesktopContent.getXMLValue(req,
"numPositionsTiled");
671 ViewerRoot.iterRunWildcard = DesktopContent.getXMLValue(req,
"runNumWildcard");
675 var tmp = req.responseXML.getElementsByTagName(
"rootObjName");
676 ViewerRoot.iterRootObjNameArr = [];
677 for(var i=0;i<tmp.length;++i) ViewerRoot.iterRootObjNameArr[i] = tmp[i].getAttribute(
"value");
679 tmp = req.responseXML.getElementsByTagName(
"rootPos");
680 ViewerRoot.iterRootPosArr = [];
681 for(var i=0;i<tmp.length;++i) ViewerRoot.iterRootPosArr[i] = tmp[i].getAttribute(
"value") | 0;
683 tmp = req.responseXML.getElementsByTagName(
"rootIsTransparent");
684 ViewerRoot.iterRootIsTransparentArr = [];
685 for(var i=0;i<tmp.length;++i) ViewerRoot.iterRootIsTransparentArr[i] = tmp[i].getAttribute(
"value") | 0;
687 tmp = req.responseXML.getElementsByTagName(
"rootIsAutoRefresh");
688 ViewerRoot.iterRootIsAutoRefreshArr = [];
689 for(var i=0;i<tmp.length;++i) ViewerRoot.iterRootIsAutoRefreshArr[i] = tmp[i].getAttribute(
"value") | 0;
691 ViewerRoot.clearAll();
693 ViewerRoot.iterLoading =
true;
694 ViewerRoot.iterNumberRemaining = ViewerRoot.iterRootObjNameArr.length;
695 ViewerRoot.iterSaveNextObjectMode = ViewerRoot.nextObjectMode;
696 ViewerRoot.iterSaveAutoRefreshDefault = ViewerRoot.autoRefreshDefault;
698 ViewerRoot.iterativeConfigLoader();
703 ViewerRoot.iterativeConfigLoader =
function() {
705 if(!ViewerRoot.iterNumberRemaining)
707 ViewerRoot.autoRefreshDefault = ViewerRoot.iterSaveAutoRefreshDefault;
708 ViewerRoot.nextObjectMode = ViewerRoot.iterSaveNextObjectMode;
709 ViewerRoot.iterLoading =
false;
713 --ViewerRoot.iterNumberRemaining;
717 for(var i=0;i<ViewerRoot.iterRootPosArr.length;++i)
718 if(min == -1 || ViewerRoot.iterRootPosArr[i] < ViewerRoot.iterRootPosArr[min]) min = i;
720 ViewerRoot.nextObjectMode = ViewerRoot.iterRootIsTransparentArr[min]?ViewerRoot.SUPERIMPOSE_MODE:ViewerRoot.TILE_MODE;
721 ViewerRoot.autoRefreshDefault = ViewerRoot.iterRootIsAutoRefreshArr[min];
723 ViewerRoot.rootReq(ViewerRoot.iterRootObjNameArr[min]);
726 ViewerRoot.iterRootObjNameArr.splice(min,1);
727 ViewerRoot.iterRootPosArr.splice(min,1);
728 ViewerRoot.iterRootIsTransparentArr.splice(min,1);
729 ViewerRoot.iterRootIsAutoRefreshArr.splice(min,1);
736 ViewerRoot.getRootDataHandler =
function(req) {
740 var rootType = DesktopContent.getXMLValue(req,
"rootType");
741 var rootStr = DesktopContent.getXMLValue(req,
"rootData");
742 var rootName = DesktopContent.getXMLValue(req,
"path");
746 var rootJSON = DesktopContent.getXMLValue(req,
"rootJSON");
750 var ojbect = JSROOT.parse(rootJSON);
751 var rootTitle = ojbect.fTitle;
753 if(!ojbect || !rootType || !rootName)
755 Debug.log(
"Pausing auto-refresh! \n\nPlease resolve the erros before resuming refreshes.", Debug.HIGH_PRIORITY);
757 var chk = document.getElementById(
"hudCheckbox" + 2);
759 ViewerRoot.pauseRefresh =
true;
761 Debug.log(
"Error reading Root object from server - Name: " + rootName, Debug.HIGH_PRIORITY);
762 ViewerRoot.autoRefreshMatchArr = [];
767 var refreshIndex = -1;
768 if(ViewerRoot.autoRefreshMatchArr.length)
770 for(var i=0;i<ViewerRoot.autoRefreshMatchArr.length;++i)
772 if(rootName == ViewerRoot.autoRefreshMatchArr[i][1])
774 refreshIndex = ViewerRoot.autoRefreshMatchArr[i][0];
777 ViewerRoot.autoRefreshMatchArr[i] = 0;
778 ViewerRoot.autoRefreshMatchArr.splice(i,1);
782 if(refreshIndex >= ViewerRoot.rootObjNameArr.length ||
783 ViewerRoot.rootObjNameArr[refreshIndex] != rootName)
785 Debug.log(
"ViewerRoot getRootDataHandler weird unmatch!?#$@%");
794 console.log(
"refreshIndex=" + refreshIndex +
" ViewerRoot.rootTargetIndex=" + ViewerRoot.rootTargetIndex);
796 if(refreshIndex < 0) ViewerRoot.prepareNextLocation(rootName, rootTitle);
836 ViewerRoot.interpretObjectJSON(ojbect,rootType,rootName,refreshIndex);
837 if(ViewerRoot.iterLoading) ViewerRoot.iterativeConfigLoader();
843 ViewerRoot.interpretObjectJSON =
function(object,rootType,objName,refreshIndex) {
845 if(refreshIndex == undefined) refreshIndex = -1;
848 if(ViewerRoot.hardRefresh)
852 ViewerRoot.rootObjArr.push(
object);
853 ViewerRoot.rootObjIndexArr.push(ViewerRoot.objIndex);
857 delete ViewerRoot.rootObjArr[refreshIndex]; ViewerRoot.rootObjArr[refreshIndex] = null;
858 ViewerRoot.rootObjArr[refreshIndex] = object;
859 ViewerRoot.rootObjTitleArr[refreshIndex] =
object.fTitle;
860 ViewerRoot.rootObjIndexArr[refreshIndex] = ViewerRoot.objIndex;
863 ViewerRoot.rootElArr[refreshIndex].innerHTML =
"";
864 var tmpdiv = document.createElement(
'div');
865 tmpdiv.setAttribute(
"id",
"histogram"+ViewerRoot.objIndex);
866 tmpdiv.setAttribute(
"class",
"rootObjectContainerTarget");
867 ViewerRoot.rootElArr[refreshIndex].appendChild(tmpdiv);
871 JSROOT.redraw(
'histogram'+
872 (ViewerRoot.objIndex),
875 ViewerRoot.objIndex++;
880 JSROOT.draw(
'histogram'+
881 (refreshIndex<0?ViewerRoot.objIndex:
882 ViewerRoot.rootObjIndexArr[refreshIndex]),
887 ViewerRoot.rootObjArr.push(
object);
888 ViewerRoot.rootObjIndexArr.push(ViewerRoot.objIndex);
889 ViewerRoot.objIndex++;
893 delete ViewerRoot.rootObjArr[refreshIndex]; ViewerRoot.rootObjArr[refreshIndex] = null;
894 ViewerRoot.rootObjArr[refreshIndex] = object;
895 ViewerRoot.rootObjTitleArr[refreshIndex] =
object.fTitle;
899 ViewerRoot.refreshTransparency(refreshIndex<0?(ViewerRoot.rootObjArr.length-1):refreshIndex);
900 ViewerRoot.manageRootHeaders();
905 function loadScript(url, callback) {
908 var script = document.createElement(
"script")
909 script.type =
"text/javascript";
910 if (script.readyState) {
911 script.onreadystatechange =
function() {
912 if (script.readyState ==
"loaded" ||
913 script.readyState ==
"complete") {
914 script.onreadystatechange = null;
919 script.onload =
function(){
923 var rnd = Math.floor(Math.random()*80000);
925 document.getElementsByTagName(
"head")[0].appendChild(script);