MediaWiki Diskussion:CFoptions.js

aus FreewarWiki, der Referenz für Freewar
Version vom 5. August 2012, 20:07 Uhr von Rober Croft (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ var calc, form, gw, mx; function init_CF() { if (!document.getElementById('CFoptions')) return; optcont = document.getElementById('CFoptions'); cap…“)
(Unterschied) ← Nächstältere Version | ↑ Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
var calc, form, gw, mx;
function init_CF() {
  if (!document.getElementById('CFoptions')) return;
  optcont = document.getElementById('CFoptions');
  caption = document.createElement('b');
  caption.appendChild(document.createTextNode('Lernzeit anzeigen: '));
  form = document.createElement('form');
  form.action = '#';
  form.style.display = 'inline';

  option = document.createElement('input'); option.type = 'radio'; option.setAttribute('onclick', 'switch_CF(this);'); option.checked = 'checked'; 
  option.name = 'CF_switch'; option.value = 'level'; form.appendChild(option); form.appendChild(document.createTextNode('Lernzeit pro Stufe'));

  option = document.createElement('input'); option.type = 'radio'; option.setAttribute('onclick', 'switch_CF(this);');
  option.name = 'CF_switch'; option.value = 'total'; form.appendChild(option); form.appendChild(document.createTextNode('Gesamtlernzeit'));

  option = document.createElement('input'); option.type = 'radio'; option.setAttribute('onclick', 'switch_CF(this);');
  option.name = 'CF_switch'; option.value = 'calc'; form.appendChild(option); form.appendChild(document.createTextNode('Wartezeitenrechner'));

  optcont.appendChild(caption);
  optcont.appendChild(form);

  calc = document.getElementById('CFcalc');
  gw = Number(calc.removeChild(calc.firstChild).nodeValue);
  mx = Number(document.getElementById('CFmax').firstChild.nodeValue);
  form = document.createElement('form');
  form.action = '#';
  table = document.createElement('table');
  
  tr = document.createElement('tr');
  td = document.createElement('td'); td.appendChild(document.createTextNode('Von Stufe:')); tr.appendChild(td);
  td = document.createElement('td'); input = document.createElement('input'); input.type = 'text';
  input.style.width = '100px'; input.name = 'CFstartlevel';input.value='1'; td.appendChild(input); tr.appendChild(td);
  table.appendChild(tr);
  tr = document.createElement('tr');
  td = document.createElement('td'); td.appendChild(document.createTextNode('Bis Stufe:')); tr.appendChild(td);
  td = document.createElement('td'); input = document.createElement('input'); input.type = 'text';
  input.style.width = '100px'; input.name = 'CFendlevel'; td.appendChild(input); tr.appendChild(td);
  table.appendChild(tr);

  tr = document.createElement('tr');
  td = document.createElement('td'); td.appendChild(document.createTextNode('Stufe Lerntechnik:')); tr.appendChild(td);
  td = document.createElement('td'); input = document.createElement('input'); input.type = 'text';
  input.style.width = '100px'; input.name = 'CFlerntech'; td.appendChild(input); tr.appendChild(td);
  table.appendChild(tr);

  tr = document.createElement('tr');
  td = document.createElement('td'); td.colspan = '2'; td.style.textAlign = 'center';
  input = document.createElement('input'); input.type = 'button'; input.value = 'Berechnen';
  input.onclick = calc_CF; td.appendChild(input); tr.appendChild(td);
  table.appendChild(tr);

  form.appendChild(table);
  calc.appendChild(form);

  document.getElementById('CFtotal').style.display = 'none';
  calc.style.display = 'none';
}
function switch_CF(option) {
  document.getElementById('CFstartlevel').style.display = (option.value == 'level' ? 'block' : 'none');
  document.getElementById('CFtotal').style.display = (option.value == 'total' ? 'block' : 'none');
  document.getElementById('CFcalc').style.display = (option.value == 'calc' ? 'block' : 'none');
}
function calc_CF() {
  if (isNaN(form.CFendlevel.value) ||form.CFstartlevel.value) || isNaN(form.CFlerntech.value)) return alert('Bitte nur Zahlen eingeben!');
  if ((Number(form.CFendlevel.value) > mx) ||form.CFstartlevel.value)< -1) || (Number(form.CFlerntech.value) > 50)) alert('Mindestens ein eingegebener Wert ist höher als die Maximalstufe der betreffenden Fähigkeit. Das Ergebnis ist hypothetisch und kann so nicht im Spiel vorkommen.');
  duration = Math.pow(0.97, form.CFlerntech.value) * (form.CFendlevel.value - 1) * gw;
  totalduration = (Math.pow(0.97, form.CFlerntech.value) * (form.CFendlevel.value - 1) * form.CFendlevel.value / 2 * gw)-(Math.pow(0.97, form.CFlerntech.value) * (form.CFstartlevel.value - 1) * form.CFstartlevel.value / 2 * gw);
  lerntechsaving = (form.CFendlevel.value - 1) * gw - duration;
  lerntechtotalsaving = ((form.CFendlevel.value - 1) * form.CFendlevel.value / 2 * gw - totalduration)-(((form.CFstartlevel.value - 1) * form.CFstartlevel.value / 2 * gw));
  if (form.nextSibling) calc.removeChild(form.nextSibling);
  calc.appendChild(document.createTextNode('Das Training auf Stufe ' + form.CFendlevel.value + ' dauert '
   + (duration >= 86400 ? String(Math.floor(duration / 86400)) + ' Tage, ' : ) + String(Math.floor((duration % 86400) / 3600))
   + ' Stunden und ' + String(Math.floor((duration % 3600) / 60)) + ' Minuten. Die Gesamtlernzeit von Stufe ' + form.CFstartlevel.value + ' bis STufe ' + form.CFendlevel.value + ' beträgt '
   + (totalduration >= 86400 ? String(Math.floor(totalduration / 86400)) + ' Tage, ' : ) + String(Math.floor((totalduration % 86400) / 3600))
   + ' Stunden und ' + String(Math.floor((totalduration % 3600) / 60)) + ' Minuten.' + (form.CFlerntech.value > 0
   ? ' Gegenüber dem Training mit Lerntechnik auf Stufe 0 wurden ' + (lerntechsaving >= 86400
   ? String(Math.floor(lerntechsaving / 86400)) + ' Tage, ' : ) + String(Math.floor((lerntechsaving % 86400) / 3600))
   + ' Stunden und ' + String(Math.floor((lerntechsaving % 3600) / 60)) + ' Minuten (Gesamtlernzeit: ' + (lerntechtotalsaving >= 86400
   ? String(Math.floor(lerntechtotalsaving / 86400)) + ' Tage, ' : ) + String(Math.floor((lerntechtotalsaving % 86400) / 3600))
   + ' Stunden und ' + String(Math.floor((lerntechtotalsaving % 3600) / 60)) + ' Minuten) eingespart.' : )));
}
addOnloadHook(init_CF);


Das müsste eig. funktionieren. Aber ich kanns nicht testen (oder doch? Falls ja, wie?) Hab grad nicht mehr Zeit, aber kann morgen nochmal in Ruhe drübergucken (Sagt mir bis dahin bitte jemand wo ich sowas testen kann? :)--Rober Croft 20:07, 5. Aug. 2012 (CEST)