Skip to content

Instantly share code, notes, and snippets.

@phish108
Created September 12, 2014 11:29
Show Gist options
  • Save phish108/ecccaa62ad2077b389f0 to your computer and use it in GitHub Desktop.
Save phish108/ecccaa62ad2077b389f0 to your computer and use it in GitHub Desktop.
var Fragen = {};
// der datenFeed kommt aus $.ajax()
for (var i = 0; i < datenFeed.length; i++) {
var fID = datenFeed[i].id,
aID = datenFeed[i].agent.id;
if (!(fID in Fragen)) {
// initialisiere den Eintrag
Fragen[fID] = {};
Fragen[fID].summeScore = 0;
Fragen[fID].antworten = 0;
Fragen[fID].nTeilnehmer = 0;
Fragen[fID].teilnehmer = {};
}
// addiere den gesamt score auf
Fragen[fID].summeScore += datenFeed[i].result.score.raw;
Fragen[fID].antworten += 1;
if (!(datenFeed[i].agent.id in Fragen[fID].teilnehmer)) {
// erhöhe die teilnehmer anzahl
Fragen[fID].nTeilnehmer += 1;
// initialisiere die teilnehmer daten
Fragen[fID].teilnehmer[aID] = {
gesamt: {score: 0, n: 0},
letzte2: {score: 0, n: 0},
letzte5: {score: 0, n: 0},
letzte10: {score: 0, n: 0}
}
}
// summiere die werte für die auswertung auf
Fragen[fID].teilnehmer[aID].gesamt.score += datenFeed[i].result.score.raw;
Fragen[fID].teilnehmer[aID].gesamt.n += 1;
if (Fragen[fID].teilnehmer[aID].letzte2.n < 2) {
Fragen[fID].teilnehmer[aID].letzte2.score += datenFeed[i].result.score.raw;
Fragen[fID].teilnehmer[aID].letzte2.n += 1;
}
if (Fragen[fID].teilnehmer[aID].letzte5.n < 5) {
Fragen[fID].teilnehmer[aID].letzte5.score += datenFeed[i].result.score.raw;
Fragen[fID].teilnehmer[aID].letzte5.n += 1;
}
if (Fragen[fID].teilnehmer[aID].letzte10.n < 10) {
Fragen[fID].teilnehmer[aID].letzte10.score += datenFeed[i].result.score.raw;
Fragen[fID].teilnehmer[aID].letzte10.n += 1;
}
}
// jetzt kommt die eigentliche auswertung
for (fID in Fragen) {
// Gewichtetes Mittel
var gewMittelG = 0,
gewMittel2 = 0,
gewMittel5 = 0,
gewMittel10 = 0;
var sumMittelG = 0,
sumMittel2 = 0,
sumMittel5 = 0,
sumMittel10 = 0;
var tnMittelG = 0,
tnMittel2 = 0,
tnMittel5 = 0,
tnMittel10 = 0;
// berechne die Summe aller mittel werte
for (aID in Fragen[fID].teilnehmer) {
var tnStat = Fragen[fID].teilnehmer[aID];
sumMittelG += tnStat.gesamt.score / tnStat.gesamt.n;
tnMittelG += 1;
if (tnStat.letzte2.n === 2) { // beachte nur die TN die auch 2 mal die Frage beantwortet haben
sumMittel2 += tnStat.letzte2.score / 2;
tnMittel2 += 1;
}
if (tnStat.letzte5.n === 5) { // analog für letzte 5
sumMittel5 += tnStat.letzte2.score / 5;
tnMittel5 += 1;
}
if (tnStat.letzte10.n === 10) { // und letzte 10
sumMittel10 += tnStat.letzte2.score / 10;
tnMittel10 += 1;
}
}
// voila
gewMittelG = sumMittelG / tnMittelG;
gewMittel2 = sumMittel2 / tnMittel2;
gewMittel5 = sumMittel5 / tnMittel5;
gewMittel10 = sumMittel10 / tnMittel10;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment