var PANEL_EAST_OPEN = false,
centerPanel,
setFlag,
flagRefresh = true,
debugVarTpl = new Ext.Template('{value}'),
detailsText = '',
debugTriggersDetailTpl = new Ext.Template('
{code}
'),
propStore,
triggerStore,
result,
_action = '',
//@var treeMenuItemsLoaded -> added to flag the "treeMenuItems" tree, to ensure that its onload event is executed just once
treeMenuItemsLoaded = false,
loader,
_BROWSER;
debugVarTpl.compile();
debugTriggersDetailTpl.compile();
setFlag = function (val) {
flagRefresh = val;
};
Ext.onReady(function(){
new Ext.KeyMap(document, {
key: Ext.EventObject.F5,
fn: function(keycode, e) {
if (! e.ctrlKey) {
if (Ext.isIE) {
e.browserEvent.keyCode = 8;
}
e.stopEvent();
updateCasesTree();
}
else
Ext.Msg.alert(_('ID_REFRESH_LABEL'),_('ID_REFRESH_MESSAGE'));
}
});
Ext.QuickTips.init();
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
var resetGrid = function() {
propStore.load();
};
var resetTriggers = function(){
triggerStore.load();
};
var debugVariablesFilterDynaform = function(){
propStore.load({params:{filter:'dyn'}});
};
var debugVariablesFilterSystem = function(){
propStore.load({params:{filter:'sys'}});
};
//center iframe panel
centerPanel = {
region : 'center',
xtype : 'iframepanel',
frameConfig:{
name : 'casesSubFrame',
id : 'casesSubFrame'
},
deferredRender: false
};
/**
* Menu Panel
*/
var treeMenuItems = new Ext.tree.TreePanel({
xtype: 'treepanel',
height: 350,
id: 'tree-panel',
region: 'center',
margins: '0 0 0 0',
useArrows : true,
animate:true,
autoScroll: true,
rootVisible: false,
clearOnReLoad: false,
root: new Ext.tree.AsyncTreeNode(),
useArrows: true,
// Our custom TreeLoader:
loader: new Ext.app.menuLoader({
dataUrl:'casesMenuLoader',
clearOnLoad: false
}),
listeners: {
'click': function(tp) {
if( tp.attributes.url ){
document.getElementById('casesSubFrame').src = tp.attributes.url;
}
},
'render': function(tp){}
}
});
/**
* Gets the user client browser and its version
* @return (object)
*/
function getBrowserClient() {
var browsers = ["opera", "msie", "firefox", "opera", "safari", "trident"],
infoBrowser = navigator.userAgent.toLowerCase(),
versionBrowser,
currentBrowser = "";
for (var i = 0; i < browsers.length; i++) {
if ((currentBrowser === "") && (infoBrowser.indexOf(browsers[i]) !== -1)) {
currentBrowser = browsers[i];
versionBrowser = String(parseFloat(infoBrowser.substr(infoBrowser.indexOf(browsers[i]) + browsers[i].length + 1)));
return {name: currentBrowser, browser: currentBrowser, version: versionBrowser}
}
}
return false;
}
_BROWSER = getBrowserClient();
loader = treeMenuItems.getLoader();
loader.on("load", function () {
var treePanel1,
node;
// it was added since the feature to reload a specific node of tree is now working
if (!treeMenuItemsLoaded) { // this section of code should be executed once
if ((_BROWSER.name === "msie" || _BROWSER.name === "trident") && openCaseIE) {
parent.window.location.href = defaultOption;
} else {
document.getElementById('casesSubFrame').src = defaultOption;
// check if a case was open directly
if (defaultOption.indexOf('open') > -1) {
//if it is, then update cases trees
updateCasesTree();
}
if (_nodeId !== '') {
treePanel1 = Ext.getCmp('tree-panel');
if (treePanel1) {
node = treePanel1.getNodeById(_nodeId);
}
if (node) {
node.select();
if (_nodeId === 'CASES_START_CASE') {
updateCasesTree();
}
}
}
}
treeMenuItemsLoaded = true;
}
});
// set the root node
var root = new Ext.tree.AsyncTreeNode({
text: 'Ext JS',
draggable:false, // disable root node dragging
id:'src',
loaded:false,
expanded:true
});
mainMenu = new Ext.Panel({
id:'menuTreePanel',
title: '',
region: regionTreePanel,
layout: 'border',
width: 200,
height: 500,
minSize: 175,
maxSize: 400,
split: true,
collapsible: true,
collapseMode: 'mini',
margins: '0 0 0 2',
items: [
treeMenuItems
]
});
mainMenu.setTitle("
");
propStore = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url: 'debug_vars'}),
reader: new Ext.data.DynamicJsonReader({root: 'data'})
});
propStore.on('load', function(){
propStore.fields = propStore.recordType.prototype.fields;
debugVariables.setSource(propStore.getAt(0).data);
});
/**
* Triggers Panel
*/
var debugVariables = new Ext.grid.PropertyGrid({
id: 'debugVariables',
title:TRANSLATIONS.ID_VARIABLES,
autoHeight: false,
height: 300,
width: 400,
region: 'center',
margins: '2 2 0 2',
border: true,
stripeRows: true,
listeners: {
beforeedit: function(event) { //Cancel editing - read only
event.cancel = true;
}
},
tbar: [
{text: TRANSLATIONS.ID_ALL, handler: resetGrid},
{text: TRANSLATIONS.ID_DYNAFORM, handler: debugVariablesFilterDynaform},
{text: TRANSLATIONS.ID_SYSTEM, handler: debugVariablesFilterSystem}
],
sm: new Ext.grid.RowSelectionModel({singleSelect: true}),
viewConfig: {
forceFit: true
}
});
//set debug variable details
debugVariables.getSelectionModel().on('rowselect', function(sm, rowIdx, r) {
var detailPanel = Ext.getCmp('debug-details-panel'),
d = {};
d.name = r.data.name;
d.value = parent.parent.htmlentities ? parent.parent.htmlentities(r.data.value) : r.data.value;
debugVarTpl.overwrite(detailPanel.body, d);
detailPanel.setTitle(r.data.name);
if(r.data.value === '