Files
AFRYCA/plugins/afryca.rcp/preloaded/module/BIRTChart/function/Simulation consistency bar chart.script
2026-05-22 11:14:29 +02:00

137 lines
4.9 KiB
Plaintext

<function>
<subclass>afryca.ase.Function</subclass>
<file></file>
<category>BIRTChart</category>
<name>Simulation consistency bar chart</name>
<description>Simulation consistency bar chart</description>
<code>
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);
</code>
</function>