afryca.ase.Function BIRTChart Simulation consistency bar chart Simulation consistency bar chart var validBindings = function() { if ((frSim == null) || (irSim == null) || (mbSim == null)) { return false; } else { var selections = mbSim.get(moduleBinding); return (selections == null) ? false : selections.size() > 0; } } var getPreferences = function() { var result = []; var simulationResult = sim.getResult(); var numberOfExperts = simulationResult.get(EResultElements.number_of_experts); var numberOfAlternatives = simulationResult.get(EResultElements.number_of_alternatives); var numberOfCriteria = simulationResult.get(EResultElements.number_of_criteria); var expertIndex = (eSim != null) ? sim.getGDMP().getExperts().indexOf(eSim) : -1; var criterionIndex = (cSim != null) ? sim.getGDMP().getCriteria().indexOf(cSim): -1; var rounds = simulationResult.get(EResultElements.rounds_results); var round = rounds.get(irSim); var preferences = round.get(ERoundResult.pre_preferences); if(eSim != null && cSim != null) { result[result.length] = preferences[numberOfCriteria * expertIndex + criterionIndex]; } else if(eSim != null && cSim == null) { if(cNum>1){ var expertsPreferences = []; for(var crit = 0; crit < numberOfCriteria; ++crit) { expertsPreferences[crit] = preferences[expertIndex * numberOfCriteria + crit]; } result[result.length] = preferences[0].groupPreferences(expertsPreferences.length, numberOfAlternatives, numberOfCriteria, expertsPreferences); }else{ result[result.length] = preferences[expertIndex]; } } else if(eSim == null && cSim != null) { var criteriaPreferences = []; for(var exp = 0; exp < numberOfExperts; ++exp) { criteriaPreferences[exp] = preferences[exp * numberOfCriteria + criterionIndex]; } result[result.length] = preferences[0].groupPreferences(criteriaPreferences.length, numberOfAlternatives, numberOfCriteria, criteriaPreferences); } else { result[result.length] = preferences[preferences.length - 1]; } for (var pos = irSim; pos <= frSim; pos++) { round = rounds.get(pos); preferences = round.get(ERoundResult.pos_preferences); if(eSim != null && cSim != null) { result[result.length] = preferences[numberOfCriteria * expertIndex + criterionIndex]; } else if(eSim != null && cSim == null) { if(cNum>1){ var expertsPreferences = []; for(var crit = 0; crit < numberOfCriteria; ++crit) { expertsPreferences[crit] = preferences[expertIndex * numberOfCriteria + crit]; } result[result.length] = preferences[0].groupPreferences(expertsPreferences.length, numberOfAlternatives, numberOfCriteria, expertsPreferences); }else{ result[result.length] = preferences[expertIndex]; } } else if(eSim == null && cSim != null) { var criteriaPreferences = []; for(var exp = 0; exp < numberOfExperts; ++exp) { criteriaPreferences[exp] = preferences[exp * numberOfCriteria + criterionIndex]; } result[result.length] = preferences[0].groupPreferences(criteriaPreferences.length, numberOfAlternatives, numberOfCriteria, criteriaPreferences); } else { result[result.length] = preferences[preferences.length - 1]; } } return result; } var generateValues = function(moduleBindingName) { var result = {labels:[''], input:[0]}; if (validBindings()) { var preferences = getPreferences(); var functionName = mbSim.get(moduleBinding).get(0); result.input = Java.from( ase.createExecutionBuilder() .setFunction(functionName) .putVariable('preferences', preferences) .execute()); result.labels[0] = 'I'; for (var pos = irSim; pos <= frSim; pos++) { result.labels[result.labels.length] = 'R' + (irSim + 1); } } return result; } var generateValues = function(moduleBindingName) { var result = {labels:[''], input:[0]}; if (validBindings()) { var functionName = mbSim.get(moduleBindingName).get(0); var values = ase.createExecutionBuilder() .setFunction(functionName) .putVariable('preferences', getPreferences()) .execute() .getResult(); for (var i = 0; i < values.length; i++) { result.input[i] = values[i].doubleValue(); } result.labels[0] = 'I'; for (var pos = irSim; pos <= frSim; pos++) { result.labels[result.labels.length] = 'R' + (pos + 1); } } return result; } var create = function(composite) { var values = generateValues(moduleBinding); birt.createBarChart(moduleBinding, '', '', values.labels, values.input); birt.createCanvas(composite, org.eclipse.swt.SWT.BORDER); } var update = function(composite) { var values = generateValues(moduleBinding); birt.updateChartTitle(moduleBinding, composite); birt.updateDataset(values.labels, values.input, composite); } return BIRTChartManager.call(['frSim', 'irSim', 'eSim', 'cSim', 'sim', 'mbSim'], validBindings, create, update, method, composite);