|
|
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. */ |
|
| |
| /*
| |
| == Actual 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+' ');
| |
| }
| |
| });
| |
|
| |
|
| //collapsible table column test, based on: https://codepen.io/feger/pen/eDybC | | //collapsible table column test, based on: https://codepen.io/feger/pen/eDybC |