MediaWiki:Lékařská kalkulačka/Opioidy.js
Z WikiSkript
Poznámka: Po zveřejnění musíte vyprázdnit cache vašeho prohlížeče, jinak změny neuvidíte.
- Firefox / Safari: Při kliknutí na Aktualizovat držte Shift nebo stiskněte Ctrl-F5 nebo Ctrl-R (na Macu ⌘-R)
- Google Chrome: Stiskněte Ctrl-Shift-R (na Macu ⌘-Shift-R)
- Internet Explorer / Edge: Při kliknutí na Aktualizovat držte Ctrl nebo stiskněte Ctrl-F5
- Opera: Stiskněte Ctrl-F5.
/**
* ReplaceAll by Fagner Brack (MIT Licensed)
* Replaces all occurrences of a substring in a string
*/
String.prototype.replaceAll = function(token, newToken, ignoreCase) {
var str, i = -1, _token;
if((str = this.toString()) && typeof token === "string") {
_token = ignoreCase === true? token.toLowerCase() : undefined;
while((i = (
_token !== undefined?
str.toLowerCase().indexOf(
_token,
i >= 0? i + newToken.length : 0
) : str.indexOf(
token,
i >= 0? i + newToken.length : 0
)
)) !== -1 ) {
str = str.substring(0, i)
.concat(newToken)
.concat(str.substring(i + token.length));
}
}
return str;
};
/**************** Převod do html podoby ****************/
var content = $( '#lekarska_kalkulacka_Opioidy-content' ).text();
$( '#lekarska_kalkulacka_Opioidy' ).html( content.replaceAll('paragraph', 'p' ).replaceAll( 'resValue', 'span' ).replaceAll('breakline', 'br' ).replaceAll('bold', 'b').replaceAll('division', 'div').replaceAll('orderedlist', 'ol') );
var datum = new Date();
$( '#lekarska_kalkulacka_Opioidy-cas-naplasti' ).val( datum.getDate() + ". " + (datum.getMonth()+1) + ". " + datum.getFullYear() + ", " + datum.getHours() + ":" + datum.getMinutes() );
/**************** Pomocné funkce a provázanost ****************/
var ratios = { TDFe: 12.5, IVFe: 100, IVSu: 20, TDBu: 17.5, POMo: 30, SCMo: 10, POHy: 7.5, POOxy: 20, POTmd: 150, PODHC: 120 };
var types = [ 'TDFe', 'IVFe', 'IVSu', 'TDBu', 'POMo', 'SCMo', 'POHy', 'POOxy', 'POTmd', 'PODHC' ];
function lekarska_kalkulacka_Opioidy_prepocitej( input_type, input_value ) {
var redukce = 1 - ( 0.01 * $( '#lekarska_kalkulacka_Opioidy-redukce-number' ).val() );
$.each(types, function( index, new_type ) {
//ukaž schovanou redukovanou hodnotu
$( '#lekarska_kalkulacka_Opioidy-' + new_type + '-red' ).show();
$( '#lekarska_kalkulacka_Opioidy-' + new_type + '-red-label' ).show();
$( '#lekarska_kalkulacka_Opioidy-' + new_type + '-red-label2' ).show();
var new_value = Math.round( ( input_value / ratios[input_type] ) * ratios[new_type] );
$( '#lekarska_kalkulacka_Opioidy-' + new_type + '-range' ).val( new_value );
$( '#lekarska_kalkulacka_Opioidy-' + new_type + '-number' ).val( new_value );
$( '#lekarska_kalkulacka_Opioidy-' + new_type + '-red' ).val( Math.round( redukce * new_value ) );
});
//netřeba zobrazovat redukovanou hodnotu od léku, který je používán
$( '#lekarska_kalkulacka_Opioidy-' + input_type + '-red' ).hide();
$( '#lekarska_kalkulacka_Opioidy-' + input_type + '-red-label' ).hide();
$( '#lekarska_kalkulacka_Opioidy-' + input_type + '-red-label2' ).hide();
}
function lekarska_kalkulacka_Opioidy_set_redukce( red ) {
$( '#lekarska_kalkulacka_Opioidy-redukce-range' ).val( red );
$( '#lekarska_kalkulacka_Opioidy-redukce-number' ).val( red );
var redukce = 1 - ( 0.01 * red );
$.each(types, function( index, type ) {
var value = $( '#lekarska_kalkulacka_Opioidy-' + type + '-number' ).val();
$( '#lekarska_kalkulacka_Opioidy-' + type + '-red' ).val( Math.round( redukce * value ) );
});
}
function lekarska_kalkulacka_Opioidy_date_regex( string ) {
var regex = /(\d{1,2}). ?(\d{1,2}). (\d{4}), ?(\d{1,2}):(\d{2})/;
try {
var match = regex.exec( string );
return new Date( parseInt(match[3]), parseInt(match[2])-1, parseInt(match[1]), parseInt(match[4]), parseInt(match[5]), 0, 0);
} catch( error ) {
return new Date();
//to-do dát vědět o špatném formátu data
}
}
function lekarska_kalkulacka_Opiody_den_v_tydnu( i ) {
switch (i) {
case 0: return 'neděle';
case 1: return 'pondělí';
case 2: return 'úterý';
case 3: return 'středa';
case 4: return 'čtvrtek';
case 5: return 'pátek';
case 6: return 'sobota';
default: return '';
}
}
function lekarska_kalkulacka_Opiody_spocitej_dalsi_davku( datum ) {
var feString = '';
var buString = '';
var feDatum = datum;
var buDatum = datum;
for (var i = 0; i < 3; i++ ) {
feDatum = new Date( feDatum.getTime() + ( 72 * 60 * 60 * 1000 ));
feString += lekarska_kalkulacka_Opiody_den_v_tydnu( feDatum.getDay() );
feString += ' ' + feDatum.getDate() + ". " + (feDatum.getMonth()+1) + ". " + feDatum.getFullYear() + ", " + feDatum.getHours() + ":" + feDatum.getMinutes() + "; ";
buDatum = new Date( buDatum.getTime() + ( 84 * 60 * 60 * 1000 ));
buString += lekarska_kalkulacka_Opiody_den_v_tydnu( buDatum.getDay() );
buString += ' ' + buDatum.getDate() + ". " + (buDatum.getMonth()+1) + ". " + buDatum.getFullYear() + ", " + buDatum.getHours() + ":" + buDatum.getMinutes() + "; ";
}
feString += "(t.j. á 72 hod.)";
buString += "(t.j. á 2× týdně)";
$( '#lekarska_kalkulacka_Opioidy-dalsi-davka-Fe' ).html( feString );
$( '#lekarska_kalkulacka_Opioidy-dalsi-davka-Bu' ).html( buString );
}
lekarska_kalkulacka_Opiody_spocitej_dalsi_davku( new Date() );
/**************** Vlastní výpočet ****************/
$( '#lekarska_kalkulacka_Opioidy-redukce-range' ).change( function() {
var redukce = $( '#lekarska_kalkulacka_Opioidy-redukce-range' ).val();
lekarska_kalkulacka_Opioidy_set_redukce( redukce );
});
$( '#lekarska_kalkulacka_Opioidy-redukce-number' ).change( function() {
var redukce = $( '#lekarska_kalkulacka_Opioidy-redukce-number' ).val();
lekarska_kalkulacka_Opioidy_set_redukce( redukce );
});
$( '#lekarska_kalkulacka_Opioidy-TDFe-range' ).change( function() {
var TDFe = $( '#lekarska_kalkulacka_Opioidy-TDFe-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'TDFe', TDFe );
});
$( '#lekarska_kalkulacka_Opioidy-TDFe-number' ).change( function() {
var TDFe = $( '#lekarska_kalkulacka_Opioidy-TDFe-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'TDFe', TDFe );
});
$( '#lekarska_kalkulacka_Opioidy-IVFe-range' ).change( function() {
var IVFe = $( '#lekarska_kalkulacka_Opioidy-IVFe-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'IVFe', IVFe );
});
$( '#lekarska_kalkulacka_Opioidy-IVFe-number' ).change( function() {
var IVFe = $( '#lekarska_kalkulacka_Opioidy-IVFe-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'IVFe', IVFe );
});
$( '#lekarska_kalkulacka_Opioidy-IVSu-range' ).change( function() {
var IVSu = $( '#lekarska_kalkulacka_Opioidy-IVSu-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'IVSu', IVSu );
});
$( '#lekarska_kalkulacka_Opioidy-IVSu-number' ).change( function() {
var IVSu = $( '#lekarska_kalkulacka_Opioidy-IVSu-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'IVSu', IVSu );
});
$( '#lekarska_kalkulacka_Opioidy-TDBu-range' ).change( function() {
var TDBu = $( '#lekarska_kalkulacka_Opioidy-TDBu-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'TDBu', TDBu );
});
$( '#lekarska_kalkulacka_Opioidy-TDBu-number' ).change( function() {
var TDBu = $( '#lekarska_kalkulacka_Opioidy-TDBu-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'TDBu', TDBu );
});
$( '#lekarska_kalkulacka_Opioidy-POMo-range' ).change( function() {
var POMo = $( '#lekarska_kalkulacka_Opioidy-POMo-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POMo', POMo );
});
$( '#lekarska_kalkulacka_Opioidy-POMo-number' ).change( function() {
var POMo = $( '#lekarska_kalkulacka_Opioidy-POMo-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POMo', POMo );
});
$( '#lekarska_kalkulacka_Opioidy-SCMo-range' ).change( function() {
var SCMo = $( '#lekarska_kalkulacka_Opioidy-SCMo-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'SCMo', SCMo );
});
$( '#lekarska_kalkulacka_Opioidy-SCMo-number' ).change( function() {
var SCMo = $( '#lekarska_kalkulacka_Opioidy-SCMo-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'SCMo', SCMo );
});
$( '#lekarska_kalkulacka_Opioidy-POHy-range' ).change( function() {
var POHy = $( '#lekarska_kalkulacka_Opioidy-POHy-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POHy', POHy );
});
$( '#lekarska_kalkulacka_Opioidy-POHy-number' ).change( function() {
var POHy = $( '#lekarska_kalkulacka_Opioidy-POHy-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POHy', POHy );
});
$( '#lekarska_kalkulacka_Opioidy-POOxy-range' ).change( function() {
var POOxy = $( '#lekarska_kalkulacka_Opioidy-POOxy-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POOxy', POOxy );
});
$( '#lekarska_kalkulacka_Opioidy-POOxy-number' ).change( function() {
var POOxy = $( '#lekarska_kalkulacka_Opioidy-POOxy-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POOxy', POOxy );
});
$( '#lekarska_kalkulacka_Opioidy-POTmd-range' ).change( function() {
var POTmd = $( '#lekarska_kalkulacka_Opioidy-POTmd-range' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POTmd', POTmd );
});
$( '#lekarska_kalkulacka_Opioidy-POTmd-number' ).change( function() {
var POTmd = $( '#lekarska_kalkulacka_Opioidy-POTmd-number' ).val();
lekarska_kalkulacka_Opioidy_prepocitej( 'POTmd', POTmd );
});
$( '#lekarska_kalkulacka_Opioidy-cas-naplasti' ).change( function() {
var datum = lekarska_kalkulacka_Opioidy_date_regex( $( '#lekarska_kalkulacka_Opioidy-cas-naplasti' ).val() );
lekarska_kalkulacka_Opiody_spocitej_dalsi_davku( datum );
});