MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(7 intermediate revisions by the same user not shown) | |||
Line 14: | Line 14: | ||
var ordered_total = 0; | var ordered_total = 0; | ||
var mytable = document.getElementById( id ); | var mytable = document.getElementById( id ); | ||
if ( ! mytable ) { | |||
throw new Error( 'Missing table: ' + id ); | |||
} | |||
for ( var row = 1; row < mytable.rows.length - 1; row++ ) { | for ( var row = 1; row < mytable.rows.length - 1; row++ ) { | ||
var val = read_float( read_cell( mytable, row, col ) ); | var val = read_float( read_cell( mytable, row, col ) ); | ||
Line 63: | Line 66: | ||
var line = spec.label + ': $' + parts_label; | var line = spec.label + ': $' + parts_label; | ||
if ( spec.options ) { line += ' (with options: $' + options_label + ')'; } | if ( spec.options.length ) { line += ' (with options: $' + options_label + ')'; } | ||
var li = document.createElement('li'); | var li = document.createElement('li'); | ||
Line 72: | Line 75: | ||
function read_cell( table, row, col ) { | function read_cell( table, row, col ) { | ||
try { | try { | ||
return table.rows[row].cells[col].innerHTML.trim(); | return table.rows[row].cells[col].innerHTML.trim(); | ||
} | } | ||
catch ( ex ) { | catch ( ex ) { | ||
//throw new Error( 'Could not read row: ' + row + '; col: ' + col ); | |||
return null; | return null; | ||
} | } | ||
Line 82: | Line 85: | ||
function read_float( input ) { | function read_float( input ) { | ||
return parseFloat( input.replace( '$', '' ).replace( ',', '' ) ); | // if ( ! input ) { throw new Error( 'Null input.' ); } | ||
return input ? parseFloat( input.replace( '$', '' ).replace( ',', '' ) ) : 0; | |||
} | } |
Latest revision as of 02:16, 13 March 2023
/* Any JavaScript here will be loaded for all users on every page load. */ //console.log( 'Hi from Common.js' ); for ( var i in document.jj5_totals ) { var spec = document.jj5_totals[ i ]; var id = spec.id; var col = spec.col; //console.log( [ id, col ] ); var total = 0; var ordered_total = 0; var mytable = document.getElementById( id ); if ( ! mytable ) { throw new Error( 'Missing table: ' + id ); } for ( var row = 1; row < mytable.rows.length - 1; row++ ) { var val = read_float( read_cell( mytable, row, col ) ); var ordered = read_cell( mytable, row, col + 2 ); if ( isNaN( val ) ) { continue; } if ( ordered ) { ordered_total += val; continue; } total += val; } //console.log( total ); var total_str = total.toLocaleString('en-AU',{currency:'AUD',minimumFractionDigits:2}); var ordered_str = ordered_total.toLocaleString('en-AU',{currency:'AUD',minimumFractionDigits:2}); document.getElementById( id + '_sum' ).innerHTML = total ? total_str : ordered_str; } for ( var i in document.jj5_options ) { var spec = document.jj5_options[ i ]; var parts_total = 0; for ( var j in spec.parts ) { var part = spec.parts[ j ]; var sum_id = part + '_sum'; var sum = read_float( document.getElementById( sum_id ).innerHTML ); if ( isNaN( sum ) ) { continue; } parts_total += sum; } var options_total = parts_total; for ( var j in spec.options ) { var option = spec.options[ j ]; var sum_id = option + '_sum'; var sum = read_float( document.getElementById( sum_id ).innerHTML ); if ( isNaN( sum ) ) { continue; } options_total += sum; } var ul = document.getElementById( 'jj5_options' ); var parts_label = parts_total.toLocaleString('en-AU',{currency:'AUD',minimumFractionDigits:2}); var options_label = options_total.toLocaleString('en-AU',{currency:'AUD',minimumFractionDigits:2}); var line = spec.label + ': $' + parts_label; if ( spec.options.length ) { line += ' (with options: $' + options_label + ')'; } var li = document.createElement('li'); li.appendChild(document.createTextNode(line)); ul.appendChild(li); } function read_cell( table, row, col ) { try { return table.rows[row].cells[col].innerHTML.trim(); } catch ( ex ) { //throw new Error( 'Could not read row: ' + row + '; col: ' + col ); return null; } } function read_float( input ) { // if ( ! input ) { throw new Error( 'Null input.' ); } return input ? parseFloat( input.replace( '$', '' ).replace( ',', '' ) ) : 0; }