MediaWiki:Common.js: Difference between revisions
From Future Of Mankind
Daniel Leech (talk | contribs) No edit summary |
Daniel Leech (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
/* | |||
== Collapsible columns custom code == | |||
<source lang="javascript"> | |||
*/ | |||
function collapseTable( tableIndex ) { | |||
var Button = document.getElementById( 'collapseButton' + tableIndex ); | |||
var Table = document.getElementById( 'collapsibleTable' + tableIndex ); | |||
if ( !Table || !Button ) { | |||
return false; | |||
} | |||
var collapseColsOptin = hasCollapsibleCol( tableIndex ); // new | |||
var collapseColsOptout = hasNoncollapsibleCol( tableIndex ); // new | |||
var Cols = Table.rows[0].cells; // new | |||
var CollapseCols = new Array(Cols.length); // new; has to be larger if there are colspans | |||
if ( collapseColsOptin || collapseColsOptout ) {// new | |||
// @colspan currently not handled | |||
// the following two if-for-if constructs could be combined | |||
if ( collapseColsOptin ) { | |||
for ( var i = 0; i < Cols.length; i++ ) { | |||
if ( CollapseCols[i] == null || !hasClass( Cols[i], 'collapsible' ) ) { | |||
CollapseCols[i] = !collapseColsOptin; | |||
} else { | |||
CollapseCols[i] = collapseColsOptin; | |||
} | |||
} | |||
} | |||
// 'nocollapse' takes precedence over 'collapsible', i.e. | |||
// default columns are not collapsible when both types exist | |||
if ( collapseColsOptout ) { | |||
for ( var i = 0; i < Cols.length; i++ ) { | |||
if ( CollapseCols[i] == null || !hasClass( Cols[i], 'nocollapse' ) ) { | |||
CollapseCols[i] = collapseColsOptout; | |||
} else { | |||
CollapseCols[i] = !collapseColsOptout; | |||
} | |||
} | |||
} | |||
// column with first |th| should be excluded, because it holds the show/hide button | |||
var Header = Table.rows[0].getElementsByTagName( 'th' )[0]; | |||
CollapseCols[Header.cellIndex] = false;// cellIndex doesn’t handle @colspan | |||
} | |||
var Rows = Table.rows; | |||
// insert check for @colspan here, change CollapseCols accordingly | |||
if ( Button.firstChild.data == collapseCaption ) {// hide | |||
if ( collapseColsOptin || collapseColsOptout ) {// new | |||
for ( var i = 0; i < Rows.length; i++ ) { | |||
var Cells = Rows[i].cells; | |||
for ( var j = 0; j < CollapseCols.length; j++) { | |||
// if we used Cells.length the handling of rows with empty cells at the end should improve | |||
// this would be a problem if the header row had empty cells at the end | |||
// we could also do CollapseCols.length-Cells.length times Rows[i].insertCell(-1) | |||
if ( CollapseCols[j] ) { | |||
Cells[j].style.display = 'none';// needs to take @colspan into account | |||
} | |||
} | |||
} | |||
} | |||
var collapseRowsOptin = hasCollapsibleRow( tableIndex );// new | |||
// @rowspan currently not handled | |||
for ( var i = 1; i < Rows.length; i++ ) { | |||
if ( collapseRowsOptin ) {// new | |||
if ( hasClass( Rows[i], 'collapsible' ) ) { | |||
Rows[i].style.display = 'none'; | |||
} | |||
} else if ( !collapseColsOptin && !collapseColsOptout ) { | |||
if ( !hasClass( Rows[i], 'nocollapse' ) && | |||
!( hasClass( Rows[i], 'sortbottom' ) && !hasClass( Rows[i], 'collapsible' ) ) | |||
) { // new condition to exclude certain rows from collapsing | |||
Rows[i].style.display = 'none'; | |||
} | |||
} | |||
} | |||
Button.firstChild.data = expandCaption; | |||
} else {// show | |||
for ( var i = 0; i < Rows.length; i++ ) { | |||
if ( collapseColsOptin || collapseColsOptout ) {// new | |||
var Cells = Rows[i].cells; | |||
for ( var j = 0; j < CollapseCols.length; j++) { | |||
if ( CollapseCols[j] ) { | |||
Cells[j].style.display = Rows[0].style.display; | |||
} | |||
} | |||
} | |||
Rows[i].style.display = Rows[0].style.display; | |||
} | |||
Button.firstChild.data = collapseCaption; | |||
} | |||
} | |||
/* new function to check whether the collapsible table has | |||
* any column with the class 'collapsible' | |||
*/ | |||
function hasCollapsibleCol( tableIndex ) { | |||
var Table = document.getElementById( 'collapsibleTable' + tableIndex ); | |||
if ( !Table ) { | |||
return false; | |||
} | |||
var Cols = Table.rows[0].cells; | |||
for ( var i = 0; i < Cols.length; i++ ) { | |||
if ( hasClass( Cols[i], 'collapsible' ) ) { | |||
return true; | |||
} | |||
} | |||
return false; | |||
} | |||
/* new function to check whether the collapsible table has | |||
* any column with the class 'nocollapse' | |||
*/ | |||
function hasNoncollapsibleCol( tableIndex ) { | |||
var Table = document.getElementById( 'collapsibleTable' + tableIndex ); | |||
if ( !Table ) { | |||
return false; | |||
} | |||
var Cols = Table.rows[0].cells; | |||
for ( var i = 0; i < Cols.length; i++ ) { | |||
if ( hasClass( Cols[i], 'nocollapse' ) ) { | |||
return true; | |||
} | |||
} | |||
return false; | |||
} | |||
/* new function to check whether the collapsible table has | |||
* any row (except the header) with the class 'collapsible' | |||
*/ | |||
function hasCollapsibleRow( tableIndex ) { | |||
var Table = document.getElementById( 'collapsibleTable' + tableIndex ); | |||
if ( !Table ) { | |||
return false; | |||
} | |||
var Rows = Table.rows; | |||
for ( var i = 1; i < Rows.length; i++ ) { | |||
if ( hasClass( Rows[i], 'collapsible' ) ) { | |||
return true; | |||
} | |||
} | |||
return false; | |||
} | |||
// </source> | |||
/* Below was a test to show news on certain days of the year. */ | |||
$( document ).ready(function() { | $( document ).ready(function() { | ||
Revision as of 08:47, 26 April 2019
/* Any JavaScript here will be loaded for all users on every page load. */
/*
== Collapsible columns custom code ==
<source lang="javascript">
*/
function collapseTable( tableIndex ) {
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table || !Button ) {
return false;
}
var collapseColsOptin = hasCollapsibleCol( tableIndex ); // new
var collapseColsOptout = hasNoncollapsibleCol( tableIndex ); // new
var Cols = Table.rows[0].cells; // new
var CollapseCols = new Array(Cols.length); // new; has to be larger if there are colspans
if ( collapseColsOptin || collapseColsOptout ) {// new
// @colspan currently not handled
// the following two if-for-if constructs could be combined
if ( collapseColsOptin ) {
for ( var i = 0; i < Cols.length; i++ ) {
if ( CollapseCols[i] == null || !hasClass( Cols[i], 'collapsible' ) ) {
CollapseCols[i] = !collapseColsOptin;
} else {
CollapseCols[i] = collapseColsOptin;
}
}
}
// 'nocollapse' takes precedence over 'collapsible', i.e.
// default columns are not collapsible when both types exist
if ( collapseColsOptout ) {
for ( var i = 0; i < Cols.length; i++ ) {
if ( CollapseCols[i] == null || !hasClass( Cols[i], 'nocollapse' ) ) {
CollapseCols[i] = collapseColsOptout;
} else {
CollapseCols[i] = !collapseColsOptout;
}
}
}
// column with first |th| should be excluded, because it holds the show/hide button
var Header = Table.rows[0].getElementsByTagName( 'th' )[0];
CollapseCols[Header.cellIndex] = false;// cellIndex doesn’t handle @colspan
}
var Rows = Table.rows;
// insert check for @colspan here, change CollapseCols accordingly
if ( Button.firstChild.data == collapseCaption ) {// hide
if ( collapseColsOptin || collapseColsOptout ) {// new
for ( var i = 0; i < Rows.length; i++ ) {
var Cells = Rows[i].cells;
for ( var j = 0; j < CollapseCols.length; j++) {
// if we used Cells.length the handling of rows with empty cells at the end should improve
// this would be a problem if the header row had empty cells at the end
// we could also do CollapseCols.length-Cells.length times Rows[i].insertCell(-1)
if ( CollapseCols[j] ) {
Cells[j].style.display = 'none';// needs to take @colspan into account
}
}
}
}
var collapseRowsOptin = hasCollapsibleRow( tableIndex );// new
// @rowspan currently not handled
for ( var i = 1; i < Rows.length; i++ ) {
if ( collapseRowsOptin ) {// new
if ( hasClass( Rows[i], 'collapsible' ) ) {
Rows[i].style.display = 'none';
}
} else if ( !collapseColsOptin && !collapseColsOptout ) {
if ( !hasClass( Rows[i], 'nocollapse' ) &&
!( hasClass( Rows[i], 'sortbottom' ) && !hasClass( Rows[i], 'collapsible' ) )
) { // new condition to exclude certain rows from collapsing
Rows[i].style.display = 'none';
}
}
}
Button.firstChild.data = expandCaption;
} else {// show
for ( var i = 0; i < Rows.length; i++ ) {
if ( collapseColsOptin || collapseColsOptout ) {// new
var Cells = Rows[i].cells;
for ( var j = 0; j < CollapseCols.length; j++) {
if ( CollapseCols[j] ) {
Cells[j].style.display = Rows[0].style.display;
}
}
}
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
/* new function to check whether the collapsible table has
* any column with the class 'collapsible'
*/
function hasCollapsibleCol( tableIndex ) {
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table ) {
return false;
}
var Cols = Table.rows[0].cells;
for ( var i = 0; i < Cols.length; i++ ) {
if ( hasClass( Cols[i], 'collapsible' ) ) {
return true;
}
}
return false;
}
/* new function to check whether the collapsible table has
* any column with the class 'nocollapse'
*/
function hasNoncollapsibleCol( tableIndex ) {
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table ) {
return false;
}
var Cols = Table.rows[0].cells;
for ( var i = 0; i < Cols.length; i++ ) {
if ( hasClass( Cols[i], 'nocollapse' ) ) {
return true;
}
}
return false;
}
/* new function to check whether the collapsible table has
* any row (except the header) with the class 'collapsible'
*/
function hasCollapsibleRow( tableIndex ) {
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table ) {
return false;
}
var Rows = Table.rows;
for ( var i = 1; i < Rows.length; i++ ) {
if ( hasClass( Rows[i], 'collapsible' ) ) {
return true;
}
}
return false;
}
// </source>
/* Below was a test to show news on certain days of the year. */
$( document ).ready(function() {
console.log( "document loaded" );
var monthNames = [ "January (Januar)", "February (Februar)", "March (März)", "April", "May (Mai)", "June (Juni)", "July (Juli)", "August", "September", "October (Oktober)", "November", "December (Dezember)" ];
var dayNames= ["Sunday (Sonntag)","Monday (Montag)","Tuesday (Dienstag)","Wednesday (Mittwoch)","Thursday (Donnerstag)","Friday (Freitag)","Saturday (Samstag)"]
function nth(n){return["st","nd","rd"][((n+90)%100-10)%10-1]||"th"}
var newDate = new Date();
newDate.setDate(newDate.getDate());
$('#FOMdate').html(dayNames[newDate.getDay()] + " the " + newDate.getUTCDate()+nth() + " of " + monthNames[newDate.getUTCMonth()] + ' ' + newDate.getUTCFullYear());
setInterval( function() {
var seconds = new Date().getSeconds();
$("#sec").html(( seconds < 10 ? "0" : "" ) + seconds);
},1000);
setInterval( function() {
var minutes = new Date().getMinutes();
$("#min").html(( minutes < 10 ? "0" : "" ) + minutes);
},1000);
setInterval( function() {
var hours = new Date().getHours();
$("#hours").html(( hours < 10 ? "0" : "" ) + hours);
}, 1000)
});
$(function() {
$(".DateDiv").each(function(index) {
var sRange = $(this).find(".DateRange").html();
var arrTemp = sRange.split(" to ");
var dtFrom = new Date(arrTemp[0]);
var dtTo = new Date(arrTemp[1]);
var dtNow = new Date();
if (dtNow >= dtFrom && dtNow <= dtTo)
$(this).show();
});
var dob = $('#agedate').val();
if(dob != ''){
var str=dob.split('-');
var firstdate=new Date(str[0],str[1],str[2]);
var today = new Date();
var dayDiff = Math.ceil(today.getTime() - firstdate.getTime()) / (1000 * 60 * 60 * 24 * 365);
var age = parseInt(dayDiff);
$('#age').html(age+' ');
}
});