salesagility_SuiteCRM/modules/AOR_Reports/AOR_Report_Before.js

270 lines
8.6 KiB
JavaScript

$(document).ready(function(){
SUGAR.util.doWhen("typeof $('#fieldTree').tree != 'undefined'", function(){
var $moduleTree = $('#fieldTree').tree({
data: {},
dragAndDrop: false,
selectable: false,
onDragStop: function(node, e,thing){
// var target = $(document.elementFromPoint(e.pageX - window.pageXOffset, e.pageY - window.pageYOffset));
// if(node.type != 'field'){
// return;
// }
// if(target.closest('#fieldLines').length > 0){
// addNodeToFields(node);
// updateChartDimensionSelects();
// }else if(target.closest('#conditionLines').length > 0){
// addNodeToConditions(node);
// }
},
onCanMoveTo: function(){
return false;
}
});
function loadTreeData(module, node){
var _node = node;
$.getJSON('index.php',
{
'module' : 'AOR_Reports',
'action' : 'getModuleTreeData',
'aor_module' : module,
'view' : 'JSON'
},
function(relData){
processTreeData(relData, _node);
}
);
}
var treeDataLeafs = [];
var dropFieldLine = function(node) {
addNodeToFields(node);
updateChartDimensionSelects();
};
var dropConditionLine = function(node) {
var newConditionLine = addNodeToConditions(node);
LogicalOperatorHandler.hideUnnecessaryLogicSelects();
ConditionOrderHandler.setConditionOrders();
ParenthesisHandler.addParenthesisLineIdent();
return newConditionLine;
};
var showTreeDataLeafs = function(treeDataLeafs, module, module_name, module_path_display) {
if (typeof module_name == 'undefined' || !module_name) {
module_name = module;
}
if (typeof module_path_display == 'undefined' || !module_path_display) {
module_path_display = module_name;
}
$('#module-name').html('(<span title="' + module_path_display + '">' + module_name + '</span>)');
$('#fieldTreeLeafs').remove();
$('#detailpanel_fields_select').append(
'<div id="fieldTreeLeafs" class="dragbox aor_dragbox" title="'
+ SUGAR.language.translate('AOR_Reports', 'LBL_TOOLTIP_DRAG_DROP_ELEMS')
+ '"></div>'
);
$('#fieldTreeLeafs').tree({
data: treeDataLeafs,
dragAndDrop: true,
selectable: true,
onCanSelectNode: function(node) {
if($('#report-editview-footer .toggle-detailpanel_fields').hasClass('active')) {
dropFieldLine(node);
}
else if($('#report-editview-footer .toggle-detailpanel_conditions').hasClass('active')) {
dropConditionLine(node);
}
},
onDragMove: function() {
$('.drop-area').addClass('highlighted');
},
onDragStop: function(node, e,thing){
$('.drop-area').removeClass('highlighted');
var target = $(document.elementFromPoint(e.pageX - window.pageXOffset, e.pageY - window.pageYOffset));
if(node.type != 'field'){
return;
}
if(target.closest('#fieldLines').length > 0){
dropFieldLine(node);
}else if(target.closest('#aor_conditionLines').length > 0){
var conditionLineTarget = ConditionOrderHandler.getConditionLineByPageEvent(e);
var conditionLineNew = dropConditionLine(node);
if(conditionLineTarget) {
ConditionOrderHandler.putPositionedConditionLines(conditionLineTarget, conditionLineNew);
ConditionOrderHandler.setConditionOrders();
}
ParenthesisHandler.addParenthesisLineIdent();
}
else if(target.closest('.tab-toggler').length > 0) {
target.closest('.tab-toggler').click();
if(target.closest('.tab-toggler').hasClass('toggle-detailpanel_fields')) {
dropFieldLine(node);
}
else if (target.closest('.tab-toggler').hasClass('toggle-detailpanel_conditions')) {
dropConditionLine(node);
}
}
},
onCanMoveTo: function(){
return false;
}
});
};
function loadTreeLeafData(node) {
var module = node.module;
var module_name = node.name;
var module_path_display = node.module_path_display;
if (!treeDataLeafs[module_path_display]) {
$.getJSON('index.php',
{
'module': 'AOR_Reports',
'action': 'getModuleFields',
'aor_module': node.module,
'view': 'JSON'
},
function (fieldData) {
var treeData = [];
for (var field in fieldData) {
if (fieldData.hasOwnProperty(field) && field !== '') {
treeData.push(
{
id: field,
label: fieldData[field],
'load_on_demand': false,
type: 'field',
module: node.module,
module_path: node.module_path,
module_path_display: node.module_path_display
});
}
}
treeDataLeafs[module_path_display] = treeData;
showTreeDataLeafs(treeDataLeafs[module_path_display], module, module_name, module_path_display);
}
);
} else {
showTreeDataLeafs(treeDataLeafs[module_path_display], module, module_name, module_path_display);
}
}
function processTreeData(relData, node){
var treeData = [];
for (var field in relData) {
if (relData.hasOwnProperty(field)) {
// We don't want to show the parent module as child of itself
if (node && relData[field].type === 'module') {
continue;
}
var modulePath = '';
var modulePathDisplay = '';
if (relData[field].type === 'relationship') {
modulePath = field;
if (node) {
if (node.module_path) {
modulePath = node.module_path + ":" + field;
}
modulePathDisplay = node.module_path_display + " : " + relData[field].module_label;
} else {
modulePathDisplay = $('#report_module option:selected').text() + ' : ' + relData[field].module_label;
}
} else {
if (node) {
modulePath = node.module_path;
modulePathDisplay = node.module_path_display;
} else {
modulePathDisplay = relData[field].module_label;
}
}
var newNode = {
id: field,
label: relData[field].module_label,
load_on_demand: true,
type: relData[field].type,
module: relData[field].module,
module_path: modulePath,
module_path_display: modulePathDisplay
};
treeData.push(newNode);
}
}
$('#fieldTree').tree('loadData',treeData, node);
if(node){
if(node.opened){
$('#fieldTree').tree('openNode', node);
}
setNodeSelected(node);
node.loaded = true;
}
}
function setNodeSelected(node){
$('.jqtree-selected').removeClass('jqtree-selected');
$('#fieldTree').tree('addToSelection', node);
}
$('#fieldTree').on(
'click',
'.jqtree-toggler, .jqtree-title', //
function(event) {
var node = $(this).closest('li.jqtree_common').data('node');
node.opened = !$(this).hasClass('jqtree-title');
if(!node.loaded) {
loadTreeData(node.module, node);
}
loadTreeLeafData(node);
setNodeSelected(node);
return true;
}
);
var clearTreeDataFields = function() {
$('#module-name').html('');
$('#fieldTreeLeafs').html('');
}
$('#report_module').change(function(){
report_module = $(this).val();
loadTreeData($(this).val());
clearTreeDataFields();
clearFieldLines();
clearConditionLines();
clearChartLines();
});
$('#addChartButton').click(function(){
loadChartLine({});
updateChartDimensionSelects();
});
report_module = $('#report_module').val();
loadTreeData($('#report_module').val());
$.each(fieldLines,function(key,val){
loadFieldLine(val);
});
$.each(conditionLines,function(key,val){
loadConditionLine(val);
});
$.each(chartLines,function(key,val){
loadChartLine(val);
});
updateChartDimensionSelects();
});
});