MediaWiki:CFoptions.js

From FreewarWiki
Revision as of 13:03, 8 February 2017 by Tiramon (talk | contribs) (addOnLoadHook was deprecated and is removed in 1.27)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Note:
After saving, you may have to bypass your browser's cache to see the changes.
  • Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
  • Konqueror: click Reload or press F5;
  • Opera: clear the cache in Tools → Preferences;
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.


 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('Stufe:')); tr.appendChild(td);
   td = document.createElement('td'); input = document.createElement('input'); input.type = 'text';
   input.style.width = '100px'; input.name = 'CFlevel'; 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('CFlevel').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.CFlevel.value) || isNaN(form.CFlerntech.value)) return alert('Bitte nur Zahlen eingeben!');
   if ((Number(form.CFlevel.value) > mx) || (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.CFlevel.value - 1) * gw;
   totalduration = Math.pow(0.97, form.CFlerntech.value) * (form.CFlevel.value - 1) * form.CFlevel.value / 2 * gw;
   lerntechsaving = (form.CFlevel.value - 1) * gw - duration;
   lerntechtotalsaving = (form.CFlevel.value - 1) * form.CFlevel.value / 2 * gw - totalduration;
   if (form.nextSibling) calc.removeChild(form.nextSibling);
   calc.appendChild(document.createTextNode('Das Training auf Stufe ' + form.CFlevel.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 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.' : '')));
 }

 jQuery( document ).ready( function( $ ) {
	init_CF();
} );
//addOnloadHook(init_CF);